@quidgest/ui 0.6.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +877 -155
- package/dist/ui.css +89 -28
- package/dist/ui.esm.js +1143 -781
- package/dist/ui.esm.js.map +1 -1
- package/dist/ui.js +4 -4
- package/dist/ui.js.map +1 -1
- package/dist/ui.min.css +1 -1
- package/dist/ui.min.js +180 -144
- package/dist/ui.min.js.map +1 -1
- package/dist/ui.scss +122 -40
- package/package.json +2 -2
package/dist/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sources":["../src/utils/isEmpty.ts","../src/utils/isObject.ts","../src/utils/merge.ts","../src/composables/defaults.ts","../src/templates/theme.ts","../src/utils/color.ts","../src/composables/theme.ts","../src/framework.ts","../src/components/QSpinnerLoader/QSpinnerLoader.vue?vue&type=script&setup=true&lang.ts","../src/utils/setupPropsProxy.ts","../src/components/QSpinnerLoader/index.ts","../src/components/QButton/QButton.vue?vue&type=script&setup=true&lang.ts","../src/components/QButton/index.ts","../src/components/QButtonGroup/index.ts","../src/components/QButtonGroup/QButtonGroup.vue?vue&type=script&setup=true&lang.ts","../src/components/QButtonToggle/index.ts","../src/components/QButtonToggle/QButtonToggle.vue?vue&type=script&setup=true&lang.ts","../src/composables/uid.ts","../src/components/QField/QField.vue?vue&type=script&setup=true&lang.ts","../src/components/QField/index.ts","../src/components/QIcon/QIcon.vue?vue&type=script&setup=true&lang.ts","../src/components/QIcon/QIconFont.vue?vue&type=script&setup=true&lang.ts","../src/components/QIcon/QIconImg.vue?vue&type=script&setup=true&lang.ts","../src/components/QIcon/InlineSvg.js","../src/components/QIcon/QIconSvg.vue?vue&type=script&setup=true&lang.ts","../src/components/QIcon/index.ts","../src/components/QLineLoader/index.ts","../src/components/QList/QList.vue?vue&type=script&setup=true&lang.ts","../src/components/QList/QListItem.vue?vue&type=script&setup=true&lang.ts","../src/components/QList/QListItemGroup.vue?vue&type=script&setup=true&lang.ts","../src/components/QList/index.ts","../src/composables/overlay.ts","../src/utils/getElement.ts","../src/components/QOverlay/QOverlay.vue?vue&type=script&setup=true&lang.ts","../src/components/QOverlay/index.ts","../src/components/QPopover/QPopover.vue?vue&type=script&setup=true&lang.ts","../src/components/QPopover/index.ts","../src/composables/attrs.ts","../src/components/QSelect/QSelect.vue?vue&type=script&setup=true&lang.ts","../src/components/QSelect/index.ts","../src/components/QTextField/QTextField.vue?vue&type=script&setup=true&lang.ts","../src/components/QTextField/index.ts","../src/components/QTooltip/QTooltip.vue?vue&type=script&setup=true&lang.ts","../src/components/QTooltip/index.ts","../src/directives/click-outside/index.ts"],"sourcesContent":["export function isEmpty(object: unknown): boolean {\n\t// Check if the object is null or undefined\n\tif (object === null || object === undefined) {\n\t\treturn true\n\t}\n\n\t// Check if the object is a string or an array and if it is empty\n\tif (typeof object === 'string' || Array.isArray(object)) {\n\t\treturn object.length === 0\n\t}\n\n\t// Check if the object is an object and if it has no own properties\n\tif (typeof object === 'object') {\n\t\treturn Object.keys(object as Record<string, unknown>).length === 0\n\t}\n\n\t// If the object is not null, a string, an array, or an object, it's not empty\n\treturn false\n}\n","export function isObject(obj: unknown): obj is object {\n\treturn obj !== null && typeof obj === 'object' && !Array.isArray(obj)\n}\n","import { isObject } from './isObject'\n\nexport function merge(source: Record<string, unknown> = {}, target: Record<string, unknown> = {}) {\n\tconst out: Record<string, unknown> = {}\n\n\tfor (const key in source) {\n\t\tout[key] = source[key]\n\t}\n\n\tfor (const key in target) {\n\t\tconst sourceProperty = source[key]\n\t\tconst targetProperty = target[key]\n\n\t\t// Only continue deep merging if\n\t\t// both properties are objects\n\t\tif (isObject(sourceProperty) && isObject(targetProperty)) {\n\t\t\tout[key] = merge(\n\t\t\t\tsourceProperty as Record<string, unknown>,\n\t\t\t\ttargetProperty as Record<string, unknown>\n\t\t\t)\n\n\t\t\tcontinue\n\t\t}\n\n\t\tout[key] = targetProperty\n\t}\n\n\treturn out\n}\n","// Utils\nimport { isEmpty } from '@/utils/isEmpty'\nimport { merge } from '@/utils/merge'\nimport { ComputedRef, computed, getCurrentInstance, inject, provide, ref } from 'vue'\n\nexport const DEFAULTS_SYMBOL = 'q-defaults'\n\nexport type Defaults = Record<string | symbol, ComponentDefaults>\n\nexport type ComponentDefaults = Record<string | symbol, unknown>\n\nexport function useDefaults(): ComputedRef<ComponentDefaults | undefined> {\n\tconst vm = getCurrentInstance()\n\n\tif (!vm)\n\t\tthrow new Error('[Quidgest UI] useDefaults must be called from inside a setup function')\n\n\tconst component = vm.type.name ?? vm.type.__name\n\n\tif (!component) throw new Error('[Quidgest UI] Could not determine component name')\n\n\tconst defaults = injectDefaults()\n\treturn computed(() => defaults.value?.[component])\n}\n\n/**\n * Function to provide or update default values using the Vue.js `provide` function.\n * It takes a set of default values, merges them with the existing defaults (if any),\n * and then provides the merged defaults using the specified symbol.\n *\n * @param {Defaults} defaults - The default values to be provided or updated.\n */\nexport function provideDefaults(defaults: Defaults): void {\n\tif (isEmpty(defaults)) return\n\n\tconst currentDefaults = injectDefaults()\n\tconst providedDefaults = ref(defaults)\n\n\tconst newDefaults = computed(() => {\n\t\tif (isEmpty(providedDefaults.value)) return currentDefaults.value\n\t\treturn merge(currentDefaults.value, providedDefaults.value)\n\t})\n\n\tprovide(DEFAULTS_SYMBOL, newDefaults)\n}\n\n/**\n * Function to inject default values using the Vue.js `inject` function.\n * It retrieves the default values from the specified symbol and ensures\n * that the returned value is of type `ComputedRef<Defaults>`.\n *\n * @throws {Error} Throws an error if the defaults instance is not found.\n *\n * @returns {ComputedRef<Defaults>} A computed reference to the default values.\n */\nexport function injectDefaults(): ComputedRef<Defaults> {\n\tconst defaults = inject(DEFAULTS_SYMBOL, undefined) as ComputedRef<Defaults> | undefined\n\n\tif (!defaults) throw new Error('[Quidgest UI] Could not find defaults instance')\n\n\treturn defaults\n}\n","import { ColorScheme } from '@/utils/color'\n\nexport const defaultLightColorScheme: ColorScheme = {\n\tprimary: '#00a1f8',\n\tprimaryLight: '#e5f6ff',\n\tprimaryDark: '#0079ba',\n\tsecondary: '#11294d',\n\tsecondaryLight: '#707f94',\n\tsecondaryDark: '#040a13',\n\thighlight: '#DF640A',\n\tbackground: '#fff',\n\tcontainer: '#fff',\n\tinfo: '#17a2b8',\n\tinfoLight: '#bceff7',\n\tinfoDark: '#11798a',\n\tsuccess: '#28a745',\n\tsuccessLight: '#c2f0cd',\n\tsuccessDark: '#1e7d34',\n\twarning: '#ffa900',\n\twarningLight: '#ffeabf',\n\twarningDark: '#bf7f00',\n\tdanger: '#b71c1c',\n\tdangerLight: '#f5bebe',\n\tdangerDark: '#891515',\n\tonBackground: '#1e2436',\n\tonPrimary: '#fff',\n\tonSecondary: '#fff',\n\tonHighlight: '#fff',\n\tonSuccess: '#fff',\n\tonWarning: '#fff',\n\tonDanger: '#fff',\n\tonInfo: '#fff'\n}\n\nexport const defaultDarkColorScheme: ColorScheme = {\n\tprimary: '#018BD2',\n\tprimaryLight: '#cce7f6',\n\tprimaryDark: '#006fac',\n\tsecondary: '#11294d',\n\tsecondaryLight: '#707f94',\n\tsecondaryDark: '#040a13',\n\thighlight: '#FFAD54',\n\tbackground: '#1e2436',\n\tcontainer: '#21323d',\n\tinfo: '#3DB6D1',\n\tinfoLight: '#5aa2bc',\n\tinfoDark: '#0c616a',\n\tsuccess: '#00C781',\n\tsuccessLight: '#6bae78',\n\tsuccessDark: '#0f3b16',\n\twarning: '#FFD860',\n\twarningLight: '#ffd07a',\n\twarningDark: '#cc8000',\n\tdanger: '#FC4B6C',\n\tdangerLight: '#FF7A88',\n\tdangerDark: '#B21929',\n\tonBackground: '#fff',\n\tonPrimary: '#fff',\n\tonSecondary: '#fff',\n\tonHighlight: '#fff',\n\tonSuccess: '#fff',\n\tonWarning: '#fff',\n\tonDanger: '#fff',\n\tonInfo: '#fff'\n}\n","export type ColorScheme = {\n\t// Brand\n\tprimary: string\n\tprimaryLight: string\n\tprimaryDark: string\n\tonPrimary: string\n\n\tsecondary: string\n\tsecondaryLight: string\n\tsecondaryDark: string\n\tonSecondary: string\n\n\thighlight: string\n\tonHighlight: string\n\n\t// Surface\n\tbackground: string\n\tonBackground: string\n\n\tcontainer: string\n\n\t// Semantic\n\tinfo: string\n\tinfoLight: string\n\tinfoDark: string\n\tonInfo: string\n\n\tsuccess: string\n\tsuccessLight: string\n\tsuccessDark: string\n\tonSuccess: string\n\n\twarning: string\n\twarningLight: string\n\twarningDark: string\n\tonWarning: string\n\n\tdanger: string\n\tdangerLight: string\n\tdangerDark: string\n\tonDanger: string\n}\n\n/**\n * Represents a color in RGB space.\n */\nexport type RGB = {\n\tr: number\n\tg: number\n\tb: number\n}\n\n/**\n * Represents a color in HSL space.\n */\nexport type HSL = {\n\th: number\n\ts: number\n\tl: number\n}\n\n/**\n * Parses a color from a hex string.\n * @param color A hex string representing the color, e.g., \"#aabbcc\".\n * @returns A `RGB` object representing the parsed color.\n */\nexport function parseColor(color: string): RGB {\n\tif (!/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/.test(color)) {\n\t\tthrow new Error('Invalid color format')\n\t}\n\n\t// Support short format (e.g., #abc)\n\tif (color.length === 4) {\n\t\tcolor = '#' + color[1] + color[1] + color[2] + color[2] + color[3] + color[3]\n\t}\n\n\tconst r = parseInt(color.slice(1, 3), 16)\n\tconst g = parseInt(color.slice(3, 5), 16)\n\tconst b = parseInt(color.slice(5, 7), 16)\n\n\treturn { r, g, b }\n}\n\n/**\n * Lightens a color by a specified amount.\n * @param rgb The color to lighten.\n * @param amount The amount to lighten the color by, in the range [0, 100].\n * @returns The lightened color.\n */\nexport function lighten(rgb: RGB, amount: number): RGB {\n\t// Check if the amount is within the required range\n\tif (amount < 0 || amount > 100) {\n\t\tthrow new Error('Amount must be in the range [0, 100]')\n\t} else if (amount === 0) {\n\t\treturn rgb\n\t}\n\n\tconst hsl = rgbToHsl(rgb)\n\tconst factor = amount / 100\n\thsl.l = hsl.l + factor * (100 - hsl.l)\n\treturn hslToRgb(hsl)\n}\n\n/**\n * Darkens a color by a specified amount.\n * @param rgb The color to darken.\n * @param amount The amount to darken the color by, in the range [0, 100].\n * @returns The darkened color.\n */\nexport function darken(rgb: RGB, amount: number): RGB {\n\t// Check if the amount is within the required range\n\tif (amount < 0 || amount > 100) {\n\t\tthrow new Error('Amount must be in the range [0, 100]')\n\t} else if (amount === 0) {\n\t\treturn rgb\n\t}\n\n\tconst hsl = rgbToHsl(rgb)\n\tconst factor = amount / 100\n\thsl.l = hsl.l - factor * hsl.l\n\treturn hslToRgb(hsl)\n}\n\n/**\n * Converts a `Color` object to a hex string.\n * @param rgb The color to convert.\n * @returns A hex string representing the color.\n */\nexport function colorToHex(rgb: RGB): string {\n\tconst r = rgb.r.toString(16).padStart(2, '0')\n\tconst g = rgb.g.toString(16).padStart(2, '0')\n\tconst b = rgb.b.toString(16).padStart(2, '0')\n\n\treturn `#${r}${g}${b}`\n}\n\n/**\n * Converts a color from RGB to HSL space.\n * @param color The color to convert.\n * @returns An object representing the color in HSL space.\n */\nfunction rgbToHsl(rgb: RGB): HSL {\n\tconst r = rgb.r / 255\n\tconst g = rgb.g / 255\n\tconst b = rgb.b / 255\n\n\tconst max = Math.max(r, g, b)\n\tconst min = Math.min(r, g, b)\n\tlet h = 0,\n\t\ts\n\tconst l = (max + min) / 2\n\n\tif (max === min) {\n\t\th = s = 0 // achromatic\n\t} else {\n\t\tconst d = max - min\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n\n\t\tswitch (max) {\n\t\t\tcase r:\n\t\t\t\th = (g - b) / d + (g < b ? 6 : 0)\n\t\t\t\tbreak\n\t\t\tcase g:\n\t\t\t\th = (b - r) / d + 2\n\t\t\t\tbreak\n\t\t\tcase b:\n\t\t\t\th = (r - g) / d + 4\n\t\t\t\tbreak\n\t\t}\n\n\t\th /= 6\n\t}\n\n\treturn {\n\t\th: Math.round(h * 360),\n\t\ts: Math.round(s * 100),\n\t\tl: Math.round(l * 100)\n\t}\n}\n\n/**\n * Converts a color from HSL to RGB space.\n * @param h The hue component of the color, in the range [0, 1].\n * @param s The saturation component of the color, in the range [0, 1].\n * @param l The lightness component of the color, in the range [0, 1].\n * @returns A `RGB` object representing the color in RGB space.\n */\nfunction hslToRgb(hsl: HSL): RGB {\n\tconst h = hsl.h / 360\n\tconst s = hsl.s / 100\n\tconst l = hsl.l / 100\n\n\tlet r, g, b\n\n\tif (s === 0) {\n\t\tr = g = b = l // achromatic\n\t} else {\n\t\tconst q = l < 0.5 ? l * (1 + s) : l + s - l * s\n\t\tconst p = 2 * l - q\n\n\t\tr = hueToRgb(p, q, h + 1 / 3)\n\t\tg = hueToRgb(p, q, h)\n\t\tb = hueToRgb(p, q, h - 1 / 3)\n\t}\n\n\treturn {\n\t\tr: Math.round(r * 255),\n\t\tg: Math.round(g * 255),\n\t\tb: Math.round(b * 255)\n\t}\n}\n\n/**\n * Helper function to convert a hue value to a corresponding RGB value.\n * @param p The first RGB component.\n * @param q The second RGB component.\n * @param t The hue value.\n * @returns The corresponding RGB value.\n */\nfunction hueToRgb(p: number, q: number, t: number): number {\n\tif (t < 0) t += 1\n\tif (t > 1) t -= 1\n\tif (t < 1 / 6) return p + (q - p) * 6 * t\n\tif (t < 1 / 2) return q\n\tif (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\n\treturn p\n}\n","// Templates\nimport { defaultDarkColorScheme, defaultLightColorScheme } from '@/templates/theme'\n\n// Types\nimport type { ColorScheme, RGB } from '@/utils/color'\nimport type { App, Ref } from 'vue'\n\n// Utils\nimport { colorToHex, darken, lighten, parseColor } from '@/utils/color'\nimport { inject, ref, watch } from 'vue'\n\nexport const THEME_SYMBOL = 'q-theme'\n\nexport type ThemeMode = 'light' | 'dark'\n\nexport type AppThemes = {\n\tdefaultTheme: string\n\tthemes: Array<{\n\t\tname: string\n\t\tmode: ThemeMode\n\t\tcolors?: Partial<ColorScheme>\n\t}>\n}\n\nexport type ThemeDefinition = {\n\tname: string\n\tmode: ThemeMode\n\tcolors: ColorScheme\n}\n\nexport type ThemeConfiguration = {\n\tactiveTheme: string\n\tthemes: ThemeDefinition[]\n}\n\nexport function useTheme(): Ref<ThemeConfiguration> {\n\tconst theme: Ref<ThemeConfiguration> | undefined = inject(THEME_SYMBOL)\n\n\tif (!theme) throw new Error('[Quidgest UI] Could not find theme instance')\n\n\treturn theme\n}\n\nexport function installThemes(app: App, config?: AppThemes) {\n\tlet defaultTheme: ThemeDefinition | null = null\n\n\tif (!config) {\n\t\t// No theme definition was provided\n\t\t// Configure default light theme\n\t\tconst defaultThemeName = 'default'\n\n\t\tdefaultTheme = {\n\t\t\tname: defaultThemeName,\n\t\t\tmode: 'light',\n\t\t\tcolors: defaultLightColorScheme\n\t\t}\n\n\t\tconfig = {\n\t\t\tdefaultTheme: defaultThemeName,\n\t\t\tthemes: [defaultTheme]\n\t\t}\n\t} else {\n\t\tfor (const theme of config.themes) {\n\t\t\t// Pick the corresponding default color scheme\n\t\t\tconst defaultColorScheme =\n\t\t\t\ttheme.mode === 'light' ? defaultLightColorScheme : defaultDarkColorScheme\n\n\t\t\tif (theme.colors) {\n\t\t\t\tlet variable: keyof ColorScheme\n\n\t\t\t\tfor (variable in theme.colors) {\n\t\t\t\t\tconst hex = theme.colors[variable]\n\n\t\t\t\t\tif (\n\t\t\t\t\t\thex &&\n\t\t\t\t\t\t!variable.startsWith('on') &&\n\t\t\t\t\t\t!variable.endsWith('Light') &&\n\t\t\t\t\t\t!variable.endsWith('Dark')\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst color: RGB = parseColor(hex)\n\t\t\t\t\t\tconst lightVariant = `${variable}Light` as keyof ColorScheme\n\t\t\t\t\t\tconst darkVariant = `${variable}Dark` as keyof ColorScheme\n\t\t\t\t\t\t// TODO: compute contrast color\n\n\t\t\t\t\t\tif (!(lightVariant in theme.colors))\n\t\t\t\t\t\t\ttheme.colors[lightVariant] = colorToHex(lighten(color, 85))\n\n\t\t\t\t\t\tif (!(darkVariant in theme.colors))\n\t\t\t\t\t\t\ttheme.colors[darkVariant] = colorToHex(darken(color, 25))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Theme color scheme is potentially partial\n\t\t\t// Merge with default appropriate color scheme\n\t\t\ttheme.colors = mergeColorSchemes(defaultColorScheme, theme.colors)\n\n\t\t\tif (theme.name === config.defaultTheme) defaultTheme = theme as ThemeDefinition\n\t\t}\n\t}\n\n\t// At this point, if the default theme is null,\n\t// there's got to be an issue with the config that was provided\n\tif (defaultTheme) {\n\t\tconst state: Ref<ThemeConfiguration> = ref({\n\t\t\tactiveTheme: defaultTheme.name,\n\t\t\tthemes: config.themes as ThemeDefinition[]\n\t\t})\n\n\t\t// Automatically regenerate root style\n\t\t// on active theme change\n\t\twatch(\n\t\t\t() => state.value.activeTheme,\n\t\t\t(name) => {\n\t\t\t\tconst activeTheme = state.value.themes.find((theme) => theme.name === name)\n\t\t\t\tif (activeTheme) generateRootStyle(activeTheme.colors)\n\t\t\t},\n\t\t\t{ immediate: true }\n\t\t)\n\n\t\t// Provide theme configuration\n\t\tapp.provide(THEME_SYMBOL, state)\n\t}\n}\n\nexport function mergeColorSchemes(\n\tdefaultColorScheme: ColorScheme,\n\tuserColorScheme: Partial<ColorScheme> = {}\n) {\n\treturn { ...defaultColorScheme, ...userColorScheme }\n}\n\nexport function generateRootStyle(colors: Partial<ColorScheme>) {\n\tlet themeNode: HTMLStyleElement | null = document.getElementById(\n\t\tTHEME_SYMBOL\n\t) as HTMLStyleElement\n\n\tif (!themeNode) {\n\t\tthemeNode = document.createElement('style')\n\t\tthemeNode.type = 'text/css'\n\t\tthemeNode.id = THEME_SYMBOL\n\t\tdocument.head.appendChild(themeNode)\n\t}\n\n\t// Generate theme dynamic CSS\n\tlet cssText = ':root {\\n'\n\tlet color: keyof ColorScheme\n\tfor (color in colors) {\n\t\tconst value = colors[color]\n\n\t\tif (value) {\n\t\t\t// Generate HEX\n\t\t\tcssText += ` ${toProperty(color)}: ${value};\\n`\n\n\t\t\t// Generate RGB, useful to combine with alpha channel\n\t\t\tconst rgb = parseColor(value)\n\t\t\tcssText += ` ${toProperty(color)}-rgb: ${rgb.r} ${rgb.g} ${rgb.b};\\n`\n\t\t}\n\t}\n\tcssText += '}'\n\n\t// Set the CSS content for the style element\n\tthemeNode.textContent = cssText\n}\n\nexport function toProperty(color: string) {\n\tif (!color) return ''\n\n\treturn `--q-theme-${color\n\t\t.replace(/([A-Z])/g, '-$1')\n\t\t.replace(/^-/, '')\n\t\t.toLowerCase()}`\n}\n","// Composables\nimport { DEFAULTS_SYMBOL, Defaults } from '@/composables/defaults'\nimport { AppThemes, installThemes } from '@/composables/theme'\n\n// Types\nimport type { App, Component, Directive, Plugin } from 'vue'\n\n// Utils\nimport { ref } from 'vue'\n\nexport type FrameworkConfig = {\n\tcomponents?: Record<string, Component>\n\tdirectives?: Record<string, Directive>\n\tthemes?: AppThemes\n\tdefaults?: Defaults\n}\n\nexport function createFramework(config: FrameworkConfig = {}): Plugin {\n\tconst install = (app: App) => {\n\t\t// Install components\n\t\tconst components = config.components || {}\n\t\tfor (const name in components) {\n\t\t\tapp.component(name, components[name])\n\t\t}\n\n\t\t// Install directives\n\t\tconst directives = config.directives || {}\n\t\tfor (const name in directives) {\n\t\t\tapp.directive(name, directives[name])\n\t\t}\n\n\t\t// Setup global defaults\n\t\tconst globalDefaults = config.defaults || {}\n\t\tapp.provide(DEFAULTS_SYMBOL, ref(globalDefaults))\n\n\t\t// Install themes\n\t\tinstallThemes(app, config.themes)\n\t}\n\n\treturn { install }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"svg\", { viewBox: \"25 25 50 50\" }, [\n /*#__PURE__*/_createElementVNode(\"circle\", {\n class: \"path\",\n cx: \"50\",\n cy: \"50\",\n r: \"20\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"5\",\n \"stroke-miterlimit\": \"10\"\n })\n], -1)\nconst _hoisted_2 = [\n _hoisted_1\n]\n\nimport { computed } from 'vue'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QSpinnerLoader',\n props: {\n size: { default: 48 }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Utils\n\t\n\n\tconst loaderStyle = computed(() => {\n\t\treturn {\n\t\t\t'font-size': props.size !== 48 ? `${props.size}px` : undefined\n\t\t}\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"q-spinner-loader\",\n style: _normalizeStyle(loaderStyle.value)\n }, _hoisted_2, 4))\n}\n}\n\n})","// Composables\nimport { useDefaults } from '@/composables/defaults'\n\n// Types\nimport type { SetupContext, VNode } from 'vue'\n\n// Utils\nimport { getCurrentInstance } from 'vue'\nimport { isEmpty } from './isEmpty'\n\nexport function propIsDefined(vnode: VNode, prop: string) {\n\treturn typeof vnode.props?.[prop] !== 'undefined'\n}\n\ntype LooseRequired<T> = {\n\t[P in keyof (T & Required<T>)]: T[P]\n}\n\ntype Component<Props> = {\n\tsetup?: (\n\t\tthis: void,\n\t\tprops: LooseRequired<Readonly<Props>>,\n\t\tctx: SetupContext<unknown>\n\t) => unknown\n}\n\nexport function setupPropsProxy<Props>(component: Component<Props>): Component<Props> {\n\tconst setup = component.setup\n\n\tif (!setup) return component\n\n\tcomponent.setup = (props, ctx) => {\n\t\tconst componentDefaults = useDefaults()\n\n\t\tif (isEmpty(componentDefaults.value)) return setup(props, ctx)\n\n\t\tconst vm = getCurrentInstance()\n\n\t\tif (vm === null) return setup(props, ctx)\n\n\t\tconst _props = new Proxy(props, {\n\t\t\tget(target, prop) {\n\t\t\t\tconst propValue = Reflect.get(target, prop)\n\t\t\t\tconst defaultValue = componentDefaults.value?.[prop]\n\n\t\t\t\tif (typeof prop === 'string' && !propIsDefined(vm.vnode, prop))\n\t\t\t\t\treturn defaultValue ?? propValue\n\t\t\t\treturn propValue\n\t\t\t}\n\t\t})\n\n\t\treturn setup(_props, ctx)\n\t}\n\n\treturn component\n}\n","// Components\nimport _QSpinnerLoader from './QSpinnerLoader.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QSpinnerLoader = setupPropsProxy(_QSpinnerLoader) as typeof _QSpinnerLoader\n\n// Export components\nexport { QSpinnerLoader }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, Fragment as _Fragment, renderSlot as _renderSlot, createElementVNode as _createElementVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = [\"disabled\", \"onClick\"]\nconst _hoisted_2 = {\n key: 0,\n class: \"q-btn__spinner\"\n}\nconst _hoisted_3 = { class: \"q-btn__content\" }\n\nimport { QSpinnerLoader } from '@/components/QSpinnerLoader'\n\n\t// Utils\n\timport { computed } from 'vue'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QButton',\n props: {\n active: { type: Boolean },\n bStyle: { default: 'secondary' },\n label: { default: '' },\n disabled: { type: Boolean },\n iconOnRight: { type: Boolean },\n borderless: { type: Boolean },\n elevated: { type: Boolean },\n block: { type: Boolean },\n loading: { type: Boolean },\n size: { default: 'regular' }\n },\n emits: [\"click\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\tconst isDisabled = computed(() => props.disabled || props.loading)\n\n\tfunction onClick(event: Event) {\n\t\tif (!isDisabled.value) emit('click', event)\n\t}\n\n\tconst classes = computed(() => {\n\t\tconst variant = computed(() => (props.bStyle ? `q-btn--${props.bStyle}` : undefined))\n\t\tconst size = computed(() => (props.size !== 'regular' ? `q-btn--${props.size}` : undefined))\n\n\t\treturn [\n\t\t\t'q-btn',\n\t\t\tvariant.value,\n\t\t\tsize.value,\n\t\t\t{\n\t\t\t\t'q-btn--active': props.active,\n\t\t\t\t'q-btn--borderless': props.borderless,\n\t\t\t\t'q-btn--elevated': props.elevated,\n\t\t\t\t'q-btn--block': props.block,\n\t\t\t\t'q-btn--loading': props.loading\n\t\t\t}\n\t\t]\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n type: \"button\",\n class: _normalizeClass(classes.value),\n disabled: isDisabled.value,\n onClick: _withModifiers(onClick, [\"stop\",\"prevent\"])\n }, [\n (_ctx.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_unref(QSpinnerLoader), { size: 23 })\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", _hoisted_3, [\n (_ctx.iconOnRight)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createTextVNode(_toDisplayString(props.label), 1)\n ], 64))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\"),\n (!_ctx.iconOnRight)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(props.label), 1)\n ], 64))\n : _createCommentVNode(\"\", true)\n ])\n ], 10, _hoisted_1))\n}\n}\n\n})","// Components\nimport _QButton from './QButton.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QButton = setupPropsProxy(_QButton) as typeof _QButton\n\n// Export components\nexport { QButton }\n","// Components\nimport _QButtonGroup from './QButtonGroup.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QButtonGroup = setupPropsProxy(_QButtonGroup) as typeof _QButtonGroup\n\n// Export components\nexport { QButtonGroup }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, toRef } from 'vue'\n\timport { provideDefaults } from '@/composables/defaults'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QButtonGroup',\n props: {\n bStyle: {},\n disabled: { type: Boolean },\n borderless: { type: Boolean },\n elevated: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Utils\n\t\n\n\tprovideDefaults({\n\t\tQButton: {\n\t\t\tbStyle: toRef(props, 'bStyle'),\n\t\t\tdisabled: toRef(props, 'disabled'),\n\t\t\tborderless: toRef(props, 'borderless'),\n\t\t\televated: false\n\t\t}\n\t})\n\n\tconst classes = computed(() => {\n\t\treturn [\n\t\t\t'q-btn-group',\n\t\t\t{\n\t\t\t\t'q-btn-group--elevated': props.elevated\n\t\t\t}\n\t\t]\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(classes.value)\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 2))\n}\n}\n\n})","// Components\nimport _QButtonToggle from './QButtonToggle.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QButtonToggle = setupPropsProxy(_QButtonToggle) as typeof _QButtonToggle\n\n// Export components\nexport { QButtonToggle }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, unref as _unref, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nimport { QButton } from '@/components/QButton'\n\timport { QButtonGroup } from '@/components/QButtonGroup'\n\n\t// Utils\n\timport { Ref, WritableComputedRef, computed, ref, watch } from 'vue'\n\n\texport type QButtonToggleOption = {\n\t\tkey: string\n\t\ttitle?: string\n\t\tlabel?: string\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QButtonToggle',\n props: {\n modelValue: {},\n options: {},\n disabled: { type: Boolean },\n borderless: { type: Boolean },\n elevated: { type: Boolean },\n mandatory: { type: Boolean }\n },\n emits: [\"update:modelValue\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\t// Keep a local value for active to make prop \"modelValue\" optional\n\tconst _active: Ref<string | undefined> = ref(props.modelValue)\n\twatch(\n\t\t() => props.modelValue,\n\t\t(newVal) => (_active.value = newVal)\n\t)\n\n\tconst active: WritableComputedRef<string | undefined> = computed({\n\t\tget() {\n\t\t\treturn _active.value\n\t\t},\n\t\tset(newVal) {\n\t\t\t_active.value = newVal\n\t\t\temit('update:modelValue', newVal)\n\t\t}\n\t})\n\n\tfunction toggle(option: QButtonToggleOption) {\n\t\tif (active.value === option.key && !props.mandatory) active.value = undefined\n\t\telse active.value = option.key\n\t}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(QButtonGroup), {\n \"b-style\": \"secondary\",\n disabled: props.disabled,\n borderless: props.borderless,\n elevated: props.elevated\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(props.options, (option) => {\n return (_openBlock(), _createBlock(_unref(QButton), {\n key: option.key,\n title: option.title,\n label: option.label,\n active: active.value === option.key,\n onClick: ($event: any) => (toggle(option))\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, option.key)\n ]),\n _: 2\n }, 1032, [\"title\", \"label\", \"active\", \"onClick\"]))\n }), 128))\n ]),\n _: 3\n }, 8, [\"disabled\", \"borderless\", \"elevated\"]))\n}\n}\n\n})","// Counter to keep track of the number of generated IDs\nlet counter = 0\n\n// Custom hook to generate unique IDs\nexport function useUid() {\n\treturn `uid-${++counter}`\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, mergeProps as _mergeProps, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = [\"for\", \"data-val-required\"]\nconst _hoisted_2 = [\"id\"]\nconst _hoisted_3 = { class: \"q-field__control\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"q-field__prepend\"\n}\nconst _hoisted_5 = {\n key: 1,\n class: \"q-field__append\"\n}\nconst _hoisted_6 = {\n key: 0,\n class: \"q-field__extras\"\n}\n\nimport { useUid } from '@/composables/uid'\n\n\t// Utils\n\timport { computed, ref } from 'vue'\n\n\texport type QFieldSize =\n\t\t| 'mini'\n\t\t| 'small'\n\t\t| 'medium'\n\t\t| 'large'\n\t\t| 'x-large'\n\t\t| 'xx-large'\n\t\t| 'block'\n\n\texport type QFieldProps = {\n\t\t/**\n\t\t * The field unique identifier.\n\t\t */\n\t\tid?: string\n\n\t\t/**\n\t\t * The label of the input.\n\t\t */\n\t\tlabel?: string\n\n\t\t/**\n\t\t * The size category of the input.\n\t\t */\n\t\tsize?: QFieldSize\n\n\t\t/**\n\t\t * Whether the input is readonly.\n\t\t */\n\t\treadonly?: boolean\n\n\t\t/**\n\t\t * Whether the input is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\n\t\t/**\n\t\t * If set to true, an asterisk (*) is displayed\n\t\t * to indicate that the field is required.\n\t\t */\n\t\trequired?: boolean\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QField',\n props: {\n id: { default: () => useUid() },\n label: { default: '' },\n size: { default: 'medium' },\n readonly: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n required: { type: Boolean, default: false }\n },\n setup(__props: any, { expose: __expose }) {\n\nconst props = __props;\n\n\t// Composables\n\t\n\n\t// Template refs\n\tconst fieldRef = ref<HTMLElement | null>(null)\n\n\tconst isRequired = computed<boolean>(() => props.required && !props.readonly && !props.disabled)\n\n\t__expose({\n\t\tfieldRef\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _renderSlot(_ctx.$slots, \"label.prepend\"),\n _createElementVNode(\"label\", {\n class: \"q-field__label\",\n for: props.id,\n \"data-val-required\": isRequired.value\n }, _toDisplayString(props.label), 9, _hoisted_1),\n _renderSlot(_ctx.$slots, \"label.append\"),\n _createElementVNode(\"div\", _mergeProps({\n ref_key: \"fieldRef\",\n ref: fieldRef,\n id: props.id,\n class: [\n\t\t\t'q-field',\n\t\t\t`q-field--${props.size}`,\n\t\t\t{ 'q-field--readonly': props.readonly, 'q-field--disabled': props.disabled }\n\t\t]\n }, _ctx.$attrs), [\n _createElementVNode(\"div\", _hoisted_3, [\n (_ctx.$slots.prepend)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _renderSlot(_ctx.$slots, \"prepend\")\n ]))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\"),\n (_ctx.$slots.append)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _renderSlot(_ctx.$slots, \"append\")\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (_ctx.$slots.extras)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _renderSlot(_ctx.$slots, \"extras\")\n ]))\n : _createCommentVNode(\"\", true)\n ], 16, _hoisted_2)\n ], 64))\n}\n}\n\n})","// Components\nimport _QField from './QField.vue'\n\n// Types\nimport type { QFieldProps, QFieldSize } from './QField.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QField = setupPropsProxy(_QField) as typeof _QField\n\n// Export components\nexport { QField }\n\n// Export types\nexport type { QFieldProps, QFieldSize }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { QIconFont } from '.'\n\timport { QIconImg } from '.'\n\timport { QIconSvg } from '.'\n\n\t// Utils\n\timport { computed } from 'vue'\n\n\texport type Icon = {\n\t\t/**\n\t\t * The identifier of the icon.\n\t\t */\n\t\ticon: string\n\n\t\t/**\n\t\t * The type of resource.\n\t\t */\n\t\ttype?: 'svg' | 'font' | 'img'\n\n\t\t/**\n\t\t * The size of the icon, in pixels.\n\t\t */\n\t\tsize?: number\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QIcon',\n props: {\n icon: {},\n type: { default: 'svg' },\n size: { default: undefined }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\tconst component = computed(() => {\n\t\tswitch (props.type) {\n\t\t\tcase 'svg':\n\t\t\t\treturn QIconSvg\n\t\t\tcase 'font':\n\t\t\t\treturn QIconFont\n\t\t\tcase 'img':\n\t\t\t\treturn QIconImg\n\t\t\tdefault:\n\t\t\t\treturn undefined\n\t\t}\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (props.icon)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent(component.value), {\n key: 0,\n icon: props.icon,\n size: props.size\n }, null, 8, [\"icon\", \"size\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { computed } from 'vue'\n\n\texport type QIconFontProps = {\n\t\t/**\n\t\t * The classname containing the content of the font icon.\n\t\t */\n\t\ticon: string\n\n\t\t/**\n\t\t * The name of the icon library.\n\t\t */\n\t\tlibrary?: string\n\n\t\t/**\n\t\t * The icon variant.\n\t\t */\n\t\tvariant?: string\n\n\t\t/**\n\t\t * The size of the icon, in pixels.\n\t\t */\n\t\tsize?: number\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QIconFont',\n props: {\n icon: {},\n library: { default: '' },\n variant: { default: '' },\n size: { default: undefined }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Utils\n\t\n\n\tconst libraryVariant = computed(() => {\n\t\tif (props.variant) return `${props.library}-${props.variant}`\n\t\treturn props.library\n\t})\n\n\tconst iconClass = computed(() => {\n\t\tif (props.library && props.icon) return `${props.library}-${props.icon}`\n\t\treturn props.icon\n\t})\n\n\tconst iconStyle = computed(() => {\n\t\treturn {\n\t\t\t'font-size': props.size !== undefined ? `${props.size}px` : undefined\n\t\t}\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (iconClass.value)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: _normalizeClass(['q-icon', 'q-icon__font', libraryVariant.value, iconClass.value]),\n style: _normalizeStyle(iconStyle.value)\n }, null, 6))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"src\"]\n\nimport { computed } from 'vue'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QIconImg',\n props: {\n icon: {},\n size: {}\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Utils\n\t\n\n\tconst iconStyle = computed(() => {\n\t\treturn {\n\t\t\t'font-size': props.size !== undefined ? `${props.size}px` : undefined\n\t\t}\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (props.icon)\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: props.icon,\n class: \"q-icon q-icon__img\",\n style: _normalizeStyle(iconStyle.value)\n }, null, 12, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import { h as createElement, defineComponent } from 'vue'\n\n/** @type Record<string, PromiseWithState<Element>> */\nconst cache = {}\n\nexport default defineComponent({\n\tname: 'InlineSvg',\n\n\temits: ['loaded', 'unloaded', 'error'],\n\n\tinheritAttrs: false,\n\n\trender() {\n\t\tif (!this.svgElSource) return null\n\n\t\tconst ctn = this.getSvgContent(this.svgElSource)\n\t\tif (!ctn) return createElement('div', this.$attrs)\n\n\t\tconst cprops = {}\n\t\t// source attrs\n\t\tthis.copySvgAttrs(cprops, this.svgElSource)\n\t\t// transformed attributes\n\t\tthis.copySvgAttrs(cprops, ctn)\n\t\t// component attrs and listeners\n\t\tthis.copyComponentAttrs(cprops, this.$attrs)\n\t\t// content\n\t\tcprops.innerHTML = ctn.innerHTML\n\n\t\treturn createElement('svg', cprops)\n\t},\n\n\tprops: {\n\t\tsrc: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\n\t\tsymbol: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\n\t\ttransformSource: {\n\t\t\ttype: Function,\n\t\t\tdefault: undefined\n\t\t},\n\n\t\tkeepDuringLoading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t/** @type SVGElement */\n\t\t\tsvgElSource: null\n\t\t}\n\t},\n\n\tasync mounted() {\n\t\t// generate `svgElSource`\n\t\tawait this.getSource(this.src)\n\t},\n\n\tmethods: {\n\t\tcopySvgAttrs(target, source) {\n\t\t\tconst attrs = source.attributes\n\t\t\tif (attrs) for (const a of attrs) target[a.name] = a.value\n\t\t},\n\n\t\tcopyComponentAttrs(target, source) {\n\t\t\tfor (const [key, value] of Object.entries(source))\n\t\t\t\tif (value !== false && value !== null && value !== undefined) target[key] = value\n\t\t},\n\n\t\tgetSvgContent(svgEl) {\n\t\t\tif (this.symbol) {\n\t\t\t\tsvgEl = svgEl.getElementById(this.symbol)\n\t\t\t\tif (!svgEl) return null\n\t\t\t}\n\n\t\t\tif (this.transformSource) {\n\t\t\t\tsvgEl = svgEl.cloneNode(true)\n\t\t\t\tsvgEl = this.transformSource(svgEl)\n\t\t\t}\n\n\t\t\tif (this.title) {\n\t\t\t\tif (!this.transformSource) svgEl = svgEl.cloneNode(true)\n\t\t\t\tsetTitle(svgEl, this.title)\n\t\t\t}\n\n\t\t\treturn svgEl\n\t\t},\n\n\t\t/**\n\t\t * Get svgElSource\n\t\t * @param {string} src\n\t\t */\n\t\tasync getSource(src) {\n\t\t\ttry {\n\t\t\t\t// Fill cache by src with promise\n\t\t\t\tif (!cache[src]) {\n\t\t\t\t\t// Download\n\t\t\t\t\tcache[src] = makePromiseState(this.download(src))\n\t\t\t\t}\n\n\t\t\t\t// Notify svg is unloaded\n\t\t\t\tif (this.svgElSource && cache[src].getIsPending() && !this.keepDuringLoading) {\n\t\t\t\t\tthis.svgElSource = null\n\t\t\t\t\tthis.$emit('unloaded')\n\t\t\t\t}\n\n\t\t\t\t// Inline svg when cached promise resolves\n\t\t\t\tconst svg = await cache[src]\n\t\t\t\tthis.svgElSource = svg\n\t\t\t\t// Wait to render\n\t\t\t\tawait this.$nextTick()\n\t\t\t\t// Notify\n\t\t\t\tthis.$emit('loaded', this.$el)\n\t\t\t} catch (err) {\n\t\t\t\t// Notify svg is unloaded\n\t\t\t\tif (this.svgElSource) {\n\t\t\t\t\tthis.svgElSource = null\n\t\t\t\t\tthis.$emit('unloaded')\n\t\t\t\t}\n\n\t\t\t\t// Remove cached rejected promise so next image can try load again\n\t\t\t\tdelete cache[src]\n\t\t\t\tthis.$emit('error', err)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get the contents of the SVG\n\t\t * @param {string} url\n\t\t * @returns {PromiseWithState<Element>}\n\t\t */\n\t\tasync download(url) {\n\t\t\tconst response = await fetch(url)\n\t\t\tif (!response.ok) throw new Error('Error loading SVG')\n\n\t\t\tconst text = await response.text()\n\t\t\tconst parser = new DOMParser()\n\t\t\tconst result = parser.parseFromString(text, 'text/xml')\n\t\t\tconst svgEl = result.getElementsByTagName('svg')[0]\n\n\t\t\tif (!svgEl) throw new Error('Loaded file is not a valid SVG')\n\n\t\t\t// Uncomment the following line if you want to apply any transformation to the SVG element\n\t\t\t// svgEl = this.transformSource(svgEl)\n\t\t\treturn svgEl\n\t\t}\n\t},\n\n\twatch: {\n\t\tsrc(newValue) {\n\t\t\t// re-generate cached svg (`svgElSource`)\n\t\t\tthis.getSource(newValue)\n\t\t}\n\t}\n})\n\n/**\n * Create or edit the <title> element of a SVG\n * @param {SVGElement} svg\n * @param {string} title\n */\nfunction setTitle(svg, title) {\n\tconst titleTags = svg.getElementsByTagName('title')\n\tif (titleTags.length) {\n\t\t// overwrite existing title\n\t\ttitleTags[0].textContent = title\n\t} else {\n\t\t// create a title element if one doesn't already exist\n\t\tconst titleEl = document.createElementNS('http://www.w3.org/2000/svg', 'title')\n\t\ttitleEl.textContent = title\n\t\t// svg.prepend(titleEl);\n\t\tsvg.insertBefore(titleEl, svg.firstChild)\n\t}\n}\n\n/**\n * This function allow you to modify a JS Promise by adding some status properties.\n * @template {any} T\n * @param {Promise<T>|PromiseWithState<T>} promise\n * @return {PromiseWithState<T>}\n */\nfunction makePromiseState(promise) {\n\t// Don't modify any promise that has been already modified.\n\tif (promise.getIsPending) return promise\n\n\t// Set initial state\n\tlet isPending = true\n\n\t// Observe the promise, saving the fulfillment in a closure scope.\n\tconst result = promise.then(\n\t\t(v) => {\n\t\t\tisPending = false\n\t\t\treturn v\n\t\t},\n\t\t(e) => {\n\t\t\tisPending = false\n\t\t\tthrow e\n\t\t}\n\t)\n\n\tresult.getIsPending = () => isPending\n\n\treturn result\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { computed } from 'vue'\n\timport InlineSvg from './InlineSvg.js'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QIconSvg',\n props: {\n icon: {},\n bundle: { default: '' },\n size: { default: undefined }\n },\n emits: [\"loaded\", \"unloaded\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Utils\n\t\n\n\t\n\n\tconst iconStyle = computed(() => {\n\t\treturn {\n\t\t\t'font-size': props.size !== undefined ? `${props.size}px` : undefined\n\t\t}\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (props.icon)\n ? (_openBlock(), _createBlock(_unref(InlineSvg), {\n key: 0,\n class: \"q-icon q-icon__svg\",\n src: props.bundle,\n symbol: props.icon,\n style: _normalizeStyle(iconStyle.value),\n onLoaded: _cache[0] || (_cache[0] = ($event: any) => (emit('loaded', $event))),\n onUnloaded: _cache[1] || (_cache[1] = ($event: any) => (emit('unloaded', $event)))\n }, null, 8, [\"src\", \"symbol\", \"style\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","// Components\nimport _QIcon from './QIcon.vue'\nimport _QIconFont from './QIconFont.vue'\nimport _QIconImg from './QIconImg.vue'\nimport _QIconSvg from './QIconSvg.vue'\n\n// Types\nimport type { Icon } from './QIcon.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QIcon = setupPropsProxy(_QIcon) as typeof _QIcon\nconst QIconFont = setupPropsProxy(_QIconFont) as typeof _QIconFont\nconst QIconImg = setupPropsProxy(_QIconImg) as typeof _QIconImg\nconst QIconSvg = setupPropsProxy(_QIconSvg) as typeof _QIconSvg\n\n// Export components\nexport { QIcon, QIconFont, QIconImg, QIconSvg }\n\n// Export types\nexport type { Icon }\n","// Components\nimport _QLineLoader from './QLineLoader.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QLineLoader = setupPropsProxy(_QLineLoader) as typeof _QLineLoader\n\n// Export components\nexport { QLineLoader }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createBlock as _createBlock, withCtx as _withCtx, resolveDynamicComponent as _resolveDynamicComponent, normalizeClass as _normalizeClass } from \"vue\"\n\nimport { QListItem } from '.'\n\timport { QListItemGroup } from '.'\n\n\t// Types\n\timport type { QListItemProps, QListItemGroupProps } from '.'\n\timport type { Primitive } from '@/types/primitive'\n\n\t// Utils\n\timport { computed, ref, watch } from 'vue'\n\n\texport type QListProps = {\n\t\t/**\n\t\t * The value of the currently selected item.\n\t\t */\n\t\tmodelValue?: Primitive\n\n\t\t/**\n\t\t * The list of available items for selection.\n\t\t */\n\t\titems: (Omit<QListItemProps, 'value' | 'label'> & {\n\t\t\t// allow custom properties\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t[key: string]: any\n\t\t})[]\n\n\t\t/**\n\t\t * The item groups used for organizing the available items.\n\t\t */\n\t\tgroups?: (QListItemGroupProps & {\n\t\t\tid: string\n\t\t})[]\n\n\t\t/**\n\t\t * The property of each item object that holds its value.\n\t\t */\n\t\titemValue?: string\n\n\t\t/**\n\t\t * The property of each item object that holds its title.\n\t\t */\n\t\titemLabel?: string\n\n\t\t/**\n\t\t * Indicates whether the list is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QList',\n props: {\n modelValue: { type: [String, Number, Boolean, Symbol], default: undefined },\n items: {},\n groups: { default: () => [] },\n itemValue: { default: 'key' },\n itemLabel: { default: 'label' },\n disabled: { type: Boolean }\n },\n emits: [\"update:modelValue\"],\n setup(__props: any, { expose: __expose, emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\tconst value = ref(props.modelValue)\n\n\tconst listTag = computed(() => (groups.value.length > 1 ? 'div' : 'ul'))\n\tconst groups = computed<QListItemGroupProps[]>(() => {\n\t\tif (props.groups.length) return props.groups\n\n\t\t// Generate a default group without title\n\t\treturn [{ title: '' }]\n\t})\n\n\t// Template refs\n\tconst listRef = ref<HTMLElement | null>(null)\n\n\tfunction onItemSelect(newVal: Primitive) {\n\t\tvalue.value = newVal\n\t\temit('update:modelValue', newVal)\n\t}\n\n\tfunction onFocus() {\n\t\tlet targetIdx = 0\n\n\t\tif (value.value) {\n\t\t\ttargetIdx = props.items.findIndex((item) => item[props.itemValue] === value.value)\n\t\t}\n\n\t\tfocusItem(targetIdx)\n\t}\n\n\tfunction onKeyDown(e: KeyboardEvent) {\n\t\tif (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\tfocus('next')\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\tfocus('prev')\n\t\t\t\tbreak\n\t\t\tcase 'Home':\n\t\t\t\tfocus('first')\n\t\t\t\tbreak\n\t\t\tcase 'End':\n\t\t\t\tfocus('last')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tfunction focus(direction?: 'next' | 'prev' | 'first' | 'last') {\n\t\tswitch (direction) {\n\t\t\tcase 'next':\n\t\t\tcase 'prev':\n\t\t\t\tfocusItem(getAdjacentItemIdx(direction))\n\t\t\t\tbreak\n\t\t\tcase 'first':\n\t\t\t\tfocusItem(0)\n\t\t\t\tbreak\n\t\t\tcase 'last':\n\t\t\t\tfocusItem(-1)\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tfunction focusItem(itemIdx: number) {\n\t\tconst children = getFocusableChildren()\n\t\tchildren.at(itemIdx)?.focus()\n\t}\n\n\tfunction getFocusableChildren() {\n\t\tconst nodes = listRef.value?.querySelectorAll('li')\n\t\tif (!nodes) return []\n\n\t\tconst items = Array.from(nodes) as HTMLElement[]\n\t\treturn items.filter((item) => item.tabIndex !== -1)\n\t}\n\n\tfunction getActiveItemIndex(items: HTMLElement[]) {\n\t\treturn items.indexOf(document.activeElement as HTMLElement)\n\t}\n\n\tfunction getAdjacentItemIdx(direction: 'next' | 'prev') {\n\t\tconst items = getFocusableChildren()\n\t\tconst idx = getActiveItemIndex(items)\n\n\t\tif (direction === 'next') return idx === items.length - 1 ? idx : idx + 1\n\t\treturn idx === 0 ? 0 : idx - 1\n\t}\n\n\tfunction getGroupItems(group?: string) {\n\t\tif (!group) return props.items\n\t\treturn props.items.filter((item) => item.group === group)\n\t}\n\n\twatch(\n\t\t() => props.modelValue,\n\t\t(newVal) => {\n\t\t\tvalue.value = newVal\n\t\t}\n\t)\n\n\t__expose({ focusItem })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_resolveDynamicComponent(listTag.value), {\n ref_key: \"listRef\",\n ref: listRef,\n class: _normalizeClass(['q-list', { 'q-list--disabled': props.disabled }]),\n role: \"listbox\",\n tabindex: props.disabled ? -1 : 0,\n onFocus: onFocus,\n onKeydown: onKeyDown\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(groups.value, (group) => {\n return (_openBlock(), _createBlock(_unref(QListItemGroup), {\n key: group.id,\n title: group.title,\n disabled: group.disabled\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(getGroupItems(group.id), (item) => {\n return (_openBlock(), _createBlock(_unref(QListItem), {\n key: item[props.itemValue],\n value: item[props.itemValue],\n label: item[props.itemLabel],\n icon: item.icon,\n disabled: props.disabled || item.disabled,\n selected: value.value === item[props.itemValue],\n onSelect: onItemSelect\n }, null, 8, [\"value\", \"label\", \"icon\", \"disabled\", \"selected\"]))\n }), 128))\n ]),\n _: 2\n }, 1032, [\"title\", \"disabled\"]))\n }), 128))\n ]),\n _: 1\n }, 40, [\"class\", \"tabindex\"]))\n}\n}\n\n})","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, openBlock as _openBlock, createBlock as _createBlock, mergeProps as _mergeProps, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"tabindex\", \"aria-label\", \"aria-selected\", \"onClick\"]\nconst _hoisted_2 = { class: \"q-list-item__check-container\" }\n\nimport { QIcon } from '@/components/QIcon'\n\n\t// Types\n\timport type { Icon } from '@/components/QIcon'\n\timport type { Primitive } from '@/types/primitive'\n\n\t\n\t// The default icons of the component.\n\tconst DEFAULT_ICONS: Record<string, Icon> = {\n\t\tcheck: {\n\t\t\ticon: 'check'\n\t\t}\n\t}\n\nexport type ListItem = {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t[key: string]: any\n\t\ticon?: Icon\n\t\tselected?: boolean\n\t\tgroup?: string\n\t\tdisabled?: boolean\n\t}\n\n\texport type Icons = typeof DEFAULT_ICONS\n\n\texport type QListItemProps = {\n\t\t/**\n\t\t * The value of the item.\n\t\t */\n\t\tvalue: Primitive\n\n\t\t/**\n\t\t * The label of the item.\n\t\t */\n\t\tlabel: string\n\n\t\t/**\n\t\t * The icon of the item.\n\t\t */\n\t\ticon?: Icon\n\n\t\t/**\n\t\t * Whether this item is selected.\n\t\t */\n\t\tselected?: boolean\n\n\t\t/**\n\t\t * Whether this item is highlighted.\n\t\t */\n\t\thighlighted?: boolean\n\n\t\t/**\n\t\t * The icons of the component.\n\t\t */\n\t\ticons?: Icons\n\n\t\t/**\n\t\t * Whether the item is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QListItem',\n props: {\n value: { type: [String, Number, Boolean, Symbol] },\n label: {},\n icon: { default: undefined },\n selected: { type: Boolean, default: false },\n highlighted: { type: Boolean, default: false },\n icons: { default: () => DEFAULT_ICONS },\n disabled: { type: Boolean, default: false }\n },\n emits: [\"select\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\tfunction onSelect() {\n\t\tif (!props.disabled) emit('select', props.value)\n\t}\n\n\tfunction onKeyDown(e: KeyboardEvent) {\n\t\tif (e.key === 'Tab') onSelect()\n\n\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\t\t\tonSelect()\n\t\t}\n\t}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n role: \"option\",\n tabindex: props.disabled ? undefined : -2,\n class: _normalizeClass([\n\t\t\t'q-list-item',\n\t\t\t{\n\t\t\t\t'q-list-item--disabled': props.disabled,\n\t\t\t\t'q-list-item--selected': props.selected,\n\t\t\t\t'q-list-item--highlighted': props.highlighted\n\t\t\t}\n\t\t]),\n \"aria-label\": props.label,\n \"aria-selected\": props.disabled ? undefined : props.selected,\n onKeydown: onKeyDown,\n onClick: _withModifiers(onSelect, [\"stop\",\"prevent\"])\n }, [\n (props.icon)\n ? (_openBlock(), _createBlock(_unref(QIcon), _normalizeProps(_mergeProps({ key: 0 }, props.icon)), null, 16))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\" \" + _toDisplayString(props.label) + \" \", 1),\n _createElementVNode(\"div\", _hoisted_2, [\n (props.selected)\n ? (_openBlock(), _createBlock(_unref(QIcon), _mergeProps({ key: 0 }, props.icons.check, { class: \"q-list-item__check\" }), null, 16))\n : _createCommentVNode(\"\", true)\n ])\n ], 42, _hoisted_1))\n}\n}\n\n})","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot } from \"vue\"\n\nconst _hoisted_1 = [\"aria-labelledby\"]\nconst _hoisted_2 = [\"id\"]\n\nimport { useUid } from '@/composables/uid'\n\n\texport type QListItemGroupProps = {\n\t\t/**\n\t\t * The title of the group.\n\t\t */\n\t\ttitle?: string\n\n\t\t/**\n\t\t * Whether the entire list group is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QListItemGroup',\n props: {\n title: { default: '' },\n disabled: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Composables\n\t\n\n\tconst id = useUid()\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"ul\", {\n class: \"q-list-item-group\",\n role: \"group\",\n \"aria-labelledby\": props.title ? _unref(id) : undefined\n }, [\n (props.title)\n ? (_openBlock(), _createElementBlock(\"li\", {\n key: 0,\n id: _unref(id),\n class: \"q-list-item-group__title\",\n role: \"presentation\"\n }, _toDisplayString(props.title), 9, _hoisted_2))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\")\n ], 8, _hoisted_1))\n}\n}\n\n})","// Components\nimport _QList from './QList.vue'\nimport _QListItem from './QListItem.vue'\nimport _QListItemGroup from './QListItemGroup.vue'\n\n// Types\nimport type { QListProps } from './QList.vue'\nimport type { QListItemProps } from './QListItem.vue'\nimport type { QListItemGroupProps } from './QListItemGroup.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QList = setupPropsProxy(_QList) as typeof _QList\nconst QListItem = setupPropsProxy(_QListItem) as typeof _QListItem\nconst QListItemGroup = setupPropsProxy(_QListItemGroup) as typeof _QListItemGroup\n\n// Export components\nexport { QList, QListItem, QListItemGroup }\n\n// Export types\nexport type { QListProps, QListItemProps, QListItemGroupProps }\n","export type Appearance = 'regular' | 'inverted'\nexport type Placement = 'top' | 'bottom' | 'left' | 'right'\nexport type Trigger = 'hover' | 'click' | 'manual'\n\nexport type Position = {\n\tx: number\n\ty: number\n\tplacement: Placement\n\twidth?: number\n}\n\n/**\n * Reposition the overlay based on its size and the position of its anchor.\n */\nexport function computePosition(\n\tanchor: Element,\n\toverlay: Element | null,\n\ttentativePlacement: Placement = 'right',\n\twidth?: 'auto' | 'anchor'\n): Position {\n\t// Get absolute position of anchor\n\tconst anchorPosition = anchor.getBoundingClientRect()\n\tconst left = anchorPosition.x + window.scrollX\n\tconst top = anchorPosition.y + window.scrollY\n\n\t// Get absolute position of overlay\n\tconst overlayPosition = overlay?.getBoundingClientRect()\n\tconst overlayWidth = overlayPosition?.width ?? 0\n\tconst overlayHeight = overlayPosition?.height ?? 0\n\n\tlet placement = tentativePlacement\n\n\t// Attempt to prevent out of bounds\n\tif (overlayPosition) {\n\t\tconst oob = !canReposition(anchorPosition, overlayPosition, placement)\n\t\tif (oob) placement = getOptimalFallbackPosition(anchorPosition, overlayPosition, placement)\n\t}\n\n\tconst position: Position = { x: 0, y: 0, placement: placement }\n\n\tswitch (placement) {\n\t\tcase 'top':\n\t\t\tif (width === 'anchor') position.x = left\n\t\t\telse position.x = left + (anchorPosition.width - overlayWidth) / 2\n\t\t\tposition.y = top - overlayHeight\n\t\t\tbreak\n\t\tcase 'bottom':\n\t\t\tif (width === 'anchor') position.x = left\n\t\t\telse position.x = left + (anchorPosition.width - overlayWidth) / 2\n\t\t\tposition.y = top + anchorPosition.height\n\t\t\tbreak\n\t\tcase 'left':\n\t\t\tposition.x = left - overlayWidth\n\t\t\tposition.y = top + anchorPosition.height / 2 - overlayHeight / 2\n\t\t\tbreak\n\t\tcase 'right':\n\t\t\tposition.x = left + anchorPosition.width\n\t\t\tposition.y = top + anchorPosition.height / 2 - overlayHeight / 2\n\t\t\tbreak\n\t\tdefault:\n\t\t\tbreak\n\t}\n\n\tif (width === 'anchor' && anchorPosition.width >= overlayWidth)\n\t\tposition.width = anchorPosition.width\n\n\treturn position\n}\n\n/**\n * Determines if the overlay can reposition to the provided placement\n * without going out of bounds.\n */\nfunction canReposition(anchorPosition: DOMRect, overlayPosition: DOMRect, to: Placement) {\n\tlet xOK = false,\n\t\tyOK = false\n\n\tswitch (to) {\n\t\tcase 'top':\n\t\t\txOK = isHorizontalPositionValid(anchorPosition, overlayPosition)\n\t\t\tyOK = anchorPosition.top > overlayPosition.height\n\t\t\tbreak\n\t\tcase 'bottom':\n\t\t\txOK = isHorizontalPositionValid(anchorPosition, overlayPosition)\n\t\t\tyOK =\n\t\t\t\twindow.innerHeight - anchorPosition.top - anchorPosition.height >\n\t\t\t\toverlayPosition.height\n\t\t\tbreak\n\t\tcase 'left':\n\t\t\txOK = anchorPosition.left > overlayPosition.width\n\t\t\tyOK = isVerticalPositionValid(anchorPosition, overlayPosition)\n\t\t\tbreak\n\t\tcase 'right':\n\t\t\txOK =\n\t\t\t\twindow.innerWidth - anchorPosition.left - anchorPosition.width >\n\t\t\t\toverlayPosition.width\n\t\t\tyOK = isVerticalPositionValid(anchorPosition, overlayPosition)\n\t\t\tbreak\n\t\tdefault:\n\t\t\tbreak\n\t}\n\n\treturn xOK && yOK\n}\n\n/**\n * Determines if the overlay can be positioned within the viewport vertically.\n */\nfunction isVerticalPositionValid(anchorPosition: DOMRect, overlayPosition: DOMRect) {\n\treturn (\n\t\twindow.innerHeight - anchorPosition.top - anchorPosition.height / 2 >\n\t\t\toverlayPosition.height / 2 &&\n\t\tanchorPosition.top + anchorPosition.height / 2 > overlayPosition.height / 2\n\t)\n}\n\n/**\n * Determines if the overlay can be positioned within the viewport horizontally.\n */\nfunction isHorizontalPositionValid(anchorPosition: DOMRect, overlayPosition: DOMRect) {\n\treturn (\n\t\twindow.innerWidth - anchorPosition.left - anchorPosition.width / 2 >\n\t\t\toverlayPosition.width / 2 &&\n\t\tanchorPosition.left + anchorPosition.width / 2 > overlayPosition.width / 2\n\t)\n}\n\n/**\n * Determines the optional fallback position assuming the current is not available.\n */\nfunction getOptimalFallbackPosition(\n\tanchorPosition: DOMRect,\n\toverlayPosition: DOMRect,\n\tcurrent: Placement\n) {\n\t// Fallback positions ordered by optimal preference.\n\tconst fallbackOrder: Record<string, Placement[]> = {\n\t\ttop: ['bottom', 'left', 'right'],\n\t\tbottom: ['top', 'left', 'right'],\n\t\tleft: ['right', 'top', 'bottom'],\n\t\tright: ['left', 'top', 'bottom']\n\t}\n\n\tfor (const position of fallbackOrder[current])\n\t\tif (canReposition(anchorPosition, overlayPosition, position)) return position\n\n\t// If none of the fallback positions are within bounds,\n\t// return the current position\n\t// TODO: return the position that is \"less out of bounds\"\n\t// when none of the fallback positions are optimal\n\treturn current\n}\n","import { ComponentPublicInstance } from 'vue'\n\nexport type Selector = string | HTMLElement | ComponentPublicInstance\n\n/**\n * Gets a DOM element based on the provided selector.\n */\nexport function getElement(selector: Selector): Element | null {\n\tif (typeof selector === 'string')\n\t\t// Selector\n\t\treturn document.querySelector(selector)\n\telse if (selector && '$el' in selector)\n\t\t// Component (ref)\n\t\treturn selector.$el\n\n\t// HTMLElement | Element\n\treturn selector\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode, Teleport as _Teleport, createBlock as _createBlock, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"q-overlay__arrow\"\n}\n\nimport { Appearance, Placement, Trigger, computePosition } from '@/composables/overlay'\n\n\t// Utils\n\timport { Selector, getElement } from '@/utils/getElement'\n\timport { Ref, computed, nextTick, onBeforeUnmount, onMounted, reactive, ref, watch } from 'vue'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n ...{\n\t\tinheritAttrs: false\n\t},\n __name: 'QOverlay',\n props: {\n modelValue: { type: Boolean },\n anchor: {},\n appearance: { default: 'regular' },\n arrow: { type: Boolean, default: false },\n attach: { default: 'body' },\n contentClasses: { default: () => [] },\n delay: { default: 500 },\n disabled: { type: Boolean },\n offset: { default: 8 },\n placement: { default: 'right' },\n spy: { type: Boolean, default: false },\n transition: { default: 'fade' },\n trigger: { default: 'click' },\n width: { default: 'auto' }\n },\n emits: [\"enter\", \"leave\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Composables\n\t\n\n\t\n\n\t\n\n\tconst classes = computed(() => {\n\t\treturn [\n\t\t\t'q-overlay',\n\t\t\t`q-overlay--${state.placement}`,\n\t\t\t{ 'q-overlay--inverted': props.appearance === 'inverted' },\n\t\t\t...props.contentClasses\n\t\t]\n\t})\n\n\tconst state = reactive({\n\t\tvisible: props.modelValue,\n\t\tanimating: false,\n\t\ttop: 0,\n\t\tleft: 0,\n\t\twidth: 0 as number | undefined,\n\t\tplacement: props.placement\n\t})\n\n\tconst visible = computed(() => state.visible && !props.disabled)\n\twatch(\n\t\t() => props.modelValue,\n\t\t() => (state.visible = props.modelValue)\n\t)\n\twatch(\n\t\t() => state.visible,\n\t\t() => (state.animating = true)\n\t)\n\n\tconst overlayProps = computed(() => {\n\t\tlet xOffset = 0,\n\t\t\tyOffset = 0\n\n\t\tswitch (state.placement) {\n\t\t\tcase 'top':\n\t\t\t\tyOffset = -(props.offset || 0)\n\t\t\t\tbreak\n\t\t\tcase 'bottom':\n\t\t\t\tyOffset = props.offset || 0\n\t\t\t\tbreak\n\t\t\tcase 'left':\n\t\t\t\txOffset = -(props.offset || 0)\n\t\t\t\tbreak\n\t\t\tcase 'right':\n\t\t\t\txOffset = props.offset || 0\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst _props: { top: string; left: string; width?: string } = {\n\t\t\ttop: `${state.top + yOffset}px`,\n\t\t\tleft: `${state.left + xOffset}px`\n\t\t}\n\n\t\tif (state.width !== undefined && ['top', 'bottom'].includes(state.placement))\n\t\t\t_props.width = `${state.width}px`\n\n\t\treturn _props\n\t})\n\n\t// Overlay template ref\n\tconst overlay: Ref<HTMLElement | null> = ref(null)\n\n\t/**\n\t * Reposition the overlay based on its size and the position of its target.\n\t */\n\tfunction reposition() {\n\t\tconst target: Element | null = getElement(props.anchor)\n\n\t\t// Both target and overlay must be visible in order to reposition\n\t\tif (target) {\n\t\t\tconst position = computePosition(target, overlay.value, props.placement, props.width)\n\n\t\t\tstate.left = position.x\n\t\t\tstate.top = position.y\n\t\t\tstate.width = position.width\n\t\t\tstate.placement = position.placement\n\t\t}\n\t}\n\n\t// Setup reaction to changes in the position of the target element\n\twatch([() => visible.value, () => props.placement], reposition)\n\n\t// Handle show/hide with the specified delay\n\tlet timeoutId: number | undefined = undefined\n\n\tfunction show() {\n\t\tconst _delay = props.trigger === 'hover' ? props.delay : 0\n\t\tif (!timeoutId) timeoutId = window.setTimeout(() => (state.visible = true), _delay)\n\t}\n\n\tfunction hide() {\n\t\tclearTimeout(timeoutId)\n\t\ttimeoutId = undefined\n\n\t\tstate.visible = false\n\t}\n\n\tfunction toggle() {\n\t\tvisible.value ? hide() : show()\n\t}\n\n\tlet animationTimeoutId: number | undefined = undefined\n\n\tfunction onLeave() {\n\t\twindow.clearTimeout(animationTimeoutId)\n\t\tanimationTimeoutId = window.setTimeout(() => (state.animating = false), 200)\n\n\t\temit('leave')\n\t}\n\n\tlet observer: MutationObserver | undefined = undefined\n\n\tfunction addTargetListeners() {\n\t\tnextTick(() => {\n\t\t\tconst target = getElement(props.anchor)\n\t\t\tif (!target) return\n\n\t\t\tswitch (props.trigger) {\n\t\t\t\tcase 'click':\n\t\t\t\t\ttarget.addEventListener('click', toggle)\n\t\t\t\t\tbreak\n\t\t\t\tcase 'hover':\n\t\t\t\t\ttarget.addEventListener('mouseenter', show)\n\t\t\t\t\ttarget.addEventListener('mouseleave', hide)\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t})\n\t}\n\n\tfunction addRepositionListeners() {\n\t\tnextTick(() => {\n\t\t\tconst target = getElement(props.anchor)\n\t\t\tif (!target) return\n\n\t\t\t// Handler to reposition overlay on window resize\n\t\t\twindow.addEventListener('scroll', reposition)\n\t\t\twindow.addEventListener('resize', reposition)\n\n\t\t\t// Observer to detect changes in the overlay target and reposition accordingly\n\t\t\tobserver = new MutationObserver(reposition)\n\t\t\tobserver.observe(target, {\n\t\t\t\tattributes: false,\n\t\t\t\tchildList: true,\n\t\t\t\tcharacterData: true,\n\t\t\t\tsubtree: true\n\t\t\t})\n\n\t\t\treposition()\n\t\t})\n\t}\n\n\tfunction removeRepositionListeners() {\n\t\twindow.removeEventListener('scroll', reposition)\n\t\twindow.removeEventListener('resize', reposition)\n\n\t\tobserver?.disconnect()\n\t}\n\n\tlet autoUpdateTimeoutId: number | undefined = undefined\n\n\tfunction autoUpdate() {\n\t\t// Spy\n\t\tconst target: Element | null = getElement(props.anchor)\n\n\t\tif (target) {\n\t\t\treposition()\n\n\t\t\t// Schedule next spy\n\t\t\tautoUpdateTimeoutId = window.setTimeout(autoUpdate, 100)\n\t\t} else {\n\t\t\t// Target was destroyed,\n\t\t\t// hide and destroy overlay as well\n\t\t\thide()\n\t\t}\n\t}\n\n\tfunction init() {\n\t\taddRepositionListeners()\n\n\t\tif (props.spy) autoUpdate()\n\t}\n\n\tfunction destroy() {\n\t\tremoveRepositionListeners()\n\n\t\tif (props.spy) {\n\t\t\tclearTimeout(autoUpdateTimeoutId)\n\t\t\tautoUpdateTimeoutId = undefined\n\t\t}\n\t}\n\n\tonBeforeUnmount(destroy)\n\n\tonMounted(reposition)\n\n\twatch(\n\t\t() => props.disabled,\n\t\t(isDisabled) => {\n\t\t\tif (!isDisabled) addTargetListeners()\n\t\t},\n\t\t{ immediate: true }\n\t)\n\n\twatch(\n\t\t() => visible.value,\n\t\t(isVisible) => {\n\t\t\tisVisible ? init() : destroy()\n\t\t},\n\t\t{ immediate: true }\n\t)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _renderSlot(_ctx.$slots, \"trigger\", { open: visible.value }),\n (visible.value || state.animating)\n ? (_openBlock(), _createBlock(_Teleport, {\n key: 0,\n disabled: !props.attach,\n to: props.attach\n }, [\n _createVNode(_Transition, {\n name: props.transition,\n appear: \"\",\n onEnter: _cache[0] || (_cache[0] = ($event: any) => (emit('enter'))),\n onLeave: onLeave\n }, {\n default: _withCtx(() => [\n (visible.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(classes.value),\n style: _normalizeStyle(overlayProps.value)\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['q-overlay__content']),\n ref_key: \"overlay\",\n ref: overlay\n }, [\n (props.arrow)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\")\n ], 512)\n ], 6))\n : _createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"name\"])\n ], 8, [\"disabled\", \"to\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","// Components\nimport _QOverlay from './QOverlay.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QOverlay = setupPropsProxy(_QOverlay) as typeof _QOverlay\n\n// Export components\nexport { QOverlay }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, renderSlot as _renderSlot, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"q-popover__header\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"q-popover__body\"\n}\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = { key: 1 }\n\nimport { Placement } from '@/composables/overlay'\n\n\t// Components\n\timport { QOverlay } from '@/components/QOverlay'\n\n\t// Utils\n\timport { Selector } from '@/utils/getElement'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n ...{\n\t\tinheritAttrs: false\n\t},\n __name: 'QPopover',\n props: {\n modelValue: { type: Boolean },\n anchor: {},\n arrow: { type: Boolean, default: true },\n attach: { default: 'body' },\n disabled: { type: Boolean },\n html: { type: Boolean, default: true },\n placement: { default: 'right' },\n spy: { type: Boolean, default: true },\n text: {},\n title: {}\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Composables\n\t\n\n\t\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(QOverlay), {\n \"model-value\": props.modelValue,\n trigger: \"click\",\n anchor: props.anchor,\n arrow: props.arrow,\n attach: props.attach,\n \"content-classes\": ['q-popover'],\n disabled: props.disabled,\n placement: props.placement,\n spy: props.spy\n }, {\n default: _withCtx(() => [\n (props.title || _ctx.$slots.header)\n ? (_openBlock(), _createElementBlock(\"h3\", _hoisted_1, [\n _createTextVNode(_toDisplayString(props.title) + \" \", 1),\n _renderSlot(_ctx.$slots, \"header\")\n ]))\n : _createCommentVNode(\"\", true),\n (props.text || _ctx.$slots.body)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (props.html)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n innerHTML: props.text\n }, null, 8, _hoisted_3))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(props.text), 1)),\n _renderSlot(_ctx.$slots, \"body\")\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"model-value\", \"anchor\", \"arrow\", \"attach\", \"disabled\", \"placement\", \"spy\"]))\n}\n}\n\n})","// Components\nimport _QPopover from './QPopover.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QPopover = setupPropsProxy(_QPopover) as typeof _QPopover\n\n// Export components\nexport { QPopover }\n","import { useAttrs as _useAttrs } from 'vue'\n\nexport type Attrs = {\n\tclass?: string[]\n}\n\nexport function useAttrs(): Attrs {\n\tconst _attrs = _useAttrs()\n\n\tconst attrs: Attrs = {}\n\n\tif (typeof _attrs.class === 'string') {\n\t\tattrs.class = _attrs.class.split(' ')\n\t} else if (Array.isArray(_attrs.class)) {\n\t\tattrs.class = _attrs.class\n\t} else {\n\t\tattrs.class = []\n\t}\n\n\treturn attrs\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, mergeProps as _mergeProps, createBlock as _createBlock, normalizeClass as _normalizeClass, withCtx as _withCtx, createSlots as _createSlots, renderSlot as _renderSlot, createElementVNode as _createElementVNode, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"q-select__value\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"q-select__placeholder\"\n}\nconst _hoisted_3 = [\"onKeydown\"]\n\nimport { QIcon } from '@/components/QIcon'\n\timport { QField } from '@/components/QField'\n\timport { QList } from '@/components/QList'\n\timport { QOverlay } from '@/components/QOverlay'\n\timport { QSpinnerLoader } from '@/components/QSpinnerLoader'\n\n\t// Composables\n\timport { useAttrs } from '@/composables/attrs'\n\n\t// Types\n\timport type { Icon } from '@/components/QIcon'\n\timport type { QFieldSize } from '@/components/QField'\n\timport type { QListItemProps, QListItemGroupProps } from '@/components/QList'\n\timport type { Primitive } from '@/types/primitive'\n\n\t// Utils\n\timport { computed, nextTick, ref, watch } from 'vue'\n\timport { useUid } from '@/composables/uid'\n\n\t\n\t// The default texts of the component.\n\tconst DEFAULT_TEXTS: Record<string, string> = {\n\t\tplaceholder: 'Choose...'\n\t}\n\n\t// The default icons of the component.\n\tconst DEFAULT_ICONS: Record<string, Icon> = {\n\t\tchevron: {\n\t\t\ticon: 'chevron-down'\n\t\t},\n\t\tclear: {\n\t\t\ticon: 'close'\n\t\t}\n\t}\n\ntype Texts = typeof DEFAULT_TEXTS\n\ttype Icons = typeof DEFAULT_ICONS\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n ...{\n\t\tinheritAttrs: false\n\t},\n __name: 'QSelect',\n props: {\n modelValue: { type: [String, Number, Boolean, Symbol], default: undefined },\n id: { default: () => useUid() },\n label: { default: '' },\n clearable: { type: Boolean, default: false },\n readonly: { type: Boolean },\n disabled: { type: Boolean, default: false },\n required: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n icons: { default: () => DEFAULT_ICONS },\n items: {},\n groups: { default: () => [] },\n itemValue: { default: 'key' },\n itemLabel: { default: 'label' },\n size: { default: 'medium' },\n texts: { default: () => DEFAULT_TEXTS }\n },\n emits: [\"update:modelValue\", \"before-show\", \"before-hide\", \"show\", \"hide\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\t\n\n\tconst attrs = useAttrs()\n\n\tconst value = ref(props.modelValue)\n\tconst open = ref(false)\n\tconst typed = ref('')\n\n\t// Template refs\n\tconst triggerEl = ref<InstanceType<typeof QField> | null>(null)\n\tconst listRef = ref<InstanceType<typeof QList> | null>(null)\n\tconst contentRef = ref<HTMLElement | null>(null)\n\n\tconst selectedItem = computed(\n\t\t() => props.items?.find((item) => item[props.itemValue] === value.value)\n\t)\n\n\tconst displayValue = computed<string>(() =>\n\t\tselectedItem.value ? selectedItem.value[props.itemLabel] : ''\n\t)\n\n\tconst canClear = computed<boolean>(\n\t\t() => props.clearable && !props.readonly && !props.disabled && !props.loading\n\t)\n\n\tfunction onSelect(newVal: Primitive | undefined) {\n\t\tvalue.value = newVal\n\t\temit('update:modelValue', newVal)\n\t\thide()\n\t}\n\n\tfunction clear() {\n\t\tif (!canClear.value) return\n\n\t\tonSelect(undefined)\n\t}\n\n\tfunction onClick() {\n\t\tif (props.readonly || props.disabled) return\n\n\t\tif (open.value) hide()\n\t\telse show()\n\t}\n\n\tfunction onListFocusOut(e: FocusEvent) {\n\t\t// Check if focus went to the dropdown element,\n\t\t// an element within it or the trigger element.\n\t\t// If not, the dropdown should close.\n\t\tif (\n\t\t\t!contentRef.value?.contains(e.relatedTarget as Node) &&\n\t\t\t!triggerEl.value?.fieldRef?.contains(e.relatedTarget as Node)\n\t\t)\n\t\t\thide()\n\t}\n\n\tfunction show() {\n\t\tif (open.value) return\n\t\temit('before-show')\n\t\topen.value = true\n\t}\n\n\tfunction hide() {\n\t\tif (!open.value) return\n\t\temit('before-hide')\n\t\topen.value = false\n\t}\n\n\tlet timeoutId: number | undefined = undefined\n\n\tfunction onKeydown(e: KeyboardEvent) {\n\t\tif (!e.key || props.readonly || props.disabled) return\n\n\t\t// Clear any existing timeout\n\t\twindow.clearTimeout(timeoutId)\n\n\t\tif (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\t\t}\n\n\t\tif (['Enter', ' '].includes(e.key)) {\n\t\t\topen.value = true\n\t\t}\n\n\t\tif (['Escape', 'Tab'].includes(e.key)) {\n\t\t\tif (open.value) open.value = false\n\t\t\telse if (props.clearable && e.key === 'Escape') clear()\n\t\t}\n\n\t\tif (e.key === 'Delete' && props.clearable) {\n\t\t\tclear()\n\t\t}\n\n\t\tif (/^[a-z]$/i.test(e.key)) {\n\t\t\ttyped.value += e.key.toLowerCase()\n\n\t\t\t// Find the option that starts with the typed string\n\t\t\tfor (let i = 0; i < props.items.length; i++) {\n\t\t\t\tconst item = props.items[i]\n\t\t\t\tif (item[props.itemLabel].toLowerCase().startsWith(typed.value)) {\n\t\t\t\t\t// Select the matching option\n\t\t\t\t\tfocusItem(i)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Clear the typed string after a short delay\n\t\ttimeoutId = window.setTimeout(function () {\n\t\t\ttyped.value = ''\n\t\t}, 500)\n\t}\n\n\tfunction onOverlayEnter() {\n\t\tprops.loading ? contentRef.value?.focus() : focusList()\n\t\temit('show')\n\t}\n\n\tfunction onOverlayLeave() {\n\t\tfocusMainInput()\n\t\temit('hide')\n\t}\n\n\tfunction focusMainInput() {\n\t\ttriggerEl.value?.fieldRef?.focus()\n\t}\n\n\tfunction focusList() {\n\t\tlistRef.value?.$el.focus()\n\t}\n\n\tfunction focusItem(idx: number) {\n\t\tlistRef.value?.focusItem(idx)\n\t}\n\n\twatch(\n\t\t() => props.modelValue,\n\t\t(newVal) => {\n\t\t\tvalue.value = newVal\n\t\t}\n\t)\n\n\twatch(\n\t\t() => props.loading,\n\t\t(newVal) => {\n\t\t\t// If done loading while the overlay is open,\n\t\t\t// focus the list.\n\t\t\tif (!newVal && open.value) nextTick(focusList)\n\t\t}\n\t)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_unref(QField), {\n id: props.id,\n label: props.label,\n required: props.required,\n ref_key: \"triggerEl\",\n ref: triggerEl,\n role: \"combobox\",\n tabindex: \"0\",\n class: _normalizeClass([\n\t\t\t'q-select',\n\t\t\t{\n\t\t\t\t'q-select--readonly': props.readonly,\n\t\t\t\t'q-select--disabled': props.disabled,\n\t\t\t\t'q-select--expanded': open.value\n\t\t\t},\n\t\t\t..._unref(attrs).class\n\t\t]),\n readonly: props.readonly,\n disabled: props.disabled,\n \"aria-expanded\": open.value,\n \"aria-haspopup\": \"listbox\",\n size: props.size,\n onClick: onClick,\n onKeydown: _withModifiers(onKeydown, [\"stop\"])\n }, _createSlots({\n append: _withCtx(() => [\n (canClear.value && value.value)\n ? (_openBlock(), _createBlock(_unref(QIcon), _mergeProps({ key: 0 }, props.icons.clear, {\n class: \"q-select__clear\",\n onClick: _withModifiers(clear, [\"stop\",\"prevent\"])\n }), null, 16, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n (!props.readonly && !props.disabled)\n ? (_openBlock(), _createBlock(_unref(QIcon), _mergeProps({ key: 1 }, props.icons.chevron, { class: \"q-select__chevron\" }), null, 16))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n (value.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _toDisplayString(displayValue.value), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(_ctx.texts.placeholder), 1))\n ]),\n _: 2\n }, [\n (selectedItem.value?.icon)\n ? {\n name: \"prepend\",\n fn: _withCtx(() => [\n _createVNode(_unref(QIcon), _normalizeProps(_guardReactiveProps(selectedItem.value?.icon)), null, 16)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"id\", \"label\", \"required\", \"class\", \"readonly\", \"disabled\", \"aria-expanded\", \"size\", \"onKeydown\"]),\n (triggerEl.value?.fieldRef)\n ? (_openBlock(), _createBlock(_unref(QOverlay), {\n key: 0,\n \"model-value\": open.value,\n spy: \"\",\n trigger: \"manual\",\n placement: \"bottom\",\n width: \"anchor\",\n offset: 2,\n anchor: triggerEl.value?.fieldRef,\n onEnter: onOverlayEnter,\n onLeave: onOverlayLeave\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n ref_key: \"contentRef\",\n ref: contentRef,\n class: \"q-select__body\",\n tabindex: \"-1\",\n onFocusout: onListFocusOut,\n onKeydown: _withModifiers(onKeydown, [\"stop\"])\n }, [\n _renderSlot(_ctx.$slots, \"body.prepend\"),\n (props.loading)\n ? (_openBlock(), _createBlock(_unref(QSpinnerLoader), {\n key: 0,\n class: \"q-select__loader\",\n size: 24\n }))\n : (_openBlock(), _createBlock(_unref(QList), {\n key: 1,\n ref_key: \"listRef\",\n ref: listRef,\n class: \"q-select__items\",\n modelValue: value.value,\n \"onUpdate:modelValue\": [\n _cache[0] || (_cache[0] = ($event: any) => ((value).value = $event)),\n onSelect\n ],\n items: props.items,\n groups: _ctx.groups,\n \"item-label\": props.itemLabel,\n \"item-value\": props.itemValue\n }, null, 8, [\"modelValue\", \"items\", \"groups\", \"item-label\", \"item-value\"])),\n _renderSlot(_ctx.$slots, \"body.append\")\n ], 40, _hoisted_3)\n ]),\n _: 3\n }, 8, [\"model-value\", \"anchor\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","// Components\nimport _QSelect from './QSelect.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QSelect = setupPropsProxy(_QSelect) as typeof _QSelect\n\n// Export components\nexport { QSelect }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, unref as _unref, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = [\"required\", \"placeholder\", \"readonly\", \"disabled\", \"maxlength\"]\n\nimport { QField } from '@/components/QField'\n\n\t// Composables\n\timport { useUid } from '@/composables/uid'\n\n\t// Types\n\timport type { QFieldSize } from '@/components/QField'\n\n\t// Utils\n\timport { computed, ref, watch } from 'vue'\n\n\texport type QTextFieldProps = {\n\t\t/**\n\t\t * The value of the text field.\n\t\t */\n\t\tmodelValue?: string\n\n\t\t/**\n\t\t * The field unique identifier.\n\t\t */\n\t\tid?: string\n\n\t\t/**\n\t\t * The placeholder text for the text field.\n\t\t */\n\t\tplaceholder?: string\n\n\t\t/**\n\t\t * The label of the input.\n\t\t */\n\t\tlabel?: string\n\n\t\t/**\n\t\t * The size of the text field.\n\t\t */\n\t\tsize?: QFieldSize\n\n\t\t/**\n\t\t * If set, defines the maximum string length\n\t\t * that the user can enter into the text field.\n\t\t */\n\t\tmaxLength?: number\n\n\t\t/**\n\t\t * If set to true, the text field is read-only.\n\t\t */\n\t\treadonly?: boolean\n\n\t\t/**\n\t\t * If set to true, the text field is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\n\t\t/**\n\t\t * If set to true, an asterisk (*) is displayed\n\t\t * to indicate that the text field is required.\n\t\t */\n\t\trequired?: boolean\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QTextField',\n props: {\n modelValue: { default: '' },\n id: { default: () => useUid() },\n placeholder: { default: '' },\n label: { default: '' },\n size: { default: 'medium' },\n maxLength: { default: undefined },\n readonly: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n required: { type: Boolean, default: false }\n },\n emits: [\"update:modelValue\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\tconst _value = ref(props.modelValue)\n\n\tconst value = computed({\n\t\tget() {\n\t\t\treturn _value.value\n\t\t},\n\t\tset(newVal: string) {\n\t\t\t_value.value = newVal\n\t\t\temit('update:modelValue', newVal)\n\t\t}\n\t})\n\n\twatch(\n\t\t() => props.modelValue,\n\t\t(newVal) => (_value.value = newVal)\n\t)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(QField), {\n class: \"q-text-field\",\n id: _ctx.id,\n label: props.label,\n size: props.size,\n readonly: props.readonly,\n disabled: props.disabled,\n required: props.required\n }, {\n default: _withCtx(() => [\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((value).value = $event)),\n class: \"q-text-field__input\",\n type: \"text\",\n required: props.required,\n placeholder: props.placeholder,\n readonly: props.readonly,\n disabled: props.disabled,\n maxlength: props.maxLength\n }, null, 8, _hoisted_1), [\n [\n _vModelText,\n value.value,\n void 0,\n { lazy: true }\n ]\n ])\n ]),\n _: 1\n }, 8, [\"id\", \"label\", \"size\", \"readonly\", \"disabled\", \"required\"]))\n}\n}\n\n})","// Components\nimport _QTextField from './QTextField.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QTextField = setupPropsProxy(_QTextField) as typeof _QTextField\n\n// Export components\nexport { QTextField }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, unref as _unref, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = [\"innerHTML\"]\nconst _hoisted_2 = { key: 1 }\n\nimport { QOverlay } from '@/components/QOverlay'\n\n\t// Composables\n\timport { Appearance, Placement, Trigger } from '@/composables/overlay'\n\timport { Selector } from '@/utils/getElement'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n ...{\n\t\tinheritAttrs: false\n\t},\n __name: 'QTooltip',\n props: {\n modelValue: { type: Boolean },\n anchor: {},\n appearance: { default: 'inverted' },\n arrow: { type: Boolean, default: true },\n attach: { default: 'body' },\n delay: { default: 500 },\n disabled: { type: Boolean },\n html: { type: Boolean, default: true },\n placement: { default: 'right' },\n text: {},\n trigger: { default: 'hover' }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(QOverlay), {\n \"model-value\": props.modelValue,\n anchor: props.anchor,\n appearance: props.appearance,\n arrow: props.arrow,\n attach: props.attach,\n \"content-classes\": ['q-tooltip'],\n delay: props.delay,\n disabled: props.disabled,\n placement: props.placement,\n trigger: props.trigger\n }, {\n default: _withCtx(() => [\n (props.html)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n innerHTML: props.text\n }, null, 8, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(props.text), 1))\n ]),\n _: 1\n }, 8, [\"model-value\", \"anchor\", \"appearance\", \"arrow\", \"attach\", \"delay\", \"disabled\", \"placement\", \"trigger\"]))\n}\n}\n\n})","// Components\nimport _QTooltip from './QTooltip.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QTooltip = setupPropsProxy(_QTooltip) as typeof _QTooltip\n\n// Export components\nexport { QTooltip }\n","import { DirectiveBinding, ObjectDirective } from 'vue'\n\ninterface HTMLElementWithClickOutsideEvent extends HTMLElement {\n\tclickOutsideEvent: (event: Event) => void\n}\n\nexport const clickOutside: ObjectDirective<HTMLElementWithClickOutsideEvent> = {\n\tmounted(el: HTMLElementWithClickOutsideEvent, binding: DirectiveBinding) {\n\t\tel.clickOutsideEvent = function (event: Event) {\n\t\t\tconst target = event.target as Element\n\n\t\t\tif (!binding.arg) {\n\t\t\t\tif (!(el === target || el.contains(target))) {\n\t\t\t\t\tbinding.value(event, el)\n\t\t\t\t}\n\t\t\t} else if (!(el === target || el.contains(target) || target.closest(binding.arg))) {\n\t\t\t\tbinding.value(event, el)\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener('click', el.clickOutsideEvent)\n\t},\n\tunmounted(el) {\n\t\tdocument.removeEventListener('click', el.clickOutsideEvent)\n\t}\n}\n"],"names":["isEmpty","object","isObject","obj","merge","source","target","out","key","sourceProperty","targetProperty","DEFAULTS_SYMBOL","useDefaults","vm","getCurrentInstance","component","defaults","injectDefaults","computed","_a","provideDefaults","currentDefaults","providedDefaults","ref","newDefaults","provide","inject","defaultLightColorScheme","defaultDarkColorScheme","parseColor","color","r","g","b","lighten","rgb","amount","hsl","rgbToHsl","factor","hslToRgb","darken","colorToHex","max","min","h","s","l","d","q","p","hueToRgb","THEME_SYMBOL","useTheme","theme","installThemes","app","config","defaultTheme","defaultColorScheme","variable","hex","lightVariant","darkVariant","mergeColorSchemes","defaultThemeName","state","watch","name","activeTheme","generateRootStyle","userColorScheme","colors","themeNode","cssText","value","toProperty","createFramework","components","directives","globalDefaults","_hoisted_2","_createElementVNode","_sfc_main$h","_defineComponent","__props","props","loaderStyle","_ctx","_cache","_openBlock","_createElementBlock","_normalizeStyle","propIsDefined","vnode","prop","setupPropsProxy","setup","ctx","componentDefaults","_props","propValue","defaultValue","QSpinnerLoader","_QSpinnerLoader","_hoisted_1","_hoisted_3","QButton","emit","isDisabled","onClick","event","classes","variant","size","_normalizeClass","_withModifiers","_createVNode","_unref","_createCommentVNode","_Fragment","_createTextVNode","_toDisplayString","_renderSlot","QButtonGroup","toRef","QButtonToggle","_active","newVal","active","toggle","option","_createBlock","_withCtx","_renderList","$event","counter","useUid","_hoisted_4","_hoisted_5","_hoisted_6","QField","__expose","fieldRef","isRequired","_mergeProps","_sfc_main$c","QIconSvg","QIconFont","QIconImg","_resolveDynamicComponent","_sfc_main$b","libraryVariant","iconClass","iconStyle","_sfc_main$a","cache","InlineSvg","defineComponent","ctn","createElement","cprops","attrs","a","svgEl","setTitle","src","makePromiseState","svg","err","url","response","text","newValue","title","titleTags","titleEl","promise","isPending","result","v","e","_sfc_main$9","QIcon","_QIcon","_QIconFont","_QIconImg","_QIconSvg","QLineLoader","_sfc_main$7","listTag","groups","listRef","onItemSelect","onFocus","targetIdx","item","focusItem","onKeyDown","focus","direction","getAdjacentItemIdx","itemIdx","getFocusableChildren","nodes","getActiveItemIndex","items","idx","getGroupItems","group","QListItemGroup","QListItem","DEFAULT_ICONS","_sfc_main$6","onSelect","_normalizeProps","_sfc_main$5","id","QList","_QList","_QListItem","_QListItemGroup","computePosition","anchor","overlay","tentativePlacement","width","anchorPosition","left","top","overlayPosition","overlayWidth","overlayHeight","placement","canReposition","getOptimalFallbackPosition","position","to","xOK","yOK","isHorizontalPositionValid","isVerticalPositionValid","current","fallbackOrder","getElement","selector","QOverlay","reactive","visible","overlayProps","xOffset","yOffset","reposition","timeoutId","show","_delay","hide","animationTimeoutId","onLeave","observer","addTargetListeners","nextTick","addRepositionListeners","removeRepositionListeners","autoUpdateTimeoutId","autoUpdate","init","destroy","onBeforeUnmount","onMounted","isVisible","_Teleport","_Transition","QPopover","useAttrs","_attrs","_useAttrs","DEFAULT_TEXTS","QSelect","open","typed","triggerEl","contentRef","selectedItem","displayValue","canClear","clear","onListFocusOut","_c","_b","onKeydown","i","onOverlayEnter","focusList","onOverlayLeave","focusMainInput","_createSlots","_guardReactiveProps","QTextField","_value","_withDirectives","_vModelText","QTooltip","clickOutside","el","binding"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui.js","sources":["../src/utils/isEmpty.ts","../src/utils/isObject.ts","../src/utils/merge.ts","../src/composables/defaults.ts","../src/templates/theme.ts","../src/utils/color.ts","../src/composables/theme.ts","../src/framework.ts","../src/components/QSpinnerLoader/QSpinnerLoader.vue?vue&type=script&setup=true&lang.ts","../src/utils/setupPropsProxy.ts","../src/components/QSpinnerLoader/index.ts","../src/components/QButton/QButton.vue?vue&type=script&setup=true&lang.ts","../src/components/QButton/index.ts","../src/components/QButtonGroup/index.ts","../src/components/QButtonGroup/QButtonGroup.vue?vue&type=script&setup=true&lang.ts","../src/components/QButtonToggle/index.ts","../src/components/QButtonToggle/QButtonToggle.vue?vue&type=script&setup=true&lang.ts","../src/components/QIcon/QIcon.vue?vue&type=script&setup=true&lang.ts","../src/components/QIcon/QIconFont.vue?vue&type=script&setup=true&lang.ts","../src/components/QIcon/QIconImg.vue?vue&type=script&setup=true&lang.ts","../src/components/QIcon/InlineSvg.js","../src/components/QIcon/QIconSvg.vue?vue&type=script&setup=true&lang.ts","../src/components/QIcon/index.ts","../src/components/QList/QList.vue?vue&type=script&setup=true&lang.ts","../src/composables/uid.ts","../src/components/QList/QListItem.vue?vue&type=script&setup=true&lang.ts","../src/components/QList/QListItemGroup.vue?vue&type=script&setup=true&lang.ts","../src/components/QList/index.ts","../src/composables/overlay.ts","../src/utils/getElement.ts","../src/components/QOverlay/QOverlay.vue?vue&type=script&setup=true&lang.ts","../src/components/QOverlay/index.ts","../src/components/QField/QField.vue?vue&type=script&setup=true&lang.ts","../src/components/QField/index.ts","../src/components/QTextField/QTextField.vue?vue&type=script&setup=true&lang.ts","../src/components/QTextField/index.ts","../src/composables/attrs.ts","../src/components/QCombobox/QCombobox.vue?vue&type=script&setup=true&lang.ts","../src/components/QCombobox/index.ts","../src/components/QInputGroup/QInputGroup.vue?vue&type=script&setup=true&lang.ts","../src/components/QInputGroup/index.ts","../src/components/QLineLoader/index.ts","../src/components/QPopover/QPopover.vue?vue&type=script&setup=true&lang.ts","../src/components/QPopover/index.ts","../src/components/QSelect/QSelect.vue?vue&type=script&setup=true&lang.ts","../src/components/QSelect/index.ts","../src/components/QTooltip/QTooltip.vue?vue&type=script&setup=true&lang.ts","../src/components/QTooltip/index.ts","../src/directives/click-outside/index.ts"],"sourcesContent":["export function isEmpty(object: unknown): boolean {\n\t// Check if the object is null or undefined\n\tif (object === null || object === undefined) {\n\t\treturn true\n\t}\n\n\t// Check if the object is a string or an array and if it is empty\n\tif (typeof object === 'string' || Array.isArray(object)) {\n\t\treturn object.length === 0\n\t}\n\n\t// Check if the object is an object and if it has no own properties\n\tif (typeof object === 'object') {\n\t\treturn Object.keys(object as Record<string, unknown>).length === 0\n\t}\n\n\t// If the object is not null, a string, an array, or an object, it's not empty\n\treturn false\n}\n","export function isObject(obj: unknown): obj is object {\n\treturn obj !== null && typeof obj === 'object' && !Array.isArray(obj)\n}\n","import { isObject } from './isObject'\n\nexport function merge(source: Record<string, unknown> = {}, target: Record<string, unknown> = {}) {\n\tconst out: Record<string, unknown> = {}\n\n\tfor (const key in source) {\n\t\tout[key] = source[key]\n\t}\n\n\tfor (const key in target) {\n\t\tconst sourceProperty = source[key]\n\t\tconst targetProperty = target[key]\n\n\t\t// Only continue deep merging if\n\t\t// both properties are objects\n\t\tif (isObject(sourceProperty) && isObject(targetProperty)) {\n\t\t\tout[key] = merge(\n\t\t\t\tsourceProperty as Record<string, unknown>,\n\t\t\t\ttargetProperty as Record<string, unknown>\n\t\t\t)\n\n\t\t\tcontinue\n\t\t}\n\n\t\tout[key] = targetProperty\n\t}\n\n\treturn out\n}\n","// Utils\nimport { isEmpty } from '@/utils/isEmpty'\nimport { merge } from '@/utils/merge'\nimport { ComputedRef, computed, getCurrentInstance, inject, provide, ref } from 'vue'\n\nexport const DEFAULTS_SYMBOL = 'q-defaults'\n\nexport type Defaults = Record<string | symbol, ComponentDefaults>\n\nexport type ComponentDefaults = Record<string | symbol, unknown>\n\nexport function useDefaults(): ComputedRef<ComponentDefaults | undefined> {\n\tconst vm = getCurrentInstance()\n\n\tif (!vm)\n\t\tthrow new Error('[Quidgest UI] useDefaults must be called from inside a setup function')\n\n\tconst component = vm.type.name ?? vm.type.__name\n\n\tif (!component) throw new Error('[Quidgest UI] Could not determine component name')\n\n\tconst defaults = injectDefaults()\n\treturn computed(() => defaults.value?.[component])\n}\n\n/**\n * Function to provide or update default values using the Vue.js `provide` function.\n * It takes a set of default values, merges them with the existing defaults (if any),\n * and then provides the merged defaults using the specified symbol.\n *\n * @param {Defaults} defaults - The default values to be provided or updated.\n */\nexport function provideDefaults(defaults: Defaults): void {\n\tif (isEmpty(defaults)) return\n\n\tconst currentDefaults = injectDefaults()\n\tconst providedDefaults = ref(defaults)\n\n\tconst newDefaults = computed(() => {\n\t\tif (isEmpty(providedDefaults.value)) return currentDefaults.value\n\t\treturn merge(currentDefaults.value, providedDefaults.value)\n\t})\n\n\tprovide(DEFAULTS_SYMBOL, newDefaults)\n}\n\n/**\n * Function to inject default values using the Vue.js `inject` function.\n * It retrieves the default values from the specified symbol and ensures\n * that the returned value is of type `ComputedRef<Defaults>`.\n *\n * @throws {Error} Throws an error if the defaults instance is not found.\n *\n * @returns {ComputedRef<Defaults>} A computed reference to the default values.\n */\nexport function injectDefaults(): ComputedRef<Defaults> {\n\tconst defaults = inject(DEFAULTS_SYMBOL, undefined) as ComputedRef<Defaults> | undefined\n\n\tif (!defaults) throw new Error('[Quidgest UI] Could not find defaults instance')\n\n\treturn defaults\n}\n","import { ColorScheme } from '@/utils/color'\n\nexport const defaultLightColorScheme: ColorScheme = {\n\tprimary: '#00a1f8',\n\tprimaryLight: '#e5f6ff',\n\tprimaryDark: '#0079ba',\n\tsecondary: '#11294d',\n\tsecondaryLight: '#707f94',\n\tsecondaryDark: '#040a13',\n\thighlight: '#DF640A',\n\tbackground: '#fff',\n\tcontainer: '#fff',\n\tinfo: '#17a2b8',\n\tinfoLight: '#bceff7',\n\tinfoDark: '#11798a',\n\tsuccess: '#28a745',\n\tsuccessLight: '#c2f0cd',\n\tsuccessDark: '#1e7d34',\n\twarning: '#ffa900',\n\twarningLight: '#ffeabf',\n\twarningDark: '#bf7f00',\n\tdanger: '#b71c1c',\n\tdangerLight: '#f5bebe',\n\tdangerDark: '#891515',\n\tonBackground: '#1e2436',\n\tonPrimary: '#fff',\n\tonSecondary: '#fff',\n\tonHighlight: '#fff',\n\tonSuccess: '#fff',\n\tonWarning: '#fff',\n\tonDanger: '#fff',\n\tonInfo: '#fff'\n}\n\nexport const defaultDarkColorScheme: ColorScheme = {\n\tprimary: '#018BD2',\n\tprimaryLight: '#cce7f6',\n\tprimaryDark: '#006fac',\n\tsecondary: '#11294d',\n\tsecondaryLight: '#707f94',\n\tsecondaryDark: '#040a13',\n\thighlight: '#FFAD54',\n\tbackground: '#1e2436',\n\tcontainer: '#21323d',\n\tinfo: '#3DB6D1',\n\tinfoLight: '#5aa2bc',\n\tinfoDark: '#0c616a',\n\tsuccess: '#00C781',\n\tsuccessLight: '#6bae78',\n\tsuccessDark: '#0f3b16',\n\twarning: '#FFD860',\n\twarningLight: '#ffd07a',\n\twarningDark: '#cc8000',\n\tdanger: '#FC4B6C',\n\tdangerLight: '#FF7A88',\n\tdangerDark: '#B21929',\n\tonBackground: '#fff',\n\tonPrimary: '#fff',\n\tonSecondary: '#fff',\n\tonHighlight: '#fff',\n\tonSuccess: '#fff',\n\tonWarning: '#fff',\n\tonDanger: '#fff',\n\tonInfo: '#fff'\n}\n","export type ColorScheme = {\n\t// Brand\n\tprimary: string\n\tprimaryLight: string\n\tprimaryDark: string\n\tonPrimary: string\n\n\tsecondary: string\n\tsecondaryLight: string\n\tsecondaryDark: string\n\tonSecondary: string\n\n\thighlight: string\n\tonHighlight: string\n\n\t// Surface\n\tbackground: string\n\tonBackground: string\n\n\tcontainer: string\n\n\t// Semantic\n\tinfo: string\n\tinfoLight: string\n\tinfoDark: string\n\tonInfo: string\n\n\tsuccess: string\n\tsuccessLight: string\n\tsuccessDark: string\n\tonSuccess: string\n\n\twarning: string\n\twarningLight: string\n\twarningDark: string\n\tonWarning: string\n\n\tdanger: string\n\tdangerLight: string\n\tdangerDark: string\n\tonDanger: string\n}\n\n/**\n * Represents a color in RGB space.\n */\nexport type RGB = {\n\tr: number\n\tg: number\n\tb: number\n}\n\n/**\n * Represents a color in HSL space.\n */\nexport type HSL = {\n\th: number\n\ts: number\n\tl: number\n}\n\n/**\n * Parses a color from a hex string.\n * @param color A hex string representing the color, e.g., \"#aabbcc\".\n * @returns A `RGB` object representing the parsed color.\n */\nexport function parseColor(color: string): RGB {\n\tif (!/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/.test(color)) {\n\t\tthrow new Error('Invalid color format')\n\t}\n\n\t// Support short format (e.g., #abc)\n\tif (color.length === 4) {\n\t\tcolor = '#' + color[1] + color[1] + color[2] + color[2] + color[3] + color[3]\n\t}\n\n\tconst r = parseInt(color.slice(1, 3), 16)\n\tconst g = parseInt(color.slice(3, 5), 16)\n\tconst b = parseInt(color.slice(5, 7), 16)\n\n\treturn { r, g, b }\n}\n\n/**\n * Lightens a color by a specified amount.\n * @param rgb The color to lighten.\n * @param amount The amount to lighten the color by, in the range [0, 100].\n * @returns The lightened color.\n */\nexport function lighten(rgb: RGB, amount: number): RGB {\n\t// Check if the amount is within the required range\n\tif (amount < 0 || amount > 100) {\n\t\tthrow new Error('Amount must be in the range [0, 100]')\n\t} else if (amount === 0) {\n\t\treturn rgb\n\t}\n\n\tconst hsl = rgbToHsl(rgb)\n\tconst factor = amount / 100\n\thsl.l = hsl.l + factor * (100 - hsl.l)\n\treturn hslToRgb(hsl)\n}\n\n/**\n * Darkens a color by a specified amount.\n * @param rgb The color to darken.\n * @param amount The amount to darken the color by, in the range [0, 100].\n * @returns The darkened color.\n */\nexport function darken(rgb: RGB, amount: number): RGB {\n\t// Check if the amount is within the required range\n\tif (amount < 0 || amount > 100) {\n\t\tthrow new Error('Amount must be in the range [0, 100]')\n\t} else if (amount === 0) {\n\t\treturn rgb\n\t}\n\n\tconst hsl = rgbToHsl(rgb)\n\tconst factor = amount / 100\n\thsl.l = hsl.l - factor * hsl.l\n\treturn hslToRgb(hsl)\n}\n\n/**\n * Converts a `Color` object to a hex string.\n * @param rgb The color to convert.\n * @returns A hex string representing the color.\n */\nexport function colorToHex(rgb: RGB): string {\n\tconst r = rgb.r.toString(16).padStart(2, '0')\n\tconst g = rgb.g.toString(16).padStart(2, '0')\n\tconst b = rgb.b.toString(16).padStart(2, '0')\n\n\treturn `#${r}${g}${b}`\n}\n\n/**\n * Converts a color from RGB to HSL space.\n * @param color The color to convert.\n * @returns An object representing the color in HSL space.\n */\nfunction rgbToHsl(rgb: RGB): HSL {\n\tconst r = rgb.r / 255\n\tconst g = rgb.g / 255\n\tconst b = rgb.b / 255\n\n\tconst max = Math.max(r, g, b)\n\tconst min = Math.min(r, g, b)\n\tlet h = 0,\n\t\ts\n\tconst l = (max + min) / 2\n\n\tif (max === min) {\n\t\th = s = 0 // achromatic\n\t} else {\n\t\tconst d = max - min\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n\n\t\tswitch (max) {\n\t\t\tcase r:\n\t\t\t\th = (g - b) / d + (g < b ? 6 : 0)\n\t\t\t\tbreak\n\t\t\tcase g:\n\t\t\t\th = (b - r) / d + 2\n\t\t\t\tbreak\n\t\t\tcase b:\n\t\t\t\th = (r - g) / d + 4\n\t\t\t\tbreak\n\t\t}\n\n\t\th /= 6\n\t}\n\n\treturn {\n\t\th: Math.round(h * 360),\n\t\ts: Math.round(s * 100),\n\t\tl: Math.round(l * 100)\n\t}\n}\n\n/**\n * Converts a color from HSL to RGB space.\n * @param h The hue component of the color, in the range [0, 1].\n * @param s The saturation component of the color, in the range [0, 1].\n * @param l The lightness component of the color, in the range [0, 1].\n * @returns A `RGB` object representing the color in RGB space.\n */\nfunction hslToRgb(hsl: HSL): RGB {\n\tconst h = hsl.h / 360\n\tconst s = hsl.s / 100\n\tconst l = hsl.l / 100\n\n\tlet r, g, b\n\n\tif (s === 0) {\n\t\tr = g = b = l // achromatic\n\t} else {\n\t\tconst q = l < 0.5 ? l * (1 + s) : l + s - l * s\n\t\tconst p = 2 * l - q\n\n\t\tr = hueToRgb(p, q, h + 1 / 3)\n\t\tg = hueToRgb(p, q, h)\n\t\tb = hueToRgb(p, q, h - 1 / 3)\n\t}\n\n\treturn {\n\t\tr: Math.round(r * 255),\n\t\tg: Math.round(g * 255),\n\t\tb: Math.round(b * 255)\n\t}\n}\n\n/**\n * Helper function to convert a hue value to a corresponding RGB value.\n * @param p The first RGB component.\n * @param q The second RGB component.\n * @param t The hue value.\n * @returns The corresponding RGB value.\n */\nfunction hueToRgb(p: number, q: number, t: number): number {\n\tif (t < 0) t += 1\n\tif (t > 1) t -= 1\n\tif (t < 1 / 6) return p + (q - p) * 6 * t\n\tif (t < 1 / 2) return q\n\tif (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\n\treturn p\n}\n","// Templates\nimport { defaultDarkColorScheme, defaultLightColorScheme } from '@/templates/theme'\n\n// Types\nimport type { ColorScheme, RGB } from '@/utils/color'\nimport type { App, Ref } from 'vue'\n\n// Utils\nimport { colorToHex, darken, lighten, parseColor } from '@/utils/color'\nimport { inject, ref, watch } from 'vue'\n\nexport const THEME_SYMBOL = 'q-theme'\n\nexport type ThemeMode = 'light' | 'dark'\n\nexport type AppThemes = {\n\tdefaultTheme: string\n\tthemes: Array<{\n\t\tname: string\n\t\tmode: ThemeMode\n\t\tcolors?: Partial<ColorScheme>\n\t}>\n}\n\nexport type ThemeDefinition = {\n\tname: string\n\tmode: ThemeMode\n\tcolors: ColorScheme\n}\n\nexport type ThemeConfiguration = {\n\tactiveTheme: string\n\tthemes: ThemeDefinition[]\n}\n\nexport function useTheme(): Ref<ThemeConfiguration> {\n\tconst theme: Ref<ThemeConfiguration> | undefined = inject(THEME_SYMBOL)\n\n\tif (!theme) throw new Error('[Quidgest UI] Could not find theme instance')\n\n\treturn theme\n}\n\nexport function installThemes(app: App, config?: AppThemes) {\n\tlet defaultTheme: ThemeDefinition | null = null\n\n\tif (!config) {\n\t\t// No theme definition was provided\n\t\t// Configure default light theme\n\t\tconst defaultThemeName = 'default'\n\n\t\tdefaultTheme = {\n\t\t\tname: defaultThemeName,\n\t\t\tmode: 'light',\n\t\t\tcolors: defaultLightColorScheme\n\t\t}\n\n\t\tconfig = {\n\t\t\tdefaultTheme: defaultThemeName,\n\t\t\tthemes: [defaultTheme]\n\t\t}\n\t} else {\n\t\tfor (const theme of config.themes) {\n\t\t\t// Pick the corresponding default color scheme\n\t\t\tconst defaultColorScheme =\n\t\t\t\ttheme.mode === 'light' ? defaultLightColorScheme : defaultDarkColorScheme\n\n\t\t\tif (theme.colors) {\n\t\t\t\tlet variable: keyof ColorScheme\n\n\t\t\t\tfor (variable in theme.colors) {\n\t\t\t\t\tconst hex = theme.colors[variable]\n\n\t\t\t\t\tif (\n\t\t\t\t\t\thex &&\n\t\t\t\t\t\t!variable.startsWith('on') &&\n\t\t\t\t\t\t!variable.endsWith('Light') &&\n\t\t\t\t\t\t!variable.endsWith('Dark')\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst color: RGB = parseColor(hex)\n\t\t\t\t\t\tconst lightVariant = `${variable}Light` as keyof ColorScheme\n\t\t\t\t\t\tconst darkVariant = `${variable}Dark` as keyof ColorScheme\n\t\t\t\t\t\t// TODO: compute contrast color\n\n\t\t\t\t\t\tif (!(lightVariant in theme.colors))\n\t\t\t\t\t\t\ttheme.colors[lightVariant] = colorToHex(lighten(color, 85))\n\n\t\t\t\t\t\tif (!(darkVariant in theme.colors))\n\t\t\t\t\t\t\ttheme.colors[darkVariant] = colorToHex(darken(color, 25))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Theme color scheme is potentially partial\n\t\t\t// Merge with default appropriate color scheme\n\t\t\ttheme.colors = mergeColorSchemes(defaultColorScheme, theme.colors)\n\n\t\t\tif (theme.name === config.defaultTheme) defaultTheme = theme as ThemeDefinition\n\t\t}\n\t}\n\n\t// At this point, if the default theme is null,\n\t// there's got to be an issue with the config that was provided\n\tif (defaultTheme) {\n\t\tconst state: Ref<ThemeConfiguration> = ref({\n\t\t\tactiveTheme: defaultTheme.name,\n\t\t\tthemes: config.themes as ThemeDefinition[]\n\t\t})\n\n\t\t// Automatically regenerate root style\n\t\t// on active theme change\n\t\twatch(\n\t\t\t() => state.value.activeTheme,\n\t\t\t(name) => {\n\t\t\t\tconst activeTheme = state.value.themes.find((theme) => theme.name === name)\n\t\t\t\tif (activeTheme) generateRootStyle(activeTheme.colors)\n\t\t\t},\n\t\t\t{ immediate: true }\n\t\t)\n\n\t\t// Provide theme configuration\n\t\tapp.provide(THEME_SYMBOL, state)\n\t}\n}\n\nexport function mergeColorSchemes(\n\tdefaultColorScheme: ColorScheme,\n\tuserColorScheme: Partial<ColorScheme> = {}\n) {\n\treturn { ...defaultColorScheme, ...userColorScheme }\n}\n\nexport function generateRootStyle(colors: Partial<ColorScheme>) {\n\tlet themeNode: HTMLStyleElement | null = document.getElementById(\n\t\tTHEME_SYMBOL\n\t) as HTMLStyleElement\n\n\tif (!themeNode) {\n\t\tthemeNode = document.createElement('style')\n\t\tthemeNode.type = 'text/css'\n\t\tthemeNode.id = THEME_SYMBOL\n\t\tdocument.head.appendChild(themeNode)\n\t}\n\n\t// Generate theme dynamic CSS\n\tlet cssText = ':root {\\n'\n\tlet color: keyof ColorScheme\n\tfor (color in colors) {\n\t\tconst value = colors[color]\n\n\t\tif (value) {\n\t\t\t// Generate HEX\n\t\t\tcssText += ` ${toProperty(color)}: ${value};\\n`\n\n\t\t\t// Generate RGB, useful to combine with alpha channel\n\t\t\tconst rgb = parseColor(value)\n\t\t\tcssText += ` ${toProperty(color)}-rgb: ${rgb.r} ${rgb.g} ${rgb.b};\\n`\n\t\t}\n\t}\n\tcssText += '}'\n\n\t// Set the CSS content for the style element\n\tthemeNode.textContent = cssText\n}\n\nexport function toProperty(color: string) {\n\tif (!color) return ''\n\n\treturn `--q-theme-${color\n\t\t.replace(/([A-Z])/g, '-$1')\n\t\t.replace(/^-/, '')\n\t\t.toLowerCase()}`\n}\n","// Composables\nimport { DEFAULTS_SYMBOL, Defaults } from '@/composables/defaults'\nimport { AppThemes, installThemes } from '@/composables/theme'\n\n// Types\nimport type { App, Component, Directive, Plugin } from 'vue'\n\n// Utils\nimport { ref } from 'vue'\n\nexport type FrameworkConfig = {\n\tcomponents?: Record<string, Component>\n\tdirectives?: Record<string, Directive>\n\tthemes?: AppThemes\n\tdefaults?: Defaults\n}\n\nexport function createFramework(config: FrameworkConfig = {}): Plugin {\n\tconst install = (app: App) => {\n\t\t// Install components\n\t\tconst components = config.components || {}\n\t\tfor (const name in components) {\n\t\t\tapp.component(name, components[name])\n\t\t}\n\n\t\t// Install directives\n\t\tconst directives = config.directives || {}\n\t\tfor (const name in directives) {\n\t\t\tapp.directive(name, directives[name])\n\t\t}\n\n\t\t// Setup global defaults\n\t\tconst globalDefaults = config.defaults || {}\n\t\tapp.provide(DEFAULTS_SYMBOL, ref(globalDefaults))\n\n\t\t// Install themes\n\t\tinstallThemes(app, config.themes)\n\t}\n\n\treturn { install }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = /*#__PURE__*/_createElementVNode(\"svg\", { viewBox: \"25 25 50 50\" }, [\n /*#__PURE__*/_createElementVNode(\"circle\", {\n class: \"path\",\n cx: \"50\",\n cy: \"50\",\n r: \"20\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"5\",\n \"stroke-miterlimit\": \"10\"\n })\n], -1)\nconst _hoisted_2 = [\n _hoisted_1\n]\n\nimport { computed } from 'vue'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QSpinnerLoader',\n props: {\n size: { default: 48 }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Utils\n\t\n\n\tconst loaderStyle = computed(() => {\n\t\treturn {\n\t\t\t'font-size': props.size !== 48 ? `${props.size}px` : undefined\n\t\t}\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"q-spinner-loader\",\n style: _normalizeStyle(loaderStyle.value)\n }, _hoisted_2, 4))\n}\n}\n\n})","// Composables\nimport { useDefaults } from '@/composables/defaults'\n\n// Types\nimport type { SetupContext, VNode } from 'vue'\n\n// Utils\nimport { getCurrentInstance } from 'vue'\nimport { isEmpty } from './isEmpty'\n\nexport function propIsDefined(vnode: VNode, prop: string) {\n\treturn typeof vnode.props?.[prop] !== 'undefined'\n}\n\ntype LooseRequired<T> = {\n\t[P in keyof (T & Required<T>)]: T[P]\n}\n\ntype Component<Props> = {\n\tsetup?: (\n\t\tthis: void,\n\t\tprops: LooseRequired<Readonly<Props>>,\n\t\tctx: SetupContext<unknown>\n\t) => unknown\n}\n\nexport function setupPropsProxy<Props>(component: Component<Props>): Component<Props> {\n\tconst setup = component.setup\n\n\tif (!setup) return component\n\n\tcomponent.setup = (props, ctx) => {\n\t\tconst componentDefaults = useDefaults()\n\n\t\tif (isEmpty(componentDefaults.value)) return setup(props, ctx)\n\n\t\tconst vm = getCurrentInstance()\n\n\t\tif (vm === null) return setup(props, ctx)\n\n\t\tconst _props = new Proxy(props, {\n\t\t\tget(target, prop) {\n\t\t\t\tconst propValue = Reflect.get(target, prop)\n\t\t\t\tconst defaultValue = componentDefaults.value?.[prop]\n\n\t\t\t\tif (typeof prop === 'string' && !propIsDefined(vm.vnode, prop))\n\t\t\t\t\treturn defaultValue ?? propValue\n\t\t\t\treturn propValue\n\t\t\t}\n\t\t})\n\n\t\treturn setup(_props, ctx)\n\t}\n\n\treturn component\n}\n","// Components\nimport _QSpinnerLoader from './QSpinnerLoader.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QSpinnerLoader = setupPropsProxy(_QSpinnerLoader) as typeof _QSpinnerLoader\n\n// Export components\nexport { QSpinnerLoader }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, Fragment as _Fragment, renderSlot as _renderSlot, createElementVNode as _createElementVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = [\"disabled\", \"onClick\"]\nconst _hoisted_2 = {\n key: 0,\n class: \"q-btn__spinner\"\n}\nconst _hoisted_3 = { class: \"q-btn__content\" }\n\nimport { QSpinnerLoader } from '@/components/QSpinnerLoader'\n\n\t// Utils\n\timport { computed } from 'vue'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QButton',\n props: {\n active: { type: Boolean },\n bStyle: { default: 'secondary' },\n label: { default: '' },\n disabled: { type: Boolean },\n iconOnRight: { type: Boolean },\n borderless: { type: Boolean },\n elevated: { type: Boolean },\n block: { type: Boolean },\n loading: { type: Boolean },\n size: { default: 'regular' }\n },\n emits: [\"click\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\tconst isDisabled = computed(() => props.disabled || props.loading)\n\n\tfunction onClick(event: Event) {\n\t\tif (!isDisabled.value) emit('click', event)\n\t}\n\n\tconst classes = computed(() => {\n\t\tconst size = props.size !== 'regular' ? `q-btn--${props.size}` : undefined\n\n\t\treturn [\n\t\t\t'q-btn',\n\t\t\t`q-btn--${props.bStyle}`,\n\t\t\tsize,\n\t\t\t{\n\t\t\t\t'q-btn--active': props.active,\n\t\t\t\t'q-btn--borderless': props.borderless,\n\t\t\t\t'q-btn--elevated': props.elevated,\n\t\t\t\t'q-btn--block': props.block,\n\t\t\t\t'q-btn--loading': props.loading\n\t\t\t}\n\t\t]\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n type: \"button\",\n class: _normalizeClass(classes.value),\n disabled: isDisabled.value,\n onClick: _withModifiers(onClick, [\"stop\",\"prevent\"])\n }, [\n (_ctx.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createVNode(_unref(QSpinnerLoader), { size: 23 })\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"span\", _hoisted_3, [\n (_ctx.iconOnRight)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createTextVNode(_toDisplayString(props.label), 1)\n ], 64))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\"),\n (!_ctx.iconOnRight)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createTextVNode(_toDisplayString(props.label), 1)\n ], 64))\n : _createCommentVNode(\"\", true)\n ])\n ], 10, _hoisted_1))\n}\n}\n\n})","// Components\nimport _QButton from './QButton.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QButton = setupPropsProxy(_QButton) as typeof _QButton\n\n// Export components\nexport { QButton }\n","// Components\nimport _QButtonGroup from './QButtonGroup.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QButtonGroup = setupPropsProxy(_QButtonGroup) as typeof _QButtonGroup\n\n// Export components\nexport { QButtonGroup }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed, toRef } from 'vue'\n\timport { provideDefaults } from '@/composables/defaults'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QButtonGroup',\n props: {\n bStyle: {},\n disabled: { type: Boolean },\n borderless: { type: Boolean },\n elevated: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Utils\n\t\n\n\tprovideDefaults({\n\t\tQButton: {\n\t\t\tbStyle: toRef(props, 'bStyle'),\n\t\t\tdisabled: toRef(props, 'disabled'),\n\t\t\tborderless: toRef(props, 'borderless'),\n\t\t\televated: false\n\t\t}\n\t})\n\n\tconst classes = computed(() => {\n\t\treturn [\n\t\t\t'q-btn-group',\n\t\t\t{\n\t\t\t\t'q-btn-group--elevated': props.elevated\n\t\t\t}\n\t\t]\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass(classes.value)\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 2))\n}\n}\n\n})","// Components\nimport _QButtonToggle from './QButtonToggle.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QButtonToggle = setupPropsProxy(_QButtonToggle) as typeof _QButtonToggle\n\n// Export components\nexport { QButtonToggle }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, unref as _unref, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nimport { QButton } from '@/components/QButton'\n\timport { QButtonGroup } from '@/components/QButtonGroup'\n\n\t// Utils\n\timport { Ref, WritableComputedRef, computed, ref, watch } from 'vue'\n\n\texport type QButtonToggleOption = {\n\t\tkey: string\n\t\ttitle?: string\n\t\tlabel?: string\n\t}\n\n\t// Keep a local value for active to make prop \"modelValue\" optional\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QButtonToggle',\n props: {\n modelValue: {},\n options: {},\n disabled: { type: Boolean },\n borderless: { type: Boolean },\n elevated: { type: Boolean },\n mandatory: { type: Boolean }\n },\n emits: [\"update:modelValue\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\tconst _active: Ref<string | undefined> = ref(props.modelValue)\n\twatch(\n\t\t() => props.modelValue,\n\t\t(newVal) => (_active.value = newVal)\n\t)\n\n\tconst active: WritableComputedRef<string | undefined> = computed({\n\t\tget() {\n\t\t\treturn _active.value\n\t\t},\n\t\tset(newVal) {\n\t\t\t_active.value = newVal\n\t\t\temit('update:modelValue', newVal)\n\t\t}\n\t})\n\n\tfunction toggle(option: QButtonToggleOption) {\n\t\tif (active.value === option.key && !props.mandatory) active.value = undefined\n\t\telse active.value = option.key\n\t}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(QButtonGroup), {\n \"b-style\": \"secondary\",\n disabled: props.disabled,\n borderless: props.borderless,\n elevated: props.elevated\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(props.options, (option) => {\n return (_openBlock(), _createBlock(_unref(QButton), {\n key: option.key,\n title: option.title,\n label: option.label,\n active: active.value === option.key,\n onClick: () => toggle(option)\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, option.key)\n ]),\n _: 2\n }, 1032, [\"title\", \"label\", \"active\", \"onClick\"]))\n }), 128))\n ]),\n _: 3\n }, 8, [\"disabled\", \"borderless\", \"elevated\"]))\n}\n}\n\n})","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { QIconFont } from '.'\n\timport { QIconImg } from '.'\n\timport { QIconSvg } from '.'\n\n\t// Utils\n\timport { computed } from 'vue'\n\n\texport type Icon = {\n\t\t/**\n\t\t * The identifier of the icon.\n\t\t */\n\t\ticon: string\n\n\t\t/**\n\t\t * The type of resource.\n\t\t */\n\t\ttype?: 'svg' | 'font' | 'img'\n\n\t\t/**\n\t\t * The size of the icon, in pixels.\n\t\t */\n\t\tsize?: number\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QIcon',\n props: {\n icon: {},\n type: { default: 'svg' },\n size: { default: undefined }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\tconst component = computed(() => {\n\t\tswitch (props.type) {\n\t\t\tcase 'svg':\n\t\t\t\treturn QIconSvg\n\t\t\tcase 'font':\n\t\t\t\treturn QIconFont\n\t\t\tcase 'img':\n\t\t\t\treturn QIconImg\n\t\t\tdefault:\n\t\t\t\treturn undefined\n\t\t}\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_resolveDynamicComponent(component.value), {\n icon: props.icon,\n size: props.size\n }, null, 8, [\"icon\", \"size\"]))\n}\n}\n\n})","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nimport { computed } from 'vue'\n\n\texport type QIconFontProps = {\n\t\t/**\n\t\t * The classname containing the content of the font icon.\n\t\t */\n\t\ticon: string\n\n\t\t/**\n\t\t * The name of the icon library.\n\t\t */\n\t\tlibrary?: string\n\n\t\t/**\n\t\t * The icon variant.\n\t\t */\n\t\tvariant?: string\n\n\t\t/**\n\t\t * The size of the icon, in pixels.\n\t\t */\n\t\tsize?: number\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QIconFont',\n props: {\n icon: {},\n library: { default: '' },\n variant: { default: '' },\n size: { default: undefined }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Utils\n\t\n\n\tconst libraryVariant = computed(() => {\n\t\tif (props.variant) return `${props.library}-${props.variant}`\n\t\treturn props.library\n\t})\n\n\tconst iconClass = computed(() => {\n\t\tif (props.library && props.icon) return `${props.library}-${props.icon}`\n\t\treturn props.icon\n\t})\n\n\tconst iconStyle = computed(() => {\n\t\treturn {\n\t\t\t'font-size': props.size !== undefined ? `${props.size}px` : undefined\n\t\t}\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"i\", {\n class: _normalizeClass(['q-icon', 'q-icon__font', libraryVariant.value, iconClass.value]),\n style: _normalizeStyle(iconStyle.value)\n }, null, 6))\n}\n}\n\n})","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"src\"]\n\nimport { computed } from 'vue'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QIconImg',\n props: {\n icon: {},\n size: {}\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Utils\n\t\n\n\tconst iconStyle = computed(() => {\n\t\treturn {\n\t\t\t'font-size': props.size !== undefined ? `${props.size}px` : undefined\n\t\t}\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"img\", {\n src: props.icon,\n class: \"q-icon q-icon__img\",\n style: _normalizeStyle(iconStyle.value)\n }, null, 12, _hoisted_1))\n}\n}\n\n})","import { h as createElement, defineComponent } from 'vue'\n\n/** @type Record<string, PromiseWithState<Element>> */\nconst cache = {}\n\nexport default defineComponent({\n\tname: 'InlineSvg',\n\n\temits: ['loaded', 'unloaded', 'error'],\n\n\tinheritAttrs: false,\n\n\trender() {\n\t\tif (!this.svgElSource) return null\n\n\t\tconst ctn = this.getSvgContent(this.svgElSource)\n\t\tif (!ctn) return createElement('div', this.$attrs)\n\n\t\tconst cprops = {}\n\t\t// source attrs\n\t\tthis.copySvgAttrs(cprops, this.svgElSource)\n\t\t// transformed attributes\n\t\tthis.copySvgAttrs(cprops, ctn)\n\t\t// component attrs and listeners\n\t\tthis.copyComponentAttrs(cprops, this.$attrs)\n\t\t// content\n\t\tcprops.innerHTML = ctn.innerHTML\n\n\t\treturn createElement('svg', cprops)\n\t},\n\n\tprops: {\n\t\tsrc: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\n\t\tsymbol: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: ''\n\t\t},\n\n\t\ttransformSource: {\n\t\t\ttype: Function,\n\t\t\tdefault: undefined\n\t\t},\n\n\t\tkeepDuringLoading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t/** @type SVGElement */\n\t\t\tsvgElSource: null\n\t\t}\n\t},\n\n\tasync mounted() {\n\t\t// generate `svgElSource`\n\t\tawait this.getSource(this.src)\n\t},\n\n\tmethods: {\n\t\tcopySvgAttrs(target, source) {\n\t\t\tconst attrs = source.attributes\n\t\t\tif (attrs) for (const a of attrs) target[a.name] = a.value\n\t\t},\n\n\t\tcopyComponentAttrs(target, source) {\n\t\t\tfor (const [key, value] of Object.entries(source))\n\t\t\t\tif (value !== false && value !== null && value !== undefined) target[key] = value\n\t\t},\n\n\t\tgetSvgContent(svgEl) {\n\t\t\tif (this.symbol) {\n\t\t\t\tsvgEl = svgEl.getElementById(this.symbol)\n\t\t\t\tif (!svgEl) return null\n\t\t\t}\n\n\t\t\tif (this.transformSource) {\n\t\t\t\tsvgEl = svgEl.cloneNode(true)\n\t\t\t\tsvgEl = this.transformSource(svgEl)\n\t\t\t}\n\n\t\t\tif (this.title) {\n\t\t\t\tif (!this.transformSource) svgEl = svgEl.cloneNode(true)\n\t\t\t\tsetTitle(svgEl, this.title)\n\t\t\t}\n\n\t\t\treturn svgEl\n\t\t},\n\n\t\t/**\n\t\t * Get svgElSource\n\t\t * @param {string} src\n\t\t */\n\t\tasync getSource(src) {\n\t\t\ttry {\n\t\t\t\t// Fill cache by src with promise\n\t\t\t\tif (!cache[src]) {\n\t\t\t\t\t// Download\n\t\t\t\t\tcache[src] = makePromiseState(this.download(src))\n\t\t\t\t}\n\n\t\t\t\t// Notify svg is unloaded\n\t\t\t\tif (this.svgElSource && cache[src].getIsPending() && !this.keepDuringLoading) {\n\t\t\t\t\tthis.svgElSource = null\n\t\t\t\t\tthis.$emit('unloaded')\n\t\t\t\t}\n\n\t\t\t\t// Inline svg when cached promise resolves\n\t\t\t\tconst svg = await cache[src]\n\t\t\t\tthis.svgElSource = svg\n\t\t\t\t// Wait to render\n\t\t\t\tawait this.$nextTick()\n\t\t\t\t// Notify\n\t\t\t\tthis.$emit('loaded', this.$el)\n\t\t\t} catch (err) {\n\t\t\t\t// Notify svg is unloaded\n\t\t\t\tif (this.svgElSource) {\n\t\t\t\t\tthis.svgElSource = null\n\t\t\t\t\tthis.$emit('unloaded')\n\t\t\t\t}\n\n\t\t\t\t// Remove cached rejected promise so next image can try load again\n\t\t\t\tdelete cache[src]\n\t\t\t\tthis.$emit('error', err)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get the contents of the SVG\n\t\t * @param {string} url\n\t\t * @returns {PromiseWithState<Element>}\n\t\t */\n\t\tasync download(url) {\n\t\t\tconst response = await fetch(url)\n\t\t\tif (!response.ok) throw new Error('Error loading SVG')\n\n\t\t\tconst text = await response.text()\n\t\t\tconst parser = new DOMParser()\n\t\t\tconst result = parser.parseFromString(text, 'text/xml')\n\t\t\tconst svgEl = result.getElementsByTagName('svg')[0]\n\n\t\t\tif (!svgEl) throw new Error('Loaded file is not a valid SVG')\n\n\t\t\t// Uncomment the following line if you want to apply any transformation to the SVG element\n\t\t\t// svgEl = this.transformSource(svgEl)\n\t\t\treturn svgEl\n\t\t}\n\t},\n\n\twatch: {\n\t\tsrc(newValue) {\n\t\t\t// re-generate cached svg (`svgElSource`)\n\t\t\tthis.getSource(newValue)\n\t\t}\n\t}\n})\n\n/**\n * Create or edit the <title> element of a SVG\n * @param {SVGElement} svg\n * @param {string} title\n */\nfunction setTitle(svg, title) {\n\tconst titleTags = svg.getElementsByTagName('title')\n\tif (titleTags.length) {\n\t\t// overwrite existing title\n\t\ttitleTags[0].textContent = title\n\t} else {\n\t\t// create a title element if one doesn't already exist\n\t\tconst titleEl = document.createElementNS('http://www.w3.org/2000/svg', 'title')\n\t\ttitleEl.textContent = title\n\t\t// svg.prepend(titleEl);\n\t\tsvg.insertBefore(titleEl, svg.firstChild)\n\t}\n}\n\n/**\n * This function allow you to modify a JS Promise by adding some status properties.\n * @template {any} T\n * @param {Promise<T>|PromiseWithState<T>} promise\n * @return {PromiseWithState<T>}\n */\nfunction makePromiseState(promise) {\n\t// Don't modify any promise that has been already modified.\n\tif (promise.getIsPending) return promise\n\n\t// Set initial state\n\tlet isPending = true\n\n\t// Observe the promise, saving the fulfillment in a closure scope.\n\tconst result = promise.then(\n\t\t(v) => {\n\t\t\tisPending = false\n\t\t\treturn v\n\t\t},\n\t\t(e) => {\n\t\t\tisPending = false\n\t\t\tthrow e\n\t\t}\n\t)\n\n\tresult.getIsPending = () => isPending\n\n\treturn result\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nimport { computed } from 'vue'\n\timport InlineSvg from './InlineSvg.js'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QIconSvg',\n props: {\n icon: {},\n bundle: { default: '' },\n size: { default: undefined }\n },\n emits: [\"loaded\", \"unloaded\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Utils\n\t\n\n\t\n\n\tconst iconStyle = computed(() => {\n\t\treturn {\n\t\t\t'font-size': props.size !== undefined ? `${props.size}px` : undefined\n\t\t}\n\t})\n\n\tfunction onLoaded(event: Element) {\n\t\temit('loaded', event)\n\t}\n\n\tfunction onUnloaded() {\n\t\temit('unloaded')\n\t}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(InlineSvg), {\n class: \"q-icon q-icon__svg\",\n src: props.bundle,\n symbol: props.icon,\n style: _normalizeStyle(iconStyle.value),\n onLoaded: onLoaded,\n onUnloaded: onUnloaded\n }, null, 8, [\"src\", \"symbol\", \"style\"]))\n}\n}\n\n})","// Components\nimport _QIcon from './QIcon.vue'\nimport _QIconFont from './QIconFont.vue'\nimport _QIconImg from './QIconImg.vue'\nimport _QIconSvg from './QIconSvg.vue'\n\n// Types\nimport type { Icon } from './QIcon.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QIcon = setupPropsProxy(_QIcon) as typeof _QIcon\nconst QIconFont = setupPropsProxy(_QIconFont) as typeof _QIconFont\nconst QIconImg = setupPropsProxy(_QIconImg) as typeof _QIconImg\nconst QIconSvg = setupPropsProxy(_QIconSvg) as typeof _QIconSvg\n\n// Export components\nexport { QIcon, QIconFont, QIconImg, QIconSvg }\n\n// Export types\nexport type { Icon }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, createBlock as _createBlock, withCtx as _withCtx, resolveDynamicComponent as _resolveDynamicComponent, normalizeClass as _normalizeClass } from \"vue\"\n\nimport { QListItem } from '.'\n\timport { QListItemGroup } from '.'\n\n\t// Types\n\timport type { QListItemProps, QListItemGroupProps } from '.'\n\timport type { Primitive } from '@/types/primitive'\n\n\t// Utils\n\timport { computed, ref, watch } from 'vue'\n\n\texport type QListProps = {\n\t\t/**\n\t\t * The value of the currently selected item.\n\t\t */\n\t\tmodelValue?: Primitive\n\n\t\t/**\n\t\t * The value of the currently highlighted item.\n\t\t */\n\t\thighlighted?: Primitive\n\n\t\t/**\n\t\t * The list of available items for selection.\n\t\t */\n\t\titems: (Omit<QListItemProps, 'value' | 'label'> & {\n\t\t\t// allow custom properties\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t[key: string]: any\n\t\t})[]\n\n\t\t/**\n\t\t * The item groups used for organizing the available items.\n\t\t */\n\t\tgroups?: (QListItemGroupProps & {\n\t\t\tid: string\n\t\t})[]\n\n\t\t/**\n\t\t * The property of each item object that holds its value.\n\t\t */\n\t\titemValue?: string\n\n\t\t/**\n\t\t * The property of each item object that holds its title.\n\t\t */\n\t\titemLabel?: string\n\n\t\t/**\n\t\t * Indicates whether the list is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QList',\n props: {\n modelValue: { type: [String, Number, Boolean, Symbol], default: undefined },\n highlighted: { type: [String, Number, Boolean, Symbol], default: undefined },\n items: {},\n groups: { default: () => [] },\n itemValue: { default: 'key' },\n itemLabel: { default: 'label' },\n disabled: { type: Boolean }\n },\n emits: [\"update:modelValue\"],\n setup(__props: any, { expose: __expose, emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\tconst value = ref(props.modelValue)\n\tconst clicking = ref(false)\n\n\tconst listTag = computed(() => (groups.value.length > 1 ? 'div' : 'ul'))\n\tconst groups = computed<QListItemGroupProps[]>(() => {\n\t\tif (props.groups.length) return props.groups\n\n\t\t// Generate a default group without title\n\t\treturn [{ title: '' }]\n\t})\n\n\t// Template refs\n\tconst listRef = ref<HTMLElement | null>(null)\n\n\t/**\n\t * Handles the selection of a new value for the component.\n\t *\n\t * @param newVal - The new value to be selected.\n\t */\n\tfunction onItemSelect(newVal: Primitive): void {\n\t\tvalue.value = newVal\n\t\temit('update:modelValue', newVal)\n\t}\n\n\t/**\n\t * Handles the 'mousedown' event.\n\t */\n\tfunction onMouseDown() {\n\t\tclicking.value = true\n\t}\n\n\t/**\n\t * Handles the 'mouseup' event.\n\t */\n\tfunction onMouseUp() {\n\t\tclicking.value = false\n\t}\n\n\t/**\n\t * Handles the 'focus' event and focuses on the appropriate item within the list.\n\t *\n\t * @param e - The FocusEvent representing the 'focus' event.\n\t */\n\tfunction onFocus(e: FocusEvent): void {\n\t\t// // If the focus event is triggered from within the list, do nothing.\n\t\tif (listRef.value?.contains(e.relatedTarget as Node)) {\n\t\t\treturn\n\t\t}\n\n\t\tlet targetIdx: number\n\n\t\t// Determine the target index based on the current value and the 'itemValue' prop.\n\t\tif (value.value) {\n\t\t\ttargetIdx = props.items.findIndex((item) => item[props.itemValue] === value.value)\n\t\t} else {\n\t\t\ttargetIdx = getFirstFocusableItemIndex()\n\t\t}\n\n\t\t// Scrolling on focus should be prevented\n\t\t// if user is currently something on the list.\n\t\tconst preventScroll = clicking.value\n\n\t\tfocusItem(targetIdx, preventScroll)\n\t}\n\n\t/**\n\t * Handles the 'keydown' event on the list\n\t * and performs actions based on the pressed key.\n\t *\n\t * @param e - The KeyboardEvent representing the keydown event.\n\t */\n\tfunction onKeyDown(e: KeyboardEvent): void {\n\t\tif (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\tfocus('next')\n\t\t\t\tbreak\n\t\t\tcase 'ArrowUp':\n\t\t\t\tfocus('prev')\n\t\t\t\tbreak\n\t\t\tcase 'Home':\n\t\t\t\tfocus('first')\n\t\t\t\tbreak\n\t\t\tcase 'End':\n\t\t\t\tfocus('last')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Sets focus on a specific HTML element based on the provided direction:\n\t *\n\t * - 'next': Focuses on the next focusable item.\n\t * - 'prev': Focuses on the previous focusable item.\n\t * - 'first': Focuses on the first focusable item.\n\t * - 'last': Focuses on the last focusable item.\n\t *\n\t * If the direction is not provided or is not recognized, no action is taken.\n\t *\n\t * @param direction - The direction in which to set focus ('next', 'prev', 'first', or 'last').\n\t */\n\tfunction focus(direction?: 'next' | 'prev' | 'first' | 'last'): void {\n\t\tswitch (direction) {\n\t\t\tcase 'next':\n\t\t\tcase 'prev':\n\t\t\t\tfocusItem(getActiveAdjacentItemIndex(direction))\n\t\t\t\tbreak\n\t\t\tcase 'first':\n\t\t\t\tfocusItem(getFirstFocusableItemIndex())\n\t\t\t\tbreak\n\t\t\tcase 'last':\n\t\t\t\tfocusItem(getLastFocusableItemIndex())\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t/**\n\t * Focuses on the HTML element at the specified index among the child elements.\n\t *\n\t * If the index is out of bounds or the element is inaccessible, no action is taken.\n\t *\n\t * @param itemIdx - The index of the HTML element to focus on.\n\t */\n\tfunction focusItem(itemIdx: number, preventScroll: boolean = false): void {\n\t\tconst children = getItems()\n\t\tchildren.at(itemIdx)?.focus({ preventScroll })\n\t}\n\n\t/**\n\t * Retrieves an array of child elements from a reference to a list element.\n\t *\n\t * If no child elements are found, an empty array is returned.\n\t *\n\t * @returns An array of HTMLElements representing the child elements, or an empty array if none are found.\n\t */\n\tfunction getItems(): HTMLElement[] {\n\t\tconst nodes = listRef.value?.querySelectorAll('li')\n\n\t\tif (!nodes) {\n\t\t\treturn []\n\t\t}\n\n\t\treturn Array.from(nodes) as HTMLElement[]\n\t}\n\n\tfunction getItem(idx: number): HTMLElement | undefined {\n\t\tconst items = getItems()\n\n\t\treturn items.at(idx)\n\t}\n\n\t/**\n\t * Retrieves the index of the currently active item among the provided array of HTML elements.\n\t *\n\t * @returns The index of the currently active item, or -1 if no active item is found.\n\t */\n\tfunction getActiveItemIndex(): number {\n\t\tconst items = getItems()\n\n\t\treturn items.indexOf(document.activeElement as HTMLElement)\n\t}\n\n\t/**\n\t * Retrieves the index of the first focusable item among the child elements.\n\t *\n\t * If no focusable item is found, it returns -1.\n\t *\n\t * @returns The index of the first focusable item or -1 if no focusable item is found.\n\t */\n\tfunction getFirstFocusableItemIndex(): number {\n\t\tconst items = getItems()\n\n\t\t// Find the first focusable item\n\t\tconst firstFocusableItem = items.find((item) => isFocusable(item))\n\n\t\treturn firstFocusableItem ? items.indexOf(firstFocusableItem) : -1\n\t}\n\n\t/**\n\t * Retrieves the index of the last focusable item among the child elements.\n\t *\n\t * If no focusable item is found, it returns -1.\n\t *\n\t * @returns The index of the last focusable item or -1 if no focusable item is found.\n\t */\n\tfunction getLastFocusableItemIndex(): number {\n\t\tconst items = getItems()\n\n\t\t// Reverse the array and find the last focusable item\n\t\tconst lastFocusableItem = [...items].reverse().find((item) => isFocusable(item))\n\n\t\treturn lastFocusableItem ? items.indexOf(lastFocusableItem) : -1\n\t}\n\n\t/**\n\t * Checks if the specified index is at the edge of the item list in the given direction.\n\t *\n\t * If the direction is 'prev', the function checks if the index is at the beginning of the list.\n\t * If the direction is 'next', the function checks if the index is at the end of the list.\n\t *\n\t * @param idx - The index to check.\n\t * @param direction - The direction in which to check the edge ('next' or 'prev').\n\t * @param items - The array of HTML elements representing the items.\n\t * @returns `true` if the index is at the edge in the specified direction, otherwise `false`.\n\t */\n\tfunction atTheEdge(idx: number, direction: 'next' | 'prev', items: HTMLElement[]): boolean {\n\t\treturn (\n\t\t\t(direction === 'prev' && idx === 0) ||\n\t\t\t(direction === 'next' && idx === items.length - 1)\n\t\t)\n\t}\n\n\t/**\n\t * Retrieves the index of the adjacent focusable item based on the specified direction\n\t * and currently active item.\n\t *\n\t * If the direction is 'next', the function finds the index of the next focusable item.\n\t * If the direction is 'prev', the function finds the index of the previous focusable item.\n\t *\n\t * @param direction - The direction in which to find the adjacent item ('next' or 'prev').\n\t * @returns The index of the adjacent focusable item or the index of the active item if at the edge.\n\t */\n\tfunction getActiveAdjacentItemIndex(direction: 'next' | 'prev'): number {\n\t\tconst idx = getActiveItemIndex()\n\n\t\treturn getAdjacentItemIndex(idx, direction)\n\t}\n\n\t/**\n\t * Retrieves the index of the adjacent focusable item based on the specified direction.\n\t *\n\t * If the direction is 'next', the function finds the index of the next focusable item.\n\t * If the direction is 'prev', the function finds the index of the previous focusable item.\n\t *\n\t * @param direction - The direction in which to find the adjacent item ('next' or 'prev').\n\t * @returns The index of the adjacent focusable item or the index of the active item if at the edge.\n\t */\n\tfunction getAdjacentItemIndex(idx: number, direction: 'next' | 'prev'): number {\n\t\tconst items = getItems()\n\n\t\t// If at the edge, return the index of the active item\n\t\tif (atTheEdge(idx, direction, items)) {\n\t\t\treturn idx\n\t\t}\n\n\t\t// Find the index of the next or previous focusable item\n\t\tlet adjacentIdx = idx + (direction === 'next' ? 1 : -1)\n\n\t\t// Continue searching until a focusable item is found\n\t\twhile (!isFocusable(items[adjacentIdx])) {\n\t\t\t// If at the edge, return the index of the active item\n\t\t\tif (atTheEdge(adjacentIdx, direction, items)) {\n\t\t\t\treturn idx\n\t\t\t}\n\n\t\t\t// Move to the next or previous index\n\t\t\tadjacentIdx += direction === 'next' ? 1 : -1\n\t\t}\n\n\t\treturn adjacentIdx\n\t}\n\n\t/**\n\t * Determines whether a list item is focusable.\n\t *\n\t * @param item - The HTML element to be checked for focusability.\n\t * @returns True if the element is focusable, false otherwise.\n\t */\n\tfunction isFocusable(item: HTMLElement): boolean {\n\t\treturn item.tabIndex === -2\n\t}\n\n\t/**\n\t * Retrieves items from a group or returns all items if no group is specified.\n\t *\n\t * If a group is provided, the function filters items based on their group property.\n\t * If no group is specified, all items are returned.\n\t *\n\t * @param group - The name of the group to filter items by. If not provided, all items are returned.\n\t * @returns An array of items either belonging to the specified group or all items if no group is specified.\n\t */\n\tfunction getGroupItems(group?: string) {\n\t\tif (!group) {\n\t\t\t// If no group is specified, return all items\n\t\t\treturn props.items\n\t\t}\n\n\t\t// Filter items by the specified group\n\t\treturn props.items.filter((item) => item.group === group)\n\t}\n\n\twatch(\n\t\t() => props.modelValue,\n\t\t(newVal) => {\n\t\t\tvalue.value = newVal\n\t\t}\n\t)\n\n\t__expose({\n\t\tfocusItem,\n\t\tgetItem,\n\t\tgetAdjacentItemIndex,\n\t\tgetFirstFocusableItemIndex,\n\t\tgetLastFocusableItemIndex\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_resolveDynamicComponent(listTag.value), {\n ref_key: \"listRef\",\n ref: listRef,\n class: _normalizeClass(['q-list', { 'q-list--disabled': props.disabled }]),\n role: \"listbox\",\n tabindex: props.disabled ? -1 : 0,\n onFocus: onFocus,\n onMousedown: onMouseDown,\n onMouseup: onMouseUp,\n onKeydown: onKeyDown\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(groups.value, (group) => {\n return (_openBlock(), _createBlock(_unref(QListItemGroup), {\n key: group.id,\n title: group.title,\n disabled: group.disabled\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(getGroupItems(group.id), (item) => {\n return (_openBlock(), _createBlock(_unref(QListItem), {\n key: item[props.itemValue],\n value: item[props.itemValue],\n label: item[props.itemLabel],\n icon: item.icon,\n disabled: props.disabled || item.disabled,\n highlighted: props.highlighted === item[props.itemValue],\n selected: value.value === item[props.itemValue],\n onSelect: onItemSelect\n }, null, 8, [\"value\", \"label\", \"icon\", \"disabled\", \"highlighted\", \"selected\"]))\n }), 128))\n ]),\n _: 2\n }, 1032, [\"title\", \"disabled\"]))\n }), 128))\n ]),\n _: 1\n }, 40, [\"class\", \"tabindex\"]))\n}\n}\n\n})","// Counter to keep track of the number of generated IDs\nlet counter = 0\n\n// Custom hook to generate unique IDs\nexport function useUid() {\n\treturn `uid-${++counter}`\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, openBlock as _openBlock, createBlock as _createBlock, mergeProps as _mergeProps, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"id\", \"tabindex\", \"aria-label\", \"aria-selected\", \"onClick\"]\nconst _hoisted_2 = { class: \"q-list-item__check-container\" }\n\nimport { QIcon } from '@/components/QIcon'\n\n\t// Types\n\timport type { Icon } from '@/components/QIcon'\n\timport type { Primitive } from '@/types/primitive'\n\n\t// Utils\n\timport { useUid } from '@/composables/uid'\n\n\t\n\t// The default icons of the component.\n\tconst DEFAULT_ICONS: Record<string, Icon> = {\n\t\tcheck: {\n\t\t\ticon: 'check'\n\t\t}\n\t}\n\nexport type ListItem = {\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t[key: string]: any\n\t\ticon?: Icon\n\t\tselected?: boolean\n\t\tgroup?: string\n\t\tdisabled?: boolean\n\t}\n\n\texport type Icons = typeof DEFAULT_ICONS\n\n\texport type QListItemProps = {\n\t\t/**\n\t\t * The value of the item.\n\t\t */\n\t\tvalue: Primitive\n\n\t\t/**\n\t\t * The label of the item.\n\t\t */\n\t\tlabel: string\n\n\t\t/**\n\t\t * The icon of the item.\n\t\t */\n\t\ticon?: Icon\n\n\t\t/**\n\t\t * Whether this item is selected.\n\t\t */\n\t\tselected?: boolean\n\n\t\t/**\n\t\t * Whether this item is highlighted.\n\t\t */\n\t\thighlighted?: boolean\n\n\t\t/**\n\t\t * The icons of the component.\n\t\t */\n\t\ticons?: Icons\n\n\t\t/**\n\t\t * Whether the item is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QListItem',\n props: {\n value: { type: [String, Number, Boolean, Symbol] },\n label: {},\n icon: { default: undefined },\n selected: { type: Boolean },\n highlighted: { type: Boolean },\n icons: { default: () => DEFAULT_ICONS },\n disabled: { type: Boolean }\n },\n emits: [\"select\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\tconst id = useUid()\n\n\tfunction onSelect() {\n\t\tif (!props.disabled) emit('select', props.value)\n\t}\n\n\tfunction onKeyDown(e: KeyboardEvent) {\n\t\tif (e.key === 'Tab') onSelect()\n\n\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\t\t\tonSelect()\n\t\t}\n\t}\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n id: _unref(id),\n role: \"option\",\n tabindex: props.disabled ? undefined : -2,\n class: _normalizeClass([\n\t\t\t'q-list-item',\n\t\t\t{\n\t\t\t\t'q-list-item--disabled': props.disabled,\n\t\t\t\t'q-list-item--selected': props.selected,\n\t\t\t\t'q-list-item--highlighted': props.highlighted\n\t\t\t}\n\t\t]),\n \"aria-label\": props.label,\n \"aria-selected\": props.disabled ? undefined : props.selected,\n onKeydown: onKeyDown,\n onClick: _withModifiers(onSelect, [\"stop\",\"prevent\"])\n }, [\n (props.icon)\n ? (_openBlock(), _createBlock(_unref(QIcon), _normalizeProps(_mergeProps({ key: 0 }, props.icon)), null, 16))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\" \" + _toDisplayString(props.label) + \" \", 1),\n _createElementVNode(\"div\", _hoisted_2, [\n (props.selected)\n ? (_openBlock(), _createBlock(_unref(QIcon), _mergeProps({ key: 0 }, props.icons.check, { class: \"q-list-item__check\" }), null, 16))\n : _createCommentVNode(\"\", true)\n ])\n ], 42, _hoisted_1))\n}\n}\n\n})","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot } from \"vue\"\n\nconst _hoisted_1 = [\"aria-labelledby\"]\nconst _hoisted_2 = [\"id\"]\n\nimport { useUid } from '@/composables/uid'\n\n\texport type QListItemGroupProps = {\n\t\t/**\n\t\t * The title of the group.\n\t\t */\n\t\ttitle?: string\n\n\t\t/**\n\t\t * Whether the entire list group is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QListItemGroup',\n props: {\n title: { default: '' },\n disabled: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Composables\n\t\n\n\tconst id = useUid()\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"ul\", {\n class: \"q-list-item-group\",\n role: \"group\",\n \"aria-labelledby\": props.title ? _unref(id) : undefined\n }, [\n (props.title)\n ? (_openBlock(), _createElementBlock(\"li\", {\n key: 0,\n id: _unref(id),\n class: \"q-list-item-group__title\",\n role: \"presentation\"\n }, _toDisplayString(props.title), 9, _hoisted_2))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\")\n ], 8, _hoisted_1))\n}\n}\n\n})","// Components\nimport _QList from './QList.vue'\nimport _QListItem from './QListItem.vue'\nimport _QListItemGroup from './QListItemGroup.vue'\n\n// Types\nimport type { QListProps } from './QList.vue'\nimport type { QListItemProps } from './QListItem.vue'\nimport type { QListItemGroupProps } from './QListItemGroup.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QList = setupPropsProxy(_QList) as typeof _QList\nconst QListItem = setupPropsProxy(_QListItem) as typeof _QListItem\nconst QListItemGroup = setupPropsProxy(_QListItemGroup) as typeof _QListItemGroup\n\n// Export components\nexport { QList, QListItem, QListItemGroup }\n\n// Export types\nexport type { QListProps, QListItemProps, QListItemGroupProps }\n","export type Appearance = 'regular' | 'inverted'\nexport type Placement = 'top' | 'bottom' | 'left' | 'right'\nexport type Trigger = 'hover' | 'click' | 'manual'\n\nexport type Position = {\n\tx: number\n\ty: number\n\tplacement: Placement\n\twidth?: number\n}\n\n/**\n * Reposition the overlay based on its size and the position of its anchor.\n */\nexport function computePosition(\n\tanchor: Element,\n\toverlay: Element | null,\n\ttentativePlacement: Placement = 'right',\n\twidth?: 'auto' | 'anchor'\n): Position {\n\t// Get absolute position of anchor\n\tconst anchorPosition = anchor.getBoundingClientRect()\n\tconst left = anchorPosition.x + window.scrollX\n\tconst top = anchorPosition.y + window.scrollY\n\n\t// Get absolute position of overlay\n\tconst overlayPosition = overlay?.getBoundingClientRect()\n\tconst overlayWidth = overlayPosition?.width ?? 0\n\tconst overlayHeight = overlayPosition?.height ?? 0\n\n\tlet placement = tentativePlacement\n\n\t// Attempt to prevent out of bounds\n\tif (overlayPosition) {\n\t\tconst oob = !canReposition(anchorPosition, overlayPosition, placement)\n\t\tif (oob) placement = getOptimalFallbackPosition(anchorPosition, overlayPosition, placement)\n\t}\n\n\tconst position: Position = { x: 0, y: 0, placement: placement }\n\n\tswitch (placement) {\n\t\tcase 'top':\n\t\t\tif (width === 'anchor') position.x = left\n\t\t\telse position.x = left + (anchorPosition.width - overlayWidth) / 2\n\t\t\tposition.y = top - overlayHeight\n\t\t\tbreak\n\t\tcase 'bottom':\n\t\t\tif (width === 'anchor') position.x = left\n\t\t\telse position.x = left + (anchorPosition.width - overlayWidth) / 2\n\t\t\tposition.y = top + anchorPosition.height\n\t\t\tbreak\n\t\tcase 'left':\n\t\t\tposition.x = left - overlayWidth\n\t\t\tposition.y = top + anchorPosition.height / 2 - overlayHeight / 2\n\t\t\tbreak\n\t\tcase 'right':\n\t\t\tposition.x = left + anchorPosition.width\n\t\t\tposition.y = top + anchorPosition.height / 2 - overlayHeight / 2\n\t\t\tbreak\n\t\tdefault:\n\t\t\tbreak\n\t}\n\n\tif (width === 'anchor' && anchorPosition.width >= overlayWidth)\n\t\tposition.width = anchorPosition.width\n\n\treturn position\n}\n\n/**\n * Determines if the overlay can reposition to the provided placement\n * without going out of bounds.\n */\nfunction canReposition(anchorPosition: DOMRect, overlayPosition: DOMRect, to: Placement) {\n\tlet xOK = false,\n\t\tyOK = false\n\n\tswitch (to) {\n\t\tcase 'top':\n\t\t\txOK = isHorizontalPositionValid(anchorPosition, overlayPosition)\n\t\t\tyOK = anchorPosition.top > overlayPosition.height\n\t\t\tbreak\n\t\tcase 'bottom':\n\t\t\txOK = isHorizontalPositionValid(anchorPosition, overlayPosition)\n\t\t\tyOK =\n\t\t\t\twindow.innerHeight - anchorPosition.top - anchorPosition.height >\n\t\t\t\toverlayPosition.height\n\t\t\tbreak\n\t\tcase 'left':\n\t\t\txOK = anchorPosition.left > overlayPosition.width\n\t\t\tyOK = isVerticalPositionValid(anchorPosition, overlayPosition)\n\t\t\tbreak\n\t\tcase 'right':\n\t\t\txOK =\n\t\t\t\twindow.innerWidth - anchorPosition.left - anchorPosition.width >\n\t\t\t\toverlayPosition.width\n\t\t\tyOK = isVerticalPositionValid(anchorPosition, overlayPosition)\n\t\t\tbreak\n\t\tdefault:\n\t\t\tbreak\n\t}\n\n\treturn xOK && yOK\n}\n\n/**\n * Determines if the overlay can be positioned within the viewport vertically.\n */\nfunction isVerticalPositionValid(anchorPosition: DOMRect, overlayPosition: DOMRect) {\n\treturn (\n\t\twindow.innerHeight - anchorPosition.top - anchorPosition.height / 2 >\n\t\t\toverlayPosition.height / 2 &&\n\t\tanchorPosition.top + anchorPosition.height / 2 > overlayPosition.height / 2\n\t)\n}\n\n/**\n * Determines if the overlay can be positioned within the viewport horizontally.\n */\nfunction isHorizontalPositionValid(anchorPosition: DOMRect, overlayPosition: DOMRect) {\n\treturn (\n\t\twindow.innerWidth - anchorPosition.left - anchorPosition.width / 2 >\n\t\t\toverlayPosition.width / 2 &&\n\t\tanchorPosition.left + anchorPosition.width / 2 > overlayPosition.width / 2\n\t)\n}\n\n/**\n * Determines the optional fallback position assuming the current is not available.\n */\nfunction getOptimalFallbackPosition(\n\tanchorPosition: DOMRect,\n\toverlayPosition: DOMRect,\n\tcurrent: Placement\n) {\n\t// Fallback positions ordered by optimal preference.\n\tconst fallbackOrder: Record<string, Placement[]> = {\n\t\ttop: ['bottom', 'left', 'right'],\n\t\tbottom: ['top', 'left', 'right'],\n\t\tleft: ['right', 'top', 'bottom'],\n\t\tright: ['left', 'top', 'bottom']\n\t}\n\n\tfor (const position of fallbackOrder[current])\n\t\tif (canReposition(anchorPosition, overlayPosition, position)) return position\n\n\t// If none of the fallback positions are within bounds,\n\t// return the current position\n\t// TODO: return the position that is \"less out of bounds\"\n\t// when none of the fallback positions are optimal\n\treturn current\n}\n","import { ComponentPublicInstance } from 'vue'\n\nexport type Selector = string | HTMLElement | ComponentPublicInstance\n\n/**\n * Gets a DOM element based on the provided selector.\n */\nexport function getElement(selector: Selector): Element | null {\n\tif (typeof selector === 'string')\n\t\t// Selector\n\t\treturn document.querySelector(selector)\n\telse if (selector && '$el' in selector)\n\t\t// Component (ref)\n\t\treturn selector.$el\n\n\t// HTMLElement | Element\n\treturn selector\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, normalizeStyle as _normalizeStyle, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode, Teleport as _Teleport, createBlock as _createBlock, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"q-overlay__arrow\"\n}\n\nimport { computePosition } from '@/composables/overlay'\n\n\t// Types\n\timport type { Appearance, Placement, Trigger } from '@/composables/overlay'\n\timport type { Selector } from '@/utils/getElement'\n\n\t// Utils\n\timport { getElement } from '@/utils/getElement'\n\timport { computed, nextTick, onBeforeUnmount, onMounted, reactive, ref, watch } from 'vue'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n ...{\n\t\tinheritAttrs: false\n\t},\n __name: 'QOverlay',\n props: {\n modelValue: { type: Boolean },\n anchor: {},\n appearance: { default: 'regular' },\n arrow: { type: Boolean },\n attach: { default: 'body' },\n contentClasses: { default: () => [] },\n delay: { default: 500 },\n disabled: { type: Boolean },\n offset: { default: 8 },\n placement: { default: 'right' },\n spy: { type: Boolean },\n transition: { default: 'fade' },\n trigger: { default: 'click' },\n width: { default: 'auto' }\n },\n emits: [\"enter\", \"leave\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Composables\n\t\n\n\t\n\n\t\n\n\tconst classes = computed(() => {\n\t\treturn [\n\t\t\t'q-overlay',\n\t\t\t`q-overlay--${state.placement}`,\n\t\t\t{ 'q-overlay--inverted': props.appearance === 'inverted' },\n\t\t\t...props.contentClasses\n\t\t]\n\t})\n\n\tconst state = reactive({\n\t\tvisible: props.modelValue,\n\t\tanimating: false,\n\t\ttop: 0,\n\t\tleft: 0,\n\t\twidth: 0 as number | undefined,\n\t\tplacement: props.placement\n\t})\n\n\tconst visible = computed(() => state.visible && !props.disabled)\n\twatch(\n\t\t() => props.modelValue,\n\t\t() => (state.visible = props.modelValue)\n\t)\n\twatch(\n\t\t() => state.visible,\n\t\t() => (state.animating = true)\n\t)\n\n\tconst overlayProps = computed(() => {\n\t\tlet xOffset = 0,\n\t\t\tyOffset = 0\n\n\t\tswitch (state.placement) {\n\t\t\tcase 'top':\n\t\t\t\tyOffset = -(props.offset || 0)\n\t\t\t\tbreak\n\t\t\tcase 'bottom':\n\t\t\t\tyOffset = props.offset || 0\n\t\t\t\tbreak\n\t\t\tcase 'left':\n\t\t\t\txOffset = -(props.offset || 0)\n\t\t\t\tbreak\n\t\t\tcase 'right':\n\t\t\t\txOffset = props.offset || 0\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst _props: { top: string; left: string; width?: string } = {\n\t\t\ttop: `${state.top + yOffset}px`,\n\t\t\tleft: `${state.left + xOffset}px`\n\t\t}\n\n\t\tif (state.width !== undefined && ['top', 'bottom'].includes(state.placement))\n\t\t\t_props.width = `${state.width}px`\n\n\t\treturn _props\n\t})\n\n\t// Overlay template ref\n\tconst overlay = ref<HTMLElement | null>(null)\n\n\t/**\n\t * Reposition the overlay based on its size and the position of its target.\n\t */\n\tfunction reposition() {\n\t\tconst target: Element | null = getElement(props.anchor)\n\n\t\t// Both target and overlay must be visible in order to reposition\n\t\tif (target) {\n\t\t\tconst position = computePosition(target, overlay.value, props.placement, props.width)\n\n\t\t\tstate.left = position.x\n\t\t\tstate.top = position.y\n\t\t\tstate.width = position.width\n\t\t\tstate.placement = position.placement\n\t\t}\n\t}\n\n\t// Setup reaction to changes in the position of the target element\n\twatch([() => visible.value, () => props.placement], reposition)\n\n\t// Handle show/hide with the specified delay\n\tlet timeoutId: number | undefined = undefined\n\n\tfunction show() {\n\t\tconst _delay = props.trigger === 'hover' ? props.delay : 0\n\t\tif (!timeoutId) timeoutId = window.setTimeout(() => (state.visible = true), _delay)\n\t}\n\n\tfunction hide() {\n\t\tclearTimeout(timeoutId)\n\t\ttimeoutId = undefined\n\n\t\tstate.visible = false\n\t}\n\n\tfunction toggle() {\n\t\tvisible.value ? hide() : show()\n\t}\n\n\tlet animationTimeoutId: number | undefined = undefined\n\n\tfunction onEnter() {\n\t\temit('enter')\n\t}\n\n\tfunction onLeave() {\n\t\twindow.clearTimeout(animationTimeoutId)\n\t\tanimationTimeoutId = window.setTimeout(() => (state.animating = false), 200)\n\n\t\temit('leave')\n\t}\n\n\tlet observer: MutationObserver | undefined = undefined\n\n\tfunction addTargetListeners() {\n\t\tnextTick(() => {\n\t\t\tconst target = getElement(props.anchor)\n\t\t\tif (!target) return\n\n\t\t\tswitch (props.trigger) {\n\t\t\t\tcase 'click':\n\t\t\t\t\ttarget.addEventListener('click', toggle)\n\t\t\t\t\tbreak\n\t\t\t\tcase 'hover':\n\t\t\t\t\ttarget.addEventListener('mouseenter', show)\n\t\t\t\t\ttarget.addEventListener('mouseleave', hide)\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t})\n\t}\n\n\tfunction addRepositionListeners() {\n\t\tnextTick(() => {\n\t\t\tconst target = getElement(props.anchor)\n\t\t\tif (!target) return\n\n\t\t\t// Handler to reposition overlay on window resize\n\t\t\twindow.addEventListener('scroll', reposition)\n\t\t\twindow.addEventListener('resize', reposition)\n\n\t\t\t// Observer to detect changes in the overlay target and reposition accordingly\n\t\t\tobserver = new MutationObserver(reposition)\n\t\t\tobserver.observe(target, {\n\t\t\t\tattributes: false,\n\t\t\t\tchildList: true,\n\t\t\t\tcharacterData: true,\n\t\t\t\tsubtree: true\n\t\t\t})\n\n\t\t\treposition()\n\t\t})\n\t}\n\n\tfunction removeRepositionListeners() {\n\t\twindow.removeEventListener('scroll', reposition)\n\t\twindow.removeEventListener('resize', reposition)\n\n\t\tobserver?.disconnect()\n\t}\n\n\tlet autoUpdateTimeoutId: number | undefined = undefined\n\n\tfunction autoUpdate() {\n\t\t// Spy\n\t\tconst target: Element | null = getElement(props.anchor)\n\n\t\tif (target) {\n\t\t\treposition()\n\n\t\t\t// Schedule next spy\n\t\t\tautoUpdateTimeoutId = window.setTimeout(autoUpdate, 100)\n\t\t} else {\n\t\t\t// Target was destroyed,\n\t\t\t// hide and destroy overlay as well\n\t\t\thide()\n\t\t}\n\t}\n\n\tfunction init() {\n\t\taddRepositionListeners()\n\n\t\tif (props.spy) autoUpdate()\n\t}\n\n\tfunction destroy() {\n\t\tremoveRepositionListeners()\n\n\t\tif (props.spy) {\n\t\t\tclearTimeout(autoUpdateTimeoutId)\n\t\t\tautoUpdateTimeoutId = undefined\n\t\t}\n\t}\n\n\tonBeforeUnmount(destroy)\n\n\tonMounted(reposition)\n\n\twatch(\n\t\t() => props.disabled,\n\t\t(isDisabled) => {\n\t\t\tif (!isDisabled) addTargetListeners()\n\t\t},\n\t\t{ immediate: true }\n\t)\n\n\twatch(\n\t\t() => visible.value,\n\t\t(isVisible) => {\n\t\t\tisVisible ? init() : destroy()\n\t\t},\n\t\t{ immediate: true }\n\t)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _renderSlot(_ctx.$slots, \"trigger\", { open: visible.value }),\n (visible.value || state.animating)\n ? (_openBlock(), _createBlock(_Teleport, {\n key: 0,\n disabled: !props.attach,\n to: props.attach\n }, [\n _createVNode(_Transition, {\n name: props.transition,\n appear: \"\",\n onEnter: onEnter,\n onLeave: onLeave\n }, {\n default: _withCtx(() => [\n (visible.value)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(classes.value),\n style: _normalizeStyle(overlayProps.value)\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass(['q-overlay__content']),\n ref_key: \"overlay\",\n ref: overlay\n }, [\n (props.arrow)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\")\n ], 512)\n ], 6))\n : _createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"name\"])\n ], 8, [\"disabled\", \"to\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","// Components\nimport _QOverlay from './QOverlay.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QOverlay = setupPropsProxy(_QOverlay) as typeof _QOverlay\n\n// Export components\nexport { QOverlay }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, mergeProps as _mergeProps, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = [\"id\"]\nconst _hoisted_2 = { class: \"q-field__label\" }\nconst _hoisted_3 = [\"for\"]\nconst _hoisted_4 = {\n key: 0,\n class: \"q-field__prepend\"\n}\nconst _hoisted_5 = {\n key: 1,\n class: \"q-field__append\"\n}\nconst _hoisted_6 = {\n key: 0,\n class: \"q-field__extras\"\n}\n\nimport { useUid } from '@/composables/uid'\n\n\t// Utils\n\timport { computed, ref } from 'vue'\n\n\texport type QFieldSize =\n\t\t| 'mini'\n\t\t| 'small'\n\t\t| 'medium'\n\t\t| 'large'\n\t\t| 'x-large'\n\t\t| 'xx-large'\n\t\t| 'block'\n\n\texport type QFieldProps = {\n\t\t/**\n\t\t * The field unique identifier.\n\t\t */\n\t\tid?: string\n\n\t\t/**\n\t\t * The label of the input.\n\t\t */\n\t\tlabel?: string\n\n\t\t/**\n\t\t * The size category of the input.\n\t\t */\n\t\tsize?: QFieldSize\n\n\t\t/**\n\t\t * Whether the input is readonly.\n\t\t */\n\t\treadonly?: boolean\n\n\t\t/**\n\t\t * Whether the input is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\n\t\t/**\n\t\t * If set to true, an asterisk (*) is displayed\n\t\t * to indicate that the field is required.\n\t\t */\n\t\trequired?: boolean\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n ...{\n\t\tinheritAttrs: false\n\t},\n __name: 'QField',\n props: {\n id: { default: () => useUid() },\n label: { default: '' },\n size: { default: 'medium' },\n readonly: { type: Boolean },\n disabled: { type: Boolean },\n required: { type: Boolean }\n },\n setup(__props: any, { expose: __expose }) {\n\nconst props = __props;\n\n\t// Composables\n\t\n\n\t// Template refs\n\tconst fieldRef = ref<HTMLElement | null>(null)\n\n\tconst isRequired = computed<boolean>(() => props.required && !props.readonly && !props.disabled)\n\n\t__expose({\n\t\tfieldRef\n\t})\n\n\t\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n id: props.id,\n class: _normalizeClass([\n\t\t\t'q-field',\n\t\t\t`q-field--${props.size}`,\n\t\t\t{\n\t\t\t\t'q-field--readonly': props.readonly,\n\t\t\t\t'q-field--disabled': props.disabled,\n\t\t\t\t'q-field--required': isRequired.value\n\t\t\t}\n\t\t])\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _renderSlot(_ctx.$slots, \"label.prepend\"),\n _createElementVNode(\"label\", {\n for: props.id\n }, _toDisplayString(props.label), 9, _hoisted_3),\n _renderSlot(_ctx.$slots, \"label.append\")\n ]),\n _renderSlot(_ctx.$slots, \"control\", {}, () => [\n _createElementVNode(\"div\", _mergeProps({\n class: \"q-field__control\",\n ref_key: \"fieldRef\",\n ref: fieldRef\n }, _ctx.$attrs), [\n (_ctx.$slots.prepend)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _renderSlot(_ctx.$slots, \"prepend\")\n ]))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\"),\n (_ctx.$slots.append)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _renderSlot(_ctx.$slots, \"append\")\n ]))\n : _createCommentVNode(\"\", true)\n ], 16)\n ]),\n (_ctx.$slots.extras)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _renderSlot(_ctx.$slots, \"extras\")\n ]))\n : _createCommentVNode(\"\", true)\n ], 10, _hoisted_1))\n}\n}\n\n})","// Components\nimport _QField from './QField.vue'\n\n// Types\nimport type { QFieldProps, QFieldSize } from './QField.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QField = setupPropsProxy(_QField) as typeof _QField\n\n// Export components\nexport { QField }\n\n// Export types\nexport type { QFieldProps, QFieldSize }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, renderSlot as _renderSlot, unref as _unref, withCtx as _withCtx, createSlots as _createSlots, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = [\"required\", \"placeholder\", \"readonly\", \"disabled\", \"maxlength\"]\n\nimport { QField } from '@/components/QField'\n\n\t// Composables\n\timport { useUid } from '@/composables/uid'\n\n\t// Types\n\timport type { QFieldSize } from '@/components/QField'\n\n\t// Utils\n\timport { computed, ref, watch } from 'vue'\n\n\texport type QTextFieldProps = {\n\t\t/**\n\t\t * The value of the text field.\n\t\t */\n\t\tmodelValue?: string\n\n\t\t/**\n\t\t * The field unique identifier.\n\t\t */\n\t\tid?: string\n\n\t\t/**\n\t\t * The placeholder text for the text field.\n\t\t */\n\t\tplaceholder?: string\n\n\t\t/**\n\t\t * The label of the input.\n\t\t */\n\t\tlabel?: string\n\n\t\t/**\n\t\t * The size of the text field.\n\t\t */\n\t\tsize?: QFieldSize\n\n\t\t/**\n\t\t * If set, defines the maximum string length\n\t\t * that the user can enter into the text field.\n\t\t */\n\t\tmaxLength?: number\n\n\t\t/**\n\t\t * If set to true, the text field is read-only.\n\t\t */\n\t\treadonly?: boolean\n\n\t\t/**\n\t\t * If set to true, the text field is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\n\t\t/**\n\t\t * If set to true, an asterisk (*) is displayed\n\t\t * to indicate that the text field is required.\n\t\t */\n\t\trequired?: boolean\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n __name: 'QTextField',\n props: {\n modelValue: { default: '' },\n id: { default: () => useUid() },\n placeholder: { default: '' },\n label: { default: '' },\n size: { default: 'medium' },\n maxLength: { default: undefined },\n readonly: { type: Boolean },\n disabled: { type: Boolean },\n required: { type: Boolean }\n },\n emits: [\"update:modelValue\"],\n setup(__props: any, { expose: __expose, emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\tconst _value = ref(props.modelValue)\n\n\t// Template refs\n\tconst fieldRef = ref<InstanceType<typeof QField> | null>(null)\n\tconst inputRef = ref<HTMLElement | null>(null)\n\n\tconst value = computed({\n\t\tget() {\n\t\t\treturn _value.value\n\t\t},\n\t\tset(newVal: string) {\n\t\t\t_value.value = newVal\n\t\t\temit('update:modelValue', newVal)\n\t\t}\n\t})\n\n\twatch(\n\t\t() => props.modelValue,\n\t\t(newVal) => (_value.value = newVal)\n\t)\n\n\t__expose({\n\t\tfieldRef: computed(() => fieldRef.value?.fieldRef),\n\t\tinputRef: inputRef\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(QField), {\n ref_key: \"fieldRef\",\n ref: fieldRef,\n class: \"q-text-field\",\n id: props.id,\n label: props.label,\n size: props.size,\n readonly: props.readonly,\n disabled: props.disabled,\n required: props.required\n }, _createSlots({\n default: _withCtx(() => [\n _withDirectives(_createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((value).value = $event)),\n ref_key: \"inputRef\",\n ref: inputRef,\n class: \"q-text-field__input\",\n type: \"text\",\n required: props.required,\n placeholder: props.placeholder,\n readonly: props.readonly,\n disabled: props.disabled,\n maxlength: props.maxLength\n }, null, 8, _hoisted_1), [\n [_vModelText, value.value]\n ])\n ]),\n _: 2\n }, [\n (_ctx.$slots.append)\n ? {\n name: \"append\",\n fn: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"append\")\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"id\", \"label\", \"size\", \"readonly\", \"disabled\", \"required\"]))\n}\n}\n\n})","// Components\nimport _QTextField from './QTextField.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QTextField = setupPropsProxy(_QTextField) as typeof _QTextField\n\n// Export components\nexport { QTextField }\n","import { useAttrs as _useAttrs } from 'vue'\n\nexport type Attrs = {\n\tclass?: string[]\n}\n\nexport function useAttrs(): Attrs {\n\tconst _attrs = _useAttrs()\n\n\tconst attrs: Attrs = {}\n\n\tif (typeof _attrs.class === 'string') {\n\t\tattrs.class = _attrs.class.split(' ')\n\t} else if (Array.isArray(_attrs.class)) {\n\t\tattrs.class = _attrs.class\n\t} else {\n\t\tattrs.class = []\n\t}\n\n\treturn attrs\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, withModifiers as _withModifiers, mergeProps as _mergeProps, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode, renderSlot as _renderSlot, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = {\n key: 2,\n class: \"q-select__loader\"\n}\n\nimport { QIcon } from '@/components/QIcon'\n\timport { QList } from '@/components/QList'\n\timport { QOverlay } from '@/components/QOverlay'\n\timport { QSpinnerLoader } from '@/components/QSpinnerLoader'\n\timport { QTextField } from '@/components/QTextField'\n\n\t// Composables\n\timport { useAttrs } from '@/composables/attrs'\n\n\t// Types\n\timport type { Icon } from '@/components/QIcon'\n\timport type { QFieldSize } from '@/components/QField'\n\timport type { QListItemGroupProps, QListItemProps } from '@/components/QList'\n\timport type { Primitive } from '@/types/primitive'\n\n\t// Utils\n\timport { useUid } from '@/composables/uid'\n\timport { computed, nextTick, onMounted, ref, watch } from 'vue'\n\n\t\n\t// The default texts of the component.\n\tconst DEFAULT_TEXTS = {\n\t\tnoData: 'No data available'\n\t}\n\n\t// The default icons of the component.\n\tconst DEFAULT_ICONS: Record<string, Icon> = {\n\t\tclear: {\n\t\t\ticon: 'close'\n\t\t}\n\t}\n\n\ttype Texts = typeof DEFAULT_TEXTS\n\ttype Icons = typeof DEFAULT_ICONS\n\nexport type QComboboxProps = {\n\t\t/**\n\t\t * The value of the component.\n\t\t */\n\t\tmodelValue?: Primitive\n\n\t\t/**\n\t\t * The field unique identifier.\n\t\t */\n\t\tid?: string\n\n\t\t/**\n\t\t * The nature of the autocomplete and selection mechanism.\n\t\t */\n\t\tselectionMode?: 'manual' | 'automatic'\n\n\t\t/**\n\t\t * The mode of the combobox filter.\n\t\t */\n\t\tfilterMode?: 'builtin' | 'manual'\n\n\t\t/**\n\t\t * The label of the input.\n\t\t */\n\t\tlabel?: string\n\n\t\t/**\n\t\t * Whether the value of the component can be cleared.\n\t\t */\n\t\tclearable?: boolean\n\n\t\t/**\n\t\t * Whether the select is readonly.\n\t\t */\n\t\treadonly?: boolean\n\n\t\t/**\n\t\t * Whether the select is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\n\t\t/**\n\t\t * If set to true, an asterisk (*) is displayed\n\t\t * to indicate that the field is required.\n\t\t */\n\t\trequired?: boolean\n\n\t\t/**\n\t\t * Whether the items of the list are being loaded.\n\t\t */\n\t\tloading?: boolean\n\n\t\t/**\n\t\t * The list of available items for selection.\n\t\t */\n\t\titems: (Omit<QListItemProps, 'value' | 'label'> & {\n\t\t\t// allow custom properties\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t[key: string]: any\n\t\t})[]\n\n\t\t/**\n\t\t * The item groups used for organizing the available items.\n\t\t */\n\t\tgroups?: (QListItemGroupProps & {\n\t\t\tid: string\n\t\t})[]\n\n\t\t/**\n\t\t * Property on each item that contains its value.\n\t\t */\n\t\titemValue?: string\n\n\t\t/**\n\t\t * Property on each item that contains its title.\n\t\t */\n\t\titemLabel?: string\n\n\t\t/**\n\t\t * The size category of the input.\n\t\t */\n\t\tsize?: QFieldSize\n\n\t\t/**\n\t\t * Necessary strings to be used in labels and buttons of the component.\n\t\t */\n\t\ttexts?: Texts\n\n\t\t/**\n\t\t * The icons of the component.\n\t\t */\n\t\ticons?: Icons\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n ...{\n\t\tinheritAttrs: false\n\t},\n __name: 'QCombobox',\n props: {\n modelValue: { type: [String, Number, Boolean, Symbol], default: undefined },\n id: { default: () => useUid() },\n selectionMode: { default: 'automatic' },\n filterMode: { default: 'builtin' },\n label: { default: '' },\n clearable: { type: Boolean },\n readonly: { type: Boolean },\n disabled: { type: Boolean },\n required: { type: Boolean },\n loading: { type: Boolean },\n items: {},\n groups: { default: () => [] },\n itemValue: { default: 'key' },\n itemLabel: { default: 'label' },\n size: { default: 'medium' },\n texts: { default: () => DEFAULT_TEXTS },\n icons: { default: () => DEFAULT_ICONS }\n },\n emits: [\"update:modelValue\", \"update:inputValue\", \"before-show\", \"before-hide\", \"show\", \"hide\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\t\n\n\tconst attrs = useAttrs()\n\n\tconst value = ref(props.modelValue)\n\tconst open = ref(false)\n\tconst inputValue = ref('')\n\tconst highlightedItemIdx = ref<number | undefined>(undefined)\n\n\t// Template refs\n\tconst triggerEl = ref<InstanceType<typeof QTextField> | null>(null)\n\tconst listRef = ref<InstanceType<typeof QList> | null>(null)\n\tconst contentRef = ref<HTMLElement | null>(null)\n\n\tonMounted(updateInputValue)\n\n\t/**\n\t * Whether the value of the text field can be cleared.\n\t */\n\tconst canClear = computed<boolean>(\n\t\t() => props.clearable && !props.readonly && !props.disabled && !props.loading\n\t)\n\n\t/**\n\t * The list of currently visible items.\n\t */\n\tconst visibleItems = computed(() => {\n\t\tif (props.filterMode === 'manual' || !isDirty.value) return props.items\n\n\t\treturn props.items?.filter((item) =>\n\t\t\titem[props.itemLabel].toLowerCase().startsWith(inputValue.value.toLowerCase())\n\t\t)\n\t})\n\n\t/**\n\t * The currently selected item.\n\t */\n\tconst selectedItem = computed(() => {\n\t\treturn props.items?.find((item) => item[props.itemValue] === value.value)\n\t})\n\n\t/**\n\t * The value of the currently highlighted item.\n\t */\n\tconst highlightedItem = computed(() => {\n\t\tconst index = highlightedItemIdx.value\n\n\t\tif (index !== undefined && visibleItems.value[index]) {\n\t\t\treturn visibleItems.value[index]\n\t\t}\n\n\t\treturn undefined\n\t})\n\n\tconst activeDescendantId = computed<string | undefined>(() => {\n\t\tif (highlightedItemIdx.value === undefined) {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst activeDescendant = listRef.value?.getItem(highlightedItemIdx.value)\n\t\treturn activeDescendant?.id\n\t})\n\n\t/**\n\t * Whether the input value is not empty and is different from the selected value.\n\t */\n\tconst isDirty = computed<boolean>(() => {\n\t\treturn (\n\t\t\tinputValue.value.length > 0 &&\n\t\t\tinputValue.value !== selectedItem.value?.[props.itemLabel]\n\t\t)\n\t})\n\n\t/**\n\t * Selects a new value, updates the value of the text field, and emits the 'update:modelValue' event.\n\t *\n\t * @param newVal - The new value to be selected. If undefined, the current selection will be cleared.\n\t */\n\tfunction select(newVal: Primitive | undefined) {\n\t\t// Update the internal state with the new value\n\t\tvalue.value = newVal\n\n\t\t// Update the input value based on the selected item\n\t\tupdateInputValue()\n\n\t\temit('update:modelValue', newVal)\n\t}\n\n\t/**\n\t * Accepts a suggestion by selecting a new value and hiding the combobox dropdown.\n\t *\n\t * @param newVal - The new value to be selected.\n\t */\n\tfunction acceptSuggestion(newVal: Primitive) {\n\t\t// Select the new value.\n\t\tselect(newVal)\n\n\t\t// Hide the combobox dropdown.\n\t\thide()\n\t}\n\n\t/**\n\t * Updates the input value based on the currently selected value.\n\t */\n\tfunction updateInputValue() {\n\t\t// Update the input value with the label of the selected item,\n\t\t// or clear it if no item is found.\n\t\tinputValue.value = selectedItem.value?.[props.itemLabel] || ''\n\t}\n\n\t/**\n\t * Displays the combobox dropdown if it is not currently open\n\t * and the combobox is not in a readonly or disabled state.\n\t */\n\tfunction show() {\n\t\t// Return early if the dropdown is already open\n\t\t// or if the combobox is in readonly or disabled state.\n\t\tif (open.value || props.readonly || props.disabled) return\n\n\t\temit('before-show')\n\t\topen.value = true\n\t}\n\n\t/**\n\t * Hides the combobox dropdown if it is currently open.\n\t *\n\t * The function emits the 'before-hide' event before closing the dropdown, sets the 'open' state\n\t * to false, and resets the internal state for the highlighted item index.\n\t */\n\tfunction hide() {\n\t\t// Return early if the dropdown is not open.\n\t\tif (!open.value) return\n\n\t\temit('before-hide')\n\t\topen.value = false\n\n\t\t// Reset internal state.\n\t\thighlightedItemIdx.value = undefined\n\t}\n\n\t/**\n\t * Clears the selected value.\n\t */\n\tfunction clear() {\n\t\t// Clear the selected value.\n\t\tselect(undefined)\n\n\t\t// Reset internal state.\n\t\thighlightedItemIdx.value = undefined\n\t}\n\n\t/**\n\t * Handles the 'click' event on the combobox input.\n\t */\n\tfunction onClick() {\n\t\t// Display the combobox dropdown\n\t\tshow()\n\n\t\t// If a selected item exists,\n\t\t// calculate its index among visible items and scroll it into view.\n\t\tif (selectedItem.value !== undefined) {\n\t\t\tconst selectedItemIdx = visibleItems.value.indexOf(selectedItem.value)\n\n\t\t\tif (selectedItemIdx !== -1) {\n\t\t\t\tnextTick(() => scrollIntoView(selectedItemIdx))\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Handles the 'keydown' event on the combobox input\n\t * and performs actions based on the pressed key.\n\t *\n\t * @param e - The KeyboardEvent representing the keydown event.\n\t */\n\tfunction onKeydown(e: KeyboardEvent) {\n\t\tif (!e.key || props.readonly || props.disabled) return\n\n\t\tif (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\t\t}\n\n\t\tif ('Escape' === e.key) {\n\t\t\tif (open.value) hide()\n\t\t\telse clear()\n\t\t} else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n\t\t\tif (!open.value) {\n\t\t\t\t// The focus is in the combobox.\n\t\t\t\tshow()\n\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tif ('ArrowDown' === e.key) {\n\t\t\t\t\t\t// `Down Arrow`:\n\t\t\t\t\t\t// Either highlight the selected value\n\t\t\t\t\t\t// or the first focusable element in the popup.\n\t\t\t\t\t\thighlightDefault()\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// `Up Arrow`: Highlight the last focusable element in the popup.\n\t\t\t\t\t\thighlightLast()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\t// The focus is in the listbox popup.\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tif (highlightedItemIdx.value === undefined) {\n\t\t\t\t\t\thighlightDefault()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst direction = 'ArrowDown' === e.key ? 'next' : 'prev'\n\t\t\t\t\t\thighlightNext(highlightedItemIdx.value, direction)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t} else if ('Enter' === e.key) {\n\t\t\t// Accepts the suggestion.\n\t\t\tif (highlightedItem.value === undefined) return\n\n\t\t\tacceptSuggestion(highlightedItem.value[props.itemValue])\n\t\t} else if ('Home' === e.key) {\n\t\t\t// Moves focus to the first option.\n\t\t\thighlightedItemIdx.value = listRef.value?.getFirstFocusableItemIndex()\n\t\t} else if ('End' === e.key) {\n\t\t\t// Moves focus to the last option.\n\t\t\thighlightedItemIdx.value = listRef.value?.getLastFocusableItemIndex()\n\t\t} else if (/^[a-z]$/i.test(e.key) || 'Backspace' === e.key) {\n\t\t\t// Display the popup once the user starts typing.\n\t\t\tshow()\n\t\t}\n\t}\n\n\t/**\n\t * Highlights the default item based on the currently selected value.\n\t */\n\tfunction highlightDefault() {\n\t\tif (value.value !== undefined) {\n\t\t\t// Attempt to find the index of the item with the currently selected value\n\t\t\t// among visible items.\n\t\t\tconst selectedItemIdx = visibleItems.value.findIndex(\n\t\t\t\t(item) => item[props.itemValue] === value.value\n\t\t\t)\n\n\t\t\t// If the selected value is not found among visible items,\n\t\t\t// set the index to the first focusable item.\n\t\t\tif (selectedItemIdx === -1) {\n\t\t\t\thighlightedItemIdx.value = listRef.value?.getFirstFocusableItemIndex()\n\t\t\t} else {\n\t\t\t\thighlightedItemIdx.value = selectedItemIdx\n\t\t\t}\n\t\t} else {\n\t\t\t// If there is no selected value,\n\t\t\t// set the index to the first focusable item.\n\t\t\thighlightedItemIdx.value = listRef.value?.getFirstFocusableItemIndex()\n\t\t}\n\t}\n\n\t/**\n\t * Highlights the last focusable item in the list.\n\t */\n\tfunction highlightLast() {\n\t\thighlightedItemIdx.value = listRef.value?.getLastFocusableItemIndex()\n\t}\n\n\t/**\n\t * Highlights the next or previous item based on the provided starting index and direction.\n\t *\n\t * @param from - The starting index for determining the next or previous highlighted item.\n\t * @param direction - The direction in which to highlight the next or previous item ('next' or 'prev').\n\t */\n\tfunction highlightNext(from: number, direction: 'next' | 'prev') {\n\t\thighlightedItemIdx.value = listRef.value?.getAdjacentItemIndex(from, direction)\n\t}\n\n\t/**\n\t * Handles the 'focusout' event for the combobox component.\n\t *\n\t * @param e - The FocusEvent representing the 'focusout' event.\n\t */\n\tfunction onFocusOut(e: FocusEvent) {\n\t\t// Check if focus went to the dropdown element,\n\t\t// an element within it or the trigger element.\n\t\t// If not, the dropdown should close.\n\t\tif (\n\t\t\t!contentRef.value?.contains(e.relatedTarget as Node) &&\n\t\t\t!triggerEl.value?.fieldRef?.contains(e.relatedTarget as Node)\n\t\t) {\n\t\t\thide()\n\n\t\t\t// When the combobox loses focus,\n\t\t\t// the value that is displayed must follow the rules\n\t\t\t// defined by the combobox mode.\n\t\t\t// If the user is not free to input their own value,\n\t\t\t// then the input should be cleared if no suggestion was accepted.\n\t\t\tupdateInputValue()\n\t\t}\n\t}\n\n\t/**\n\t * Handles the 'mouseup' event on the list by setting focus\n\t * to the input element within the trigger element.\n\t */\n\tfunction onListMouseUp() {\n\t\ttriggerEl.value?.inputRef?.focus()\n\t}\n\n\t/**\n\t * Handles the enter event for the overlay element.\n\t */\n\tfunction onOverlayEnter() {\n\t\temit('show')\n\t}\n\n\t/**\n\t * Handles the leave event for the overlay element.\n\t */\n\tfunction onOverlayLeave() {\n\t\temit('hide')\n\t}\n\n\t/**\n\t * Scrolls the item at the specified index\n\t * into view within the combobox dropdown.\n\t *\n\t * @param idx - The index of the item to scroll into view.\n\t */\n\tfunction scrollIntoView(idx: number) {\n\t\tconst item = listRef.value?.getItem(idx)\n\t\titem?.scrollIntoView({ block: 'nearest', inline: 'start' })\n\t}\n\n\t/**\n\t * Automatically update own local state.\n\t */\n\twatch(\n\t\t() => props.modelValue,\n\t\t(newVal) => {\n\t\t\tvalue.value = newVal\n\t\t}\n\t)\n\n\t/**\n\t * Ensure that the currently highlighted item scrolls into view when focused.\n\t */\n\twatch(highlightedItemIdx, (newVal) => {\n\t\tif (newVal !== undefined) {\n\t\t\tscrollIntoView(newVal)\n\t\t}\n\t})\n\n\t/**\n\t * React to input value changes.\n\t */\n\twatch(inputValue, (newVal) => {\n\t\tif (!newVal && canClear.value) {\n\t\t\t// Clear selection if the value of the text field is cleared.\n\t\t\tclear()\n\t\t} else if (open.value && props.selectionMode === 'automatic') {\n\t\t\t// Either highlight the selected value\n\t\t\t// or the first focusable element in the popup.\n\t\t\tnextTick(highlightDefault)\n\t\t}\n\t})\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_unref(QTextField), {\n modelValue: inputValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((inputValue).value = $event)),\n id: props.id,\n label: props.label,\n required: props.required,\n ref_key: \"triggerEl\",\n ref: triggerEl,\n role: \"combobox\",\n class: _normalizeClass(['q-combobox', ..._unref(attrs).class]),\n readonly: props.readonly,\n disabled: props.disabled,\n \"aria-expanded\": open.value,\n \"aria-haspopup\": \"listbox\",\n \"aria-autocomplete\": \"list\",\n \"aria-activedescendant\": activeDescendantId.value,\n size: props.size,\n onClick: onClick,\n onFocusout: onFocusOut,\n onKeydown: _withModifiers(onKeydown, [\"stop\"])\n }, {\n append: _withCtx(() => [\n (canClear.value && inputValue.value)\n ? (_openBlock(), _createBlock(_unref(QIcon), _mergeProps({ key: 0 }, props.icons.clear, {\n class: \"q-combobox__clear\",\n onClick: _withModifiers(clear, [\"stop\",\"prevent\"])\n }), null, 16, [\"onClick\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"id\", \"label\", \"required\", \"class\", \"readonly\", \"disabled\", \"aria-expanded\", \"aria-activedescendant\", \"size\", \"onKeydown\"]),\n (triggerEl.value?.fieldRef)\n ? (_openBlock(), _createBlock(_unref(QOverlay), {\n key: 0,\n \"model-value\": open.value,\n spy: \"\",\n trigger: \"manual\",\n placement: \"bottom\",\n width: \"anchor\",\n offset: 4,\n anchor: triggerEl.value?.fieldRef,\n onEnter: onOverlayEnter,\n onLeave: onOverlayLeave\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n ref_key: \"contentRef\",\n ref: contentRef,\n class: \"q-select__body\",\n onFocusout: onFocusOut\n }, [\n _renderSlot(_ctx.$slots, \"body.prepend\"),\n (props.loading)\n ? (_openBlock(), _createBlock(_unref(QSpinnerLoader), {\n key: 0,\n class: \"q-select__loader\",\n size: 24\n }))\n : (visibleItems.value.length)\n ? (_openBlock(), _createBlock(_unref(QList), {\n key: 1,\n ref_key: \"listRef\",\n ref: listRef,\n class: \"q-select__items\",\n modelValue: value.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event: any) => ((value).value = $event)),\n acceptSuggestion\n ],\n highlighted: highlightedItem.value?.[props.itemValue],\n items: visibleItems.value,\n groups: _ctx.groups,\n \"item-label\": props.itemLabel,\n \"item-value\": props.itemValue,\n onMouseup: onListMouseUp\n }, null, 8, [\"modelValue\", \"highlighted\", \"items\", \"groups\", \"item-label\", \"item-value\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_1, _toDisplayString(_ctx.texts.noData), 1)),\n _renderSlot(_ctx.$slots, \"body.append\")\n ], 544)\n ]),\n _: 3\n }, 8, [\"model-value\", \"anchor\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","// Components\nimport _QCombobox from './QCombobox.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QCombobox = setupPropsProxy(_QCombobox) as typeof _QCombobox\n\n// Export components\nexport { QCombobox }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, mergeProps as _mergeProps, createElementVNode as _createElementVNode, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"q-input-group__prepend\"\n}\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = {\n key: 1,\n class: \"q-input-group__append\"\n}\nconst _hoisted_4 = { key: 0 }\n\nimport { QField } from '@/components/QField'\n\timport { QIcon } from '@/components/QIcon'\n\n\t// Composables\n\timport { useUid } from '@/composables/uid'\n\n\t// Types\n\timport type { Icon } from '@/components/QIcon'\n\n\texport type QInputGroupProps = {\n\t\t/**\n\t\t * The field unique identifier.\n\t\t */\n\t\tid?: string\n\n\t\t/**\n\t\t * The label of the input.\n\t\t */\n\t\tlabel?: string\n\n\t\t/**\n\t\t * Whether the input is readonly.\n\t\t */\n\t\treadonly?: boolean\n\n\t\t/**\n\t\t * Whether the input is disabled.\n\t\t */\n\t\tdisabled?: boolean\n\n\t\t/**\n\t\t * If set to true, an asterisk (*) is displayed\n\t\t * to indicate that the field is required.\n\t\t */\n\t\trequired?: boolean\n\n\t\t/**\n\t\t * An icon to add at the start of the input group.\n\t\t */\n\t\tprependIcon?: Icon\n\n\t\t/**\n\t\t * An icon to add at the end of the input group.\n\t\t */\n\t\tappendIcon?: Icon\n\t}\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n ...{\n\t\tinheritAttrs: false\n\t},\n __name: 'QInputGroup',\n props: {\n id: { default: () => useUid() },\n label: { default: '' },\n readonly: { type: Boolean },\n disabled: { type: Boolean },\n required: { type: Boolean },\n prependIcon: { default: undefined },\n appendIcon: { default: undefined }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(QField), {\n id: props.id,\n label: props.label,\n readonly: props.readonly,\n disabled: props.disabled,\n required: props.required\n }, {\n control: _withCtx(() => [\n _createElementVNode(\"div\", _mergeProps({ class: \"q-input-group\" }, _ctx.$attrs), [\n (_ctx.$slots.prepend || props.prependIcon)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (props.prependIcon)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_2, [\n _createVNode(_unref(QIcon), _normalizeProps(_guardReactiveProps(props.prependIcon)), null, 16)\n ]))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"prepend\")\n ]))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"default\"),\n (_ctx.$slots.append || props.appendIcon)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (props.appendIcon)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, [\n _createVNode(_unref(QIcon), _normalizeProps(_guardReactiveProps(props.appendIcon)), null, 16)\n ]))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"append\")\n ]))\n : _createCommentVNode(\"\", true)\n ], 16)\n ]),\n _: 3\n }, 8, [\"id\", \"label\", \"readonly\", \"disabled\", \"required\"]))\n}\n}\n\n})","// Components\nimport _QInputGroup from './QInputGroup.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QInputGroup = setupPropsProxy(_QInputGroup) as typeof _QInputGroup\n\n// Export components\nexport { QInputGroup }\n","// Components\nimport _QLineLoader from './QLineLoader.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QLineLoader = setupPropsProxy(_QLineLoader) as typeof _QLineLoader\n\n// Export components\nexport { QLineLoader }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, renderSlot as _renderSlot, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, unref as _unref, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"q-popover__header\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"q-popover__body\"\n}\nconst _hoisted_3 = [\"innerHTML\"]\nconst _hoisted_4 = { key: 1 }\n\nimport { Placement } from '@/composables/overlay'\n\n\t// Components\n\timport { QOverlay } from '@/components/QOverlay'\n\n\t// Utils\n\timport { Selector } from '@/utils/getElement'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n ...{\n\t\tinheritAttrs: false\n\t},\n __name: 'QPopover',\n props: {\n modelValue: { type: Boolean },\n anchor: {},\n arrow: { type: Boolean, default: true },\n attach: { default: 'body' },\n disabled: { type: Boolean },\n html: { type: Boolean, default: true },\n placement: { default: 'right' },\n spy: { type: Boolean, default: true },\n text: {},\n title: {}\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Composables\n\t\n\n\t\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(QOverlay), {\n \"model-value\": props.modelValue,\n trigger: \"click\",\n anchor: props.anchor,\n arrow: props.arrow,\n attach: props.attach,\n \"content-classes\": ['q-popover'],\n disabled: props.disabled,\n placement: props.placement,\n spy: props.spy\n }, {\n default: _withCtx(() => [\n (props.title || _ctx.$slots.header)\n ? (_openBlock(), _createElementBlock(\"h3\", _hoisted_1, [\n _createTextVNode(_toDisplayString(props.title) + \" \", 1),\n _renderSlot(_ctx.$slots, \"header\")\n ]))\n : _createCommentVNode(\"\", true),\n (props.text || _ctx.$slots.body)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (props.html)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n innerHTML: props.text\n }, null, 8, _hoisted_3))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(props.text), 1)),\n _renderSlot(_ctx.$slots, \"body\")\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"model-value\", \"anchor\", \"arrow\", \"attach\", \"disabled\", \"placement\", \"spy\"]))\n}\n}\n\n})","// Components\nimport _QPopover from './QPopover.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QPopover = setupPropsProxy(_QPopover) as typeof _QPopover\n\n// Export components\nexport { QPopover }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, createVNode as _createVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, mergeProps as _mergeProps, createBlock as _createBlock, normalizeClass as _normalizeClass, withCtx as _withCtx, createSlots as _createSlots, renderSlot as _renderSlot, createElementVNode as _createElementVNode, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"q-select__value\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"q-select__placeholder\"\n}\nconst _hoisted_3 = [\"onKeydown\"]\n\nimport { QIcon } from '@/components/QIcon'\n\timport { QField } from '@/components/QField'\n\timport { QList } from '@/components/QList'\n\timport { QOverlay } from '@/components/QOverlay'\n\timport { QSpinnerLoader } from '@/components/QSpinnerLoader'\n\n\t// Composables\n\timport { useAttrs } from '@/composables/attrs'\n\n\t// Types\n\timport type { Icon } from '@/components/QIcon'\n\timport type { QFieldSize } from '@/components/QField'\n\timport type { QListItemProps, QListItemGroupProps } from '@/components/QList'\n\timport type { Primitive } from '@/types/primitive'\n\n\t// Utils\n\timport { computed, nextTick, ref, watch } from 'vue'\n\timport { useUid } from '@/composables/uid'\n\n\t\n\t// The default texts of the component.\n\tconst DEFAULT_TEXTS = {\n\t\tplaceholder: 'Choose...'\n\t}\n\n\t// The default icons of the component.\n\tconst DEFAULT_ICONS: Record<string, Icon> = {\n\t\tchevron: {\n\t\t\ticon: 'chevron-down'\n\t\t},\n\t\tclear: {\n\t\t\ticon: 'close'\n\t\t}\n\t}\n\ntype Texts = typeof DEFAULT_TEXTS\n\ttype Icons = typeof DEFAULT_ICONS\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n ...{\n\t\tinheritAttrs: false\n\t},\n __name: 'QSelect',\n props: {\n modelValue: { type: [String, Number, Boolean, Symbol], default: undefined },\n id: { default: () => useUid() },\n label: { default: '' },\n clearable: { type: Boolean },\n readonly: { type: Boolean },\n disabled: { type: Boolean },\n required: { type: Boolean },\n loading: { type: Boolean },\n icons: { default: () => DEFAULT_ICONS },\n items: {},\n groups: { default: () => [] },\n itemValue: { default: 'key' },\n itemLabel: { default: 'label' },\n size: { default: 'medium' },\n texts: { default: () => DEFAULT_TEXTS }\n },\n emits: [\"update:modelValue\", \"before-show\", \"before-hide\", \"show\", \"hide\"],\n setup(__props: any, { emit }) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\n\t\n\n\tconst attrs = useAttrs()\n\n\tconst value = ref(props.modelValue)\n\tconst open = ref(false)\n\tconst typed = ref('')\n\n\t// Template refs\n\tconst triggerEl = ref<InstanceType<typeof QField> | null>(null)\n\tconst listRef = ref<InstanceType<typeof QList> | null>(null)\n\tconst contentRef = ref<HTMLElement | null>(null)\n\n\tconst selectedItem = computed(\n\t\t() => props.items?.find((item) => item[props.itemValue] === value.value)\n\t)\n\n\tconst displayValue = computed<string>(() =>\n\t\tselectedItem.value ? selectedItem.value[props.itemLabel] : ''\n\t)\n\n\tconst canClear = computed<boolean>(\n\t\t() => props.clearable && !props.readonly && !props.disabled && !props.loading\n\t)\n\n\tfunction onSelect(newVal: Primitive | undefined) {\n\t\tvalue.value = newVal\n\t\temit('update:modelValue', newVal)\n\t\thide()\n\t}\n\n\tfunction clear() {\n\t\tif (!canClear.value) return\n\n\t\tonSelect(undefined)\n\t}\n\n\tfunction onClick() {\n\t\tif (props.readonly || props.disabled) return\n\n\t\tif (open.value) hide()\n\t\telse show()\n\t}\n\n\tfunction onListFocusOut(e: FocusEvent) {\n\t\t// Check if focus went to the dropdown element,\n\t\t// an element within it or the trigger element.\n\t\t// If not, the dropdown should close.\n\t\tif (\n\t\t\t!contentRef.value?.contains(e.relatedTarget as Node) &&\n\t\t\t!triggerEl.value?.fieldRef?.contains(e.relatedTarget as Node)\n\t\t)\n\t\t\thide()\n\t}\n\n\tfunction show() {\n\t\tif (open.value) return\n\t\temit('before-show')\n\t\topen.value = true\n\t}\n\n\tfunction hide() {\n\t\tif (!open.value) return\n\t\temit('before-hide')\n\t\topen.value = false\n\t}\n\n\tlet timeoutId: number | undefined = undefined\n\n\tfunction onKeydown(e: KeyboardEvent) {\n\t\tif (!e.key || props.readonly || props.disabled) return\n\n\t\t// Clear any existing timeout\n\t\twindow.clearTimeout(timeoutId)\n\n\t\tif (['Enter', ' ', 'ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n\t\t\te.preventDefault()\n\t\t\te.stopPropagation()\n\t\t}\n\n\t\tif (['Enter', ' '].includes(e.key)) {\n\t\t\topen.value = true\n\t\t}\n\n\t\tif (['Escape', 'Tab'].includes(e.key)) {\n\t\t\tif (open.value) open.value = false\n\t\t\telse if (props.clearable && e.key === 'Escape') clear()\n\t\t}\n\n\t\tif (e.key === 'Delete' && props.clearable) {\n\t\t\tclear()\n\t\t}\n\n\t\tif (/^[a-z]$/i.test(e.key)) {\n\t\t\ttyped.value += e.key.toLowerCase()\n\n\t\t\t// Find the option that starts with the typed string\n\t\t\tfor (let i = 0; i < props.items.length; i++) {\n\t\t\t\tconst item = props.items[i]\n\t\t\t\tif (item[props.itemLabel].toLowerCase().startsWith(typed.value)) {\n\t\t\t\t\t// Select the matching option\n\t\t\t\t\tfocusItem(i)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Clear the typed string after a short delay\n\t\ttimeoutId = window.setTimeout(function () {\n\t\t\ttyped.value = ''\n\t\t}, 500)\n\t}\n\n\tfunction onOverlayEnter() {\n\t\tprops.loading ? contentRef.value?.focus() : focusList()\n\t\temit('show')\n\t}\n\n\tfunction onOverlayLeave() {\n\t\tfocusMainInput()\n\t\temit('hide')\n\t}\n\n\tfunction focusMainInput() {\n\t\ttriggerEl.value?.fieldRef?.focus()\n\t}\n\n\tfunction focusList() {\n\t\tlistRef.value?.$el.focus()\n\t}\n\n\tfunction focusItem(idx: number) {\n\t\tlistRef.value?.focusItem(idx)\n\t}\n\n\twatch(\n\t\t() => props.modelValue,\n\t\t(newVal) => {\n\t\t\tvalue.value = newVal\n\t\t}\n\t)\n\n\twatch(\n\t\t() => props.loading,\n\t\t(newVal) => {\n\t\t\t// If done loading while the overlay is open,\n\t\t\t// focus the list.\n\t\t\tif (!newVal && open.value) nextTick(focusList)\n\t\t}\n\t)\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_unref(QField), {\n id: props.id,\n label: props.label,\n required: props.required,\n ref_key: \"triggerEl\",\n ref: triggerEl,\n role: \"combobox\",\n tabindex: \"0\",\n class: _normalizeClass([\n\t\t\t'q-select',\n\t\t\t{\n\t\t\t\t'q-select--readonly': props.readonly,\n\t\t\t\t'q-select--disabled': props.disabled,\n\t\t\t\t'q-select--expanded': open.value\n\t\t\t},\n\t\t\t..._unref(attrs).class\n\t\t]),\n readonly: props.readonly,\n disabled: props.disabled,\n \"aria-expanded\": open.value,\n \"aria-haspopup\": \"listbox\",\n size: props.size,\n onClick: onClick,\n onKeydown: _withModifiers(onKeydown, [\"stop\"])\n }, _createSlots({\n append: _withCtx(() => [\n (canClear.value && value.value)\n ? (_openBlock(), _createBlock(_unref(QIcon), _mergeProps({ key: 0 }, props.icons.clear, {\n class: \"q-select__clear\",\n onClick: _withModifiers(clear, [\"stop\",\"prevent\"])\n }), null, 16, [\"onClick\"]))\n : _createCommentVNode(\"\", true),\n (!props.readonly && !props.disabled)\n ? (_openBlock(), _createBlock(_unref(QIcon), _mergeProps({ key: 1 }, props.icons.chevron, { class: \"q-select__chevron\" }), null, 16))\n : _createCommentVNode(\"\", true)\n ]),\n default: _withCtx(() => [\n (value.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _toDisplayString(displayValue.value), 1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(_ctx.texts.placeholder), 1))\n ]),\n _: 2\n }, [\n (selectedItem.value?.icon)\n ? {\n name: \"prepend\",\n fn: _withCtx(() => [\n _createVNode(_unref(QIcon), _normalizeProps(_guardReactiveProps(selectedItem.value?.icon)), null, 16)\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032, [\"id\", \"label\", \"required\", \"class\", \"readonly\", \"disabled\", \"aria-expanded\", \"size\", \"onKeydown\"]),\n (triggerEl.value?.fieldRef)\n ? (_openBlock(), _createBlock(_unref(QOverlay), {\n key: 0,\n \"model-value\": open.value,\n spy: \"\",\n trigger: \"manual\",\n placement: \"bottom\",\n width: \"anchor\",\n offset: 2,\n anchor: triggerEl.value?.fieldRef,\n onEnter: onOverlayEnter,\n onLeave: onOverlayLeave\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n ref_key: \"contentRef\",\n ref: contentRef,\n class: \"q-select__body\",\n tabindex: \"-1\",\n onFocusout: onListFocusOut,\n onKeydown: _withModifiers(onKeydown, [\"stop\"])\n }, [\n _renderSlot(_ctx.$slots, \"body.prepend\"),\n (props.loading)\n ? (_openBlock(), _createBlock(_unref(QSpinnerLoader), {\n key: 0,\n class: \"q-select__loader\",\n size: 24\n }))\n : (_openBlock(), _createBlock(_unref(QList), {\n key: 1,\n ref_key: \"listRef\",\n ref: listRef,\n class: \"q-select__items\",\n modelValue: value.value,\n \"onUpdate:modelValue\": [\n _cache[0] || (_cache[0] = ($event: any) => ((value).value = $event)),\n onSelect\n ],\n items: props.items,\n groups: _ctx.groups,\n \"item-label\": props.itemLabel,\n \"item-value\": props.itemValue\n }, null, 8, [\"modelValue\", \"items\", \"groups\", \"item-label\", \"item-value\"])),\n _renderSlot(_ctx.$slots, \"body.append\")\n ], 40, _hoisted_3)\n ]),\n _: 3\n }, 8, [\"model-value\", \"anchor\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","// Components\nimport _QSelect from './QSelect.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QSelect = setupPropsProxy(_QSelect) as typeof _QSelect\n\n// Export components\nexport { QSelect }\n","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, unref as _unref, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = [\"innerHTML\"]\nconst _hoisted_2 = { key: 1 }\n\nimport { QOverlay } from '@/components/QOverlay'\n\n\t// Composables\n\timport { Appearance, Placement, Trigger } from '@/composables/overlay'\n\timport { Selector } from '@/utils/getElement'\n\n\t\nexport default /*#__PURE__*/_defineComponent({\n ...{\n\t\tinheritAttrs: false\n\t},\n __name: 'QTooltip',\n props: {\n modelValue: { type: Boolean },\n anchor: {},\n appearance: { default: 'inverted' },\n arrow: { type: Boolean, default: true },\n attach: { default: 'body' },\n delay: { default: 500 },\n disabled: { type: Boolean },\n html: { type: Boolean, default: true },\n placement: { default: 'right' },\n text: {},\n trigger: { default: 'hover' }\n },\n setup(__props: any) {\n\nconst props = __props;\n\n\t// Components\n\t\n\n\t\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(QOverlay), {\n \"model-value\": props.modelValue,\n anchor: props.anchor,\n appearance: props.appearance,\n arrow: props.arrow,\n attach: props.attach,\n \"content-classes\": ['q-tooltip'],\n delay: props.delay,\n disabled: props.disabled,\n placement: props.placement,\n trigger: props.trigger\n }, {\n default: _withCtx(() => [\n (props.html)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n innerHTML: props.text\n }, null, 8, _hoisted_1))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_2, _toDisplayString(props.text), 1))\n ]),\n _: 1\n }, 8, [\"model-value\", \"anchor\", \"appearance\", \"arrow\", \"attach\", \"delay\", \"disabled\", \"placement\", \"trigger\"]))\n}\n}\n\n})","// Components\nimport _QTooltip from './QTooltip.vue'\n\n// Utils\nimport { setupPropsProxy } from '@/utils/setupPropsProxy'\n\nconst QTooltip = setupPropsProxy(_QTooltip) as typeof _QTooltip\n\n// Export components\nexport { QTooltip }\n","import { DirectiveBinding, ObjectDirective } from 'vue'\n\ninterface HTMLElementWithClickOutsideEvent extends HTMLElement {\n\tclickOutsideEvent: (event: Event) => void\n}\n\nexport const clickOutside: ObjectDirective<HTMLElementWithClickOutsideEvent> = {\n\tmounted(el: HTMLElementWithClickOutsideEvent, binding: DirectiveBinding) {\n\t\tel.clickOutsideEvent = function (event: Event) {\n\t\t\tconst target = event.target as Element\n\n\t\t\tif (!binding.arg) {\n\t\t\t\tif (!(el === target || el.contains(target))) {\n\t\t\t\t\tbinding.value(event, el)\n\t\t\t\t}\n\t\t\t} else if (!(el === target || el.contains(target) || target.closest(binding.arg))) {\n\t\t\t\tbinding.value(event, el)\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener('click', el.clickOutsideEvent)\n\t},\n\tunmounted(el) {\n\t\tdocument.removeEventListener('click', el.clickOutsideEvent)\n\t}\n}\n"],"names":["isEmpty","object","isObject","obj","merge","source","target","out","key","sourceProperty","targetProperty","DEFAULTS_SYMBOL","useDefaults","vm","getCurrentInstance","component","defaults","injectDefaults","computed","_a","provideDefaults","currentDefaults","providedDefaults","ref","newDefaults","provide","inject","defaultLightColorScheme","defaultDarkColorScheme","parseColor","color","r","g","b","lighten","rgb","amount","hsl","rgbToHsl","factor","hslToRgb","darken","colorToHex","max","min","h","s","l","d","q","p","hueToRgb","THEME_SYMBOL","useTheme","theme","installThemes","app","config","defaultTheme","defaultColorScheme","variable","hex","lightVariant","darkVariant","mergeColorSchemes","defaultThemeName","state","watch","name","activeTheme","generateRootStyle","userColorScheme","colors","themeNode","cssText","value","toProperty","createFramework","components","directives","globalDefaults","_hoisted_2","_createElementVNode","_sfc_main$j","_defineComponent","__props","props","loaderStyle","_ctx","_cache","_openBlock","_createElementBlock","_normalizeStyle","propIsDefined","vnode","prop","setupPropsProxy","setup","ctx","componentDefaults","_props","propValue","defaultValue","QSpinnerLoader","_QSpinnerLoader","_hoisted_1","_hoisted_3","QButton","emit","isDisabled","onClick","event","classes","size","_normalizeClass","_withModifiers","_createVNode","_unref","_createCommentVNode","_Fragment","_createTextVNode","_toDisplayString","_renderSlot","QButtonGroup","toRef","QButtonToggle","_active","newVal","active","toggle","option","_createBlock","_withCtx","_renderList","_sfc_main$f","QIconSvg","QIconFont","QIconImg","_resolveDynamicComponent","_sfc_main$e","libraryVariant","iconClass","iconStyle","_sfc_main$d","cache","InlineSvg","defineComponent","ctn","createElement","cprops","attrs","a","svgEl","setTitle","src","makePromiseState","svg","err","url","response","text","newValue","title","titleTags","titleEl","promise","isPending","result","v","e","_sfc_main$c","onLoaded","onUnloaded","QIcon","_QIcon","_QIconFont","_QIconImg","_QIconSvg","_sfc_main$b","__expose","clicking","listTag","groups","listRef","onItemSelect","onMouseDown","onMouseUp","onFocus","targetIdx","item","getFirstFocusableItemIndex","preventScroll","focusItem","onKeyDown","focus","direction","getActiveAdjacentItemIndex","getLastFocusableItemIndex","itemIdx","getItems","nodes","getItem","idx","getActiveItemIndex","items","firstFocusableItem","isFocusable","lastFocusableItem","atTheEdge","getAdjacentItemIndex","adjacentIdx","getGroupItems","group","QListItemGroup","QListItem","counter","useUid","DEFAULT_ICONS","_sfc_main$a","id","onSelect","_normalizeProps","_mergeProps","_sfc_main$9","QList","_QList","_QListItem","_QListItemGroup","computePosition","anchor","overlay","tentativePlacement","width","anchorPosition","left","top","overlayPosition","overlayWidth","overlayHeight","placement","canReposition","getOptimalFallbackPosition","position","to","xOK","yOK","isHorizontalPositionValid","isVerticalPositionValid","current","fallbackOrder","getElement","selector","QOverlay","reactive","visible","overlayProps","xOffset","yOffset","reposition","timeoutId","show","_delay","hide","animationTimeoutId","onEnter","onLeave","observer","addTargetListeners","nextTick","addRepositionListeners","removeRepositionListeners","autoUpdateTimeoutId","autoUpdate","init","destroy","onBeforeUnmount","onMounted","isVisible","_Teleport","_Transition","_hoisted_4","_hoisted_5","_hoisted_6","QField","fieldRef","isRequired","QTextField","_value","inputRef","_createSlots","_withDirectives","$event","_vModelText","useAttrs","_attrs","_useAttrs","DEFAULT_TEXTS","QCombobox","open","inputValue","highlightedItemIdx","triggerEl","contentRef","updateInputValue","canClear","visibleItems","isDirty","selectedItem","highlightedItem","index","activeDescendantId","activeDescendant","select","acceptSuggestion","clear","selectedItemIdx","scrollIntoView","onKeydown","highlightDefault","highlightNext","highlightLast","_b","from","onFocusOut","_c","onListMouseUp","onOverlayEnter","onOverlayLeave","QInputGroup","_guardReactiveProps","QLineLoader","QPopover","QSelect","typed","displayValue","onListFocusOut","i","focusList","focusMainInput","QTooltip","clickOutside","el","binding"],"mappings":"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"}
|