import { VAvatar } from "./chunk-SXI5CS7S.js"; import { VDivider } from "./chunk-X3WY3J75.js"; import { useSsrBoot } from "./chunk-PCKQGDLK.js"; import { VExpandTransition } from "./chunk-B4JFJDWM.js"; import { MaybeTransition } from "./chunk-CAGZXMOS.js"; import { genOverlays, makeVariantProps, useVariant } from "./chunk-ADXDXPPR.js"; import { makeBorderProps, useBorder } from "./chunk-X7YBE6PF.js"; import { makeElevationProps, useElevation } from "./chunk-YJD2PNP6.js"; import { makeDensityProps, useDensity } from "./chunk-TM3MIDYC.js"; import { VIcon } from "./chunk-4XZHKYGH.js"; import { makeRoundedProps, useRounded } from "./chunk-AQK3CYVW.js"; import { VDefaultsProvider } from "./chunk-PAT7NP2Z.js"; import { makeTagProps } from "./chunk-2HZIACSB.js"; import { IconValue } from "./chunk-OJDZBU5D.js"; import { makeRouterProps, useLink } from "./chunk-573D4TYC.js"; import { ripple_default } from "./chunk-DS4J67XG.js"; import { useBackgroundColor, useTextColor } from "./chunk-BHV5Z34M.js"; import { makeDimensionProps, useDimension } from "./chunk-6EZKHCRW.js"; import { useProxiedModel } from "./chunk-KA77II4V.js"; import { makeThemeProps, provideTheme } from "./chunk-3DSR7NCB.js"; import { EventProp, consoleError, convertToUnit, createSimpleFunctional, deepEqual, defineComponent, deprecate, focusChild, genericComponent, getCurrentInstance, getPropertyFromItem, isPrimitive, makeComponentProps, omit, pick, propsFactory, provideDefaults, throttle, useRender, wrapInArray } from "./chunk-LZ5T2ERG.js"; import { Fragment, computed, createBaseVNode, createVNode, inject, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeMount, onBeforeUnmount, provide, ref, shallowRef, toDisplayString, toRaw, toRef, toValue, vShow, watch, watchEffect, withDirectives } from "./chunk-2MKFL3BX.js"; // node_modules/vuetify/lib/components/VList/VList.js import "/home/david/gitea_repo/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VList/VList.css"; // node_modules/vuetify/lib/components/VList/list.js var ListKey = /* @__PURE__ */ Symbol.for("vuetify:list"); function createList() { let { filterable } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : { filterable: false }; const parent = inject(ListKey, { filterable: false, hasPrepend: shallowRef(false), updateHasPrepend: () => null }); const data = { filterable: parent.filterable || filterable, hasPrepend: shallowRef(false), updateHasPrepend: (value) => { if (value) data.hasPrepend.value = value; } }; provide(ListKey, data); return parent; } function useList() { return inject(ListKey, null); } // node_modules/vuetify/lib/composables/nested/activeStrategies.js var independentActiveStrategy = (mandatory) => { const strategy = { activate: (_ref) => { let { id, value, activated } = _ref; id = toRaw(id); if (mandatory && !value && activated.size === 1 && activated.has(id)) return activated; if (value) { activated.add(id); } else { activated.delete(id); } return activated; }, in: (v, children, parents) => { let set = /* @__PURE__ */ new Set(); if (v != null) { for (const id of wrapInArray(v)) { set = strategy.activate({ id, value: true, activated: new Set(set), children, parents }); } } return set; }, out: (v) => { return Array.from(v); } }; return strategy; }; var independentSingleActiveStrategy = (mandatory) => { const parentStrategy = independentActiveStrategy(mandatory); const strategy = { activate: (_ref2) => { let { activated, id, ...rest } = _ref2; id = toRaw(id); const singleSelected = activated.has(id) ? /* @__PURE__ */ new Set([id]) : /* @__PURE__ */ new Set(); return parentStrategy.activate({ ...rest, id, activated: singleSelected }); }, in: (v, children, parents) => { let set = /* @__PURE__ */ new Set(); if (v != null) { const arr = wrapInArray(v); if (arr.length) { set = parentStrategy.in(arr.slice(0, 1), children, parents); } } return set; }, out: (v, children, parents) => { return parentStrategy.out(v, children, parents); } }; return strategy; }; var leafActiveStrategy = (mandatory) => { const parentStrategy = independentActiveStrategy(mandatory); const strategy = { activate: (_ref3) => { let { id, activated, children, ...rest } = _ref3; id = toRaw(id); if (children.has(id)) return activated; return parentStrategy.activate({ id, activated, children, ...rest }); }, in: parentStrategy.in, out: parentStrategy.out }; return strategy; }; var leafSingleActiveStrategy = (mandatory) => { const parentStrategy = independentSingleActiveStrategy(mandatory); const strategy = { activate: (_ref4) => { let { id, activated, children, ...rest } = _ref4; id = toRaw(id); if (children.has(id)) return activated; return parentStrategy.activate({ id, activated, children, ...rest }); }, in: parentStrategy.in, out: parentStrategy.out }; return strategy; }; // node_modules/vuetify/lib/composables/nested/openStrategies.js var singleOpenStrategy = { open: (_ref) => { let { id, value, opened, parents } = _ref; if (value) { const newOpened = /* @__PURE__ */ new Set(); newOpened.add(id); let parent = parents.get(id); while (parent != null) { newOpened.add(parent); parent = parents.get(parent); } return newOpened; } else { opened.delete(id); return opened; } }, select: () => null }; var multipleOpenStrategy = { open: (_ref2) => { let { id, value, opened, parents } = _ref2; if (value) { let parent = parents.get(id); opened.add(id); while (parent != null && parent !== id) { opened.add(parent); parent = parents.get(parent); } return opened; } else { opened.delete(id); } return opened; }, select: () => null }; var listOpenStrategy = { open: multipleOpenStrategy.open, select: (_ref3) => { let { id, value, opened, parents } = _ref3; if (!value) return opened; const path = []; let parent = parents.get(id); while (parent != null) { path.push(parent); parent = parents.get(parent); } return new Set(path); } }; // node_modules/vuetify/lib/composables/nested/selectStrategies.js var independentSelectStrategy = (mandatory) => { const strategy = { select: (_ref) => { let { id, value, selected } = _ref; id = toRaw(id); if (mandatory && !value) { const on = Array.from(selected.entries()).reduce((arr, _ref2) => { let [key, value2] = _ref2; if (value2 === "on") arr.push(key); return arr; }, []); if (on.length === 1 && on[0] === id) return selected; } selected.set(id, value ? "on" : "off"); return selected; }, in: (v, children, parents, disabled) => { const map = /* @__PURE__ */ new Map(); for (const id of v || []) { strategy.select({ id, value: true, selected: map, children, parents, disabled }); } return map; }, out: (v) => { const arr = []; for (const [key, value] of v.entries()) { if (value === "on") arr.push(key); } return arr; } }; return strategy; }; var independentSingleSelectStrategy = (mandatory) => { const parentStrategy = independentSelectStrategy(mandatory); const strategy = { select: (_ref3) => { let { selected, id, ...rest } = _ref3; id = toRaw(id); const singleSelected = selected.has(id) ? /* @__PURE__ */ new Map([[id, selected.get(id)]]) : /* @__PURE__ */ new Map(); return parentStrategy.select({ ...rest, id, selected: singleSelected }); }, in: (v, children, parents, disabled) => { if (v?.length) { return parentStrategy.in(v.slice(0, 1), children, parents, disabled); } return /* @__PURE__ */ new Map(); }, out: (v, children, parents) => { return parentStrategy.out(v, children, parents); } }; return strategy; }; var leafSelectStrategy = (mandatory) => { const parentStrategy = independentSelectStrategy(mandatory); const strategy = { select: (_ref4) => { let { id, selected, children, ...rest } = _ref4; id = toRaw(id); if (children.has(id)) return selected; return parentStrategy.select({ id, selected, children, ...rest }); }, in: parentStrategy.in, out: parentStrategy.out }; return strategy; }; var leafSingleSelectStrategy = (mandatory) => { const parentStrategy = independentSingleSelectStrategy(mandatory); const strategy = { select: (_ref5) => { let { id, selected, children, ...rest } = _ref5; id = toRaw(id); if (children.has(id)) return selected; return parentStrategy.select({ id, selected, children, ...rest }); }, in: parentStrategy.in, out: parentStrategy.out }; return strategy; }; var classicSelectStrategy = (mandatory) => { const strategy = { select: (_ref6) => { let { id, value, selected, children, parents, disabled } = _ref6; id = toRaw(id); const original = new Map(selected); const items = [id]; while (items.length) { const item = items.shift(); if (!disabled.has(item)) { selected.set(toRaw(item), value ? "on" : "off"); } if (children.has(item)) { items.push(...children.get(item)); } } let parent = toRaw(parents.get(id)); while (parent) { let everySelected = true; let noneSelected = true; for (const child of children.get(parent)) { const cid = toRaw(child); if (disabled.has(cid)) continue; if (selected.get(cid) !== "on") everySelected = false; if (selected.has(cid) && selected.get(cid) !== "off") noneSelected = false; if (!everySelected && !noneSelected) break; } selected.set(parent, everySelected ? "on" : noneSelected ? "off" : "indeterminate"); parent = toRaw(parents.get(parent)); } if (mandatory && !value) { const on = Array.from(selected.entries()).reduce((arr, _ref7) => { let [key, value2] = _ref7; if (value2 === "on") arr.push(key); return arr; }, []); if (on.length === 0) return original; } return selected; }, in: (v, children, parents) => { let map = /* @__PURE__ */ new Map(); for (const id of v || []) { map = strategy.select({ id, value: true, selected: map, children, parents, disabled: /* @__PURE__ */ new Set() }); } return map; }, out: (v, children) => { const arr = []; for (const [key, value] of v.entries()) { if (value === "on" && !children.has(key)) arr.push(key); } return arr; } }; return strategy; }; var trunkSelectStrategy = (mandatory) => { const parentStrategy = classicSelectStrategy(mandatory); const strategy = { select: parentStrategy.select, in: parentStrategy.in, out: (v, children, parents) => { const arr = []; for (const [key, value] of v.entries()) { if (value === "on") { if (parents.has(key)) { const parent = parents.get(key); if (v.get(parent) === "on") continue; } arr.push(key); } } return arr; } }; return strategy; }; // node_modules/vuetify/lib/composables/nested/nested.js var VNestedSymbol = /* @__PURE__ */ Symbol.for("vuetify:nested"); var emptyNested = { id: shallowRef(), root: { itemsRegistration: ref("render"), register: () => null, unregister: () => null, updateDisabled: () => null, children: ref(/* @__PURE__ */ new Map()), parents: ref(/* @__PURE__ */ new Map()), disabled: ref(/* @__PURE__ */ new Set()), open: () => null, openOnSelect: () => null, activate: () => null, select: () => null, activatable: ref(false), selectable: ref(false), opened: ref(/* @__PURE__ */ new Set()), activated: ref(/* @__PURE__ */ new Set()), selected: ref(/* @__PURE__ */ new Map()), selectedValues: ref([]), getPath: () => [] } }; var makeNestedProps = propsFactory({ activatable: Boolean, selectable: Boolean, activeStrategy: [String, Function, Object], selectStrategy: [String, Function, Object], openStrategy: [String, Object], opened: null, activated: null, selected: null, mandatory: Boolean, itemsRegistration: { type: String, default: "render" } }, "nested"); var useNested = (props, items, returnObject) => { let isUnmounted = false; const children = shallowRef(/* @__PURE__ */ new Map()); const parents = shallowRef(/* @__PURE__ */ new Map()); const disabled = shallowRef(/* @__PURE__ */ new Set()); const opened = useProxiedModel(props, "opened", props.opened, (v) => new Set(Array.isArray(v) ? v.map((i) => toRaw(i)) : v), (v) => [...v.values()]); const activeStrategy = computed(() => { if (typeof props.activeStrategy === "object") return props.activeStrategy; if (typeof props.activeStrategy === "function") return props.activeStrategy(props.mandatory); switch (props.activeStrategy) { case "leaf": return leafActiveStrategy(props.mandatory); case "single-leaf": return leafSingleActiveStrategy(props.mandatory); case "independent": return independentActiveStrategy(props.mandatory); case "single-independent": default: return independentSingleActiveStrategy(props.mandatory); } }); const selectStrategy = computed(() => { if (typeof props.selectStrategy === "object") return props.selectStrategy; if (typeof props.selectStrategy === "function") return props.selectStrategy(props.mandatory); switch (props.selectStrategy) { case "single-leaf": return leafSingleSelectStrategy(props.mandatory); case "leaf": return leafSelectStrategy(props.mandatory); case "independent": return independentSelectStrategy(props.mandatory); case "single-independent": return independentSingleSelectStrategy(props.mandatory); case "trunk": return trunkSelectStrategy(props.mandatory); case "classic": default: return classicSelectStrategy(props.mandatory); } }); const openStrategy = computed(() => { if (typeof props.openStrategy === "object") return props.openStrategy; switch (props.openStrategy) { case "list": return listOpenStrategy; case "single": return singleOpenStrategy; case "multiple": default: return multipleOpenStrategy; } }); const activated = useProxiedModel(props, "activated", props.activated, (v) => activeStrategy.value.in(v, children.value, parents.value), (v) => activeStrategy.value.out(v, children.value, parents.value)); const selected = useProxiedModel(props, "selected", props.selected, (v) => selectStrategy.value.in(v, children.value, parents.value, disabled.value), (v) => selectStrategy.value.out(v, children.value, parents.value)); onBeforeUnmount(() => { isUnmounted = true; }); function getPath(id) { const path = []; let parent = toRaw(id); while (parent !== void 0) { path.unshift(parent); parent = parents.value.get(parent); } return path; } const vm = getCurrentInstance("nested"); const nodeIds = /* @__PURE__ */ new Set(); const itemsUpdatePropagation = throttle(() => { nextTick(() => { children.value = new Map(children.value); parents.value = new Map(parents.value); }); }, 100); watch(() => [items.value, toValue(returnObject)], () => { if (props.itemsRegistration === "props") { updateInternalMaps(); } }, { immediate: true }); function updateInternalMaps() { const _parents = /* @__PURE__ */ new Map(); const _children = /* @__PURE__ */ new Map(); const _disabled = /* @__PURE__ */ new Set(); const getValue = toValue(returnObject) ? (item) => toRaw(item.raw) : (item) => item.value; const stack = [...items.value]; let i = 0; while (i < stack.length) { const item = stack[i++]; const itemValue = getValue(item); if (item.children) { const childValues = []; for (const child of item.children) { const childValue = getValue(child); _parents.set(childValue, itemValue); childValues.push(childValue); stack.push(child); } _children.set(itemValue, childValues); } if (item.props.disabled) { _disabled.add(itemValue); } } children.value = _children; parents.value = _parents; disabled.value = _disabled; } const nested = { id: shallowRef(), root: { opened, activatable: toRef(() => props.activatable), selectable: toRef(() => props.selectable), activated, selected, selectedValues: computed(() => { const arr = []; for (const [key, value] of selected.value.entries()) { if (value === "on") arr.push(key); } return arr; }), itemsRegistration: toRef(() => props.itemsRegistration), register: (id, parentId, isDisabled, isGroup) => { if (nodeIds.has(id)) { const path = getPath(id).map(String).join(" -> "); const newPath = getPath(parentId).concat(id).map(String).join(" -> "); consoleError(`Multiple nodes with the same ID ${path} ${newPath}`); return; } else { nodeIds.add(id); } parentId && id !== parentId && parents.value.set(id, parentId); isDisabled && disabled.value.add(id); isGroup && children.value.set(id, []); if (parentId != null) { children.value.set(parentId, [...children.value.get(parentId) || [], id]); } itemsUpdatePropagation(); }, unregister: (id) => { if (isUnmounted) return; nodeIds.delete(id); children.value.delete(id); disabled.value.delete(id); const parent = parents.value.get(id); if (parent) { const list = children.value.get(parent) ?? []; children.value.set(parent, list.filter((child) => child !== id)); } parents.value.delete(id); itemsUpdatePropagation(); }, updateDisabled: (id, isDisabled) => { if (isDisabled) { disabled.value.add(id); } else { disabled.value.delete(id); } }, open: (id, value, event) => { vm.emit("click:open", { id, value, path: getPath(id), event }); const newOpened = openStrategy.value.open({ id, value, opened: new Set(opened.value), children: children.value, parents: parents.value, event }); newOpened && (opened.value = newOpened); }, openOnSelect: (id, value, event) => { const newOpened = openStrategy.value.select({ id, value, selected: new Map(selected.value), opened: new Set(opened.value), children: children.value, parents: parents.value, event }); newOpened && (opened.value = newOpened); }, select: (id, value, event) => { vm.emit("click:select", { id, value, path: getPath(id), event }); const newSelected = selectStrategy.value.select({ id, value, selected: new Map(selected.value), children: children.value, parents: parents.value, disabled: disabled.value, event }); newSelected && (selected.value = newSelected); nested.root.openOnSelect(id, value, event); }, activate: (id, value, event) => { if (!props.activatable) { return nested.root.select(id, true, event); } vm.emit("click:activate", { id, value, path: getPath(id), event }); const newActivated = activeStrategy.value.activate({ id, value, activated: new Set(activated.value), children: children.value, parents: parents.value, event }); if (newActivated.size !== activated.value.size) { activated.value = newActivated; } else { for (const value2 of newActivated) { if (!activated.value.has(value2)) { activated.value = newActivated; return; } } for (const value2 of activated.value) { if (!newActivated.has(value2)) { activated.value = newActivated; return; } } } }, children, parents, disabled, getPath } }; provide(VNestedSymbol, nested); return nested.root; }; var useNestedItem = (id, isDisabled, isGroup) => { const parent = inject(VNestedSymbol, emptyNested); const uidSymbol = /* @__PURE__ */ Symbol("nested item"); const computedId = computed(() => { const idValue = toRaw(toValue(id)); return idValue !== void 0 ? idValue : uidSymbol; }); const item = { ...parent, id: computedId, open: (open, e) => parent.root.open(computedId.value, open, e), openOnSelect: (open, e) => parent.root.openOnSelect(computedId.value, open, e), isOpen: computed(() => parent.root.opened.value.has(computedId.value)), parent: computed(() => parent.root.parents.value.get(computedId.value)), activate: (activated, e) => parent.root.activate(computedId.value, activated, e), isActivated: computed(() => parent.root.activated.value.has(computedId.value)), select: (selected, e) => parent.root.select(computedId.value, selected, e), isSelected: computed(() => parent.root.selected.value.get(computedId.value) === "on"), isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === "indeterminate"), isLeaf: computed(() => !parent.root.children.value.get(computedId.value)), isGroupActivator: parent.isGroupActivator }; onBeforeMount(() => { if (parent.isGroupActivator || parent.root.itemsRegistration.value === "props") return; nextTick(() => { parent.root.register(computedId.value, parent.id.value, toValue(isDisabled), isGroup); }); }); onBeforeUnmount(() => { if (parent.isGroupActivator || parent.root.itemsRegistration.value === "props") return; parent.root.unregister(computedId.value); }); watch(computedId, (val, oldVal) => { if (parent.isGroupActivator || parent.root.itemsRegistration.value === "props") return; parent.root.unregister(oldVal); nextTick(() => { parent.root.register(val, parent.id.value, toValue(isDisabled), isGroup); }); }); watch(() => toValue(isDisabled), (val) => { parent.root.updateDisabled(computedId.value, val); }); isGroup && provide(VNestedSymbol, item); return item; }; var useNestedGroupActivator = () => { const parent = inject(VNestedSymbol, emptyNested); provide(VNestedSymbol, { ...parent, isGroupActivator: true }); }; // node_modules/vuetify/lib/components/VList/VListGroup.js var VListGroupActivator = defineComponent({ name: "VListGroupActivator", setup(_, _ref) { let { slots } = _ref; useNestedGroupActivator(); return () => slots.default?.(); } }); var makeVListGroupProps = propsFactory({ /* @deprecated */ activeColor: String, baseColor: String, color: String, collapseIcon: { type: IconValue, default: "$collapse" }, disabled: Boolean, expandIcon: { type: IconValue, default: "$expand" }, rawId: [String, Number], prependIcon: IconValue, appendIcon: IconValue, fluid: Boolean, subgroup: Boolean, title: String, value: null, ...makeComponentProps(), ...makeTagProps() }, "VListGroup"); var VListGroup = genericComponent()({ name: "VListGroup", props: makeVListGroupProps(), setup(props, _ref2) { let { slots } = _ref2; const { isOpen, open, id: _id } = useNestedItem(() => props.value, () => props.disabled, true); const id = computed(() => `v-list-group--id-${String(props.rawId ?? _id.value)}`); const list = useList(); const { isBooted } = useSsrBoot(); const parent = inject(VNestedSymbol); const renderWhenClosed = toRef(() => parent?.root?.itemsRegistration.value === "render"); function onClick(e) { if (["INPUT", "TEXTAREA"].includes(e.target?.tagName)) return; open(!isOpen.value, e); } const activatorProps = computed(() => ({ onClick, class: "v-list-group__header", id: id.value })); const toggleIcon = computed(() => isOpen.value ? props.collapseIcon : props.expandIcon); const activatorDefaults = computed(() => ({ VListItem: { activeColor: props.activeColor, baseColor: props.baseColor, color: props.color, prependIcon: props.prependIcon || props.subgroup && toggleIcon.value, appendIcon: props.appendIcon || !props.subgroup && toggleIcon.value, title: props.title, value: props.value } })); useRender(() => createVNode(props.tag, { "class": normalizeClass(["v-list-group", { "v-list-group--prepend": list?.hasPrepend.value, "v-list-group--fluid": props.fluid, "v-list-group--subgroup": props.subgroup, "v-list-group--open": isOpen.value }, props.class]), "style": normalizeStyle(props.style) }, { default: () => [slots.activator && createVNode(VDefaultsProvider, { "defaults": activatorDefaults.value }, { default: () => [createVNode(VListGroupActivator, null, { default: () => [slots.activator({ props: activatorProps.value, isOpen: isOpen.value })] })] }), createVNode(MaybeTransition, { "transition": { component: VExpandTransition }, "disabled": !isBooted.value }, { default: () => [renderWhenClosed.value ? withDirectives(createBaseVNode("div", { "class": "v-list-group__items", "role": "group", "aria-labelledby": id.value }, [slots.default?.()]), [[vShow, isOpen.value]]) : isOpen.value && createBaseVNode("div", { "class": "v-list-group__items", "role": "group", "aria-labelledby": id.value }, [slots.default?.()])] })] })); return { isOpen }; } }); // node_modules/vuetify/lib/components/VList/VListItem.js import "/home/david/gitea_repo/personal_development/ServerManagerWebApp/frontend/node_modules/vuetify/lib/components/VList/VListItem.css"; // node_modules/vuetify/lib/components/VList/VListItemSubtitle.js var makeVListItemSubtitleProps = propsFactory({ opacity: [Number, String], ...makeComponentProps(), ...makeTagProps() }, "VListItemSubtitle"); var VListItemSubtitle = genericComponent()({ name: "VListItemSubtitle", props: makeVListItemSubtitleProps(), setup(props, _ref) { let { slots } = _ref; useRender(() => createVNode(props.tag, { "class": normalizeClass(["v-list-item-subtitle", props.class]), "style": normalizeStyle([{ "--v-list-item-subtitle-opacity": props.opacity }, props.style]) }, slots)); return {}; } }); // node_modules/vuetify/lib/components/VList/VListItemTitle.js var VListItemTitle = createSimpleFunctional("v-list-item-title"); // node_modules/vuetify/lib/components/VList/VListItem.js var makeVListItemProps = propsFactory({ active: { type: Boolean, default: void 0 }, activeClass: String, /* @deprecated */ activeColor: String, appendAvatar: String, appendIcon: IconValue, baseColor: String, disabled: Boolean, lines: [Boolean, String], link: { type: Boolean, default: void 0 }, nav: Boolean, prependAvatar: String, prependIcon: IconValue, ripple: { type: [Boolean, Object], default: true }, slim: Boolean, prependGap: [Number, String], subtitle: { type: [String, Number, Boolean], default: void 0 }, title: { type: [String, Number, Boolean], default: void 0 }, value: null, onClick: EventProp(), onClickOnce: EventProp(), ...makeBorderProps(), ...makeComponentProps(), ...makeDensityProps(), ...makeDimensionProps(), ...makeElevationProps(), ...makeRoundedProps(), ...makeRouterProps(), ...makeTagProps(), ...makeThemeProps(), ...makeVariantProps({ variant: "text" }) }, "VListItem"); var VListItem = genericComponent()({ name: "VListItem", directives: { vRipple: ripple_default }, props: makeVListItemProps(), emits: { click: (e) => true }, setup(props, _ref) { let { attrs, slots, emit } = _ref; const link = useLink(props, attrs); const id = computed(() => props.value === void 0 ? link.href.value : props.value); const { activate, isActivated, select, isOpen, isSelected, isIndeterminate, isGroupActivator, root, parent, openOnSelect, id: uid } = useNestedItem(id, () => props.disabled, false); const list = useList(); const isActive = computed(() => props.active !== false && (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value))); const isLink = toRef(() => props.link !== false && link.isLink.value); const isSelectable = computed(() => !!list && (root.selectable.value || root.activatable.value || props.value != null)); const isClickable = computed(() => !props.disabled && props.link !== false && (props.link || link.isClickable.value || isSelectable.value)); const role = computed(() => list ? isLink.value ? "link" : isSelectable.value ? "option" : "listitem" : void 0); const ariaSelected = computed(() => { if (!isSelectable.value) return void 0; return root.activatable.value ? isActivated.value : root.selectable.value ? isSelected.value : isActive.value; }); const roundedProps = toRef(() => props.rounded || props.nav); const color = toRef(() => props.color ?? props.activeColor); const variantProps = toRef(() => ({ color: isActive.value ? color.value ?? props.baseColor : props.baseColor, variant: props.variant })); watch(() => link.isActive?.value, (val) => { if (!val) return; handleActiveLink(); }); onBeforeMount(() => { if (link.isActive?.value) { nextTick(() => handleActiveLink()); } }); function handleActiveLink() { if (parent.value != null) { root.open(parent.value, true); } openOnSelect(true); } const { themeClasses } = provideTheme(props); const { borderClasses } = useBorder(props); const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps); const { densityClasses } = useDensity(props); const { dimensionStyles } = useDimension(props); const { elevationClasses } = useElevation(props); const { roundedClasses } = useRounded(roundedProps); const lineClasses = toRef(() => props.lines ? `v-list-item--${props.lines}-line` : void 0); const rippleOptions = toRef(() => props.ripple !== void 0 && !!props.ripple && list?.filterable ? { keys: ["Enter"] } : props.ripple); const slotProps = computed(() => ({ isActive: isActive.value, select, isOpen: isOpen.value, isSelected: isSelected.value, isIndeterminate: isIndeterminate.value })); function onClick(e) { emit("click", e); if (["INPUT", "TEXTAREA"].includes(e.target?.tagName)) return; if (!isClickable.value) return; link.navigate?.(e); if (isGroupActivator) return; if (root.activatable.value) { activate(!isActivated.value, e); } else if (root.selectable.value) { select(!isSelected.value, e); } else if (props.value != null && !isLink.value) { select(!isSelected.value, e); } } function onKeyDown(e) { const target = e.target; if (["INPUT", "TEXTAREA"].includes(target.tagName)) return; if (e.key === "Enter" || e.key === " " && !list?.filterable) { e.preventDefault(); e.stopPropagation(); e.target.dispatchEvent(new MouseEvent("click", e)); } } useRender(() => { const Tag = isLink.value ? "a" : props.tag; const hasTitle = slots.title || props.title != null; const hasSubtitle = slots.subtitle || props.subtitle != null; const hasAppendMedia = !!(props.appendAvatar || props.appendIcon); const hasAppend = !!(hasAppendMedia || slots.append); const hasPrependMedia = !!(props.prependAvatar || props.prependIcon); const hasPrepend = !!(hasPrependMedia || slots.prepend); list?.updateHasPrepend(hasPrepend); if (props.activeColor) { deprecate("active-color", ["color", "base-color"]); } return withDirectives(createVNode(Tag, mergeProps(link.linkProps, { "class": ["v-list-item", { "v-list-item--active": isActive.value, "v-list-item--disabled": props.disabled, "v-list-item--link": isClickable.value, "v-list-item--nav": props.nav, "v-list-item--slim": props.slim, [`${props.activeClass}`]: props.activeClass && isActive.value }, themeClasses.value, borderClasses.value, colorClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, variantClasses.value, props.class], "style": [{ "--v-list-prepend-gap": convertToUnit(props.prependGap) }, colorStyles.value, dimensionStyles.value, props.style], "tabindex": isClickable.value ? list ? -2 : 0 : void 0, "aria-selected": ariaSelected.value, "role": role.value, "onClick": onClick, "onKeydown": isClickable.value && !isLink.value && onKeyDown }), { default: () => [genOverlays(isClickable.value || isActive.value, "v-list-item"), hasPrepend && createBaseVNode("div", { "key": "prepend", "class": "v-list-item__prepend" }, [!slots.prepend ? createBaseVNode(Fragment, null, [props.prependAvatar && createVNode(VAvatar, { "key": "prepend-avatar", "density": props.density, "image": props.prependAvatar }, null), props.prependIcon && createVNode(VIcon, { "key": "prepend-icon", "density": props.density, "icon": props.prependIcon }, null)]) : createVNode(VDefaultsProvider, { "key": "prepend-defaults", "disabled": !hasPrependMedia, "defaults": { VAvatar: { density: props.density, image: props.prependAvatar }, VIcon: { density: props.density, icon: props.prependIcon }, VListItemAction: { start: true } } }, { default: () => [slots.prepend?.(slotProps.value)] }), createBaseVNode("div", { "class": "v-list-item__spacer" }, null)]), createBaseVNode("div", { "class": "v-list-item__content", "data-no-activator": "" }, [hasTitle && createVNode(VListItemTitle, { "key": "title" }, { default: () => [slots.title?.({ title: props.title }) ?? toDisplayString(props.title)] }), hasSubtitle && createVNode(VListItemSubtitle, { "key": "subtitle" }, { default: () => [slots.subtitle?.({ subtitle: props.subtitle }) ?? toDisplayString(props.subtitle)] }), slots.default?.(slotProps.value)]), hasAppend && createBaseVNode("div", { "key": "append", "class": "v-list-item__append" }, [!slots.append ? createBaseVNode(Fragment, null, [props.appendIcon && createVNode(VIcon, { "key": "append-icon", "density": props.density, "icon": props.appendIcon }, null), props.appendAvatar && createVNode(VAvatar, { "key": "append-avatar", "density": props.density, "image": props.appendAvatar }, null)]) : createVNode(VDefaultsProvider, { "key": "append-defaults", "disabled": !hasAppendMedia, "defaults": { VAvatar: { density: props.density, image: props.appendAvatar }, VIcon: { density: props.density, icon: props.appendIcon }, VListItemAction: { end: true } } }, { default: () => [slots.append?.(slotProps.value)] }), createBaseVNode("div", { "class": "v-list-item__spacer" }, null)])] }), [[ripple_default, isClickable.value && rippleOptions.value]]); }); return { activate, isActivated, isGroupActivator, isSelected, list, select, root, id: uid, link }; } }); // node_modules/vuetify/lib/components/VList/VListSubheader.js var makeVListSubheaderProps = propsFactory({ color: String, inset: Boolean, sticky: Boolean, title: String, ...makeComponentProps(), ...makeTagProps() }, "VListSubheader"); var VListSubheader = genericComponent()({ name: "VListSubheader", props: makeVListSubheaderProps(), setup(props, _ref) { let { slots } = _ref; const { textColorClasses, textColorStyles } = useTextColor(() => props.color); useRender(() => { const hasText = !!(slots.default || props.title); return createVNode(props.tag, { "class": normalizeClass(["v-list-subheader", { "v-list-subheader--inset": props.inset, "v-list-subheader--sticky": props.sticky }, textColorClasses.value, props.class]), "style": normalizeStyle([{ textColorStyles }, props.style]) }, { default: () => [hasText && createBaseVNode("div", { "class": "v-list-subheader__text" }, [slots.default?.() ?? props.title])] }); }); return {}; } }); // node_modules/vuetify/lib/components/VList/VListChildren.js var makeVListChildrenProps = propsFactory({ items: Array, returnObject: Boolean }, "VListChildren"); var VListChildren = genericComponent()({ name: "VListChildren", props: makeVListChildrenProps(), setup(props, _ref) { let { slots } = _ref; createList(); return () => slots.default?.() ?? props.items?.map((_ref2) => { let { children, props: itemProps, type, raw: item } = _ref2; if (type === "divider") { return slots.divider?.({ props: itemProps }) ?? createVNode(VDivider, itemProps, null); } if (type === "subheader") { return slots.subheader?.({ props: itemProps }) ?? createVNode(VListSubheader, itemProps, null); } const slotsWithItem = { subtitle: slots.subtitle ? (slotProps) => slots.subtitle?.({ ...slotProps, item }) : void 0, prepend: slots.prepend ? (slotProps) => slots.prepend?.({ ...slotProps, item }) : void 0, append: slots.append ? (slotProps) => slots.append?.({ ...slotProps, item }) : void 0, title: slots.title ? (slotProps) => slots.title?.({ ...slotProps, item }) : void 0 }; const listGroupProps = VListGroup.filterProps(itemProps); return children ? createVNode(VListGroup, mergeProps(listGroupProps, { "value": props.returnObject ? item : itemProps?.value, "rawId": itemProps?.value }), { activator: (_ref3) => { let { props: activatorProps } = _ref3; const listItemProps = mergeProps(itemProps, activatorProps, { value: props.returnObject ? item : itemProps.value }); return slots.header ? slots.header({ props: listItemProps }) : createVNode(VListItem, listItemProps, slotsWithItem); }, default: () => createVNode(VListChildren, { "items": children, "returnObject": props.returnObject }, slots) }) : slots.item ? slots.item({ props: itemProps }) : createVNode(VListItem, mergeProps(itemProps, { "value": props.returnObject ? item : itemProps.value }), slotsWithItem); }); } }); // node_modules/vuetify/lib/composables/list-items.js var makeItemsProps = propsFactory({ items: { type: Array, default: () => [] }, itemTitle: { type: [String, Array, Function], default: "title" }, itemValue: { type: [String, Array, Function], default: "value" }, itemChildren: { type: [Boolean, String, Array, Function], default: "children" }, itemProps: { type: [Boolean, String, Array, Function], default: "props" }, itemType: { type: [Boolean, String, Array, Function], default: "type" }, returnObject: Boolean, valueComparator: Function }, "list-items"); var itemTypes = /* @__PURE__ */ new Set(["item", "divider", "subheader"]); function transformItem(props, item) { const title = getPropertyFromItem(item, props.itemTitle, item); const value = getPropertyFromItem(item, props.itemValue, title); const children = getPropertyFromItem(item, props.itemChildren); const itemProps = props.itemProps === true ? typeof item === "object" && item != null && !Array.isArray(item) ? "children" in item ? omit(item, ["children"]) : item : void 0 : getPropertyFromItem(item, props.itemProps); let type = getPropertyFromItem(item, props.itemType, "item"); if (!itemTypes.has(type)) { type = "item"; } const _props = { title, value, ...itemProps }; return { type, title: String(_props.title ?? ""), value: _props.value, props: _props, children: type === "item" && Array.isArray(children) ? transformItems(props, children) : void 0, raw: item }; } transformItem.neededProps = ["itemTitle", "itemValue", "itemChildren", "itemProps", "itemType"]; function transformItems(props, items) { const _props = pick(props, transformItem.neededProps); const array = []; for (const item of items) { array.push(transformItem(_props, item)); } return array; } function useItems(props) { const items = computed(() => transformItems(props, props.items)); const hasNullItem = computed(() => items.value.some((item) => item.value === null)); const itemsMap = shallowRef(/* @__PURE__ */ new Map()); const keylessItems = shallowRef([]); watchEffect(() => { const _items = items.value; const map = /* @__PURE__ */ new Map(); const keyless = []; for (let i = 0; i < _items.length; i++) { const item = _items[i]; if (isPrimitive(item.value) || item.value === null) { let values = map.get(item.value); if (!values) { values = []; map.set(item.value, values); } values.push(item); } else { keyless.push(item); } } itemsMap.value = map; keylessItems.value = keyless; }); function transformIn(value) { const _items = itemsMap.value; const _allItems = items.value; const _keylessItems = keylessItems.value; const _hasNullItem = hasNullItem.value; const _returnObject = props.returnObject; const hasValueComparator = !!props.valueComparator; const valueComparator = props.valueComparator || deepEqual; const _props = pick(props, transformItem.neededProps); const returnValue = []; main: for (const v of value) { if (!_hasNullItem && v === null) continue; if (_returnObject && typeof v === "string") { returnValue.push(transformItem(_props, v)); continue; } const fastItems = _items.get(v); if (hasValueComparator || !fastItems) { for (const item of hasValueComparator ? _allItems : _keylessItems) { if (valueComparator(v, item.value)) { returnValue.push(item); continue main; } } returnValue.push(transformItem(_props, v)); continue; } returnValue.push(...fastItems); } return returnValue; } function transformOut(value) { return props.returnObject ? value.map((_ref) => { let { raw } = _ref; return raw; }) : value.map((_ref2) => { let { value: value2 } = _ref2; return value2; }); } return { items, transformIn, transformOut }; } // node_modules/vuetify/lib/components/VList/VList.js var itemTypes2 = /* @__PURE__ */ new Set(["item", "divider", "subheader"]); function transformItem2(props, item) { const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle); const value = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemValue, void 0); const children = getPropertyFromItem(item, props.itemChildren); const itemProps = props.itemProps === true ? omit(item, ["children"]) : getPropertyFromItem(item, props.itemProps); let type = getPropertyFromItem(item, props.itemType, "item"); if (!itemTypes2.has(type)) { type = "item"; } const _props = { title, value, ...itemProps }; return { type, title: _props.title, value: _props.value, props: _props, children: type === "item" && children ? transformItems2(props, children) : void 0, raw: item }; } function transformItems2(props, items) { const array = []; for (const item of items) { array.push(transformItem2(props, item)); } return array; } function useListItems(props) { const items = computed(() => transformItems2(props, props.items)); return { items }; } var makeVListProps = propsFactory({ baseColor: String, /* @deprecated */ activeColor: String, activeClass: String, bgColor: String, disabled: Boolean, filterable: Boolean, expandIcon: IconValue, collapseIcon: IconValue, lines: { type: [Boolean, String], default: "one" }, slim: Boolean, prependGap: [Number, String], indent: [Number, String], nav: Boolean, "onClick:open": EventProp(), "onClick:select": EventProp(), "onUpdate:opened": EventProp(), ...makeNestedProps({ selectStrategy: "single-leaf", openStrategy: "list" }), ...makeBorderProps(), ...makeComponentProps(), ...makeDensityProps(), ...makeDimensionProps(), ...makeElevationProps(), ...makeItemsProps(), ...makeRoundedProps(), ...makeTagProps(), ...makeThemeProps(), ...makeVariantProps({ variant: "text" }) }, "VList"); var VList = genericComponent()({ name: "VList", props: makeVListProps(), emits: { "update:selected": (value) => true, "update:activated": (value) => true, "update:opened": (value) => true, "click:open": (value) => true, "click:activate": (value) => true, "click:select": (value) => true }, setup(props, _ref) { let { slots } = _ref; const { items } = useListItems(props); const { themeClasses } = provideTheme(props); const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.bgColor); const { borderClasses } = useBorder(props); const { densityClasses } = useDensity(props); const { dimensionStyles } = useDimension(props); const { elevationClasses } = useElevation(props); const { roundedClasses } = useRounded(props); const { children, open, parents, select, getPath } = useNested(props, items, () => props.returnObject); const lineClasses = toRef(() => props.lines ? `v-list--${props.lines}-line` : void 0); const activeColor = toRef(() => props.activeColor); const baseColor = toRef(() => props.baseColor); const color = toRef(() => props.color); const isSelectable = toRef(() => props.selectable || props.activatable); createList({ filterable: props.filterable }); provideDefaults({ VListGroup: { activeColor, baseColor, color, expandIcon: toRef(() => props.expandIcon), collapseIcon: toRef(() => props.collapseIcon) }, VListItem: { activeClass: toRef(() => props.activeClass), activeColor, baseColor, color, density: toRef(() => props.density), disabled: toRef(() => props.disabled), lines: toRef(() => props.lines), nav: toRef(() => props.nav), slim: toRef(() => props.slim), variant: toRef(() => props.variant) } }); const isFocused = shallowRef(false); const contentRef = ref(); function onFocusin(e) { isFocused.value = true; } function onFocusout(e) { isFocused.value = false; } function onFocus(e) { if (!isFocused.value && !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget))) focus(); } function onKeydown(e) { const target = e.target; if (!contentRef.value || target.tagName === "INPUT" && ["Home", "End"].includes(e.key) || target.tagName === "TEXTAREA") { return; } if (e.key === "ArrowDown") { focus("next"); } else if (e.key === "ArrowUp") { focus("prev"); } else if (e.key === "Home") { focus("first"); } else if (e.key === "End") { focus("last"); } else { return; } e.preventDefault(); } function onMousedown(e) { isFocused.value = true; } function focus(location) { if (contentRef.value) { return focusChild(contentRef.value, location); } } useRender(() => { const indent = props.indent ?? (props.prependGap ? Number(props.prependGap) + 24 : void 0); return createVNode(props.tag, { "ref": contentRef, "class": normalizeClass(["v-list", { "v-list--disabled": props.disabled, "v-list--nav": props.nav, "v-list--slim": props.slim }, themeClasses.value, backgroundColorClasses.value, borderClasses.value, densityClasses.value, elevationClasses.value, lineClasses.value, roundedClasses.value, props.class]), "style": normalizeStyle([{ "--v-list-indent": convertToUnit(indent), "--v-list-group-prepend": indent ? "0px" : void 0, "--v-list-prepend-gap": convertToUnit(props.prependGap) }, backgroundColorStyles.value, dimensionStyles.value, props.style]), "tabindex": props.disabled ? -1 : 0, "role": isSelectable.value ? "listbox" : "list", "aria-activedescendant": void 0, "onFocusin": onFocusin, "onFocusout": onFocusout, "onFocus": onFocus, "onKeydown": onKeydown, "onMousedown": onMousedown }, { default: () => [createVNode(VListChildren, { "items": items.value, "returnObject": props.returnObject }, slots)] }); }); return { open, select, focus, children, parents, getPath }; } }); // node_modules/vuetify/lib/components/VList/VListImg.js var VListImg = createSimpleFunctional("v-list-img"); // node_modules/vuetify/lib/components/VList/VListItemAction.js var makeVListItemActionProps = propsFactory({ start: Boolean, end: Boolean, ...makeComponentProps(), ...makeTagProps() }, "VListItemAction"); var VListItemAction = genericComponent()({ name: "VListItemAction", props: makeVListItemActionProps(), setup(props, _ref) { let { slots } = _ref; useRender(() => createVNode(props.tag, { "class": normalizeClass(["v-list-item-action", { "v-list-item-action--start": props.start, "v-list-item-action--end": props.end }, props.class]), "style": normalizeStyle(props.style) }, slots)); return {}; } }); // node_modules/vuetify/lib/components/VList/VListItemMedia.js var makeVListItemMediaProps = propsFactory({ start: Boolean, end: Boolean, ...makeComponentProps(), ...makeTagProps() }, "VListItemMedia"); var VListItemMedia = genericComponent()({ name: "VListItemMedia", props: makeVListItemMediaProps(), setup(props, _ref) { let { slots } = _ref; useRender(() => { return createVNode(props.tag, { "class": normalizeClass(["v-list-item-media", { "v-list-item-media--start": props.start, "v-list-item-media--end": props.end }, props.class]), "style": normalizeStyle(props.style) }, slots); }); return {}; } }); export { makeVListGroupProps, VListGroup, VListItemSubtitle, VListItemTitle, makeVListItemProps, VListItem, VListSubheader, makeItemsProps, transformItem, useItems, useListItems, makeVListProps, VList, VListImg, VListItemAction, VListItemMedia }; //# sourceMappingURL=chunk-MQSMF5CI.js.map