103 lines
3.4 KiB
JavaScript
103 lines
3.4 KiB
JavaScript
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
|