UNPKG

vue-data-ui

Version:

A user-empowering data visualization Vue 3 components library for eloquent data storytelling

944 lines 58 kB
import { useSlots as Pt, computed as w, ref as g, onMounted as at, watch as lt, nextTick as he, createElementBlock as s, openBlock as o, unref as b, normalizeStyle as U, normalizeClass as te, createBlock as q, createCommentVNode as v, renderSlot as x, createElementVNode as Y, createVNode as ae, createSlots as rt, withCtx as _, normalizeProps as V, guardReactiveProps as F, Fragment as h, renderList as y, mergeProps as ze, toDisplayString as $, createTextVNode as At } from "vue"; import { u as Vt, c as ot, t as Ft, p as ve, a as Dt, C as de, b as Et, o as Ht, e as st, g as Wt, d as Bt, ac as ye, aa as it, D as nt, X as Ut, l as Yt, a4 as ge, G as ut, f as X, x as ct, q as Xt, r as Gt, i as ht, y as Jt } from "./index-BsIlHNy8.js"; import { u as vt } from "./useNestedProp-CyyJlG5K.js"; import { t as qt, u as Zt } from "./useResponsive-vZgZwV-S.js"; import { u as Kt, U as Qt } from "./usePrinter-D5N6w7Rg.js"; import { S as jt } from "./Slicer-m9Y8-Ul1.js"; import { _ as ea } from "./Tooltip-D42o7dze.js"; import { _ as ta } from "./Title-xPTli3hs.js"; import { L as aa } from "./Legend-BbSQMgm3.js"; import la from "./vue-ui-accordion-COi2Xtsr.js"; import { D as ra } from "./DataTable--Aq5n5mR.js"; import oa from "./vue-ui-skeleton-DApuwwZF.js"; import { _ as sa } from "./PackageVersion-CZ0-Jk6A.js"; import { P as ia } from "./PenAndPaper-BFkX-O1c.js"; import { u as na } from "./useUserOptionState-BIvW1Kz7.js"; import { _ as ua } from "./Shape-CxNXalS-.js"; import { u as ca } from "./useChartAccessibility-BWojgys7.js"; import { _ as ha } from "./_plugin-vue_export-helper-CHgC5LLL.js"; const va = ["id"], da = ["xmlns", "viewBox"], ya = ["x", "y", "width", "height"], ga = { key: 1 }, ba = ["id"], fa = ["stop-color"], ma = ["stop-color"], pa = ["stop-color"], xa = ["x1", "x2", "y1", "y2", "stroke"], ka = ["x1", "x2", "y1", "y2", "stroke"], wa = ["x1", "x2", "y1", "y2", "stroke"], za = ["x1", "x2", "y1", "y2", "stroke"], _a = { key: 0 }, Ca = ["x", "y", "height", "rx", "width", "fill", "stroke", "stroke-width"], La = { key: 0 }, Sa = ["x", "y", "height", "rx", "width", "fill", "stroke", "stroke-width"], $a = ["x", "y", "width", "rx", "height", "fill", "stroke", "stroke-width"], Ma = { key: 0 }, Ta = ["x", "y", "width", "rx", "height", "fill", "stroke", "stroke-width"], Na = ["x1", "x2", "y1", "y2", "stroke", "stroke-width"], Ia = ["x1", "x2", "y1", "y2", "stroke", "stroke-width"], Oa = ["x", "y", "font-size", "fill", "font-weight"], Ra = ["transform", "font-size", "fill", "font-weight"], Pa = ["x", "y", "font-size", "fill", "font-weight"], Aa = { key: 0 }, Va = ["x", "y", "font-size", "font-weight", "fill"], Fa = ["x", "y", "font-size", "fill", "font-weight"], Da = { key: 0 }, Ea = ["x", "y", "font-size", "font-weight", "fill"], Ha = ["x1", "x2", "y1", "y2", "stroke"], Wa = ["x", "y", "font-size", "font-weight", "fill"], Ba = ["x1", "x2", "y1", "y2", "stroke"], Ua = ["font-size", "font-weight", "fill", "text-anchor", "transform"], Ya = { key: 0 }, Xa = { key: 1 }, Ga = ["text-anchor", "font-size", "font-weight", "fill", "transform", "onClick"], Ja = { key: 0 }, qa = { key: 1 }, Za = ["font-size", "font-weight", "fill", "x", "y", "onClick"], Ka = ["x", "y", "width", "height", "onClick", "onMouseenter", "fill"], Qa = ["x", "y", "width", "height", "onClick", "onMouseenter", "fill"], ja = { key: 4, class: "vue-data-ui-watermark" }, el = ["onClick"], tl = ["innerHTML"], al = { __name: "vue-ui-stackbar", props: { config: { type: Object, default() { return {}; } }, dataset: { type: Array, default() { return []; } } }, emits: ["selectDatapoint", "selectLegend", "selectTimeLabel"], setup(be, { expose: dt, emit: yt }) { const { vue_ui_stackbar: gt } = Vt(), bt = Pt(), f = be, fe = yt, G = w({ get() { return !!f.dataset && f.dataset.length; }, set(a) { return a; } }), Z = g(null), O = g(ot()), le = g(!1), me = g(null), pe = g(""), L = g([]), _e = g(0), Ce = g(null), Le = g(null), Se = g(null), $e = g(null), Me = g(0), re = g(!1), K = g(null), D = g(!1), ft = g(0), mt = g(0), pt = g(0), J = g(null); at(() => { ke(); }); const e = w({ get: () => Oe(), set: (a) => a }), { userOptionsVisible: xe, setUserOptionsVisibility: Te, keepUserOptionState: Ne } = na({ config: e.value }), { svgRef: Ie } = ca({ config: e.value.style.chart.title }); function Oe() { const a = vt({ userConfig: f.config, defaultConfig: gt }); let r = {}; return a.theme ? r = { ...vt({ userConfig: Dt.vue_ui_stackbar[a.theme] || f.config, defaultConfig: a }), customPalette: Ft[a.theme] || ve } : r = a, f.config && de(f.config, "style.chart.grid.scale.scaleMin") ? r.style.chart.grid.scale.scaleMin = f.config.style.chart.grid.scale.scaleMin : r.style.chart.grid.scale.scaleMin = null, f.config && de(f.config, "style.chart.grid.scale.scaleMax") ? r.style.chart.grid.scale.scaleMax = f.config.style.chart.grid.scale.scaleMax : r.style.chart.grid.scale.scaleMax = null, f.config && de(f.config, "style.chart.zoom.startIndex") ? r.style.chart.zoom.startIndex = f.config.style.chart.zoom.startIndex : r.style.chart.zoom.startIndex = null, f.config && de(f.config, "style.chart.zoom.endIndex") ? r.style.chart.zoom.endIndex = f.config.style.chart.zoom.endIndex : r.style.chart.zoom.endIndex = null, r; } lt(() => f.config, (a) => { e.value = Oe(), xe.value = !e.value.userOptions.showOnChartHover, ke(), ft.value += 1, mt.value += 1, pt.value += 1, z.value.dataLabels.show = e.value.style.chart.bars.dataLabels.show, z.value.showTable = e.value.table.show, z.value.showTooltip = e.value.style.chart.tooltip.show; }, { deep: !0 }), lt(() => f.dataset, (a) => { Ee(); }, { deep: !0 }); const z = g({ dataLabels: { show: e.value.style.chart.bars.dataLabels.show }, showTable: e.value.table.show, showTooltip: e.value.style.chart.tooltip.show }), { isPrinting: Re, isImaging: Pe, generatePdf: Ae, generateImage: Ve } = Kt({ elementId: `stackbar_${O.value}`, fileName: e.value.style.chart.title.text || "vue-ui-stackbar" }), oe = g({ width: e.value.style.chart.width, height: e.value.style.chart.height, paddingRatio: { top: e.value.style.chart.padding.top / e.value.style.chart.height, right: e.value.style.chart.padding.right / e.value.style.chart.width, bottom: e.value.style.chart.padding.bottom / e.value.style.chart.height, left: e.value.style.chart.padding.left / e.value.style.chart.width } }), xt = w(() => Et(e.value.customPalette)), Fe = g(null), De = g(null); at(() => { ke(); }); function ke() { if (Ht(f.dataset) ? st({ componentName: "VueUiStackbar", type: "dataset" }) : f.dataset.forEach((a, r) => { Wt({ datasetObject: a, requiredAttributes: ["name", "series"] }).forEach((t) => { G.value = !1, st({ componentName: "VueUiStackbar", type: "datasetSerieAttribute", property: t, index: r }); }); }), setTimeout(() => { D.value = !0; }, 10), e.value.responsive) { const a = qt(() => { D.value = !1; const { width: r, height: t } = Zt({ chart: Z.value, title: e.value.style.chart.title.text ? Ce.value : null, legend: e.value.style.chart.legend.show ? Le.value : null, slicer: e.value.style.chart.zoom.show && P.value > 1 ? Se.value : null, source: $e.value }); requestAnimationFrame(() => { oe.value.width = r, oe.value.height = t, clearTimeout(De.value), De.value = setTimeout(() => { D.value = !0; }, 10); }); }); Fe.value = new ResizeObserver(a), Fe.value.observe(Z.value.parentNode); } He(); } const i = w(() => { const { height: a, width: r } = oe.value, { right: t } = oe.value.paddingRatio, l = e.value.style.chart.padding.top, u = r - r * t, n = a - e.value.style.chart.padding.bottom, C = e.value.style.chart.padding.left, E = r - C - r * t, H = a - l - e.value.style.chart.padding.bottom; return { chartHeight: a, chartWidth: r, top: l, right: u, bottom: n, left: C, width: E, height: H < 0 ? 0 : H }; }), R = w(() => f.dataset.map((a, r) => { const t = Bt(a.color) || xt.value[r] || ve[r] || ve[r % ve.length]; return { ...a, // In distributed mode, all values are converted to positive series: JSON.parse(JSON.stringify(a.series)).map((l) => e.value.style.chart.bars.distributed ? Math.abs(l) : l), // Store signs to manage display of neg values in distributed mode signedSeries: a.series.map((l) => l >= 0 ? 1 : -1), absoluteIndex: r, id: ot(), color: t }; })), P = w(() => Math.max(...R.value.filter((a) => !L.value.includes(a.id)).map((a) => a.series.length))), c = g({ start: 0, end: Math.max(...f.dataset.map((a) => a.series.length)) }); function Ee() { He(); } async function He() { (e.value.style.chart.zoom.startIndex !== null || e.value.style.chart.zoom.endIndex !== null) && J.value ? (e.value.style.chart.zoom.startIndex !== null && (await he(), await he(), J.value && J.value.setStartValue(e.value.style.chart.zoom.startIndex)), e.value.style.chart.zoom.endIndex !== null && (await he(), await he(), J.value && J.value.setEndValue(kt(e.value.style.chart.zoom.endIndex + 1)))) : (c.value = { start: 0, end: Math.max(...f.dataset.map((a) => a.series.length)) }, Me.value += 1); } function kt(a) { const r = Math.max(...f.dataset.map((t) => t.series.length)); return a > r ? r : a < 0 || e.value.style.chart.zoom.startIndex !== null && a < e.value.style.chart.zoom.startIndex ? e.value.style.chart.zoom.startIndex !== null ? e.value.style.chart.zoom.startIndex + 1 : 1 : a; } const d = w(() => { let a; return e.value.orientation === "vertical" ? a = i.value.width / (c.value.end - c.value.start) : a = i.value.height / (c.value.end - c.value.start), a <= 0 ? 0 : a; }), Q = w(() => ye(R.value.filter((a) => !L.value.includes(a.id))).slice(c.value.start, c.value.end)), wt = w(() => ye(R.value.filter((a) => !L.value.includes(a.id)).map((a) => ({ ...a, series: a.series.map((r, t) => a.signedSeries[t] === -1 && r >= 0 ? -r : r) }))).slice(c.value.start, c.value.end)), se = w(() => { const a = R.value.filter((r) => !L.value.includes(r.id)); return { positive: ye(a.map((r) => ({ ...r, series: r.series.slice(c.value.start, c.value.end).map((t) => t >= 0 ? t : 0) }))), negative: ye(a.map((r) => ({ ...r, series: r.series.slice(c.value.start, c.value.end).map((t) => t < 0 ? t : 0) }))) }; }), N = w(() => { const a = e.value.style.chart.grid.scale.scaleMax !== null && !e.value.style.chart.bars.distributed ? e.value.style.chart.grid.scale.scaleMax : Math.max(...se.value.positive), r = Math.min(...se.value.negative), t = e.value.style.chart.grid.scale.scaleMin !== null && !e.value.style.chart.bars.distributed ? e.value.style.chart.grid.scale.scaleMin : [-1 / 0, 1 / 0, NaN, void 0, null].includes(r) ? 0 : r, l = !e.value.style.chart.bars.distributed && (e.value.style.chart.grid.scale.scaleMax !== null || e.value.style.chart.grid.scale.scaleMin !== null) ? it(t > 0 ? 0 : t, a < 0 ? 0 : a, e.value.style.chart.grid.scale.ticks) : nt(t > 0 ? 0 : t, a < 0 ? 0 : a, e.value.style.chart.grid.scale.ticks); return l.ticks.map((u) => ({ zero: i.value.bottom - i.value.height * (Math.abs(l.min) / (l.max + Math.abs(l.min))), y: i.value.bottom - i.value.height * ((u + Math.abs(l.min)) / (l.max + Math.abs(l.min))), x: i.value.left - 8, horizontal_zero: i.value.left + i.value.width * (Math.abs(l.min) / (l.max + Math.abs(l.min))), horizontal_x: i.value.left + i.value.width * ((u + Math.abs(l.min)) / (l.max + Math.abs(l.min))), horizontal_y: i.value.bottom - 8, value: u })); }), A = w(() => { const a = []; for (let r = 0; r < P.value; r += 1) a.push({ text: e.value.style.chart.grid.x.timeLabels.values[r] || String(r), absoluteIndex: r }); return a.slice(c.value.start, c.value.end); }), k = w(() => { if (!G.value) return []; let a = Array(P.value).fill(0), r = Array(P.value).fill(0), t = Array(P.value).fill(0), l = Array(P.value).fill(0); const u = Math.max(...se.value.positive) || 0, n = Math.min(...se.value.negative), C = [-1 / 0, 1 / 0, NaN, void 0, null].includes(n) ? 0 : n, E = !e.value.style.chart.bars.distributed && (e.value.style.chart.grid.scale.scaleMax !== null || e.value.style.chart.grid.scale.scaleMin !== null) ? it(e.value.style.chart.grid.scale.scaleMin !== null ? e.value.style.chart.grid.scale.scaleMin : C > 0 ? 0 : C, e.value.style.chart.grid.scale.scaleMax !== null ? e.value.style.chart.grid.scale.scaleMax : u < 0 ? 0 : u, e.value.style.chart.grid.scale.ticks) : nt(e.value.style.chart.grid.scale.scaleMin !== null ? e.value.style.chart.grid.scale.scaleMin : C > 0 ? 0 : C, e.value.style.chart.grid.scale.scaleMax !== null ? e.value.style.chart.grid.scale.scaleMax : u < 0 ? 0 : u, e.value.style.chart.grid.scale.ticks), { min: H, max: j } = E, W = j + (H >= 0 ? 0 : Math.abs(H)) || 1, S = i.value.height, ce = i.value.width, et = N.value[0] ? N.value[0].zero : i.value.bottom, tt = N.value[0] ? N.value[0].horizontal_zero : i.value.left; return R.value.filter((ee) => !L.value.includes(ee.id)).map((ee) => { const I = ee.series.slice(c.value.start, c.value.end), St = ee.signedSeries.slice(c.value.start, c.value.end), $t = I.map((m, p) => i.value.left + d.value * p + d.value * e.value.style.chart.bars.gapRatio / 4), Mt = I.map((m, p) => i.value.top + d.value * p + d.value * e.value.style.chart.bars.gapRatio / 4), Tt = I.map((m, p) => { const M = e.value.style.chart.bars.distributed ? (m || 0) / Q.value[p] : (m || 0) / W; let B, T; return m > 0 ? (T = S * M, B = et - T - a[p], a[p] += T) : (T = S * M, B = et + t[p], t[p] += Math.abs(T)), B; }), Nt = I.map((m, p) => { const M = e.value.style.chart.bars.distributed ? (m || 0) / Q.value[p] : (m || 0) / W; let B, T; return m > 0 ? (T = ce * M, B = tt + r[p], r[p] += T) : (T = ce * M, B = tt - Math.abs(T) - l[p], l[p] += Math.abs(T)), B; }), It = I.map((m, p) => { const M = e.value.style.chart.bars.distributed ? (m || 0) / Q.value[p] : (m || 0) / W; return m > 0 ? S * M : S * Math.abs(M); }), Ot = I.map((m, p) => { const M = e.value.style.chart.bars.distributed ? (m || 0) / Q.value[p] : (m || 0) / W; return m > 0 ? ce * M : ce * Math.abs(M); }), Rt = I.map((m) => Math.abs(m)).reduce((m, p) => m + p, 0); return { ...ee, proportions: I.map((m, p) => e.value.style.chart.bars.distributed ? (m || 0) / Q.value[p] : (m || 0) / Rt), series: I, signedSeries: St, x: $t, y: Tt, height: It, horizontal_width: Ot, horizontal_y: Mt, horizontal_x: Nt }; }); }), We = w(() => wt.value.map((a, r) => ({ value: a, sign: a >= 0 ? 1 : -1 }))); function ie(a, r, t, l, u) { const n = u === -1 && a >= 0 ? -a : a; return ht( e.value.style.chart.bars.dataLabels.formatter, n, X({ p: e.value.style.chart.bars.dataLabels.prefix, v: n, s: e.value.style.chart.bars.dataLabels.suffix, r: e.value.style.chart.bars.dataLabels.rounding }), { datapoint: r, seriesIndex: t, datapointIndex: l } ); } function Be(a, r, t, l) { return ht( e.value.style.chart.bars.dataLabels.formatter, a, X({ v: isNaN(a) ? 0 : a, s: "%", r: e.value.style.chart.bars.dataLabels.rounding }), { datapoint: r, seriesIndex: t, datapointIndex: l } ); } function Ue(a) { const r = JSON.parse(JSON.stringify(k.value)).map((t) => ({ name: t.name, value: t.series[a] === 0 ? 0 : t.series[a] || null, proportion: t.proportions[a] || null, color: t.color, id: t.id })); fe("selectDatapoint", { datapoint: r, period: A.value[a] }); } function Ye(a) { K.value = a, le.value = !0; const r = e.value.style.chart.tooltip.customFormat, t = JSON.parse(JSON.stringify(k.value)).map((u) => ({ name: u.name, absoluteIndex: u.absoluteIndex, value: u.series[a] === 0 ? 0 : (u.signedSeries[a] === -1 && u.series[a] >= 0 ? -u.series[a] : u.series[a]) || null, proportion: u.proportions[a] || null, color: u.color, id: u.id })); me.value = { datapoint: t, seriesIndex: a, config: e.value, series: k.value }; const l = t.map((u) => Math.abs(u.value)).reduce((u, n) => u + n, 0); if (ct(r) && Jt(() => r({ seriesIndex: a, datapoint: t, series: k.value, config: e.value }))) pe.value = r({ seriesIndex: a, datapoint: t, series: k.value, config: e.value }); else { const { showValue: u, showPercentage: n, borderColor: C, roundingValue: E, roundingPercentage: H } = e.value.style.chart.tooltip; let j = ""; A.value[a] && A.value[a].text && e.value.style.chart.tooltip.showTimeLabel && (j += `<div style="width:100%;text-align:center;border-bottom:1px solid ${C};padding-bottom:6px;margin-bottom:3px;">${A.value[a].text}</div>`); const W = [ u && n ? "(" : "", u && n ? ")" : "" ]; t.reverse().forEach((S) => { j += ` <div style="display:flex;flex-direction:row;align-items:center;gap:4px"> <svg viewBox="0 0 60 60" height="14" width="14"><rect rx="5" x="0" y="0" height="60" width="60" stroke="none" fill="${e.value.style.chart.bars.gradient.show ? `url(#gradient_${S.id})` : S.color}"/>${bt.pattern ? `<rect rx="5" x="0" y="0" height="60" width="60" stroke="none" fill="url(#pattern_${O.value}_${S.absoluteIndex})"/>` : ""}</svg> ${S.name}${u || n ? ":" : ""} ${u ? X({ p: e.value.style.chart.bars.dataLabels.prefix, v: S.value, s: e.value.style.chart.bars.dataLabels.suffix, r: E }) : ""} ${W[0]}${n ? X({ v: isNaN(S.value / l) ? 0 : Math.abs(S.value) / l * 100, // Negs are absed to show relative proportion to absolute total. It's opinionated. s: "%", r: H }) : ""}${W[1]} </div> `; }), pe.value = `<div>${j}</div>`; } } function zt(a) { re.value = a, _e.value += 1; } function Xe() { z.value.showTable = !z.value.showTable; } function Ge() { z.value.dataLabels.show = !z.value.dataLabels.show; } function Je() { z.value.showTooltip = !z.value.showTooltip; } function _t() { return k.value; } const qe = w(() => { if (k.value.length === 0) return { head: [], body: [], config: {}, columnNames: [] }; const a = k.value.map(({ name: t, color: l }) => ({ label: t, color: l })), r = []; for (let t = c.value.start; t < c.value.end; t += 1) { const l = [e.value.style.chart.grid.x.timeLabels.values[t] || t + 1]; R.value.forEach((u) => { l.push(Number((u.series[t] || 0).toFixed(e.value.table.td.roundingValue))); }), r.push(l); } return { head: a, body: r }; }); function Ze() { const a = [[e.value.style.chart.title.text], [e.value.style.chart.title.subtitle.text], [""]], r = ["", ...qe.value.head.map((n) => n.label)], t = qe.value.body, l = a.concat([r]).concat(t), u = Xt(l); Gt({ csvContent: u, title: e.value.style.chart.title.text || "vue-ui-stackbar" }); } const ne = w(() => { const a = [""].concat(k.value.map((u) => u.name)).concat(' <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M18 16v2a1 1 0 0 1 -1 1h-11l6 -7l-6 -7h11a1 1 0 0 1 1 1v2" /></svg>'); let r = []; for (let u = 0; u < P.value; u += 1) { const n = k.value.map((C) => C.series[u] ?? 0).reduce((C, E) => C + E, 0); r.push([e.value.style.chart.grid.x.timeLabels.values.slice(c.value.start, c.value.end)[u] ?? u + 1].concat(k.value.map((C) => (C.series[u] ?? 0).toFixed(e.value.table.td.roundingValue))).concat((n ?? 0).toFixed(e.value.table.td.roundingValue))); } const t = { 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 }, l = [e.value.table.columnNames.period].concat(k.value.map((u) => u.name)).concat(e.value.table.columnNames.total); return { head: a, body: r.slice(0, c.value.end - c.value.start), config: t, colNames: l }; }); function Ct(a, r) { if (fe("selectLegend", k.value.find((t) => t.absoluteIndex === a)), L.value.includes(r.id)) L.value = L.value.filter((t) => t !== r.id); else { if (L.value.length === R.value.length - 1) return; L.value.push(r.id); } } const Ke = w(() => R.value.map((a, r) => ({ ...a, shape: "square" })).map((a) => ({ ...a, opacity: L.value.includes(a.id) ? 0.5 : 1, segregate: () => Ct(a.absoluteIndex, a), isSegregated: L.value.includes(a.id) }))), Lt = w(() => ({ cy: "stackbar-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 = g(!1); function we() { ue.value = !ue.value; } function Qe(a, r) { const t = JSON.parse(JSON.stringify(k.value)).map((l) => ({ name: l.name, value: l.series[r] === 0 ? 0 : (l.signedSeries[r] === -1 && l.series[r] >= 0 ? -l.series[r] : l.series[r]) || null, proportion: l.proportions[r] || null, color: l.color, id: l.id })); fe("selectTimeLabel", { datapoint: t, absoluteIndex: a.absoluteIndex, label: a.text }); } function je(a, r) { return e.value.style.chart.bars.showDistributedPercentage && e.value.style.chart.bars.distributed ? e.value.style.chart.bars.dataLabels.hideEmptyPercentages ? r > 0 : !0 : e.value.style.chart.bars.dataLabels.hideEmptyValues ? a !== 0 : !0; } return dt({ getData: _t, generatePdf: Ae, generateCsv: Ze, generateImage: Ve, toggleTable: Xe, toggleLabels: Ge, toggleTooltip: Je, toggleAnnotator: we }), (a, r) => (o(), s("div", { id: `stackbar_${O.value}`, ref_key: "stackbarChart", ref: Z, class: te({ "vue-ui-stackbar": !0, "vue-data-ui-wrapper-fullscreen": re.value }), style: U(`background:${e.value.style.chart.backgroundColor};color:${e.value.style.chart.color};font-family:${e.value.style.fontFamily}; position: relative; ${e.value.responsive ? "height: 100%" : ""}`), onMouseenter: r[6] || (r[6] = () => b(Te)(!0)), onMouseleave: r[7] || (r[7] = () => b(Te)(!1)) }, [ e.value.userOptions.buttons.annotator ? (o(), q(ia, { key: 0, svgRef: b(Ie), backgroundColor: e.value.style.chart.backgroundColor, color: e.value.style.chart.color, active: ue.value, onClose: we }, null, 8, ["svgRef", "backgroundColor", "color", "active"])) : v("", !0), x(a.$slots, "userConfig", {}, void 0, !0), e.value.style.chart.title.text ? (o(), s("div", { key: 1, ref_key: "chartTitle", ref: Ce, style: "width:100%;background:transparent;padding-bottom:24px" }, [ ae(ta, { config: { title: { cy: "stackbar-title", ...e.value.style.chart.title }, subtitle: { cy: "stackbar-subtitle", ...e.value.style.chart.title.subtitle } } }, null, 8, ["config"]) ], 512)) : v("", !0), e.value.userOptions.show && G.value && (b(Ne) || b(xe)) ? (o(), q(Qt, { ref: "details", key: `user_option_${_e.value}`, backgroundColor: e.value.style.chart.backgroundColor, color: e.value.style.chart.color, isPrinting: b(Re), isImaging: b(Pe), uid: O.value, hasTooltip: e.value.style.chart.tooltip.show && e.value.userOptions.buttons.tooltip, hasPdf: e.value.userOptions.buttons.pdf, hasImg: e.value.userOptions.buttons.img, hasXls: e.value.userOptions.buttons.csv, hasTable: e.value.userOptions.buttons.table, hasLabel: e.value.userOptions.buttons.labels, hasFullscreen: e.value.userOptions.buttons.fullscreen, isFullscreen: re.value, chartElement: Z.value, position: e.value.userOptions.position, isTooltip: z.value.showTooltip, titles: { ...e.value.userOptions.buttonTitles }, hasAnnotator: e.value.userOptions.buttons.annotator, isAnnotation: ue.value, onToggleFullscreen: zt, onGeneratePdf: b(Ae), onGenerateCsv: Ze, onGenerateImage: b(Ve), onToggleTable: Xe, onToggleLabels: Ge, onToggleTooltip: Je, onToggleAnnotator: we, style: U({ visibility: b(Ne) ? b(xe) ? "visible" : "hidden" : "visible" }) }, rt({ _: 2 }, [ a.$slots.menuIcon ? { name: "menuIcon", fn: _(({ isOpen: t, color: l }) => [ x(a.$slots, "menuIcon", V(F({ isOpen: t, color: l })), void 0, !0) ]), key: "0" } : void 0, a.$slots.optionTooltip ? { name: "optionTooltip", fn: _(() => [ x(a.$slots, "optionTooltip", {}, void 0, !0) ]), key: "1" } : void 0, a.$slots.optionPdf ? { name: "optionPdf", fn: _(() => [ x(a.$slots, "optionPdf", {}, void 0, !0) ]), key: "2" } : void 0, a.$slots.optionCsv ? { name: "optionCsv", fn: _(() => [ x(a.$slots, "optionCsv", {}, void 0, !0) ]), key: "3" } : void 0, a.$slots.optionImg ? { name: "optionImg", fn: _(() => [ x(a.$slots, "optionImg", {}, void 0, !0) ]), key: "4" } : void 0, a.$slots.optionTable ? { name: "optionTable", fn: _(() => [ x(a.$slots, "optionTable", {}, void 0, !0) ]), key: "5" } : void 0, a.$slots.optionLabels ? { name: "optionLabels", fn: _(() => [ x(a.$slots, "optionLabels", {}, void 0, !0) ]), key: "6" } : void 0, a.$slots.optionFullscreen ? { name: "optionFullscreen", fn: _(({ toggleFullscreen: t, isFullscreen: l }) => [ x(a.$slots, "optionFullscreen", V(F({ toggleFullscreen: t, isFullscreen: l })), void 0, !0) ]), key: "7" } : void 0, a.$slots.optionAnnotator ? { name: "optionAnnotator", fn: _(({ toggleAnnotator: t, isAnnotator: l }) => [ x(a.$slots, "optionAnnotator", V(F({ toggleAnnotator: t, isAnnotator: l })), void 0, !0) ]), key: "8" } : void 0 ]), 1032, ["backgroundColor", "color", "isPrinting", "isImaging", "uid", "hasTooltip", "hasPdf", "hasImg", "hasXls", "hasTable", "hasLabel", "hasFullscreen", "isFullscreen", "chartElement", "position", "isTooltip", "titles", "hasAnnotator", "isAnnotation", "onGeneratePdf", "onGenerateImage", "style"])) : v("", !0), G.value ? (o(), s("svg", { key: 3, ref_key: "svgRef", ref: Ie, xmlns: b(Ut), viewBox: `0 0 ${i.value.chartWidth <= 0 ? 10 : i.value.chartWidth} ${i.value.chartHeight <= 0 ? 10 : i.value.chartHeight}`, style: U(`max-width:100%;overflow:visible;background:transparent;color:${e.value.style.chart.color}`) }, [ ae(sa), a.$slots["chart-background"] ? (o(), s("foreignObject", { key: 0, x: i.value.left, y: i.value.top, width: i.value.width <= 0 ? 10 : i.value.width, height: i.value.height <= 0 ? 10 : i.value.height, style: { pointerEvents: "none" } }, [ x(a.$slots, "chart-background", {}, void 0, !0) ], 8, ya)) : v("", !0), e.value.style.chart.bars.gradient.show ? (o(), s("defs", ga, [ (o(!0), s(h, null, y(k.value, (t, l) => (o(), s("linearGradient", { id: `gradient_${t.id}`, x1: "0%", y1: "0%", x2: "0%", y2: "100%" }, [ Y("stop", { offset: "0%", "stop-color": t.color }, null, 8, fa), Y("stop", { offset: "61.8%", "stop-color": b(Yt)(t.color, e.value.style.chart.bars.gradient.intensity / 100) }, null, 8, ma), Y("stop", { offset: "100%", "stop-color": t.color }, null, 8, pa) ], 8, ba))), 256)) ])) : v("", !0), e.value.style.chart.grid.x.showHorizontalLines && e.value.orientation === "vertical" ? (o(!0), s(h, { key: 2 }, y(N.value, (t, l) => (o(), s("line", { x1: i.value.left, x2: i.value.right, y1: t.y, y2: t.y, stroke: e.value.style.chart.grid.x.axisColor, "stroke-width": 1, "stroke-linecap": "round" }, null, 8, xa))), 256)) : v("", !0), e.value.style.chart.grid.x.showHorizontalLines && e.value.orientation === "horizontal" ? (o(!0), s(h, { key: 3 }, y(c.value.end - c.value.start + 1, (t, l) => (o(), s("line", { x1: i.value.left, x2: i.value.right, y1: i.value.top + d.value * l, y2: i.value.top + d.value * l, stroke: e.value.style.chart.grid.y.axisColor, "stroke-width": 1, "stroke-linecap": "round" }, null, 8, ka))), 256)) : v("", !0), e.value.style.chart.grid.y.showVerticalLines && e.value.orientation === "vertical" ? (o(!0), s(h, { key: 4 }, y(c.value.end - c.value.start + 1, (t, l) => (o(), s("line", { x1: i.value.left + d.value * l, x2: i.value.left + d.value * l, y1: i.value.top, y2: i.value.bottom, stroke: e.value.style.chart.grid.y.axisColor, "stroke-width": 1, "stroke-linecap": "round" }, null, 8, wa))), 256)) : v("", !0), e.value.style.chart.grid.x.showHorizontalLines && e.value.orientation === "horizontal" ? (o(!0), s(h, { key: 5 }, y(N.value, (t, l) => (o(), s("line", { x1: t.horizontal_x, x2: t.horizontal_x, y1: i.value.top, y2: i.value.bottom, stroke: e.value.style.chart.grid.x.axisColor, "stroke-width": 1, "stroke-linecap": "round" }, null, 8, za))), 256)) : v("", !0), (o(!0), s(h, null, y(k.value, (t, l) => (o(), s("g", null, [ a.$slots.pattern ? (o(), s("defs", _a, [ x(a.$slots, "pattern", ze({ ref_for: !0 }, { seriesIndex: t.absoluteIndex, patternId: `pattern_${O.value}_${t.absoluteIndex}` }), void 0, !0) ])) : v("", !0), e.value.orientation === "vertical" ? (o(), s(h, { key: 1 }, [ (o(!0), s(h, null, y(t.x, (u, n) => (o(), s("rect", { x: u, y: t.y[n] < 0 ? 0 : t.y[n], height: t.height[n] < 0 ? 1e-4 : t.height[n] || 0, rx: e.value.style.chart.bars.borderRadius > t.height[n] / 2 ? (t.height[n] < 0 ? 0 : t.height[n]) / 2 : e.value.style.chart.bars.borderRadius, width: d.value * (1 - e.value.style.chart.bars.gapRatio / 2), fill: e.value.style.chart.bars.gradient.show ? `url(#gradient_${t.id})` : t.color, stroke: e.value.style.chart.backgroundColor, "stroke-width": e.value.style.chart.bars.strokeWidth, "stroke-linecap": "round", "stroke-linejoin": "round", class: te({ "vue-data-ui-bar-animated": e.value.useCssAnimation, "vue-data-ui-bar-transition": D.value }) }, null, 10, Ca))), 256)), a.$slots.pattern ? (o(), s("g", La, [ (o(!0), s(h, null, y(t.x, (u, n) => (o(), s("rect", { x: u, y: t.y[n] < 0 ? 0 : t.y[n], height: t.height[n] < 0 ? 1e-4 : t.height[n] || 0, rx: e.value.style.chart.bars.borderRadius > t.height[n] / 2 ? (t.height[n] < 0 ? 0 : t.height[n]) / 2 : e.value.style.chart.bars.borderRadius, width: d.value * (1 - e.value.style.chart.bars.gapRatio / 2), fill: `url(#pattern_${O.value}_${t.absoluteIndex})`, stroke: e.value.style.chart.backgroundColor, "stroke-width": e.value.style.chart.bars.strokeWidth, "stroke-linecap": "round", "stroke-linejoin": "round", class: te({ "vue-data-ui-bar-animated": e.value.useCssAnimation, "vue-data-ui-bar-transition": D.value }) }, null, 10, Sa))), 256)) ])) : v("", !0) ], 64)) : (o(), s(h, { key: 2 }, [ (o(!0), s(h, null, y(t.horizontal_x, (u, n) => (o(), s("rect", { x: b(ge)(u, i.value.left), y: t.horizontal_y[n] < 0 ? 0 : t.horizontal_y[n], width: b(ge)(t.horizontal_width[n] < 0 ? 1e-4 : t.horizontal_width[n]), rx: e.value.style.chart.bars.borderRadius > t.height[n] / 2 ? (t.height[n] < 0 ? 0 : t.height[n]) / 2 : e.value.style.chart.bars.borderRadius, height: d.value * (1 - e.value.style.chart.bars.gapRatio / 2), fill: e.value.style.chart.bars.gradient.show ? `url(#gradient_${t.id})` : t.color, stroke: e.value.style.chart.backgroundColor, "stroke-width": e.value.style.chart.bars.strokeWidth, "stroke-linecap": "round", "stroke-linejoin": "round", class: te({ "vue-data-ui-bar-animated": e.value.useCssAnimation, "vue-data-ui-bar-transition": D.value }) }, null, 10, $a))), 256)), a.$slots.pattern ? (o(), s("g", Ma, [ (o(!0), s(h, null, y(t.horizontal_x, (u, n) => (o(), s("rect", { x: b(ge)(u, i.value.left), y: t.horizontal_y[n] < 0 ? 0 : t.horizontal_y[n], width: b(ge)(t.horizontal_width[n] < 0 ? 1e-4 : t.horizontal_width[n]), rx: e.value.style.chart.bars.borderRadius > t.height[n] / 2 ? (t.height[n] < 0 ? 0 : t.height[n]) / 2 : e.value.style.chart.bars.borderRadius, height: d.value * (1 - e.value.style.chart.bars.gapRatio / 2), fill: `url(#pattern_${O.value}_${t.absoluteIndex})`, stroke: e.value.style.chart.backgroundColor, "stroke-width": e.value.style.chart.bars.strokeWidth, "stroke-linecap": "round", "stroke-linejoin": "round", class: te({ "vue-data-ui-bar-animated": e.value.useCssAnimation, "vue-data-ui-bar-transition": D.value }) }, null, 10, Ta))), 256)) ])) : v("", !0) ], 64)) ]))), 256)), e.value.style.chart.grid.x.showAxis ? (o(), s("line", { key: 6, x1: i.value.left, x2: i.value.right, y1: i.value.bottom, y2: i.value.bottom, stroke: e.value.style.chart.grid.x.axisColor, "stroke-width": e.value.style.chart.grid.x.axisThickness, "stroke-linecap": "round", "stroke-linejoin": "round" }, null, 8, Na)) : v("", !0), e.value.style.chart.grid.y.showAxis && !e.value.style.chart.bars.distributed ? (o(), s("line", { key: 7, x1: i.value.left, x2: i.value.left, y1: i.value.top, y2: i.value.bottom, stroke: e.value.style.chart.grid.y.axisColor, "stroke-width": e.value.style.chart.grid.y.axisThickness, "stroke-linecap": "round", "stroke-linejoin": "round" }, null, 8, Ia)) : v("", !0), e.value.style.chart.grid.x.axisName.show && e.value.style.chart.grid.x.axisName.text ? (o(), s("text", { key: 8, x: i.value.left + i.value.width / 2, y: i.value.chartHeight + e.value.style.chart.grid.x.axisName.offsetY, "font-size": e.value.style.chart.grid.x.axisName.fontSize, fill: e.value.style.chart.grid.x.axisName.color, "font-weight": e.value.style.chart.grid.x.axisName.bold ? "bold" : "normal", "text-anchor": "middle" }, $(e.value.style.chart.grid.x.axisName.text), 9, Oa)) : v("", !0), e.value.style.chart.grid.y.axisName.show && e.value.style.chart.grid.y.axisName.text ? (o(), s("text", { key: 9, transform: `translate(${e.value.style.chart.grid.y.axisName.fontSize + e.value.style.chart.grid.y.axisName.offsetX}, ${i.value.top + i.value.height / 2}) rotate(-90)`, "font-size": e.value.style.chart.grid.y.axisName.fontSize, fill: e.value.style.chart.grid.y.axisName.color, "font-weight": e.value.style.chart.grid.y.axisName.bold ? "bold" : "normal", "text-anchor": "middle" }, $(e.value.style.chart.grid.y.axisName.text), 9, Ra)) : v("", !0), z.value.dataLabels.show && e.value.orientation === "vertical" ? (o(), s(h, { key: 10 }, [ (o(!0), s(h, null, y(k.value, (t, l) => (o(), s("g", null, [ (o(!0), s(h, null, y(t.x, (u, n) => (o(), s(h, null, [ je(t.series[n], t.proportions[n]) ? (o(), s("text", { key: 0, x: u + d.value * (1 - e.value.style.chart.bars.gapRatio / 2) / 2, y: t.y[n] + t.height[n] / 2 + e.value.style.chart.bars.dataLabels.fontSize / 3, "font-size": e.value.style.chart.bars.dataLabels.fontSize, fill: e.value.style.chart.bars.dataLabels.adaptColorToBackground ? b(ut)(t.color) : e.value.style.chart.bars.dataLabels.color, "font-weight": e.value.style.chart.bars.dataLabels.bold ? "bold" : "normal", "text-anchor": "middle" }, $(e.value.style.chart.bars.showDistributedPercentage && e.value.style.chart.bars.distributed ? Be(t.proportions[n] * 100, t, l, n) : ie(t.series[n], t, l, n, t.signedSeries[n])), 9, Pa)) : v("", !0) ], 64))), 256)) ]))), 256)), e.value.style.chart.bars.totalValues.show && k.value.length > 1 ? (o(), s("g", Aa, [ (o(!0), s(h, null, y(We.value, (t, l) => (o(), s(h, null, [ !e.value.style.chart.bars.dataLabels.hideEmptyValues || t.value !== 0 ? (o(), s("text", { key: 0, x: i.value.left + d.value * l + d.value / 2, y: i.value.top - e.value.style.chart.bars.totalValues.fontSize / 3, "text-anchor": "middle", "font-size": e.value.style.chart.bars.totalValues.fontSize, "font-weight": e.value.style.chart.bars.totalValues.bold ? "bold" : "normal", fill: e.value.style.chart.bars.totalValues.color }, $(ie(t.value, t, l, t.sign)), 9, Va)) : v("", !0) ], 64))), 256)) ])) : v("", !0) ], 64)) : v("", !0), z.value.dataLabels.show && e.value.orientation === "horizontal" ? (o(), s(h, { key: 11 }, [ (o(!0), s(h, null, y(k.value, (t, l) => (o(), s("g", null, [ (o(!0), s(h, null, y(t.horizontal_x, (u, n) => (o(), s(h, null, [ je(t.series[n], t.proportions[n]) ? (o(), s("text", { key: 0, x: u + (t.horizontal_width[n] < 0 ? 1e-4 : t.horizontal_width[n]) / 2, y: t.horizontal_y[n] + d.value * (1 - e.value.style.chart.bars.gapRatio / 2) / 2 + e.value.style.chart.bars.dataLabels.fontSize / 3, "font-size": e.value.style.chart.bars.dataLabels.fontSize, fill: e.value.style.chart.bars.dataLabels.adaptColorToBackground ? b(ut)(t.color) : e.value.style.chart.bars.dataLabels.color, "font-weight": e.value.style.chart.bars.dataLabels.bold ? "bold" : "normal", "text-anchor": "middle" }, $(e.value.style.chart.bars.showDistributedPercentage && e.value.style.chart.bars.distributed ? Be(t.proportions[n] * 100, t, l, n) : ie(t.series[n], t, l, n, t.signedSeries[n])), 9, Fa)) : v("", !0) ], 64))), 256)) ]))), 256)), e.value.style.chart.bars.totalValues.show && k.value.length > 1 ? (o(), s("g", Da, [ (o(!0), s(h, null, y(We.value, (t, l) => (o(), s(h, null, [ !e.value.style.chart.bars.dataLabels.hideEmptyValues || t.value !== 0 ? (o(), s("text", { key: 0, x: i.value.right + e.value.style.chart.bars.totalValues.fontSize / 3, y: i.value.top + d.value * l + d.value / 2, "text-anchor": "start", "font-size": e.value.style.chart.bars.totalValues.fontSize, "font-weight": e.value.style.chart.bars.totalValues.bold ? "bold" : "normal", fill: e.value.style.chart.bars.totalValues.color }, $(ie(t.value, t, l, t.sign)), 9, Ea)) : v("", !0) ], 64))), 256)) ])) : v("", !0) ], 64)) : v("", !0), e.value.style.chart.grid.y.axisLabels.show && !e.value.style.chart.bars.distributed && e.value.orientation === "vertical" ? (o(), s(h, { key: 12 }, [ (o(!0), s(h, null, y(N.value, (t, l) => (o(), s("line", { x1: i.value.left, x2: i.value.left - 6, y1: t.y, y2: t.y, stroke: e.value.style.chart.grid.x.axisColor, "stroke-width": 1 }, null, 8, Ha))), 256)), (o(!0), s(h, null, y(N.value, (t, l) => (o(), s("text", { x: t.x, y: t.y + e.value.style.chart.grid.y.axisLabels.fontSize / 3, "font-size": e.value.style.chart.grid.y.axisLabels.fontSize, "font-weight": e.value.style.chart.grid.y.axisLabels.bold ? "bold" : "normal", fill: e.value.style.chart.grid.y.axisLabels.color, "text-anchor": "end" }, $(b(X)({ p: e.value.style.chart.bars.dataLabels.prefix, v: t.value, s: e.value.style.chart.bars.dataLabels.suffix, r: e.value.style.chart.grid.y.axisLabels.rounding })), 9, Wa))), 256)) ], 64)) : v("", !0), e.value.style.chart.grid.y.axisLabels.show && !e.value.style.chart.bars.distributed && e.value.orientation === "horizontal" ? (o(), s(h, { key: 13 }, [ (o(!0), s(h, null, y(N.value, (t, l) => (o(), s("line", { x1: t.horizontal_x, x2: t.horizontal_x, y1: i.value.bottom, y2: i.value.bottom + 6, stroke: e.value.style.chart.grid.x.axisColor, "stroke-width": 1, "stroke-linecap": "round" }, null, 8, Ba))), 256)), (o(!0), s(h, null, y(N.value, (t, l) => (o(), s("text", { "font-size": e.value.style.chart.grid.x.timeLabels.fontSize, "font-weight": e.value.style.chart.grid.y.axisLabels.bold ? "bold" : "normal", fill: e.value.style.chart.grid.y.axisLabels.color, "text-anchor": e.value.style.chart.grid.x.timeLabels.rotation > 0 ? "start" : e.value.style.chart.grid.x.timeLabels.rotation < 0 ? "end" : "middle", transform: `translate(${t.horizontal_x}, ${i.value.bottom + e.value.style.chart.grid.x.timeLabels.fontSize * 1.3 + e.value.style.chart.grid.x.timeLabels.offsetY}), rotate(${e.value.style.chart.grid.x.timeLabels.rotation})` }, $(b(X)({ p: e.value.style.chart.bars.dataLabels.prefix, v: t.value, s: e.value.style.chart.bars.dataLabels.suffix, r: e.value.style.chart.grid.y.axisLabels.rounding })), 9, Ua))), 256)) ], 64)) : v("", !0), e.value.style.chart.grid.x.timeLabels.show && e.value.orientation === "vertical" ? (o(), s(h, { key: 14 }, [ a.$slots["time-label"] ? (o(), s("g", Ya, [ (o(!0), s(h, null, y(A.value, (t, l) => (o(), s("g", null, [ x(a.$slots, "time-label", ze({ ref_for: !0 }, { x: i.value.left + d.value * l + d.value / 2, y: i.value.bottom + e.value.style.chart.grid.x.timeLabels.fontSize * 1.3 + e.value.style.chart.grid.x.timeLabels.offsetY, fontSize: e.value.style.chart.grid.x.timeLabels.fontSize, fill: e.value.style.chart.grid.x.timeLabels.color, transform: `translate(${i.value.left + d.value * l + d.value / 2}, ${i.value.bottom + e.value.style.chart.grid.x.timeLabels.fontSize * 1.3 + e.value.style.chart.grid.x.timeLabels.offsetY}), rotate(${e.value.style.chart.grid.x.timeLabels.rotation})`, absoluteIndex: t.absoluteIndex, content: t.text, textAnchor: e.value.style.chart.grid.x.timeLabels.rotation > 0 ? "start" : e.value.style.chart.grid.x.timeLabels.rotation < 0 ? "end" : "middle", show: !0 }), void 0, !0) ]))), 256)) ])) : (o(), s("g", Xa, [ (o(!0), s(h, null, y(A.value, (t, l) => (o(), s("text", { "text-anchor": e.value.style.chart.grid.x.timeLabels.rotation > 0 ? "start" : e.value.style.chart.grid.x.timeLabels.rotation < 0 ? "end" : "middle", "font-size": e.value.style.chart.grid.x.timeLabels.fontSize, "font-weight": e.value.style.chart.grid.x.timeLabels.bold ? "bold" : "normal", fill: e.value.style.chart.grid.x.timeLabels.color, transform: `translate(${i.value.left + d.value * l + d.value / 2}, ${i.value.bottom + e.value.style.chart.grid.x.timeLabels.fontSize * 1.3 + e.value.style.chart.grid.x.timeLabels.offsetY}), rotate(${e.value.style.chart.grid.x.timeLabels.rotation})`, style: { cursor: "pointer" }, onClick: () => Qe(t, l) }, $(t.text), 9, Ga))), 256)) ])) ], 64)) : v("", !0), e.value.style.chart.grid.x.timeLabels.show && e.value.orientation === "horizontal" ? (o(), s(h, { key: 15 }, [ a.$slots["time-label"] ? (o(), s("g", Ja, [ (o(!0), s(h, null, y(A.value, (t, l) => (o(), s("g", null, [ x(a.$slots, "time-label", ze({ ref_for: !0 }, { x: i.value.left - 8, y: i.value.top + d.value * l + d.value / 2 + e.value.style.chart.grid.y.axisLabels.fontSize / 3, fontSize: e.value.style.chart.grid.x.timeLabels.fontSize, fill: e.value.style.chart.grid.x.timeLabels.color, transform: null, absoluteIndex: t.absoluteIndex, content: t.text, textAnchor: "end", show: !0 }), void 0, !0) ]))), 256)) ])) : (o(), s("g", qa, [ (o(!0), s(h, null, y(A.value, (t, l) => (o(), s("text", { "text-anchor": "end", "font-size": e.value.style.chart.grid.y.axisLabels.fontSize, "font-weight": e.value.style.chart.grid.y.axisLabels.bold ? "bold" : "normal", fill: e.value.style.chart.grid.y.axisLabels.color, x: i.value.left - 8, y: i.value.top + d.value * l + d.value / 2 + e.value.style.chart.grid.y.axisLabels.fontSize / 3, style: { cursor: "pointer" }, onClick: () => Qe(t, l) }, $(t.text), 9, Za))), 256)) ])) ], 64)) : v("", !0), z.value.showTooltip && e.value.orientation === "vertical" ? (o(!0), s(h, { key: 16 }, y(c.value.end - c.value.start, (t, l) => (o(), s("rect", { x: i.value.left + l * d.value, y: i.value.top, width: d.value, height: i.value.height < 0 ? 0 : i.value.height, onClick: (u) => Ue(l), onMouseenter: (u) => Ye(l), onMouseleave: r[0] || (r[0] = (u) => { K.value = null, le.value = !1; }), fill: l === K.value ? e.value.st