vue-data-ui
Version:
A user-empowering data visualization Vue 3 components library for eloquent data storytelling
1,081 lines (1,080 loc) • 48.9 kB
JavaScript
import { defineAsyncComponent as L, computed as m, ref as d, toRefs as Vt, watch as ee, shallowRef as Ke, onMounted as Gt, onBeforeUnmount as Xt, watchEffect as Yt, createElementBlock as i, openBlock as n, unref as v, normalizeStyle as S, normalizeClass as X, createBlock as D, createCommentVNode as g, createElementVNode as I, createVNode as me, withCtx as h, renderSlot as p, normalizeProps as T, guardReactiveProps as z, createSlots as Qe, Fragment as w, renderList as P, toDisplayString as U, Teleport as qt, resolveDynamicComponent as Jt, mergeProps as Kt, createTextVNode as Ze, nextTick as Qt } from "vue";
import { c as be, t as Zt, i as ea, j as te, o as et, g as tt, l as ta, k as aa, m as oa, N as la, C as sa, A as na, ah as ra, X as ia, $ as ua, y as at, a2 as ae, v as ca, r as va, a as ot, d as lt, _ as da } from "./lib-2iaAPQ_c.js";
import { t as st, u as ha } from "./useResponsive-DfdjqQps.js";
import { u as pa, a as ge } from "./useNestedProp-2p4Tjzc8.js";
import { u as fa } from "./usePrinter-ChVMpU2f.js";
import { u as ma, B as ba } from "./BaseScanner-BMpwQAfz.js";
import { u as ga } from "./useSvgExport-ByUukOZt.js";
import { u as ya } from "./useThemeCheck-DGJ31Vi5.js";
import { u as Ca } from "./useUserOptionState-BIvW1Kz7.js";
import { u as ka } from "./useChartAccessibility-9icAAmYg.js";
import { u as xa } from "./useTimeLabelCollider-CIsgDrl9.js";
import Aa from "./Title-DSOZzIrU.js";
import wa from "./Legend-D2xmnFPH.js";
import { _ as $a } from "./Shape-12_eh8zD.js";
import Fa from "./img-CqYIrJ8I.js";
import { _ as Ta } from "./_plugin-vue_export-helper-CHgC5LLL.js";
const nt = { style: { chart: { backgroundColor: "#1A1A1A", color: "#CCCCCC", legend: { backgroundColor: "#1A1A1A", color: "#CCCCCC" }, title: { color: "#CCCCCC", subtitle: { color: "#757575" } }, tooltip: { backgroundColor: "#1A1A1A", backgroundOpacity: 70, color: "#CCCCCC", borderColor: "#5A5A5A" }, yAxis: { stroke: "#5A5A5A", labels: { axisNamesColor: "#CCCCCC", ticks: { color: "#CCCCCC" } } } } }, table: { th: { backgroundColor: "#1A1A1A", color: "#CCCCCC" }, td: { backgroundColor: "#1A1A1A", color: "#CCCCCC" } } }, rt = { style: { chart: { backgroundColor: "#FFF8E1", color: "#424242", legend: { backgroundColor: "#FFF8E1", color: "#424242" }, title: { color: "#424242", subtitle: { color: "#757575" } }, tooltip: { backgroundColor: "#FFECB3", backgroundOpacity: 30, color: "#424242", borderColor: "#FF8A65" }, yAxis: { stroke: "#5D4037", labels: { axisNamesColor: "#424242", ticks: { color: "#424242" } } } } }, table: { th: { backgroundColor: "#FFF8E1", color: "#424242" }, td: { backgroundColor: "#FFF8E1", color: "#424242" } } }, it = { style: { chart: { backgroundColor: "#1E1E1E", color: "#BDBDBD", legend: { backgroundColor: "#1E1E1E", color: "#BDBDBD" }, title: { color: "#FFF8E1", subtitle: { color: "#BDBDBD" } }, tooltip: { backgroundColor: "#1E1E1E", backgroundOpacity: 30, color: "#FFF8E1", borderColor: "#FF8A65" }, yAxis: { stroke: "#5D4037", labels: { axisNamesColor: "#BDBDBD", ticks: { color: "#BDBDBD" } } } } }, table: { th: { backgroundColor: "#1E1E1E", color: "#BDBDBD" }, td: { backgroundColor: "#1E1E1E", color: "#BDBDBD" } } }, ut = { style: { chart: { backgroundColor: "#1A1A1A", color: "#99AA99", legend: { backgroundColor: "#1A1A1A", color: "#99AA99" }, title: { color: "#66CC66", subtitle: { color: "#99AA99" } }, tooltip: { backgroundColor: "#2A2F2A", color: "#AACCAA", borderColor: "#66CC66", borderRadius: 0 }, yAxis: { stroke: "#3A3A3A", labels: { axisNamesColor: "#99AA99", ticks: { color: "#5A5A5A" } } } } }, table: { th: { backgroundColor: "#1A1A1A", color: "#99AA99" }, td: { backgroundColor: "#1A1A1A", color: "#AACCAA" } } }, ct = { style: { chart: { backgroundColor: "#fbfafa", color: "#8A9892", legend: { backgroundColor: "#fbfafa", color: "#99AA99" }, title: { color: "#8A9892", subtitle: { color: "#99AA99" } }, tooltip: { backgroundColor: "#fbfafa", color: "#8A9892" }, yAxis: { stroke: "#8F837A", labels: { axisNamesColor: "#8F837A", ticks: { color: "#8F837A" } } } } }, table: { th: { backgroundColor: "#fbfafa", color: "#8F837A" }, td: { backgroundColor: "#fbfafa", color: "#8F837A" } } }, vt = { style: { chart: { backgroundColor: "#f6f6fb", color: "#50606C", legend: { backgroundColor: "#f6f6fb", color: "#61747E" }, title: { color: "#50606C", subtitle: { color: "#718890" } }, tooltip: { backgroundColor: "#f6f6fb", color: "#50606C" }, yAxis: { stroke: "#50606C", labels: { axisNamesColor: "#50606C", ticks: { color: "#50606C" } } } } }, table: { th: { backgroundColor: "#f6f6fb", color: "#50606C" }, td: { backgroundColor: "#f6f6fb", color: "#50606C" } } }, dt = {
default: {},
dark: nt,
celebration: rt,
celebrationNight: it,
hack: ut,
zen: ct,
concrete: vt
}, fo = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
celebration: rt,
celebrationNight: it,
concrete: vt,
dark: nt,
default: dt,
hack: ut,
zen: ct
}, Symbol.toStringTag, { value: "Module" })), za = ["id"], Na = ["id"], _a = ["xmlns", "viewBox"], Ma = ["x", "y", "width", "height"], Sa = { style: { "pointer-events": "none" } }, Da = ["x1", "x2", "y1", "y2", "stroke", "stroke-width"], Ia = ["x1", "x2", "y1", "y2", "stroke", "stroke-width"], Pa = { key: 0 }, Oa = ["x", "y", "fill", "font-size", "font-weight"], La = ["fill", "font-size", "font-weight", "text-anchor", "transform"], Ba = ["fill", "font-size", "font-weight", "text-anchor", "transform", "innerHTML"], Ea = { key: 0 }, Ra = ["x", "y", "font-size", "fill"], Ua = ["width", "x", "y"], Ha = { style: { width: "100%" } }, Wa = ["x", "y", "fill", "font-weight", "font-size", "onMouseenter", "onMouseleave", "onClick"], ja = ["d", "stroke", "stroke-width", "onMouseenter", "onMouseleave", "onClick"], Va = ["d", "onMouseenter", "onMouseleave", "onClick"], Ga = {
key: 4,
class: "vue-data-ui-watermark"
}, Xa = ["id"], Ya = ["onClick"], qa = ["innerHTML"], Ja = {
__name: "vue-ui-parallel-coordinate-plot",
props: {
config: {
type: Object,
default() {
return {};
}
},
dataset: {
type: Array,
default() {
return [];
}
}
},
emits: ["selectLegend", "selectDatapoint"],
setup(ht, { expose: pt, emit: ft }) {
const mt = L(() => import("./Tooltip-D0pGX8qz.js")), bt = L(() => import("./BaseIcon-CbVDYv89.js")), gt = L(() => import("./vue-ui-accordion-Dm0mNNKQ.js")), yt = L(() => import("./DataTable-BT_IeqPe.js")), Ct = L(() => import("./PenAndPaper-CvyKWfNl.js")), kt = L(() => import("./UserOptions-BQO4YFrn.js")), xt = L(() => import("./PackageVersion-Br3DrrFh.js")), At = L(() => import("./BaseDraggableDialog-Z5LfhW87.js")), { vue_ui_parallel_coordinate_plot: wt } = pa(), { isThemeValid: $t, warnInvalidTheme: Ft } = ya(), $ = ht, Y = m({
get() {
return !!$.dataset && $.dataset.length;
},
set(t) {
return t;
}
}), ye = d(0), M = d(null), Ce = d(null), ke = d(null), xe = d(null), Ae = d(null), we = d(0), $e = d(0), Fe = d(0), Te = d(!1), j = d(null), oe = d(null), le = d(null), B = d(be()), E = d(!1);
function ze(t) {
E.value = t, ye.value += 1;
}
const e = d(ie()), { loading: R, FINAL_DATASET: Tt, manualLoading: se } = ma({
...Vt($),
FINAL_CONFIG: e,
prepareConfig: ie,
callback: () => {
Promise.resolve().then(async () => {
await Qt(), b.value.showTable = e.value.table.show;
});
},
skeletonDataset: [
{
name: "",
shape: "circle",
color: "transparent",
series: [
{
name: "",
values: [1, 10, 100, 1e3]
}
]
},
{
name: "",
shape: "circle",
color: "#CACACA",
series: [
{
name: "",
values: [0.2, 3, 50, 800]
}
]
},
{
name: "",
shape: "circle",
color: "transparent",
series: [
{
name: "",
values: [0, 0, 0, 0]
}
]
}
],
skeletonConfig: Zt({
defaultConfig: e.value,
userConfig: {
useCssAnimation: !1,
userOptions: { show: !1 },
table: { show: !1 },
style: {
chart: {
backgroundColor: "#99999930",
legend: {
show: !0,
backgroundColor: "transparent"
},
yAxis: {
stroke: "#6A6A6A",
labels: {
showAxisNames: !1,
axisNames: [],
ticks: {
color: "#6A6A6A"
}
}
}
}
}
}
})
}), { userOptionsVisible: ne, setUserOptionsVisibility: Ne, keepUserOptionState: _e } = Ca({ config: e.value }), { svgRef: re } = ka({ config: e.value.style.chart.title });
function ie() {
const t = ge({
userConfig: $.config,
defaultConfig: wt
}), o = t.theme;
if (!o) return t;
if (!$t.value(t))
return Ft(t), t;
const a = ge({
userConfig: dt[o] || $.config,
defaultConfig: t
}), s = ge({
userConfig: $.config,
defaultConfig: a
});
return {
...s,
customPalette: s.customPalette.length ? s.customPalette : ea[o] || te
};
}
ee(() => $.config, (t) => {
R.value || (e.value = ie()), ne.value = !e.value.userOptions.showOnChartHover, Se(), we.value += 1, Fe.value += 1, $e.value += 1, b.value.dataLabels.show = e.value.style.chart.yAxis.labels.datapoints.show, b.value.showTable = e.value.table.show, b.value.showTooltip = e.value.style.chart.tooltip.show;
}, { deep: !0 }), ee(() => $.dataset, (t) => {
Array.isArray(t) && t.length > 0 && (se.value = !1);
}, { deep: !0 });
const O = Ke(null), H = Ke(null);
Gt(() => {
Te.value = !0, Se();
});
const Me = m(() => !!e.value.debug);
function Se() {
if (et($.dataset) ? (tt({
componentName: "VueUiParallelCoordinatePlot",
type: "dataset",
debug: Me.value
}), se.value = !0) : $.dataset.forEach((t, o) => {
ta({
datasetObject: t,
requiredAttributes: ["name", "series"]
}).forEach((a) => {
Y.value = !1, tt({
componentName: "VueUiParallelCoordinatePlot",
type: "datasetSerieAttribute",
property: a,
index: o,
debug: Me.value
});
});
}), et($.dataset) || (se.value = e.value.loading), e.value.responsive) {
const t = st(() => {
const { width: o, height: a } = ha({
chart: M.value,
title: e.value.style.chart.title.text ? Ce.value : null,
legend: e.value.style.chart.legend.show ? ke.value : null,
source: xe.value,
noTitle: Ae.value
});
requestAnimationFrame(() => {
c.value.width = o, c.value.height = a - 12, e.value.responsiveProportionalSizing ? (c.value.plotSize = ae({
relator: Math.min(o, a),
adjuster: 600,
source: e.value.style.chart.plots.radius,
threshold: 2,
fallback: 2
}), c.value.ticksFontSize = ae({
relator: Math.min(o, a),
adjuster: 600,
source: e.value.style.chart.yAxis.labels.ticks.fontSize,
threshold: 10,
fallback: 10
}), c.value.datapointFontSize = ae({
relator: Math.min(o, a),
adjuster: 600,
source: e.value.style.chart.yAxis.labels.datapoints.fontSize,
threshold: 10,
fallback: 10
}), c.value.axisNameFontSize = ae({
relator: Math.min(o, a),
adjuster: 600,
source: e.value.style.chart.yAxis.labels.axisNamesFontSize,
threshold: 12,
fallback: 12
})) : (c.value.plotSize = e.value.style.chart.plots.radius, c.value.ticksFontSize = e.value.style.chart.yAxis.labels.ticks.fontSize, c.value.datapointFontSize = e.value.style.chart.yAxis.labels.datapoints.fontSize, c.value.axisNameFontSize = e.value.style.chart.yAxis.labels.axisNamesFontSize);
});
});
O.value && (H.value && O.value.unobserve(H.value), O.value.disconnect()), O.value = new ResizeObserver(t), H.value = M.value.parentNode, O.value.observe(H.value);
}
}
Xt(() => {
O.value && (H.value && O.value.unobserve(H.value), O.value.disconnect());
});
const { isPrinting: De, isImaging: Ie, generatePdf: Pe, generateImage: Oe } = fa({
elementId: `pcp_${B.value}`,
fileName: e.value.style.chart.title.text || "vue-ui-parallel-coordinate-plot",
options: e.value.userOptions.print
}), zt = m(() => e.value.userOptions.show && !e.value.style.chart.title.text), c = d({
height: e.value.style.chart.height,
width: e.value.style.chart.width,
plotSize: e.value.style.chart.plots.radius,
// ratio 100
ticksFontSize: e.value.style.chart.yAxis.labels.ticks.fontSize,
// ratio 42.85
datapointFontSize: e.value.style.chart.yAxis.labels.datapoints.fontSize,
axisNameFontSize: e.value.style.chart.yAxis.labels.axisNamesFontSize
}), Le = m(() => c.value.width), Be = m(() => c.value.height), V = d(0), Nt = st((t) => {
V.value = t;
}, 100);
Yt((t) => {
const o = le.value;
if (!o) return;
const a = new ResizeObserver((s) => {
Nt(s[0].contentRect.height);
});
a.observe(o), t(() => a.disconnect());
});
const f = m(() => {
const { top: t, right: o, bottom: a, left: s } = e.value.style.chart.padding, l = Be.value, u = Le.value;
return {
chartHeight: Math.max(1e-3, l),
chartWidth: Math.max(1e-3, u),
height: Math.max(1e-3, l - t - a - V.value - c.value.datapointFontSize * 2),
width: Math.max(1e-3, u - s - o),
top: t + V.value + c.value.datapointFontSize,
left: s,
right: u - o,
bottom: l - a - c.value.datapointFontSize
};
}), _t = m(() => aa(e.value.customPalette)), b = d({
dataLabels: {
show: e.value.style.chart.yAxis.labels.datapoints.show
},
showTable: e.value.table.show,
showTooltip: e.value.style.chart.tooltip.show
});
ee(e, () => {
b.value = {
dataLabels: {
show: e.value.style.chart.yAxis.labels.datapoints.show
},
showTable: e.value.table.show,
showTooltip: e.value.style.chart.tooltip.show
};
}, { immediate: !0 });
const F = d([]);
function q(t) {
F.value.includes(t) ? F.value = F.value.filter((o) => o !== t) : F.value.push(t);
}
const N = m(() => Tt.value.map((t, o) => {
const a = oa(t.color) || _t.value[o] || te[o] || te[o % te.length];
return {
...t,
series: t.series.map((s) => ({
...s,
id: be(),
color: a
})),
seriesIndex: o,
color: a,
id: be(),
shape: t.shape || "circle"
};
}));
function Ee(t) {
if (!N.value.length)
return e.value.debug && console.warn("VueUiParallelCoordinatePlot - There are no series to show."), null;
const o = N.value.find((a) => a.name === t);
return o || (e.value.debug && console.warn(`VueUiParallelCoordinatePlot - Series name not found "${t}"`), null);
}
function Mt(t) {
const o = Ee(t);
o !== null && F.value.includes(o.id) && q(o.id);
}
function St(t) {
const o = Ee(t);
o !== null && (F.value.includes(o.id) || q(o.id));
}
const Re = m(() => N.value.map((t) => ({
...t,
opacity: F.value.includes(t.id) ? 0.5 : 1,
segregate: () => q(t.id),
isSegregated: F.value.includes(t.id),
shape: t.shape || "circle"
}))), Dt = m(() => ({
cy: "pcp-div-legend",
backgroundColor: e.value.style.chart.legend.backgroundColor,
color: e.value.style.chart.legend.color,
fontSize: e.value.style.chart.legend.fontSize,
paddingBottom: 12,
fontWeight: e.value.style.chart.legend.bold ? "bold" : ""
})), Ue = m(() => Math.max(
...N.value.filter((t) => !F.value.includes(t.id)).map((t) => Math.max(...t.series.flatMap((o) => o.values.length)))
)), A = m(() => f.value.width / Ue.value), ue = m(() => N.value.filter((t) => !F.value.includes(t.id))), y = m(() => {
let t = [];
for (let o = 0; o < Ue.value; o += 1) {
const a = Math.min(...ue.value.flatMap((C) => C.series.map((k) => k.values[o] || 0) || 0)), s = Math.max(...ue.value.flatMap((C) => C.series.map((k) => k.values[o] || 0) || 0)), l = s === a ? a / 4 : a, u = s === a ? s * 2 : s, r = la(l, u, e.value.style.chart.yAxis.scaleTicks), _ = r.ticks.map((C, k) => {
const Wt = r.min < 0 ? C + Math.abs(r.min) : C - Math.abs(r.min), jt = r.min < 0 ? r.max + Math.abs(r.min) : r.max - Math.abs(r.min);
return {
y: f.value.bottom - f.value.height * (Wt / jt),
x: f.value.left + A.value * o + A.value / 2,
value: C
};
});
t.push({
scale: r,
ticks: _,
name: e.value.style.chart.yAxis.labels.axisNames[o] || `Y-${o + 1}`
});
}
return t;
}), ce = m(() => ue.value.map((t, o) => ({
...t,
series: t.series.map((a, s) => ({
...a,
datapoints: a.values.map((l, u) => {
const r = y.value[u].scale.min < 0 ? (l || 0) + Math.abs(y.value[u].scale.min) : (l || 0) - Math.abs(y.value[u].scale.min), _ = y.value[u].scale.min < 0 ? y.value[u].scale.max + Math.abs(y.value[u].scale.min) : y.value[u].scale.max - Math.abs(y.value[u].scale.min);
return {
name: a.name,
seriesName: t.name,
axisIndex: u,
datapointIndex: s,
seriesIndex: o,
value: l || 0,
x: f.value.left + A.value * u + A.value / 2,
y: f.value.bottom - f.value.height * (r / _),
comment: a.comments && a.comments[u] || ""
};
})
}))
})).map((t) => ({
...t,
series: t.series.map((o) => {
const a = sa(o.datapoints), s = na(o.datapoints), l = ra(e.value.style.chart.lines.smooth ? `M ${s}` : `M ${a}`);
return {
...o,
smoothPath: s,
straightPath: a,
pathLength: l
};
})
})));
function He({ value: t, index: o, datapoint: a }) {
return ot(
e.value.style.chart.yAxis.labels.formatters[o] || null,
t,
lt({
p: e.value.style.chart.yAxis.labels.prefixes[o] || "",
v: t,
s: e.value.style.chart.yAxis.labels.suffixes[o] || "",
r: e.value.style.chart.yAxis.labels.roundings[o] || 0
}),
{ datapoint: a, seriesIndex: o }
);
}
const x = d(null), ve = d(null), de = d(!1), he = d("");
function J({ shape: t, serie: o, S: a }) {
e.value.events.datapointLeave && e.value.events.datapointLeave({ datapoint: { ...o, shape: t }, seriesIndex: a }), x.value = null, de.value = null;
}
function K({ shape: t, serieName: o, serie: a, relativeIndex: s, seriesIndex: l, S: u }) {
e.value.events.datapointEnter && e.value.events.datapointEnter({ datapoint: { ...a, shape: t }, seriesIndex: u }), ve.value = { serie: a, relativeIndex: s, seriesIndex: l, series: N.value, scales: y.value }, de.value = !0, x.value = a.id;
let r = "";
const _ = e.value.style.chart.tooltip.customFormat;
at(_) && da(() => _({
serie: a,
seriesIndex: a.seriesIndex,
series: N.value,
config: e.value,
scales: y.value
})) ? he.value = _({
serie: a,
seriesIndex: a.seriesIndex,
series: N.value,
config: e.value,
scales: y.value
}) : (r += `<div style="width:100%;text-align:center;border-bottom:1px solid ${e.value.style.chart.tooltip.borderColor};padding-bottom:6px;margin-bottom:3px;">${o ? o + " - " : ""}${a.name}</div>`, y.value.map((C) => C.name).forEach((C, k) => {
r += `
<div class="vue-ui-tooltip-item" style="text-align:left">
<span>${C}: </span>
<span>
${ot(
e.value.style.chart.yAxis.labels.formatters[k] || null,
a.datapoints[k].value,
lt({
p: e.value.style.chart.yAxis.labels.prefixes[k] || "",
v: a.datapoints[k].value,
s: e.value.style.chart.yAxis.labels.suffixes[k] || "",
r: e.value.style.chart.yAxis.labels.roundings[k] || ""
}),
{ datapoint: a.datapoints[k], seriesIndex: k }
)}
</span>
</div>
`, e.value.style.chart.comments.showInTooltip && a.datapoints[k].comment && (r += `<div class="vue-data-ui-tooltip-comment" style="background:${a.color}20; padding: 6px; margin-bottom: 6px; border-left: 1px solid ${a.color}">${a.datapoints[k].comment}</div>`);
}), he.value = `<div>${r}</div>`);
}
function It() {
return N.value;
}
const W = m(() => {
const t = [e.value.table.columnNames.series].concat([e.value.table.columnNames.item]).concat(y.value.map((l) => l.name)), o = ce.value.flatMap((l, u) => l.series.map((r) => [l.name].concat([r.name]).concat(r.values))), a = {
th: {
backgroundColor: e.value.table.th.backgroundColor,
color: e.value.table.th.color,
outline: e.value.table.th.outline
},
td: {
backgroundColor: e.value.table.td.backgroundColor,
color: e.value.table.td.color,
outline: e.value.table.td.outline
},
breakpoint: e.value.table.responsiveBreakpoint
}, s = [e.value.table.columnNames.series].concat([e.value.table.columnNames.item]).concat(y.value.map((l) => l.name));
return {
body: o,
head: t,
config: a,
colNames: s
};
}), We = m(() => ce.value.length === 0 ? { head: [], body: [], config: {}, columnNames: [] } : {
head: W.value.head,
body: W.value.body
});
function pe(t = null) {
const o = [[e.value.style.chart.title.text], [e.value.style.chart.title.subtitle.text], [""]], a = We.value.head, s = We.value.body, l = o.concat([a]).concat(s), u = ca(l);
t ? t(u) : va({ csvContent: u, title: e.value.style.chart.title.text || "vue-ui-parallel-coordinate-plot" });
}
const je = ft;
function Q({ serie: t, shape: o, S: a }) {
e.value.events.datapointClick && e.value.events.datapointClick({ datapoint: { ...t, shape: o }, seriesIndex: a }), je("selectDatapoint", t);
}
function Ve(t) {
je("selectLegend", {
...t,
isSegregated: !t.isSegregated,
opacity: t.isSegregated ? 1 : 0.5
});
}
function Ge() {
b.value.showTable = !b.value.showTable;
}
function Xe() {
b.value.dataLabels.show = !b.value.dataLabels.show;
}
function Ye() {
b.value.showTooltip = !b.value.showTooltip;
}
const Z = d(!1);
function fe() {
Z.value = !Z.value;
}
async function Pt({ scale: t = 2 } = {}) {
if (!M.value) return;
const { width: o, height: a } = M.value.getBoundingClientRect(), s = o / a, { imageUri: l, base64: u } = await Fa({ domElement: M.value, base64: !0, img: !0, scale: t });
return {
imageUri: l,
base64: u,
title: e.value.style.chart.title.text,
width: o,
height: a,
aspectRatio: s
};
}
const Ot = d({ start: 0, end: 1 }), Lt = m(() => y.value.map((t) => t.name));
xa({
timeLabelsEls: le,
timeLabels: Lt,
slicer: Ot,
configRef: e,
rotationPath: ["style", "chart", "yAxis", "labels", "axisNamesRotation"],
autoRotatePath: ["style", "chart", "yAxis", "labels", "axisNamesAutoRotate", "enable"],
isAutoSize: !1,
width: Le,
height: Be,
targetClass: ".vue-ui-parallel-coordinate-plot-x-label",
rotation: e.value.style.chart.yAxis.labels.axisNamesAutoRotate.angle
});
const G = m(() => {
const t = e.value.table.useDialog && !e.value.table.show, o = b.value.showTable;
return {
component: t ? At : gt,
title: `${e.value.style.chart.title.text}${e.value.style.chart.title.subtitle.text ? `: ${e.value.style.chart.title.subtitle.text}` : ""}`,
props: t ? {
backgroundColor: e.value.table.th.backgroundColor,
color: e.value.table.th.color,
headerColor: e.value.table.th.color,
headerBg: e.value.table.th.backgroundColor,
isFullscreen: E.value,
fullscreenParent: M.value,
forcedWidth: Math.min(800, window.innerWidth * 0.8)
} : {
hideDetails: !0,
config: {
open: o,
maxHeight: 1e4,
body: {
backgroundColor: e.value.style.chart.backgroundColor,
color: e.value.style.chart.color
},
head: {
backgroundColor: e.value.style.chart.backgroundColor,
color: e.value.style.chart.color
}
}
}
};
});
ee(() => b.value.showTable, (t) => {
e.value.table.show || (t && e.value.table.useDialog && j.value ? j.value.open() : "close" in j.value && j.value.close());
});
function qe() {
b.value.showTable = !1, oe.value && oe.value.setTableIconState(!1);
}
const Bt = m(() => e.value.style.chart.backgroundColor), Et = m(() => e.value.style.chart.legend), Rt = m(() => e.value.style.chart.title), { exportSvg: Ut, getSvg: Ht } = ga({
svg: re,
title: Rt,
legend: Et,
legendItems: Re,
backgroundColor: Bt
});
async function Je({ isCb: t }) {
if (t) {
const { blob: o, url: a, text: s, dataUrl: l } = await Ht();
e.value.userOptions.callbacks.svg({ blob: o, url: a, text: s, dataUrl: l });
} else
Ut();
}
return pt({
getData: It,
getImage: Pt,
generateCsv: pe,
generatePdf: Pe,
generateImage: Oe,
generateSvg: Je,
hideSeries: St,
showSeries: Mt,
toggleTable: Ge,
toggleLabels: Xe,
toggleTooltip: Ye,
toggleAnnotator: fe,
toggleFullscreen: ze
}), (t, o) => (n(), i("div", {
ref_key: "pcpChart",
ref: M,
class: X(`vue-data-ui-component vue-ui-pcp ${E.value ? "vue-data-ui-wrapper-fullscreen" : ""} ${e.value.useCssAnimation ? "" : "vue-ui-dna"}`),
style: S(`font-family:${e.value.style.fontFamily};width:100%; text-align:center;background:${e.value.style.chart.backgroundColor};${e.value.responsive ? "height:100%" : ""}`),
id: `pcp_${B.value}`,
onMouseenter: o[2] || (o[2] = () => v(Ne)(!0)),
onMouseleave: o[3] || (o[3] = () => v(Ne)(!1))
}, [
e.value.userOptions.buttons.annotator ? (n(), D(v(Ct), {
key: 0,
svgRef: v(re),
backgroundColor: e.value.style.chart.backgroundColor,
color: e.value.style.chart.color,
active: Z.value,
onClose: fe
}, {
"annotator-action-close": h(() => [
p(t.$slots, "annotator-action-close", {}, void 0, !0)
]),
"annotator-action-color": h(({ color: a }) => [
p(t.$slots, "annotator-action-color", T(z({ color: a })), void 0, !0)
]),
"annotator-action-draw": h(({ mode: a }) => [
p(t.$slots, "annotator-action-draw", T(z({ mode: a })), void 0, !0)
]),
"annotator-action-undo": h(({ disabled: a }) => [
p(t.$slots, "annotator-action-undo", T(z({ disabled: a })), void 0, !0)
]),
"annotator-action-redo": h(({ disabled: a }) => [
p(t.$slots, "annotator-action-redo", T(z({ disabled: a })), void 0, !0)
]),
"annotator-action-delete": h(({ disabled: a }) => [
p(t.$slots, "annotator-action-delete", T(z({ disabled: a })), void 0, !0)
]),
_: 3
}, 8, ["svgRef", "backgroundColor", "color", "active"])) : g("", !0),
zt.value ? (n(), i("div", {
key: 1,
ref_key: "noTitle",
ref: Ae,
class: "vue-data-ui-no-title-space",
style: "height:36px; width: 100%;background:transparent"
}, null, 512)) : g("", !0),
e.value.style.chart.title.text ? (n(), i("div", {
key: 2,
ref_key: "chartTitle",
ref: Ce,
style: "width:100%;background:transparent;padding-bottom:24px"
}, [
(n(), D(Aa, {
key: `title_${we.value}`,
config: {
title: {
cy: "pcp-div-title",
...e.value.style.chart.title
},
subtitle: {
cy: "pcp-div-subtitle",
...e.value.style.chart.title.subtitle
}
}
}, null, 8, ["config"]))
], 512)) : g("", !0),
I("div", {
id: `legend-top-${B.value}`
}, null, 8, Na),
e.value.userOptions.show && Y.value && (v(_e) || v(ne)) ? (n(), D(v(kt), {
ref_key: "userOptionsRef",
ref: oe,
key: `user_options_${ye.value}`,
backgroundColor: e.value.style.chart.backgroundColor,
color: e.value.style.chart.color,
isPrinting: v(De),
isImaging: v(Ie),
uid: B.value,
hasTooltip: e.value.userOptions.buttons.tooltip && e.value.style.chart.tooltip.show,
hasPdf: e.value.userOptions.buttons.pdf,
hasXls: e.value.userOptions.buttons.csv,
hasImg: e.value.userOptions.buttons.img,
hasSvg: e.value.userOptions.buttons.svg,
hasTable: e.value.userOptions.buttons.table,
hasLabel: e.value.userOptions.buttons.labels,
hasFullscreen: e.value.userOptions.buttons.fullscreen,
isFullscreen: E.value,
isTooltip: b.value.showTooltip,
titles: { ...e.value.userOptions.buttonTitles },
chartElement: M.value,
position: e.value.userOptions.position,
hasAnnotator: e.value.userOptions.buttons.annotator,
isAnnotation: Z.value,
callbacks: e.value.userOptions.callbacks,
printScale: e.value.userOptions.print.scale,
tableDialog: e.value.table.useDialog,
onToggleFullscreen: ze,
onGeneratePdf: v(Pe),
onGenerateCsv: pe,
onGenerateImage: v(Oe),
onGenerateSvg: Je,
onToggleTable: Ge,
onToggleLabels: Xe,
onToggleTooltip: Ye,
onToggleAnnotator: fe,
style: S({
visibility: v(_e) ? v(ne) ? "visible" : "hidden" : "visible"
})
}, Qe({ _: 2 }, [
t.$slots.menuIcon ? {
name: "menuIcon",
fn: h(({ isOpen: a, color: s }) => [
p(t.$slots, "menuIcon", T(z({ isOpen: a, color: s })), void 0, !0)
]),
key: "0"
} : void 0,
t.$slots.optionPdf ? {
name: "optionPdf",
fn: h(() => [
p(t.$slots, "optionPdf", {}, void 0, !0)
]),
key: "1"
} : void 0,
t.$slots.optionCsv ? {
name: "optionCsv",
fn: h(() => [
p(t.$slots, "optionCsv", {}, void 0, !0)
]),
key: "2"
} : void 0,
t.$slots.optionImg ? {
name: "optionImg",
fn: h(() => [
p(t.$slots, "optionImg", {}, void 0, !0)
]),
key: "3"
} : void 0,
t.$slots.optionSvg ? {
name: "optionSvg",
fn: h(() => [
p(t.$slots, "optionSvg", {}, void 0, !0)
]),
key: "4"
} : void 0,
t.$slots.optionTable ? {
name: "optionTable",
fn: h(() => [
p(t.$slots, "optionTable", {}, void 0, !0)
]),
key: "5"
} : void 0,
t.$slots.optionLabels ? {
name: "optionLabels",
fn: h(() => [
p(t.$slots, "optionLabels", {}, void 0, !0)
]),
key: "6"
} : void 0,
t.$slots.optionFullscreen ? {
name: "optionFullscreen",
fn: h(({ toggleFullscreen: a, isFullscreen: s }) => [
p(t.$slots, "optionFullscreen", T(z({ toggleFullscreen: a, isFullscreen: s })), void 0, !0)
]),
key: "7"
} : void 0,
t.$slots.optionAnnotator ? {
name: "optionAnnotator",
fn: h(({ toggleAnnotator: a, isAnnotator: s }) => [
p(t.$slots, "optionAnnotator", T(z({ toggleAnnotator: a, isAnnotator: s })), void 0, !0)
]),
key: "8"
} : void 0
]), 1032, ["backgroundColor", "color", "isPrinting", "isImaging", "uid", "hasTooltip", "hasPdf", "hasXls", "hasImg", "hasSvg", "hasTable", "hasLabel", "hasFullscreen", "isFullscreen", "isTooltip", "titles", "chartElement", "position", "hasAnnotator", "isAnnotation", "callbacks", "printScale", "tableDialog", "onGeneratePdf", "onGenerateImage", "style"])) : g("", !0),
(n(), i("svg", {
ref_key: "svgRef",
ref: re,
xmlns: v(ia),
class: X({ "vue-data-ui-fullscreen--on": E.value, "vue-data-ui-fulscreen--off": !E.value }),
viewBox: `0 0 ${f.value.chartWidth <= 0 ? 10 : f.value.chartWidth} ${f.value.chartHeight <= 0 ? 10 : f.value.chartHeight}`,
style: S(`max-width:100%; overflow: visible; background:transparent;color:${e.value.style.chart.color}`)
}, [
me(v(xt)),
t.$slots["chart-background"] ? (n(), i("foreignObject", {
key: 0,
x: f.value.left,
y: f.value.top,
width: f.value.width,
height: f.value.height,
style: {
pointerEvents: "none"
}
}, [
p(t.$slots, "chart-background", {}, void 0, !0)
], 8, Ma)) : g("", !0),
(n(!0), i(w, null, P(y.value, (a, s) => (n(), i("g", Sa, [
I("line", {
x1: f.value.left + A.value * s + A.value / 2,
x2: f.value.left + A.value * s + A.value / 2,
y1: f.value.top,
y2: f.value.bottom,
stroke: e.value.style.chart.yAxis.stroke,
"stroke-width": e.value.style.chart.yAxis.strokeWidth
}, null, 8, Da),
e.value.style.chart.yAxis.labels.ticks.show ? (n(), i(w, { key: 0 }, [
(n(!0), i(w, null, P(a.ticks, (l) => (n(), i("line", {
x1: l.x,
x2: l.x - 10,
y1: l.y,
y2: l.y,
stroke: e.value.style.chart.yAxis.stroke,
"stroke-width": e.value.style.chart.yAxis.strokeWidth,
style: S(`opacity:${x.value && !b.value.showTooltip ? 0.2 : 1}`)
}, null, 12, Ia))), 256)),
v(R) ? g("", !0) : (n(), i("g", Pa, [
(n(!0), i(w, null, P(a.ticks, (l) => (n(), i("text", {
x: l.x - 12 + e.value.style.chart.yAxis.labels.ticks.offsetX,
y: l.y + e.value.style.chart.yAxis.labels.ticks.offsetY + c.value.ticksFontSize / 3,
fill: e.value.style.chart.yAxis.labels.ticks.color,
"text-anchor": "end",
"font-size": c.value.ticksFontSize,
"font-weight": e.value.style.chart.yAxis.labels.ticks.bold ? "bold" : "normal",
style: S(`opacity:${x.value && !b.value.showTooltip ? 0.2 : 1}`)
}, U(He({ value: l.value, index: s, datapoint: l })), 13, Oa))), 256))
]))
], 64)) : g("", !0)
]))), 256)),
e.value.style.chart.yAxis.labels.showAxisNames ? (n(), i("g", {
key: 1,
ref_key: "xAxisLabels",
ref: le
}, [
(n(!0), i(w, null, P(y.value, (a, s) => (n(), i(w, null, [
String(a.name).includes(`
`) ? (n(), i("text", {
key: 1,
class: "vue-ui-parallel-coordinate-plot-x-label",
fill: e.value.style.chart.yAxis.labels.axisNamesColor,
"font-size": c.value.axisNameFontSize,
"font-weight": e.value.style.chart.yAxis.labels.axisNamesBold ? "bold" : "",
"text-anchor": e.value.style.chart.yAxis.labels.axisNamesRotation === 0 ? "middle" : e.value.style.chart.yAxis.labels.axisNamesRotation < 0 ? "start" : "end",
transform: `translate(${f.value.left + A.value * s + A.value / 2}, ${V.value - c.value.axisNameFontSize}), rotate(${e.value.style.chart.yAxis.labels.axisNamesRotation})`,
innerHTML: v(ua)({
content: String(a.name),
fontSize: c.value.axisNameFontSize,
fill: e.value.style.chart.yAxis.labels.axisNamesColor,
x: 0,
y: 0
})
}, null, 8, Ba)) : (n(), i("text", {
key: 0,
class: "vue-ui-parallel-coordinate-plot-x-label",
fill: e.value.style.chart.yAxis.labels.axisNamesColor,
"font-size": c.value.axisNameFontSize,
"font-weight": e.value.style.chart.yAxis.labels.axisNamesBold ? "bold" : "",
"text-anchor": e.value.style.chart.yAxis.labels.axisNamesRotation === 0 ? "middle" : e.value.style.chart.yAxis.labels.axisNamesRotation < 0 ? "start" : "end",
transform: `translate(${f.value.left + A.value * s + A.value / 2}, ${V.value - c.value.axisNameFontSize}), rotate(${e.value.style.chart.yAxis.labels.axisNamesRotation})`
}, U(a.name), 9, La))
], 64))), 256))
], 512)) : g("", !0),
(n(!0), i(w, null, P(ce.value, (a, s) => (n(), i("g", null, [
(n(!0), i(w, null, P(a.series, (l, u) => (n(), i("g", null, [
e.value.style.chart.plots.show ? (n(), i("g", Ea, [
(n(!0), i(w, null, P(l.datapoints, (r, _) => (n(), D($a, {
plot: { x: r.x, y: r.y },
color: a.color,
shape: a.shape,
radius: a.shape === "triangle" ? c.value.plotSize * 1.2 : c.value.plotSize,
stroke: e.value.style.chart.backgroundColor,
strokeWidth: 0.5,
onMouseenter: (C) => K({
shape: a.shape,
serieName: a.name,
serie: l,
relativeIndex: u,
seriesIndex: l.seriesIndex,
S: s
}),
onMouseleave: (C) => J({ serie: l, shape: a.shape, S: s }),
style: S(`opacity:${x.value ? x.value === l.id ? e.value.style.chart.plots.opacity : 0.2 : e.value.style.chart.plots.opacity}`),
onClick: () => Q({ serie: l, shape: a.shape, S: s })
}, null, 8, ["plot", "color", "shape", "radius", "stroke", "onMouseenter", "onMouseleave", "style", "onClick"]))), 256)),
b.value.showTooltip ? g("", !0) : (n(), i(w, { key: 0 }, [
x.value && x.value === l.id && l.datapoints.length ? (n(), i("text", {
key: 0,
x: l.datapoints[0].x - c.value.ticksFontSize,
y: l.datapoints[0].y + c.value.ticksFontSize / 3,
"text-anchor": "end",
"font-size": c.value.ticksFontSize,
fill: a.color,
"font-weight": "bold"
}, U(l.name), 9, Ra)) : g("", !0)
], 64)),
e.value.style.chart.comments.show ? (n(!0), i(w, { key: 1 }, P(l.datapoints, (r) => (n(), i("g", null, [
r.comment ? (n(), i("foreignObject", {
key: 0,
style: { overflow: "visible" },
height: "12",
width: e.value.style.chart.comments.width,
x: r.x - e.value.style.chart.comments.width / 2 + e.value.style.chart.comments.offsetX,
y: r.y + e.value.style.chart.comments.offsetY + 6
}, [
I("div", Ha, [
p(t.$slots, "plot-comment", {
plot: { ...r, color: a.color }
}, void 0, !0)
])
], 8, Ua)) : g("", !0)
]))), 256)) : g("", !0)
])) : g("", !0),
!v(R) && (b.value.dataLabels.show || x.value && x.value === l.id) ? (n(!0), i(w, { key: 1 }, P(l.datapoints, (r, _) => (n(), i("text", {
x: r.x + 12 + e.value.style.chart.yAxis.labels.datapoints.offsetX,
y: r.y + e.value.style.chart.yAxis.labels.datapoints.offsetY + c.value.datapointFontSize / 3,
fill: e.value.style.chart.yAxis.labels.datapoints.useSerieColor ? a.color : e.value.style.chart.yAxis.labels.datapoints.color,
"text-anchor": "start",
"font-weight": e.value.style.chart.yAxis.labels.datapoints.bold ? "bold" : "normal",
class: X({ "vue-ui-pcp-animated": !1, "vue-ui-pcp-transition": !v(R) }),
"font-size": c.value.datapointFontSize,
onMouseenter: (C) => K({
shape: a.shape,
serieName: a.name,
serie: l,
relativeIndex: u,
seriesIndex: l.seriesIndex,
S: s
}),
onMouseleave: (C) => J({ serie: l, shape: a.shape, S: s }),
onClick: () => Q({ serie: l, shape: a.shape, S: s }),
style: S(`opacity:${x.value ? x.value === l.id ? 1 : 0.2 : 1}`)
}, U(He({ value: r.value, index: _, datapoint: r })), 47, Wa))), 256)) : g("", !0),
I("path", {
d: `M${e.value.style.chart.lines.smooth ? l.smoothPath : l.straightPath}`,
stroke: a.color,
"stroke-width": e.value.style.chart.lines.strokeWidth,
fill: "none",
class: X({ "vue-ui-pcp-animated vue-data-ui-line-animated": e.value.useCssAnimation, "vue-ui-pcp-transition": !v(R) }),
onMouseenter: (r) => K({
shape: a.shape,
serieName: a.name,
serie: l,
relativeIndex: u,
seriesIndex: l.seriesIndex,
S: s
}),
onMouseleave: (r) => J({ serie: l, shape: a.shape, S: s }),
onClick: () => Q({ serie: l, shape: a.shape, S: s }),
style: S(`opacity:${x.value ? x.value === l.id ? e.value.style.chart.lines.opacity : 0.2 : e.value.style.chart.lines.opacity}; stroke-dasharray:${l.pathLength}; stroke-dashoffset: ${e.value.useCssAnimation ? l.pathLength : 0}`)
}, null, 46, ja),
b.value.showTooltip ? (n(), i("path", {
key: 2,
d: `M${e.value.style.chart.lines.smooth ? l.smoothPath : l.straightPath}`,
stroke: "transparent",
"stroke-width": 12,
fill: "none",
class: X({ "vue-ui-pcp-animated vue-data-ui-line-animated": e.value.useCssAnimation, "vue-ui-pcp-transition": !v(R) }),
onMouseenter: (r) => K({
shape: a.shape,
serieName: a.name,
serie: l,
relativeIndex: u,
seriesIndex: l.seriesIndex,
S: s
}),
onMouseleave: (r) => J({ serie: l, shape: a.shape, S: s }),
onClick: () => Q({ serie: l, shape: a.shape, S: s }),
style: { opacity: "0" }
}, null, 42, Va)) : g("", !0)
]))), 256))
]))), 256)),
p(t.$slots, "svg", { svg: f.value }, void 0, !0)
], 14, _a)),
t.$slots.watermark ? (n(), i("div", Ga, [
p(t.$slots, "watermark", T(z({ isPrinting: v(De) || v(Ie) })), void 0, !0)
])) : g("", !0),
I("div", {
id: `legend-bottom-${B.value}`
}, null, 8, Xa),
Te.value ? (n(), D(qt, {
key: 5,
to: e.value.style.chart.legend.position === "top" ? `#legend-top-${B.value}` : `#legend-bottom-${B.value}`
}, [
I("div", {
ref_key: "chartLegend",
ref: ke
}, [
e.value.style.chart.legend.show && Y.value ? (n(), D(wa, {
key: `legend_${$e.value}`,
legendSet: Re.value,
config: Dt.value,
onClickMarker: o[0] || (o[0] = ({ legend: a }) => {
q(a.id), Ve(a);
})
}, {
item: h(({ legend: a, index: s }) => [
I("div", {
onClick: (l) => {
a.segregate(), Ve(a);
},
style: S(`opacity:${F.value.includes(a.id) ? 0.5 : 1}`)
}, U(a.name), 13, Ya)
]),
_: 1
}, 8, ["legendSet", "config"])) : p(t.$slots, "legend", {
key: 1,
legend: N.value
}, void 0, !0)
], 512)
], 8, ["to"])) : g("", !0),
t.$slots.source ? (n(), i("div", {
key: 6,
ref_key: "source",
ref: xe,
dir: "auto"
}, [
p(t.$slots, "source", {}, void 0, !0)
], 512)) : g("", !0),
me(v(mt), {
show: b.value.showTooltip && de.value,
backgroundColor: e.value.style.chart.tooltip.backgroundColor,
color: e.value.style.chart.tooltip.color,
fontSize: e.value.style.chart.tooltip.fontSize,
borderRadius: e.value.style.chart.tooltip.borderRadius,
borderColor: e.value.style.chart.tooltip.borderColor,
borderWidth: e.value.style.chart.tooltip.borderWidth,
backgroundOpacity: e.value.style.chart.tooltip.backgroundOpacity,
position: e.value.style.chart.tooltip.position,
offsetY: e.value.style.chart.tooltip.offsetY,
parent: M.value,
content: he.value,
isFullscreen: E.value,
isCustom: v(at)(e.value.style.chart.tooltip.customFormat),
smooth: e.value.style.chart.tooltip.smooth,
backdropFilter: e.value.style.chart.tooltip.backdropFilter,
smoothForce: e.value.style.chart.tooltip.smoothForce,
smoothSnapThreshold: e.value.style.chart.tooltip.smoothSnapThreshold
}, {
"tooltip-before": h(() => [
p(t.$slots, "tooltip-before", T(z({ ...ve.value })), void 0, !0)
]),
"tooltip-after": h(() => [
p(t.$slots, "tooltip-after", T(z({ ...ve.value })), void 0, !0)
]),
_: 3
}, 8, ["show", "backgroundColor", "color", "fontSize", "borderRadius", "borderColor", "borderWidth", "backgroundOpacity", "position", "offsetY", "parent", "content", "isFullscreen", "isCustom", "smooth", "backdropFilter", "smoothForce", "smoothSnapThreshold"]),
Y.value && e.value.userOptions.buttons.table ? (n(), D(Jt(G.value.component), Kt({ key: 7 }, G.value.props, {
ref_key: "tableUnit",
ref: j,
onClose: qe
}), Qe({
content: h(() => [
(n(), D(v(yt), {
key: `table_${Fe.value}`,
colNames: W.value.colNames,
head: W.value.head,
body: W.value.body,
config: W.value.config,
title: e.value.table.useDialog ? "" : G.value.title,
withCloseButton: !e.value.table.useDialog,
onClose: qe
}, {
th: h(({ th: a }) => [
I("div", { innerHTML: a }, null, 8, qa)
]),
td: h(({ td: a }) => [
Ze(U(a), 1)
]),
_: 1
}, 8, ["colNames", "head", "body", "config", "title", "withCloseButton"]))
]),
_: 2
}, [
e.value.table.useDialog ? {
name: "title",
fn: h(() => [
Ze(U(G.value.title), 1)
]),
key: "0"
} : void 0,
e.value.table.useDialog ? {
name: "actions",
fn: h(() => [
I("button", {
tabindex: "0",
class: "vue-ui-user-options-button",
onClick: o[1] || (o[1] = (a) => pe(e.value.userOptions.callbacks.csv))
}, [
me(v(bt), {
name: "excel",
stroke: G.value.props.color
}, null, 8, ["stroke"])
])
]),
key: "1"
} : void 0
]), 1040)) : g("", !0),
v(R) ? (n(), D(ba, { key: 8 })) : g("", !0)
], 46, za));
}
}, Ka = /* @__PURE__ */ Ta(Ja, [["__scopeId", "data-v-43c25705"]]), mo = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
default: Ka
}, Symbol.toStringTag, { value: "Module" }));
export {
fo as a,
mo as b,
Ka as v
};