vue-data-ui-hq
Version:
A user-empowering data visualization Vue 3 components library for eloquent data storytelling
876 lines (875 loc) • 36.5 kB
JavaScript
import { ref as h, computed as v, onMounted as We, onBeforeUnmount as He, watch as Ee, openBlock as o, createElementBlock as n, unref as e, normalizeClass as O, normalizeStyle as $, renderSlot as x, createBlock as z, createCommentVNode as y, createSlots as Ge, withCtx as m, normalizeProps as Y, guardReactiveProps as j, createVNode as ke, Fragment as b, renderList as k, createElementVNode as T, toDisplayString as L, createTextVNode as Ve, nextTick as Re } from "vue";
import { u as qe, c as we, o as Ze, e as Ce, g as Je, b as Ke, d as Qe, p as E, D as _e, i as I, f as F, X as et, l as tt, h as lt, G as st, t as at, a as ot, C as G, x as rt, q as nt, r as it, F as N } from "./index-WrV3SAID.js";
import { u as $e } from "./useNestedProp-Cj0kHD7k.js";
import { u as ut, U as ct } from "./usePrinter-kVpf1iV8.js";
import { _ as ht } from "./PackageVersion-1NslmM8M.js";
import { L as yt } from "./Legend-7H4oi6Sq.js";
import { _ as dt } from "./Title-BR-xoRp4.js";
import { _ as ft } from "./Tooltip-ho4JxRm-.js";
import { D as vt } from "./DataTable-DNPvKWC0.js";
import xt from "./vue-ui-accordion-BQCDXXDs.js";
import { P as pt } from "./PenAndPaper-BF1ZRVm3.js";
import mt from "./vue-ui-skeleton-Qec_XSRf.js";
import { t as gt, u as bt } from "./useResponsive-CoxXLe23.js";
import { u as kt } from "./useUserOptionState-BIvW1Kz7.js";
import { _ as wt } from "./_plugin-vue_export-helper-CHgC5LLL.js";
const Ct = ["id"], _t = ["xmlns", "viewBox"], $t = ["x", "y", "width", "height"], Mt = { key: 1 }, At = ["id"], Tt = ["stop-color"], Lt = ["stop-color"], St = ["stop-color"], zt = { key: 2 }, Nt = ["x1", "x2", "y1", "y2", "stroke", "stroke-width"], Pt = { key: 3 }, Ot = ["x", "y", "fill", "font-size"], It = ["transform", "font-size", "fill", "font-weight"], Ft = { key: 5 }, Xt = ["x1", "x2", "y1", "y2", "stroke", "stroke-width"], Dt = { key: 6 }, Yt = ["transform", "fill", "font-size", "text-anchor"], jt = ["x", "y", "font-size", "fill", "font-weight"], Bt = ["x1", "x2", "y1", "y2", "stroke", "stroke-width"], Ut = ["x1", "x2", "y1", "y2", "stroke", "stroke-width"], Wt = ["d", "stroke", "stroke-width"], Ht = ["d", "stroke", "stroke-width"], Et = ["cx", "cy", "fill", "r"], Gt = ["cx", "cy", "fill", "r", "stroke", "stroke-width"], Vt = { key: 1 }, Rt = ["x", "y", "font-size", "fill", "font-weight"], qt = { key: 2 }, Zt = ["x", "y", "font-size", "font-weight", "fill"], Jt = ["cx", "cy", "r", "onMouseenter", "onClick"], Kt = {
key: 5,
class: "vue-data-ui-watermark"
}, Qt = ["onClick"], el = ["innerHTML"], tl = {
__name: "vue-ui-history-plot",
props: {
config: {
type: Object,
default() {
return {};
}
},
dataset: {
type: Array,
default() {
return [];
}
}
},
emits: ["selectLegend", "selectDatapoint"],
setup(Me, { expose: Ae, emit: Te }) {
const { vue_ui_history_plot: Le } = qe(), d = Me, P = h(null), K = h(null), Q = h(0), ee = h(null), te = h(0), le = h(0), se = h(0), B = h(null), ae = h(null), X = h(we()), V = h(!1), R = h(""), g = h([]), U = h(!1), _ = h(null), D = h(!1), oe = h(null), w = v({
get: () => !!d.dataset && d.dataset.length,
set: (l) => l
}), re = Te;
We(ne), He(() => {
B.value && B.value.disconnect();
});
function ne() {
if (Ze(d.dataset) ? Ce({
componentName: "VueUiHistoryPlot",
type: "dataset"
}) : d.dataset.forEach((l, a) => {
Je({
datasetObject: l,
requiredAttributes: ["name", "values"]
}).forEach((s) => {
w.value = !1, Ce({
componentName: "VueUiHistoryPlot",
type: "datasetSerieAttribute",
property: s,
index: a
});
});
}), t.value.responsive) {
const l = gt(() => {
const { width: a, height: s } = bt({
chart: P.value,
title: t.value.style.chart.title.text ? K.value : null,
noTitle: ae.value,
legend: t.value.style.chart.legend.show ? ee.value : null,
source: oe.value
});
f.value.width = a, f.value.height = s, u.value.plots = N({
relator: Math.min(a, s),
adjuster: 600,
source: t.value.style.chart.plots.radius,
threshold: 3,
fallback: 3
}), u.value.indexLabels = N({
relator: Math.min(a, s),
adjuster: 600,
source: t.value.style.chart.plots.indexLabels.fontSize,
threshold: 6,
fallback: 6
}), u.value.labels = N({
relator: Math.min(a, s),
adjuster: 600,
source: t.value.style.chart.plots.labels.fontSize,
threshold: 6,
fallback: 6
}), u.value.xAxisLabels = N({
relator: Math.min(a, s),
adjuster: 600,
source: t.value.style.chart.axes.x.labels.fontSize,
threshold: 6,
fallback: 6
}), u.value.xAxisName = N({
relator: Math.min(a, s),
adjuster: 600,
source: t.value.style.chart.axes.x.name.fontSize,
threshold: 6,
fallback: 6
}), u.value.yAxisLabels = N({
relator: Math.min(a, s),
adjuster: 600,
source: t.value.style.chart.axes.y.labels.fontSize,
threshold: 6,
fallback: 6
}), u.value.yAxisName = N({
relator: Math.min(a, s),
adjuster: 600,
source: t.value.style.chart.axes.y.name.fontSize,
threshold: 6,
fallback: 6
});
});
B.value = new ResizeObserver(l), B.value.observe(P.value.parentNode);
}
}
function ie() {
const l = $e({
userConfig: d.config,
defaultConfig: Le
});
let a = {};
return l.theme ? a = {
...$e({
userConfig: at.vue_ui_history_plot[l.theme] || d.config,
defaultConfig: l
}),
customPalette: ot[l.theme] || E
} : a = l, d.config && G(d.config, "style.chart.axes.x.scaleMin") ? a.style.chart.axes.x.scaleMin = d.config.style.chart.axes.x.scaleMin : a.style.chart.axes.x.scaleMin = null, d.config && G(d.config, "style.chart.axes.x.scaleMax") ? a.style.chart.axes.x.scaleMax = d.config.style.chart.axes.x.scaleMax : a.style.chart.axes.x.scaleMax = null, d.config && G(d.config, "style.chart.axes.y.scaleMin") ? a.style.chart.axes.y.scaleMin = d.config.style.chart.axes.y.scaleMin : a.style.chart.axes.y.scaleMin = null, d.config && G(d.config, "style.chart.axes.y.scaleMax") ? a.style.chart.axes.y.scaleMax = d.config.style.chart.axes.y.scaleMax : a.style.chart.axes.y.scaleMax = null, a;
}
const t = v({
get: () => ie(),
set: (l) => l
}), { userOptionsVisible: q, setUserOptionsVisibility: ue, keepUserOptionState: ce } = kt({ config: t.value });
Ee(() => d.config, (l) => {
t.value = ie(), q.value = !t.value.showOnChartHover, ne(), Q.value += 1, le.value += 1, te.value += 1, f.value.height = t.value.style.chart.height, f.value.width = t.value.style.chart.width, u.value.plots = t.value.style.chart.plots.radius, u.value.indexLabels = t.value.style.chart.plots.indexLabels.fontSize, u.value.labels = t.value.style.chart.plots.labels.fontSize, u.value.xAxisLabels = t.value.style.chart.axes.x.labels.fontSize, u.value.xAxisName = t.value.style.chart.axes.x.name.fontSize, u.value.yAxisLabels = t.value.style.chart.axes.y.labels.fontSize, u.value.yAxisName = t.value.style.chart.axes.y.name.fontSize;
}, { deep: !0 });
const { isPrinting: he, isImaging: ye, generatePdf: de, generateImage: fe } = ut({
elementId: `history_plot_${X.value}`,
fileName: t.value.style.chart.title.text || "vue-ui-history-plot"
}), Se = v(() => t.value.userOptions.show && !t.value.style.chart.title.text), ze = v(() => Ke(t.value.customPalette)), M = h({
showTable: t.value.table.show,
showTooltip: t.value.style.chart.tooltip.show
}), f = h({
height: t.value.style.chart.height,
width: t.value.style.chart.width
}), i = v(() => {
const l = t.value.style.chart.padding.left, a = t.value.style.chart.padding.top;
return {
left: l,
top: a,
right: f.value.width - t.value.style.chart.padding.right,
bottom: f.value.height - t.value.style.chart.padding.bottom,
width: f.value.width - l - t.value.style.chart.padding.right,
height: f.value.height - a - t.value.style.chart.padding.bottom
};
}), u = h({
plots: t.value.style.chart.plots.radius,
indexLabels: t.value.style.chart.plots.indexLabels.fontSize,
labels: t.value.style.chart.plots.labels.fontSize,
xAxisLabels: t.value.style.chart.axes.x.labels.fontSize,
xAxisName: t.value.style.chart.axes.x.name.fontSize,
yAxisLabels: t.value.style.chart.axes.y.labels.fontSize,
yAxisName: t.value.style.chart.axes.y.name.fontSize
}), A = v(() => w.value ? d.dataset.map((l, a) => ({
...l,
color: l.color ? Qe(l.color) : ze.value[a] || E[a] || E[a % E.length],
seriesIndex: a
})) : []), Ne = v(() => w.value ? Math.max(...A.value.filter((l) => !g.value.includes(l.seriesIndex)).flatMap((l) => l.values.map((a) => a.x))) : 1), Pe = v(() => {
if (!w.value) return 1;
const l = Math.min(...A.value.filter((a) => !g.value.includes(a.seriesIndex)).flatMap((a) => a.values.map((s) => s.x)));
return l < 0 ? l : 0;
}), Oe = v(() => w.value ? Math.max(...A.value.filter((l) => !g.value.includes(l.seriesIndex)).flatMap((l) => l.values.map((a) => a.y))) : 1), Ie = v(() => {
if (!w.value) return 1;
const l = Math.min(...A.value.filter((a) => !g.value.includes(a.seriesIndex)).flatMap((a) => a.values.map((s) => s.y)));
return l < 0 ? l : 0;
}), p = v(() => {
const l = _e(
t.value.style.chart.axes.x.scaleMin === null ? Pe.value : t.value.style.chart.axes.x.scaleMin,
t.value.style.chart.axes.x.scaleMax === null ? Ne.value : t.value.style.chart.axes.x.scaleMax,
t.value.style.chart.axes.x.ticks
), a = _e(
t.value.style.chart.axes.y.scaleMin === null ? Ie.value : t.value.style.chart.axes.y.scaleMin,
t.value.style.chart.axes.y.scaleMax === null ? Oe.value : t.value.style.chart.axes.y.scaleMax,
t.value.style.chart.axes.y.ticks
);
return {
x: l,
y: a,
tickX: l.ticks.map((s) => ({
x: i.value.left + (s - l.min) / (l.max - l.min) * i.value.width,
y1: i.value.top,
y2: i.value.bottom,
value: s
})),
tickY: a.ticks.map((s) => ({
y: i.value.bottom - (s - a.min) / (a.max - a.min) * i.value.height,
x1: i.value.left,
x2: i.value.right,
value: s
}))
};
});
function Fe(l) {
const a = p.value.x.min < 0 ? Math.abs(p.value.x.min) : p.value.x.min > 0 ? -p.value.x.min : 0;
return i.value.left + ((l || 0) + a) / (p.value.x.max + a) * i.value.width;
}
function Xe(l) {
const a = p.value.y.min < 0 ? Math.abs(p.value.y.min) : p.value.y.min > 0 ? -p.value.y.min : 0;
return i.value.bottom - ((l || 0) + a) / (p.value.y.max + a) * i.value.height;
}
const S = v(() => A.value.filter((l) => !g.value.includes(l.seriesIndex)).map((l, a) => {
const s = l.values.map((r, C) => ({
valueX: r.x,
valueY: r.y,
label: r.label,
x: Fe(r.x),
y: Xe(r.y),
color: l.color,
seriesName: l.name,
id: we()
})), c = s.map((r) => `${r.x},${r.y} `).join("").trim();
return {
...l,
plots: s,
path: `M${c}`
};
}));
function ve(l) {
g.value.includes(l) ? g.value = g.value.filter((a) => a !== l) : g.value.push(l);
}
const xe = v(() => A.value.map((l) => ({
...l,
opacity: g.value.includes(l.seriesIndex) ? 0.5 : 1,
segregate: () => ve(l.seriesIndex),
isSegregated: g.value.includes(l.seriesIndex),
shape: "circle"
}))), De = v(() => ({
cy: "history-plot-div-legend",
backgroundColor: t.value.style.chart.legend.backgroundColor,
color: t.value.style.chart.legend.color,
fontSize: t.value.style.chart.legend.fontSize,
paddingBottom: 12,
fontWeight: t.value.style.chart.legend.bold ? "bold" : ""
}));
function Ye(l) {
re("selectDatapoint", l);
}
function pe(l) {
re("selectLegend", {
...l,
isSegregated: !l.isSegregated,
opacity: l.isSegregated ? 1 : 0.5
});
}
function je(l) {
U.value = l, se.value += 1;
}
const Z = h(null);
function Be({ datapoint: l, plotIndex: a, seriesIndex: s }) {
Z.value = { datapoint: l, seriesIndex: s, plotIndex: a, config: t.value, series: A.value }, _.value = l;
const c = t.value.style.chart.tooltip.customFormat;
if (D.value = !1, rt(c))
try {
const r = c({
seriesIndex: s,
datapoint: l,
plotIndex: a,
series: A.value,
config: t.value
});
typeof r == "string" && (R.value = r, D.value = !0);
} catch {
console.warn("Custom format cannot be applied."), D.value = !1;
}
if (!D.value) {
let r = "";
r += `<div style="display:flex;flex-direction:row;gap:6px;align-items:center;border-bottom:1px solid ${t.value.style.chart.tooltip.borderColor};margin-bottom:3px;padding-bottom:6px;"><svg viewBox="0 0 12 12" height="14" width="14"><circle cx="6" cy="6" r="6" stroke="none" fill="${l.color}"/></svg><span>${l.seriesName}</span></div>`, r += `<div>${l.label}</div>`, r += `<div>${t.value.style.chart.axes.x.name.text || "x"}: ${I(
t.value.style.chart.axes.x.labels.formatter,
l.valueX,
F({
p: t.value.style.chart.axes.x.labels.prefix,
v: l.valueX,
s: t.value.style.chart.axes.x.labels.suffix,
r: t.value.style.chart.axes.x.labels.rounding
})
)}</div>`, r += `<div>${t.value.style.chart.axes.y.name.text || "y"}: ${I(
t.value.style.chart.axes.y.labels.formatter,
l.valueY,
F({
p: t.value.style.chart.axes.y.labels.prefix,
v: l.valueY,
s: t.value.style.chart.axes.y.labels.suffix,
r: t.value.style.chart.axes.y.labels.rounding
})
)}</div>`, R.value = `<div>${r}</div>`;
}
V.value = !0;
}
v(() => ({ head: S.value.map((a) => ({
name: a.name,
color: a.color
})) }));
const W = v(() => {
const l = [
t.value.table.columnNames.series,
t.value.table.columnNames.datapoint,
t.value.table.columnNames.x,
t.value.table.columnNames.y
], a = S.value.flatMap((c) => c.plots.map((r) => [
{
color: r.color,
name: r.seriesName
},
r.label,
I(
t.value.style.chart.axes.x.labels.formatter,
r.valueX,
F({
p: t.value.style.chart.axes.x.labels.prefix,
v: r.valueX,
s: t.value.style.chart.axes.x.labels.suffix,
r: t.value.style.chart.axes.x.labels.rounding
})
),
I(
t.value.style.chart.axes.y.labels.formatter,
r.valueY,
F({
p: t.value.style.chart.axes.y.labels.prefix,
v: r.valueY,
s: t.value.style.chart.axes.y.labels.suffix,
r: t.value.style.chart.axes.y.labels.rounding
})
)
])), s = {
th: {
backgroundColor: t.value.table.th.backgroundColor,
color: t.value.table.th.color,
outline: t.value.table.th.outline
},
td: {
backgroundColor: t.value.table.td.backgroundColor,
color: t.value.table.td.color,
outline: t.value.table.td.outline
},
breakpoint: t.value.table.responsiveBreakpoint
};
return {
head: l,
body: a,
config: s,
colNames: l
};
});
function me() {
Re(() => {
const l = [
[t.value.table.columnNames.series],
[t.value.table.columnNames.datapoint],
[t.value.table.columnNames.x],
[t.value.table.columnNames.y]
], a = S.value.flatMap((r) => r.plots.map((C) => [
[C.seriesName],
[C.label],
[C.valueX],
[C.valueY]
])), s = [
[t.value.style.chart.title.text],
[t.value.style.chart.title.subtitle.text],
l
].concat(a), c = nt(s);
it({
csvContent: c,
title: t.value.style.chart.title.text || "vue-ui-history-plot"
});
});
}
const H = h(!1);
function J() {
H.value = !H.value;
}
function ge() {
M.value.showTable = !M.value.showTable;
}
function be() {
M.value.showTooltip = !M.value.showTooltip;
}
function Ue() {
return S.value;
}
return Ae({
getData: Ue,
generatePdf: de,
generateCsv: me,
generateImage: fe,
toggleTable: ge,
toggleTooltip: be,
toggleAnnotator: J
}), (l, a) => (o(), n("div", {
id: `history_plot_${e(X)}`,
ref_key: "historyPlotChart",
ref: P,
class: O({ "vue-ui-history-plot": !0, "vue-data-ui-wrapper-fullscreen": e(U) }),
style: $(`background:${e(t).style.chart.backgroundColor};color:${e(t).style.chart.color};font-family:${e(t).style.fontFamily}; position: relative; ${e(t).responsive ? "height: 100%" : ""}`),
onMouseenter: a[3] || (a[3] = () => e(ue)(!0)),
onMouseleave: a[4] || (a[4] = () => e(ue)(!1))
}, [
x(l.$slots, "userConfig", {}, void 0, !0),
e(t).userOptions.buttons.annotator ? (o(), z(pt, {
key: 0,
parent: e(P),
backgroundColor: e(t).style.chart.backgroundColor,
color: e(t).style.chart.color,
active: e(H),
onClose: J
}, null, 8, ["parent", "backgroundColor", "color", "active"])) : y("", !0),
e(Se) ? (o(), n("div", {
key: 1,
ref_key: "noTitle",
ref: ae,
class: "vue-data-ui-no-title-space",
style: "height:36px; width: 100%;background:transparent"
}, null, 512)) : y("", !0),
e(t).style.chart.title.text ? (o(), n("div", {
key: 2,
ref_key: "chartTitle",
ref: K,
class: "vue-ui-xy-title",
style: $(`font-family:${e(t).style.fontFamily}`)
}, [
(o(), z(dt, {
key: `title_${e(Q)}`,
config: {
title: {
cy: "history-plot-div-title",
...e(t).style.chart.title
},
subtitle: {
cy: "history-plot-div-subtitle",
...e(t).style.chart.title.subtitle
}
}
}, null, 8, ["config"]))
], 4)) : y("", !0),
e(t).userOptions.show && e(w) && (e(ce) || e(q)) ? (o(), z(ct, {
ref: "details",
key: `user_option_${e(se)}`,
backgroundColor: e(t).style.chart.backgroundColor,
color: e(t).style.chart.color,
isPrinting: e(he),
isImaging: e(ye),
uid: e(X),
hasTooltip: e(t).style.chart.tooltip.show && e(t).userOptions.buttons.tooltip,
hasPdf: e(t).userOptions.buttons.pdf,
hasImg: e(t).userOptions.buttons.img,
hasXls: e(t).userOptions.buttons.csv,
hasTable: e(t).userOptions.buttons.table,
hasLabel: !1,
hasFullscreen: e(t).userOptions.buttons.fullscreen,
isFullscreen: e(U),
chartElement: e(P),
position: e(t).userOptions.position,
isTooltip: e(M).showTooltip,
titles: { ...e(t).userOptions.buttonTitles },
hasAnnotator: e(t).userOptions.buttons.annotator,
isAnnotation: e(H),
onToggleFullscreen: je,
onGeneratePdf: e(de),
onGenerateCsv: me,
onGenerateImage: e(fe),
onToggleTable: ge,
onToggleTooltip: be,
onToggleAnnotator: J,
style: $({
visibility: e(ce) ? e(q) ? "visible" : "hidden" : "visible"
})
}, Ge({ _: 2 }, [
l.$slots.optionTooltip ? {
name: "optionTooltip",
fn: m(() => [
x(l.$slots, "optionTooltip", {}, void 0, !0)
]),
key: "0"
} : void 0,
l.$slots.optionPdf ? {
name: "optionPdf",
fn: m(() => [
x(l.$slots, "optionPdf", {}, void 0, !0)
]),
key: "1"
} : void 0,
l.$slots.optionCsv ? {
name: "optionCsv",
fn: m(() => [
x(l.$slots, "optionCsv", {}, void 0, !0)
]),
key: "2"
} : void 0,
l.$slots.optionImg ? {
name: "optionImg",
fn: m(() => [
x(l.$slots, "optionImg", {}, void 0, !0)
]),
key: "3"
} : void 0,
l.$slots.optionTable ? {
name: "optionTable",
fn: m(() => [
x(l.$slots, "optionTable", {}, void 0, !0)
]),
key: "4"
} : void 0,
l.$slots.optionFullscreen ? {
name: "optionFullscreen",
fn: m(({ toggleFullscreen: s, isFullscreen: c }) => [
x(l.$slots, "optionFullscreen", Y(j({ toggleFullscreen: s, isFullscreen: c })), void 0, !0)
]),
key: "5"
} : void 0,
l.$slots.optionAnnotator ? {
name: "optionAnnotator",
fn: m(({ toggleAnnotator: s, isAnnotator: c }) => [
x(l.$slots, "optionAnnotator", Y(j({ toggleAnnotator: s, isAnnotator: c })), void 0, !0)
]),
key: "6"
} : void 0
]), 1032, ["backgroundColor", "color", "isPrinting", "isImaging", "uid", "hasTooltip", "hasPdf", "hasImg", "hasXls", "hasTable", "hasFullscreen", "isFullscreen", "chartElement", "position", "isTooltip", "titles", "hasAnnotator", "isAnnotation", "onGeneratePdf", "onGenerateImage", "style"])) : y("", !0),
e(w) ? (o(), n("svg", {
key: 4,
xmlns: e(et),
viewBox: `0 0 ${e(f).width < 0 ? 0.1 : e(f).width} ${e(f).height < 0 ? 0.1 : e(f).height}`,
style: $(`max-width:100%;overflow:visible;background:transparent;color:${e(t).style.chart.color}`)
}, [
ke(ht),
l.$slots["chart-background"] ? (o(), n("foreignObject", {
key: 0,
x: e(i).left,
y: e(i).top,
width: e(i).width <= 0 ? 10 : e(i).width,
height: e(i).height <= 0 ? 10 : e(i).height,
style: {
pointerEvents: "none"
}
}, [
x(l.$slots, "chart-background", {}, void 0, !0)
], 8, $t)) : y("", !0),
e(t).style.chart.plots.gradient.show ? (o(), n("defs", Mt, [
(o(!0), n(b, null, k(e(S), (s, c) => (o(), n("radialGradient", {
id: `gradient_${c}_${e(X)}`,
fy: "30%"
}, [
T("stop", {
offset: "10%",
"stop-color": e(tt)(s.color, e(t).style.chart.plots.gradient.intensity / 100)
}, null, 8, Tt),
T("stop", {
offset: "90%",
"stop-color": e(lt)(s.color, 0.1)
}, null, 8, Lt),
T("stop", {
offset: "100%",
"stop-color": s.color
}, null, 8, St)
], 8, At))), 256))
])) : y("", !0),
e(t).style.chart.grid.verticalLines.show ? (o(), n("g", zt, [
(o(!0), n(b, null, k(e(p).tickX, (s) => (o(), n("line", {
x1: s.x,
x2: s.x,
y1: s.y1,
y2: s.y2,
stroke: e(t).style.chart.grid.verticalLines.stroke,
"stroke-width": e(t).style.chart.grid.verticalLines.strokeWidth,
"stroke-linecap": "round"
}, null, 8, Nt))), 256))
])) : y("", !0),
e(t).style.chart.axes.y.labels.show ? (o(), n("g", Pt, [
(o(!0), n(b, null, k(e(p).tickY, (s) => (o(), n("text", {
x: e(i).left + e(t).style.chart.axes.y.labels.offsetX - 4,
y: s.y + e(u).yAxisLabels / 3,
fill: e(t).style.chart.axes.y.labels.color,
"font-size": e(u).yAxisLabels,
"text-anchor": "end"
}, L(e(I)(
e(t).style.chart.axes.y.labels.formatter,
s.value,
e(F)({
p: e(t).style.chart.axes.y.labels.prefix,
v: s.value,
s: e(t).style.chart.axes.y.labels.suffix,
r: e(t).style.chart.axes.y.labels.rounding
})
)), 9, Ot))), 256))
])) : y("", !0),
e(t).style.chart.axes.y.name.text ? (o(), n("text", {
key: 4,
transform: `translate(${e(t).style.chart.axes.y.name.offsetX + e(u).yAxisName}, ${e(f).height / 2 + e(t).style.chart.axes.y.name.offsetY}), rotate(-90)`,
"font-size": e(u).yAxisName,
fill: e(t).style.chart.axes.y.name.color,
"font-weight": e(t).style.chart.axes.y.name.bold ? "bold" : "normal",
"text-anchor": "middle"
}, L(e(t).style.chart.axes.y.name.text), 9, It)) : y("", !0),
e(t).style.chart.grid.horizontalLines.show ? (o(), n("g", Ft, [
(o(!0), n(b, null, k(e(p).tickY, (s) => (o(), n("line", {
x1: s.x1,
x2: s.x2,
y1: s.y,
y2: s.y,
stroke: e(t).style.chart.grid.horizontalLines.stroke,
"stroke-width": e(t).style.chart.grid.horizontalLines.strokeWidth,
"stroke-linecap": "round"
}, null, 8, Xt))), 256))
])) : y("", !0),
e(t).style.chart.axes.x.labels.show ? (o(), n("g", Dt, [
(o(!0), n(b, null, k(e(p).tickX, (s) => (o(), n("text", {
transform: `translate(${s.x}, ${e(i).bottom + e(t).style.chart.axes.x.labels.offsetY + e(u).xAxisLabels}), rotate(${e(t).style.chart.axes.x.labels.rotation})`,
fill: e(t).style.chart.axes.x.labels.color,
"font-size": e(u).xAxisLabels,
"text-anchor": e(t).style.chart.axes.x.labels.rotation > 0 ? "start" : e(t).style.chart.axes.x.labels.rotation < 0 ? "end" : "middle"
}, L(e(I)(
e(t).style.chart.axes.x.labels.formatter,
s.value,
e(F)({
p: e(t).style.chart.axes.x.labels.prefix,
v: s.value,
s: e(t).style.chart.axes.x.labels.suffix,
r: e(t).style.chart.axes.x.labels.rounding
})
)), 9, Yt))), 256))
])) : y("", !0),
e(t).style.chart.axes.x.name.text ? (o(), n("text", {
key: 7,
x: e(f).width / 2 + e(t).style.chart.axes.x.name.offsetX,
y: e(f).height + e(t).style.chart.axes.x.name.offsetY,
"font-size": e(u).xAxisName,
fill: e(t).style.chart.axes.x.name.color,
"font-weight": e(t).style.chart.axes.x.name.bold ? "bold" : "normal",
"text-anchor": "middle"
}, L(e(t).style.chart.axes.x.name.text), 9, jt)) : y("", !0),
e(t).style.chart.grid.xAxis.show ? (o(), n("line", {
key: 8,
x1: e(i).left,
x2: e(i).left + e(i).width,
y1: e(i).bottom,
y2: e(i).bottom,
stroke: e(t).style.chart.grid.xAxis.stroke,
"stroke-width": e(t).style.chart.grid.xAxis.strokeWidth,
"stroke-linecap": "round"
}, null, 8, Bt)) : y("", !0),
e(t).style.chart.grid.yAxis.show ? (o(), n("line", {
key: 9,
x1: e(i).left,
x2: e(i).left,
y1: e(i).top,
y2: e(i).bottom,
stroke: e(t).style.chart.grid.yAxis.stroke,
"stroke-width": e(t).style.chart.grid.yAxis.strokeWidth,
"stroke-linecap": "round"
}, null, 8, Ut)) : y("", !0),
(o(!0), n(b, null, k(e(S), (s, c) => (o(), n("g", null, [
e(t).style.chart.paths.show ? (o(), n("g", {
key: 0,
style: $({
opacity: e(_) === null ? 1 : 0.3
})
}, [
T("path", {
d: s.path,
stroke: e(t).style.chart.backgroundColor,
"stroke-width": e(t).style.chart.paths.strokeWidth + 4,
fill: "none",
"stroke-linecap": "round",
"stroke-linejoin": "round",
class: O({ animated: e(t).useCssAnimation })
}, null, 10, Wt),
T("path", {
d: s.path,
stroke: e(t).style.chart.paths.useSerieColor ? s.color : e(t).style.chart.paths.stroke,
"stroke-width": e(t).style.chart.paths.strokeWidth,
fill: "none",
"stroke-linecap": "round",
"stroke-linejoin": "round",
class: O({ animated: e(t).useCssAnimation })
}, null, 10, Ht)
], 4)) : y("", !0),
(o(!0), n(b, null, k(s.plots, (r) => (o(), n("circle", {
cx: r.x,
cy: r.y,
fill: e(t).style.chart.backgroundColor,
r: e(u).plots,
stroke: "none"
}, null, 8, Et))), 256)),
(o(!0), n(b, null, k(s.plots, (r) => (o(), n("circle", {
cx: r.x,
cy: r.y,
fill: e(t).style.chart.plots.gradient.show ? `url(#gradient_${c}_${e(X)})` : r.color,
r: e(u).plots,
stroke: e(t).style.chart.plots.stroke,
"stroke-width": e(t).style.chart.plots.strokeWidth,
class: O({ animated: e(t).useCssAnimation }),
style: $({
opacity: e(_) === null || e(_).id === r.id ? 1 : 0.3,
transition: "opacity 0.2s ease-in-out"
})
}, null, 14, Gt))), 256)),
e(t).style.chart.plots.labels.show ? (o(), n("g", Vt, [
(o(!0), n(b, null, k(s.plots, (r) => (o(), n("text", {
x: r.x + e(t).style.chart.plots.labels.offsetX,
y: r.y + e(t).style.chart.plots.labels.offsetY + e(u).plots + e(u).labels,
"font-size": e(u).labels,
fill: e(t).style.chart.plots.labels.color,
"font-weight": e(t).style.chart.plots.labels.bold ? "bold" : "normal",
"text-anchor": "middle",
class: O({ animated: e(t).useCssAnimation }),
style: $({
opacity: e(_) === null || e(_).id === r.id ? 1 : 0.3,
transition: "opacity 0.2s ease-in-out"
})
}, L(r.label), 15, Rt))), 256))
])) : y("", !0),
e(t).style.chart.plots.indexLabels.show ? (o(), n("g", qt, [
(o(!0), n(b, null, k(s.plots, (r, C) => (o(), n("text", {
x: r.x + e(t).style.chart.plots.indexLabels.offsetX,
y: r.y + e(t).style.chart.plots.indexLabels.offsetY + e(u).indexLabels / 3,
"font-size": e(u).indexLabels,
"font-weight": e(t).style.chart.plots.indexLabels.bold ? "bold" : "normal",
fill: e(t).style.chart.plots.indexLabels.adaptColorToBackground ? e(st)(s.color) : e(t).style.chart.plots.indexLabels.color,
"text-anchor": "middle",
class: O({ animated: e(t).useCssAnimation }),
style: $({
opacity: e(_) === null || e(_).id === r.id ? 1 : 0.3,
transition: "opacity 0.2s ease-in-out"
})
}, L(e(t).style.chart.plots.indexLabels.startAtZero ? C : C + 1), 15, Zt))), 256))
])) : y("", !0)
]))), 256)),
(o(!0), n(b, null, k(e(S), (s) => (o(), n("g", null, [
(o(!0), n(b, null, k(s.plots, (c, r) => (o(), n("circle", {
cx: c.x,
cy: c.y,
fill: "transparent",
r: e(u).plots,
stroke: "none",
onMouseenter: (C) => Be({
datapoint: c,
plotIndex: r,
seriesIndex: s.seriesIndex
}),
onMouseleave: a[0] || (a[0] = (C) => {
V.value = !1, _.value = null;
}),
onClick: () => Ye(c)
}, null, 40, Jt))), 256))
]))), 256)),
x(l.$slots, "svg", { svg: e(f) }, void 0, !0)
], 12, _t)) : y("", !0),
l.$slots.watermark ? (o(), n("div", Kt, [
x(l.$slots, "watermark", Y(j({ isPrinting: e(he) || e(ye) })), void 0, !0)
])) : y("", !0),
e(w) ? y("", !0) : (o(), z(mt, {
key: 6,
config: {
type: "historyPlot",
style: {
backgroundColor: e(t).style.chart.backgroundColor,
historyPlot: {
color: "#CCCCCC"
}
}
}
}, null, 8, ["config"])),
T("div", {
ref_key: "chartLegend",
ref: ee
}, [
e(t).style.chart.legend.show && e(w) ? (o(), z(yt, {
key: `legend_${e(te)}`,
legendSet: e(xe),
config: e(De),
onClickMarker: a[1] || (a[1] = ({ legend: s }) => {
ve(s.seriesIndex), pe(s);
})
}, {
item: m(({ legend: s, index: c }) => [
T("div", {
onClick: (r) => {
s.segregate(), pe(s);
},
style: $(`opacity:${e(g).includes(s.seriesIndex) ? 0.5 : 1}`)
}, L(s.name), 13, Qt)
]),
_: 1
}, 8, ["legendSet", "config"])) : x(l.$slots, "legend", {
key: 1,
legend: e(xe)
}, void 0, !0)
], 512),
l.$slots.source ? (o(), n("div", {
key: 7,
ref_key: "source",
ref: oe,
dir: "auto"
}, [
x(l.$slots, "source", {}, void 0, !0)
], 512)) : y("", !0),
ke(ft, {
show: e(M).showTooltip && e(V),
backgroundColor: e(t).style.chart.tooltip.backgroundColor,
color: e(t).style.chart.tooltip.color,
fontSize: e(t).style.chart.tooltip.fontSize,
borderRadius: e(t).style.chart.tooltip.borderRadius,
borderColor: e(t).style.chart.tooltip.borderColor,
borderWidth: e(t).style.chart.tooltip.borderWidth,
backgroundOpacity: e(t).style.chart.tooltip.backgroundOpacity,
position: e(t).style.chart.tooltip.position,
offsetY: e(t).style.chart.tooltip.offsetY,
parent: e(P),
content: e(R),
isCustom: e(D),
isFullscreen: e(U)
}, {
"tooltip-before": m(() => [
x(l.$slots, "tooltip-before", Y(j({ ...e(Z) })), void 0, !0)
]),
"tooltip-after": m(() => [
x(l.$slots, "tooltip-after", Y(j({ ...e(Z) })), void 0, !0)
]),
_: 3
}, 8, ["show", "backgroundColor", "color", "fontSize", "borderRadius", "borderColor", "borderWidth", "backgroundOpacity", "position", "offsetY", "parent", "content", "isCustom", "isFullscreen"]),
e(w) ? (o(), z(xt, {
key: 8,
hideDetails: "",
config: {
open: e(M).showTable,
maxHeight: 1e4,
body: {
backgroundColor: e(t).style.chart.backgroundColor,
color: e(t).style.chart.color
},
head: {
backgroundColor: e(t).style.chart.backgroundColor,
color: e(t).style.chart.color
}
}
}, {
content: m(() => [
(o(), z(vt, {
key: `table_${e(le)}`,
colNames: e(W).colNames,
head: e(W).head,
body: e(W).body,
config: e(W).config,
title: `${e(t).style.chart.title.text}${e(t).style.chart.title.subtitle.text ? ` : ${e(t).style.chart.title.subtitle.text}` : ""}`,
onClose: a[2] || (a[2] = (s) => e(M).showTable = !1)
}, {
th: m(({ th: s }) => [
T("div", {
innerHTML: s,
style: { display: "flex", "align-items": "center" }
}, null, 8, el)
]),
td: m(({ td: s }) => [
Ve(L(s.name || s), 1)
]),
_: 1
}, 8, ["colNames", "head", "body", "config", "title"]))
]),
_: 1
}, 8, ["config"])) : y("", !0)
], 46, Ct));
}
}, pl = /* @__PURE__ */ wt(tl, [["__scopeId", "data-v-56886710"]]);
export {
pl as default
};