import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from "vue"; // Components import { makeVBarlineProps, VBarline } from "./VBarline.mjs"; import { makeVTrendlineProps, VTrendline } from "./VTrendline.mjs"; // Composables import { useTextColor } from "../../composables/color.mjs"; // Utilities import { computed, toRef } from 'vue'; import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types // Types export const makeVSparklineProps = propsFactory({ type: { type: String, default: 'trend' }, ...makeVBarlineProps(), ...makeVTrendlineProps() }, 'VSparkline'); export const VSparkline = genericComponent()({ name: 'VSparkline', props: makeVSparklineProps(), setup(props, _ref) { let { slots } = _ref; const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color')); const hasLabels = computed(() => { return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label); }); const totalHeight = computed(() => { let height = parseInt(props.height, 10); if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5; return height; }); useRender(() => { const Tag = props.type === 'trend' ? VTrendline : VBarline; const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props); return _createVNode(Tag, _mergeProps({ "key": props.type, "class": textColorClasses.value, "style": textColorStyles.value, "viewBox": `0 0 ${props.width} ${parseInt(totalHeight.value, 10)}` }, lineProps), slots); }); } }); //# sourceMappingURL=VSparkline.mjs.map