UNPKG

vue-data-ui

Version:

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

1,533 lines (1,532 loc) 48.4 kB
import { t as e } from "./rolldown-runtime-Dy4uBu1J.js"; import { Gt as t, Jt as n, S as r, q as i, t as a, xt as o } from "./lib-Bttd6u5E.js"; import { n as s } from "./useHints-Dq_w2E8B.js"; import { t as c } from "./useConfig-D3scuR88.js"; import { t as l } from "./usePrinter-DN5bYhTG.js"; import { n as u, t as d } from "./BaseScanner-DZvpgOjM.js"; import { t as f } from "./useSvgExport-DH-FfcqQ.js"; import { t as p } from "./useNestedProp-vPNvh7rV.js"; import { t as ee } from "./useThemeCheck-C43Tcqmk.js"; import { t as te } from "./img-Bnokohej.js"; import { n as ne } from "./Title-BE3qg9xl.js"; import { t as re } from "./_plugin-vue_export-helper-B3ysoDQm.js"; import { l as ie, t as ae } from "./useResponsive-ZtArZtUf.js"; import { t as oe } from "./A11yDataTable-DdRsVULz.js"; import { t as se } from "./useUserOptionState-DK-_1ddE.js"; import { t as ce } from "./useChartAccessibility-DYqac8yF.js"; import { t as le } from "./usePanZoom-CYU3B4T3.js"; import { t as ue } from "./BaseZoomControls-BZvCnZEi.js"; import { t as de } from "./geoProjections-CEo3dVaL.js"; import { t as fe } from "./vue_ui_geo-B8TODs-G.js"; import { Fragment as pe, computed as m, createBlock as h, createCommentVNode as g, createElementBlock as _, createElementVNode as v, createSlots as me, createVNode as he, defineAsyncComponent as ge, guardReactiveProps as y, mergeProps as _e, nextTick as b, normalizeClass as ve, normalizeProps as x, normalizeStyle as ye, onBeforeUnmount as be, onMounted as xe, openBlock as S, ref as C, renderList as Se, renderSlot as w, toDisplayString as Ce, toRefs as we, unref as T, watch as E, withCtx as D } from "vue"; //#region src/components/vue-ui-geo.vue var Te = /* @__PURE__ */ e({ default: () => ze }), Ee = ["id"], De = ["id"], Oe = { style: { position: "relative" } }, ke = [ "xmlns", "viewBox", "aria-describedby", "id" ], Ae = ["transform"], je = [ "d", "fill", "stroke", "stroke-width", "onMouseenter", "onMouseleave", "onClick" ], Me = [ "d", "stroke", "stroke-width", "onMouseenter", "onMouseleave", "onClick" ], Ne = [ "cx", "cy", "r", "fill", "stroke", "stroke-width", "onMouseenter" ], Pe = [ "cx", "cy", "r", "fill", "stroke", "stroke-width", "onMouseenter", "onMouseleave", "onClick" ], Fe = [ "x", "y", "fill", "font-size" ], Ie = { key: 0, style: { position: "absolute", top: "100%", left: "0", width: "100%" }, "data-dom-to-png-ignore": "", "aria-hidden": "true" }, Le = { key: 6, class: "vue-data-ui-watermark" }, Re = 1.5, ze = /*#__PURE__*/ re({ __name: "vue-ui-geo", props: { config: { type: Object, default() { return {}; } }, dataset: { type: [Array, Object], default() { return []; } } }, emits: ["copyAlt"], setup(e, { expose: re, emit: Te }) { let ze = ge(() => import("./Tooltip-DhjyfHwz.js")), Be = ge(() => import("./UserOptions-Dt98of5H.js").then((e) => e.n)), Ve = ge(() => import("./PenAndPaper-DAE-tnEQ.js").then((e) => e.t)), He = ge(() => import("./PackageVersion-D6d8SCp9.js").then((e) => e.t)), O = e, Ue = Te, { vue_ui_geo: We } = c(), { isThemeValid: Ge, warnInvalidTheme: Ke } = ee(), k = C(i()), qe = C(0), Je = C(0), Ye = C(!1), Xe = C(!1), A = C(null), j = C(!1), Ze = C(null), Qe = C(null), $e = C(null), et = C(null), M = C(null), N = C(null), tt = C(null), nt = C(null), P = C(null), rt = C({ x: 0, y: 0 }), F = C("pointer"), it = C(!1), I = C(!1); function at(e) { I.value = e, qe.value += 1; } function ot() { let e = p({ userConfig: O.config, defaultConfig: We }), t = e.theme; if (!t) return e; if (!Ge.value(e)) return Ke(e), e; let n = p({ userConfig: fe[t] || O.config, defaultConfig: e }); return p({ userConfig: O.config, defaultConfig: n }); } let L = C(ot()); s({ config: () => L.value, dataset: () => O.dataset, component: "VueUiGeo", rules: [{ test: (e) => e.length > 100, message: [ "👀 The number of data points > 100, which can make the chart hard to read. Consider:", "", "▶️ Using filters to reduce the number of data points displayed at the same time, and offer users some level of control." ] }] }); let st = m(() => L.value.userOptions.useCursorPointer), { userOptionsVisible: ct, keepUserOptionState: lt } = se({ config: L.value }), { svgRef: R } = ce({ config: L.value.style.chart.title }), ut = m(() => n({ defaultConfig: { map: { geoJson: { type: "FeatureCollection", features: [ { type: "Feature", properties: { name: "Island A" }, geometry: { type: "Polygon", coordinates: [[ [-6, 2], [-4, 2], [-4, 4], [-6, 4], [-6, 2] ]] } }, { type: "Feature", properties: { name: "Island B" }, geometry: { type: "Polygon", coordinates: [[ [-2, -1], [1, -1], [1, 2], [-2, 2], [-2, -1] ]] } }, { type: "Feature", properties: { name: "Island C" }, geometry: { type: "Polygon", coordinates: [[ [3, -3], [5, -3], [5, -1], [3, -1], [3, -3] ]] } }, { type: "Feature", properties: { name: "Island D" }, geometry: { type: "Polygon", coordinates: [[ [4, 3], [7, 3], [7, 5], [4, 5], [4, 3] ]] } } ] } }, userOptions: { show: !1 }, style: { chart: { backgroundColor: "#99999930", territory: { fill: "#99999950", stroke: "#8A8A8A", strokeWidth: .5 } } } }, userConfig: L.value.skeletonConfig ?? {} })), { loading: dt, FINAL_DATASET: ft } = u({ ...we(O), FINAL_CONFIG: L, prepareConfig: ot, allowEmptyDataset: !0, skeletonDataset: O.config?.skeletonDataset ?? [], skeletonConfig: n({ defaultConfig: L.value, userConfig: ut.value }) }), { isPrinting: pt, isImaging: mt, generatePdf: ht, generateImage: gt } = l({ elementId: `vue-ui-geo_${k.value}`, fileName: L.value.style.chart.title.text || "vue-ui-geo", options: L.value.userOptions.print }), _t = m(() => L.value.style.chart.controls.show ? L.value.style.chart.controls.position === "top" ? tt.value?.$el ?? null : L.value.style.chart.controls.position === "bottom" ? nt.value?.$el ?? null : null : null); function vt() { M.value && (N.value && M.value.unobserve(N.value), M.value.disconnect(), M.value = null, N.value = null); } let z = m(() => !!L.value.responsive && !I.value); E(() => I.value, async (e) => { if (e) { vt(), V.value = Number(L.value.style.chart.dimensions.width) || V.value, H.value = Number(L.value.style.chart.dimensions.height) || H.value, await b(), j.value = !1, requestAnimationFrame(() => { j.value || nn(); }); return; } L.value.responsive && (await b(), yt()); }); function yt() { if (vt(), !z.value) return; let e = ie(() => { if (!A.value) return; let { width: e, height: t } = ae({ chart: A.value, noTitle: bt.value ? $e.value : null, title: L.value.style.chart.title.text ? Qe.value : null, legend: _t.value, source: et.value }); requestAnimationFrame(() => { V.value = Math.max(.1, Number(e) || .1), H.value = Math.max(.1, Number(t) || .1) - 24; }); }); M.value = new ResizeObserver(e), N.value = A.value ? A.value.parentNode : null, N.value && M.value.observe(N.value), e(); } let bt = m(() => L.value.userOptions.show && !L.value.style.chart.title.text), xt = C({ showTooltip: L.value.style.chart.tooltip.show }), B = C(L.value.style.chart.zoom.active); E(() => O.config, () => { L.value = ot(), xt.value.showTooltip = L.value.style.chart.tooltip.show, B.value = L.value.style.chart.zoom.active, V.value = L.value.style.chart.dimensions.width, H.value = L.value.style.chart.dimensions.height, yt(), Je.value += 1, qe.value += 1; }, { deep: !0 }); let { projections: St } = de, Ct = m(() => L.value?.projection || "equirectangular"), wt = m(() => { let e = St?.[Ct.value]; return typeof e == "function" ? e : St.equirectangular; }), Tt = m(() => L.value.map.geoJson ?? null), Et = { aitoff: { width: 1e3, height: 500 }, azimuthalEquidistant: { width: 1e3, height: 1e3 }, bonne: { width: 1e3, height: 1e3 }, equirectangular: { width: 1e3, height: 700 }, gallPeters: { width: 1e3, height: 800 }, globe: { width: 1e3, height: 1e3 }, hammer: { width: 1e3, height: 500 }, mercator: { width: 1e3, height: 750 }, mollweide: { width: 1e3, height: 600 }, robinson: { width: 1e3, height: 600 }, sinusoidal: { width: 1e3, height: 500 }, vanDerGrinten: { width: 1e3, height: 1e3 }, winkelTripel: { width: 1e3, height: 1e3 } }, V = C(L.value.style.chart.dimensions.width), H = C(L.value.style.chart.dimensions.height), Dt = m(() => { let e = Et[Ct.value] || Et.equirectangular; return { width: e.width, height: e.height }; }), U = m(() => { let e = Dt.value, t = V.value, n = H.value, r = Number.isFinite(t) && t > 0, i = Number.isFinite(n) && n > 0; return r && i ? { width: t, height: n } : r && !i ? { width: t, height: t * (e.height / e.width) } : !r && i ? { width: n * (e.width / e.height), height: n } : { width: e.width, height: e.height }; }), Ot = m(() => { let e = L.value?.map?.center, t = [0, 0]; if (!Array.isArray(e) || e.length !== 2) return t; let n = Number(e[0]), r = Number(e[1]); return !Number.isFinite(n) || !Number.isFinite(r) ? t : [n, r]; }); function W([e, t]) { return wt.value([e, t], Dt.value.width, Dt.value.height, Ot.value); } function kt(e, t = {}) { let { defaultName: n = "", namePropertyCandidates: r = [ "name", "nom", "admin", "NAME", "label", "title", "description", "DESCRIPTION", "NAME_1", "NAME_2", "NAME_3", "NAME_EN", "name:en", "name_en", "localname", "local_name" ], includeNullGeometries: i = !1 } = t, a = { type: "FeatureCollection", features: [] }; function o(e) { return typeof e == "object" && !!e && !Array.isArray(e); } function s(e) { return !o(e) || typeof e.type != "string" ? !1 : e.type === "GeometryCollection" ? Array.isArray(e.geometries) : Object.hasOwn(e, "coordinates"); } function c(e) { if (!o(e)) return ""; for (let t of r) { let n = e[t]; if (typeof n == "string" && n.trim()) return n.trim(); } return ""; } function l({ geometry: e, properties: t, fallbackName: r, featureIndex: i }) { let a = o(t) ? { ...t } : {}, s = c(a), l = n ? `${n} ${i + 1}` : "", u = s || (typeof r == "string" ? r.trim() : "") || l; return !a.name && u && (a.name = u), { type: "Feature", geometry: e, properties: a }; } function u(e, t, n, r, a) { let c = Array.isArray(e?.geometries) ? e.geometries : [], d = r; for (let e = 0; e < c.length; e += 1) { let r = c[e]; if (r) { if (o(r) && r.type === "GeometryCollection") { d = u(r, t, n, d, a); continue; } if (s(r)) { if (r.coordinates == null && r.type !== "GeometryCollection") { i && (a.push(l({ geometry: null, properties: t, fallbackName: n, featureIndex: d })), d += 1); continue; } a.push(l({ geometry: r, properties: t, fallbackName: n, featureIndex: d })), d += 1; } } } return d; } function d(e, t, n = 0) { let r = n; if (e == null) return r; if (Array.isArray(e)) { for (let n of e) r = d(n, t, r); return r; } if (!o(e) || typeof e.type != "string") return r; if (e.type === "FeatureCollection") { let n = Array.isArray(e.features) ? e.features : []; for (let e of n) r = d(e, t, r); return r; } if (e.type === "Feature") { let n = o(e.properties) ? e.properties : {}, a = c(n), d = e.geometry ?? null; return d == null ? (i && (t.push(l({ geometry: null, properties: n, fallbackName: a, featureIndex: r })), r += 1), r) : o(d) && d.type === "GeometryCollection" ? u(d, n, a, r, t) : (s(d) && (t.push(l({ geometry: d, properties: n, fallbackName: a, featureIndex: r })), r += 1), r); } return e.type === "GeometryCollection" ? u(e, {}, "", r, t) : (s(e) && (t.push(l({ geometry: e, properties: {}, fallbackName: "", featureIndex: r })), r += 1), r); } let f = []; return d(e, f, 0), { ...a, features: f }; } function At(e) { let t = Array.isArray(e?.features) ? e.features : []; function n(e) { if (!e || typeof e != "object") return ""; let t = [ e.name, e.nom, e.admin, e.NAME, e.label, e.title, e.description, e.DESCRIPTION, e.NAME_1, e.NAME_2, e.NAME_3, e.NAME_EN, e["name:en"], e.name_en, e.localname, e.local_name ]; for (let e of t) if (typeof e == "string" && e.trim()) return e.trim(); for (let t of Object.values(e)) if (typeof t == "string" && t.trim()) return t.trim(); return ""; } return t.filter((e) => e && e.type === "Feature" && e.geometry).map((e, t) => { let r = e.properties || {}, i = n(r); return { feature: e, geometry: e.geometry, properties: r, name: i, uid: `map-feature-${k.value}-${t}`, index: t }; }); } let jt = m(() => kt(Tt.value, { defaultName: "", includeNullGeometries: !1 })), Mt = m(() => At(jt.value)); function Nt(e) { if (!e || typeof e.type != "string") return ""; if (e.type === "GeometryCollection") return (Array.isArray(e.geometries) ? e.geometries : []).map((e) => Nt(e)).filter(Boolean).join(" "); let t = (e) => { if (!Array.isArray(e) || e.length < 2) return null; let t = Number(e[0]), n = Number(e[1]); if (!Number.isFinite(t) || !Number.isFinite(n)) return null; let r = W([t, n]); if (!Array.isArray(r) || r.length < 2) return null; let i = Number(r[0]), a = Number(r[1]); return !Number.isFinite(i) || !Number.isFinite(a) ? null : [i, a]; }, n = (e) => { let n = (e || []).map(t).filter(Boolean); return n.length < 2 ? "" : "M" + n.map(([e, t]) => `${e},${t}`).join("L"); }, r = (e) => (e || []).map((e) => { let t = n(e); return t ? t + "Z" : ""; }).filter(Boolean).join(" "); return e.type === "Polygon" ? r(e.coordinates) : e.type === "MultiPolygon" ? (e.coordinates || []).map(r).filter(Boolean).join(" ") : e.type === "LineString" ? n(e.coordinates) : e.type === "MultiLineString" ? (e.coordinates || []).map(n).filter(Boolean).join(" ") : ""; } function Pt(e) { return e ? e.type === "GeometryCollection" ? (Array.isArray(e.geometries) ? e.geometries : []).flatMap((e) => Pt(e)) : e.type === "Point" ? Array.isArray(e.coordinates) ? [e.coordinates] : [] : e.type === "MultiPoint" && Array.isArray(e.coordinates) ? e.coordinates : [] : []; } function Ft(e) { return !e || typeof e.type != "string" ? !1 : e.type === "GeometryCollection" ? (Array.isArray(e.geometries) ? e.geometries : []).some((e) => Ft(e)) : e.type === "Point" || e.type === "MultiPoint"; } let It = m(() => Mt.value.filter((e) => { let t = e.geometry; return t ? t.type === "GeometryCollection" ? (Array.isArray(t.geometries) ? t.geometries : []).some((e) => e?.type === "Polygon" || e?.type === "MultiPolygon") : t.type === "Polygon" || t.type === "MultiPolygon" : !1; })), Lt = m(() => Mt.value.filter((e) => { let t = e.geometry; return t ? t.type === "GeometryCollection" ? (Array.isArray(t.geometries) ? t.geometries : []).some((e) => e?.type === "LineString" || e?.type === "MultiLineString") : t.type === "LineString" || t.type === "MultiLineString" : !1; })), Rt = m(() => Mt.value.filter((e) => { let t = e.geometry; return t ? Ft(t) : !1; })), zt = m(() => It.value.map((e) => { let t = Nt(e.geometry); return t ? { ...e, path: t } : null; }).filter(Boolean)), Bt = m(() => Lt.value.map((e) => { let t = Nt(e.geometry); return t ? { ...e, path: t } : null; }).filter(Boolean)), Vt = m(() => { let e = []; function t(e = {}) { let t = e?.style && typeof e.style == "object" ? e.style : {}, n = e.radius ?? e.r ?? t.radius ?? t.r, i = e.color ?? e.fill ?? t.color ?? t.fill, a = e.stroke ?? t.stroke, o = e.strokeWidth ?? e.stroke_width ?? t.strokeWidth ?? t.stroke_width; return { radius: Number.isFinite(Number(n)) ? Number(n) : Number(L.value.style.chart.points.radius), fill: i != null && String(i).trim() ? r(String(i).trim()) : L.value.style.chart.points.fill, stroke: a != null && String(a).trim() ? r(String(a).trim()) : L.value.style.chart.points.stroke, strokeWidth: Number.isFinite(Number(o)) ? Number(o) : Number(L.value.style.chart.points.strokeWidth) }; } for (let n of Rt.value) { let r = Pt(n.geometry); for (let i = 0; i < r.length; i += 1) { let a = r[i]; if (!Array.isArray(a) || a.length < 2) continue; let o = Number(a[0]), s = Number(a[1]); if (!Number.isFinite(o) || !Number.isFinite(s)) continue; let c = W([o, s]), l = c?.[0], u = c?.[1]; if (!Number.isFinite(l) || !Number.isFinite(u)) continue; let d = t(n?.feature?.properties && typeof n.feature.properties == "object" ? n.feature.properties : {}); e.push({ uid: `${n.uid}-geojson-point-${i}`, name: n.name || "", x: l, y: u, ...d, originalFeature: n.feature, featureIndex: n.index, pointIndex: i }); } } return e; }); function Ht(e) { if (!e || typeof e.type != "string") return []; let t = [], n = (e) => { if (!Array.isArray(e) || e.length < 2) return; let n = Number(e[0]), r = Number(e[1]); if (!Number.isFinite(n) || !Number.isFinite(r)) return; let i = W([n, r]), a = i?.[0], o = i?.[1]; !Number.isFinite(a) || !Number.isFinite(o) || t.push([a, o]); }, r = (e) => { if (Array.isArray(e)) { if (e.length >= 2 && typeof e[0] == "number" && typeof e[1] == "number") { n(e); return; } for (let t of e) r(t); } }; if (e.type === "GeometryCollection" && Array.isArray(e.geometries)) { for (let n of e.geometries) t.push(...Ht(n)); return t; } return e.type === "Point" ? (n(e.coordinates), t) : e.type === "MultiPoint" ? ((e.coordinates || []).forEach(n), t) : (r(e.coordinates), t); } function Ut(e) { let t = []; for (let n of e) t.push(...Ht(n.geometry)); if (!t.length) return null; let n = Infinity, r = Infinity, i = -Infinity, a = -Infinity; for (let [e, o] of t) e < n && (n = e), o < r && (r = o), e > i && (i = e), o > a && (a = o); let o = i - n, s = a - r; return !(o > 0) || !(s > 0) ? null : { minX: n, minY: r, maxX: i, maxY: a, width: o, height: s }; } let Wt = m(() => Ut(Mt.value)); function Gt({ bounds: e, targetWidth: t, targetHeight: n, padding: r }) { if (!e || !(e.width > 0) || !(e.height > 0)) return { scale: 1, translateX: 0, translateY: 0, transform: "" }; let i = Number.isFinite(Number(r)) ? Number(r) : 0, a = Math.max(1, t - i * 2), o = Math.max(1, n - i * 2), s = a / e.width, c = o / e.height, l = Math.min(s, c), u = e.width * l, d = e.height * l, f = i + (a - u) / 2, p = i + (o - d) / 2, ee = f - e.minX * l, te = p - e.minY * l; return { scale: l, translateX: ee, translateY: te, transform: `translate(${ee} ${te}) scale(${l})` }; } let Kt = m(() => { let e = Wt.value; if (!e) return { scale: 1, translateX: 0, translateY: 0, transform: "" }; let t = L.value?.map?.fitPadding, n = Number.isFinite(Number(t)) ? Number(t) : 0; return Gt({ bounds: e, targetWidth: U.value.width, targetHeight: U.value.height, padding: n }); }), qt = m(() => `0 0 ${U.value.width} ${U.value.height}`), { viewBox: Jt, resetZoom: Yt, setInitialViewBox: Xt, scale: Zt, zoomByFactor: Qt } = le(R, { x: 0, y: 0, width: U.value.width, height: U.value.height }, 1, B); function $t() { B.value = !B.value; } function en(e) { let t = Kt.value, n = Number(t?.scale) || 1, r = Number(t?.translateX) || 0, i = Number(t?.translateY) || 0; return { x: e.x * n + r, y: e.y * n + i }; } function tn() { let e = L.value?.map?.center, t = Number(e?.[0]), n = Number(e?.[1]), r = Array.isArray(e) && e.length === 2 && Number.isFinite(t) && Number.isFinite(n) && (t !== 0 || n !== 0), i = U.value.width, a = U.value.height; if (!r) return { x: 0, y: 0, width: i, height: a }; let o = W([t, n]), s = o?.[0], c = o?.[1]; if (!Number.isFinite(s) || !Number.isFinite(c)) return { x: 0, y: 0, width: i, height: a }; let l = en({ x: s, y: c }); return { x: l.x - i / 2, y: l.y - a / 2, width: i, height: a }; } function nn() { let e = tn(); Xt(e, { overwriteCurrentIfNotZoomed: !0 }), j.value = !0; } let rn = m(() => { let e = Jt.value; return e ? `${e.x} ${e.y} ${e.width} ${e.height}` : qt.value; }); function an() { Qt(Re, !0); } function on() { Qt(1 / Re, !0); } async function sn() { let e = tn(); Xt(e, { overwriteCurrentIfNotZoomed: !0 }), Yt(!0); } E(() => [ L.value.projection, L.value.map.center?.[0], L.value.map.center?.[1], L.value.map.fitPadding, Tt.value ], async () => { j.value = !1, await b(), requestAnimationFrame(() => { j.value || nn(); }); }, { deep: !1 }), E(() => [ V.value, H.value, z.value ], async () => { z.value && (await b(), Xt({ x: 0, y: 0, width: U.value.width, height: U.value.height }, { overwriteCurrentIfNotZoomed: !0 }), j.value = !1, requestAnimationFrame(() => { j.value || nn(); })); }, { flush: "post" }); function cn(e) { return e ? e.type === "FeatureCollection" && Array.isArray(e.features) ? e.features.filter((e) => e?.type === "Feature" && e.geometry?.type === "Point").map((e, t) => { let n = e.properties || {}, r = n.name || n.label || n.title || `Point ${t + 1}`, i = e.geometry.coordinates; return { uid: `map-point-${k.value}-${t}`, name: r, coordinates: i, color: n.color ?? null, radius: n.radius ?? null, hoverRadiusRatio: L.value.style.chart.points.hoverRadiusRatio, description: n.description ?? null, original: e, index: t }; }) : Array.isArray(e) ? e.map((e, t) => { let n = null, r = `Point ${t + 1}`, i = null, a = null, o = null; Array.isArray(e) && e.length >= 2 ? n = [Number(e[0]), Number(e[1])] : e && typeof e == "object" && (Array.isArray(e.coordinates) && e.coordinates.length >= 2 ? n = [Number(e.coordinates[0]), Number(e.coordinates[1])] : Number.isFinite(Number(e.lon)) && Number.isFinite(Number(e.lat)) && (n = [Number(e.lon), Number(e.lat)]), typeof e.name == "string" && e.name.trim() && (r = e.name), e.description != null && (i = e.description), e.color != null && (a = e.color), e.radius != null && (o = e.radius)); let s = n ? n[0] : NaN, c = n ? n[1] : NaN; return !Number.isFinite(s) || !Number.isFinite(c) ? null : { uid: `map-point-${k.value}-${t}`, name: r, coordinates: [s, c], color: a, radius: o, hoverRadiusRatio: L.value.style.chart.points.hoverRadiusRatio, description: i, original: e, index: t }; }).filter(Boolean) : typeof e == "object" ? Object.entries(e).map(([e, t], n) => { if (!t || typeof t != "object") return null; let r = Array.isArray(t.coordinates) ? t.coordinates : null; if (!r || r.length < 2) return null; let i = Number(r[0]), a = Number(r[1]); return !Number.isFinite(i) || !Number.isFinite(a) ? null : { uid: `map-point-${k.value}-${n}-${e}`, name: t.name || e, coordinates: [i, a], color: t.color ?? null, radius: t.radius ?? null, hoverRadiusRatio: L.value.style.chart.points.hoverRadiusRatio, description: t.description ?? null, original: t, index: n }; }).filter(Boolean) : [] : []; } let ln = m(() => cn(ft.value)), un = m(() => ln.value.map((e) => { let t = W(e.coordinates), n = t?.[0], i = t?.[1]; return !Number.isFinite(n) || !Number.isFinite(i) ? null : { ...e, x: n, y: i, fill: e.color ? r(e.color) : L.value.style.chart.points.fill, radius: Number.isFinite(Number(e.radius)) ? Number(e.radius) : L.value.style.chart.points.radius }; }).filter(Boolean)), G = m(() => un.value.map((e, t) => ({ ...e, keyboardIndex: t }))); function dn(e) { let n = en(e), r = t(n.x, n.y, R.value); r && (rt.value = { x: r.x, y: r.y }); } let fn = C(!1), pn = C(""), K = C(!1), q = C(null), J = C(null); function mn(e) { pn.value = e, fn.value = !0; } function Y() { fn.value = !1, pn.value = ""; } function hn(e) { return String(e ?? "").replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll("\"", "&quot;").replaceAll("'", "&#039;"); } function gn(e) { Ze.value = { datapoint: e, seriesIndex: e.index, series: ln.value, config: L.value }, K.value = !1; let t = L.value.style.chart.tooltip.customFormat; if (o(t)) try { let e = t(Ze.value); if (typeof e == "string") return K.value = !0, e; } catch { console.warn("Custom format cannot be applied."), K.value = !1; } return `<div><div style="font-weight:600">${hn(e.name)}</div>${e.description == null ? "" : `<div style="margin-top:6px">${hn(e.description)}</div>`}</div>`; } function _n(e) { K.value = !1; let t = L.value.style.chart.tooltip.customFormat; if (o(t)) try { let n = t({ datapoint: e, config: L.value }); if (typeof n == "string") return K.value = !0, n; } catch { console.warn("Custom format cannot be applied."), K.value = !1; } let n = typeof e?.name == "string" ? e.name.trim() : ""; return n ? `<div><div style="font-weight:600">${hn(n)}</div></div>` : (K.value = !1, ""); } function vn(e) { if (L.value.events.territoryEnter && L.value.events.territoryEnter({ datapoint: e, seriesIndex: e.index }), !(typeof e?.name == "string" && e.name.trim()) && !L.value.style.chart.territory.hover.enabledWhenEmpty) { J.value = null, Y(); return; } J.value = e.uid, mn(_n(e)); } function yn(e) { J.value = null, Y(), L.value.events.territoryLeave && L.value.events.territoryLeave({ datapoint: e, seriesIndex: e.index }); } function bn(e) { L.value.events.territoryClick && L.value.events.territoryClick({ datapoint: e, seriesIndex: e.index }); } function xn(e, t = null, n = "pointer") { F.value = n, q.value = e.uid, Number.isInteger(t) && (P.value = t), n === "keyboard" && dn(e), mn(gn(e)), L.value.events.datapointEnter && L.value.events.datapointEnter({ datapoint: e, seriesIndex: e.index }); } function Sn(e, t = "pointer") { (t !== "pointer" || F.value !== "keyboard") && (q.value = null, Y(), t !== "pointer" && (P.value = null, F.value = "pointer"), L.value.events.datapointLeave && L.value.events.datapointLeave({ datapoint: e, seriesIndex: e.index })); } let Cn = m(() => !!L.value.events.datapointClick && typeof L.value.events.datapointClick == "function"); function wn(e) { Cn.value && L.value.events.datapointClick({ datapoint: e, seriesIndex: e.index }); } let X = m(() => L.value.style.chart.territory), Tn = m(() => L.value.style.chart.points); function En(e) { let t = typeof e?.name == "string" ? e.name.trim() : ""; if (!t) { J.value = null, Y(); return; } let n = { name: t, uid: e.uid, index: e.featureIndex, properties: {} }; J.value = e.uid, mn(_n(n)); } function Dn() { J.value = null, Y(); } let Z = C(!1); function On() { Z.value = !Z.value; } E(() => Z.value, (e) => { B.value = !e; }); function kn() { xt.value.showTooltip = !xt.value.showTooltip; } let An = m(() => L.value.style.chart.backgroundColor), jn = m(() => L.value.style.chart.title), { exportSvg: Mn, getSvg: Nn } = f({ svg: R, title: jn, legend: void 0, legendItems: void 0, backgroundColor: An }); async function Pn({ isCb: e }) { Xe.value = !0, await b(); try { if (e) { let { blob: e, url: t, text: n, dataUrl: r } = await Nn(); await Promise.resolve(L.value.userOptions.callbacks.svg({ blob: e, url: t, text: n, dataUrl: r })); } else await Promise.resolve(Mn()); } finally { Xe.value = !1; } } function Fn(e) { if (e?.stage === "start") { Ye.value = !0; return; } if (e?.stage === "end") { Ye.value = !1; return; } gt(); } async function In({ scale: e = 2 } = {}) { if (!A.value) return; let { width: t, height: n } = A.value.getBoundingClientRect(), r = t / n, { imageUri: i, base64: a } = await te({ domElement: A.value, base64: !0, img: !0, scale: e }); return { imageUri: i, base64: a, title: L.value.style.chart.title.text, width: t, height: n, aspectRatio: r }; } let Q = C(!1), $ = null; function Ln() { B.value && (Q.value = !0); } function Rn() { Q.value = !1; } function zn() { B.value && (Q.value = !0, $ && clearTimeout($), $ = setTimeout(() => { Q.value = !1, $ = null; }, 140)); } be(() => { $ && clearTimeout($); }); async function Bn([e, t], { animated: n = !0 } = {}) { let r = Number(e), i = Number(t); if (!Number.isFinite(r) || !Number.isFinite(i)) return; let a = W([r, i]), o = a?.[0], s = a?.[1]; if (!Number.isFinite(o) || !Number.isFinite(s)) return; let c = en({ x: o, y: s }), l = Jt.value ? { ...Jt.value } : { x: 0, y: 0, width: U.value.width, height: U.value.height }, u = { x: c.x - l.width / 2, y: c.y - l.height / 2, width: l.width, height: l.height }; if (!n) { Jt.value = u; return; } let d = { ...l }, f = { ...u }, p = null, ee = (e) => { p ??= e; let t = Math.min((e - p) / 250, 1); Jt.value = { x: d.x + (f.x - d.x) * t, y: d.y + (f.y - d.y) * t, width: d.width + (f.width - d.width) * t, height: d.height + (f.height - d.height) * t }, t < 1 && requestAnimationFrame(ee); }; requestAnimationFrame(ee); } xe(async () => { yt(), await b(), requestAnimationFrame(() => { j.value || (nn(), (L.value.map.center?.[0] || L.value.map.center?.[1]) && Bn(L.value.map.center, { animated: !1 })); }); }), be(() => { vt(); }); async function Vn() { if (Ue("copyAlt", { config: L.value, dataset: ft.value }), !L.value.userOptions.callbacks.altCopy) { console.warn("Vue Data UI - A callback must be set for `altCopy` in userOptions."); return; } await Promise.resolve(L.value.userOptions.callbacks.altCopy({ config: L.value, dataset: ft.value })); } function Hn(e, t) { let n = G.value; if (!n.length) return null; let r = n[e]; if (!r) return null; let i = null, a = Infinity; for (let o = 0; o < n.length; o += 1) { if (o === e) continue; let s = n[o], c = s.x - r.x, l = s.y - r.y, u = !1, d = 0, f = 0; if (t === "right" && c > 0 && (u = !0, d = c, f = Math.abs(l)), t === "left" && c < 0 && (u = !0, d = Math.abs(c), f = Math.abs(l)), t === "down" && l > 0 && (u = !0, d = l, f = Math.abs(c)), t === "up" && l < 0 && (u = !0, d = Math.abs(l), f = Math.abs(c)), !u) continue; let p = d * d + f * f * 4; p < a && (a = p, i = o); } return i; } function Un(e) { let t = G.value; return t.length ? e === "right" ? t.reduce((e, t, n, r) => t.x < r[e].x ? n : e, 0) : e === "left" ? t.reduce((e, t, n, r) => t.x > r[e].x ? n : e, 0) : e === "down" ? t.reduce((e, t, n, r) => t.y < r[e].y ? n : e, 0) : e === "up" ? t.reduce((e, t, n, r) => t.y > r[e].y ? n : e, 0) : 0 : null; } function Wn() { it.value = !0; } function Gn() { let e = P.value == null ? null : G.value[P.value]; e ? Sn(e, "keyboard") : (P.value = null, F.value = "pointer", Y(), q.value = null), it.value = !1; } function Kn(e) { if (!R.value || Z.value || document.activeElement !== R.value || !G.value.length) return; let t = e.key === "ArrowRight", n = e.key === "ArrowLeft", r = e.key === "ArrowDown", i = e.key === "ArrowUp", a = e.key === "Enter" || e.key === " ", o = e.key === "Escape"; if (!t && !n && !r && !i && !a && !o) return; if (e.preventDefault(), e.stopPropagation(), o) { let e = P.value == null ? null : G.value[P.value]; e ? Sn(e, "keyboard") : (P.value = null, F.value = "pointer", Y(), q.value = null); return; } if (a) { let e = P.value == null ? null : G.value[P.value]; if (!e) return; wn(e); return; } let s = t ? "right" : n ? "left" : r ? "down" : "up", c = null; if (P.value == null ? c = Un(s) : (c = Hn(P.value, s), c ??= Un(s)), c == null) return; let l = G.value[c]; l && xn(l, c, "keyboard"); } let qn = m(() => ({ headers: [ "Name", "Latitude", "Longitude", "Description" ], rows: ln.value.map((e) => { let t = Array.isArray(e.coordinates) ? e.coordinates[1] : null, n = Array.isArray(e.coordinates) ? e.coordinates[0] : null; return [ e.name ?? "", Number.isFinite(t) ? String(t) : "", Number.isFinite(n) ? String(n) : "", e.description ?? "" ]; }) })); return re({ getImage: In, generatePdf: ht, generateImage: gt, generateSvg: Pn, toggleTooltip: kn, toggleAnnotator: On, toggleFullscreen: at, zoomIn: an, zoomOut: on, resetZoom: Yt, focusLocation: Bn, copyAlt: Vn }), (e, t) => (S(), _("div", { class: ve(`vue-data-ui-component vue-ui-geo ${I.value ? "vue-data-ui-wrapper-fullscreen" : ""} ${z.value ? "vue-ui-geo-responsive" : ""} ${Q.value ? "vue-ui-geo-interacting" : ""}`), ref_key: "geoChart", ref: A, id: `map_${k.value}`, dir: "auto", style: ye({ fontFamily: L.value.style.fontFamily, width: "100%", backgroundColor: L.value.style.chart.backgroundColor, height: z.value ? `${H.value}px` : void 0 }) }, [ v("div", { id: `chart-instructions-${k.value}`, class: "sr-only" }, [v("p", null, Ce(L.value.a11y.translations.keyboardNavigation), 1)], 8, De), qn.value?.rows?.length ? (S(), h(oe, { key: 0, uid: k.value, head: qn.value.headers, body: qn.value.rows, notice: L.value.a11y.translations.tableAvailable, caption: L.value.a11y.translations.tableCaption }, null, 8, [ "uid", "head", "body", "notice", "caption" ])) : g("", !0), bt.value ? (S(), _("div", { key: 1, ref_key: "noTitle", ref: $e, class: "vue-data-ui-no-title-space", style: "height:36px; width: 100%;background:transparent" }, null, 512)) : g("", !0), L.value.style.chart.title.text ? (S(), _("div", { key: 2, ref_key: "chartTitle", ref: Qe, style: "width:100%;background:transparent;padding-bottom:12px" }, [(S(), h(ne, { key: `title_${Je.value}`, config: { title: { cy: "geo-title", ...L.value.style.chart.title }, subtitle: { cy: "geo-subtitle", ...L.value.style.chart.title.subtitle } } }, null, 8, ["config"]))], 512)) : g("", !0), L.value.userOptions.buttons.annotator ? (S(), h(T(Ve), { key: 3, svgRef: T(R), backgroundColor: L.value.style.chart.backgroundColor, color: L.value.style.chart.color, active: Z.value, isCursorPointer: st.value, onClose: On }, { "annotator-action-close": D(() => [w(e.$slots, "annotator-action-close", {}, void 0, !0)]), "annotator-action-color": D(({ color: t }) => [w(e.$slots, "annotator-action-color", x(y({ color: t })), void 0, !0)]), "annotator-action-draw": D(({ mode: t }) => [w(e.$slots, "annotator-action-draw", x(y({ mode: t })), void 0, !0)]), "annotator-action-undo": D(({ disabled: t }) => [w(e.$slots, "annotator-action-undo", x(y({ disabled: t })), void 0, !0)]), "annotator-action-redo": D(({ disabled: t }) => [w(e.$slots, "annotator-action-redo", x(y({ disabled: t })), void 0, !0)]), "annotator-action-delete": D(({ disabled: t }) => [w(e.$slots, "annotator-action-delete", x(y({ disabled: t })), void 0, !0)]), _: 3 }, 8, [ "svgRef", "backgroundColor", "color", "active", "isCursorPointer" ])) : g("", !0), L.value.userOptions.show && (T(lt) || T(ct)) ? (S(), h(T(Be), { ref: "userOptionsRef", key: `user_options_${qe.value}`, backgroundColor: L.value.style.chart.backgroundColor, color: L.value.style.chart.color, isPrinting: T(pt), isImaging: T(mt), uid: k.value, hasXls: !1, hasTable: !1, hasTooltip: L.value.userOptions.buttons.tooltip && L.value.style.chart.tooltip.show, hasPdf: L.value.userOptions.buttons.pdf, hasImg: L.value.userOptions.buttons.img, hasSvg: L.value.userOptions.buttons.svg, hasFullscreen: L.value.userOptions.buttons.fullscreen, hasAltCopy: L.value.userOptions.buttons.altCopy, hasAnnotator: L.value.userOptions.buttons.annotator, hasZoom: L.value.userOptions.buttons.zoom, isZoom: B.value, isFullscreen: I.value, isTooltip: xt.value.showTooltip, titles: { ...L.value.userOptions.buttonTitles }, chartElement: A.value, position: L.value.userOptions.position, isAnnotation: Z.value, callbacks: L.value.userOptions.callbacks, printScale: L.value.userOptions.print.scale, isCursorPointer: st.value, onToggleFullscreen: at, onGeneratePdf: T(ht), onGenerateImage: Fn, onGenerateSvg: Pn, onToggleTooltip: kn, onToggleAnnotator: On, onToggleZoom: $t, onCopyAlt: Vn, style: ye({ visibility: T(lt) ? T(ct) ? "visible" : "hidden" : "visible" }) }, me({ _: 2 }, [ e.$slots.menuIcon ? { name: "menuIcon", fn: D(({ isOpen: t, color: n }) => [w(e.$slots, "menuIcon", x(y({ isOpen: t, color: n })), void 0, !0)]), key: "0" } : void 0, e.$slots.optionTooltip ? { name: "optionTooltip", fn: D(() => [w(e.$slots, "optionTooltip", {}, void 0, !0)]), key: "1" } : void 0, e.$slots.optionPdf ? { name: "optionPdf", fn: D(() => [w(e.$slots, "optionPdf", {}, void 0, !0)]), key: "2" } : void 0, e.$slots.optionImg ? { name: "optionImg", fn: D(() => [w(e.$slots, "optionImg", {}, void 0, !0)]), key: "3" } : void 0, e.$slots.optionSvg ? { name: "optionSvg", fn: D(() => [w(e.$slots, "optionSvg", {}, void 0, !0)]), key: "4" } : void 0, e.$slots.optionFullscreen ? { name: "optionFullscreen", fn: D(({ toggleFullscreen: t, isFullscreen: n }) => [w(e.$slots, "optionFullscreen", x(y({ toggleFullscreen: t, isFullscreen: n })), void 0, !0)]), key: "5" } : void 0, e.$slots.optionAnnotator ? { name: "optionAnnotator", fn: D(({ toggleAnnotator: t, isAnnotator: n }) => [w(e.$slots, "optionAnnotator", x(y({ toggleAnnotator: t, isAnnotator: n })), void 0, !0)]), key: "6" } : void 0, e.$slots.optionZoom ? { name: "optionZoom", fn: D(({ toggleZoom: t, isZoomLocked: n }) => [w(e.$slots, "optionZoom", x(y({ toggleZoom: t, isZoomLocked: n })), void 0, !0)]), key: "7" } : void 0, e.$slots.optionAltCopy ? { name: "optionAltCopy", fn: D(({ altCopy: t }) => [w(e.$slots, "optionAltCopy", x(y({ altCopy: t })), void 0, !0)]), key: "8" } : void 0, e.$slots["custom-menu-before"] ? { name: "custom-menu-before", fn: D(() => [w(e.$slots, "custom-menu-before", {}, void 0, !0)]), key: "9" } : void 0, e.$slots["custom-menu-after"] ? { name: "custom-menu-after", fn: D(() => [w(e.$slots, "custom-menu-after", {}, void 0, !0)]), key: "10" } : void 0 ]), 1032, [ "backgroundColor", "color", "isPrinting", "isImaging", "uid", "hasTooltip", "hasPdf", "hasImg", "hasSvg", "hasFullscreen", "hasAltCopy", "hasAnnotator", "hasZoom", "isZoom", "isFullscreen", "isTooltip", "titles", "chartElement", "position", "isAnnotation", "callbacks", "printScale", "isCursorPointer", "onGeneratePdf", "style" ])) : g("", !0), L.value.style.chart.controls.position === "top" && L.value.style.chart.controls.show && !T(dt) ? (S(), h(ue, { key: 5, ref_key: "zoomControlsTop", ref: tt, config: L.value, scale: T(Zt), isFullscreen: I.value, isCursorPointer: st.value, onZoomIn: an, onZoomOut: on, onResetZoom: sn }, null, 8, [ "config", "scale", "isFullscreen", "isCursorPointer" ])) : g("", !0), v("div", Oe, [(S(), _("svg", { ref_key: "svgRef", ref: R, xmlns: T(a), viewBox: rn.value, preserveAspectRatio: "xMidYMid meet", "aria-describedby": `map-keyboard-instructions-${k.value}`, tabindex: "0", style: ye({ display: "block", width: "100%", height: z.value ? `${H.value}px` : "auto", background: L.value.style.chart.backgroundColor, touchAction: B.value ? "none" : "auto", cursor: B.value ? Q.value ? "grabbing" : "grab" : "default" }), id: `vue-ui-geo_${k.value}`, onPointerdown: Ln, onPointerup: Rn, onPointercancel: Rn, onPointerleave: Rn, onWheel: zn, onFocus: Wn, onBlur: Gn, onKeydown: Kn }, [he(T(He)), v("g", { transform: Kt.value.transform, style: ye({ pointerEvents: Q.value ? "none" : "auto" }) }, [ v("g", null, [(S(!0), _(pe, null, Se(zt.value, (e) => (S(), _("path", { class: "vue-ui-geo-territory", key: e.uid, d: e.path, fill: J.value === e.uid ? X.value.hover.fill : X.value.fill, stroke: J.value === e.uid ? X.value.hover.stroke : X.value.stroke, "stroke-width": J.value === e.uid ? X.value.hover.strokeWidth : X.value.strokeWidth, "vector-effect": "non-scaling-stroke", onMouseenter: (t) => vn(e), onMouseleave: (t) => yn(e), onClick: (t) => bn(e) }, null, 40, je))), 128))]), v("g", null, [(S(!0), _(pe, null, Se(Bt.value, (e) => (S(), _("path", { class: "vue-ui-geo-territory", key: e.uid, d: e.path, fill: "none", stroke: J.value === e.uid ? X.value.hover.stroke : X.value.stroke, "stroke-width": J.value === e.uid ? X.value.hover.strokeWidth : X.value.strokeWidth, "vector-effect": "non-scaling-stroke", onMouseenter: (t) => vn(e), onMouseleave: (t) => yn(e), onClick: (t) => bn(e) }, null, 40, Me))), 128))]), v("g", null, [(S(!0), _(pe, null, Se(Vt.value, (e) => (S(), _("circle", { key: e.uid, cx: e.x, cy: e.y, r: e.radius, fill: e.fill, stroke: e.stroke, "stroke-width": e.strokeWidth, "vector-effect": "non-scaling-stroke", onMouseenter: (t) => En(e), onMouseleave: Dn }, null, 40, Ne))), 128))]), (S(!0), _(pe, null, Se(un.value, (t, n) => (S(), _("g", { key: t.uid }, [w(e.$slots, "datapoint", _e({ ref_for: !0 }, { point: t, onPointEnter: xn, onPointLeave: Sn, onPointClick: wn, highlighted: q.value === t.uid }), () => [v("circle", { class: ve({ "vue-ui-geo-point": !0, "vue-ui-geo-point-with-event": Cn.value && st.value }), cx: t.x, cy: t.y, r: q.value === t.uid ? t.radius * t.hoverRadiusRatio : t.radius, fill: t.fill, stroke: Tn.value.stroke, "stroke-width": Tn.value.strokeWidth, "vector-effect": "non-scaling-stroke", onMouseenter: (e) => xn(t, n), onMouseleave: (e) => Sn(t), onClick: (e) => wn(t) }, null, 42, Pe)], !0), L.value.style.chart.points.labels.show ? (S(), _("text", { key: 0, class: "vue-ui-geo-point-label", x: t.x, y: t.y + (q.value === t.uid ? t.radius * t.hoverRadiusRatio : t.radius) + L.value.style.chart.points.labels.offsetY + 1 * L.value.style.chart.points.labels.fontSizeRatio, "text-anchor": "middle", fill: L.value.style.chart.points.labels.color, "font-size": 1 * L.value.style.chart.points.labels.fontSizeRatio }, Ce(t.name), 9, Fe)) : g("", !0)]))), 128)), w(e.$slots, "svg", { svg: { drawingArea: rn.value, x: Wt.value?.minX ?? 0, y: Wt.value?.minY ?? 0, width: Wt.value?.width ?? 0, height: Wt.value?.height ?? 0, isPrintingImg: T(pt) || T(mt) || Ye.value, isPrintingSvg: Xe.value, data: { areaPaths: zt.value, linePaths: Bt.value, geoJsonPoints: Vt.value, projectedPoints: un.value } } }, void 0, !0) ], 12, Ae)], 44, ke)), e.$slots.hint ? (S(), _("div", Ie, [w(e.$slots, "hint", x(y({ hint: L.value.a11y.translations.keyboardNavigation, isVisible: it.value })), void 0, !0)])) : g("", !0)]), e.$slots.watermark ? (S(), _("div", Le, [w(e.$slots, "watermark", x(y({ isPrinting: T(pt) || T(mt) || Ye.value || Xe.value })), void 0, !0)])) : g("", !0), L.value.style.chart.controls.position === "bottom" && L.value.style.chart.controls.show && !T(dt) ? (S(), h(ue, { key: 7, ref_key: "zoomControlsBottom", ref: nt, config: L.value, scale: T(Zt), isFullscreen: I.value, isCursorPointer: st.value, onZoomIn: an, onZoomOut: on, onResetZoom: sn }, null, 8, [ "config", "scale", "isFullscreen", "isCursorPointer" ])) : g("", !0), he(T(ze), { teleportTo: L.value.style.chart.tooltip.teleportTo, show: xt.value.showTooltip && fn.value, backgroundColor: L.value.style.chart.tooltip.backgroundColor, color: L.value.style.chart.tooltip.color, fontSize: L.value.style.chart.tooltip.fontSize, borderRadius: L.value.style.chart.tooltip.borderRadius, borderColor: L.value.style.chart.tooltip.borderColor, borderWidth: L.value.style.chart.tooltip.borderWidth, backgroundOpacity: L.value.style.chart.tooltip.backgroundOpacity, position: L.value.style.chart.tooltip.position, offsetX: L.value.style.chart.tooltip.offsetX, offsetY: L.value.style.chart.tooltip.offsetY, parent: A.value, content: pn.value, isCustom: K.value, isFullscreen: I.value, smooth: L.value.style.chart.tooltip.smooth, backdropFilter: L.value.style.chart.tooltip.backdropFilter, smoothForce: L.value.style.chart.tooltip.smoothForce, smoothSnapThreshold: L.value.style.chart.tooltip.smoothSnapThreshold, isA11yMode: F.value === "keyboard", a11yPosition: rt.value }, { "tooltip-before": D(() => [w(e.$slots, "tooltip-before", x(y({ ...Ze.value })), void 0, !0)]), tooltip: D(() => [w(e.$slots, "tooltip", x(y({ ...Ze.value })), void 0, !0)]), "tooltip-after": D(() => [w(e.$slots, "tooltip-after", x(y({ ...Ze.value })), void 0, !0)]), _: 3 }, 8, [ "teleportTo", "show", "backgroundColor", "color", "fontSize", "borderRadius", "borderColor", "borderWidth", "backgroundOpacity", "position", "offsetX", "offsetY", "parent", "content", "isCustom", "isFullscreen", "smooth", "backdropFilter", "smoothForce", "smoothSnapThreshold", "isA11yMode", "a11yPosition" ]), e.$slots.source ? (S(), _("div", { key: 8, ref_key: "source", ref: et, dir: "auto" }, [w(e.$slots, "source", {}, void 0, !0)], 512)) : g("", !0), w(e.$slots, "skeleton", {}, () => [T(dt) ? (S(), h(d, { key: 0 })) : g("", !0)], !0) ], 14, Ee)); } }, [["__scopeId", "data-v-ebec76f9"]]); //#endregion export { Te as n, ze as t };