routie dev init since i didn't adhere to any proper guidance up until now
This commit is contained in:
+1
@@ -0,0 +1 @@
|
||||
../acorn/bin/acorn
|
||||
+1
@@ -0,0 +1 @@
|
||||
../baseline-browser-mapping/dist/cli.cjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../browserslist/cli.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../cssesc/bin/cssesc
|
||||
+1
@@ -0,0 +1 @@
|
||||
../eslint/bin/eslint.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../eslint-config-vuetify/bin/cli.mjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../jiti/lib/jiti-cli.mjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../js-yaml/bin/js-yaml.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../jsesc/bin/jsesc
|
||||
+1
@@ -0,0 +1 @@
|
||||
../nanoid/bin/nanoid.cjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../which/bin/node-which
|
||||
+1
@@ -0,0 +1 @@
|
||||
../npm-run-all2/bin/npm-run-all/index.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../npm-run-all2/bin/npm-run-all/index.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../nypm/dist/cli.mjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../@babel/parser/bin/babel-parser.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../pidtree/bin/pidtree.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../regexp-tree/bin/regexp-tree
|
||||
+1
@@ -0,0 +1 @@
|
||||
../regjsparser/bin/parser
|
||||
+1
@@ -0,0 +1 @@
|
||||
../rolldown/bin/cli.mjs
|
||||
+1
@@ -0,0 +1 @@
|
||||
../@intellectronica/ruler/dist/cli/index.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../npm-run-all2/bin/run-p/index.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../npm-run-all2/bin/run-s/index.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../sass/sass.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../semver/bin/semver.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../typescript/bin/tsc
|
||||
+1
@@ -0,0 +1 @@
|
||||
../typescript/bin/tsserver
|
||||
+1
@@ -0,0 +1 @@
|
||||
../update-browserslist-db/cli.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../vite/bin/vite.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../vue-tsc/bin/vue-tsc.js
|
||||
+1
@@ -0,0 +1 @@
|
||||
../yaml/bin.mjs
|
||||
+4652
File diff suppressed because it is too large
Load Diff
+218
@@ -0,0 +1,218 @@
|
||||
import { C as vShow, Cn as withDirectives, Dt as mergeProps, U as computed, W as createBaseVNode, ar as normalizeClass, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { I as isObject, _ as convertToUnit, l as propsFactory, n as genericComponent, q as pickWithRest } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { r as useTextColor, t as useBackgroundColor } from "./color-B6vuQruj.js";
|
||||
import { a as useTheme, i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { n as IconValue } from "./icons-k2ZLE_i8.js";
|
||||
import { r as useLocale } from "./locale-DDGMqzqb.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { t as VDefaultsProvider } from "./VDefaultsProvider-C09t4-My.js";
|
||||
import { n as useDimension, t as makeDimensionProps } from "./dimensions-BDdmuRdK.js";
|
||||
import { t as VImg } from "./VImg-DaEUT7gG.js";
|
||||
import { n as useRounded, t as makeRoundedProps } from "./rounded-BuPGKRa9.js";
|
||||
import { n as makeTransitionProps, t as MaybeTransition } from "./transition-DqoZ8fA1.js";
|
||||
import { n as useBorder, t as makeBorderProps } from "./border-jCmRyoxP.js";
|
||||
import { n as useLocation, t as makeLocationProps } from "./location-BIKTnDF4.js";
|
||||
import { n as useDensity, t as makeDensityProps } from "./density-CpKZ5PhP.js";
|
||||
import { n as makeVariantProps, r as useVariant, t as genOverlays } from "./variant-CqXtG9Ih.js";
|
||||
import { n as makeSizeProps, r as useSize, t as VIcon } from "./VIcon-1CJH_3Uo.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VAvatar/VAvatar.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VBadge/VBadge.css";
|
||||
//#region node_modules/vuetify/lib/components/VBadge/VBadge.js
|
||||
var makeVBadgeProps = propsFactory({
|
||||
bordered: Boolean,
|
||||
color: String,
|
||||
content: [Number, String],
|
||||
dot: Boolean,
|
||||
dotSize: [Number, String],
|
||||
floating: Boolean,
|
||||
icon: IconValue,
|
||||
inline: Boolean,
|
||||
label: {
|
||||
type: String,
|
||||
default: "$vuetify.badge"
|
||||
},
|
||||
max: [Number, String],
|
||||
modelValue: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
offsetX: [Number, String],
|
||||
offsetY: [Number, String],
|
||||
textColor: String,
|
||||
...makeComponentProps(),
|
||||
...makeLocationProps({ location: "top end" }),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps(),
|
||||
...makeThemeProps(),
|
||||
...makeTransitionProps({ transition: "scale-rotate-transition" }),
|
||||
...makeDimensionProps()
|
||||
}, "VBadge");
|
||||
var VBadge = genericComponent()({
|
||||
name: "VBadge",
|
||||
inheritAttrs: false,
|
||||
props: makeVBadgeProps(),
|
||||
setup(props, ctx) {
|
||||
const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
const { t } = useLocale();
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => props.textColor);
|
||||
const { themeClasses } = useTheme();
|
||||
const { locationStyles } = useLocation(props, true, (side) => {
|
||||
return (props.floating ? props.dot ? 2 : 4 : props.dot ? Number(props.dotSize ?? 8) : 12) + (["top", "bottom"].includes(side) ? Number(props.offsetY ?? 0) : ["left", "right"].includes(side) ? Number(props.offsetX ?? 0) : 0);
|
||||
});
|
||||
const { dimensionStyles } = useDimension(props);
|
||||
useRender(() => {
|
||||
const value = Number(props.content);
|
||||
const content = !props.max || isNaN(value) ? props.content : value <= Number(props.max) ? value : `${props.max}+`;
|
||||
const [badgeAttrs, attrs] = pickWithRest(ctx.attrs, [
|
||||
"aria-atomic",
|
||||
"aria-label",
|
||||
"aria-live",
|
||||
"role",
|
||||
"title"
|
||||
]);
|
||||
return createVNode(props.tag, mergeProps({ "class": [
|
||||
"v-badge",
|
||||
{
|
||||
"v-badge--bordered": props.bordered,
|
||||
"v-badge--dot": props.dot,
|
||||
"v-badge--floating": props.floating,
|
||||
"v-badge--inline": props.inline
|
||||
},
|
||||
props.class
|
||||
] }, attrs, { "style": props.style }), { default: () => [createBaseVNode("div", { "class": "v-badge__wrapper" }, [ctx.slots.default?.(), createVNode(MaybeTransition, { "transition": props.transition }, { default: () => [withDirectives(createBaseVNode("span", mergeProps({
|
||||
"class": [
|
||||
"v-badge__badge",
|
||||
themeClasses.value,
|
||||
backgroundColorClasses.value,
|
||||
roundedClasses.value,
|
||||
textColorClasses.value
|
||||
],
|
||||
"style": [
|
||||
backgroundColorStyles.value,
|
||||
textColorStyles.value,
|
||||
dimensionStyles.value,
|
||||
props.inline ? {} : locationStyles.value,
|
||||
props.dot && props.dotSize ? {
|
||||
width: convertToUnit(props.dotSize),
|
||||
height: convertToUnit(props.dotSize)
|
||||
} : {}
|
||||
],
|
||||
"aria-atomic": "true",
|
||||
"aria-label": t(props.label, value),
|
||||
"aria-live": "polite",
|
||||
"role": "status"
|
||||
}, badgeAttrs), [props.dot ? void 0 : ctx.slots.badge ? ctx.slots.badge?.() : props.icon ? createVNode(VIcon, { "icon": props.icon }, null) : content]), [[vShow, props.modelValue]])] })])] });
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VAvatar/VAvatar.js
|
||||
var makeVAvatarProps = propsFactory({
|
||||
badge: {
|
||||
type: [Boolean, Object],
|
||||
default: false
|
||||
},
|
||||
start: Boolean,
|
||||
end: Boolean,
|
||||
icon: IconValue,
|
||||
image: String,
|
||||
text: String,
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeSizeProps(),
|
||||
...makeTagProps(),
|
||||
...makeThemeProps(),
|
||||
...makeVariantProps({ variant: "flat" })
|
||||
}, "VAvatar");
|
||||
var VAvatar = genericComponent()({
|
||||
name: "VAvatar",
|
||||
props: makeVAvatarProps(),
|
||||
setup(props, { slots }) {
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { borderClasses } = useBorder(props);
|
||||
const { colorClasses, colorStyles, variantClasses } = useVariant(props);
|
||||
const { densityClasses } = useDensity(props);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
const { sizeClasses, sizeStyles } = useSize(props);
|
||||
const badgeDotSize = computed(() => {
|
||||
switch (props.size) {
|
||||
case "x-small": return 8;
|
||||
case "small": return 10;
|
||||
case "large": return 14;
|
||||
case "x-large": return 16;
|
||||
default: return 12;
|
||||
}
|
||||
});
|
||||
const badgeOffset = computed(() => {
|
||||
const { floating } = isObject(props.badge) ? props.badge : {};
|
||||
return (floating ? badgeDotSize.value / 2 : 0) - 1.5;
|
||||
});
|
||||
const badgeProps = computed(() => {
|
||||
return {
|
||||
bordered: true,
|
||||
dot: !slots.badge,
|
||||
dotSize: badgeDotSize.value,
|
||||
offsetX: badgeOffset.value,
|
||||
offsetY: badgeOffset.value,
|
||||
color: typeof props.badge === "string" ? props.badge : "primary",
|
||||
...isObject(props.badge) ? props.badge : {}
|
||||
};
|
||||
});
|
||||
useRender(() => {
|
||||
const avatar = createVNode(props.tag, {
|
||||
"class": normalizeClass([
|
||||
"v-avatar",
|
||||
{
|
||||
"v-avatar--start": props.start,
|
||||
"v-avatar--end": props.end
|
||||
},
|
||||
themeClasses.value,
|
||||
borderClasses.value,
|
||||
colorClasses.value,
|
||||
densityClasses.value,
|
||||
roundedClasses.value,
|
||||
sizeClasses.value,
|
||||
variantClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
colorStyles.value,
|
||||
sizeStyles.value,
|
||||
props.style
|
||||
])
|
||||
}, { default: () => [!slots.default ? props.image ? createVNode(VImg, {
|
||||
"key": "image",
|
||||
"src": props.image,
|
||||
"alt": "",
|
||||
"cover": true
|
||||
}, null) : props.icon ? createVNode(VIcon, {
|
||||
"key": "icon",
|
||||
"icon": props.icon
|
||||
}, null) : props.text : createVNode(VDefaultsProvider, {
|
||||
"key": "content-defaults",
|
||||
"defaults": {
|
||||
VImg: {
|
||||
cover: true,
|
||||
src: props.image
|
||||
},
|
||||
VIcon: { icon: props.icon }
|
||||
}
|
||||
}, { default: () => [slots.default()] }), genOverlays(false, "v-avatar")] });
|
||||
return props.badge ? createVNode(VBadge, badgeProps.value, {
|
||||
default: () => avatar,
|
||||
badge: slots.badge
|
||||
}) : avatar;
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VAvatar as t };
|
||||
|
||||
//# sourceMappingURL=VAvatar-CA-KqvIX.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+318
@@ -0,0 +1,318 @@
|
||||
import { Cn as withDirectives, Dt as mergeProps, Ot as nextTick, Qn as toRef, U as computed, W as createBaseVNode, ar as normalizeClass, cr as toDisplayString, et as createVNode, gn as watch, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { a as provideDefaults, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { n as IconValue } from "./icons-k2ZLE_i8.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { t as VDefaultsProvider } from "./VDefaultsProvider-C09t4-My.js";
|
||||
import { n as useDimension, t as makeDimensionProps } from "./dimensions-BDdmuRdK.js";
|
||||
import { n as useRounded, t as makeRoundedProps } from "./rounded-BuPGKRa9.js";
|
||||
import { n as useBorder, t as makeBorderProps } from "./border-jCmRyoxP.js";
|
||||
import { n as useElevation, t as makeElevationProps } from "./elevation-B0TH2wU6.js";
|
||||
import { n as useLocation, t as makeLocationProps } from "./location-BIKTnDF4.js";
|
||||
import { n as useDensity, t as makeDensityProps } from "./density-CpKZ5PhP.js";
|
||||
import { n as makeVariantProps, r as useVariant, t as genOverlays } from "./variant-CqXtG9Ih.js";
|
||||
import { i as useGroupItem, n as makeGroupProps, r as useGroup, t as makeGroupItemProps } from "./group-Cm2viEWK.js";
|
||||
import { n as makeSizeProps, r as useSize, t as VIcon } from "./VIcon-1CJH_3Uo.js";
|
||||
import { n as makeLoaderProps, r as useLoader } from "./loader-CV4sMFhE.js";
|
||||
import { t as VProgressCircular } from "./VProgressCircular-yKv2qs75.js";
|
||||
import { n as usePosition, t as makePositionProps } from "./position-BCUsnxVO.js";
|
||||
import { r as useLink, t as makeRouterProps } from "./router-D_jP4Uwb.js";
|
||||
import { t as Ripple } from "./ripple-Z40rPDte.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VBtn/VBtn.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VBtnToggle/VBtnToggle.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VBtnGroup/VBtnGroup.css";
|
||||
//#region node_modules/vuetify/lib/components/VBtnGroup/VBtnGroup.js
|
||||
var makeVBtnGroupProps = propsFactory({
|
||||
baseColor: String,
|
||||
divided: Boolean,
|
||||
direction: {
|
||||
type: String,
|
||||
default: "horizontal"
|
||||
},
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeElevationProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps(),
|
||||
...makeThemeProps(),
|
||||
...makeVariantProps()
|
||||
}, "VBtnGroup");
|
||||
var VBtnGroup = genericComponent()({
|
||||
name: "VBtnGroup",
|
||||
props: makeVBtnGroupProps(),
|
||||
setup(props, { slots }) {
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { densityClasses } = useDensity(props);
|
||||
const { borderClasses } = useBorder(props);
|
||||
const { elevationClasses } = useElevation(props);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
provideDefaults({ VBtn: {
|
||||
height: toRef(() => props.direction === "horizontal" ? "auto" : null),
|
||||
baseColor: toRef(() => props.baseColor),
|
||||
color: toRef(() => props.color),
|
||||
density: toRef(() => props.density),
|
||||
flat: true,
|
||||
variant: toRef(() => props.variant)
|
||||
} });
|
||||
useRender(() => {
|
||||
return createVNode(props.tag, {
|
||||
"class": normalizeClass([
|
||||
"v-btn-group",
|
||||
`v-btn-group--${props.direction}`,
|
||||
{ "v-btn-group--divided": props.divided },
|
||||
themeClasses.value,
|
||||
borderClasses.value,
|
||||
densityClasses.value,
|
||||
elevationClasses.value,
|
||||
roundedClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle(props.style)
|
||||
}, slots);
|
||||
});
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VBtnToggle/VBtnToggle.js
|
||||
var VBtnToggleSymbol = Symbol.for("vuetify:v-btn-toggle");
|
||||
var makeVBtnToggleProps = propsFactory({
|
||||
...makeVBtnGroupProps(),
|
||||
...makeGroupProps()
|
||||
}, "VBtnToggle");
|
||||
genericComponent()({
|
||||
name: "VBtnToggle",
|
||||
props: makeVBtnToggleProps(),
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { slots }) {
|
||||
const { isSelected, next, prev, select, selected } = useGroup(props, VBtnToggleSymbol);
|
||||
useRender(() => {
|
||||
const btnGroupProps = VBtnGroup.filterProps(props);
|
||||
return createVNode(VBtnGroup, mergeProps({ "class": ["v-btn-toggle", props.class] }, btnGroupProps, { "style": props.style }), { default: () => [slots.default?.({
|
||||
isSelected,
|
||||
next,
|
||||
prev,
|
||||
select,
|
||||
selected
|
||||
})] });
|
||||
});
|
||||
return {
|
||||
next,
|
||||
prev,
|
||||
select
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/composables/selectLink.js
|
||||
function useSelectLink(link, select) {
|
||||
watch(() => link.isActive?.value, (isActive) => {
|
||||
if (link.isLink.value && isActive != null && select) nextTick(() => {
|
||||
select(isActive);
|
||||
});
|
||||
}, { immediate: true });
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VBtn/VBtn.js
|
||||
var makeVBtnProps = propsFactory({
|
||||
active: {
|
||||
type: Boolean,
|
||||
default: void 0
|
||||
},
|
||||
activeColor: String,
|
||||
baseColor: String,
|
||||
symbol: {
|
||||
type: null,
|
||||
default: VBtnToggleSymbol
|
||||
},
|
||||
flat: Boolean,
|
||||
icon: [
|
||||
Boolean,
|
||||
String,
|
||||
Function,
|
||||
Object
|
||||
],
|
||||
prependIcon: IconValue,
|
||||
appendIcon: IconValue,
|
||||
block: Boolean,
|
||||
readonly: Boolean,
|
||||
slim: Boolean,
|
||||
stacked: Boolean,
|
||||
spaced: String,
|
||||
ripple: {
|
||||
type: [Boolean, Object],
|
||||
default: true
|
||||
},
|
||||
text: {
|
||||
type: [
|
||||
String,
|
||||
Number,
|
||||
Boolean
|
||||
],
|
||||
default: void 0
|
||||
},
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeDimensionProps(),
|
||||
...makeElevationProps(),
|
||||
...makeGroupItemProps(),
|
||||
...makeLoaderProps(),
|
||||
...makeLocationProps(),
|
||||
...makePositionProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeRouterProps(),
|
||||
...makeSizeProps(),
|
||||
...makeTagProps({ tag: "button" }),
|
||||
...makeThemeProps(),
|
||||
...makeVariantProps({ variant: "elevated" })
|
||||
}, "VBtn");
|
||||
var VBtn = genericComponent()({
|
||||
name: "VBtn",
|
||||
props: makeVBtnProps(),
|
||||
emits: { "group:selected": (val) => true },
|
||||
setup(props, { attrs, slots }) {
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { borderClasses } = useBorder(props);
|
||||
const { densityClasses } = useDensity(props);
|
||||
const { dimensionStyles } = useDimension(props);
|
||||
const { elevationClasses } = useElevation(props);
|
||||
const { loaderClasses } = useLoader(props);
|
||||
const { locationStyles } = useLocation(props);
|
||||
const { positionClasses } = usePosition(props);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
const { sizeClasses, sizeStyles } = useSize(props);
|
||||
const group = useGroupItem(props, props.symbol, false);
|
||||
const link = useLink(props, attrs);
|
||||
const isActive = computed(() => {
|
||||
if (props.active !== void 0) return props.active;
|
||||
if (link.isRouterLink.value) return link.isActive?.value;
|
||||
return group?.isSelected.value;
|
||||
});
|
||||
const color = toRef(() => isActive.value ? props.activeColor ?? props.color : props.color);
|
||||
const { colorClasses, colorStyles, variantClasses } = useVariant(computed(() => {
|
||||
return {
|
||||
color: group?.isSelected.value && (!link.isLink.value || link.isActive?.value) || !group || link.isActive?.value ? color.value ?? props.baseColor : props.baseColor,
|
||||
variant: props.variant
|
||||
};
|
||||
}));
|
||||
const isDisabled = computed(() => group?.disabled.value || props.disabled);
|
||||
const isElevated = toRef(() => {
|
||||
return props.variant === "elevated" && !(props.disabled || props.flat || props.border);
|
||||
});
|
||||
const valueAttr = computed(() => {
|
||||
if (props.value === void 0 || typeof props.value === "symbol") return void 0;
|
||||
return Object(props.value) === props.value ? JSON.stringify(props.value, null, 0) : props.value;
|
||||
});
|
||||
function onClick(e) {
|
||||
if (isDisabled.value || link.isLink.value && (e.metaKey || e.ctrlKey || e.shiftKey || e.button !== 0 || attrs.target === "_blank")) return;
|
||||
if (link.isRouterLink.value) link.navigate.value?.(e);
|
||||
else group?.toggle();
|
||||
}
|
||||
useSelectLink(link, group?.select);
|
||||
useRender(() => {
|
||||
const Tag = link.isLink.value ? "a" : props.tag;
|
||||
const hasPrepend = !!(props.prependIcon || slots.prepend);
|
||||
const hasAppend = !!(props.appendIcon || slots.append);
|
||||
const hasIcon = !!(props.icon && props.icon !== true);
|
||||
return withDirectives(createVNode(Tag, mergeProps(link.linkProps, {
|
||||
"type": Tag === "a" ? void 0 : "button",
|
||||
"class": [
|
||||
"v-btn",
|
||||
group?.selectedClass.value,
|
||||
{
|
||||
"v-btn--active": isActive.value,
|
||||
"v-btn--block": props.block,
|
||||
"v-btn--disabled": isDisabled.value,
|
||||
"v-btn--elevated": isElevated.value,
|
||||
"v-btn--flat": props.flat,
|
||||
"v-btn--icon": !!props.icon,
|
||||
"v-btn--loading": props.loading,
|
||||
"v-btn--readonly": props.readonly,
|
||||
"v-btn--slim": props.slim,
|
||||
"v-btn--stacked": props.stacked
|
||||
},
|
||||
props.spaced ? ["v-btn--spaced", `v-btn--spaced-${props.spaced}`] : [],
|
||||
themeClasses.value,
|
||||
borderClasses.value,
|
||||
colorClasses.value,
|
||||
densityClasses.value,
|
||||
elevationClasses.value,
|
||||
loaderClasses.value,
|
||||
positionClasses.value,
|
||||
roundedClasses.value,
|
||||
sizeClasses.value,
|
||||
variantClasses.value,
|
||||
props.class
|
||||
],
|
||||
"style": [
|
||||
colorStyles.value,
|
||||
dimensionStyles.value,
|
||||
locationStyles.value,
|
||||
sizeStyles.value,
|
||||
props.style
|
||||
],
|
||||
"aria-busy": props.loading ? true : void 0,
|
||||
"disabled": isDisabled.value && Tag !== "a" || void 0,
|
||||
"tabindex": props.loading || props.readonly ? -1 : void 0,
|
||||
"onClick": onClick,
|
||||
"value": valueAttr.value
|
||||
}), { default: () => [
|
||||
genOverlays(true, "v-btn"),
|
||||
!props.icon && hasPrepend && createBaseVNode("span", {
|
||||
"key": "prepend",
|
||||
"class": "v-btn__prepend"
|
||||
}, [!slots.prepend ? createVNode(VIcon, {
|
||||
"key": "prepend-icon",
|
||||
"icon": props.prependIcon
|
||||
}, null) : createVNode(VDefaultsProvider, {
|
||||
"key": "prepend-defaults",
|
||||
"disabled": !props.prependIcon,
|
||||
"defaults": { VIcon: { icon: props.prependIcon } }
|
||||
}, slots.prepend)]),
|
||||
createBaseVNode("span", {
|
||||
"class": "v-btn__content",
|
||||
"data-no-activator": ""
|
||||
}, [!slots.default && hasIcon ? createVNode(VIcon, {
|
||||
"key": "content-icon",
|
||||
"icon": props.icon
|
||||
}, null) : createVNode(VDefaultsProvider, {
|
||||
"key": "content-defaults",
|
||||
"disabled": !hasIcon,
|
||||
"defaults": { VIcon: { icon: props.icon } }
|
||||
}, { default: () => [slots.default?.() ?? toDisplayString(props.text)] })]),
|
||||
!props.icon && hasAppend && createBaseVNode("span", {
|
||||
"key": "append",
|
||||
"class": "v-btn__append"
|
||||
}, [!slots.append ? createVNode(VIcon, {
|
||||
"key": "append-icon",
|
||||
"icon": props.appendIcon
|
||||
}, null) : createVNode(VDefaultsProvider, {
|
||||
"key": "append-defaults",
|
||||
"disabled": !props.appendIcon,
|
||||
"defaults": { VIcon: { icon: props.appendIcon } }
|
||||
}, slots.append)]),
|
||||
!!props.loading && createBaseVNode("span", {
|
||||
"key": "loader",
|
||||
"class": "v-btn__loader"
|
||||
}, [slots.loader?.() ?? createVNode(VProgressCircular, {
|
||||
"color": typeof props.loading === "boolean" ? void 0 : props.loading,
|
||||
"indeterminate": true,
|
||||
"width": "2"
|
||||
}, null)])
|
||||
] }), [[
|
||||
Ripple,
|
||||
!isDisabled.value && props.ripple,
|
||||
"",
|
||||
{ center: !!props.icon }
|
||||
]]);
|
||||
});
|
||||
return { group };
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { makeVBtnProps as n, VBtn as t };
|
||||
|
||||
//# sourceMappingURL=VBtn-BZzD9gwE.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+28
@@ -0,0 +1,28 @@
|
||||
import { $n as toRefs } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { a as provideDefaults, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/components/VDefaultsProvider/VDefaultsProvider.js
|
||||
var makeVDefaultsProviderProps = propsFactory({
|
||||
defaults: Object,
|
||||
disabled: Boolean,
|
||||
reset: [Number, String],
|
||||
root: [Boolean, String],
|
||||
scoped: Boolean
|
||||
}, "VDefaultsProvider");
|
||||
var VDefaultsProvider = genericComponent(false)({
|
||||
name: "VDefaultsProvider",
|
||||
props: makeVDefaultsProviderProps(),
|
||||
setup(props, { slots }) {
|
||||
const { defaults, disabled, reset, root, scoped } = toRefs(props);
|
||||
provideDefaults(defaults, {
|
||||
reset,
|
||||
root,
|
||||
scoped,
|
||||
disabled
|
||||
});
|
||||
return () => slots.default?.();
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VDefaultsProvider as t };
|
||||
|
||||
//# sourceMappingURL=VDefaultsProvider-C09t4-My.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"VDefaultsProvider-C09t4-My.js","names":[],"sources":["../../vuetify/lib/components/VDefaultsProvider/VDefaultsProvider.js"],"sourcesContent":["// Composables\nimport { provideDefaults } from \"../../composables/defaults.js\"; // Utilities\nimport { toRefs } from 'vue';\nimport { genericComponent, propsFactory } from \"../../util/index.js\"; // Types\nexport const makeVDefaultsProviderProps = propsFactory({\n defaults: Object,\n disabled: Boolean,\n reset: [Number, String],\n root: [Boolean, String],\n scoped: Boolean\n}, 'VDefaultsProvider');\nexport const VDefaultsProvider = genericComponent(false)({\n name: 'VDefaultsProvider',\n props: makeVDefaultsProviderProps(),\n setup(props, {\n slots\n }) {\n const {\n defaults,\n disabled,\n reset,\n root,\n scoped\n } = toRefs(props);\n provideDefaults(defaults, {\n reset,\n root,\n scoped,\n disabled\n });\n return () => slots.default?.();\n }\n});\n//# sourceMappingURL=VDefaultsProvider.js.map"],"mappings":";;;AAIA,IAAa,6BAA6B,aAAa;CACrD,UAAU;CACV,UAAU;CACV,OAAO,CAAC,QAAQ,OAAO;CACvB,MAAM,CAAC,SAAS,OAAO;CACvB,QAAQ;CACT,EAAE,oBAAoB;AACvB,IAAa,oBAAoB,iBAAiB,MAAM,CAAC;CACvD,MAAM;CACN,OAAO,4BAA4B;CACnC,MAAM,OAAO,EACX,SACC;EACD,MAAM,EACJ,UACA,UACA,OACA,MACA,WACE,OAAO,MAAM;AACjB,kBAAgB,UAAU;GACxB;GACA;GACA;GACA;GACD,CAAC;AACF,eAAa,MAAM,WAAW;;CAEjC,CAAC"}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
import { Qn as toRef, U as computed, W as createBaseVNode, ar as normalizeClass, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { _ as convertToUnit, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { r as useTextColor } from "./color-B6vuQruj.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VDivider/VDivider.css";
|
||||
//#region node_modules/vuetify/lib/components/VDivider/VDivider.js
|
||||
var allowedVariants = [
|
||||
"dotted",
|
||||
"dashed",
|
||||
"solid",
|
||||
"double"
|
||||
];
|
||||
var makeVDividerProps = propsFactory({
|
||||
color: String,
|
||||
contentOffset: [
|
||||
Number,
|
||||
String,
|
||||
Array
|
||||
],
|
||||
gradient: Boolean,
|
||||
inset: Boolean,
|
||||
length: [Number, String],
|
||||
opacity: [Number, String],
|
||||
thickness: [Number, String],
|
||||
vertical: Boolean,
|
||||
variant: {
|
||||
type: String,
|
||||
default: "solid",
|
||||
validator: (v) => allowedVariants.includes(v)
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeThemeProps()
|
||||
}, "VDivider");
|
||||
var VDivider = genericComponent()({
|
||||
name: "VDivider",
|
||||
props: makeVDividerProps(),
|
||||
setup(props, { attrs, slots }) {
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => props.color);
|
||||
const dividerStyles = computed(() => {
|
||||
const styles = {};
|
||||
if (props.length) styles[props.vertical ? "height" : "width"] = convertToUnit(props.length);
|
||||
if (props.thickness) styles[props.vertical ? "borderRightWidth" : "borderTopWidth"] = convertToUnit(props.thickness);
|
||||
return styles;
|
||||
});
|
||||
const contentStyles = toRef(() => {
|
||||
const margin = Array.isArray(props.contentOffset) ? props.contentOffset[0] : props.contentOffset;
|
||||
const shift = Array.isArray(props.contentOffset) ? props.contentOffset[1] : 0;
|
||||
return {
|
||||
marginBlock: props.vertical && margin ? convertToUnit(margin) : void 0,
|
||||
marginInline: !props.vertical && margin ? convertToUnit(margin) : void 0,
|
||||
transform: shift ? `translate${props.vertical ? "X" : "Y"}(${convertToUnit(shift)})` : void 0
|
||||
};
|
||||
});
|
||||
useRender(() => {
|
||||
const divider = createBaseVNode("hr", {
|
||||
"class": normalizeClass([
|
||||
{
|
||||
"v-divider": true,
|
||||
"v-divider--gradient": props.gradient && !slots.default,
|
||||
"v-divider--inset": props.inset,
|
||||
"v-divider--vertical": props.vertical
|
||||
},
|
||||
themeClasses.value,
|
||||
textColorClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
dividerStyles.value,
|
||||
textColorStyles.value,
|
||||
{ "--v-border-opacity": props.opacity },
|
||||
{ "border-style": props.variant },
|
||||
props.style
|
||||
]),
|
||||
"aria-orientation": !attrs.role || attrs.role === "separator" ? props.vertical ? "vertical" : "horizontal" : void 0,
|
||||
"role": `${attrs.role || "separator"}`
|
||||
}, null);
|
||||
if (!slots.default) return divider;
|
||||
return createBaseVNode("div", { "class": normalizeClass(["v-divider__wrapper", {
|
||||
"v-divider__wrapper--gradient": props.gradient,
|
||||
"v-divider__wrapper--inset": props.inset,
|
||||
"v-divider__wrapper--vertical": props.vertical
|
||||
}]) }, [
|
||||
divider,
|
||||
createBaseVNode("div", {
|
||||
"class": "v-divider__content",
|
||||
"style": normalizeStyle(contentStyles.value)
|
||||
}, [slots.default()]),
|
||||
divider
|
||||
]);
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VDivider as t };
|
||||
|
||||
//# sourceMappingURL=VDivider-BJiijT0J.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+103
@@ -0,0 +1,103 @@
|
||||
import { L as Text, Yn as shallowRef, ar as normalizeClass, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { E as flattenFragments, P as includes, _ as convertToUnit, c as getCurrentInstanceName, l as propsFactory, n as genericComponent, x as destructComputed } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { r as useTextColor } from "./color-B6vuQruj.js";
|
||||
import { a as useTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { n as IconValue, s as useIcon } from "./icons-k2ZLE_i8.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VIcon/VIcon.css";
|
||||
//#region node_modules/vuetify/lib/composables/size.js
|
||||
var predefinedSizes = [
|
||||
"x-small",
|
||||
"small",
|
||||
"default",
|
||||
"large",
|
||||
"x-large"
|
||||
];
|
||||
var makeSizeProps = propsFactory({ size: {
|
||||
type: [String, Number],
|
||||
default: "default"
|
||||
} }, "size");
|
||||
function useSize(props, name = getCurrentInstanceName()) {
|
||||
return destructComputed(() => {
|
||||
const size = props.size;
|
||||
let sizeClasses;
|
||||
let sizeStyles;
|
||||
if (includes(predefinedSizes, size)) sizeClasses = `${name}--size-${size}`;
|
||||
else if (size) sizeStyles = {
|
||||
width: convertToUnit(size),
|
||||
height: convertToUnit(size)
|
||||
};
|
||||
return {
|
||||
sizeClasses,
|
||||
sizeStyles
|
||||
};
|
||||
});
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VIcon/VIcon.js
|
||||
var makeVIconProps = propsFactory({
|
||||
color: String,
|
||||
disabled: Boolean,
|
||||
start: Boolean,
|
||||
end: Boolean,
|
||||
icon: IconValue,
|
||||
opacity: [String, Number],
|
||||
...makeComponentProps(),
|
||||
...makeSizeProps(),
|
||||
...makeTagProps({ tag: "i" }),
|
||||
...makeThemeProps()
|
||||
}, "VIcon");
|
||||
var VIcon = genericComponent()({
|
||||
name: "VIcon",
|
||||
props: makeVIconProps(),
|
||||
setup(props, { attrs, slots }) {
|
||||
const slotIcon = shallowRef();
|
||||
const { themeClasses } = useTheme();
|
||||
const { iconData } = useIcon(() => slotIcon.value || props.icon);
|
||||
const { sizeClasses } = useSize(props);
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => props.color);
|
||||
useRender(() => {
|
||||
const slotValue = slots.default?.();
|
||||
if (slotValue) slotIcon.value = flattenFragments(slotValue).filter((node) => node.type === Text && node.children && typeof node.children === "string")[0]?.children;
|
||||
const hasClick = !!(attrs.onClick || attrs.onClickOnce);
|
||||
return createVNode(iconData.value.component, {
|
||||
"tag": props.tag,
|
||||
"icon": iconData.value.icon,
|
||||
"class": normalizeClass([
|
||||
"v-icon",
|
||||
"notranslate",
|
||||
themeClasses.value,
|
||||
sizeClasses.value,
|
||||
textColorClasses.value,
|
||||
{
|
||||
"v-icon--clickable": hasClick,
|
||||
"v-icon--disabled": props.disabled,
|
||||
"v-icon--start": props.start,
|
||||
"v-icon--end": props.end
|
||||
},
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
{ "--v-icon-opacity": props.opacity },
|
||||
!sizeClasses.value ? {
|
||||
fontSize: convertToUnit(props.size),
|
||||
height: convertToUnit(props.size),
|
||||
width: convertToUnit(props.size)
|
||||
} : void 0,
|
||||
textColorStyles.value,
|
||||
props.style
|
||||
]),
|
||||
"role": hasClick ? "button" : void 0,
|
||||
"aria-hidden": !hasClick,
|
||||
"tabindex": hasClick ? props.disabled ? -1 : 0 : void 0
|
||||
}, { default: () => [slotValue] });
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { makeSizeProps as n, useSize as r, VIcon as t };
|
||||
|
||||
//# sourceMappingURL=VIcon-1CJH_3Uo.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+363
@@ -0,0 +1,363 @@
|
||||
import { At as onBeforeMount, C as vShow, Cn as withDirectives, Dt as mergeProps, Kn as ref, M as Fragment, Ot as nextTick, Qn as toRef, U as computed, W as createBaseVNode, Yn as shallowRef, ar as normalizeClass, et as createVNode, gn as watch, jt as onBeforeUnmount, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { _ as convertToUnit, et as SUPPORTS_INTERSECTION, l as propsFactory, n as genericComponent, s as getCurrentInstance, w as filterInputAttrs } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { t as useBackgroundColor } from "./color-B6vuQruj.js";
|
||||
import { n as useDimension, t as makeDimensionProps } from "./dimensions-BDdmuRdK.js";
|
||||
import { n as useRounded, t as makeRoundedProps } from "./rounded-BuPGKRa9.js";
|
||||
import { n as makeTransitionProps, t as MaybeTransition } from "./transition-DqoZ8fA1.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VImg/VImg.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VResponsive/VResponsive.css";
|
||||
//#region node_modules/vuetify/lib/components/VResponsive/VResponsive.js
|
||||
function useAspectStyles(props) {
|
||||
return { aspectStyles: computed(() => {
|
||||
const ratio = Number(props.aspectRatio);
|
||||
return ratio ? { paddingBottom: String(1 / ratio * 100) + "%" } : void 0;
|
||||
}) };
|
||||
}
|
||||
var makeVResponsiveProps = propsFactory({
|
||||
aspectRatio: [String, Number],
|
||||
contentClass: null,
|
||||
inline: Boolean,
|
||||
...makeComponentProps(),
|
||||
...makeDimensionProps()
|
||||
}, "VResponsive");
|
||||
var VResponsive = genericComponent()({
|
||||
name: "VResponsive",
|
||||
props: makeVResponsiveProps(),
|
||||
setup(props, { slots }) {
|
||||
const { aspectStyles } = useAspectStyles(props);
|
||||
const { dimensionStyles } = useDimension(props);
|
||||
useRender(() => createBaseVNode("div", {
|
||||
"class": normalizeClass([
|
||||
"v-responsive",
|
||||
{ "v-responsive--inline": props.inline },
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([dimensionStyles.value, props.style])
|
||||
}, [
|
||||
createBaseVNode("div", {
|
||||
"class": "v-responsive__sizer",
|
||||
"style": normalizeStyle(aspectStyles.value)
|
||||
}, null),
|
||||
slots.additional?.(),
|
||||
slots.default && createBaseVNode("div", { "class": normalizeClass(["v-responsive__content", props.contentClass]) }, [slots.default()])
|
||||
]));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/directives/intersect/index.js
|
||||
function mounted(el, binding) {
|
||||
if (!SUPPORTS_INTERSECTION) return;
|
||||
const modifiers = binding.modifiers || {};
|
||||
const value = binding.value;
|
||||
const { handler, options } = typeof value === "object" ? value : {
|
||||
handler: value,
|
||||
options: {}
|
||||
};
|
||||
const observer = new IntersectionObserver((entries = [], observer) => {
|
||||
const _observe = el._observe?.[binding.instance.$.uid];
|
||||
if (!_observe) return;
|
||||
const isIntersecting = entries.some((entry) => entry.isIntersecting);
|
||||
if (handler && (!modifiers.quiet || _observe.init) && (!modifiers.once || isIntersecting || _observe.init)) handler(isIntersecting, entries, observer);
|
||||
if (isIntersecting && modifiers.once) unmounted(el, binding);
|
||||
else _observe.init = true;
|
||||
}, options);
|
||||
el._observe = Object(el._observe);
|
||||
el._observe[binding.instance.$.uid] = {
|
||||
init: false,
|
||||
observer
|
||||
};
|
||||
observer.observe(el);
|
||||
}
|
||||
function unmounted(el, binding) {
|
||||
const observe = el._observe?.[binding.instance.$.uid];
|
||||
if (!observe) return;
|
||||
observe.observer.unobserve(el);
|
||||
delete el._observe[binding.instance.$.uid];
|
||||
}
|
||||
var Intersect = {
|
||||
mounted,
|
||||
unmounted,
|
||||
updated: (el, binding) => {
|
||||
if (el._observe?.[binding.instance.$.uid]) {
|
||||
unmounted(el, binding);
|
||||
mounted(el, binding);
|
||||
}
|
||||
}
|
||||
};
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VImg/VImg.js
|
||||
var makeVImgProps = propsFactory({
|
||||
absolute: Boolean,
|
||||
alt: String,
|
||||
cover: Boolean,
|
||||
color: String,
|
||||
draggable: {
|
||||
type: [Boolean, String],
|
||||
default: void 0
|
||||
},
|
||||
eager: Boolean,
|
||||
gradient: String,
|
||||
imageClass: null,
|
||||
lazySrc: String,
|
||||
options: {
|
||||
type: Object,
|
||||
default: () => ({
|
||||
root: void 0,
|
||||
rootMargin: void 0,
|
||||
threshold: void 0
|
||||
})
|
||||
},
|
||||
sizes: String,
|
||||
src: {
|
||||
type: [String, Object],
|
||||
default: ""
|
||||
},
|
||||
crossorigin: String,
|
||||
referrerpolicy: String,
|
||||
srcset: String,
|
||||
position: String,
|
||||
...makeVResponsiveProps(),
|
||||
...makeComponentProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTransitionProps()
|
||||
}, "VImg");
|
||||
var VImg = genericComponent()({
|
||||
name: "VImg",
|
||||
directives: { vIntersect: Intersect },
|
||||
inheritAttrs: false,
|
||||
props: makeVImgProps(),
|
||||
emits: {
|
||||
loadstart: (value) => true,
|
||||
load: (value) => true,
|
||||
error: (value) => true
|
||||
},
|
||||
setup(props, { attrs, emit, slots }) {
|
||||
const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
const vm = getCurrentInstance("VImg");
|
||||
const currentSrc = shallowRef("");
|
||||
const image = ref();
|
||||
const state = shallowRef(props.eager ? "loading" : "idle");
|
||||
const naturalWidth = shallowRef();
|
||||
const naturalHeight = shallowRef();
|
||||
const normalisedSrc = computed(() => {
|
||||
return props.src && typeof props.src === "object" ? {
|
||||
src: props.src.src,
|
||||
srcset: props.srcset || props.src.srcset,
|
||||
lazySrc: props.lazySrc || props.src.lazySrc,
|
||||
aspect: Number(props.aspectRatio || props.src.aspect || 0)
|
||||
} : {
|
||||
src: props.src,
|
||||
srcset: props.srcset,
|
||||
lazySrc: props.lazySrc,
|
||||
aspect: Number(props.aspectRatio || 0)
|
||||
};
|
||||
});
|
||||
const aspectRatio = computed(() => {
|
||||
return normalisedSrc.value.aspect || naturalWidth.value / naturalHeight.value || 0;
|
||||
});
|
||||
watch(() => props.src, () => {
|
||||
init(state.value !== "idle");
|
||||
});
|
||||
watch(aspectRatio, (val, oldVal) => {
|
||||
if (!val && oldVal && image.value) pollForSize(image.value);
|
||||
});
|
||||
onBeforeMount(() => init());
|
||||
function init(isIntersecting) {
|
||||
if (props.eager && isIntersecting) return;
|
||||
if (SUPPORTS_INTERSECTION && !isIntersecting && !props.eager) return;
|
||||
state.value = "loading";
|
||||
if (normalisedSrc.value.lazySrc) {
|
||||
const lazyImg = new Image();
|
||||
lazyImg.src = normalisedSrc.value.lazySrc;
|
||||
pollForSize(lazyImg, null);
|
||||
}
|
||||
if (!normalisedSrc.value.src) return;
|
||||
nextTick(() => {
|
||||
emit("loadstart", image.value?.currentSrc || normalisedSrc.value.src);
|
||||
setTimeout(() => {
|
||||
if (vm.isUnmounted) return;
|
||||
if (image.value?.complete) {
|
||||
if (!image.value.naturalWidth) onError();
|
||||
if (state.value === "error") return;
|
||||
if (!aspectRatio.value) pollForSize(image.value, null);
|
||||
if (state.value === "loading") onLoad();
|
||||
} else {
|
||||
if (!aspectRatio.value) pollForSize(image.value);
|
||||
getSrc();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
function onLoad() {
|
||||
if (vm.isUnmounted) return;
|
||||
getSrc();
|
||||
pollForSize(image.value);
|
||||
state.value = "loaded";
|
||||
emit("load", image.value?.currentSrc || normalisedSrc.value.src);
|
||||
}
|
||||
function onError() {
|
||||
if (vm.isUnmounted) return;
|
||||
state.value = "error";
|
||||
emit("error", image.value?.currentSrc || normalisedSrc.value.src);
|
||||
}
|
||||
function getSrc() {
|
||||
const img = image.value;
|
||||
if (img) currentSrc.value = img.currentSrc || img.src;
|
||||
}
|
||||
let timer = -1;
|
||||
onBeforeUnmount(() => {
|
||||
clearTimeout(timer);
|
||||
});
|
||||
function pollForSize(img, timeout = 100) {
|
||||
const poll = () => {
|
||||
clearTimeout(timer);
|
||||
if (vm.isUnmounted) return;
|
||||
const { naturalHeight: imgHeight, naturalWidth: imgWidth } = img;
|
||||
if (imgHeight || imgWidth) {
|
||||
naturalWidth.value = imgWidth;
|
||||
naturalHeight.value = imgHeight;
|
||||
} else if (!img.complete && state.value === "loading" && timeout != null) timer = window.setTimeout(poll, timeout);
|
||||
else if (img.currentSrc.endsWith(".svg") || img.currentSrc.startsWith("data:image/svg+xml")) {
|
||||
naturalWidth.value = 1;
|
||||
naturalHeight.value = 1;
|
||||
}
|
||||
};
|
||||
poll();
|
||||
}
|
||||
const containClasses = toRef(() => ({
|
||||
"v-img__img--cover": props.cover,
|
||||
"v-img__img--contain": !props.cover
|
||||
}));
|
||||
const __image = () => {
|
||||
if (!normalisedSrc.value.src || state.value === "idle") return null;
|
||||
const img = createBaseVNode("img", {
|
||||
"class": normalizeClass([
|
||||
"v-img__img",
|
||||
containClasses.value,
|
||||
props.imageClass
|
||||
]),
|
||||
"style": { objectPosition: props.position },
|
||||
"crossorigin": props.crossorigin,
|
||||
"src": normalisedSrc.value.src,
|
||||
"srcset": normalisedSrc.value.srcset,
|
||||
"alt": props.alt,
|
||||
"referrerpolicy": props.referrerpolicy,
|
||||
"draggable": props.draggable,
|
||||
"sizes": props.sizes,
|
||||
"ref": image,
|
||||
"onLoad": onLoad,
|
||||
"onError": onError
|
||||
}, null);
|
||||
const sources = slots.sources?.();
|
||||
return createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"appear": true
|
||||
}, { default: () => [withDirectives(sources ? createBaseVNode("picture", { "class": "v-img__picture" }, [sources, img]) : img, [[vShow, state.value === "loaded"]])] });
|
||||
};
|
||||
const __preloadImage = () => createVNode(MaybeTransition, { "transition": props.transition }, { default: () => [normalisedSrc.value.lazySrc && state.value !== "loaded" && createBaseVNode("img", {
|
||||
"class": normalizeClass([
|
||||
"v-img__img",
|
||||
"v-img__img--preload",
|
||||
containClasses.value
|
||||
]),
|
||||
"style": { objectPosition: props.position },
|
||||
"crossorigin": props.crossorigin,
|
||||
"src": normalisedSrc.value.lazySrc,
|
||||
"alt": props.alt,
|
||||
"referrerpolicy": props.referrerpolicy,
|
||||
"draggable": props.draggable
|
||||
}, null)] });
|
||||
const __placeholder = () => {
|
||||
if (!slots.placeholder) return null;
|
||||
return createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"appear": true
|
||||
}, { default: () => [(state.value === "loading" || state.value === "error" && !slots.error) && createBaseVNode("div", { "class": "v-img__placeholder" }, [slots.placeholder()])] });
|
||||
};
|
||||
const __error = () => {
|
||||
if (!slots.error) return null;
|
||||
return createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"appear": true
|
||||
}, { default: () => [state.value === "error" && createBaseVNode("div", { "class": "v-img__error" }, [slots.error()])] });
|
||||
};
|
||||
const __gradient = () => {
|
||||
if (!props.gradient) return null;
|
||||
return createBaseVNode("div", {
|
||||
"class": "v-img__gradient",
|
||||
"style": { backgroundImage: `linear-gradient(${props.gradient})` }
|
||||
}, null);
|
||||
};
|
||||
const isBooted = shallowRef(false);
|
||||
{
|
||||
const stop = watch(aspectRatio, (val) => {
|
||||
if (val) {
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
isBooted.value = true;
|
||||
});
|
||||
});
|
||||
stop();
|
||||
}
|
||||
});
|
||||
}
|
||||
useRender(() => {
|
||||
const responsiveProps = VResponsive.filterProps(props);
|
||||
const [rootAttrs, imageAttrs] = filterInputAttrs(attrs);
|
||||
return withDirectives(createVNode(VResponsive, mergeProps({
|
||||
"class": [
|
||||
"v-img",
|
||||
{
|
||||
"v-img--absolute": props.absolute,
|
||||
"v-img--booting": !isBooted.value,
|
||||
"v-img--fit-content": props.width === "fit-content"
|
||||
},
|
||||
backgroundColorClasses.value,
|
||||
roundedClasses.value,
|
||||
props.class
|
||||
],
|
||||
"style": [
|
||||
{ width: convertToUnit(props.width === "auto" ? naturalWidth.value : props.width) },
|
||||
backgroundColorStyles.value,
|
||||
props.style
|
||||
]
|
||||
}, responsiveProps, rootAttrs, {
|
||||
"aspectRatio": aspectRatio.value,
|
||||
"aria-label": props.alt,
|
||||
"role": props.alt ? "img" : void 0
|
||||
}), {
|
||||
additional: () => createBaseVNode(Fragment, null, [
|
||||
createVNode(__image, imageAttrs, null),
|
||||
createVNode(__preloadImage, null, null),
|
||||
createVNode(__gradient, null, null),
|
||||
createVNode(__placeholder, null, null),
|
||||
createVNode(__error, null, null)
|
||||
]),
|
||||
default: slots.default
|
||||
}), [[
|
||||
Intersect,
|
||||
{
|
||||
handler: init,
|
||||
options: props.options
|
||||
},
|
||||
null,
|
||||
{ once: true }
|
||||
]]);
|
||||
});
|
||||
return {
|
||||
currentSrc,
|
||||
image,
|
||||
state,
|
||||
naturalWidth,
|
||||
naturalHeight
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { Intersect as n, VImg as t };
|
||||
|
||||
//# sourceMappingURL=VImg-DaEUT7gG.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+720
@@ -0,0 +1,720 @@
|
||||
import { At as onBeforeMount, Cn as withDirectives, Dt as mergeProps, Ft as onMounted, Kn as ref, M as Fragment, Ot as nextTick, Qn as toRef, U as computed, Ut as provide, Vn as onScopeDispose, W as createBaseVNode, Yn as shallowRef, ar as normalizeClass, cn as useId, et as createVNode, gn as watch, jt as onBeforeUnmount, nr as unref, sr as normalizeStyle, xt as inject } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { B as matchesSelector, K as pick, Z as wrapInArray, a as provideDefaults, c as getCurrentInstanceName, d as EventProp, f as callEvent, l as propsFactory, n as genericComponent, s as getCurrentInstance, w as filterInputAttrs } from "./defineComponent-DB6xIcDy.js";
|
||||
import { a as VSlideYTransition } from "./transitions-DCQ3sjjZ.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as deepEqual } from "./deepEqual-DDqmGqyF.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { r as useTextColor, t as useBackgroundColor } from "./color-B6vuQruj.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { n as IconValue } from "./icons-k2ZLE_i8.js";
|
||||
import { n as useToggleScope, t as useProxiedModel } from "./proxiedModel-DSlSIQ0y.js";
|
||||
import { i as useRtl, r as useLocale } from "./locale-DDGMqzqb.js";
|
||||
import { n as useDimension, t as makeDimensionProps } from "./dimensions-BDdmuRdK.js";
|
||||
import { n as makeTransitionProps, t as MaybeTransition } from "./transition-DqoZ8fA1.js";
|
||||
import { n as useDensity, t as makeDensityProps } from "./density-CpKZ5PhP.js";
|
||||
import { t as VIcon } from "./VIcon-1CJH_3Uo.js";
|
||||
import { t as Ripple } from "./ripple-Z40rPDte.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VSelectionControl/VSelectionControl.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VLabel/VLabel.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VSelectionControlGroup/VSelectionControlGroup.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VInput/VInput.css";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VMessages/VMessages.css";
|
||||
//#region node_modules/vuetify/lib/components/VLabel/VLabel.js
|
||||
var makeVLabelProps = propsFactory({
|
||||
text: String,
|
||||
onClick: EventProp(),
|
||||
...makeComponentProps(),
|
||||
...makeThemeProps()
|
||||
}, "VLabel");
|
||||
var VLabel = genericComponent()({
|
||||
name: "VLabel",
|
||||
props: makeVLabelProps(),
|
||||
setup(props, { slots }) {
|
||||
useRender(() => createBaseVNode("label", {
|
||||
"class": normalizeClass([
|
||||
"v-label",
|
||||
{ "v-label--clickable": !!props.onClick },
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle(props.style),
|
||||
"onClick": props.onClick
|
||||
}, [props.text, slots.default?.()]));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VSelectionControlGroup/VSelectionControlGroup.js
|
||||
var VSelectionControlGroupSymbol = Symbol.for("vuetify:selection-control-group");
|
||||
var makeSelectionControlGroupProps = propsFactory({
|
||||
color: String,
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
defaultsTarget: String,
|
||||
error: Boolean,
|
||||
id: String,
|
||||
inline: Boolean,
|
||||
falseIcon: IconValue,
|
||||
trueIcon: IconValue,
|
||||
ripple: {
|
||||
type: [Boolean, Object],
|
||||
default: true
|
||||
},
|
||||
multiple: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
name: String,
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
modelValue: null,
|
||||
type: String,
|
||||
valueComparator: {
|
||||
type: Function,
|
||||
default: deepEqual
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...makeThemeProps()
|
||||
}, "SelectionControlGroup");
|
||||
var makeVSelectionControlGroupProps = propsFactory({ ...makeSelectionControlGroupProps({ defaultsTarget: "VSelectionControl" }) }, "VSelectionControlGroup");
|
||||
genericComponent()({
|
||||
name: "VSelectionControlGroup",
|
||||
props: makeVSelectionControlGroupProps(),
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { slots }) {
|
||||
const modelValue = useProxiedModel(props, "modelValue");
|
||||
const uid = useId();
|
||||
const id = toRef(() => props.id || `v-selection-control-group-${uid}`);
|
||||
const name = toRef(() => props.name || id.value);
|
||||
const updateHandlers = /* @__PURE__ */ new Set();
|
||||
provide(VSelectionControlGroupSymbol, {
|
||||
modelValue,
|
||||
forceUpdate: () => {
|
||||
updateHandlers.forEach((fn) => fn());
|
||||
},
|
||||
onForceUpdate: (cb) => {
|
||||
updateHandlers.add(cb);
|
||||
onScopeDispose(() => {
|
||||
updateHandlers.delete(cb);
|
||||
});
|
||||
}
|
||||
});
|
||||
provideDefaults({ [props.defaultsTarget]: {
|
||||
color: toRef(() => props.color),
|
||||
disabled: toRef(() => props.disabled),
|
||||
density: toRef(() => props.density),
|
||||
error: toRef(() => props.error),
|
||||
inline: toRef(() => props.inline),
|
||||
modelValue,
|
||||
multiple: toRef(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value)),
|
||||
name,
|
||||
falseIcon: toRef(() => props.falseIcon),
|
||||
trueIcon: toRef(() => props.trueIcon),
|
||||
readonly: toRef(() => props.readonly),
|
||||
ripple: toRef(() => props.ripple),
|
||||
type: toRef(() => props.type),
|
||||
valueComparator: toRef(() => props.valueComparator)
|
||||
} });
|
||||
useRender(() => createBaseVNode("div", {
|
||||
"class": normalizeClass([
|
||||
"v-selection-control-group",
|
||||
{ "v-selection-control-group--inline": props.inline },
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle(props.style),
|
||||
"role": props.type === "radio" ? "radiogroup" : void 0
|
||||
}, [slots.default?.()]));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VSelectionControl/VSelectionControl.js
|
||||
var makeVSelectionControlProps = propsFactory({
|
||||
label: String,
|
||||
baseColor: String,
|
||||
trueValue: null,
|
||||
falseValue: null,
|
||||
value: null,
|
||||
...makeComponentProps(),
|
||||
...makeSelectionControlGroupProps()
|
||||
}, "VSelectionControl");
|
||||
function useSelectionControl(props) {
|
||||
const group = inject(VSelectionControlGroupSymbol, void 0);
|
||||
const { densityClasses } = useDensity(props);
|
||||
const modelValue = useProxiedModel(props, "modelValue");
|
||||
const trueValue = computed(() => props.trueValue !== void 0 ? props.trueValue : props.value !== void 0 ? props.value : true);
|
||||
const falseValue = computed(() => props.falseValue !== void 0 ? props.falseValue : false);
|
||||
const isMultiple = computed(() => !!props.multiple || props.multiple == null && Array.isArray(modelValue.value));
|
||||
const model = computed({
|
||||
get() {
|
||||
const val = group ? group.modelValue.value : modelValue.value;
|
||||
return isMultiple.value ? wrapInArray(val).some((v) => props.valueComparator(v, trueValue.value)) : props.valueComparator(val, trueValue.value);
|
||||
},
|
||||
set(val) {
|
||||
if (props.readonly) return;
|
||||
const currentValue = val ? trueValue.value : falseValue.value;
|
||||
let newVal = currentValue;
|
||||
if (isMultiple.value) newVal = val ? [...wrapInArray(modelValue.value), currentValue] : wrapInArray(modelValue.value).filter((item) => !props.valueComparator(item, trueValue.value));
|
||||
if (group) group.modelValue.value = newVal;
|
||||
else modelValue.value = newVal;
|
||||
}
|
||||
});
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => {
|
||||
if (props.error || props.disabled) return void 0;
|
||||
return model.value ? props.color : props.baseColor;
|
||||
});
|
||||
const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => {
|
||||
return model.value && !props.error && !props.disabled ? props.color : props.baseColor;
|
||||
});
|
||||
return {
|
||||
group,
|
||||
densityClasses,
|
||||
trueValue,
|
||||
falseValue,
|
||||
model,
|
||||
textColorClasses,
|
||||
textColorStyles,
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles,
|
||||
icon: computed(() => model.value ? props.trueIcon : props.falseIcon)
|
||||
};
|
||||
}
|
||||
var VSelectionControl = genericComponent()({
|
||||
name: "VSelectionControl",
|
||||
directives: { vRipple: Ripple },
|
||||
inheritAttrs: false,
|
||||
props: makeVSelectionControlProps(),
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { attrs, slots }) {
|
||||
const { group, densityClasses, icon, model, textColorClasses, textColorStyles, backgroundColorClasses, backgroundColorStyles, trueValue } = useSelectionControl(props);
|
||||
const uid = useId();
|
||||
const isFocused = shallowRef(false);
|
||||
const isFocusVisible = shallowRef(false);
|
||||
const input = ref();
|
||||
const id = toRef(() => props.id || `input-${uid}`);
|
||||
const isInteractive = toRef(() => !props.disabled && !props.readonly);
|
||||
group?.onForceUpdate(() => {
|
||||
if (input.value) input.value.checked = model.value;
|
||||
});
|
||||
function onFocus(e) {
|
||||
if (props.disabled) return;
|
||||
isFocused.value = true;
|
||||
if (matchesSelector(e.target, ":focus-visible") !== false) isFocusVisible.value = true;
|
||||
}
|
||||
function onBlur() {
|
||||
isFocused.value = false;
|
||||
isFocusVisible.value = false;
|
||||
}
|
||||
function onClickLabel(e) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
function onInput(e) {
|
||||
if (!isInteractive.value) {
|
||||
if (input.value) input.value.checked = model.value;
|
||||
return;
|
||||
}
|
||||
if (props.readonly && group) nextTick(() => group.forceUpdate());
|
||||
model.value = e.target.checked;
|
||||
}
|
||||
useRender(() => {
|
||||
const label = slots.label ? slots.label({
|
||||
label: props.label,
|
||||
props: { for: id.value }
|
||||
}) : props.label;
|
||||
const [rootAttrs, inputAttrs] = filterInputAttrs(attrs);
|
||||
const inputNode = createBaseVNode("input", mergeProps({
|
||||
"ref": input,
|
||||
"checked": model.value,
|
||||
"disabled": !!props.disabled,
|
||||
"id": id.value,
|
||||
"onBlur": onBlur,
|
||||
"onFocus": onFocus,
|
||||
"onInput": onInput,
|
||||
"aria-disabled": !!props.disabled,
|
||||
"aria-label": props.label,
|
||||
"type": props.type,
|
||||
"value": trueValue.value,
|
||||
"name": props.name,
|
||||
"aria-checked": props.type === "checkbox" ? model.value : void 0
|
||||
}, inputAttrs), null);
|
||||
return createBaseVNode("div", mergeProps({ "class": [
|
||||
"v-selection-control",
|
||||
{
|
||||
"v-selection-control--dirty": model.value,
|
||||
"v-selection-control--disabled": props.disabled,
|
||||
"v-selection-control--error": props.error,
|
||||
"v-selection-control--focused": isFocused.value,
|
||||
"v-selection-control--focus-visible": isFocusVisible.value,
|
||||
"v-selection-control--inline": props.inline
|
||||
},
|
||||
densityClasses.value,
|
||||
props.class
|
||||
] }, rootAttrs, { "style": props.style }), [createBaseVNode("div", {
|
||||
"class": normalizeClass(["v-selection-control__wrapper", textColorClasses.value]),
|
||||
"style": normalizeStyle(textColorStyles.value)
|
||||
}, [slots.default?.({
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
}), withDirectives(createBaseVNode("div", { "class": normalizeClass(["v-selection-control__input"]) }, [slots.input?.({
|
||||
model,
|
||||
textColorClasses,
|
||||
textColorStyles,
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles,
|
||||
inputNode,
|
||||
icon: icon.value,
|
||||
props: {
|
||||
onFocus,
|
||||
onBlur,
|
||||
id: id.value
|
||||
}
|
||||
}) ?? createBaseVNode(Fragment, null, [icon.value && createVNode(VIcon, {
|
||||
"key": "icon",
|
||||
"icon": icon.value
|
||||
}, null), inputNode])]), [[
|
||||
Ripple,
|
||||
!props.disabled && !props.readonly && props.ripple,
|
||||
null,
|
||||
{
|
||||
center: true,
|
||||
circle: true
|
||||
}
|
||||
]])]), label && createVNode(VLabel, {
|
||||
"for": id.value,
|
||||
"onClick": onClickLabel
|
||||
}, { default: () => [label] })]);
|
||||
});
|
||||
return {
|
||||
isFocused,
|
||||
input
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VInput/InputIcon.js
|
||||
function useInputIcon(props) {
|
||||
const { t } = useLocale();
|
||||
function InputIcon({ name, color, ...attrs }) {
|
||||
const localeKey = {
|
||||
prepend: "prependAction",
|
||||
prependInner: "prependAction",
|
||||
append: "appendAction",
|
||||
appendInner: "appendAction",
|
||||
clear: "clear"
|
||||
}[name];
|
||||
const listener = props[`onClick:${name}`];
|
||||
function onKeydown(e) {
|
||||
if (e.key !== "Enter" && e.key !== " ") return;
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
callEvent(listener, new PointerEvent("click", e));
|
||||
}
|
||||
const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? "") : void 0;
|
||||
return createVNode(VIcon, mergeProps({
|
||||
"icon": props[`${name}Icon`],
|
||||
"aria-label": label,
|
||||
"onClick": listener,
|
||||
"onKeydown": onKeydown,
|
||||
"color": color
|
||||
}, attrs), null);
|
||||
}
|
||||
return { InputIcon };
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VMessages/VMessages.js
|
||||
var makeVMessagesProps = propsFactory({
|
||||
active: Boolean,
|
||||
color: String,
|
||||
messages: {
|
||||
type: [Array, String],
|
||||
default: () => []
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeTransitionProps({ transition: {
|
||||
component: VSlideYTransition,
|
||||
leaveAbsolute: true,
|
||||
group: true
|
||||
} })
|
||||
}, "VMessages");
|
||||
var VMessages = genericComponent()({
|
||||
name: "VMessages",
|
||||
props: makeVMessagesProps(),
|
||||
setup(props, { slots }) {
|
||||
const messages = computed(() => wrapInArray(props.messages));
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => props.color);
|
||||
useRender(() => createVNode(MaybeTransition, {
|
||||
"transition": props.transition,
|
||||
"tag": "div",
|
||||
"class": normalizeClass([
|
||||
"v-messages",
|
||||
textColorClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([textColorStyles.value, props.style])
|
||||
}, { default: () => [props.active && messages.value.map((message, i) => createBaseVNode("div", {
|
||||
"class": "v-messages__message",
|
||||
"key": `${i}-${messages.value}`
|
||||
}, [slots.message ? slots.message({ message }) : message]))] }));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/composables/focus.js
|
||||
var makeFocusProps = propsFactory({
|
||||
focused: Boolean,
|
||||
"onUpdate:focused": EventProp()
|
||||
}, "focus");
|
||||
function useFocus(props, name = getCurrentInstanceName()) {
|
||||
const isFocused = useProxiedModel(props, "focused");
|
||||
const focusClasses = toRef(() => {
|
||||
return { [`${name}--focused`]: isFocused.value };
|
||||
});
|
||||
function focus() {
|
||||
isFocused.value = true;
|
||||
}
|
||||
function blur() {
|
||||
isFocused.value = false;
|
||||
}
|
||||
return {
|
||||
focusClasses,
|
||||
isFocused,
|
||||
focus,
|
||||
blur
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/composables/form.js
|
||||
var FormKey = Symbol.for("vuetify:form");
|
||||
propsFactory({
|
||||
disabled: Boolean,
|
||||
fastFail: Boolean,
|
||||
readonly: Boolean,
|
||||
modelValue: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
validateOn: {
|
||||
type: String,
|
||||
default: "input"
|
||||
}
|
||||
}, "form");
|
||||
function useForm(props) {
|
||||
const form = inject(FormKey, null);
|
||||
return {
|
||||
...form,
|
||||
isReadonly: computed(() => !!(props?.readonly ?? form?.isReadonly.value)),
|
||||
isDisabled: computed(() => !!(props?.disabled ?? form?.isDisabled.value))
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/labs/rules/rules.js
|
||||
var RulesSymbol = Symbol.for("vuetify:rules");
|
||||
function useRules(fn) {
|
||||
const rules = inject(RulesSymbol, null);
|
||||
if (!fn) {
|
||||
if (!rules) throw new Error("Could not find Vuetify rules injection");
|
||||
return rules.aliases;
|
||||
}
|
||||
return rules?.resolve(fn) ?? toRef(fn);
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/composables/validation.js
|
||||
var makeValidationProps = propsFactory({
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
error: Boolean,
|
||||
errorMessages: {
|
||||
type: [Array, String],
|
||||
default: () => []
|
||||
},
|
||||
maxErrors: {
|
||||
type: [Number, String],
|
||||
default: 1
|
||||
},
|
||||
name: String,
|
||||
label: String,
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
rules: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
modelValue: null,
|
||||
validateOn: String,
|
||||
validationValue: null,
|
||||
...makeFocusProps()
|
||||
}, "validation");
|
||||
function useValidation(props, name = getCurrentInstanceName(), id = useId()) {
|
||||
const model = useProxiedModel(props, "modelValue");
|
||||
const validationModel = computed(() => props.validationValue === void 0 ? model.value : props.validationValue);
|
||||
const form = useForm(props);
|
||||
const rules = useRules(() => props.rules);
|
||||
const internalErrorMessages = ref([]);
|
||||
const isPristine = shallowRef(true);
|
||||
const isDirty = computed(() => !!(wrapInArray(model.value === "" ? null : model.value).length || wrapInArray(validationModel.value === "" ? null : validationModel.value).length));
|
||||
const errorMessages = computed(() => {
|
||||
return props.errorMessages?.length ? wrapInArray(props.errorMessages).concat(internalErrorMessages.value).slice(0, Math.max(0, Number(props.maxErrors))) : internalErrorMessages.value;
|
||||
});
|
||||
const validateOn = computed(() => {
|
||||
let value = (props.validateOn ?? form.validateOn?.value) || "input";
|
||||
if (value === "lazy") value = "input lazy";
|
||||
if (value === "eager") value = "input eager";
|
||||
const set = new Set(value?.split(" ") ?? []);
|
||||
return {
|
||||
input: set.has("input"),
|
||||
blur: set.has("blur") || set.has("input") || set.has("invalid-input"),
|
||||
invalidInput: set.has("invalid-input"),
|
||||
lazy: set.has("lazy"),
|
||||
eager: set.has("eager")
|
||||
};
|
||||
});
|
||||
const isValid = computed(() => {
|
||||
if (props.error || props.errorMessages?.length) return false;
|
||||
if (!props.rules.length) return true;
|
||||
if (isPristine.value) return internalErrorMessages.value.length || validateOn.value.lazy ? null : true;
|
||||
else return !internalErrorMessages.value.length;
|
||||
});
|
||||
const isValidating = shallowRef(false);
|
||||
const validationClasses = computed(() => {
|
||||
return {
|
||||
[`${name}--error`]: isValid.value === false,
|
||||
[`${name}--dirty`]: isDirty.value,
|
||||
[`${name}--disabled`]: form.isDisabled.value,
|
||||
[`${name}--readonly`]: form.isReadonly.value
|
||||
};
|
||||
});
|
||||
const vm = getCurrentInstance("validation");
|
||||
const uid = computed(() => props.name ?? unref(id));
|
||||
onBeforeMount(() => {
|
||||
form.register?.({
|
||||
id: uid.value,
|
||||
vm,
|
||||
validate,
|
||||
reset,
|
||||
resetValidation
|
||||
});
|
||||
});
|
||||
onBeforeUnmount(() => {
|
||||
form.unregister?.(uid.value);
|
||||
});
|
||||
onMounted(async () => {
|
||||
if (!validateOn.value.lazy) await validate(!validateOn.value.eager);
|
||||
form.update?.(uid.value, isValid.value, errorMessages.value);
|
||||
});
|
||||
useToggleScope(() => validateOn.value.input || validateOn.value.invalidInput && isValid.value === false, () => {
|
||||
watch(validationModel, () => {
|
||||
if (validationModel.value != null) validate();
|
||||
else if (props.focused) {
|
||||
const unwatch = watch(() => props.focused, (val) => {
|
||||
if (!val) validate();
|
||||
unwatch();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
useToggleScope(() => validateOn.value.blur, () => {
|
||||
watch(() => props.focused, (val) => {
|
||||
if (!val) validate();
|
||||
});
|
||||
});
|
||||
watch([isValid, errorMessages], () => {
|
||||
form.update?.(uid.value, isValid.value, errorMessages.value);
|
||||
});
|
||||
async function reset() {
|
||||
model.value = null;
|
||||
await nextTick();
|
||||
await resetValidation();
|
||||
}
|
||||
async function resetValidation() {
|
||||
isPristine.value = true;
|
||||
if (!validateOn.value.lazy) await validate(!validateOn.value.eager);
|
||||
else internalErrorMessages.value = [];
|
||||
}
|
||||
async function validate(silent = false) {
|
||||
const results = [];
|
||||
isValidating.value = true;
|
||||
for (const rule of rules.value) {
|
||||
if (results.length >= Number(props.maxErrors ?? 1)) break;
|
||||
const result = await (typeof rule === "function" ? rule : () => rule)(validationModel.value);
|
||||
if (result === true) continue;
|
||||
if (result !== false && typeof result !== "string") {
|
||||
console.warn(`${result} is not a valid value. Rule functions must return boolean true or a string.`);
|
||||
continue;
|
||||
}
|
||||
results.push(result || "");
|
||||
}
|
||||
internalErrorMessages.value = results;
|
||||
isValidating.value = false;
|
||||
isPristine.value = silent;
|
||||
return internalErrorMessages.value;
|
||||
}
|
||||
return {
|
||||
errorMessages,
|
||||
isDirty,
|
||||
isDisabled: form.isDisabled,
|
||||
isReadonly: form.isReadonly,
|
||||
isPristine,
|
||||
isValid,
|
||||
isValidating,
|
||||
reset,
|
||||
resetValidation,
|
||||
validate,
|
||||
validationClasses
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VInput/VInput.js
|
||||
var makeVInputProps = propsFactory({
|
||||
id: String,
|
||||
appendIcon: IconValue,
|
||||
baseColor: String,
|
||||
centerAffix: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
color: String,
|
||||
glow: Boolean,
|
||||
iconColor: [Boolean, String],
|
||||
prependIcon: IconValue,
|
||||
hideDetails: [Boolean, String],
|
||||
hideSpinButtons: Boolean,
|
||||
hint: String,
|
||||
indentDetails: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
persistentHint: Boolean,
|
||||
messages: {
|
||||
type: [Array, String],
|
||||
default: () => []
|
||||
},
|
||||
direction: {
|
||||
type: String,
|
||||
default: "horizontal",
|
||||
validator: (v) => ["horizontal", "vertical"].includes(v)
|
||||
},
|
||||
"onClick:prepend": EventProp(),
|
||||
"onClick:append": EventProp(),
|
||||
...makeComponentProps(),
|
||||
...makeDensityProps(),
|
||||
...pick(makeDimensionProps(), [
|
||||
"maxWidth",
|
||||
"minWidth",
|
||||
"width"
|
||||
]),
|
||||
...makeThemeProps(),
|
||||
...makeValidationProps()
|
||||
}, "VInput");
|
||||
var VInput = genericComponent()({
|
||||
name: "VInput",
|
||||
props: { ...makeVInputProps() },
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { attrs, slots, emit }) {
|
||||
const { densityClasses } = useDensity(props);
|
||||
const { dimensionStyles } = useDimension(props);
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { rtlClasses } = useRtl();
|
||||
const { InputIcon } = useInputIcon(props);
|
||||
const uid = useId();
|
||||
const id = computed(() => props.id || `input-${uid}`);
|
||||
const { errorMessages, isDirty, isDisabled, isReadonly, isPristine, isValid, isValidating, reset, resetValidation, validate, validationClasses } = useValidation(props, "v-input", id);
|
||||
const messages = computed(() => {
|
||||
if (props.errorMessages?.length || !isPristine.value && errorMessages.value.length) return errorMessages.value;
|
||||
else if (props.hint && (props.persistentHint || props.focused)) return props.hint;
|
||||
else return props.messages;
|
||||
});
|
||||
const hasMessages = toRef(() => messages.value.length > 0);
|
||||
const hasDetails = toRef(() => !props.hideDetails || props.hideDetails === "auto" && (hasMessages.value || !!slots.details));
|
||||
const messagesId = computed(() => hasDetails.value ? `${id.value}-messages` : void 0);
|
||||
const slotProps = computed(() => ({
|
||||
id,
|
||||
messagesId,
|
||||
isDirty,
|
||||
isDisabled,
|
||||
isReadonly,
|
||||
isPristine,
|
||||
isValid,
|
||||
isValidating,
|
||||
hasDetails,
|
||||
reset,
|
||||
resetValidation,
|
||||
validate
|
||||
}));
|
||||
const color = toRef(() => {
|
||||
return props.error || props.disabled ? void 0 : props.focused ? props.color : props.baseColor;
|
||||
});
|
||||
const iconColor = toRef(() => {
|
||||
if (!props.iconColor) return void 0;
|
||||
return props.iconColor === true ? color.value : props.iconColor;
|
||||
});
|
||||
useRender(() => {
|
||||
const hasPrepend = !!(slots.prepend || props.prependIcon);
|
||||
const hasAppend = !!(slots.append || props.appendIcon);
|
||||
return createBaseVNode("div", {
|
||||
"class": normalizeClass([
|
||||
"v-input",
|
||||
`v-input--${props.direction}`,
|
||||
{
|
||||
"v-input--center-affix": props.centerAffix,
|
||||
"v-input--focused": props.focused,
|
||||
"v-input--glow": props.glow,
|
||||
"v-input--hide-spin-buttons": props.hideSpinButtons,
|
||||
"v-input--indent-details": props.indentDetails
|
||||
},
|
||||
densityClasses.value,
|
||||
themeClasses.value,
|
||||
rtlClasses.value,
|
||||
validationClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([dimensionStyles.value, props.style])
|
||||
}, [
|
||||
hasPrepend && createBaseVNode("div", {
|
||||
"key": "prepend",
|
||||
"class": "v-input__prepend"
|
||||
}, [slots.prepend ? slots.prepend(slotProps.value) : props.prependIcon && createVNode(InputIcon, {
|
||||
"key": "prepend-icon",
|
||||
"name": "prepend",
|
||||
"color": iconColor.value
|
||||
}, null)]),
|
||||
slots.default && createBaseVNode("div", { "class": "v-input__control" }, [slots.default?.(slotProps.value)]),
|
||||
hasAppend && createBaseVNode("div", {
|
||||
"key": "append",
|
||||
"class": "v-input__append"
|
||||
}, [slots.append ? slots.append(slotProps.value) : props.appendIcon && createVNode(InputIcon, {
|
||||
"key": "append-icon",
|
||||
"name": "append",
|
||||
"color": iconColor.value
|
||||
}, null)]),
|
||||
hasDetails.value && createBaseVNode("div", {
|
||||
"id": messagesId.value,
|
||||
"class": "v-input__details",
|
||||
"role": "alert",
|
||||
"aria-live": "polite"
|
||||
}, [createVNode(VMessages, {
|
||||
"active": hasMessages.value,
|
||||
"messages": messages.value
|
||||
}, { message: slots.message }), slots.details?.(slotProps.value)])
|
||||
]);
|
||||
});
|
||||
return {
|
||||
reset,
|
||||
resetValidation,
|
||||
validate,
|
||||
isValid,
|
||||
errorMessages
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { useFocus as a, makeVSelectionControlProps as c, makeFocusProps as i, VLabel as l, makeVInputProps as n, useInputIcon as o, useForm as r, VSelectionControl as s, VInput as t };
|
||||
|
||||
//# sourceMappingURL=VInput-BxI8SL-_.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+1677
File diff suppressed because it is too large
Load Diff
+1
File diff suppressed because one or more lines are too long
+140
@@ -0,0 +1,140 @@
|
||||
import { Dt as mergeProps, Kn as ref, Nt as onDeactivated, Qn as toRef, U as computed, Ut as provide, Yn as shallowRef, cn as useId, et as createVNode, gn as watch, jt as onBeforeUnmount, xt as inject } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { D as focusChild, F as isClickInsideElement, H as omit, O as focusableChildren, k as getNextElement, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { o as VDialogTransition } from "./transitions-DCQ3sjjZ.js";
|
||||
import { n as makeVOverlayProps, r as VMenuSymbol, t as VOverlay } from "./VOverlay-BS8OrX3g.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { t as useProxiedModel } from "./proxiedModel-DSlSIQ0y.js";
|
||||
import { i as useRtl } from "./locale-DDGMqzqb.js";
|
||||
import { t as VDefaultsProvider } from "./VDefaultsProvider-C09t4-My.js";
|
||||
import { t as useScopeId } from "./scopeId-CyMkmyzM.js";
|
||||
import { t as forwardRefs } from "./forwardRefs-CW3d8km7.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VMenu/VMenu.css";
|
||||
//#region node_modules/vuetify/lib/components/VMenu/VMenu.js
|
||||
var makeVMenuProps = propsFactory({
|
||||
id: String,
|
||||
submenu: Boolean,
|
||||
...omit(makeVOverlayProps({
|
||||
captureFocus: true,
|
||||
closeDelay: 250,
|
||||
closeOnContentClick: true,
|
||||
locationStrategy: "connected",
|
||||
location: void 0,
|
||||
openDelay: 300,
|
||||
scrim: false,
|
||||
scrollStrategy: "reposition",
|
||||
transition: { component: VDialogTransition }
|
||||
}), ["absolute"])
|
||||
}, "VMenu");
|
||||
var VMenu = genericComponent()({
|
||||
name: "VMenu",
|
||||
props: makeVMenuProps(),
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { slots }) {
|
||||
const isActive = useProxiedModel(props, "modelValue");
|
||||
const { scopeId } = useScopeId();
|
||||
const { isRtl } = useRtl();
|
||||
const uid = useId();
|
||||
const id = toRef(() => props.id || `v-menu-${uid}`);
|
||||
const overlay = ref();
|
||||
const parent = inject(VMenuSymbol, null);
|
||||
const openChildren = shallowRef(/* @__PURE__ */ new Set());
|
||||
provide(VMenuSymbol, {
|
||||
register() {
|
||||
openChildren.value.add(uid);
|
||||
},
|
||||
unregister() {
|
||||
openChildren.value.delete(uid);
|
||||
},
|
||||
closeParents(e) {
|
||||
setTimeout(() => {
|
||||
if (!openChildren.value.size && !props.persistent && (e == null || overlay.value?.contentEl && !isClickInsideElement(e, overlay.value.contentEl))) {
|
||||
isActive.value = false;
|
||||
parent?.closeParents();
|
||||
}
|
||||
}, 40);
|
||||
}
|
||||
});
|
||||
onBeforeUnmount(() => parent?.unregister());
|
||||
onDeactivated(() => isActive.value = false);
|
||||
watch(isActive, (val) => {
|
||||
val ? parent?.register() : parent?.unregister();
|
||||
}, { immediate: true });
|
||||
function onClickOutside(e) {
|
||||
parent?.closeParents(e);
|
||||
}
|
||||
function onKeydown(e) {
|
||||
if (props.disabled) return;
|
||||
if (e.key === "Tab" || e.key === "Enter" && !props.closeOnContentClick) {
|
||||
if (e.key === "Enter" && (e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLInputElement && !!e.target.closest("form"))) return;
|
||||
if (e.key === "Enter") e.preventDefault();
|
||||
if (!getNextElement(focusableChildren(overlay.value?.contentEl, false), e.shiftKey ? "prev" : "next", (el) => el.tabIndex >= 0) && !props.retainFocus) {
|
||||
isActive.value = false;
|
||||
overlay.value?.activatorEl?.focus();
|
||||
}
|
||||
} else if (props.submenu && e.key === (isRtl.value ? "ArrowRight" : "ArrowLeft")) {
|
||||
isActive.value = false;
|
||||
overlay.value?.activatorEl?.focus();
|
||||
}
|
||||
}
|
||||
function onActivatorKeydown(e) {
|
||||
if (props.disabled) return;
|
||||
const el = overlay.value?.contentEl;
|
||||
if (el && isActive.value) {
|
||||
if (e.key === "ArrowDown") {
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
focusChild(el, "next");
|
||||
} else if (e.key === "ArrowUp") {
|
||||
e.preventDefault();
|
||||
e.stopImmediatePropagation();
|
||||
focusChild(el, "prev");
|
||||
} else if (props.submenu) {
|
||||
if (e.key === (isRtl.value ? "ArrowRight" : "ArrowLeft")) isActive.value = false;
|
||||
else if (e.key === (isRtl.value ? "ArrowLeft" : "ArrowRight")) {
|
||||
e.preventDefault();
|
||||
focusChild(el, "first");
|
||||
}
|
||||
}
|
||||
} else if (props.submenu ? e.key === (isRtl.value ? "ArrowLeft" : "ArrowRight") : ["ArrowDown", "ArrowUp"].includes(e.key)) {
|
||||
isActive.value = true;
|
||||
e.preventDefault();
|
||||
setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
|
||||
}
|
||||
}
|
||||
const activatorProps = computed(() => mergeProps({
|
||||
"aria-haspopup": "menu",
|
||||
"aria-expanded": String(isActive.value),
|
||||
"aria-controls": id.value,
|
||||
"aria-owns": id.value,
|
||||
onKeydown: onActivatorKeydown
|
||||
}, props.activatorProps));
|
||||
useRender(() => {
|
||||
const overlayProps = VOverlay.filterProps(props);
|
||||
return createVNode(VOverlay, mergeProps({
|
||||
"ref": overlay,
|
||||
"id": id.value,
|
||||
"class": ["v-menu", props.class],
|
||||
"style": props.style
|
||||
}, overlayProps, {
|
||||
"modelValue": isActive.value,
|
||||
"onUpdate:modelValue": ($event) => isActive.value = $event,
|
||||
"absolute": true,
|
||||
"activatorProps": activatorProps.value,
|
||||
"location": props.location ?? (props.submenu ? "end" : "bottom"),
|
||||
"onClick:outside": onClickOutside,
|
||||
"onKeydown": onKeydown
|
||||
}, scopeId), {
|
||||
activator: slots.activator,
|
||||
default: (...args) => createVNode(VDefaultsProvider, { "root": "VMenu" }, { default: () => [slots.default?.(...args)] })
|
||||
});
|
||||
});
|
||||
return forwardRefs({
|
||||
id,
|
||||
ΨopenChildren: openChildren
|
||||
}, overlay);
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VMenu as t };
|
||||
|
||||
//# sourceMappingURL=VMenu-DCQFp-2Y.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+1203
File diff suppressed because it is too large
Load Diff
+1
File diff suppressed because one or more lines are too long
+149
@@ -0,0 +1,149 @@
|
||||
import { Ft as onMounted, Kn as ref, Qn as toRef, U as computed, W as createBaseVNode, Yn as shallowRef, _n as watchEffect, ar as normalizeClass, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { $ as PREFERS_REDUCED_MOTION, _ as convertToUnit, g as clamp, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { r as useTextColor } from "./color-B6vuQruj.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { t as useResizeObserver } from "./resizeObserver-C12jWpYk.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { n as makeSizeProps, r as useSize } from "./VIcon-1CJH_3Uo.js";
|
||||
import { i as useIntersectionObserver } from "./loader-CV4sMFhE.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.css";
|
||||
//#region node_modules/vuetify/lib/composables/reveal.js
|
||||
var makeRevealProps = propsFactory({ reveal: {
|
||||
type: [Boolean, Object],
|
||||
default: false
|
||||
} }, "reveal");
|
||||
function useReveal(props) {
|
||||
const defaultDuration = 900;
|
||||
const duration = toRef(() => typeof props.reveal === "object" ? Math.max(0, Number(props.reveal.duration ?? defaultDuration)) : defaultDuration);
|
||||
const state = shallowRef(props.reveal ? "initial" : "disabled");
|
||||
onMounted(async () => {
|
||||
if (props.reveal) {
|
||||
state.value = "initial";
|
||||
await new Promise((resolve) => requestAnimationFrame(resolve));
|
||||
state.value = "pending";
|
||||
await new Promise((resolve) => setTimeout(resolve, duration.value));
|
||||
state.value = "done";
|
||||
}
|
||||
});
|
||||
return {
|
||||
duration,
|
||||
state
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VProgressCircular/VProgressCircular.js
|
||||
var makeVProgressCircularProps = propsFactory({
|
||||
bgColor: String,
|
||||
color: String,
|
||||
indeterminate: [Boolean, String],
|
||||
rounded: Boolean,
|
||||
modelValue: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
rotate: {
|
||||
type: [Number, String],
|
||||
default: 0
|
||||
},
|
||||
width: {
|
||||
type: [Number, String],
|
||||
default: 4
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeRevealProps(),
|
||||
...makeSizeProps(),
|
||||
...makeTagProps({ tag: "div" }),
|
||||
...makeThemeProps()
|
||||
}, "VProgressCircular");
|
||||
var VProgressCircular = genericComponent()({
|
||||
name: "VProgressCircular",
|
||||
props: makeVProgressCircularProps(),
|
||||
setup(props, { slots }) {
|
||||
const MAGIC_RADIUS_CONSTANT = 20;
|
||||
const CIRCUMFERENCE = 2 * Math.PI * MAGIC_RADIUS_CONSTANT;
|
||||
const root = ref();
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { sizeClasses, sizeStyles } = useSize(props);
|
||||
const { textColorClasses, textColorStyles } = useTextColor(() => props.color);
|
||||
const { textColorClasses: underlayColorClasses, textColorStyles: underlayColorStyles } = useTextColor(() => props.bgColor);
|
||||
const { intersectionRef, isIntersecting } = useIntersectionObserver();
|
||||
const { resizeRef, contentRect } = useResizeObserver();
|
||||
const { state: revealState, duration: revealDuration } = useReveal(props);
|
||||
const normalizedValue = toRef(() => revealState.value === "initial" ? 0 : clamp(parseFloat(props.modelValue), 0, 100));
|
||||
const width = toRef(() => Number(props.width));
|
||||
const size = toRef(() => {
|
||||
return sizeStyles.value ? Number(props.size) : contentRect.value ? contentRect.value.width : Math.max(width.value, 32);
|
||||
});
|
||||
const diameter = toRef(() => MAGIC_RADIUS_CONSTANT / (1 - width.value / size.value) * 2);
|
||||
const strokeWidth = toRef(() => width.value / size.value * diameter.value);
|
||||
const strokeDashOffset = toRef(() => {
|
||||
const baseLength = (100 - normalizedValue.value) / 100 * CIRCUMFERENCE;
|
||||
return props.rounded && normalizedValue.value > 0 && normalizedValue.value < 100 ? convertToUnit(Math.min(CIRCUMFERENCE - .01, baseLength + strokeWidth.value)) : convertToUnit(baseLength);
|
||||
});
|
||||
const startAngle = computed(() => {
|
||||
const baseAngle = Number(props.rotate);
|
||||
return props.rounded ? baseAngle + strokeWidth.value / 2 / CIRCUMFERENCE * 360 : baseAngle;
|
||||
});
|
||||
watchEffect(() => {
|
||||
intersectionRef.value = root.value;
|
||||
resizeRef.value = root.value;
|
||||
});
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"ref": root,
|
||||
"class": normalizeClass([
|
||||
"v-progress-circular",
|
||||
{
|
||||
"v-progress-circular--indeterminate": !!props.indeterminate,
|
||||
"v-progress-circular--visible": isIntersecting.value,
|
||||
"v-progress-circular--disable-shrink": props.indeterminate && (props.indeterminate === "disable-shrink" || PREFERS_REDUCED_MOTION()),
|
||||
"v-progress-circular--revealing": ["initial", "pending"].includes(revealState.value)
|
||||
},
|
||||
themeClasses.value,
|
||||
sizeClasses.value,
|
||||
textColorClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
sizeStyles.value,
|
||||
textColorStyles.value,
|
||||
{ "--progress-reveal-duration": `${revealDuration.value}ms` },
|
||||
props.style
|
||||
]),
|
||||
"role": "progressbar",
|
||||
"aria-valuemin": "0",
|
||||
"aria-valuemax": "100",
|
||||
"aria-valuenow": props.indeterminate ? void 0 : normalizedValue.value
|
||||
}, { default: () => [createBaseVNode("svg", {
|
||||
"style": { transform: `rotate(calc(-90deg + ${startAngle.value}deg))` },
|
||||
"xmlns": "http://www.w3.org/2000/svg",
|
||||
"viewBox": `0 0 ${diameter.value} ${diameter.value}`
|
||||
}, [createBaseVNode("circle", {
|
||||
"class": normalizeClass(["v-progress-circular__underlay", underlayColorClasses.value]),
|
||||
"style": normalizeStyle(underlayColorStyles.value),
|
||||
"fill": "transparent",
|
||||
"cx": "50%",
|
||||
"cy": "50%",
|
||||
"r": MAGIC_RADIUS_CONSTANT,
|
||||
"stroke-width": strokeWidth.value,
|
||||
"stroke-dasharray": CIRCUMFERENCE,
|
||||
"stroke-dashoffset": 0
|
||||
}, null), createBaseVNode("circle", {
|
||||
"class": "v-progress-circular__overlay",
|
||||
"fill": "transparent",
|
||||
"cx": "50%",
|
||||
"cy": "50%",
|
||||
"r": MAGIC_RADIUS_CONSTANT,
|
||||
"stroke-width": strokeWidth.value,
|
||||
"stroke-dasharray": CIRCUMFERENCE,
|
||||
"stroke-dashoffset": strokeDashOffset.value,
|
||||
"stroke-linecap": props.rounded ? "round" : void 0
|
||||
}, null)]), slots.default && createBaseVNode("div", { "class": "v-progress-circular__content" }, [slots.default({ value: normalizedValue.value })])] }));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VProgressCircular as t };
|
||||
|
||||
//# sourceMappingURL=VProgressCircular-yKv2qs75.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+64
@@ -0,0 +1,64 @@
|
||||
import { ar as normalizeClass, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { t as useBackgroundColor } from "./color-B6vuQruj.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { n as useDimension, t as makeDimensionProps } from "./dimensions-BDdmuRdK.js";
|
||||
import { n as useRounded, t as makeRoundedProps } from "./rounded-BuPGKRa9.js";
|
||||
import { n as useBorder, t as makeBorderProps } from "./border-jCmRyoxP.js";
|
||||
import { n as useElevation, t as makeElevationProps } from "./elevation-B0TH2wU6.js";
|
||||
import { n as useLocation, t as makeLocationProps } from "./location-BIKTnDF4.js";
|
||||
import { n as usePosition, t as makePositionProps } from "./position-BCUsnxVO.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VSheet/VSheet.css";
|
||||
//#region node_modules/vuetify/lib/components/VSheet/VSheet.js
|
||||
var makeVSheetProps = propsFactory({
|
||||
color: String,
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeDimensionProps(),
|
||||
...makeElevationProps(),
|
||||
...makeLocationProps(),
|
||||
...makePositionProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps(),
|
||||
...makeThemeProps()
|
||||
}, "VSheet");
|
||||
var VSheet = genericComponent()({
|
||||
name: "VSheet",
|
||||
props: makeVSheetProps(),
|
||||
setup(props, { slots }) {
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color);
|
||||
const { borderClasses } = useBorder(props);
|
||||
const { dimensionStyles } = useDimension(props);
|
||||
const { elevationClasses } = useElevation(props);
|
||||
const { locationStyles } = useLocation(props);
|
||||
const { positionClasses } = usePosition(props);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"class": normalizeClass([
|
||||
"v-sheet",
|
||||
themeClasses.value,
|
||||
backgroundColorClasses.value,
|
||||
borderClasses.value,
|
||||
elevationClasses.value,
|
||||
positionClasses.value,
|
||||
roundedClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
backgroundColorStyles.value,
|
||||
dimensionStyles.value,
|
||||
locationStyles.value,
|
||||
props.style
|
||||
])
|
||||
}, slots));
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VSheet as t };
|
||||
|
||||
//# sourceMappingURL=VSheet-CLHX3uIJ.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"VSheet-CLHX3uIJ.js","names":["_createVNode","_normalizeClass","_normalizeStyle"],"sources":["../../vuetify/lib/components/VSheet/VSheet.js"],"sourcesContent":["import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createVNode as _createVNode } from \"vue\";\n// Styles\nimport \"./VSheet.css\";\n\n// Composables\nimport { makeBorderProps, useBorder } from \"../../composables/border.js\";\nimport { useBackgroundColor } from \"../../composables/color.js\";\nimport { makeComponentProps } from \"../../composables/component.js\";\nimport { makeDimensionProps, useDimension } from \"../../composables/dimensions.js\";\nimport { makeElevationProps, useElevation } from \"../../composables/elevation.js\";\nimport { makeLocationProps, useLocation } from \"../../composables/location.js\";\nimport { makePositionProps, usePosition } from \"../../composables/position.js\";\nimport { makeRoundedProps, useRounded } from \"../../composables/rounded.js\";\nimport { makeTagProps } from \"../../composables/tag.js\";\nimport { makeThemeProps, provideTheme } from \"../../composables/theme.js\"; // Utilities\nimport { genericComponent, propsFactory, useRender } from \"../../util/index.js\";\nexport const makeVSheetProps = propsFactory({\n color: String,\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps()\n}, 'VSheet');\nexport const VSheet = genericComponent()({\n name: 'VSheet',\n props: makeVSheetProps(),\n setup(props, {\n slots\n }) {\n const {\n themeClasses\n } = provideTheme(props);\n const {\n backgroundColorClasses,\n backgroundColorStyles\n } = useBackgroundColor(() => props.color);\n const {\n borderClasses\n } = useBorder(props);\n const {\n dimensionStyles\n } = useDimension(props);\n const {\n elevationClasses\n } = useElevation(props);\n const {\n locationStyles\n } = useLocation(props);\n const {\n positionClasses\n } = usePosition(props);\n const {\n roundedClasses\n } = useRounded(props);\n useRender(() => _createVNode(props.tag, {\n \"class\": _normalizeClass(['v-sheet', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, positionClasses.value, roundedClasses.value, props.class]),\n \"style\": _normalizeStyle([backgroundColorStyles.value, dimensionStyles.value, locationStyles.value, props.style])\n }, slots));\n return {};\n }\n});\n//# sourceMappingURL=VSheet.js.map"],"mappings":";;;;;;;;;;;;;;;AAgBA,IAAa,kBAAkB,aAAa;CAC1C,OAAO;CACP,GAAG,iBAAiB;CACpB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,oBAAoB;CACvB,GAAG,mBAAmB;CACtB,GAAG,mBAAmB;CACtB,GAAG,kBAAkB;CACrB,GAAG,cAAc;CACjB,GAAG,gBAAgB;CACpB,EAAE,SAAS;AACZ,IAAa,SAAS,kBAAkB,CAAC;CACvC,MAAM;CACN,OAAO,iBAAiB;CACxB,MAAM,OAAO,EACX,SACC;EACD,MAAM,EACJ,iBACE,aAAa,MAAM;EACvB,MAAM,EACJ,wBACA,0BACE,yBAAyB,MAAM,MAAM;EACzC,MAAM,EACJ,kBACE,UAAU,MAAM;EACpB,MAAM,EACJ,oBACE,aAAa,MAAM;EACvB,MAAM,EACJ,qBACE,aAAa,MAAM;EACvB,MAAM,EACJ,mBACE,YAAY,MAAM;EACtB,MAAM,EACJ,oBACE,YAAY,MAAM;EACtB,MAAM,EACJ,mBACE,WAAW,MAAM;AACrB,kBAAgBA,YAAa,MAAM,KAAK;GACtC,SAASC,eAAgB;IAAC;IAAW,aAAa;IAAO,uBAAuB;IAAO,cAAc;IAAO,iBAAiB;IAAO,gBAAgB;IAAO,eAAe;IAAO,MAAM;IAAM,CAAC;GAC9L,SAASC,eAAgB;IAAC,sBAAsB;IAAO,gBAAgB;IAAO,eAAe;IAAO,MAAM;IAAM,CAAC;GAClH,EAAE,MAAM,CAAC;AACV,SAAO,EAAE;;CAEZ,CAAC"}
|
||||
+320
@@ -0,0 +1,320 @@
|
||||
import { U as computed, W as createBaseVNode, Yn as shallowRef, ar as normalizeClass, et as createVNode, gn as watch, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { O as focusableChildren, Q as IN_BROWSER, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { r as VFadeTransition } from "./transitions-DCQ3sjjZ.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { n as IconValue } from "./icons-k2ZLE_i8.js";
|
||||
import { i as useRtl } from "./locale-DDGMqzqb.js";
|
||||
import { a as useDisplay, i as makeDisplayProps } from "./display-DKaCj-_K.js";
|
||||
import { r as useGoTo } from "./goto-Bn-PzNUr.js";
|
||||
import { t as useResizeObserver } from "./resizeObserver-C12jWpYk.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { n as makeGroupProps, r as useGroup } from "./group-Cm2viEWK.js";
|
||||
import { t as VIcon } from "./VIcon-1CJH_3Uo.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VSlideGroup/VSlideGroup.css";
|
||||
//#region node_modules/vuetify/lib/components/VSlideGroup/helpers.js
|
||||
function calculateUpdatedTarget({ selectedElement, containerElement, isRtl, isHorizontal }) {
|
||||
const containerSize = getOffsetSize(isHorizontal, containerElement);
|
||||
const scrollPosition = getScrollPosition(isHorizontal, isRtl, containerElement);
|
||||
const childrenSize = getOffsetSize(isHorizontal, selectedElement);
|
||||
const childrenStartPosition = getOffsetPosition(isHorizontal, selectedElement);
|
||||
const additionalOffset = childrenSize * .4;
|
||||
if (scrollPosition > childrenStartPosition) return childrenStartPosition - additionalOffset;
|
||||
else if (scrollPosition + containerSize < childrenStartPosition + childrenSize) return childrenStartPosition - containerSize + childrenSize + additionalOffset;
|
||||
return scrollPosition;
|
||||
}
|
||||
function calculateCenteredTarget({ selectedElement, containerElement, isHorizontal }) {
|
||||
const containerOffsetSize = getOffsetSize(isHorizontal, containerElement);
|
||||
const childrenOffsetPosition = getOffsetPosition(isHorizontal, selectedElement);
|
||||
const childrenOffsetSize = getOffsetSize(isHorizontal, selectedElement);
|
||||
return childrenOffsetPosition - containerOffsetSize / 2 + childrenOffsetSize / 2;
|
||||
}
|
||||
function getScrollSize(isHorizontal, element) {
|
||||
return element?.[isHorizontal ? "scrollWidth" : "scrollHeight"] || 0;
|
||||
}
|
||||
function getScrollPosition(isHorizontal, rtl, element) {
|
||||
if (!element) return 0;
|
||||
const { scrollLeft, offsetWidth, scrollWidth } = element;
|
||||
if (isHorizontal) return rtl ? scrollWidth - offsetWidth + scrollLeft : scrollLeft;
|
||||
return element.scrollTop;
|
||||
}
|
||||
function getOffsetSize(isHorizontal, element) {
|
||||
return element?.[isHorizontal ? "offsetWidth" : "offsetHeight"] || 0;
|
||||
}
|
||||
function getOffsetPosition(isHorizontal, element) {
|
||||
return element?.[isHorizontal ? "offsetLeft" : "offsetTop"] || 0;
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VSlideGroup/VSlideGroup.js
|
||||
var VSlideGroupSymbol = Symbol.for("vuetify:v-slide-group");
|
||||
var makeVSlideGroupProps = propsFactory({
|
||||
centerActive: Boolean,
|
||||
scrollToActive: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
contentClass: null,
|
||||
direction: {
|
||||
type: String,
|
||||
default: "horizontal"
|
||||
},
|
||||
symbol: {
|
||||
type: null,
|
||||
default: VSlideGroupSymbol
|
||||
},
|
||||
nextIcon: {
|
||||
type: IconValue,
|
||||
default: "$next"
|
||||
},
|
||||
prevIcon: {
|
||||
type: IconValue,
|
||||
default: "$prev"
|
||||
},
|
||||
showArrows: {
|
||||
type: [Boolean, String],
|
||||
validator: (v) => typeof v === "boolean" || [
|
||||
"always",
|
||||
"desktop",
|
||||
"mobile",
|
||||
"never"
|
||||
].includes(v)
|
||||
},
|
||||
...makeComponentProps(),
|
||||
...makeDisplayProps({ mobile: null }),
|
||||
...makeTagProps(),
|
||||
...makeGroupProps({ selectedClass: "v-slide-group-item--active" })
|
||||
}, "VSlideGroup");
|
||||
var VSlideGroup = genericComponent()({
|
||||
name: "VSlideGroup",
|
||||
props: makeVSlideGroupProps(),
|
||||
emits: { "update:modelValue": (value) => true },
|
||||
setup(props, { slots }) {
|
||||
const { isRtl } = useRtl();
|
||||
const { displayClasses, mobile } = useDisplay(props);
|
||||
const group = useGroup(props, props.symbol);
|
||||
const isOverflowing = shallowRef(false);
|
||||
const scrollOffset = shallowRef(0);
|
||||
const containerSize = shallowRef(0);
|
||||
const contentSize = shallowRef(0);
|
||||
const isHorizontal = computed(() => props.direction === "horizontal");
|
||||
const { resizeRef: containerRef, contentRect: containerRect } = useResizeObserver();
|
||||
const { resizeRef: contentRef, contentRect } = useResizeObserver();
|
||||
const goTo = useGoTo();
|
||||
const goToOptions = computed(() => {
|
||||
return {
|
||||
container: containerRef.el,
|
||||
duration: 200,
|
||||
easing: "easeOutQuart"
|
||||
};
|
||||
});
|
||||
const firstSelectedIndex = computed(() => {
|
||||
if (!group.selected.value.length) return -1;
|
||||
return group.items.value.findIndex((item) => item.id === group.selected.value[0]);
|
||||
});
|
||||
const lastSelectedIndex = computed(() => {
|
||||
if (!group.selected.value.length) return -1;
|
||||
return group.items.value.findIndex((item) => item.id === group.selected.value[group.selected.value.length - 1]);
|
||||
});
|
||||
if (IN_BROWSER) {
|
||||
let frame = -1;
|
||||
watch(() => [
|
||||
group.selected.value,
|
||||
containerRect.value,
|
||||
contentRect.value,
|
||||
isHorizontal.value
|
||||
], () => {
|
||||
cancelAnimationFrame(frame);
|
||||
frame = requestAnimationFrame(() => {
|
||||
if (containerRect.value && contentRect.value) {
|
||||
const sizeProperty = isHorizontal.value ? "width" : "height";
|
||||
containerSize.value = containerRect.value[sizeProperty];
|
||||
contentSize.value = contentRect.value[sizeProperty];
|
||||
isOverflowing.value = containerSize.value + 1 < contentSize.value;
|
||||
}
|
||||
if (props.scrollToActive && firstSelectedIndex.value >= 0 && contentRef.el) {
|
||||
const selectedElement = contentRef.el.children[lastSelectedIndex.value];
|
||||
scrollToChildren(selectedElement, props.centerActive);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
const isFocused = shallowRef(false);
|
||||
function scrollToChildren(children, center) {
|
||||
let target = 0;
|
||||
if (center) target = calculateCenteredTarget({
|
||||
containerElement: containerRef.el,
|
||||
isHorizontal: isHorizontal.value,
|
||||
selectedElement: children
|
||||
});
|
||||
else target = calculateUpdatedTarget({
|
||||
containerElement: containerRef.el,
|
||||
isHorizontal: isHorizontal.value,
|
||||
isRtl: isRtl.value,
|
||||
selectedElement: children
|
||||
});
|
||||
scrollToPosition(target);
|
||||
}
|
||||
function scrollToPosition(newPosition) {
|
||||
if (!IN_BROWSER || !containerRef.el) return;
|
||||
const offsetSize = getOffsetSize(isHorizontal.value, containerRef.el);
|
||||
const scrollPosition = getScrollPosition(isHorizontal.value, isRtl.value, containerRef.el);
|
||||
if (getScrollSize(isHorizontal.value, containerRef.el) <= offsetSize || Math.abs(newPosition - scrollPosition) < 16) return;
|
||||
if (isHorizontal.value && isRtl.value && containerRef.el) {
|
||||
const { scrollWidth, offsetWidth: containerWidth } = containerRef.el;
|
||||
newPosition = scrollWidth - containerWidth - newPosition;
|
||||
}
|
||||
if (isHorizontal.value) goTo.horizontal(newPosition, goToOptions.value);
|
||||
else goTo(newPosition, goToOptions.value);
|
||||
}
|
||||
function onScroll(e) {
|
||||
const { scrollTop, scrollLeft } = e.target;
|
||||
scrollOffset.value = isHorizontal.value ? scrollLeft : scrollTop;
|
||||
}
|
||||
function onFocusin(e) {
|
||||
isFocused.value = true;
|
||||
if (!isOverflowing.value || !contentRef.el) return;
|
||||
for (const el of e.composedPath()) for (const item of contentRef.el.children) if (item === el) {
|
||||
scrollToChildren(item);
|
||||
return;
|
||||
}
|
||||
}
|
||||
function onFocusout(e) {
|
||||
isFocused.value = false;
|
||||
}
|
||||
let ignoreFocusEvent = false;
|
||||
function onFocus(e) {
|
||||
if (!ignoreFocusEvent && !isFocused.value && !(e.relatedTarget && contentRef.el?.contains(e.relatedTarget))) focus();
|
||||
ignoreFocusEvent = false;
|
||||
}
|
||||
function onFocusAffixes() {
|
||||
ignoreFocusEvent = true;
|
||||
}
|
||||
function onKeydown(e) {
|
||||
if (!contentRef.el) return;
|
||||
function toFocus(location) {
|
||||
e.preventDefault();
|
||||
focus(location);
|
||||
}
|
||||
if (isHorizontal.value) {
|
||||
if (e.key === "ArrowRight") toFocus(isRtl.value ? "prev" : "next");
|
||||
else if (e.key === "ArrowLeft") toFocus(isRtl.value ? "next" : "prev");
|
||||
} else if (e.key === "ArrowDown") toFocus("next");
|
||||
else if (e.key === "ArrowUp") toFocus("prev");
|
||||
if (e.key === "Home") toFocus("first");
|
||||
else if (e.key === "End") toFocus("last");
|
||||
}
|
||||
function getSiblingElement(el, location) {
|
||||
if (!el) return void 0;
|
||||
let sibling = el;
|
||||
do
|
||||
sibling = sibling?.[location === "next" ? "nextElementSibling" : "previousElementSibling"];
|
||||
while (sibling?.hasAttribute("disabled"));
|
||||
return sibling;
|
||||
}
|
||||
function focus(location) {
|
||||
if (!contentRef.el) return;
|
||||
let el;
|
||||
if (!location) el = focusableChildren(contentRef.el)[0];
|
||||
else if (location === "next") {
|
||||
el = getSiblingElement(contentRef.el.querySelector(":focus"), location);
|
||||
if (!el) return focus("first");
|
||||
} else if (location === "prev") {
|
||||
el = getSiblingElement(contentRef.el.querySelector(":focus"), location);
|
||||
if (!el) return focus("last");
|
||||
} else if (location === "first") {
|
||||
el = contentRef.el.firstElementChild;
|
||||
if (el?.hasAttribute("disabled")) el = getSiblingElement(el, "next");
|
||||
} else if (location === "last") {
|
||||
el = contentRef.el.lastElementChild;
|
||||
if (el?.hasAttribute("disabled")) el = getSiblingElement(el, "prev");
|
||||
}
|
||||
if (el) el.focus({ preventScroll: true });
|
||||
}
|
||||
function scrollTo(location) {
|
||||
const direction = isHorizontal.value && isRtl.value ? -1 : 1;
|
||||
const offsetStep = (location === "prev" ? -direction : direction) * containerSize.value;
|
||||
let newPosition = scrollOffset.value + offsetStep;
|
||||
if (isHorizontal.value && isRtl.value && containerRef.el) {
|
||||
const { scrollWidth, offsetWidth: containerWidth } = containerRef.el;
|
||||
newPosition += scrollWidth - containerWidth;
|
||||
}
|
||||
scrollToPosition(newPosition);
|
||||
}
|
||||
const slotProps = computed(() => ({
|
||||
next: group.next,
|
||||
prev: group.prev,
|
||||
select: group.select,
|
||||
isSelected: group.isSelected
|
||||
}));
|
||||
const hasOverflowOrScroll = computed(() => isOverflowing.value || Math.abs(scrollOffset.value) > 0);
|
||||
const hasAffixes = computed(() => {
|
||||
switch (props.showArrows) {
|
||||
case "never": return false;
|
||||
case "always": return true;
|
||||
case "desktop": return !mobile.value;
|
||||
case true: return hasOverflowOrScroll.value;
|
||||
case "mobile": return mobile.value || hasOverflowOrScroll.value;
|
||||
default: return !mobile.value && hasOverflowOrScroll.value;
|
||||
}
|
||||
});
|
||||
const hasPrev = computed(() => {
|
||||
return Math.abs(scrollOffset.value) > 1;
|
||||
});
|
||||
const hasNext = computed(() => {
|
||||
if (!hasOverflowOrScroll.value) return false;
|
||||
return contentSize.value - containerSize.value - Math.abs(scrollOffset.value) > 1;
|
||||
});
|
||||
useRender(() => createVNode(props.tag, {
|
||||
"class": normalizeClass([
|
||||
"v-slide-group",
|
||||
{
|
||||
"v-slide-group--vertical": !isHorizontal.value,
|
||||
"v-slide-group--has-affixes": hasAffixes.value,
|
||||
"v-slide-group--is-overflowing": isOverflowing.value
|
||||
},
|
||||
displayClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle(props.style),
|
||||
"tabindex": isFocused.value || group.selected.value.length ? -1 : 0,
|
||||
"onFocus": onFocus
|
||||
}, { default: () => [
|
||||
hasAffixes.value && createBaseVNode("div", {
|
||||
"key": "prev",
|
||||
"class": normalizeClass(["v-slide-group__prev", { "v-slide-group__prev--disabled": !hasPrev.value }]),
|
||||
"onMousedown": onFocusAffixes,
|
||||
"onClick": () => hasPrev.value && scrollTo("prev")
|
||||
}, [slots.prev?.(slotProps.value) ?? createVNode(VFadeTransition, null, { default: () => [createVNode(VIcon, { "icon": isRtl.value ? props.nextIcon : props.prevIcon }, null)] })]),
|
||||
createBaseVNode("div", {
|
||||
"key": "container",
|
||||
"ref": containerRef,
|
||||
"class": normalizeClass(["v-slide-group__container", props.contentClass]),
|
||||
"onScroll": onScroll
|
||||
}, [createBaseVNode("div", {
|
||||
"ref": contentRef,
|
||||
"class": "v-slide-group__content",
|
||||
"onFocusin": onFocusin,
|
||||
"onFocusout": onFocusout,
|
||||
"onKeydown": onKeydown
|
||||
}, [slots.default?.(slotProps.value)])]),
|
||||
hasAffixes.value && createBaseVNode("div", {
|
||||
"key": "next",
|
||||
"class": normalizeClass(["v-slide-group__next", { "v-slide-group__next--disabled": !hasNext.value }]),
|
||||
"onMousedown": onFocusAffixes,
|
||||
"onClick": () => hasNext.value && scrollTo("next")
|
||||
}, [slots.next?.(slotProps.value) ?? createVNode(VFadeTransition, null, { default: () => [createVNode(VIcon, { "icon": isRtl.value ? props.prevIcon : props.nextIcon }, null)] })])
|
||||
] }));
|
||||
return {
|
||||
selected: group.selected,
|
||||
scrollTo,
|
||||
scrollOffset,
|
||||
focus,
|
||||
hasPrev,
|
||||
hasNext
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { VSlideGroupSymbol as n, makeVSlideGroupProps as r, VSlideGroup as t };
|
||||
|
||||
//# sourceMappingURL=VSlideGroup-TpMGTwfd.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+170
@@ -0,0 +1,170 @@
|
||||
import { U as computed, W as createBaseVNode, Yn as shallowRef, ar as normalizeClass, et as createVNode, sr as normalizeStyle } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { _ as convertToUnit, a as provideDefaults, l as propsFactory, n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as VExpandTransition } from "./transitions-DCQ3sjjZ.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
import { t as useRender } from "./useRender-fVtVsZgv.js";
|
||||
import { t as useBackgroundColor } from "./color-B6vuQruj.js";
|
||||
import { i as provideTheme, r as makeThemeProps } from "./theme-Cx5kFg0-.js";
|
||||
import { i as useRtl } from "./locale-DDGMqzqb.js";
|
||||
import { t as makeTagProps } from "./tag-C_KkCPzB.js";
|
||||
import { t as VDefaultsProvider } from "./VDefaultsProvider-C09t4-My.js";
|
||||
import { t as VImg } from "./VImg-DaEUT7gG.js";
|
||||
import { n as useRounded, t as makeRoundedProps } from "./rounded-BuPGKRa9.js";
|
||||
import { n as useBorder, t as makeBorderProps } from "./border-jCmRyoxP.js";
|
||||
import { n as useElevation, t as makeElevationProps } from "./elevation-B0TH2wU6.js";
|
||||
import { n as useLocation, t as makeLocationProps } from "./location-BIKTnDF4.js";
|
||||
import "/Users/thackmaster/Development/routie2/frontend/node_modules/vuetify/lib/components/VToolbar/VToolbar.css";
|
||||
//#region node_modules/vuetify/lib/components/VToolbar/VToolbarTitle.js
|
||||
var makeVToolbarTitleProps = propsFactory({
|
||||
text: String,
|
||||
...makeComponentProps(),
|
||||
...makeTagProps()
|
||||
}, "VToolbarTitle");
|
||||
var VToolbarTitle = genericComponent()({
|
||||
name: "VToolbarTitle",
|
||||
props: makeVToolbarTitleProps(),
|
||||
setup(props, { slots }) {
|
||||
useRender(() => {
|
||||
const hasText = !!(slots.default || slots.text || props.text);
|
||||
return createVNode(props.tag, {
|
||||
"class": normalizeClass(["v-toolbar-title", props.class]),
|
||||
"style": normalizeStyle(props.style)
|
||||
}, { default: () => [hasText && createBaseVNode("div", { "class": "v-toolbar-title__placeholder" }, [slots.text ? slots.text() : props.text, slots.default?.()])] });
|
||||
});
|
||||
return {};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/components/VToolbar/VToolbar.js
|
||||
var allowedDensities = [
|
||||
null,
|
||||
"prominent",
|
||||
"default",
|
||||
"comfortable",
|
||||
"compact"
|
||||
];
|
||||
var makeVToolbarProps = propsFactory({
|
||||
absolute: Boolean,
|
||||
collapse: Boolean,
|
||||
collapsePosition: {
|
||||
type: String,
|
||||
default: "start"
|
||||
},
|
||||
color: String,
|
||||
density: {
|
||||
type: String,
|
||||
default: "default",
|
||||
validator: (v) => allowedDensities.includes(v)
|
||||
},
|
||||
extended: {
|
||||
type: Boolean,
|
||||
default: null
|
||||
},
|
||||
extensionHeight: {
|
||||
type: [Number, String],
|
||||
default: 48
|
||||
},
|
||||
flat: Boolean,
|
||||
floating: Boolean,
|
||||
height: {
|
||||
type: [Number, String],
|
||||
default: 64
|
||||
},
|
||||
image: String,
|
||||
title: String,
|
||||
...makeBorderProps(),
|
||||
...makeComponentProps(),
|
||||
...makeElevationProps(),
|
||||
...makeLocationProps(),
|
||||
...makeRoundedProps(),
|
||||
...makeTagProps({ tag: "header" }),
|
||||
...makeThemeProps()
|
||||
}, "VToolbar");
|
||||
var VToolbar = genericComponent()({
|
||||
name: "VToolbar",
|
||||
props: makeVToolbarProps(),
|
||||
setup(props, { slots }) {
|
||||
const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(() => props.color);
|
||||
const { borderClasses } = useBorder(props);
|
||||
const { elevationClasses } = useElevation(props);
|
||||
const { locationStyles } = useLocation(props);
|
||||
const { roundedClasses } = useRounded(props);
|
||||
const { themeClasses } = provideTheme(props);
|
||||
const { rtlClasses } = useRtl();
|
||||
const isExtended = shallowRef(props.extended === null ? !!slots.extension?.() : props.extended);
|
||||
const contentHeight = computed(() => parseInt(Number(props.height) + (props.density === "prominent" ? Number(props.height) : 0) - (props.density === "comfortable" ? 8 : 0) - (props.density === "compact" ? 16 : 0), 10));
|
||||
const extensionHeight = computed(() => isExtended.value ? parseInt(Number(props.extensionHeight) + (props.density === "prominent" ? Number(props.extensionHeight) : 0) - (props.density === "comfortable" ? 4 : 0) - (props.density === "compact" ? 8 : 0), 10) : 0);
|
||||
provideDefaults({ VBtn: { variant: "text" } });
|
||||
useRender(() => {
|
||||
const hasTitle = !!(props.title || slots.title);
|
||||
const hasImage = !!(slots.image || props.image);
|
||||
const extension = slots.extension?.();
|
||||
isExtended.value = props.extended === null ? !!extension : props.extended;
|
||||
return createVNode(props.tag, {
|
||||
"class": normalizeClass([
|
||||
"v-toolbar",
|
||||
`v-toolbar--collapse-${props.collapsePosition}`,
|
||||
{
|
||||
"v-toolbar--absolute": props.absolute,
|
||||
"v-toolbar--collapse": props.collapse,
|
||||
"v-toolbar--flat": props.flat,
|
||||
"v-toolbar--floating": props.floating,
|
||||
[`v-toolbar--density-${props.density}`]: true
|
||||
},
|
||||
backgroundColorClasses.value,
|
||||
borderClasses.value,
|
||||
elevationClasses.value,
|
||||
roundedClasses.value,
|
||||
themeClasses.value,
|
||||
rtlClasses.value,
|
||||
props.class
|
||||
]),
|
||||
"style": normalizeStyle([
|
||||
backgroundColorStyles.value,
|
||||
locationStyles.value,
|
||||
props.style
|
||||
])
|
||||
}, { default: () => [
|
||||
hasImage && createBaseVNode("div", {
|
||||
"key": "image",
|
||||
"class": "v-toolbar__image"
|
||||
}, [!slots.image ? createVNode(VImg, {
|
||||
"key": "image-img",
|
||||
"cover": true,
|
||||
"src": props.image
|
||||
}, null) : createVNode(VDefaultsProvider, {
|
||||
"key": "image-defaults",
|
||||
"disabled": !props.image,
|
||||
"defaults": { VImg: {
|
||||
cover: true,
|
||||
src: props.image
|
||||
} }
|
||||
}, slots.image)]),
|
||||
createVNode(VDefaultsProvider, { "defaults": { VTabs: { height: convertToUnit(contentHeight.value) } } }, { default: () => [createBaseVNode("div", {
|
||||
"class": "v-toolbar__content",
|
||||
"style": { height: convertToUnit(contentHeight.value) }
|
||||
}, [
|
||||
slots.prepend && createBaseVNode("div", { "class": "v-toolbar__prepend" }, [slots.prepend?.()]),
|
||||
hasTitle && createVNode(VToolbarTitle, {
|
||||
"key": "title",
|
||||
"text": props.title
|
||||
}, { text: slots.title }),
|
||||
slots.default?.(),
|
||||
slots.append && createBaseVNode("div", { "class": "v-toolbar__append" }, [slots.append?.()])
|
||||
])] }),
|
||||
createVNode(VDefaultsProvider, { "defaults": { VTabs: { height: convertToUnit(extensionHeight.value) } } }, { default: () => [createVNode(VExpandTransition, null, { default: () => [isExtended.value && createBaseVNode("div", {
|
||||
"class": "v-toolbar__extension",
|
||||
"style": { height: convertToUnit(extensionHeight.value) }
|
||||
}, [extension])] })] })
|
||||
] });
|
||||
});
|
||||
return {
|
||||
contentHeight,
|
||||
extensionHeight
|
||||
};
|
||||
}
|
||||
});
|
||||
//#endregion
|
||||
export { makeVToolbarTitleProps as i, makeVToolbarProps as n, VToolbarTitle as r, VToolbar as t };
|
||||
|
||||
//# sourceMappingURL=VToolbar-XKeTy7Mr.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+370
@@ -0,0 +1,370 @@
|
||||
{
|
||||
"hash": "8e064f63",
|
||||
"configHash": "9602e671",
|
||||
"lockfileHash": "2af5d584",
|
||||
"browserHash": "42fe83ff",
|
||||
"optimized": {
|
||||
"vue-router": {
|
||||
"src": "../../vue-router/dist/vue-router.mjs",
|
||||
"file": "vue-router.js",
|
||||
"fileHash": "c505db30",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vue": {
|
||||
"src": "../../vue/dist/vue.runtime.esm-bundler.js",
|
||||
"file": "vue.js",
|
||||
"fileHash": "27ec1265",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify": {
|
||||
"src": "../../vuetify/lib/framework.js",
|
||||
"file": "vuetify.js",
|
||||
"fileHash": "f2f22051",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VApp": {
|
||||
"src": "../../vuetify/lib/components/VApp/index.js",
|
||||
"file": "vuetify_components_VApp.js",
|
||||
"fileHash": "7d5bc39c",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VAppBar": {
|
||||
"src": "../../vuetify/lib/components/VAppBar/index.js",
|
||||
"file": "vuetify_components_VAppBar.js",
|
||||
"fileHash": "52919531",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VAvatar": {
|
||||
"src": "../../vuetify/lib/components/VAvatar/index.js",
|
||||
"file": "vuetify_components_VAvatar.js",
|
||||
"fileHash": "affaa970",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VBtn": {
|
||||
"src": "../../vuetify/lib/components/VBtn/index.js",
|
||||
"file": "vuetify_components_VBtn.js",
|
||||
"fileHash": "bf1868e4",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VCard": {
|
||||
"src": "../../vuetify/lib/components/VCard/index.js",
|
||||
"file": "vuetify_components_VCard.js",
|
||||
"fileHash": "1d7888e1",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VCode": {
|
||||
"src": "../../vuetify/lib/components/VCode/index.js",
|
||||
"file": "vuetify_components_VCode.js",
|
||||
"fileHash": "3bb42ba7",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VDialog": {
|
||||
"src": "../../vuetify/lib/components/VDialog/index.js",
|
||||
"file": "vuetify_components_VDialog.js",
|
||||
"fileHash": "ab2af168",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VDivider": {
|
||||
"src": "../../vuetify/lib/components/VDivider/index.js",
|
||||
"file": "vuetify_components_VDivider.js",
|
||||
"fileHash": "94063435",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VExpansionPanel": {
|
||||
"src": "../../vuetify/lib/components/VExpansionPanel/index.js",
|
||||
"file": "vuetify_components_VExpansionPanel.js",
|
||||
"fileHash": "ec3b7564",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VGrid": {
|
||||
"src": "../../vuetify/lib/components/VGrid/index.js",
|
||||
"file": "vuetify_components_VGrid.js",
|
||||
"fileHash": "51bab3d5",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VIcon": {
|
||||
"src": "../../vuetify/lib/components/VIcon/index.js",
|
||||
"file": "vuetify_components_VIcon.js",
|
||||
"fileHash": "2b9944e9",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VImg": {
|
||||
"src": "../../vuetify/lib/components/VImg/index.js",
|
||||
"file": "vuetify_components_VImg.js",
|
||||
"fileHash": "9243aee4",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VList": {
|
||||
"src": "../../vuetify/lib/components/VList/index.js",
|
||||
"file": "vuetify_components_VList.js",
|
||||
"fileHash": "c02ef873",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VMain": {
|
||||
"src": "../../vuetify/lib/components/VMain/index.js",
|
||||
"file": "vuetify_components_VMain.js",
|
||||
"fileHash": "71aadc09",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VMenu": {
|
||||
"src": "../../vuetify/lib/components/VMenu/index.js",
|
||||
"file": "vuetify_components_VMenu.js",
|
||||
"fileHash": "d7a1339d",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VNavigationDrawer": {
|
||||
"src": "../../vuetify/lib/components/VNavigationDrawer/index.js",
|
||||
"file": "vuetify_components_VNavigationDrawer.js",
|
||||
"fileHash": "708ecbaa",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VSelect": {
|
||||
"src": "../../vuetify/lib/components/VSelect/index.js",
|
||||
"file": "vuetify_components_VSelect.js",
|
||||
"fileHash": "246963c8",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VSheet": {
|
||||
"src": "../../vuetify/lib/components/VSheet/index.js",
|
||||
"file": "vuetify_components_VSheet.js",
|
||||
"fileHash": "95c536e9",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VSwitch": {
|
||||
"src": "../../vuetify/lib/components/VSwitch/index.js",
|
||||
"file": "vuetify_components_VSwitch.js",
|
||||
"fileHash": "9703e7db",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VTabs": {
|
||||
"src": "../../vuetify/lib/components/VTabs/index.js",
|
||||
"file": "vuetify_components_VTabs.js",
|
||||
"fileHash": "3caec951",
|
||||
"needsInterop": false
|
||||
},
|
||||
"vuetify/components/VToolbar": {
|
||||
"src": "../../vuetify/lib/components/VToolbar/index.js",
|
||||
"file": "vuetify_components_VToolbar.js",
|
||||
"fileHash": "af8ddee1",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"VAvatar-CA-KqvIX": {
|
||||
"file": "VAvatar-CA-KqvIX.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VBtn-BZzD9gwE": {
|
||||
"file": "VBtn-BZzD9gwE.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VDefaultsProvider-C09t4-My": {
|
||||
"file": "VDefaultsProvider-C09t4-My.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VDivider-BJiijT0J": {
|
||||
"file": "VDivider-BJiijT0J.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VIcon-1CJH_3Uo": {
|
||||
"file": "VIcon-1CJH_3Uo.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VImg-DaEUT7gG": {
|
||||
"file": "VImg-DaEUT7gG.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VInput-BxI8SL-_": {
|
||||
"file": "VInput-BxI8SL-_.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VList-DkWOjB0M": {
|
||||
"file": "VList-DkWOjB0M.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VMenu-DCQFp-2Y": {
|
||||
"file": "VMenu-DCQFp-2Y.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VOverlay-BS8OrX3g": {
|
||||
"file": "VOverlay-BS8OrX3g.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VProgressCircular-yKv2qs75": {
|
||||
"file": "VProgressCircular-yKv2qs75.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VSheet-CLHX3uIJ": {
|
||||
"file": "VSheet-CLHX3uIJ.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VSlideGroup-TpMGTwfd": {
|
||||
"file": "VSlideGroup-TpMGTwfd.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"VToolbar-XKeTy7Mr": {
|
||||
"file": "VToolbar-XKeTy7Mr.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"anchor-DB_quObT": {
|
||||
"file": "anchor-DB_quObT.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"border-jCmRyoxP": {
|
||||
"file": "border-jCmRyoxP.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"box-BNWMOtF7": {
|
||||
"file": "box-BNWMOtF7.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"color-B6vuQruj": {
|
||||
"file": "color-B6vuQruj.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"colorUtils-BE28T62U": {
|
||||
"file": "colorUtils-BE28T62U.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"component-DdiwBe6i": {
|
||||
"file": "component-DdiwBe6i.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"createSimpleFunctional-Cqw8cOWQ": {
|
||||
"file": "createSimpleFunctional-Cqw8cOWQ.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"deepEqual-DDqmGqyF": {
|
||||
"file": "deepEqual-DDqmGqyF.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"defineComponent-DB6xIcDy": {
|
||||
"file": "defineComponent-DB6xIcDy.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"density-CpKZ5PhP": {
|
||||
"file": "density-CpKZ5PhP.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"dimensions-BDdmuRdK": {
|
||||
"file": "dimensions-BDdmuRdK.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"display-DKaCj-_K": {
|
||||
"file": "display-DKaCj-_K.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"easing-DfcvkbkS": {
|
||||
"file": "easing-DfcvkbkS.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"elevation-B0TH2wU6": {
|
||||
"file": "elevation-B0TH2wU6.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"focusTrap-rHoJd0qS": {
|
||||
"file": "focusTrap-rHoJd0qS.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"forwardRefs-CW3d8km7": {
|
||||
"file": "forwardRefs-CW3d8km7.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"getScrollParent-DuXs8SPu": {
|
||||
"file": "getScrollParent-DuXs8SPu.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"goto-Bn-PzNUr": {
|
||||
"file": "goto-Bn-PzNUr.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"group-Cm2viEWK": {
|
||||
"file": "group-Cm2viEWK.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"icons-k2ZLE_i8": {
|
||||
"file": "icons-k2ZLE_i8.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"layout-C9QMoF7I": {
|
||||
"file": "layout-C9QMoF7I.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"lazy-DhsobH97": {
|
||||
"file": "lazy-DhsobH97.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"loader-CV4sMFhE": {
|
||||
"file": "loader-CV4sMFhE.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"locale-DDGMqzqb": {
|
||||
"file": "locale-DDGMqzqb.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"location-BIKTnDF4": {
|
||||
"file": "location-BIKTnDF4.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"position-BCUsnxVO": {
|
||||
"file": "position-BCUsnxVO.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"proxiedModel-DSlSIQ0y": {
|
||||
"file": "proxiedModel-DSlSIQ0y.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"resizeObserver-C12jWpYk": {
|
||||
"file": "resizeObserver-C12jWpYk.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"ripple-Z40rPDte": {
|
||||
"file": "ripple-Z40rPDte.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"rounded-BuPGKRa9": {
|
||||
"file": "rounded-BuPGKRa9.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"router-D_jP4Uwb": {
|
||||
"file": "router-D_jP4Uwb.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"scopeId-CyMkmyzM": {
|
||||
"file": "scopeId-CyMkmyzM.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"ssrBoot-CSc1_bcP": {
|
||||
"file": "ssrBoot-CSc1_bcP.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"tag-C_KkCPzB": {
|
||||
"file": "tag-C_KkCPzB.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"theme-Cx5kFg0-": {
|
||||
"file": "theme-Cx5kFg0-.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"transition-DqoZ8fA1": {
|
||||
"file": "transition-DqoZ8fA1.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"transitions-DCQ3sjjZ": {
|
||||
"file": "transitions-DCQ3sjjZ.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"useRender-fVtVsZgv": {
|
||||
"file": "useRender-fVtVsZgv.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"variant-CqXtG9Ih": {
|
||||
"file": "variant-CqXtG9Ih.js",
|
||||
"isDynamicEntry": false
|
||||
},
|
||||
"vue.runtime.esm-bundler-BvoXUmaf": {
|
||||
"file": "vue.runtime.esm-bundler-BvoXUmaf.js",
|
||||
"isDynamicEntry": false
|
||||
}
|
||||
}
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
import { P as includes } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/util/anchor.js
|
||||
var block = ["top", "bottom"];
|
||||
var inline = [
|
||||
"start",
|
||||
"end",
|
||||
"left",
|
||||
"right"
|
||||
];
|
||||
/** Parse a raw anchor string into an object */
|
||||
function parseAnchor(anchor, isRtl) {
|
||||
let [side, align] = anchor.split(" ");
|
||||
if (!align) align = includes(block, side) ? "start" : includes(inline, side) ? "top" : "center";
|
||||
return {
|
||||
side: toPhysical(side, isRtl),
|
||||
align: toPhysical(align, isRtl)
|
||||
};
|
||||
}
|
||||
function toPhysical(str, isRtl) {
|
||||
if (str === "start") return isRtl ? "right" : "left";
|
||||
if (str === "end") return isRtl ? "left" : "right";
|
||||
return str;
|
||||
}
|
||||
function flipSide(anchor) {
|
||||
return {
|
||||
side: {
|
||||
center: "center",
|
||||
top: "bottom",
|
||||
bottom: "top",
|
||||
left: "right",
|
||||
right: "left"
|
||||
}[anchor.side],
|
||||
align: anchor.align
|
||||
};
|
||||
}
|
||||
function flipAlign(anchor) {
|
||||
return {
|
||||
side: anchor.side,
|
||||
align: {
|
||||
center: "center",
|
||||
top: "bottom",
|
||||
bottom: "top",
|
||||
left: "right",
|
||||
right: "left"
|
||||
}[anchor.align]
|
||||
};
|
||||
}
|
||||
function flipCorner(anchor) {
|
||||
return {
|
||||
side: anchor.align,
|
||||
align: anchor.side
|
||||
};
|
||||
}
|
||||
function getAxis(anchor) {
|
||||
return includes(block, anchor.side) ? "y" : "x";
|
||||
}
|
||||
//#endregion
|
||||
export { parseAnchor as a, getAxis as i, flipCorner as n, toPhysical as o, flipSide as r, flipAlign as t };
|
||||
|
||||
//# sourceMappingURL=anchor-DB_quObT.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"anchor-DB_quObT.js","names":[],"sources":["../../vuetify/lib/util/anchor.js"],"sourcesContent":["// Utilities\nimport { includes } from \"./helpers.js\";\nconst block = ['top', 'bottom'];\nconst inline = ['start', 'end', 'left', 'right'];\n/** Parse a raw anchor string into an object */\nexport function parseAnchor(anchor, isRtl) {\n let [side, align] = anchor.split(' ');\n if (!align) {\n align = includes(block, side) ? 'start' : includes(inline, side) ? 'top' : 'center';\n }\n return {\n side: toPhysical(side, isRtl),\n align: toPhysical(align, isRtl)\n };\n}\nexport function toPhysical(str, isRtl) {\n if (str === 'start') return isRtl ? 'right' : 'left';\n if (str === 'end') return isRtl ? 'left' : 'right';\n return str;\n}\nexport function flipSide(anchor) {\n return {\n side: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n }[anchor.side],\n align: anchor.align\n };\n}\nexport function flipAlign(anchor) {\n return {\n side: anchor.side,\n align: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n }[anchor.align]\n };\n}\nexport function flipCorner(anchor) {\n return {\n side: anchor.align,\n align: anchor.side\n };\n}\nexport function getAxis(anchor) {\n return includes(block, anchor.side) ? 'y' : 'x';\n}\n//# sourceMappingURL=anchor.js.map"],"mappings":";;AAEA,IAAM,QAAQ,CAAC,OAAO,SAAS;AAC/B,IAAM,SAAS;CAAC;CAAS;CAAO;CAAQ;CAAQ;;AAEhD,SAAgB,YAAY,QAAQ,OAAO;CACzC,IAAI,CAAC,MAAM,SAAS,OAAO,MAAM,IAAI;AACrC,KAAI,CAAC,MACH,SAAQ,SAAS,OAAO,KAAK,GAAG,UAAU,SAAS,QAAQ,KAAK,GAAG,QAAQ;AAE7E,QAAO;EACL,MAAM,WAAW,MAAM,MAAM;EAC7B,OAAO,WAAW,OAAO,MAAM;EAChC;;AAEH,SAAgB,WAAW,KAAK,OAAO;AACrC,KAAI,QAAQ,QAAS,QAAO,QAAQ,UAAU;AAC9C,KAAI,QAAQ,MAAO,QAAO,QAAQ,SAAS;AAC3C,QAAO;;AAET,SAAgB,SAAS,QAAQ;AAC/B,QAAO;EACL,MAAM;GACJ,QAAQ;GACR,KAAK;GACL,QAAQ;GACR,MAAM;GACN,OAAO;GACR,CAAC,OAAO;EACT,OAAO,OAAO;EACf;;AAEH,SAAgB,UAAU,QAAQ;AAChC,QAAO;EACL,MAAM,OAAO;EACb,OAAO;GACL,QAAQ;GACR,KAAK;GACL,QAAQ;GACR,MAAM;GACN,OAAO;GACR,CAAC,OAAO;EACV;;AAEH,SAAgB,WAAW,QAAQ;AACjC,QAAO;EACL,MAAM,OAAO;EACb,OAAO,OAAO;EACf;;AAEH,SAAgB,QAAQ,QAAQ;AAC9B,QAAO,SAAS,OAAO,OAAO,KAAK,GAAG,MAAM"}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
import { U as computed } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { c as getCurrentInstanceName, l as propsFactory } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/composables/border.js
|
||||
var makeBorderProps = propsFactory({ border: [
|
||||
Boolean,
|
||||
Number,
|
||||
String
|
||||
] }, "border");
|
||||
function useBorder(props, name = getCurrentInstanceName()) {
|
||||
return { borderClasses: computed(() => {
|
||||
const border = props.border;
|
||||
if (border === true || border === "") return `${name}--border`;
|
||||
else if (typeof border === "string" || border === 0) return String(border).split(" ").map((v) => `border-${v}`);
|
||||
return [];
|
||||
}) };
|
||||
}
|
||||
//#endregion
|
||||
export { useBorder as n, makeBorderProps as t };
|
||||
|
||||
//# sourceMappingURL=border-jCmRyoxP.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"border-jCmRyoxP.js","names":[],"sources":["../../vuetify/lib/composables/border.js"],"sourcesContent":["// Utilities\nimport { computed } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.js\"; // Types\n// Composables\nexport const makeBorderProps = propsFactory({\n border: [Boolean, Number, String]\n}, 'border');\nexport function useBorder(props, name = getCurrentInstanceName()) {\n const borderClasses = computed(() => {\n const border = props.border;\n if (border === true || border === '') {\n return `${name}--border`;\n } else if (typeof border === 'string' || border === 0) {\n return String(border).split(' ').map(v => `border-${v}`);\n }\n return [];\n });\n return {\n borderClasses\n };\n}\n//# sourceMappingURL=border.js.map"],"mappings":";;;AAIA,IAAa,kBAAkB,aAAa,EAC1C,QAAQ;CAAC;CAAS;CAAQ;CAAO,EAClC,EAAE,SAAS;AACZ,SAAgB,UAAU,OAAO,OAAO,wBAAwB,EAAE;AAUhE,QAAO,EACL,eAVoB,eAAe;EACnC,MAAM,SAAS,MAAM;AACrB,MAAI,WAAW,QAAQ,WAAW,GAChC,QAAO,GAAG,KAAK;WACN,OAAO,WAAW,YAAY,WAAW,EAClD,QAAO,OAAO,OAAO,CAAC,MAAM,IAAI,CAAC,KAAI,MAAK,UAAU,IAAI;AAE1D,SAAO,EAAE;GAGI,EACd"}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
//#region node_modules/vuetify/lib/util/box.js
|
||||
var Box = class {
|
||||
constructor(args) {
|
||||
const pageScale = document.body.currentCSSZoom ?? 1;
|
||||
const isElement = args instanceof Element;
|
||||
const factor = isElement ? 1 + (1 - pageScale) / pageScale : 1;
|
||||
const { x, y, width, height } = isElement ? args.getBoundingClientRect() : args;
|
||||
this.x = x * factor;
|
||||
this.y = y * factor;
|
||||
this.width = width * factor;
|
||||
this.height = height * factor;
|
||||
}
|
||||
get top() {
|
||||
return this.y;
|
||||
}
|
||||
get bottom() {
|
||||
return this.y + this.height;
|
||||
}
|
||||
get left() {
|
||||
return this.x;
|
||||
}
|
||||
get right() {
|
||||
return this.x + this.width;
|
||||
}
|
||||
};
|
||||
function getOverflow(a, b) {
|
||||
return {
|
||||
x: {
|
||||
before: Math.max(0, b.left - a.left),
|
||||
after: Math.max(0, a.right - b.right)
|
||||
},
|
||||
y: {
|
||||
before: Math.max(0, b.top - a.top),
|
||||
after: Math.max(0, a.bottom - b.bottom)
|
||||
}
|
||||
};
|
||||
}
|
||||
function getTargetBox(target) {
|
||||
if (Array.isArray(target)) {
|
||||
const pageScale = document.body.currentCSSZoom ?? 1;
|
||||
const factor = 1 + (1 - pageScale) / pageScale;
|
||||
return new Box({
|
||||
x: target[0] * factor,
|
||||
y: target[1] * factor,
|
||||
width: 0 * factor,
|
||||
height: 0 * factor
|
||||
});
|
||||
} else return new Box(target);
|
||||
}
|
||||
function getElementBox(el) {
|
||||
if (el === document.documentElement) if (!visualViewport) return new Box({
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: document.documentElement.clientWidth,
|
||||
height: document.documentElement.clientHeight
|
||||
});
|
||||
else {
|
||||
const pageScale = document.body.currentCSSZoom ?? 1;
|
||||
return new Box({
|
||||
x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,
|
||||
y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,
|
||||
width: visualViewport.width * visualViewport.scale / pageScale,
|
||||
height: visualViewport.height * visualViewport.scale / pageScale
|
||||
});
|
||||
}
|
||||
else return new Box(el);
|
||||
}
|
||||
//#endregion
|
||||
export { getTargetBox as i, getElementBox as n, getOverflow as r, Box as t };
|
||||
|
||||
//# sourceMappingURL=box-BNWMOtF7.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"box-BNWMOtF7.js","names":[],"sources":["../../vuetify/lib/util/box.js"],"sourcesContent":["export class Box {\n constructor(args) {\n const pageScale = document.body.currentCSSZoom ?? 1;\n const isElement = args instanceof Element;\n const factor = isElement ? 1 + (1 - pageScale) / pageScale : 1;\n const {\n x,\n y,\n width,\n height\n } = isElement ? args.getBoundingClientRect() : args;\n this.x = x * factor;\n this.y = y * factor;\n this.width = width * factor;\n this.height = height * factor;\n }\n get top() {\n return this.y;\n }\n get bottom() {\n return this.y + this.height;\n }\n get left() {\n return this.x;\n }\n get right() {\n return this.x + this.width;\n }\n}\nexport function getOverflow(a, b) {\n return {\n x: {\n before: Math.max(0, b.left - a.left),\n after: Math.max(0, a.right - b.right)\n },\n y: {\n before: Math.max(0, b.top - a.top),\n after: Math.max(0, a.bottom - b.bottom)\n }\n };\n}\nexport function getTargetBox(target) {\n if (Array.isArray(target)) {\n const pageScale = document.body.currentCSSZoom ?? 1;\n const factor = 1 + (1 - pageScale) / pageScale;\n return new Box({\n x: target[0] * factor,\n y: target[1] * factor,\n width: 0 * factor,\n height: 0 * factor\n });\n } else {\n return new Box(target);\n }\n}\nexport function getElementBox(el) {\n if (el === document.documentElement) {\n if (!visualViewport) {\n return new Box({\n x: 0,\n y: 0,\n width: document.documentElement.clientWidth,\n height: document.documentElement.clientHeight\n });\n } else {\n const pageScale = document.body.currentCSSZoom ?? 1;\n return new Box({\n x: visualViewport.scale > 1 ? 0 : visualViewport.offsetLeft,\n y: visualViewport.scale > 1 ? 0 : visualViewport.offsetTop,\n width: visualViewport.width * visualViewport.scale / pageScale,\n height: visualViewport.height * visualViewport.scale / pageScale\n });\n }\n } else {\n return new Box(el);\n }\n}\n//# sourceMappingURL=box.js.map"],"mappings":";AAAA,IAAa,MAAb,MAAiB;CACf,YAAY,MAAM;EAChB,MAAM,YAAY,SAAS,KAAK,kBAAkB;EAClD,MAAM,YAAY,gBAAgB;EAClC,MAAM,SAAS,YAAY,KAAK,IAAI,aAAa,YAAY;EAC7D,MAAM,EACJ,GACA,GACA,OACA,WACE,YAAY,KAAK,uBAAuB,GAAG;AAC/C,OAAK,IAAI,IAAI;AACb,OAAK,IAAI,IAAI;AACb,OAAK,QAAQ,QAAQ;AACrB,OAAK,SAAS,SAAS;;CAEzB,IAAI,MAAM;AACR,SAAO,KAAK;;CAEd,IAAI,SAAS;AACX,SAAO,KAAK,IAAI,KAAK;;CAEvB,IAAI,OAAO;AACT,SAAO,KAAK;;CAEd,IAAI,QAAQ;AACV,SAAO,KAAK,IAAI,KAAK;;;AAGzB,SAAgB,YAAY,GAAG,GAAG;AAChC,QAAO;EACL,GAAG;GACD,QAAQ,KAAK,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK;GACpC,OAAO,KAAK,IAAI,GAAG,EAAE,QAAQ,EAAE,MAAM;GACtC;EACD,GAAG;GACD,QAAQ,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI;GAClC,OAAO,KAAK,IAAI,GAAG,EAAE,SAAS,EAAE,OAAO;GACxC;EACF;;AAEH,SAAgB,aAAa,QAAQ;AACnC,KAAI,MAAM,QAAQ,OAAO,EAAE;EACzB,MAAM,YAAY,SAAS,KAAK,kBAAkB;EAClD,MAAM,SAAS,KAAK,IAAI,aAAa;AACrC,SAAO,IAAI,IAAI;GACb,GAAG,OAAO,KAAK;GACf,GAAG,OAAO,KAAK;GACf,OAAO,IAAI;GACX,QAAQ,IAAI;GACb,CAAC;OAEF,QAAO,IAAI,IAAI,OAAO;;AAG1B,SAAgB,cAAc,IAAI;AAChC,KAAI,OAAO,SAAS,gBAClB,KAAI,CAAC,eACH,QAAO,IAAI,IAAI;EACb,GAAG;EACH,GAAG;EACH,OAAO,SAAS,gBAAgB;EAChC,QAAQ,SAAS,gBAAgB;EAClC,CAAC;MACG;EACL,MAAM,YAAY,SAAS,KAAK,kBAAkB;AAClD,SAAO,IAAI,IAAI;GACb,GAAG,eAAe,QAAQ,IAAI,IAAI,eAAe;GACjD,GAAG,eAAe,QAAQ,IAAI,IAAI,eAAe;GACjD,OAAO,eAAe,QAAQ,eAAe,QAAQ;GACrD,QAAQ,eAAe,SAAS,eAAe,QAAQ;GACxD,CAAC;;KAGJ,QAAO,IAAI,IAAI,GAAG"}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
import { er as toValue } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { x as destructComputed } from "./defineComponent-DB6xIcDy.js";
|
||||
import { a as isCssColor, c as parseColor, i as hasLightForeground, o as isParsableColor } from "./colorUtils-BE28T62U.js";
|
||||
//#region node_modules/vuetify/lib/composables/color.js
|
||||
function useColor(colors) {
|
||||
return destructComputed(() => {
|
||||
const { class: colorClasses, style: colorStyles } = computeColor(colors);
|
||||
return {
|
||||
colorClasses,
|
||||
colorStyles
|
||||
};
|
||||
});
|
||||
}
|
||||
function useTextColor(color) {
|
||||
const { colorClasses: textColorClasses, colorStyles: textColorStyles } = useColor(() => ({ text: toValue(color) }));
|
||||
return {
|
||||
textColorClasses,
|
||||
textColorStyles
|
||||
};
|
||||
}
|
||||
function useBackgroundColor(color) {
|
||||
const { colorClasses: backgroundColorClasses, colorStyles: backgroundColorStyles } = useColor(() => ({ background: toValue(color) }));
|
||||
return {
|
||||
backgroundColorClasses,
|
||||
backgroundColorStyles
|
||||
};
|
||||
}
|
||||
function normalizeColors(colors) {
|
||||
return {
|
||||
text: typeof colors.text === "string" ? colors.text.replace(/^text-/, "") : colors.text,
|
||||
background: typeof colors.background === "string" ? colors.background.replace(/^bg-/, "") : colors.background
|
||||
};
|
||||
}
|
||||
function computeColor(colors) {
|
||||
const _colors = normalizeColors(toValue(colors));
|
||||
const classes = [];
|
||||
const styles = {};
|
||||
if (_colors.background) if (isCssColor(_colors.background)) {
|
||||
styles.backgroundColor = _colors.background;
|
||||
if (!_colors.text && isParsableColor(_colors.background)) {
|
||||
const backgroundColor = parseColor(_colors.background);
|
||||
if (backgroundColor.a == null || backgroundColor.a === 1) classes.push(hasLightForeground(backgroundColor) ? "v-theme-on-dark" : "v-theme-on-light");
|
||||
}
|
||||
} else classes.push(`bg-${_colors.background}`);
|
||||
if (_colors.text) if (isCssColor(_colors.text)) {
|
||||
styles.color = _colors.text;
|
||||
styles.caretColor = _colors.text;
|
||||
} else classes.push(`text-${_colors.text}`);
|
||||
return {
|
||||
class: classes,
|
||||
style: styles
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
export { useColor as n, useTextColor as r, useBackgroundColor as t };
|
||||
|
||||
//# sourceMappingURL=color-B6vuQruj.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"color-B6vuQruj.js","names":[],"sources":["../../vuetify/lib/composables/color.js"],"sourcesContent":["// Utilities\nimport { toValue } from 'vue';\nimport { destructComputed, hasLightForeground, isCssColor, isParsableColor, parseColor } from \"../util/index.js\"; // Types\n// Composables\nexport function useColor(colors) {\n return destructComputed(() => {\n const {\n class: colorClasses,\n style: colorStyles\n } = computeColor(colors);\n return {\n colorClasses,\n colorStyles\n };\n });\n}\nexport function useTextColor(color) {\n const {\n colorClasses: textColorClasses,\n colorStyles: textColorStyles\n } = useColor(() => ({\n text: toValue(color)\n }));\n return {\n textColorClasses,\n textColorStyles\n };\n}\nexport function useBackgroundColor(color) {\n const {\n colorClasses: backgroundColorClasses,\n colorStyles: backgroundColorStyles\n } = useColor(() => ({\n background: toValue(color)\n }));\n return {\n backgroundColorClasses,\n backgroundColorStyles\n };\n}\nfunction normalizeColors(colors) {\n return {\n text: typeof colors.text === 'string' ? colors.text.replace(/^text-/, '') : colors.text,\n background: typeof colors.background === 'string' ? colors.background.replace(/^bg-/, '') : colors.background\n };\n}\nexport function computeColor(colors) {\n const _colors = normalizeColors(toValue(colors));\n const classes = [];\n const styles = {};\n if (_colors.background) {\n if (isCssColor(_colors.background)) {\n styles.backgroundColor = _colors.background;\n if (!_colors.text && isParsableColor(_colors.background)) {\n const backgroundColor = parseColor(_colors.background);\n if (backgroundColor.a == null || backgroundColor.a === 1) {\n classes.push(hasLightForeground(backgroundColor) ? 'v-theme-on-dark' : 'v-theme-on-light');\n }\n }\n } else {\n classes.push(`bg-${_colors.background}`);\n }\n }\n if (_colors.text) {\n if (isCssColor(_colors.text)) {\n styles.color = _colors.text;\n styles.caretColor = _colors.text;\n } else {\n classes.push(`text-${_colors.text}`);\n }\n }\n return {\n class: classes,\n style: styles\n };\n}\n//# sourceMappingURL=color.js.map"],"mappings":";;;;AAIA,SAAgB,SAAS,QAAQ;AAC/B,QAAO,uBAAuB;EAC5B,MAAM,EACJ,OAAO,cACP,OAAO,gBACL,aAAa,OAAO;AACxB,SAAO;GACL;GACA;GACD;GACD;;AAEJ,SAAgB,aAAa,OAAO;CAClC,MAAM,EACJ,cAAc,kBACd,aAAa,oBACX,gBAAgB,EAClB,MAAM,QAAQ,MAAM,EACrB,EAAE;AACH,QAAO;EACL;EACA;EACD;;AAEH,SAAgB,mBAAmB,OAAO;CACxC,MAAM,EACJ,cAAc,wBACd,aAAa,0BACX,gBAAgB,EAClB,YAAY,QAAQ,MAAM,EAC3B,EAAE;AACH,QAAO;EACL;EACA;EACD;;AAEH,SAAS,gBAAgB,QAAQ;AAC/B,QAAO;EACL,MAAM,OAAO,OAAO,SAAS,WAAW,OAAO,KAAK,QAAQ,UAAU,GAAG,GAAG,OAAO;EACnF,YAAY,OAAO,OAAO,eAAe,WAAW,OAAO,WAAW,QAAQ,QAAQ,GAAG,GAAG,OAAO;EACpG;;AAEH,SAAgB,aAAa,QAAQ;CACnC,MAAM,UAAU,gBAAgB,QAAQ,OAAO,CAAC;CAChD,MAAM,UAAU,EAAE;CAClB,MAAM,SAAS,EAAE;AACjB,KAAI,QAAQ,WACV,KAAI,WAAW,QAAQ,WAAW,EAAE;AAClC,SAAO,kBAAkB,QAAQ;AACjC,MAAI,CAAC,QAAQ,QAAQ,gBAAgB,QAAQ,WAAW,EAAE;GACxD,MAAM,kBAAkB,WAAW,QAAQ,WAAW;AACtD,OAAI,gBAAgB,KAAK,QAAQ,gBAAgB,MAAM,EACrD,SAAQ,KAAK,mBAAmB,gBAAgB,GAAG,oBAAoB,mBAAmB;;OAI9F,SAAQ,KAAK,MAAM,QAAQ,aAAa;AAG5C,KAAI,QAAQ,KACV,KAAI,WAAW,QAAQ,KAAK,EAAE;AAC5B,SAAO,QAAQ,QAAQ;AACvB,SAAO,aAAa,QAAQ;OAE5B,SAAQ,KAAK,QAAQ,QAAQ,OAAO;AAGxC,QAAO;EACL,OAAO;EACP,OAAO;EACR"}
|
||||
+313
@@ -0,0 +1,313 @@
|
||||
import { M as has, W as padEnd, g as clamp, h as chunk, it as consoleWarn } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/util/color/APCA.js
|
||||
/**
|
||||
* WCAG 3.0 APCA perceptual contrast algorithm from https://github.com/Myndex/SAPC-APCA
|
||||
* @licence https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
|
||||
* @see https://www.w3.org/WAI/GL/task-forces/silver/wiki/Visual_Contrast_of_Text_Subgroup
|
||||
*/
|
||||
var mainTRC = 2.4;
|
||||
var Rco = .2126729;
|
||||
var Gco = .7151522;
|
||||
var Bco = .072175;
|
||||
var normBG = .55;
|
||||
var normTXT = .58;
|
||||
var revTXT = .57;
|
||||
var revBG = .62;
|
||||
var blkThrs = .03;
|
||||
var blkClmp = 1.45;
|
||||
var deltaYmin = 5e-4;
|
||||
var scaleBoW = 1.25;
|
||||
var scaleWoB = 1.25;
|
||||
var loConThresh = .078;
|
||||
var loConFactor = 12.82051282051282;
|
||||
var loConOffset = .06;
|
||||
var loClip = .001;
|
||||
function APCAcontrast(text, background) {
|
||||
const Rtxt = (text.r / 255) ** mainTRC;
|
||||
const Gtxt = (text.g / 255) ** mainTRC;
|
||||
const Btxt = (text.b / 255) ** mainTRC;
|
||||
const Rbg = (background.r / 255) ** mainTRC;
|
||||
const Gbg = (background.g / 255) ** mainTRC;
|
||||
const Bbg = (background.b / 255) ** mainTRC;
|
||||
let Ytxt = Rtxt * Rco + Gtxt * Gco + Btxt * Bco;
|
||||
let Ybg = Rbg * Rco + Gbg * Gco + Bbg * Bco;
|
||||
if (Ytxt <= blkThrs) Ytxt += (blkThrs - Ytxt) ** blkClmp;
|
||||
if (Ybg <= blkThrs) Ybg += (blkThrs - Ybg) ** blkClmp;
|
||||
if (Math.abs(Ybg - Ytxt) < deltaYmin) return 0;
|
||||
let outputContrast;
|
||||
if (Ybg > Ytxt) {
|
||||
const SAPC = (Ybg ** normBG - Ytxt ** normTXT) * scaleBoW;
|
||||
outputContrast = SAPC < loClip ? 0 : SAPC < loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC - loConOffset;
|
||||
} else {
|
||||
const SAPC = (Ybg ** revBG - Ytxt ** revTXT) * scaleWoB;
|
||||
outputContrast = SAPC > -loClip ? 0 : SAPC > -loConThresh ? SAPC - SAPC * loConFactor * loConOffset : SAPC + loConOffset;
|
||||
}
|
||||
return outputContrast * 100;
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/util/color/transformCIELAB.js
|
||||
var delta = .20689655172413793;
|
||||
var cielabForwardTransform = (t) => t > delta ** 3 ? Math.cbrt(t) : t / (3 * delta ** 2) + 4 / 29;
|
||||
var cielabReverseTransform = (t) => t > delta ? t ** 3 : 3 * delta ** 2 * (t - 4 / 29);
|
||||
function fromXYZ$1(xyz) {
|
||||
const transform = cielabForwardTransform;
|
||||
const transformedY = transform(xyz[1]);
|
||||
return [
|
||||
116 * transformedY - 16,
|
||||
500 * (transform(xyz[0] / .95047) - transformedY),
|
||||
200 * (transformedY - transform(xyz[2] / 1.08883))
|
||||
];
|
||||
}
|
||||
function toXYZ$1(lab) {
|
||||
const transform = cielabReverseTransform;
|
||||
const Ln = (lab[0] + 16) / 116;
|
||||
return [
|
||||
transform(Ln + lab[1] / 500) * .95047,
|
||||
transform(Ln),
|
||||
transform(Ln - lab[2] / 200) * 1.08883
|
||||
];
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/util/color/transformSRGB.js
|
||||
var srgbForwardMatrix = [
|
||||
[
|
||||
3.2406,
|
||||
-1.5372,
|
||||
-.4986
|
||||
],
|
||||
[
|
||||
-.9689,
|
||||
1.8758,
|
||||
.0415
|
||||
],
|
||||
[
|
||||
.0557,
|
||||
-.204,
|
||||
1.057
|
||||
]
|
||||
];
|
||||
var srgbForwardTransform = (C) => C <= .0031308 ? C * 12.92 : 1.055 * C ** (1 / 2.4) - .055;
|
||||
var srgbReverseMatrix = [
|
||||
[
|
||||
.4124,
|
||||
.3576,
|
||||
.1805
|
||||
],
|
||||
[
|
||||
.2126,
|
||||
.7152,
|
||||
.0722
|
||||
],
|
||||
[
|
||||
.0193,
|
||||
.1192,
|
||||
.9505
|
||||
]
|
||||
];
|
||||
var srgbReverseTransform = (C) => C <= .04045 ? C / 12.92 : ((C + .055) / 1.055) ** 2.4;
|
||||
function fromXYZ(xyz) {
|
||||
const rgb = Array(3);
|
||||
const transform = srgbForwardTransform;
|
||||
const matrix = srgbForwardMatrix;
|
||||
for (let i = 0; i < 3; ++i) rgb[i] = Math.round(clamp(transform(matrix[i][0] * xyz[0] + matrix[i][1] * xyz[1] + matrix[i][2] * xyz[2])) * 255);
|
||||
return {
|
||||
r: rgb[0],
|
||||
g: rgb[1],
|
||||
b: rgb[2]
|
||||
};
|
||||
}
|
||||
function toXYZ({ r, g, b }) {
|
||||
const xyz = [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
];
|
||||
const transform = srgbReverseTransform;
|
||||
const matrix = srgbReverseMatrix;
|
||||
r = transform(r / 255);
|
||||
g = transform(g / 255);
|
||||
b = transform(b / 255);
|
||||
for (let i = 0; i < 3; ++i) xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b;
|
||||
return xyz;
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/util/colorUtils.js
|
||||
function isCssColor(color) {
|
||||
return !!color && /^(#|var\(--|(rgb|hsl)a?\()/.test(color);
|
||||
}
|
||||
function isParsableColor(color) {
|
||||
return isCssColor(color) && !/^((rgb|hsl)a?\()?var\(--/.test(color);
|
||||
}
|
||||
var cssColorRe = /^(?<fn>(?:rgb|hsl)a?)\((?<values>.+)\)/;
|
||||
var mappers = {
|
||||
rgb: (r, g, b, a) => ({
|
||||
r,
|
||||
g,
|
||||
b,
|
||||
a
|
||||
}),
|
||||
rgba: (r, g, b, a) => ({
|
||||
r,
|
||||
g,
|
||||
b,
|
||||
a
|
||||
}),
|
||||
hsl: (h, s, l, a) => HSLtoRGB({
|
||||
h,
|
||||
s,
|
||||
l,
|
||||
a
|
||||
}),
|
||||
hsla: (h, s, l, a) => HSLtoRGB({
|
||||
h,
|
||||
s,
|
||||
l,
|
||||
a
|
||||
}),
|
||||
hsv: (h, s, v, a) => HSVtoRGB({
|
||||
h,
|
||||
s,
|
||||
v,
|
||||
a
|
||||
}),
|
||||
hsva: (h, s, v, a) => HSVtoRGB({
|
||||
h,
|
||||
s,
|
||||
v,
|
||||
a
|
||||
})
|
||||
};
|
||||
function parseColor(color) {
|
||||
if (typeof color === "number") {
|
||||
if (isNaN(color) || color < 0 || color > 16777215) consoleWarn(`'${color}' is not a valid hex color`);
|
||||
return {
|
||||
r: (color & 16711680) >> 16,
|
||||
g: (color & 65280) >> 8,
|
||||
b: color & 255
|
||||
};
|
||||
} else if (typeof color === "string" && cssColorRe.test(color)) {
|
||||
const { groups } = color.match(cssColorRe);
|
||||
const { fn, values } = groups;
|
||||
const realValues = values.split(/,\s*|\s*\/\s*|\s+/).map((v, i) => {
|
||||
if (v.endsWith("%") || i > 0 && i < 3 && [
|
||||
"hsl",
|
||||
"hsla",
|
||||
"hsv",
|
||||
"hsva"
|
||||
].includes(fn)) return parseFloat(v) / 100;
|
||||
else return parseFloat(v);
|
||||
});
|
||||
return mappers[fn](...realValues);
|
||||
} else if (typeof color === "string") {
|
||||
let hex = color.startsWith("#") ? color.slice(1) : color;
|
||||
if ([3, 4].includes(hex.length)) hex = hex.split("").map((char) => char + char).join("");
|
||||
else if (![6, 8].includes(hex.length)) consoleWarn(`'${color}' is not a valid hex(a) color`);
|
||||
const int = parseInt(hex, 16);
|
||||
if (isNaN(int) || int < 0 || int > 4294967295) consoleWarn(`'${color}' is not a valid hex(a) color`);
|
||||
return HexToRGB(hex);
|
||||
} else if (typeof color === "object") {
|
||||
if (has(color, [
|
||||
"r",
|
||||
"g",
|
||||
"b"
|
||||
])) return color;
|
||||
else if (has(color, [
|
||||
"h",
|
||||
"s",
|
||||
"l"
|
||||
])) return HSVtoRGB(HSLtoHSV(color));
|
||||
else if (has(color, [
|
||||
"h",
|
||||
"s",
|
||||
"v"
|
||||
])) return HSVtoRGB(color);
|
||||
}
|
||||
throw new TypeError(`Invalid color: ${color == null ? color : String(color) || color.constructor.name}\nExpected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`);
|
||||
}
|
||||
/** Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV */
|
||||
function HSVtoRGB(hsva) {
|
||||
const { h, s, v, a } = hsva;
|
||||
const f = (n) => {
|
||||
const k = (n + h / 60) % 6;
|
||||
return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);
|
||||
};
|
||||
const rgb = [
|
||||
f(5),
|
||||
f(3),
|
||||
f(1)
|
||||
].map((v) => Math.round(v * 255));
|
||||
return {
|
||||
r: rgb[0],
|
||||
g: rgb[1],
|
||||
b: rgb[2],
|
||||
a
|
||||
};
|
||||
}
|
||||
function HSLtoRGB(hsla) {
|
||||
return HSVtoRGB(HSLtoHSV(hsla));
|
||||
}
|
||||
function HSLtoHSV(hsl) {
|
||||
const { h, s, l, a } = hsl;
|
||||
const v = l + s * Math.min(l, 1 - l);
|
||||
return {
|
||||
h,
|
||||
s: v === 0 ? 0 : 2 - 2 * l / v,
|
||||
v,
|
||||
a
|
||||
};
|
||||
}
|
||||
function toHex(v) {
|
||||
const h = Math.round(v).toString(16);
|
||||
return ("00".substr(0, 2 - h.length) + h).toUpperCase();
|
||||
}
|
||||
function RGBtoHex({ r, g, b, a }) {
|
||||
return `#${[
|
||||
toHex(r),
|
||||
toHex(g),
|
||||
toHex(b),
|
||||
a !== void 0 ? toHex(Math.round(a * 255)) : ""
|
||||
].join("")}`;
|
||||
}
|
||||
function HexToRGB(hex) {
|
||||
hex = parseHex(hex);
|
||||
let [r, g, b, a] = chunk(hex, 2).map((c) => parseInt(c, 16));
|
||||
a = a === void 0 ? a : a / 255;
|
||||
return {
|
||||
r,
|
||||
g,
|
||||
b,
|
||||
a
|
||||
};
|
||||
}
|
||||
function parseHex(hex) {
|
||||
if (hex.startsWith("#")) hex = hex.slice(1);
|
||||
hex = hex.replace(/([^0-9a-f])/gi, "F");
|
||||
if (hex.length === 3 || hex.length === 4) hex = hex.split("").map((x) => x + x).join("");
|
||||
if (hex.length !== 6) hex = padEnd(padEnd(hex, 6), 8, "F");
|
||||
return hex;
|
||||
}
|
||||
function lighten(value, amount) {
|
||||
const lab = fromXYZ$1(toXYZ(value));
|
||||
lab[0] = lab[0] + amount * 10;
|
||||
return fromXYZ(toXYZ$1(lab));
|
||||
}
|
||||
function darken(value, amount) {
|
||||
const lab = fromXYZ$1(toXYZ(value));
|
||||
lab[0] = lab[0] - amount * 10;
|
||||
return fromXYZ(toXYZ$1(lab));
|
||||
}
|
||||
/**
|
||||
* Calculate the relative luminance of a given color
|
||||
* @see https://www.w3.org/TR/WCAG20/#relativeluminancedef
|
||||
*/
|
||||
function getLuma(color) {
|
||||
return toXYZ(parseColor(color))[1];
|
||||
}
|
||||
function hasLightForeground(color) {
|
||||
const blackContrast = Math.abs(APCAcontrast(parseColor(0), parseColor(color)));
|
||||
return Math.abs(APCAcontrast(parseColor(16777215), parseColor(color))) > Math.min(blackContrast, 50);
|
||||
}
|
||||
//#endregion
|
||||
export { isCssColor as a, parseColor as c, hasLightForeground as i, darken as n, isParsableColor as o, getLuma as r, lighten as s, RGBtoHex as t };
|
||||
|
||||
//# sourceMappingURL=colorUtils-BE28T62U.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+21
@@ -0,0 +1,21 @@
|
||||
import { l as propsFactory } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/composables/component.js
|
||||
var makeComponentProps = propsFactory({
|
||||
class: [
|
||||
String,
|
||||
Array,
|
||||
Object
|
||||
],
|
||||
style: {
|
||||
type: [
|
||||
String,
|
||||
Array,
|
||||
Object
|
||||
],
|
||||
default: null
|
||||
}
|
||||
}, "component");
|
||||
//#endregion
|
||||
export { makeComponentProps as t };
|
||||
|
||||
//# sourceMappingURL=component-DdiwBe6i.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"component-DdiwBe6i.js","names":[],"sources":["../../vuetify/lib/composables/component.js"],"sourcesContent":["// Utilities\nimport { propsFactory } from \"../util/propsFactory.js\"; // Types\n// TODO: import from vue once upstream PR is merged\n// https://github.com/vuejs/core/pull/14441\n// Composables\nexport const makeComponentProps = propsFactory({\n class: [String, Array, Object],\n style: {\n type: [String, Array, Object],\n default: null\n }\n}, 'component');\n//# sourceMappingURL=component.js.map"],"mappings":";;AAKA,IAAa,qBAAqB,aAAa;CAC7C,OAAO;EAAC;EAAQ;EAAO;EAAO;CAC9B,OAAO;EACL,MAAM;GAAC;GAAQ;GAAO;GAAO;EAC7B,SAAS;EACV;CACF,EAAE,YAAY"}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
import { ir as capitalize, pt as h, rr as camelize } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { n as genericComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as makeComponentProps } from "./component-DdiwBe6i.js";
|
||||
//#region node_modules/vuetify/lib/util/createSimpleFunctional.js
|
||||
function createSimpleFunctional(klass, tag = "div", name) {
|
||||
return genericComponent()({
|
||||
name: name ?? capitalize(camelize(klass.replace(/__/g, "-"))),
|
||||
props: {
|
||||
tag: {
|
||||
type: String,
|
||||
default: tag
|
||||
},
|
||||
...makeComponentProps()
|
||||
},
|
||||
setup(props, { slots }) {
|
||||
return () => {
|
||||
return h(props.tag, {
|
||||
class: [klass, props.class],
|
||||
style: props.style
|
||||
}, slots.default?.());
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
//#endregion
|
||||
export { createSimpleFunctional as t };
|
||||
|
||||
//# sourceMappingURL=createSimpleFunctional-Cqw8cOWQ.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"createSimpleFunctional-Cqw8cOWQ.js","names":[],"sources":["../../vuetify/lib/util/createSimpleFunctional.js"],"sourcesContent":["// Composables\nimport { makeComponentProps } from \"../composables/component.js\"; // Utilities\nimport { camelize, capitalize, h } from 'vue';\nimport { genericComponent } from \"./defineComponent.js\";\nexport function createSimpleFunctional(klass, tag = 'div', name) {\n return genericComponent()({\n name: name ?? capitalize(camelize(klass.replace(/__/g, '-'))),\n props: {\n tag: {\n type: String,\n default: tag\n },\n ...makeComponentProps()\n },\n setup(props, {\n slots\n }) {\n return () => {\n return h(props.tag, {\n class: [klass, props.class],\n style: props.style\n }, slots.default?.());\n };\n }\n });\n}\n//# sourceMappingURL=createSimpleFunctional.js.map"],"mappings":";;;;AAIA,SAAgB,uBAAuB,OAAO,MAAM,OAAO,MAAM;AAC/D,QAAO,kBAAkB,CAAC;EACxB,MAAM,QAAQ,WAAW,SAAS,MAAM,QAAQ,OAAO,IAAI,CAAC,CAAC;EAC7D,OAAO;GACL,KAAK;IACH,MAAM;IACN,SAAS;IACV;GACD,GAAG,oBAAoB;GACxB;EACD,MAAM,OAAO,EACX,SACC;AACD,gBAAa;AACX,WAAO,EAAE,MAAM,KAAK;KAClB,OAAO,CAAC,OAAO,MAAM,MAAM;KAC3B,OAAO,MAAM;KACd,EAAE,MAAM,WAAW,CAAC;;;EAG1B,CAAC"}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
import { R as isPrimitive } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/util/deepEqual.js
|
||||
function updateRecursionCache(a, b, cache, result) {
|
||||
if (!cache || isPrimitive(a) || isPrimitive(b)) return;
|
||||
const visitedObject = cache.get(a);
|
||||
if (visitedObject) visitedObject.set(b, result);
|
||||
else {
|
||||
const newCacheItem = /* @__PURE__ */ new WeakMap();
|
||||
newCacheItem.set(b, result);
|
||||
cache.set(a, newCacheItem);
|
||||
}
|
||||
}
|
||||
function findCachedComparison(a, b, cache) {
|
||||
if (!cache || isPrimitive(a) || isPrimitive(b)) return null;
|
||||
const r1 = cache.get(a)?.get(b);
|
||||
if (typeof r1 === "boolean") return r1;
|
||||
const r2 = cache.get(b)?.get(a);
|
||||
if (typeof r2 === "boolean") return r2;
|
||||
return null;
|
||||
}
|
||||
function deepEqual(a, b, recursionCache = /* @__PURE__ */ new WeakMap()) {
|
||||
if (a === b) return true;
|
||||
if (a instanceof Date && b instanceof Date && a.getTime() !== b.getTime()) return false;
|
||||
if (a !== Object(a) || b !== Object(b)) return false;
|
||||
const props = Object.keys(a);
|
||||
if (props.length !== Object.keys(b).length) return false;
|
||||
const cachedComparisonResult = findCachedComparison(a, b, recursionCache);
|
||||
if (cachedComparisonResult) return cachedComparisonResult;
|
||||
updateRecursionCache(a, b, recursionCache, true);
|
||||
return props.every((p) => deepEqual(a[p], b[p], recursionCache));
|
||||
}
|
||||
//#endregion
|
||||
export { deepEqual as t };
|
||||
|
||||
//# sourceMappingURL=deepEqual-DDqmGqyF.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"deepEqual-DDqmGqyF.js","names":[],"sources":["../../vuetify/lib/util/deepEqual.js"],"sourcesContent":["import { isPrimitive } from \"./helpers.js\";\nfunction updateRecursionCache(a, b, cache, result) {\n if (!cache || isPrimitive(a) || isPrimitive(b)) return;\n const visitedObject = cache.get(a);\n if (visitedObject) {\n visitedObject.set(b, result);\n } else {\n const newCacheItem = new WeakMap();\n newCacheItem.set(b, result);\n cache.set(a, newCacheItem);\n }\n}\nfunction findCachedComparison(a, b, cache) {\n if (!cache || isPrimitive(a) || isPrimitive(b)) return null;\n const r1 = cache.get(a)?.get(b);\n if (typeof r1 === 'boolean') return r1;\n const r2 = cache.get(b)?.get(a);\n if (typeof r2 === 'boolean') return r2;\n return null;\n}\nexport function deepEqual(a, b, recursionCache = new WeakMap()) {\n if (a === b) return true;\n if (a instanceof Date && b instanceof Date && a.getTime() !== b.getTime()) {\n // If the values are Date, compare them as timestamps\n return false;\n }\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false;\n }\n const props = Object.keys(a);\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false;\n }\n const cachedComparisonResult = findCachedComparison(a, b, recursionCache);\n if (cachedComparisonResult) {\n return cachedComparisonResult;\n }\n updateRecursionCache(a, b, recursionCache, true);\n return props.every(p => deepEqual(a[p], b[p], recursionCache));\n}\n//# sourceMappingURL=deepEqual.js.map"],"mappings":";;AACA,SAAS,qBAAqB,GAAG,GAAG,OAAO,QAAQ;AACjD,KAAI,CAAC,SAAS,YAAY,EAAE,IAAI,YAAY,EAAE,CAAE;CAChD,MAAM,gBAAgB,MAAM,IAAI,EAAE;AAClC,KAAI,cACF,eAAc,IAAI,GAAG,OAAO;MACvB;EACL,MAAM,+BAAe,IAAI,SAAS;AAClC,eAAa,IAAI,GAAG,OAAO;AAC3B,QAAM,IAAI,GAAG,aAAa;;;AAG9B,SAAS,qBAAqB,GAAG,GAAG,OAAO;AACzC,KAAI,CAAC,SAAS,YAAY,EAAE,IAAI,YAAY,EAAE,CAAE,QAAO;CACvD,MAAM,KAAK,MAAM,IAAI,EAAE,EAAE,IAAI,EAAE;AAC/B,KAAI,OAAO,OAAO,UAAW,QAAO;CACpC,MAAM,KAAK,MAAM,IAAI,EAAE,EAAE,IAAI,EAAE;AAC/B,KAAI,OAAO,OAAO,UAAW,QAAO;AACpC,QAAO;;AAET,SAAgB,UAAU,GAAG,GAAG,iCAAiB,IAAI,SAAS,EAAE;AAC9D,KAAI,MAAM,EAAG,QAAO;AACpB,KAAI,aAAa,QAAQ,aAAa,QAAQ,EAAE,SAAS,KAAK,EAAE,SAAS,CAEvE,QAAO;AAET,KAAI,MAAM,OAAO,EAAE,IAAI,MAAM,OAAO,EAAE,CAEpC,QAAO;CAET,MAAM,QAAQ,OAAO,KAAK,EAAE;AAC5B,KAAI,MAAM,WAAW,OAAO,KAAK,EAAE,CAAC,OAElC,QAAO;CAET,MAAM,yBAAyB,qBAAqB,GAAG,GAAG,eAAe;AACzE,KAAI,uBACF,QAAO;AAET,sBAAqB,GAAG,GAAG,gBAAgB,KAAK;AAChD,QAAO,MAAM,OAAM,MAAK,UAAU,EAAE,IAAI,EAAE,IAAI,eAAe,CAAC"}
|
||||
+630
@@ -0,0 +1,630 @@
|
||||
import { Kn as ref, M as Fragment, O as Comment, Qn as toRef, U as computed, Ut as provide, Wn as reactive, Yn as shallowRef, _n as watchEffect, hn as warn, ir as capitalize, nr as unref, nt as defineComponent$1, rr as camelize, ut as getCurrentInstance$1, wt as isVNode, xt as inject } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
//#region node_modules/vuetify/lib/util/console.js
|
||||
function consoleWarn(message) {
|
||||
warn(`Vuetify: ${message}`);
|
||||
}
|
||||
function consoleError(message) {
|
||||
warn(`Vuetify error: ${message}`);
|
||||
}
|
||||
function deprecate(original, replacement) {
|
||||
replacement = Array.isArray(replacement) ? replacement.slice(0, -1).map((s) => `'${s}'`).join(", ") + ` or '${replacement.at(-1)}'` : `'${replacement}'`;
|
||||
warn(`[Vuetify UPGRADE] '${original}' is deprecated, use ${replacement} instead.`);
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/util/globals.js
|
||||
var IN_BROWSER = typeof window !== "undefined";
|
||||
var SUPPORTS_INTERSECTION = IN_BROWSER && "IntersectionObserver" in window;
|
||||
var SUPPORTS_TOUCH = IN_BROWSER && ("ontouchstart" in window || window.navigator.maxTouchPoints > 0);
|
||||
IN_BROWSER && "EyeDropper" in window;
|
||||
var SUPPORTS_MATCH_MEDIA = IN_BROWSER && "matchMedia" in window && typeof window.matchMedia === "function";
|
||||
var PREFERS_REDUCED_MOTION = () => SUPPORTS_MATCH_MEDIA && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/util/helpers.js
|
||||
function getNestedValue(obj, path, fallback) {
|
||||
const last = path.length - 1;
|
||||
if (last < 0) return obj === void 0 ? fallback : obj;
|
||||
for (let i = 0; i < last; i++) {
|
||||
if (obj == null) return fallback;
|
||||
obj = obj[path[i]];
|
||||
}
|
||||
if (obj == null) return fallback;
|
||||
return obj[path[last]] === void 0 ? fallback : obj[path[last]];
|
||||
}
|
||||
function getObjectValueByPath(obj, path, fallback) {
|
||||
if (obj == null || !path || typeof path !== "string") return fallback;
|
||||
if (obj[path] !== void 0) return obj[path];
|
||||
path = path.replace(/\[(\w+)\]/g, ".$1");
|
||||
path = path.replace(/^\./, "");
|
||||
return getNestedValue(obj, path.split("."), fallback);
|
||||
}
|
||||
function getPropertyFromItem(item, property, fallback) {
|
||||
if (property === true) return item === void 0 ? fallback : item;
|
||||
if (property == null || typeof property === "boolean") return fallback;
|
||||
if (item !== Object(item)) {
|
||||
if (typeof property !== "function") return fallback;
|
||||
const value = property(item, fallback);
|
||||
return typeof value === "undefined" ? fallback : value;
|
||||
}
|
||||
if (typeof property === "string") return getObjectValueByPath(item, property, fallback);
|
||||
if (Array.isArray(property)) return getNestedValue(item, property, fallback);
|
||||
if (typeof property !== "function") return fallback;
|
||||
const value = property(item, fallback);
|
||||
return typeof value === "undefined" ? fallback : value;
|
||||
}
|
||||
function createRange(length, start = 0) {
|
||||
return Array.from({ length }, (v, k) => start + k);
|
||||
}
|
||||
function convertToUnit(str, unit = "px") {
|
||||
if (str == null || str === "") return;
|
||||
const num = Number(str);
|
||||
if (isNaN(num)) return String(str);
|
||||
else if (!isFinite(num)) return;
|
||||
else return `${num}${unit}`;
|
||||
}
|
||||
function isObject(obj) {
|
||||
return obj !== null && typeof obj === "object" && !Array.isArray(obj);
|
||||
}
|
||||
function isPlainObject(obj) {
|
||||
let proto;
|
||||
return obj !== null && typeof obj === "object" && ((proto = Object.getPrototypeOf(obj)) === Object.prototype || proto === null);
|
||||
}
|
||||
function refElement(obj) {
|
||||
if (obj && "$el" in obj) {
|
||||
const el = obj.$el;
|
||||
if (el?.nodeType === Node.TEXT_NODE) return el.nextElementSibling;
|
||||
return el;
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
Object.freeze({
|
||||
enter: 13,
|
||||
tab: 9,
|
||||
delete: 46,
|
||||
esc: 27,
|
||||
space: 32,
|
||||
up: 38,
|
||||
down: 40,
|
||||
left: 37,
|
||||
right: 39,
|
||||
end: 35,
|
||||
home: 36,
|
||||
del: 46,
|
||||
backspace: 8,
|
||||
insert: 45,
|
||||
pageup: 33,
|
||||
pagedown: 34,
|
||||
shift: 16
|
||||
});
|
||||
Object.freeze({
|
||||
enter: "Enter",
|
||||
tab: "Tab",
|
||||
delete: "Delete",
|
||||
esc: "Escape",
|
||||
space: "Space",
|
||||
up: "ArrowUp",
|
||||
down: "ArrowDown",
|
||||
left: "ArrowLeft",
|
||||
right: "ArrowRight",
|
||||
end: "End",
|
||||
home: "Home",
|
||||
del: "Delete",
|
||||
backspace: "Backspace",
|
||||
insert: "Insert",
|
||||
pageup: "PageUp",
|
||||
pagedown: "PageDown",
|
||||
shift: "Shift"
|
||||
});
|
||||
function keys(o) {
|
||||
return Object.keys(o);
|
||||
}
|
||||
function has(obj, key) {
|
||||
return key.every((k) => obj.hasOwnProperty(k));
|
||||
}
|
||||
function pick(obj, paths) {
|
||||
const found = {};
|
||||
for (const key of paths) if (Object.prototype.hasOwnProperty.call(obj, key)) found[key] = obj[key];
|
||||
return found;
|
||||
}
|
||||
function pickWithRest(obj, paths, exclude) {
|
||||
const found = Object.create(null);
|
||||
const rest = Object.create(null);
|
||||
for (const key in obj) if (paths.some((path) => path instanceof RegExp ? path.test(key) : path === key) && !exclude?.some((path) => path === key)) found[key] = obj[key];
|
||||
else rest[key] = obj[key];
|
||||
return [found, rest];
|
||||
}
|
||||
function omit(obj, exclude) {
|
||||
const clone = { ...obj };
|
||||
exclude.forEach((prop) => delete clone[prop]);
|
||||
return clone;
|
||||
}
|
||||
var onRE = /^on[^a-z]/;
|
||||
var isOn = (key) => onRE.test(key);
|
||||
var bubblingEvents = [
|
||||
"onAfterscriptexecute",
|
||||
"onAnimationcancel",
|
||||
"onAnimationend",
|
||||
"onAnimationiteration",
|
||||
"onAnimationstart",
|
||||
"onAuxclick",
|
||||
"onBeforeinput",
|
||||
"onBeforescriptexecute",
|
||||
"onChange",
|
||||
"onClick",
|
||||
"onCompositionend",
|
||||
"onCompositionstart",
|
||||
"onCompositionupdate",
|
||||
"onContextmenu",
|
||||
"onCopy",
|
||||
"onCut",
|
||||
"onDblclick",
|
||||
"onFocusin",
|
||||
"onFocusout",
|
||||
"onFullscreenchange",
|
||||
"onFullscreenerror",
|
||||
"onGesturechange",
|
||||
"onGestureend",
|
||||
"onGesturestart",
|
||||
"onGotpointercapture",
|
||||
"onInput",
|
||||
"onKeydown",
|
||||
"onKeypress",
|
||||
"onKeyup",
|
||||
"onLostpointercapture",
|
||||
"onMousedown",
|
||||
"onMousemove",
|
||||
"onMouseout",
|
||||
"onMouseover",
|
||||
"onMouseup",
|
||||
"onMousewheel",
|
||||
"onPaste",
|
||||
"onPointercancel",
|
||||
"onPointerdown",
|
||||
"onPointerenter",
|
||||
"onPointerleave",
|
||||
"onPointermove",
|
||||
"onPointerout",
|
||||
"onPointerover",
|
||||
"onPointerup",
|
||||
"onReset",
|
||||
"onSelect",
|
||||
"onSubmit",
|
||||
"onTouchcancel",
|
||||
"onTouchend",
|
||||
"onTouchmove",
|
||||
"onTouchstart",
|
||||
"onTransitioncancel",
|
||||
"onTransitionend",
|
||||
"onTransitionrun",
|
||||
"onTransitionstart",
|
||||
"onWheel"
|
||||
];
|
||||
/**
|
||||
* Filter attributes that should be applied to
|
||||
* the root element of an input component. Remaining
|
||||
* attributes should be passed to the <input> element inside.
|
||||
*/
|
||||
function filterInputAttrs(attrs) {
|
||||
const [events, props] = pickWithRest(attrs, [onRE]);
|
||||
const inputEvents = omit(events, bubblingEvents);
|
||||
const [rootAttrs, inputAttrs] = pickWithRest(props, [
|
||||
"class",
|
||||
"style",
|
||||
"id",
|
||||
"inert",
|
||||
/^data-/
|
||||
]);
|
||||
Object.assign(rootAttrs, events);
|
||||
Object.assign(inputAttrs, inputEvents);
|
||||
return [rootAttrs, inputAttrs];
|
||||
}
|
||||
function wrapInArray(v) {
|
||||
return v == null ? [] : Array.isArray(v) ? v : [v];
|
||||
}
|
||||
function debounce(fn, delay) {
|
||||
let timeoutId = 0;
|
||||
const wrap = (...args) => {
|
||||
clearTimeout(timeoutId);
|
||||
timeoutId = setTimeout(() => fn(...args), unref(delay));
|
||||
};
|
||||
wrap.clear = () => {
|
||||
clearTimeout(timeoutId);
|
||||
};
|
||||
wrap.immediate = fn;
|
||||
return wrap;
|
||||
}
|
||||
function clamp(value, min = 0, max = 1) {
|
||||
return Math.max(min, Math.min(max, value));
|
||||
}
|
||||
function padEnd(str, length, char = "0") {
|
||||
return str + char.repeat(Math.max(0, length - str.length));
|
||||
}
|
||||
function padStart(str, length, char = "0") {
|
||||
return char.repeat(Math.max(0, length - str.length)) + str;
|
||||
}
|
||||
function chunk(str, size = 1) {
|
||||
const chunked = [];
|
||||
let index = 0;
|
||||
while (index < str.length) {
|
||||
chunked.push(str.substr(index, size));
|
||||
index += size;
|
||||
}
|
||||
return chunked;
|
||||
}
|
||||
function mergeDeep(source = {}, target = {}, arrayFn, targetCondition) {
|
||||
const out = {};
|
||||
for (const key in source) out[key] = source[key];
|
||||
for (const key in target) {
|
||||
const targetProperty = target[key];
|
||||
if (targetCondition && !targetCondition(key, targetProperty)) continue;
|
||||
const sourceProperty = source[key];
|
||||
if (isPlainObject(sourceProperty) && isPlainObject(targetProperty)) {
|
||||
out[key] = mergeDeep(sourceProperty, targetProperty, arrayFn, targetCondition);
|
||||
continue;
|
||||
}
|
||||
if (arrayFn && Array.isArray(sourceProperty) && Array.isArray(targetProperty)) {
|
||||
out[key] = arrayFn(sourceProperty, targetProperty);
|
||||
continue;
|
||||
}
|
||||
out[key] = targetProperty;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
function flattenFragments(nodes) {
|
||||
return nodes.map((node) => {
|
||||
if (node.type === Fragment) return flattenFragments(node.children);
|
||||
else return node;
|
||||
}).flat();
|
||||
}
|
||||
function toKebabCase(str = "") {
|
||||
if (toKebabCase.cache.has(str)) return toKebabCase.cache.get(str);
|
||||
const kebab = str.replace(/[^a-z]/gi, "-").replace(/\B([A-Z])/g, "-$1").toLowerCase();
|
||||
toKebabCase.cache.set(str, kebab);
|
||||
return kebab;
|
||||
}
|
||||
toKebabCase.cache = /* @__PURE__ */ new Map();
|
||||
function findChildrenWithProvide(key, vnode) {
|
||||
if (!vnode || typeof vnode !== "object") return [];
|
||||
if (Array.isArray(vnode)) return vnode.map((child) => findChildrenWithProvide(key, child)).flat(1);
|
||||
else if (vnode.suspense) return findChildrenWithProvide(key, vnode.ssContent);
|
||||
else if (Array.isArray(vnode.children)) return vnode.children.map((child) => findChildrenWithProvide(key, child)).flat(1);
|
||||
else if (vnode.component) {
|
||||
if (Object.getOwnPropertyDescriptor(vnode.component.provides, key)) return [vnode.component];
|
||||
else if (vnode.component.subTree) return findChildrenWithProvide(key, vnode.component.subTree).flat(1);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
var CircularBuffer = class {
|
||||
#arr = [];
|
||||
#pointer = 0;
|
||||
constructor(size) {
|
||||
this.size = size;
|
||||
}
|
||||
get isFull() {
|
||||
return this.#arr.length === this.size;
|
||||
}
|
||||
push(val) {
|
||||
this.#arr[this.#pointer] = val;
|
||||
this.#pointer = (this.#pointer + 1) % this.size;
|
||||
}
|
||||
values() {
|
||||
return this.#arr.slice(this.#pointer).concat(this.#arr.slice(0, this.#pointer));
|
||||
}
|
||||
clear() {
|
||||
this.#arr.length = 0;
|
||||
this.#pointer = 0;
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Convert a computed ref to a record of refs.
|
||||
* The getter function must always return an object with the same keys.
|
||||
*/
|
||||
function destructComputed(getter) {
|
||||
const refs = reactive({});
|
||||
watchEffect(() => {
|
||||
const base = getter();
|
||||
for (const key in base) refs[key] = base[key];
|
||||
}, { flush: "sync" });
|
||||
const obj = {};
|
||||
for (const key in refs) obj[key] = toRef(() => refs[key]);
|
||||
return obj;
|
||||
}
|
||||
/** Array.includes but value can be any type */
|
||||
function includes(arr, val) {
|
||||
return arr.includes(val);
|
||||
}
|
||||
function eventName(propName) {
|
||||
return propName[2].toLowerCase() + propName.slice(3);
|
||||
}
|
||||
var EventProp = () => [Function, Array];
|
||||
function hasEvent(props, name) {
|
||||
name = "on" + capitalize(name);
|
||||
return !!(props[name] || props[`${name}Once`] || props[`${name}Capture`] || props[`${name}OnceCapture`] || props[`${name}CaptureOnce`]);
|
||||
}
|
||||
function callEvent(handler, ...args) {
|
||||
if (Array.isArray(handler)) for (const h of handler) h(...args);
|
||||
else if (typeof handler === "function") handler(...args);
|
||||
}
|
||||
function focusableChildren(el, filterByTabIndex = true) {
|
||||
const targets = [
|
||||
"button",
|
||||
"[href]",
|
||||
"input:not([type=\"hidden\"])",
|
||||
"select",
|
||||
"textarea",
|
||||
"details:not(:has(> summary))",
|
||||
"details > summary",
|
||||
"[tabindex]",
|
||||
"[contenteditable]:not([contenteditable=\"false\"])",
|
||||
"audio[controls]",
|
||||
"video[controls]"
|
||||
].map((s) => `${s}${filterByTabIndex ? ":not([tabindex=\"-1\"])" : ""}:not([disabled], [inert])`).join(", ");
|
||||
let elements;
|
||||
try {
|
||||
elements = [...el.querySelectorAll(targets)];
|
||||
} catch (err) {
|
||||
consoleError(String(err));
|
||||
return [];
|
||||
}
|
||||
return elements.filter((x) => !x.closest("[inert]")).filter((x) => !!x.offsetParent || x.getClientRects().length > 0).filter((x) => !x.parentElement?.closest("details:not([open])") || x.tagName === "SUMMARY" && x.parentElement?.tagName === "DETAILS");
|
||||
}
|
||||
function getNextElement(elements, location, condition) {
|
||||
let _el;
|
||||
let idx = elements.indexOf(document.activeElement);
|
||||
const inc = location === "next" ? 1 : -1;
|
||||
do {
|
||||
idx += inc;
|
||||
_el = elements[idx];
|
||||
} while ((!_el || _el.offsetParent == null || !(condition?.(_el) ?? true)) && idx < elements.length && idx >= 0);
|
||||
return _el;
|
||||
}
|
||||
function focusChild(el, location) {
|
||||
const focusable = focusableChildren(el);
|
||||
if (location == null) {
|
||||
if (el === document.activeElement || !el.contains(document.activeElement)) focusable[0]?.focus();
|
||||
} else if (location === "first") focusable[0]?.focus();
|
||||
else if (location === "last") focusable.at(-1)?.focus();
|
||||
else if (typeof location === "number") focusable[location]?.focus();
|
||||
else {
|
||||
const _el = getNextElement(focusable, location);
|
||||
if (_el) _el.focus();
|
||||
else focusChild(el, location === "next" ? "first" : "last");
|
||||
}
|
||||
}
|
||||
/** Returns null if the selector is not supported or we can't check */
|
||||
function matchesSelector(el, selector) {
|
||||
if (!(IN_BROWSER && typeof CSS !== "undefined" && typeof CSS.supports !== "undefined" && CSS.supports(`selector(${selector})`))) return null;
|
||||
try {
|
||||
return !!el && el.matches(selector);
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
function ensureValidVNode(vnodes) {
|
||||
return vnodes.some((child) => {
|
||||
if (!isVNode(child)) return true;
|
||||
if (child.type === Comment) return false;
|
||||
return child.type !== Fragment || ensureValidVNode(child.children);
|
||||
}) ? vnodes : null;
|
||||
}
|
||||
function defer(timeout, cb) {
|
||||
if (!IN_BROWSER || timeout === 0) {
|
||||
cb();
|
||||
return () => {};
|
||||
}
|
||||
const timeoutId = window.setTimeout(cb, timeout);
|
||||
return () => window.clearTimeout(timeoutId);
|
||||
}
|
||||
function isClickInsideElement(event, targetDiv) {
|
||||
const mouseX = event.clientX;
|
||||
const mouseY = event.clientY;
|
||||
const divRect = targetDiv.getBoundingClientRect();
|
||||
const divLeft = divRect.left;
|
||||
const divTop = divRect.top;
|
||||
const divRight = divRect.right;
|
||||
const divBottom = divRect.bottom;
|
||||
return mouseX >= divLeft && mouseX <= divRight && mouseY >= divTop && mouseY <= divBottom;
|
||||
}
|
||||
function templateRef() {
|
||||
const el = shallowRef();
|
||||
const fn = (target) => {
|
||||
el.value = target;
|
||||
};
|
||||
Object.defineProperty(fn, "value", {
|
||||
enumerable: true,
|
||||
get: () => el.value,
|
||||
set: (val) => el.value = val
|
||||
});
|
||||
Object.defineProperty(fn, "el", {
|
||||
enumerable: true,
|
||||
get: () => refElement(el.value)
|
||||
});
|
||||
return fn;
|
||||
}
|
||||
function checkPrintable(e) {
|
||||
const isPrintableChar = e.key.length === 1;
|
||||
const noModifier = !e.ctrlKey && !e.metaKey && !e.altKey;
|
||||
return isPrintableChar && noModifier;
|
||||
}
|
||||
function isPrimitive(value) {
|
||||
return typeof value === "string" || typeof value === "number" || typeof value === "boolean" || typeof value === "bigint";
|
||||
}
|
||||
function camelizeProps(props) {
|
||||
const out = {};
|
||||
for (const prop in props) out[camelize(prop)] = props[prop];
|
||||
return out;
|
||||
}
|
||||
function onlyDefinedProps(props) {
|
||||
const booleanAttributes = ["checked", "disabled"];
|
||||
return Object.fromEntries(Object.entries(props).filter(([key, v]) => booleanAttributes.includes(key) ? !!v : v !== void 0));
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/util/propsFactory.js
|
||||
/**
|
||||
* Creates a factory function for props definitions.
|
||||
* This is used to define props in a composable then override
|
||||
* default values in an implementing component.
|
||||
*
|
||||
* @example Simplified signature
|
||||
* (props: Props) => (defaults?: Record<keyof props, any>) => Props
|
||||
*
|
||||
* @example Usage
|
||||
* const makeProps = propsFactory({
|
||||
* foo: String,
|
||||
* })
|
||||
*
|
||||
* defineComponent({
|
||||
* props: {
|
||||
* ...makeProps({
|
||||
* foo: 'a',
|
||||
* }),
|
||||
* },
|
||||
* setup (props) {
|
||||
* // would be "string | undefined", now "string" because a default has been provided
|
||||
* props.foo
|
||||
* },
|
||||
* }
|
||||
*/
|
||||
function propsFactory(props, source) {
|
||||
return (defaults) => {
|
||||
return Object.keys(props).reduce((obj, prop) => {
|
||||
const definition = typeof props[prop] === "object" && props[prop] != null && !Array.isArray(props[prop]) ? props[prop] : { type: props[prop] };
|
||||
if (defaults && prop in defaults) obj[prop] = {
|
||||
...definition,
|
||||
default: defaults[prop]
|
||||
};
|
||||
else obj[prop] = definition;
|
||||
if (source && !obj[prop].source) obj[prop].source = source;
|
||||
return obj;
|
||||
}, {});
|
||||
};
|
||||
}
|
||||
/**
|
||||
* Like `Partial<T>` but doesn't care what the value is
|
||||
*/
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/util/getCurrentInstance.js
|
||||
function getCurrentInstance(name, message) {
|
||||
const vm = getCurrentInstance$1();
|
||||
if (!vm) throw new Error(`[Vuetify] ${name} ${message || "must be called from inside a setup function"}`);
|
||||
return vm;
|
||||
}
|
||||
function getCurrentInstanceName(name = "composables") {
|
||||
const vm = getCurrentInstance(name).type;
|
||||
return toKebabCase(vm?.aliasName || vm?.name);
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/util/injectSelf.js
|
||||
function injectSelf(key, vm = getCurrentInstance("injectSelf")) {
|
||||
const { provides } = vm;
|
||||
if (provides && key in provides) return provides[key];
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/composables/defaults.js
|
||||
var DefaultsSymbol = Symbol.for("vuetify:defaults");
|
||||
function createDefaults(options) {
|
||||
return ref(options);
|
||||
}
|
||||
function injectDefaults() {
|
||||
const defaults = inject(DefaultsSymbol);
|
||||
if (!defaults) throw new Error("[Vuetify] Could not find defaults instance");
|
||||
return defaults;
|
||||
}
|
||||
function provideDefaults(defaults, options) {
|
||||
const injectedDefaults = injectDefaults();
|
||||
const providedDefaults = ref(defaults);
|
||||
const newDefaults = computed(() => {
|
||||
if (unref(options?.disabled)) return injectedDefaults.value;
|
||||
const scoped = unref(options?.scoped);
|
||||
const reset = unref(options?.reset);
|
||||
const root = unref(options?.root);
|
||||
if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value;
|
||||
let properties = mergeDeep(providedDefaults.value, { prev: injectedDefaults.value });
|
||||
if (scoped) return properties;
|
||||
if (reset || root) {
|
||||
const len = Number(reset || Infinity);
|
||||
for (let i = 0; i <= len; i++) {
|
||||
if (!properties || !("prev" in properties)) break;
|
||||
properties = properties.prev;
|
||||
}
|
||||
if (properties && typeof root === "string" && root in properties) properties = mergeDeep(mergeDeep(properties, { prev: properties }), properties[root]);
|
||||
return properties;
|
||||
}
|
||||
return properties.prev ? mergeDeep(properties.prev, properties, void 0, (_, v) => v !== void 0) : properties;
|
||||
});
|
||||
provide(DefaultsSymbol, newDefaults);
|
||||
return newDefaults;
|
||||
}
|
||||
function propIsDefined(vnode, prop) {
|
||||
return vnode.props && (typeof vnode.props[prop] !== "undefined" || typeof vnode.props[toKebabCase(prop)] !== "undefined");
|
||||
}
|
||||
function internalUseDefaults(props = {}, name, defaults = injectDefaults()) {
|
||||
const vm = getCurrentInstance("useDefaults");
|
||||
name = name ?? vm.type.name ?? vm.type.__name;
|
||||
if (!name) throw new Error("[Vuetify] Could not determine component name");
|
||||
const componentDefaults = computed(() => defaults.value?.[props._as ?? name]);
|
||||
const _props = new Proxy(props, { get(target, prop) {
|
||||
const propValue = Reflect.get(target, prop);
|
||||
if (prop === "class" || prop === "style") return [componentDefaults.value?.[prop], propValue].filter((v) => v != null);
|
||||
if (propIsDefined(vm.vnode, prop)) return propValue;
|
||||
const _componentDefault = componentDefaults.value?.[prop];
|
||||
if (_componentDefault !== void 0) return _componentDefault;
|
||||
const _globalDefault = defaults.value?.global?.[prop];
|
||||
if (_globalDefault !== void 0) return _globalDefault;
|
||||
return propValue;
|
||||
} });
|
||||
const _subcomponentDefaults = shallowRef();
|
||||
watchEffect(() => {
|
||||
if (componentDefaults.value) {
|
||||
const subComponents = Object.entries(componentDefaults.value).filter(([key]) => key.startsWith(key[0].toUpperCase()));
|
||||
_subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : void 0;
|
||||
} else _subcomponentDefaults.value = void 0;
|
||||
});
|
||||
function provideSubDefaults() {
|
||||
const injected = injectSelf(DefaultsSymbol, vm);
|
||||
provide(DefaultsSymbol, computed(() => {
|
||||
return _subcomponentDefaults.value ? mergeDeep(injected?.value ?? {}, _subcomponentDefaults.value) : injected?.value;
|
||||
}));
|
||||
}
|
||||
return {
|
||||
props: _props,
|
||||
provideSubDefaults
|
||||
};
|
||||
}
|
||||
function useDefaults(props = {}, name) {
|
||||
const { props: _props, provideSubDefaults } = internalUseDefaults(props, name);
|
||||
provideSubDefaults();
|
||||
return _props;
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/util/defineComponent.js
|
||||
function defineComponent(options) {
|
||||
options._setup = options._setup ?? options.setup;
|
||||
if (!options.name) {
|
||||
consoleWarn("The component is missing an explicit name, unable to generate default prop value");
|
||||
return options;
|
||||
}
|
||||
if (options._setup) {
|
||||
options.props = propsFactory(options.props ?? {}, options.name)();
|
||||
const propKeys = Object.keys(options.props).filter((key) => key !== "class" && key !== "style");
|
||||
options.filterProps = function filterProps(props) {
|
||||
return pick(props, propKeys);
|
||||
};
|
||||
options.props._as = String;
|
||||
options.setup = function setup(props, ctx) {
|
||||
const defaults = injectDefaults();
|
||||
if (!defaults.value) return options._setup(props, ctx);
|
||||
const { props: _props, provideSubDefaults } = internalUseDefaults(props, props._as ?? options.name, defaults);
|
||||
const setupBindings = options._setup(_props, ctx);
|
||||
provideSubDefaults();
|
||||
return setupBindings;
|
||||
};
|
||||
}
|
||||
return options;
|
||||
}
|
||||
function genericComponent(exposeDefaults = true) {
|
||||
return (options) => (exposeDefaults ? defineComponent : defineComponent$1)(options);
|
||||
}
|
||||
//#endregion
|
||||
export { PREFERS_REDUCED_MOTION as $, getObjectValueByPath as A, matchesSelector as B, eventName as C, focusChild as D, flattenFragments as E, isClickInsideElement as F, padStart as G, omit as H, isObject as I, refElement as J, pick as K, isOn as L, has as M, hasEvent as N, focusableChildren as O, includes as P, IN_BROWSER as Q, isPrimitive as R, ensureValidVNode as S, findChildrenWithProvide as T, onlyDefinedProps as U, mergeDeep as V, padEnd as W, toKebabCase as X, templateRef as Y, wrapInArray as Z, convertToUnit as _, provideDefaults as a, deprecate as at, defer as b, getCurrentInstanceName as c, EventProp as d, SUPPORTS_INTERSECTION as et, callEvent as f, clamp as g, chunk as h, createDefaults as i, consoleWarn as it, getPropertyFromItem as j, getNextElement as k, propsFactory as l, checkPrintable as m, genericComponent as n, SUPPORTS_TOUCH as nt, useDefaults as o, camelizeProps as p, pickWithRest as q, DefaultsSymbol as r, consoleError as rt, getCurrentInstance as s, defineComponent as t, SUPPORTS_MATCH_MEDIA as tt, CircularBuffer as u, createRange as v, filterInputAttrs as w, destructComputed as x, debounce as y, keys as z };
|
||||
|
||||
//# sourceMappingURL=defineComponent-DB6xIcDy.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+23
@@ -0,0 +1,23 @@
|
||||
import { Qn as toRef } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { c as getCurrentInstanceName, l as propsFactory } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/composables/density.js
|
||||
var allowedDensities = [
|
||||
null,
|
||||
"default",
|
||||
"comfortable",
|
||||
"compact"
|
||||
];
|
||||
var makeDensityProps = propsFactory({ density: {
|
||||
type: String,
|
||||
default: "default",
|
||||
validator: (v) => allowedDensities.includes(v)
|
||||
} }, "density");
|
||||
function useDensity(props, name = getCurrentInstanceName()) {
|
||||
return { densityClasses: toRef(() => {
|
||||
return `${name}--density-${props.density}`;
|
||||
}) };
|
||||
}
|
||||
//#endregion
|
||||
export { useDensity as n, makeDensityProps as t };
|
||||
|
||||
//# sourceMappingURL=density-CpKZ5PhP.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"density-CpKZ5PhP.js","names":[],"sources":["../../vuetify/lib/composables/density.js"],"sourcesContent":["// Utilities\nimport { toRef } from 'vue';\nimport { getCurrentInstanceName, propsFactory } from \"../util/index.js\"; // Types\nconst allowedDensities = [null, 'default', 'comfortable', 'compact'];\n\n// typeof allowedDensities[number] evaluates to any\n// when generating api types for whatever reason.\n\n// Composables\nexport const makeDensityProps = propsFactory({\n density: {\n type: String,\n default: 'default',\n validator: v => allowedDensities.includes(v)\n }\n}, 'density');\nexport function useDensity(props, name = getCurrentInstanceName()) {\n const densityClasses = toRef(() => {\n return `${name}--density-${props.density}`;\n });\n return {\n densityClasses\n };\n}\n//# sourceMappingURL=density.js.map"],"mappings":";;;AAGA,IAAM,mBAAmB;CAAC;CAAM;CAAW;CAAe;CAAU;AAMpE,IAAa,mBAAmB,aAAa,EAC3C,SAAS;CACP,MAAM;CACN,SAAS;CACT,YAAW,MAAK,iBAAiB,SAAS,EAAE;CAC7C,EACF,EAAE,UAAU;AACb,SAAgB,WAAW,OAAO,OAAO,wBAAwB,EAAE;AAIjE,QAAO,EACL,gBAJqB,YAAY;AACjC,SAAO,GAAG,KAAK,YAAY,MAAM;GAGnB,EACf"}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
import { U as computed } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { _ as convertToUnit, l as propsFactory } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/composables/dimensions.js
|
||||
var makeDimensionProps = propsFactory({
|
||||
height: [Number, String],
|
||||
maxHeight: [Number, String],
|
||||
maxWidth: [Number, String],
|
||||
minHeight: [Number, String],
|
||||
minWidth: [Number, String],
|
||||
width: [Number, String]
|
||||
}, "dimension");
|
||||
function useDimension(props) {
|
||||
return { dimensionStyles: computed(() => {
|
||||
const styles = {};
|
||||
const height = convertToUnit(props.height);
|
||||
const maxHeight = convertToUnit(props.maxHeight);
|
||||
const maxWidth = convertToUnit(props.maxWidth);
|
||||
const minHeight = convertToUnit(props.minHeight);
|
||||
const minWidth = convertToUnit(props.minWidth);
|
||||
const width = convertToUnit(props.width);
|
||||
if (height != null) styles.height = height;
|
||||
if (maxHeight != null) styles.maxHeight = maxHeight;
|
||||
if (maxWidth != null) styles.maxWidth = maxWidth;
|
||||
if (minHeight != null) styles.minHeight = minHeight;
|
||||
if (minWidth != null) styles.minWidth = minWidth;
|
||||
if (width != null) styles.width = width;
|
||||
return styles;
|
||||
}) };
|
||||
}
|
||||
//#endregion
|
||||
export { useDimension as n, makeDimensionProps as t };
|
||||
|
||||
//# sourceMappingURL=dimensions-BDdmuRdK.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"dimensions-BDdmuRdK.js","names":[],"sources":["../../vuetify/lib/composables/dimensions.js"],"sourcesContent":["// Utilities\nimport { computed } from 'vue';\nimport { convertToUnit, propsFactory } from \"../util/index.js\"; // Types\n// Composables\nexport const makeDimensionProps = propsFactory({\n height: [Number, String],\n maxHeight: [Number, String],\n maxWidth: [Number, String],\n minHeight: [Number, String],\n minWidth: [Number, String],\n width: [Number, String]\n}, 'dimension');\nexport function useDimension(props) {\n const dimensionStyles = computed(() => {\n const styles = {};\n const height = convertToUnit(props.height);\n const maxHeight = convertToUnit(props.maxHeight);\n const maxWidth = convertToUnit(props.maxWidth);\n const minHeight = convertToUnit(props.minHeight);\n const minWidth = convertToUnit(props.minWidth);\n const width = convertToUnit(props.width);\n if (height != null) styles.height = height;\n if (maxHeight != null) styles.maxHeight = maxHeight;\n if (maxWidth != null) styles.maxWidth = maxWidth;\n if (minHeight != null) styles.minHeight = minHeight;\n if (minWidth != null) styles.minWidth = minWidth;\n if (width != null) styles.width = width;\n return styles;\n });\n return {\n dimensionStyles\n };\n}\n//# sourceMappingURL=dimensions.js.map"],"mappings":";;;AAIA,IAAa,qBAAqB,aAAa;CAC7C,QAAQ,CAAC,QAAQ,OAAO;CACxB,WAAW,CAAC,QAAQ,OAAO;CAC3B,UAAU,CAAC,QAAQ,OAAO;CAC1B,WAAW,CAAC,QAAQ,OAAO;CAC3B,UAAU,CAAC,QAAQ,OAAO;CAC1B,OAAO,CAAC,QAAQ,OAAO;CACxB,EAAE,YAAY;AACf,SAAgB,aAAa,OAAO;AAiBlC,QAAO,EACL,iBAjBsB,eAAe;EACrC,MAAM,SAAS,EAAE;EACjB,MAAM,SAAS,cAAc,MAAM,OAAO;EAC1C,MAAM,YAAY,cAAc,MAAM,UAAU;EAChD,MAAM,WAAW,cAAc,MAAM,SAAS;EAC9C,MAAM,YAAY,cAAc,MAAM,UAAU;EAChD,MAAM,WAAW,cAAc,MAAM,SAAS;EAC9C,MAAM,QAAQ,cAAc,MAAM,MAAM;AACxC,MAAI,UAAU,KAAM,QAAO,SAAS;AACpC,MAAI,aAAa,KAAM,QAAO,YAAY;AAC1C,MAAI,YAAY,KAAM,QAAO,WAAW;AACxC,MAAI,aAAa,KAAM,QAAO,YAAY;AAC1C,MAAI,YAAY,KAAM,QAAO,WAAW;AACxC,MAAI,SAAS,KAAM,QAAO,QAAQ;AAClC,SAAO;GAGQ,EAChB"}
|
||||
+141
@@ -0,0 +1,141 @@
|
||||
import { $n as toRefs, Qn as toRef, U as computed, Vn as onScopeDispose, Wn as reactive, Yn as shallowRef, _n as watchEffect, xt as inject } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { Q as IN_BROWSER, V as mergeDeep, c as getCurrentInstanceName, l as propsFactory, nt as SUPPORTS_TOUCH } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/composables/display.js
|
||||
var breakpoints = [
|
||||
"sm",
|
||||
"md",
|
||||
"lg",
|
||||
"xl",
|
||||
"xxl"
|
||||
];
|
||||
var DisplaySymbol = Symbol.for("vuetify:display");
|
||||
var defaultDisplayOptions = {
|
||||
mobileBreakpoint: "lg",
|
||||
thresholds: {
|
||||
xs: 0,
|
||||
sm: 600,
|
||||
md: 840,
|
||||
lg: 1145,
|
||||
xl: 1545,
|
||||
xxl: 2138
|
||||
}
|
||||
};
|
||||
var parseDisplayOptions = (options = defaultDisplayOptions) => {
|
||||
return mergeDeep(defaultDisplayOptions, options);
|
||||
};
|
||||
function getClientWidth(ssr) {
|
||||
return IN_BROWSER && !ssr ? window.innerWidth : typeof ssr === "object" && ssr.clientWidth || 0;
|
||||
}
|
||||
function getClientHeight(ssr) {
|
||||
return IN_BROWSER && !ssr ? window.innerHeight : typeof ssr === "object" && ssr.clientHeight || 0;
|
||||
}
|
||||
function getPlatform(ssr) {
|
||||
const userAgent = IN_BROWSER && !ssr ? window.navigator.userAgent : "ssr";
|
||||
function match(regexp) {
|
||||
return Boolean(userAgent.match(regexp));
|
||||
}
|
||||
return {
|
||||
android: match(/android/i),
|
||||
ios: match(/iphone|ipad|ipod/i),
|
||||
cordova: match(/cordova/i),
|
||||
electron: match(/electron/i),
|
||||
chrome: match(/chrome/i),
|
||||
edge: match(/edge/i),
|
||||
firefox: match(/firefox/i),
|
||||
opera: match(/opera/i),
|
||||
win: match(/win/i),
|
||||
mac: match(/mac/i),
|
||||
linux: match(/linux/i),
|
||||
touch: SUPPORTS_TOUCH,
|
||||
ssr: userAgent === "ssr"
|
||||
};
|
||||
}
|
||||
function createDisplay(options, ssr) {
|
||||
const { thresholds, mobileBreakpoint } = parseDisplayOptions(options);
|
||||
const height = shallowRef(getClientHeight(ssr));
|
||||
const platform = shallowRef(getPlatform(ssr));
|
||||
const state = reactive({});
|
||||
const width = shallowRef(getClientWidth(ssr));
|
||||
function updateSize() {
|
||||
height.value = getClientHeight();
|
||||
width.value = getClientWidth();
|
||||
}
|
||||
function update() {
|
||||
updateSize();
|
||||
platform.value = getPlatform();
|
||||
}
|
||||
watchEffect(() => {
|
||||
const xs = width.value < thresholds.sm;
|
||||
const sm = width.value < thresholds.md && !xs;
|
||||
const md = width.value < thresholds.lg && !(sm || xs);
|
||||
const lg = width.value < thresholds.xl && !(md || sm || xs);
|
||||
const xl = width.value < thresholds.xxl && !(lg || md || sm || xs);
|
||||
const xxl = width.value >= thresholds.xxl;
|
||||
const name = xs ? "xs" : sm ? "sm" : md ? "md" : lg ? "lg" : xl ? "xl" : "xxl";
|
||||
const breakpointValue = typeof mobileBreakpoint === "number" ? mobileBreakpoint : thresholds[mobileBreakpoint];
|
||||
const mobile = width.value < breakpointValue;
|
||||
state.xs = xs;
|
||||
state.sm = sm;
|
||||
state.md = md;
|
||||
state.lg = lg;
|
||||
state.xl = xl;
|
||||
state.xxl = xxl;
|
||||
state.smAndUp = !xs;
|
||||
state.mdAndUp = !(xs || sm);
|
||||
state.lgAndUp = !(xs || sm || md);
|
||||
state.xlAndUp = !(xs || sm || md || lg);
|
||||
state.smAndDown = !(md || lg || xl || xxl);
|
||||
state.mdAndDown = !(lg || xl || xxl);
|
||||
state.lgAndDown = !(xl || xxl);
|
||||
state.xlAndDown = !xxl;
|
||||
state.name = name;
|
||||
state.height = height.value;
|
||||
state.width = width.value;
|
||||
state.mobile = mobile;
|
||||
state.mobileBreakpoint = mobileBreakpoint;
|
||||
state.platform = platform.value;
|
||||
state.thresholds = thresholds;
|
||||
});
|
||||
if (IN_BROWSER) {
|
||||
window.addEventListener("resize", updateSize, { passive: true });
|
||||
onScopeDispose(() => {
|
||||
window.removeEventListener("resize", updateSize);
|
||||
}, true);
|
||||
}
|
||||
return {
|
||||
...toRefs(state),
|
||||
update,
|
||||
ssr: !!ssr
|
||||
};
|
||||
}
|
||||
var makeDisplayProps = propsFactory({
|
||||
mobile: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
mobileBreakpoint: [Number, String]
|
||||
}, "display");
|
||||
function useDisplay(props = { mobile: null }, name = getCurrentInstanceName()) {
|
||||
const display = inject(DisplaySymbol);
|
||||
if (!display) throw new Error("Could not find Vuetify display injection");
|
||||
const mobile = computed(() => {
|
||||
if (props.mobile) return true;
|
||||
else if (typeof props.mobileBreakpoint === "number") return display.width.value < props.mobileBreakpoint;
|
||||
else if (props.mobileBreakpoint) return display.width.value < display.thresholds.value[props.mobileBreakpoint];
|
||||
else if (props.mobile === null) return display.mobile.value;
|
||||
else return false;
|
||||
});
|
||||
const displayClasses = toRef(() => {
|
||||
if (!name) return {};
|
||||
return { [`${name}--mobile`]: mobile.value };
|
||||
});
|
||||
return {
|
||||
...display,
|
||||
displayClasses,
|
||||
mobile
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
export { useDisplay as a, makeDisplayProps as i, breakpoints as n, createDisplay as r, DisplaySymbol as t };
|
||||
|
||||
//# sourceMappingURL=display-DKaCj-_K.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+25
@@ -0,0 +1,25 @@
|
||||
import "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
//#region node_modules/vuetify/lib/util/easing.js
|
||||
var standardEasing = "cubic-bezier(0.4, 0, 0.2, 1)";
|
||||
var deceleratedEasing = "cubic-bezier(0.0, 0, 0.2, 1)";
|
||||
var acceleratedEasing = "cubic-bezier(0.4, 0, 1, 1)";
|
||||
var easingPatterns = {
|
||||
linear: (t) => t,
|
||||
easeInQuad: (t) => t ** 2,
|
||||
easeOutQuad: (t) => t * (2 - t),
|
||||
easeInOutQuad: (t) => t < .5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t,
|
||||
easeInCubic: (t) => t ** 3,
|
||||
easeOutCubic: (t) => --t ** 3 + 1,
|
||||
easeInOutCubic: (t) => t < .5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,
|
||||
easeInQuart: (t) => t ** 4,
|
||||
easeOutQuart: (t) => 1 - --t ** 4,
|
||||
easeInOutQuart: (t) => t < .5 ? 8 * t ** 4 : 1 - 8 * --t ** 4,
|
||||
easeInQuint: (t) => t ** 5,
|
||||
easeOutQuint: (t) => 1 + --t ** 5,
|
||||
easeInOutQuint: (t) => t < .5 ? 16 * t ** 5 : 1 + 16 * --t ** 5,
|
||||
instant: (t) => 1
|
||||
};
|
||||
//#endregion
|
||||
export { standardEasing as i, deceleratedEasing as n, easingPatterns as r, acceleratedEasing as t };
|
||||
|
||||
//# sourceMappingURL=easing-DfcvkbkS.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"easing-DfcvkbkS.js","names":[],"sources":["../../vuetify/lib/util/easing.js"],"sourcesContent":["// Utilities\nimport { computed, shallowRef, toValue, watch } from 'vue';\nimport { clamp } from \"./helpers.js\";\nimport { PREFERS_REDUCED_MOTION } from \"./globals.js\"; // Types\nexport const standardEasing = 'cubic-bezier(0.4, 0, 0.2, 1)';\nexport const deceleratedEasing = 'cubic-bezier(0.0, 0, 0.2, 1)'; // Entering\nexport const acceleratedEasing = 'cubic-bezier(0.4, 0, 1, 1)'; // Leaving\n\nexport const easingPatterns = {\n linear: t => t,\n easeInQuad: t => t ** 2,\n easeOutQuad: t => t * (2 - t),\n easeInOutQuad: t => t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t,\n easeInCubic: t => t ** 3,\n easeOutCubic: t => --t ** 3 + 1,\n easeInOutCubic: t => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,\n easeInQuart: t => t ** 4,\n easeOutQuart: t => 1 - --t ** 4,\n easeInOutQuart: t => t < 0.5 ? 8 * t ** 4 : 1 - 8 * --t ** 4,\n easeInQuint: t => t ** 5,\n easeOutQuint: t => 1 + --t ** 5,\n easeInOutQuint: t => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5,\n instant: t => 1\n};\nexport function useTransition(source, options) {\n const defaultTransition = {\n duration: 300,\n transition: easingPatterns.easeInOutCubic\n };\n let raf = -1;\n const outputRef = shallowRef(toValue(source));\n watch(() => toValue(source), async to => {\n cancelAnimationFrame(raf);\n const easing = {\n ...defaultTransition,\n ...toValue(options)\n };\n await executeTransition(outputRef, outputRef.value, to, easing);\n });\n function executeTransition(out, from, to, options) {\n const startTime = performance.now();\n const ease = PREFERS_REDUCED_MOTION() ? easingPatterns.instant : options.transition ?? easingPatterns.easeInOutCubic;\n return new Promise(resolve => {\n raf = requestAnimationFrame(function step(currentTime) {\n const timeElapsed = currentTime - startTime;\n const progress = timeElapsed / options.duration;\n out.value = from + (to - from) * ease(clamp(progress, 0, 1));\n if (progress < 1) {\n raf = requestAnimationFrame(step);\n } else {\n out.value = to;\n resolve();\n }\n });\n });\n }\n return computed(() => outputRef.value);\n}\n//# sourceMappingURL=easing.js.map"],"mappings":";;AAIA,IAAa,iBAAiB;AAC9B,IAAa,oBAAoB;AACjC,IAAa,oBAAoB;AAEjC,IAAa,iBAAiB;CAC5B,SAAQ,MAAK;CACb,aAAY,MAAK,KAAK;CACtB,cAAa,MAAK,KAAK,IAAI;CAC3B,gBAAe,MAAK,IAAI,KAAM,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,KAAK;CAC9D,cAAa,MAAK,KAAK;CACvB,eAAc,MAAK,EAAE,KAAK,IAAI;CAC9B,iBAAgB,MAAK,IAAI,KAAM,IAAI,KAAK,KAAK,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI,IAAI,KAAK;CAClF,cAAa,MAAK,KAAK;CACvB,eAAc,MAAK,IAAI,EAAE,KAAK;CAC9B,iBAAgB,MAAK,IAAI,KAAM,IAAI,KAAK,IAAI,IAAI,IAAI,EAAE,KAAK;CAC3D,cAAa,MAAK,KAAK;CACvB,eAAc,MAAK,IAAI,EAAE,KAAK;CAC9B,iBAAgB,MAAK,IAAI,KAAM,KAAK,KAAK,IAAI,IAAI,KAAK,EAAE,KAAK;CAC7D,UAAS,MAAK;CACf"}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
import { Qn as toRef, Rn as isRef } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { l as propsFactory } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/composables/elevation.js
|
||||
var makeElevationProps = propsFactory({ elevation: {
|
||||
type: [Number, String],
|
||||
validator: (value) => parseInt(value) >= 0
|
||||
} }, "elevation");
|
||||
function useElevation(props) {
|
||||
return { elevationClasses: toRef(() => {
|
||||
const elevation = isRef(props) ? props.value : props.elevation;
|
||||
if (elevation == null) return [];
|
||||
return [`elevation-${parseInt(elevation)}`];
|
||||
}) };
|
||||
}
|
||||
//#endregion
|
||||
export { useElevation as n, makeElevationProps as t };
|
||||
|
||||
//# sourceMappingURL=elevation-B0TH2wU6.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"elevation-B0TH2wU6.js","names":[],"sources":["../../vuetify/lib/composables/elevation.js"],"sourcesContent":["// Utilities\nimport { isRef, toRef } from 'vue';\nimport { propsFactory } from \"../util/index.js\"; // Types\n// Composables\nexport const makeElevationProps = propsFactory({\n elevation: {\n type: [Number, String],\n // no limit to allow both 0-6 (MD3) and legacy 0-24 (MD2)\n validator: value => parseInt(value) >= 0\n }\n}, 'elevation');\nexport function useElevation(props) {\n const elevationClasses = toRef(() => {\n const elevation = isRef(props) ? props.value : props.elevation;\n if (elevation == null) return [];\n return [`elevation-${parseInt(elevation)}`];\n });\n return {\n elevationClasses\n };\n}\n//# sourceMappingURL=elevation.js.map"],"mappings":";;;AAIA,IAAa,qBAAqB,aAAa,EAC7C,WAAW;CACT,MAAM,CAAC,QAAQ,OAAO;CAEtB,YAAW,UAAS,SAAS,MAAM,IAAI;CACxC,EACF,EAAE,YAAY;AACf,SAAgB,aAAa,OAAO;AAMlC,QAAO,EACL,kBANuB,YAAY;EACnC,MAAM,YAAY,MAAM,MAAM,GAAG,MAAM,QAAQ,MAAM;AACrD,MAAI,aAAa,KAAM,QAAO,EAAE;AAChC,SAAO,CAAC,aAAa,SAAS,UAAU,GAAG;GAG3B,EACjB"}
|
||||
+142
@@ -0,0 +1,142 @@
|
||||
import { Ot as nextTick, Qn as toRef, Vn as onScopeDispose, er as toValue, gn as watch } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { O as focusableChildren, Q as IN_BROWSER, b as defer, l as propsFactory } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/composables/delay.js
|
||||
var makeDelayProps = propsFactory({
|
||||
closeDelay: [Number, String],
|
||||
openDelay: [Number, String]
|
||||
}, "delay");
|
||||
function useDelay(props, cb) {
|
||||
let clearDelay = () => {};
|
||||
function runDelay(isOpening, options) {
|
||||
clearDelay?.();
|
||||
const delay = isOpening ? props.openDelay : props.closeDelay;
|
||||
const normalizedDelay = Math.max(options?.minDelay ?? 0, Number(delay ?? 0));
|
||||
return new Promise((resolve) => {
|
||||
clearDelay = defer(normalizedDelay, () => {
|
||||
cb?.(isOpening);
|
||||
resolve(isOpening);
|
||||
});
|
||||
});
|
||||
}
|
||||
function runOpenDelay() {
|
||||
return runDelay(true);
|
||||
}
|
||||
function runCloseDelay(options) {
|
||||
return runDelay(false, options);
|
||||
}
|
||||
return {
|
||||
clearDelay,
|
||||
runOpenDelay,
|
||||
runCloseDelay
|
||||
};
|
||||
}
|
||||
//#endregion
|
||||
//#region node_modules/vuetify/lib/composables/focusTrap.js
|
||||
var makeFocusTrapProps = propsFactory({
|
||||
retainFocus: Boolean,
|
||||
captureFocus: Boolean,
|
||||
/** @deprecated */
|
||||
disableInitialFocus: Boolean
|
||||
}, "focusTrap");
|
||||
var registry = /* @__PURE__ */ new Map();
|
||||
var subscribers = 0;
|
||||
function onKeydown(e) {
|
||||
const activeElement = document.activeElement;
|
||||
if (e.key !== "Tab" || !activeElement) return;
|
||||
const parentTraps = Array.from(registry.values()).filter(({ isActive, contentEl }) => isActive.value && contentEl.value?.contains(activeElement)).map((x) => x.contentEl.value);
|
||||
let closestTrap;
|
||||
let currentParent = activeElement.parentElement;
|
||||
while (currentParent) {
|
||||
if (parentTraps.includes(currentParent)) {
|
||||
closestTrap = currentParent;
|
||||
break;
|
||||
}
|
||||
currentParent = currentParent.parentElement;
|
||||
}
|
||||
if (!closestTrap) return;
|
||||
const focusable = focusableChildren(closestTrap).filter((x) => x.tabIndex >= 0);
|
||||
if (!focusable.length) return;
|
||||
const active = document.activeElement;
|
||||
if (focusable.length === 1 && focusable[0].classList.contains("v-list") && focusable[0].contains(active)) {
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
const firstElement = focusable[0];
|
||||
const lastElement = focusable[focusable.length - 1];
|
||||
if (e.shiftKey && (active === firstElement || firstElement.classList.contains("v-list") && firstElement.contains(active))) {
|
||||
e.preventDefault();
|
||||
lastElement.focus();
|
||||
}
|
||||
if (!e.shiftKey && (active === lastElement || lastElement.classList.contains("v-list") && lastElement.contains(active))) {
|
||||
e.preventDefault();
|
||||
firstElement.focus();
|
||||
}
|
||||
}
|
||||
function useFocusTrap(props, { isActive, localTop, activatorEl, contentEl }) {
|
||||
const trapId = Symbol("trap");
|
||||
let focusTrapSuppressed = false;
|
||||
let focusTrapSuppressionTimeout = -1;
|
||||
async function onPointerdown() {
|
||||
focusTrapSuppressed = true;
|
||||
focusTrapSuppressionTimeout = window.setTimeout(() => {
|
||||
focusTrapSuppressed = false;
|
||||
}, 100);
|
||||
}
|
||||
async function captureOnFocus(e) {
|
||||
const before = e.relatedTarget;
|
||||
const after = e.target;
|
||||
document.removeEventListener("pointerdown", onPointerdown);
|
||||
document.removeEventListener("keydown", captureOnKeydown);
|
||||
await nextTick();
|
||||
if (isActive.value && !focusTrapSuppressed && before !== after && contentEl.value && toValue(localTop) && ![document, contentEl.value].includes(after) && !contentEl.value.contains(after)) focusableChildren(contentEl.value)[0]?.focus();
|
||||
}
|
||||
function captureOnKeydown(e) {
|
||||
if (e.key !== "Tab") return;
|
||||
document.removeEventListener("keydown", captureOnKeydown);
|
||||
if (isActive.value && contentEl.value && e.target && !contentEl.value.contains(e.target)) {
|
||||
const allFocusableElements = focusableChildren(document.documentElement);
|
||||
if (e.shiftKey && e.target === allFocusableElements.at(0) || !e.shiftKey && e.target === allFocusableElements.at(-1)) {
|
||||
const focusable = focusableChildren(contentEl.value);
|
||||
if (focusable.length > 0) {
|
||||
e.preventDefault();
|
||||
focusable[0].focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
const shouldCapture = toRef(() => isActive.value && props.captureFocus && !props.disableInitialFocus);
|
||||
if (IN_BROWSER) {
|
||||
watch(() => props.retainFocus, (val) => {
|
||||
if (val) registry.set(trapId, {
|
||||
isActive,
|
||||
contentEl
|
||||
});
|
||||
else registry.delete(trapId);
|
||||
}, { immediate: true });
|
||||
watch(shouldCapture, (val) => {
|
||||
if (val) {
|
||||
document.addEventListener("pointerdown", onPointerdown);
|
||||
document.addEventListener("focusin", captureOnFocus, { once: true });
|
||||
document.addEventListener("keydown", captureOnKeydown);
|
||||
} else {
|
||||
document.removeEventListener("pointerdown", onPointerdown);
|
||||
document.removeEventListener("focusin", captureOnFocus);
|
||||
document.removeEventListener("keydown", captureOnKeydown);
|
||||
}
|
||||
}, { immediate: true });
|
||||
if (subscribers++ < 1) document.addEventListener("keydown", onKeydown);
|
||||
}
|
||||
onScopeDispose(() => {
|
||||
registry.delete(trapId);
|
||||
if (!IN_BROWSER) return;
|
||||
clearTimeout(focusTrapSuppressionTimeout);
|
||||
document.removeEventListener("pointerdown", onPointerdown);
|
||||
document.removeEventListener("focusin", captureOnFocus);
|
||||
document.removeEventListener("keydown", captureOnKeydown);
|
||||
if (--subscribers < 1) document.removeEventListener("keydown", onKeydown);
|
||||
});
|
||||
}
|
||||
//#endregion
|
||||
export { useDelay as i, useFocusTrap as n, makeDelayProps as r, makeFocusTrapProps as t };
|
||||
|
||||
//# sourceMappingURL=focusTrap-rHoJd0qS.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+63
@@ -0,0 +1,63 @@
|
||||
//#region node_modules/vuetify/lib/composables/forwardRefs.js
|
||||
var Refs = Symbol("Forwarded refs");
|
||||
/** Omit properties starting with P */
|
||||
/** Omit keyof $props from T */
|
||||
function getDescriptor(obj, key) {
|
||||
let currentObj = obj;
|
||||
while (currentObj) {
|
||||
const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key);
|
||||
if (descriptor) return descriptor;
|
||||
currentObj = Object.getPrototypeOf(currentObj);
|
||||
}
|
||||
}
|
||||
function forwardRefs(target, ...refs) {
|
||||
target[Refs] = refs;
|
||||
return new Proxy(target, {
|
||||
get(target, key) {
|
||||
if (Reflect.has(target, key)) return Reflect.get(target, key);
|
||||
if (typeof key === "symbol" || key.startsWith("$") || key.startsWith("__")) return;
|
||||
for (const ref of refs) if (ref.value && Reflect.has(ref.value, key)) {
|
||||
const val = Reflect.get(ref.value, key);
|
||||
return typeof val === "function" ? val.bind(ref.value) : val;
|
||||
}
|
||||
},
|
||||
has(target, key) {
|
||||
if (Reflect.has(target, key)) return true;
|
||||
if (typeof key === "symbol" || key.startsWith("$") || key.startsWith("__")) return false;
|
||||
for (const ref of refs) if (ref.value && Reflect.has(ref.value, key)) return true;
|
||||
return false;
|
||||
},
|
||||
set(target, key, value) {
|
||||
if (Reflect.has(target, key)) return Reflect.set(target, key, value);
|
||||
if (typeof key === "symbol" || key.startsWith("$") || key.startsWith("__")) return false;
|
||||
for (const ref of refs) if (ref.value && Reflect.has(ref.value, key)) return Reflect.set(ref.value, key, value);
|
||||
return false;
|
||||
},
|
||||
getOwnPropertyDescriptor(target, key) {
|
||||
const descriptor = Reflect.getOwnPropertyDescriptor(target, key);
|
||||
if (descriptor) return descriptor;
|
||||
if (typeof key === "symbol" || key.startsWith("$") || key.startsWith("__")) return;
|
||||
for (const ref of refs) {
|
||||
if (!ref.value) continue;
|
||||
const descriptor = getDescriptor(ref.value, key) ?? ("_" in ref.value ? getDescriptor(ref.value._?.setupState, key) : void 0);
|
||||
if (descriptor) return descriptor;
|
||||
}
|
||||
for (const ref of refs) {
|
||||
const childRefs = ref.value && ref.value[Refs];
|
||||
if (!childRefs) continue;
|
||||
const queue = childRefs.slice();
|
||||
while (queue.length) {
|
||||
const ref = queue.shift();
|
||||
const descriptor = getDescriptor(ref.value, key);
|
||||
if (descriptor) return descriptor;
|
||||
const childRefs = ref.value && ref.value[Refs];
|
||||
if (childRefs) queue.push(...childRefs);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
//#endregion
|
||||
export { forwardRefs as t };
|
||||
|
||||
//# sourceMappingURL=forwardRefs-CW3d8km7.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"forwardRefs-CW3d8km7.js","names":[],"sources":["../../vuetify/lib/composables/forwardRefs.js"],"sourcesContent":["// Types\n\nconst Refs = Symbol('Forwarded refs');\n\n/** Omit properties starting with P */\n\n/** Omit keyof $props from T */\n\nfunction getDescriptor(obj, key) {\n let currentObj = obj;\n while (currentObj) {\n const descriptor = Reflect.getOwnPropertyDescriptor(currentObj, key);\n if (descriptor) return descriptor;\n currentObj = Object.getPrototypeOf(currentObj);\n }\n return undefined;\n}\nexport function forwardRefs(target, ...refs) {\n target[Refs] = refs;\n return new Proxy(target, {\n get(target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key);\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n const val = Reflect.get(ref.value, key);\n return typeof val === 'function' ? val.bind(ref.value) : val;\n }\n }\n },\n has(target, key) {\n if (Reflect.has(target, key)) {\n return true;\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return true;\n }\n }\n return false;\n },\n set(target, key, value) {\n if (Reflect.has(target, key)) {\n return Reflect.set(target, key, value);\n }\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return false;\n for (const ref of refs) {\n if (ref.value && Reflect.has(ref.value, key)) {\n return Reflect.set(ref.value, key, value);\n }\n }\n return false;\n },\n getOwnPropertyDescriptor(target, key) {\n const descriptor = Reflect.getOwnPropertyDescriptor(target, key);\n if (descriptor) return descriptor;\n\n // Skip internal properties\n if (typeof key === 'symbol' || key.startsWith('$') || key.startsWith('__')) return;\n\n // Check each ref's own properties\n for (const ref of refs) {\n if (!ref.value) continue;\n const descriptor = getDescriptor(ref.value, key) ?? ('_' in ref.value ? getDescriptor(ref.value._?.setupState, key) : undefined);\n if (descriptor) return descriptor;\n }\n\n // Recursive search up each ref's prototype\n for (const ref of refs) {\n const childRefs = ref.value && ref.value[Refs];\n if (!childRefs) continue;\n const queue = childRefs.slice();\n while (queue.length) {\n const ref = queue.shift();\n const descriptor = getDescriptor(ref.value, key);\n if (descriptor) return descriptor;\n const childRefs = ref.value && ref.value[Refs];\n if (childRefs) queue.push(...childRefs);\n }\n }\n return undefined;\n }\n });\n}\n//# sourceMappingURL=forwardRefs.js.map"],"mappings":";AAEA,IAAM,OAAO,OAAO,iBAAiB;;;AAMrC,SAAS,cAAc,KAAK,KAAK;CAC/B,IAAI,aAAa;AACjB,QAAO,YAAY;EACjB,MAAM,aAAa,QAAQ,yBAAyB,YAAY,IAAI;AACpE,MAAI,WAAY,QAAO;AACvB,eAAa,OAAO,eAAe,WAAW;;;AAIlD,SAAgB,YAAY,QAAQ,GAAG,MAAM;AAC3C,QAAO,QAAQ;AACf,QAAO,IAAI,MAAM,QAAQ;EACvB,IAAI,QAAQ,KAAK;AACf,OAAI,QAAQ,IAAI,QAAQ,IAAI,CAC1B,QAAO,QAAQ,IAAI,QAAQ,IAAI;AAIjC,OAAI,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,KAAK,CAAE;AAC5E,QAAK,MAAM,OAAO,KAChB,KAAI,IAAI,SAAS,QAAQ,IAAI,IAAI,OAAO,IAAI,EAAE;IAC5C,MAAM,MAAM,QAAQ,IAAI,IAAI,OAAO,IAAI;AACvC,WAAO,OAAO,QAAQ,aAAa,IAAI,KAAK,IAAI,MAAM,GAAG;;;EAI/D,IAAI,QAAQ,KAAK;AACf,OAAI,QAAQ,IAAI,QAAQ,IAAI,CAC1B,QAAO;AAIT,OAAI,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,KAAK,CAAE,QAAO;AACnF,QAAK,MAAM,OAAO,KAChB,KAAI,IAAI,SAAS,QAAQ,IAAI,IAAI,OAAO,IAAI,CAC1C,QAAO;AAGX,UAAO;;EAET,IAAI,QAAQ,KAAK,OAAO;AACtB,OAAI,QAAQ,IAAI,QAAQ,IAAI,CAC1B,QAAO,QAAQ,IAAI,QAAQ,KAAK,MAAM;AAIxC,OAAI,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,KAAK,CAAE,QAAO;AACnF,QAAK,MAAM,OAAO,KAChB,KAAI,IAAI,SAAS,QAAQ,IAAI,IAAI,OAAO,IAAI,CAC1C,QAAO,QAAQ,IAAI,IAAI,OAAO,KAAK,MAAM;AAG7C,UAAO;;EAET,yBAAyB,QAAQ,KAAK;GACpC,MAAM,aAAa,QAAQ,yBAAyB,QAAQ,IAAI;AAChE,OAAI,WAAY,QAAO;AAGvB,OAAI,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,KAAK,CAAE;AAG5E,QAAK,MAAM,OAAO,MAAM;AACtB,QAAI,CAAC,IAAI,MAAO;IAChB,MAAM,aAAa,cAAc,IAAI,OAAO,IAAI,KAAK,OAAO,IAAI,QAAQ,cAAc,IAAI,MAAM,GAAG,YAAY,IAAI,GAAG,KAAA;AACtH,QAAI,WAAY,QAAO;;AAIzB,QAAK,MAAM,OAAO,MAAM;IACtB,MAAM,YAAY,IAAI,SAAS,IAAI,MAAM;AACzC,QAAI,CAAC,UAAW;IAChB,MAAM,QAAQ,UAAU,OAAO;AAC/B,WAAO,MAAM,QAAQ;KACnB,MAAM,MAAM,MAAM,OAAO;KACzB,MAAM,aAAa,cAAc,IAAI,OAAO,IAAI;AAChD,SAAI,WAAY,QAAO;KACvB,MAAM,YAAY,IAAI,SAAS,IAAI,MAAM;AACzC,SAAI,UAAW,OAAM,KAAK,GAAG,UAAU;;;;EAK9C,CAAC"}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
//#region node_modules/vuetify/lib/util/getScrollParent.js
|
||||
function getScrollParent(el, includeHidden = false) {
|
||||
while (el) {
|
||||
if (includeHidden ? isPotentiallyScrollable(el) : hasScrollbar(el)) return el;
|
||||
el = el.parentElement;
|
||||
}
|
||||
return document.scrollingElement;
|
||||
}
|
||||
function getScrollParents(el, stopAt) {
|
||||
const elements = [];
|
||||
if (stopAt && el && !stopAt.contains(el)) return elements;
|
||||
while (el) {
|
||||
if (hasScrollbar(el)) elements.push(el);
|
||||
if (el === stopAt) break;
|
||||
el = el.parentElement;
|
||||
}
|
||||
return elements;
|
||||
}
|
||||
function hasScrollbar(el) {
|
||||
if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;
|
||||
const style = window.getComputedStyle(el);
|
||||
const hasVerticalScrollbar = style.overflowY === "scroll" || style.overflowY === "auto" && el.scrollHeight > el.clientHeight;
|
||||
const hasHorizontalScrollbar = style.overflowX === "scroll" || style.overflowX === "auto" && el.scrollWidth > el.clientWidth;
|
||||
return hasVerticalScrollbar || hasHorizontalScrollbar;
|
||||
}
|
||||
function isPotentiallyScrollable(el) {
|
||||
if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;
|
||||
const style = window.getComputedStyle(el);
|
||||
return ["scroll", "auto"].includes(style.overflowY);
|
||||
}
|
||||
//#endregion
|
||||
export { getScrollParents as n, hasScrollbar as r, getScrollParent as t };
|
||||
|
||||
//# sourceMappingURL=getScrollParent-DuXs8SPu.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"getScrollParent-DuXs8SPu.js","names":[],"sources":["../../vuetify/lib/util/getScrollParent.js"],"sourcesContent":["export function getScrollParent(el, includeHidden = false) {\n while (el) {\n if (includeHidden ? isPotentiallyScrollable(el) : hasScrollbar(el)) return el;\n el = el.parentElement;\n }\n return document.scrollingElement;\n}\nexport function getScrollParents(el, stopAt) {\n const elements = [];\n if (stopAt && el && !stopAt.contains(el)) return elements;\n while (el) {\n if (hasScrollbar(el)) elements.push(el);\n if (el === stopAt) break;\n el = el.parentElement;\n }\n return elements;\n}\nexport function hasScrollbar(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n const style = window.getComputedStyle(el);\n const hasVerticalScrollbar = style.overflowY === 'scroll' || style.overflowY === 'auto' && el.scrollHeight > el.clientHeight;\n const hasHorizontalScrollbar = style.overflowX === 'scroll' || style.overflowX === 'auto' && el.scrollWidth > el.clientWidth;\n return hasVerticalScrollbar || hasHorizontalScrollbar;\n}\nfunction isPotentiallyScrollable(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n const style = window.getComputedStyle(el);\n return ['scroll', 'auto'].includes(style.overflowY);\n}\n//# sourceMappingURL=getScrollParent.js.map"],"mappings":";AAAA,SAAgB,gBAAgB,IAAI,gBAAgB,OAAO;AACzD,QAAO,IAAI;AACT,MAAI,gBAAgB,wBAAwB,GAAG,GAAG,aAAa,GAAG,CAAE,QAAO;AAC3E,OAAK,GAAG;;AAEV,QAAO,SAAS;;AAElB,SAAgB,iBAAiB,IAAI,QAAQ;CAC3C,MAAM,WAAW,EAAE;AACnB,KAAI,UAAU,MAAM,CAAC,OAAO,SAAS,GAAG,CAAE,QAAO;AACjD,QAAO,IAAI;AACT,MAAI,aAAa,GAAG,CAAE,UAAS,KAAK,GAAG;AACvC,MAAI,OAAO,OAAQ;AACnB,OAAK,GAAG;;AAEV,QAAO;;AAET,SAAgB,aAAa,IAAI;AAC/B,KAAI,CAAC,MAAM,GAAG,aAAa,KAAK,aAAc,QAAO;CACrD,MAAM,QAAQ,OAAO,iBAAiB,GAAG;CACzC,MAAM,uBAAuB,MAAM,cAAc,YAAY,MAAM,cAAc,UAAU,GAAG,eAAe,GAAG;CAChH,MAAM,yBAAyB,MAAM,cAAc,YAAY,MAAM,cAAc,UAAU,GAAG,cAAc,GAAG;AACjH,QAAO,wBAAwB;;AAEjC,SAAS,wBAAwB,IAAI;AACnC,KAAI,CAAC,MAAM,GAAG,aAAa,KAAK,aAAc,QAAO;CACrD,MAAM,QAAQ,OAAO,iBAAiB,GAAG;AACzC,QAAO,CAAC,UAAU,OAAO,CAAC,SAAS,MAAM,UAAU"}
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
import { Qn as toRef, xt as inject } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { $ as PREFERS_REDUCED_MOTION, J as refElement, V as mergeDeep, g as clamp, it as consoleWarn } from "./defineComponent-DB6xIcDy.js";
|
||||
import { r as easingPatterns } from "./easing-DfcvkbkS.js";
|
||||
import { i as useRtl } from "./locale-DDGMqzqb.js";
|
||||
//#region node_modules/vuetify/lib/composables/goto.js
|
||||
var GoToSymbol = Symbol.for("vuetify:goto");
|
||||
function genDefaults() {
|
||||
return {
|
||||
container: void 0,
|
||||
duration: 300,
|
||||
layout: false,
|
||||
offset: 0,
|
||||
easing: "easeInOutCubic",
|
||||
patterns: easingPatterns
|
||||
};
|
||||
}
|
||||
function getContainer(el) {
|
||||
return getTarget(el) ?? (document.scrollingElement || document.body);
|
||||
}
|
||||
function getTarget(el) {
|
||||
return typeof el === "string" ? document.querySelector(el) : refElement(el);
|
||||
}
|
||||
function getOffset(target, horizontal, rtl) {
|
||||
if (typeof target === "number") return horizontal && rtl ? -target : target;
|
||||
let el = getTarget(target);
|
||||
let totalOffset = 0;
|
||||
while (el) {
|
||||
totalOffset += horizontal ? el.offsetLeft : el.offsetTop;
|
||||
el = el.offsetParent;
|
||||
}
|
||||
return totalOffset;
|
||||
}
|
||||
function createGoTo(options, locale) {
|
||||
return {
|
||||
rtl: locale.isRtl,
|
||||
options: mergeDeep(genDefaults(), options)
|
||||
};
|
||||
}
|
||||
async function scrollTo(_target, _options, horizontal, goTo) {
|
||||
const property = horizontal ? "scrollLeft" : "scrollTop";
|
||||
const options = mergeDeep(goTo?.options ?? genDefaults(), _options);
|
||||
const rtl = goTo?.rtl.value;
|
||||
const target = (typeof _target === "number" ? _target : getTarget(_target)) ?? 0;
|
||||
const container = options.container === "parent" && target instanceof HTMLElement ? target.parentElement : getContainer(options.container);
|
||||
const ease = PREFERS_REDUCED_MOTION() ? options.patterns.instant : typeof options.easing === "function" ? options.easing : options.patterns[options.easing];
|
||||
if (!ease) throw new TypeError(`Easing function "${options.easing}" not found.`);
|
||||
let targetLocation;
|
||||
if (typeof target === "number") targetLocation = getOffset(target, horizontal, rtl);
|
||||
else {
|
||||
targetLocation = getOffset(target, horizontal, rtl) - getOffset(container, horizontal, rtl);
|
||||
if (options.layout) {
|
||||
const layoutOffset = window.getComputedStyle(target).getPropertyValue("--v-layout-top");
|
||||
if (layoutOffset) targetLocation -= parseInt(layoutOffset, 10);
|
||||
}
|
||||
}
|
||||
targetLocation += options.offset;
|
||||
targetLocation = clampTarget(container, targetLocation, !!rtl, !!horizontal);
|
||||
const startLocation = container[property] ?? 0;
|
||||
if (targetLocation === startLocation) return Promise.resolve(targetLocation);
|
||||
const startTime = performance.now();
|
||||
return new Promise((resolve) => requestAnimationFrame(function step(currentTime) {
|
||||
const progress = (currentTime - startTime) / options.duration;
|
||||
const location = Math.floor(startLocation + (targetLocation - startLocation) * ease(clamp(progress, 0, 1)));
|
||||
container[property] = location;
|
||||
if (progress >= 1 && Math.abs(location - container[property]) < 10) return resolve(targetLocation);
|
||||
else if (progress > 2) {
|
||||
consoleWarn("Scroll target is not reachable");
|
||||
return resolve(container[property]);
|
||||
}
|
||||
requestAnimationFrame(step);
|
||||
}));
|
||||
}
|
||||
function useGoTo(_options = {}) {
|
||||
const goToInstance = inject(GoToSymbol);
|
||||
const { isRtl } = useRtl();
|
||||
if (!goToInstance) throw new Error("[Vuetify] Could not find injected goto instance");
|
||||
const goTo = {
|
||||
...goToInstance,
|
||||
rtl: toRef(() => goToInstance.rtl.value || isRtl.value)
|
||||
};
|
||||
async function go(target, options) {
|
||||
return scrollTo(target, mergeDeep(_options, options), false, goTo);
|
||||
}
|
||||
go.horizontal = async (target, options) => {
|
||||
return scrollTo(target, mergeDeep(_options, options), true, goTo);
|
||||
};
|
||||
return go;
|
||||
}
|
||||
/**
|
||||
* Clamp target value to achieve a smooth scroll animation
|
||||
* when the value goes outside the scroll container size
|
||||
*/
|
||||
function clampTarget(container, value, rtl, horizontal) {
|
||||
const { scrollWidth, scrollHeight } = container;
|
||||
const [containerWidth, containerHeight] = container === document.scrollingElement ? [window.innerWidth, window.innerHeight] : [container.offsetWidth, container.offsetHeight];
|
||||
let min;
|
||||
let max;
|
||||
if (horizontal) if (rtl) {
|
||||
min = -(scrollWidth - containerWidth);
|
||||
max = 0;
|
||||
} else {
|
||||
min = 0;
|
||||
max = scrollWidth - containerWidth;
|
||||
}
|
||||
else {
|
||||
min = 0;
|
||||
max = scrollHeight + -containerHeight;
|
||||
}
|
||||
return clamp(value, min, max);
|
||||
}
|
||||
//#endregion
|
||||
export { createGoTo as n, useGoTo as r, GoToSymbol as t };
|
||||
|
||||
//# sourceMappingURL=goto-Bn-PzNUr.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+197
@@ -0,0 +1,197 @@
|
||||
import { Bt as onUpdated, Ft as onMounted, Qn as toRef, U as computed, Ut as provide, Wn as reactive, cn as useId, gn as watch, jt as onBeforeUnmount, nr as unref, xt as inject } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { T as findChildrenWithProvide, Z as wrapInArray, it as consoleWarn, l as propsFactory, s as getCurrentInstance } from "./defineComponent-DB6xIcDy.js";
|
||||
import { t as deepEqual } from "./deepEqual-DDqmGqyF.js";
|
||||
import { t as useProxiedModel } from "./proxiedModel-DSlSIQ0y.js";
|
||||
//#region node_modules/vuetify/lib/composables/group.js
|
||||
var makeGroupProps = propsFactory({
|
||||
modelValue: {
|
||||
type: null,
|
||||
default: void 0
|
||||
},
|
||||
multiple: Boolean,
|
||||
mandatory: [Boolean, String],
|
||||
max: Number,
|
||||
selectedClass: String,
|
||||
disabled: Boolean
|
||||
}, "group");
|
||||
var makeGroupItemProps = propsFactory({
|
||||
value: null,
|
||||
disabled: Boolean,
|
||||
selectedClass: String
|
||||
}, "group-item");
|
||||
function useGroupItem(props, injectKey, required = true) {
|
||||
const vm = getCurrentInstance("useGroupItem");
|
||||
if (!vm) throw new Error("[Vuetify] useGroupItem composable must be used inside a component setup function");
|
||||
const id = useId();
|
||||
provide(Symbol.for(`${injectKey.description}:id`), id);
|
||||
const group = inject(injectKey, null);
|
||||
if (!group) {
|
||||
if (!required) return group;
|
||||
throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${injectKey.description}`);
|
||||
}
|
||||
const value = toRef(() => props.value);
|
||||
const disabled = computed(() => !!(group.disabled.value || props.disabled));
|
||||
function register() {
|
||||
group?.register({
|
||||
id,
|
||||
value,
|
||||
disabled
|
||||
}, vm);
|
||||
}
|
||||
function unregister() {
|
||||
group?.unregister(id);
|
||||
}
|
||||
register();
|
||||
onBeforeUnmount(() => unregister());
|
||||
const isSelected = computed(() => {
|
||||
return group.isSelected(id);
|
||||
});
|
||||
const isFirst = computed(() => {
|
||||
return group.items.value[0].id === id;
|
||||
});
|
||||
const isLast = computed(() => {
|
||||
return group.items.value[group.items.value.length - 1].id === id;
|
||||
});
|
||||
const selectedClass = computed(() => isSelected.value && [group.selectedClass.value, props.selectedClass]);
|
||||
watch(isSelected, (value) => {
|
||||
vm.emit("group:selected", { value });
|
||||
}, { flush: "sync" });
|
||||
return {
|
||||
id,
|
||||
isSelected,
|
||||
isFirst,
|
||||
isLast,
|
||||
toggle: () => group.select(id, !isSelected.value),
|
||||
select: (value) => group.select(id, value),
|
||||
selectedClass,
|
||||
value,
|
||||
disabled,
|
||||
group,
|
||||
register,
|
||||
unregister
|
||||
};
|
||||
}
|
||||
function useGroup(props, injectKey) {
|
||||
let isUnmounted = false;
|
||||
const items = reactive([]);
|
||||
const selected = useProxiedModel(props, "modelValue", [], (v) => {
|
||||
if (v === void 0) return [];
|
||||
return getIds(items, v === null ? [null] : wrapInArray(v));
|
||||
}, (v) => {
|
||||
const arr = getValues(items, v);
|
||||
return props.multiple ? arr : arr[0];
|
||||
});
|
||||
const groupVm = getCurrentInstance("useGroup");
|
||||
function register(item, vm) {
|
||||
const unwrapped = item;
|
||||
const index = findChildrenWithProvide(Symbol.for(`${injectKey.description}:id`), groupVm?.vnode).indexOf(vm);
|
||||
if (unref(unwrapped.value) === void 0) {
|
||||
unwrapped.value = index;
|
||||
unwrapped.useIndexAsValue = true;
|
||||
}
|
||||
if (index > -1) items.splice(index, 0, unwrapped);
|
||||
else items.push(unwrapped);
|
||||
}
|
||||
function unregister(id) {
|
||||
if (isUnmounted) return;
|
||||
forceMandatoryValue();
|
||||
const index = items.findIndex((item) => item.id === id);
|
||||
items.splice(index, 1);
|
||||
}
|
||||
function forceMandatoryValue() {
|
||||
const item = items.find((item) => !item.disabled);
|
||||
if (item && props.mandatory === "force" && !selected.value.length) selected.value = [item.id];
|
||||
}
|
||||
onMounted(() => {
|
||||
forceMandatoryValue();
|
||||
});
|
||||
onBeforeUnmount(() => {
|
||||
isUnmounted = true;
|
||||
});
|
||||
onUpdated(() => {
|
||||
for (let i = 0; i < items.length; i++) if (items[i].useIndexAsValue) items[i].value = i;
|
||||
});
|
||||
function select(id, value) {
|
||||
const item = items.find((item) => item.id === id);
|
||||
if (value && item?.disabled) return;
|
||||
if (props.multiple) {
|
||||
const internalValue = selected.value.slice();
|
||||
const index = internalValue.findIndex((v) => v === id);
|
||||
const isSelected = ~index;
|
||||
value = value ?? !isSelected;
|
||||
if (isSelected && props.mandatory && internalValue.length <= 1) return;
|
||||
if (!isSelected && props.max != null && internalValue.length + 1 > props.max) return;
|
||||
if (index < 0 && value) internalValue.push(id);
|
||||
else if (index >= 0 && !value) internalValue.splice(index, 1);
|
||||
selected.value = internalValue;
|
||||
} else {
|
||||
const isSelected = selected.value.includes(id);
|
||||
if (props.mandatory && isSelected) return;
|
||||
if (!isSelected && !value) return;
|
||||
selected.value = value ?? !isSelected ? [id] : [];
|
||||
}
|
||||
}
|
||||
function step(offset) {
|
||||
if (props.multiple) consoleWarn("This method is not supported when using \"multiple\" prop");
|
||||
if (!selected.value.length) {
|
||||
const item = items.find((item) => !item.disabled);
|
||||
item && (selected.value = [item.id]);
|
||||
} else {
|
||||
const currentId = selected.value[0];
|
||||
const currentIndex = items.findIndex((i) => i.id === currentId);
|
||||
let newIndex = (currentIndex + offset) % items.length;
|
||||
let newItem = items[newIndex];
|
||||
while (newItem.disabled && newIndex !== currentIndex) {
|
||||
newIndex = (newIndex + offset) % items.length;
|
||||
newItem = items[newIndex];
|
||||
}
|
||||
if (newItem.disabled) return;
|
||||
selected.value = [items[newIndex].id];
|
||||
}
|
||||
}
|
||||
const state = {
|
||||
register,
|
||||
unregister,
|
||||
selected,
|
||||
select,
|
||||
disabled: toRef(() => props.disabled),
|
||||
prev: () => step(items.length - 1),
|
||||
next: () => step(1),
|
||||
isSelected: (id) => selected.value.includes(id),
|
||||
selectedClass: toRef(() => props.selectedClass),
|
||||
items: toRef(() => items),
|
||||
getItemIndex: (value) => getItemIndex(items, value)
|
||||
};
|
||||
provide(injectKey, state);
|
||||
return state;
|
||||
}
|
||||
function getItemIndex(items, value) {
|
||||
const ids = getIds(items, [value]);
|
||||
if (!ids.length) return -1;
|
||||
return items.findIndex((item) => item.id === ids[0]);
|
||||
}
|
||||
function getIds(items, modelValue) {
|
||||
const ids = [];
|
||||
modelValue.forEach((value) => {
|
||||
const item = items.find((item) => deepEqual(value, item.value));
|
||||
const itemByIndex = items[value];
|
||||
if (item?.value !== void 0) ids.push(item.id);
|
||||
else if (itemByIndex?.useIndexAsValue) ids.push(itemByIndex.id);
|
||||
});
|
||||
return ids;
|
||||
}
|
||||
function getValues(items, ids) {
|
||||
const values = [];
|
||||
ids.forEach((id) => {
|
||||
const itemIndex = items.findIndex((item) => item.id === id);
|
||||
if (~itemIndex) {
|
||||
const item = items[itemIndex];
|
||||
values.push(item.value !== void 0 ? item.value : itemIndex);
|
||||
}
|
||||
});
|
||||
return values;
|
||||
}
|
||||
//#endregion
|
||||
export { useGroupItem as i, makeGroupProps as n, useGroup as r, makeGroupItemProps as t };
|
||||
|
||||
//# sourceMappingURL=group-Cm2viEWK.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
+100
@@ -0,0 +1,100 @@
|
||||
import { Dt as mergeProps, U as computed, W as createBaseVNode, ar as normalizeClass, er as toValue, et as createVNode, xt as inject } from "./vue.runtime.esm-bundler-BvoXUmaf.js";
|
||||
import { it as consoleWarn, l as propsFactory, n as genericComponent, t as defineComponent } from "./defineComponent-DB6xIcDy.js";
|
||||
//#region node_modules/vuetify/lib/composables/icons.js
|
||||
var IconValue = [
|
||||
String,
|
||||
Function,
|
||||
Object,
|
||||
Array
|
||||
];
|
||||
var IconSymbol = Symbol.for("vuetify:icons");
|
||||
var makeIconProps = propsFactory({
|
||||
icon: { type: IconValue },
|
||||
tag: {
|
||||
type: [
|
||||
String,
|
||||
Object,
|
||||
Function
|
||||
],
|
||||
required: true
|
||||
}
|
||||
}, "icon");
|
||||
var VComponentIcon = genericComponent()({
|
||||
name: "VComponentIcon",
|
||||
props: makeIconProps(),
|
||||
setup(props, { slots }) {
|
||||
return () => {
|
||||
const Icon = props.icon;
|
||||
return createVNode(props.tag, null, { default: () => [props.icon ? createVNode(Icon, null, null) : slots.default?.()] });
|
||||
};
|
||||
}
|
||||
});
|
||||
var VSvgIcon = defineComponent({
|
||||
name: "VSvgIcon",
|
||||
inheritAttrs: false,
|
||||
props: makeIconProps(),
|
||||
setup(props, { attrs }) {
|
||||
return () => {
|
||||
return createVNode(props.tag, mergeProps(attrs, { "style": null }), { default: () => [createBaseVNode("svg", {
|
||||
"class": "v-icon__svg",
|
||||
"xmlns": "http://www.w3.org/2000/svg",
|
||||
"viewBox": "0 0 24 24",
|
||||
"role": "img",
|
||||
"aria-hidden": "true"
|
||||
}, [Array.isArray(props.icon) ? props.icon.map((path) => Array.isArray(path) ? createBaseVNode("path", {
|
||||
"d": path[0],
|
||||
"fill-opacity": path[1]
|
||||
}, null) : createBaseVNode("path", { "d": path }, null)) : createBaseVNode("path", { "d": props.icon }, null)])] });
|
||||
};
|
||||
}
|
||||
});
|
||||
var VLigatureIcon = defineComponent({
|
||||
name: "VLigatureIcon",
|
||||
props: makeIconProps(),
|
||||
setup(props) {
|
||||
return () => {
|
||||
return createVNode(props.tag, null, { default: () => [props.icon] });
|
||||
};
|
||||
}
|
||||
});
|
||||
var VClassIcon = defineComponent({
|
||||
name: "VClassIcon",
|
||||
props: makeIconProps(),
|
||||
setup(props) {
|
||||
return () => {
|
||||
return createVNode(props.tag, { "class": normalizeClass(props.icon) }, null);
|
||||
};
|
||||
}
|
||||
});
|
||||
var useIcon = (props) => {
|
||||
const icons = inject(IconSymbol);
|
||||
if (!icons) throw new Error("Missing Vuetify Icons provide!");
|
||||
return { iconData: computed(() => {
|
||||
const iconAlias = toValue(props);
|
||||
if (!iconAlias) return { component: VComponentIcon };
|
||||
let icon = iconAlias;
|
||||
if (typeof icon === "string") {
|
||||
icon = icon.trim();
|
||||
if (icon.startsWith("$")) icon = icons.aliases?.[icon.slice(1)];
|
||||
}
|
||||
if (!icon) consoleWarn(`Could not find aliased icon "${iconAlias}"`);
|
||||
if (Array.isArray(icon)) return {
|
||||
component: VSvgIcon,
|
||||
icon
|
||||
};
|
||||
else if (typeof icon !== "string") return {
|
||||
component: VComponentIcon,
|
||||
icon
|
||||
};
|
||||
const iconSetName = Object.keys(icons.sets).find((setName) => typeof icon === "string" && icon.startsWith(`${setName}:`));
|
||||
const iconName = iconSetName ? icon.slice(iconSetName.length + 1) : icon;
|
||||
return {
|
||||
component: icons.sets[iconSetName ?? icons.defaultSet].component,
|
||||
icon: iconName
|
||||
};
|
||||
}) };
|
||||
};
|
||||
//#endregion
|
||||
export { VLigatureIcon as a, VComponentIcon as i, IconValue as n, VSvgIcon as o, VClassIcon as r, useIcon as s, IconSymbol as t };
|
||||
|
||||
//# sourceMappingURL=icons-k2ZLE_i8.js.map
|
||||
+1
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user