UNPKG

vue-data-ui

Version:

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

1,299 lines 51.4 kB
import { defineAsyncComponent as ce, ref as h, toRefs as bo, computed as d, watch as ne, nextTick as re, onBeforeUnmount as Nt, onMounted as Co, createElementBlock as N, openBlock as g, normalizeStyle as fe, normalizeClass as wt, createCommentVNode as M, createBlock as V, createVNode as Pt, unref as y, withCtx as F, renderSlot as b, normalizeProps as $, guardReactiveProps as T, createSlots as Ao, createElementVNode as ie, Fragment as de, renderList as me, mergeProps as ko, toDisplayString as Fo } from "vue";
import { c as No, t as wo, m as Ee, X as Po, y as $t } from "./lib-2iaAPQ_c.js";
import { u as $o } from "./usePanZoom-CDF7rb3o.js";
import { t as To, u as xo } from "./useResponsive-DfdjqQps.js";
import { u as Eo, a as Ie } from "./useNestedProp-2p4Tjzc8.js";
import { u as Io, B as Bo } from "./BaseScanner-BMpwQAfz.js";
import { u as So } from "./usePrinter-ChVMpU2f.js";
import { u as Oo } from "./useSvgExport-ByUukOZt.js";
import { u as Mo } from "./useThemeCheck-DGJ31Vi5.js";
import { u as Ro } from "./useUserOptionState-BIvW1Kz7.js";
import { u as _o } from "./useChartAccessibility-9icAAmYg.js";
import jo from "./img-CqYIrJ8I.js";
import { g as Go } from "./geoProjections-D0Vxsz_O.js";
import zo from "./Title-DSOZzIrU.js";
import { B as Tt } from "./BaseZoomControls-e4hnaBoq.js";
import { _ as Do } from "./_plugin-vue_export-helper-CHgC5LLL.js";
const Et = { style: { chart: { backgroundColor: "#1A1A1A", color: "#CCCCCC", controls: { backgroundColor: "#2A2A2A", buttonColor: "#2A2A2A", color: "#CCCCCC", border: "1px solid #4A4A4A" }, territory: { fill: "#2A2A2A", stroke: "#5A5A5A", hover: { fill: "#3A3A3A", stroke: "#6A6A6A" } }, points: { stroke: "#1A1A1A", fill: "#CCCCCC", labels: { color: "#CCCCCC" } }, title: { color: "#CCCCCC", subtitle: { color: "#757575" } }, tooltip: { backgroundColor: "#1A1A1A", backgroundOpacity: 70, color: "#CCCCCC", borderColor: "#5A5A5A" } } } }, It = { style: { chart: { backgroundColor: "#FFF8E1", color: "#424242", controls: { backgroundColor: "#FFF8E1", buttonColor: "#FFF8E1", color: "#424242", border: "1px solid #d9bbb2" }, title: { color: "#424242", subtitle: { color: "#757575" } }, tooltip: { backgroundColor: "#FFECB3", backgroundOpacity: 30, color: "#424242", borderColor: "#FF8A65" }, territory: { fill: "#e3dcc8", stroke: "#f7c0b0", hover: { fill: "#FFECB3", stroke: "#FF8A65" } }, points: { stroke: "#FFF8E1", fill: "#424242", labels: { color: "#424242" } } } } }, Bt = { style: { chart: { backgroundColor: "#1E1E1E", color: "#BDBDBD", controls: { backgroundColor: "#1E1E1E", buttonColor: "#1E1E1E", color: "#BDBDBD", border: "1px solid #3A3A3A" }, title: { color: "#FFF8E1", subtitle: { color: "#BDBDBD" } }, tooltip: { backgroundColor: "#1E1E1E", backgroundOpacity: 30, color: "#FFF8E1", borderColor: "#FF8A65" }, territory: { fill: "#2A1E1E", stroke: "#6e483c", hover: { fill: "#403e39", stroke: "#805244" } }, points: { stroke: "#1E1E1E", fill: "#BDBDBD", labels: { color: "#BDBDBD" } } } } }, St = { style: { chart: { backgroundColor: "#fbfafa", color: "#8A9892", controls: { backgroundColor: "#fbfafa", buttonColor: "#fbfafa", color: "#99AA99", border: "1px solid #ebded3" }, title: { color: "#8A9892", subtitle: { color: "#99AA99" } }, tooltip: { backgroundColor: "#fbfafa", color: "#8A9892" }, territory: { fill: "#e6e2df", stroke: "#fbfafa", hover: { fill: "#dbd5d0", stroke: "#fbfafa" } }, points: { stroke: "#fbfafa", fill: "#8A9892", labels: { color: "#8A9892" } } } } }, Ot = { style: { chart: { backgroundColor: "#1A1A1A", color: "#99AA99", controls: { backgroundColor: "#1A1A1A", buttonColor: "#1A1A1A", color: "#99AA99", border: "1px solid #1e361e" }, title: { color: "#66CC66", subtitle: { color: "#99AA99" } }, tooltip: { backgroundColor: "#2A2F2A", color: "#AACCAA", borderColor: "#66CC66" }, territory: { fill: "#1A1F1A", stroke: "#2c5c2c", hover: { fill: "#3A3A3A", stroke: "#66CC66" } }, points: { stroke: "#2c5c2c", fill: "#66CC66", labels: { color: "#99AA99" } } } } }, Mt = { style: { chart: { backgroundColor: "#f6f6fb", color: "#50606C", controls: { backgroundColor: "#f6f6fb", buttonColor: "#f6f6fb", color: "#50606C", border: "1px solid #98aab8", borderRadius: "0" }, title: { color: "#50606C", subtitle: { color: "#718890" } }, tooltip: { backgroundColor: "#f6f6fb", color: "#50606C" }, territory: { fill: "#cfdae3", stroke: "#98aab8", hover: { fill: "#bcc8d1", stroke: "#50606C" } }, points: { stroke: "#f6f6fb", fill: "#50606C", labels: { color: "#50606C" } } } } }, Rt = {
  default: {},
  dark: Et,
  celebration: It,
  celebrationNight: Bt,
  zen: St,
  hack: Ot,
  concrete: Mt
}, pn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  celebration: It,
  celebrationNight: Bt,
  concrete: Mt,
  dark: Et,
  default: Rt,
  hack: Ot,
  zen: St
}, Symbol.toStringTag, { value: "Module" })), Zo = ["id"], Lo = ["xmlns", "viewBox", "id"], Wo = ["transform"], Yo = ["d", "fill", "stroke", "stroke-width", "onMouseenter", "onMouseleave", "onClick"], qo = ["d", "stroke", "stroke-width", "onMouseenter", "onMouseleave", "onClick"], Ho = ["cx", "cy", "r", "fill", "stroke", "stroke-width", "onMouseenter"], Xo = ["cx", "cy", "r", "fill", "stroke", "stroke-width", "onMouseenter", "onMouseleave", "onClick"], Uo = ["x", "y", "fill", "font-size"], Vo = {
  key: 5,
  class: "vue-data-ui-watermark"
}, xt = 1.5, Jo = {
  __name: "vue-ui-geo",
  props: {
    config: {
      type: Object,
      default() {
        return {};
      }
    },
    dataset: {
      type: [Array, Object],
      default() {
        return [];
      }
    }
  },
  setup(_t, { expose: jt }) {
    const Gt = ce(() => import("./Tooltip-D0pGX8qz.js")), zt = ce(() => import("./UserOptions-BQO4YFrn.js")), Dt = ce(() => import("./PenAndPaper-CvyKWfNl.js")), Zt = ce(() => import("./PackageVersion-Br3DrrFh.js")), J = _t, { vue_ui_geo: Lt } = Eo(), { isThemeValid: Wt, warnInvalidTheme: Yt } = Mo(), R = h(No()), he = h(0), Be = h(0), I = h(null), _ = h(!1), le = h(null), Se = h(null), Oe = h(null), Me = h(null), L = h(null), W = h(null), Re = h(null), _e = h(null), j = h(!1);
    function je(e) {
      j.value = e, he.value += 1;
    }
    function ve() {
      const e = Ie({
        userConfig: J.config,
        defaultConfig: Lt
      }), o = e.theme;
      if (!o) return e;
      if (!Wt.value(e))
        return Yt(e), e;
      const t = Ie({
        userConfig: Rt[o] || J.config,
        defaultConfig: e
      });
      return Ie({
        userConfig: J.config,
        defaultConfig: t
      });
    }
    const r = h(ve()), { userOptionsVisible: Ge, keepUserOptionState: ze } = Ro({
      config: r.value
    }), { svgRef: ae } = _o({
      config: r.value.style.chart.title
    }), { loading: pe, FINAL_DATASET: qt } = Io({
      ...bo(J),
      FINAL_CONFIG: r,
      prepareConfig: ve,
      allowEmptyDataset: !0,
      skeletonDataset: [],
      skeletonConfig: wo({
        defaultConfig: r.value,
        userConfig: {
          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: 0.5
              }
            }
          }
        }
      })
    }), { isPrinting: De, isImaging: Ze, generatePdf: Le, generateImage: We } = So({
      elementId: `vue-ui-geo_${R.value}`,
      fileName: r.value.style.chart.title.text || "vue-ui-geo",
      options: r.value.userOptions.print
    }), Ht = d(() => r.value.style.chart.controls.show ? r.value.style.chart.controls.position === "top" ? Re.value?.$el ?? null : r.value.style.chart.controls.position === "bottom" ? _e.value?.$el ?? null : null : null);
    function ge() {
      L.value && (W.value && L.value.unobserve(W.value), L.value.disconnect(), L.value = null, W.value = null);
    }
    const Y = d(() => !!r.value.responsive && !j.value);
    ne(
      () => j.value,
      async (e) => {
        if (e) {
          ge(), q.value = Number(r.value.style.chart.dimensions.width) || q.value, G.value = Number(r.value.style.chart.dimensions.height) || G.value, await re(), _.value = !1, requestAnimationFrame(() => {
            _.value || ue();
          });
          return;
        }
        r.value.responsive && (await re(), ye());
      }
    );
    function ye() {
      if (ge(), !Y.value) return;
      const e = To(() => {
        if (!I.value) return;
        const { width: o, height: t } = xo({
          chart: I.value,
          noTitle: Ye.value ? Oe.value : null,
          title: r.value.style.chart.title.text ? Se.value : null,
          legend: Ht.value,
          source: Me.value
        });
        requestAnimationFrame(() => {
          q.value = Math.max(0.1, Number(o) || 0.1), G.value = Math.max(0.1, Number(t) || 0.1) - 24;
        });
      });
      L.value = new ResizeObserver(e), W.value = I.value ? I.value.parentNode : null, W.value && L.value.observe(W.value), e();
    }
    const Ye = d(() => r.value.userOptions.show && !r.value.style.chart.title.text), K = h({
      showTooltip: r.value.style.chart.tooltip.show
    }), B = h(r.value.style.chart.zoom.active);
    ne(
      () => J.config,
      () => {
        r.value = ve(), K.value.showTooltip = r.value.style.chart.tooltip.show, B.value = r.value.style.chart.zoom.active, q.value = r.value.style.chart.dimensions.width, G.value = r.value.style.chart.dimensions.height, ye(), Be.value += 1, he.value += 1;
      },
      { deep: !0 }
    );
    const { projections: qe } = Go, He = d(() => r.value?.projection || "equirectangular"), Xt = d(() => {
      const e = qe?.[He.value];
      return typeof e == "function" ? e : qe.equirectangular;
    }), Xe = d(() => r.value.map.geoJson ?? null), Ue = {
      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 }
    }, q = h(r.value.style.chart.dimensions.width), G = h(r.value.style.chart.dimensions.height), be = d(() => {
      const e = Ue[He.value] || Ue.equirectangular;
      return { width: e.width, height: e.height };
    }), P = d(() => {
      const e = be.value, o = q.value, t = G.value, n = Number.isFinite(o) && o > 0, i = Number.isFinite(t) && t > 0;
      if (n && i)
        return { width: o, height: t };
      if (n && !i) {
        const l = e.height / e.width;
        return { width: o, height: o * l };
      }
      if (!n && i) {
        const l = e.width / e.height;
        return { width: t * l, height: t };
      }
      return { width: e.width, height: e.height };
    }), Ut = d(() => {
      const e = r.value?.map?.center, o = [0, 0];
      if (!Array.isArray(e) || e.length !== 2) return o;
      const t = Number(e[0]), n = Number(e[1]);
      return !Number.isFinite(t) || !Number.isFinite(n) ? o : [t, n];
    });
    function H([e, o]) {
      return Xt.value(
        [e, o],
        be.value.width,
        be.value.height,
        Ut.value
      );
    }
    function Vt(e, o = {}) {
      const {
        defaultName: t = "",
        namePropertyCandidates: n = [
          "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
      } = o, l = { type: "FeatureCollection", features: [] };
      function a(u) {
        return u !== null && typeof u == "object" && !Array.isArray(u);
      }
      function c(u) {
        return !a(u) || typeof u.type != "string" ? !1 : u.type === "GeometryCollection" ? Array.isArray(u.geometries) : Object.hasOwn(u, "coordinates");
      }
      function f(u) {
        if (!a(u)) return "";
        for (const v of n) {
          const A = u[v];
          if (typeof A == "string" && A.trim())
            return A.trim();
        }
        return "";
      }
      function s({ geometry: u, properties: v, fallbackName: A, featureIndex: m }) {
        const p = a(v) ? { ...v } : {}, O = f(p), k = t ? `${t} ${m + 1}` : "", U = O || (typeof A == "string" ? A.trim() : "") || k;
        return !p.name && U && (p.name = U), {
          type: "Feature",
          geometry: u,
          properties: p
        };
      }
      function w(u, v, A, m, p) {
        const O = Array.isArray(u?.geometries) ? u.geometries : [];
        let k = m;
        for (let U = 0; U < O.length; U += 1) {
          const D = O[U];
          if (D) {
            if (a(D) && D.type === "GeometryCollection") {
              k = w(
                D,
                v,
                A,
                k,
                p
              );
              continue;
            }
            if (c(D)) {
              if (D.coordinates == null && D.type !== "GeometryCollection") {
                i && (p.push(
                  s({
                    geometry: null,
                    properties: v,
                    fallbackName: A,
                    featureIndex: k
                  })
                ), k += 1);
                continue;
              }
              p.push(
                s({
                  geometry: D,
                  properties: v,
                  fallbackName: A,
                  featureIndex: k
                })
              ), k += 1;
            }
          }
        }
        return k;
      }
      function C(u, v, A = 0) {
        let m = A;
        if (u == null) return m;
        if (Array.isArray(u)) {
          for (const p of u)
            m = C(p, v, m);
          return m;
        }
        if (!a(u) || typeof u.type != "string")
          return m;
        if (u.type === "FeatureCollection") {
          const p = Array.isArray(u.features) ? u.features : [];
          for (const O of p)
            m = C(O, v, m);
          return m;
        }
        if (u.type === "Feature") {
          const p = a(u.properties) ? u.properties : {}, O = f(p), k = u.geometry ?? null;
          return k == null ? (i && (v.push(
            s({
              geometry: null,
              properties: p,
              fallbackName: O,
              featureIndex: m
            })
          ), m += 1), m) : a(k) && k.type === "GeometryCollection" ? w(
            k,
            p,
            O,
            m,
            v
          ) : (c(k) && (v.push(
            s({
              geometry: k,
              properties: p,
              fallbackName: O,
              featureIndex: m
            })
          ), m += 1), m);
        }
        return u.type === "GeometryCollection" ? w(u, {}, "", m, v) : (c(u) && (v.push(
          s({
            geometry: u,
            properties: {},
            fallbackName: "",
            featureIndex: m
          })
        ), m += 1), m);
      }
      const E = [];
      return C(e, E, 0), { ...l, features: E };
    }
    function Jt(e) {
      const o = Array.isArray(e?.features) ? e.features : [];
      function t(n) {
        if (!n || typeof n != "object") return "";
        const i = [
          n.name,
          n.nom,
          n.admin,
          n.NAME,
          n.label,
          n.title,
          n.description,
          n.DESCRIPTION,
          n.NAME_1,
          n.NAME_2,
          n.NAME_3,
          n.NAME_EN,
          n["name:en"],
          n.name_en,
          n.localname,
          n.local_name
        ];
        for (const l of i)
          if (typeof l == "string" && l.trim()) return l.trim();
        for (const l of Object.values(n))
          if (typeof l == "string" && l.trim()) return l.trim();
        return "";
      }
      return o.filter((n) => n && n.type === "Feature" && n.geometry).map((n, i) => {
        const l = n.properties || {}, a = t(l);
        return {
          feature: n,
          geometry: n.geometry,
          properties: l,
          name: a,
          uid: `map-feature-${R.value}-${i}`,
          index: i
        };
      });
    }
    const Kt = d(
      () => Vt(Xe.value, {
        defaultName: "",
        includeNullGeometries: !1
      })
    ), se = d(
      () => Jt(Kt.value)
    );
    function Ce(e) {
      if (!e || typeof e.type != "string") return "";
      if (e.type === "GeometryCollection")
        return (Array.isArray(e.geometries) ? e.geometries : []).map((l) => Ce(l)).filter(Boolean).join(" ");
      const o = (i) => {
        if (!Array.isArray(i) || i.length < 2) return null;
        const l = Number(i[0]), a = Number(i[1]);
        if (!Number.isFinite(l) || !Number.isFinite(a)) return null;
        const c = H([l, a]);
        if (!Array.isArray(c) || c.length < 2) return null;
        const f = Number(c[0]), s = Number(c[1]);
        return !Number.isFinite(f) || !Number.isFinite(s) ? null : [f, s];
      }, t = (i) => {
        const l = (i || []).map(o).filter(Boolean);
        return l.length < 2 ? "" : "M" + l.map(([a, c]) => `${a},${c}`).join("L");
      }, n = (i) => (i || []).map((l) => {
        const a = t(l);
        return a ? a + "Z" : "";
      }).filter(Boolean).join(" ");
      return e.type === "Polygon" ? n(e.coordinates) : e.type === "MultiPolygon" ? (e.coordinates || []).map(n).filter(Boolean).join(" ") : e.type === "LineString" ? t(e.coordinates) : e.type === "MultiLineString" ? (e.coordinates || []).map(t).filter(Boolean).join(" ") : "";
    }
    function Ve(e) {
      return e ? e.type === "GeometryCollection" ? (Array.isArray(e.geometries) ? e.geometries : []).flatMap((t) => Ve(t)) : e.type === "Point" ? Array.isArray(e.coordinates) ? [e.coordinates] : [] : e.type === "MultiPoint" ? Array.isArray(e.coordinates) ? e.coordinates : [] : [] : [];
    }
    function Je(e) {
      return !e || typeof e.type != "string" ? !1 : e.type === "GeometryCollection" ? (Array.isArray(e.geometries) ? e.geometries : []).some((t) => Je(t)) : e.type === "Point" || e.type === "MultiPoint";
    }
    const Qt = d(
      () => se.value.filter((e) => {
        const o = e.geometry;
        return o ? o.type === "GeometryCollection" ? (Array.isArray(o.geometries) ? o.geometries : []).some(
          (n) => n?.type === "Polygon" || n?.type === "MultiPolygon"
        ) : o.type === "Polygon" || o.type === "MultiPolygon" : !1;
      })
    ), eo = d(
      () => se.value.filter((e) => {
        const o = e.geometry;
        return o ? o.type === "GeometryCollection" ? (Array.isArray(o.geometries) ? o.geometries : []).some(
          (n) => n?.type === "LineString" || n?.type === "MultiLineString"
        ) : o.type === "LineString" || o.type === "MultiLineString" : !1;
      })
    ), to = d(
      () => se.value.filter((e) => {
        const o = e.geometry;
        return o ? Je(o) : !1;
      })
    ), Ke = d(() => Qt.value.map((e) => {
      const o = Ce(e.geometry);
      return o ? { ...e, path: o } : null;
    }).filter(Boolean)), Qe = d(() => eo.value.map((e) => {
      const o = Ce(e.geometry);
      return o ? { ...e, path: o } : null;
    }).filter(Boolean)), et = d(() => {
      const e = [];
      function o(t = {}) {
        const n = t?.style && typeof t.style == "object" ? t.style : {}, i = t.radius ?? t.r ?? n.radius ?? n.r, l = t.color ?? t.fill ?? n.color ?? n.fill, a = t.stroke ?? n.stroke, c = t.strokeWidth ?? t.stroke_width ?? n.strokeWidth ?? n.stroke_width, f = Number.isFinite(Number(i)) ? Number(i) : Number(r.value.style.chart.points.radius), s = l != null && String(l).trim() ? Ee(String(l).trim()) : r.value.style.chart.points.fill, w = a != null && String(a).trim() ? Ee(String(a).trim()) : r.value.style.chart.points.stroke, C = Number.isFinite(Number(c)) ? Number(c) : Number(r.value.style.chart.points.strokeWidth);
        return { radius: f, fill: s, stroke: w, strokeWidth: C };
      }
      for (const t of to.value) {
        const n = Ve(t.geometry);
        for (let i = 0; i < n.length; i += 1) {
          const l = n[i];
          if (!Array.isArray(l) || l.length < 2) continue;
          const a = Number(l[0]), c = Number(l[1]);
          if (!Number.isFinite(a) || !Number.isFinite(c)) continue;
          const f = H([a, c]), s = f?.[0], w = f?.[1];
          if (!Number.isFinite(s) || !Number.isFinite(w)) continue;
          const C = t?.feature?.properties && typeof t.feature.properties == "object" ? t.feature.properties : {}, E = o(C);
          e.push({
            uid: `${t.uid}-geojson-point-${i}`,
            name: t.name || "",
            x: s,
            y: w,
            ...E,
            originalFeature: t.feature,
            featureIndex: t.index,
            pointIndex: i
          });
        }
      }
      return e;
    });
    function tt(e) {
      if (!e || typeof e.type != "string") return [];
      const o = [], t = (i) => {
        if (!Array.isArray(i) || i.length < 2) return;
        const l = Number(i[0]), a = Number(i[1]);
        if (!Number.isFinite(l) || !Number.isFinite(a)) return;
        const c = H([l, a]), f = c?.[0], s = c?.[1];
        !Number.isFinite(f) || !Number.isFinite(s) || o.push([f, s]);
      }, n = (i) => {
        if (Array.isArray(i)) {
          if (i.length >= 2 && typeof i[0] == "number" && typeof i[1] == "number") {
            t(i);
            return;
          }
          for (const l of i)
            n(l);
        }
      };
      if (e.type === "GeometryCollection" && Array.isArray(e.geometries)) {
        for (const i of e.geometries)
          o.push(...tt(i));
        return o;
      }
      return e.type === "Point" ? (t(e.coordinates), o) : e.type === "MultiPoint" ? ((e.coordinates || []).forEach(t), o) : (n(e.coordinates), o);
    }
    function oo(e) {
      const o = [];
      for (const f of e)
        o.push(...tt(f.geometry));
      if (!o.length) return null;
      let t = 1 / 0, n = 1 / 0, i = -1 / 0, l = -1 / 0;
      for (const [f, s] of o)
        f < t && (t = f), s < n && (n = s), f > i && (i = f), s > l && (l = s);
      const a = i - t, c = l - n;
      return !(a > 0) || !(c > 0) ? null : { minX: t, minY: n, maxX: i, maxY: l, width: a, height: c };
    }
    const no = d(() => oo(se.value));
    function ro({ bounds: e, targetWidth: o, targetHeight: t, padding: n }) {
      if (!e || !(e.width > 0) || !(e.height > 0))
        return { scale: 1, translateX: 0, translateY: 0, transform: "" };
      const i = Number.isFinite(Number(n)) ? Number(n) : 0, l = Math.max(1, o - i * 2), a = Math.max(1, t - i * 2), c = l / e.width, f = a / e.height, s = Math.min(c, f), w = e.width * s, C = e.height * s, E = i + (l - w) / 2, u = i + (a - C) / 2, v = E - e.minX * s, A = u - e.minY * s;
      return {
        scale: s,
        translateX: v,
        translateY: A,
        transform: `translate(${v} ${A}) scale(${s})`
      };
    }
    const ot = d(() => {
      const e = no.value;
      if (!e) return { scale: 1, translateX: 0, translateY: 0, transform: "" };
      const o = r.value?.map?.fitPadding, t = Number.isFinite(Number(o)) ? Number(o) : 0;
      return ro({
        bounds: e,
        targetWidth: P.value.width,
        targetHeight: P.value.height,
        padding: t
      });
    }), io = d(() => {
      const e = P.value.width, o = P.value.height;
      return `0 0 ${e} ${o}`;
    }), {
      viewBox: Q,
      resetZoom: nt,
      setInitialViewBox: Ae,
      scale: rt,
      zoomByFactor: it
    } = $o(
      ae,
      { x: 0, y: 0, width: P.value.width, height: P.value.height },
      1,
      B
    );
    function lo() {
      B.value = !B.value;
    }
    function lt(e) {
      const o = ot.value, t = Number(o?.scale) || 1, n = Number(o?.translateX) || 0, i = Number(o?.translateY) || 0;
      return {
        x: e.x * t + n,
        y: e.y * t + i
      };
    }
    function at() {
      const e = r.value?.map?.center, o = Number(e?.[0]), t = Number(e?.[1]), n = Array.isArray(e) && e.length === 2 && Number.isFinite(o) && Number.isFinite(t) && (o !== 0 || t !== 0), i = P.value.width, l = P.value.height;
      if (!n)
        return { x: 0, y: 0, width: i, height: l };
      const a = H([o, t]), c = a?.[0], f = a?.[1];
      if (!Number.isFinite(c) || !Number.isFinite(f))
        return { x: 0, y: 0, width: i, height: l };
      const s = lt({ x: c, y: f });
      return {
        x: s.x - i / 2,
        y: s.y - l / 2,
        width: i,
        height: l
      };
    }
    function ue() {
      const e = at();
      Ae(e, { overwriteCurrentIfNotZoomed: !0 }), _.value = !0;
    }
    const st = d(() => {
      const e = Q.value;
      return e ? `${e.x} ${e.y} ${e.width} ${e.height}` : io.value;
    });
    function ke() {
      it(xt, !0);
    }
    function Fe() {
      it(1 / xt, !0);
    }
    async function ut() {
      const e = at();
      Ae(e, { overwriteCurrentIfNotZoomed: !0 }), nt(!0);
    }
    ne(
      () => [
        r.value.projection,
        r.value.map.center?.[0],
        r.value.map.center?.[1],
        r.value.map.fitPadding,
        Xe.value
      ],
      async () => {
        _.value = !1, await re(), requestAnimationFrame(() => {
          _.value || ue();
        });
      },
      { deep: !1 }
    ), ne(
      () => [q.value, G.value, Y.value],
      async () => {
        Y.value && (await re(), Ae(
          { x: 0, y: 0, width: P.value.width, height: P.value.height },
          { overwriteCurrentIfNotZoomed: !0 }
        ), _.value = !1, requestAnimationFrame(() => {
          _.value || ue();
        }));
      },
      { flush: "post" }
    );
    function ao(e) {
      return e ? e.type === "FeatureCollection" && Array.isArray(e.features) ? e.features.filter((o) => o?.type === "Feature" && o.geometry?.type === "Point").map((o, t) => {
        const n = o.properties || {}, i = n.name || n.label || n.title || `Point ${t + 1}`, l = o.geometry.coordinates;
        return {
          uid: `map-point-${R.value}-${t}`,
          name: i,
          coordinates: l,
          color: n.color ?? null,
          radius: n.radius ?? null,
          hoverRadiusRatio: r.value.style.chart.points.hoverRadiusRatio,
          description: n.description ?? null,
          original: o,
          index: t
        };
      }) : Array.isArray(e) ? e.map((o, t) => {
        let n = null, i = `Point ${t + 1}`, l = null, a = null, c = null;
        Array.isArray(o) && o.length >= 2 ? n = [Number(o[0]), Number(o[1])] : o && typeof o == "object" && (Array.isArray(o.coordinates) && o.coordinates.length >= 2 ? n = [Number(o.coordinates[0]), Number(o.coordinates[1])] : Number.isFinite(Number(o.lon)) && Number.isFinite(Number(o.lat)) && (n = [Number(o.lon), Number(o.lat)]), typeof o.name == "string" && o.name.trim() && (i = o.name), o.description != null && (l = o.description), o.color != null && (a = o.color), o.radius != null && (c = o.radius));
        const f = n ? n[0] : NaN, s = n ? n[1] : NaN;
        return !Number.isFinite(f) || !Number.isFinite(s) ? null : {
          uid: `map-point-${R.value}-${t}`,
          name: i,
          coordinates: [f, s],
          color: a,
          radius: c,
          hoverRadiusRatio: r.value.style.chart.points.hoverRadiusRatio,
          description: l,
          original: o,
          index: t
        };
      }).filter(Boolean) : typeof e == "object" ? Object.entries(e).map(([o, t], n) => {
        if (!t || typeof t != "object") return null;
        const i = Array.isArray(t.coordinates) ? t.coordinates : null;
        if (!i || i.length < 2) return null;
        const l = Number(i[0]), a = Number(i[1]);
        return !Number.isFinite(l) || !Number.isFinite(a) ? null : {
          uid: `map-point-${R.value}-${n}-${o}`,
          name: t.name || o,
          coordinates: [l, a],
          color: t.color ?? null,
          radius: t.radius ?? null,
          hoverRadiusRatio: r.value.style.chart.points.hoverRadiusRatio,
          description: t.description ?? null,
          original: t,
          index: n
        };
      }).filter(Boolean) : [] : [];
    }
    const ct = d(() => ao(qt.value)), ft = d(() => ct.value.map((e) => {
      const o = H(e.coordinates), t = o?.[0], n = o?.[1];
      return !Number.isFinite(t) || !Number.isFinite(n) ? null : {
        ...e,
        x: t,
        y: n,
        fill: e.color ? Ee(e.color) : r.value.style.chart.points.fill,
        radius: Number.isFinite(Number(e.radius)) ? Number(e.radius) : r.value.style.chart.points.radius
      };
    }).filter(Boolean)), Ne = h(!1), we = h(""), z = h(!1), ee = h(null), x = h(null);
    function Pe(e) {
      we.value = e, Ne.value = !0;
    }
    function te() {
      Ne.value = !1, we.value = "";
    }
    function $e(e) {
      return String(e ?? "").replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;").replaceAll("'", "&#039;");
    }
    function so(e) {
      le.value = {
        datapoint: e,
        seriesIndex: e.index,
        series: ct.value,
        config: r.value
      }, z.value = !1;
      const o = r.value.style.chart.tooltip.customFormat;
      if ($t(o))
        try {
          const i = o(le.value);
          if (typeof i == "string")
            return z.value = !0, i;
        } catch {
          console.warn("Custom format cannot be applied."), z.value = !1;
        }
      const t = $e(e.name), n = e.description != null ? `<div style="margin-top:6px">${$e(e.description)}</div>` : "";
      return `<div><div style="font-weight:600">${t}</div>${n}</div>`;
    }
    function dt(e) {
      z.value = !1;
      const o = r.value.style.chart.tooltip.customFormat;
      if ($t(o))
        try {
          const n = o({
            datapoint: e,
            config: r.value
          });
          if (typeof n == "string")
            return z.value = !0, n;
        } catch {
          console.warn("Custom format cannot be applied."), z.value = !1;
        }
      const t = typeof e?.name == "string" ? e.name.trim() : "";
      return t ? `<div><div style="font-weight:600">${$e(t)}</div></div>` : (z.value = !1, "");
    }
    function mt(e) {
      if (r.value.events.territoryEnter && r.value.events.territoryEnter({
        datapoint: e,
        seriesIndex: e.index
      }), !(typeof e?.name == "string" ? e.name.trim() : "") && !r.value.style.chart.territory.hover.enabledWhenEmpty) {
        x.value = null, te();
        return;
      }
      x.value = e.uid, Pe(dt(e));
    }
    function ht(e) {
      x.value = null, te(), r.value.events.territoryLeave && r.value.events.territoryLeave({
        datapoint: e,
        seriesIndex: e.index
      });
    }
    function vt(e) {
      r.value.events.territoryClick && r.value.events.territoryClick({
        datapoint: e,
        seriesIndex: e.index
      });
    }
    function pt(e) {
      ee.value = e.uid, Pe(so(e)), r.value.events.datapointEnter && r.value.events.datapointEnter({
        datapoint: e,
        seriesIndex: e.index
      });
    }
    function gt(e) {
      ee.value = null, te(), r.value.events.datapointLeave && r.value.events.datapointLeave({
        datapoint: e,
        seriesIndex: e.index
      });
    }
    const yt = d(() => !!r.value.events.datapointClick && typeof r.value.events.datapointClick == "function");
    function bt(e) {
      yt.value && r.value.events.datapointClick({
        datapoint: e,
        seriesIndex: e.index
      });
    }
    const S = d(() => r.value.style.chart.territory), Ct = d(() => r.value.style.chart.points);
    function uo(e) {
      const o = typeof e?.name == "string" ? e.name.trim() : "";
      if (!o) {
        x.value = null, te();
        return;
      }
      const t = {
        name: o,
        uid: e.uid,
        index: e.featureIndex,
        properties: {}
      };
      x.value = e.uid, Pe(dt(t));
    }
    function co() {
      x.value = null, te();
    }
    const oe = h(!1);
    function Te() {
      oe.value = !oe.value;
    }
    ne(
      () => oe.value,
      (e) => {
        B.value = !e;
      }
    );
    function At() {
      K.value.showTooltip = !K.value.showTooltip;
    }
    const fo = d(() => r.value.style.chart.backgroundColor), mo = d(() => r.value.style.chart.title), { exportSvg: ho, getSvg: vo } = Oo({
      svg: ae,
      title: mo,
      legend: void 0,
      legendItems: void 0,
      backgroundColor: fo
    });
    async function kt({ isCb: e }) {
      if (e) {
        const { blob: o, url: t, text: n, dataUrl: i } = await vo();
        r.value.userOptions.callbacks.svg({ blob: o, url: t, text: n, dataUrl: i });
      } else
        ho();
    }
    async function po({ scale: e = 2 } = {}) {
      if (!I.value) return;
      const { width: o, height: t } = I.value.getBoundingClientRect(), n = o / t, { imageUri: i, base64: l } = await jo({
        domElement: I.value,
        base64: !0,
        img: !0,
        scale: e
      });
      return {
        imageUri: i,
        base64: l,
        title: r.value.style.chart.title.text,
        width: o,
        height: t,
        aspectRatio: n
      };
    }
    const Z = h(!1);
    let X = null;
    function go() {
      B.value && (Z.value = !0);
    }
    function xe() {
      Z.value = !1;
    }
    function yo() {
      B.value && (Z.value = !0, X && clearTimeout(X), X = setTimeout(() => {
        Z.value = !1, X = null;
      }, 140));
    }
    Nt(() => {
      X && clearTimeout(X);
    });
    async function Ft([e, o], { animated: t = !0 } = {}) {
      const n = Number(e), i = Number(o);
      if (!Number.isFinite(n) || !Number.isFinite(i)) return;
      const l = H([n, i]), a = l?.[0], c = l?.[1];
      if (!Number.isFinite(a) || !Number.isFinite(c)) return;
      const f = lt({ x: a, y: c }), s = Q.value ? { ...Q.value } : { x: 0, y: 0, width: P.value.width, height: P.value.height }, w = {
        x: f.x - s.width / 2,
        y: f.y - s.height / 2,
        width: s.width,
        height: s.height
      };
      if (!t) {
        Q.value = w;
        return;
      }
      const C = { ...s }, E = { ...w }, u = 250;
      let v = null;
      const A = (m) => {
        v == null && (v = m);
        const p = Math.min((m - v) / u, 1);
        Q.value = {
          x: C.x + (E.x - C.x) * p,
          y: C.y + (E.y - C.y) * p,
          width: C.width + (E.width - C.width) * p,
          height: C.height + (E.height - C.height) * p
        }, p < 1 && requestAnimationFrame(A);
      };
      requestAnimationFrame(A);
    }
    return Co(async () => {
      ye(), await re(), requestAnimationFrame(() => {
        _.value || (ue(), (r.value.map.center?.[0] || r.value.map.center?.[1]) && Ft(r.value.map.center, { animated: !1 }));
      });
    }), Nt(() => {
      ge();
    }), jt({
      getImage: po,
      generatePdf: Le,
      generateImage: We,
      generateSvg: kt,
      toggleTooltip: At,
      toggleAnnotator: Te,
      toggleFullscreen: je,
      zoomIn: ke,
      zoomOut: Fe,
      resetZoom: nt,
      focusLocation: Ft
    }), (e, o) => (g(), N("div", {
      class: wt(`vue-data-ui-component vue-ui-geo ${j.value ? "vue-data-ui-wrapper-fullscreen" : ""} ${Y.value ? "vue-ui-geo-responsive" : ""} ${Z.value ? "vue-ui-geo-interacting" : ""}`),
      ref_key: "geoChart",
      ref: I,
      id: `map_${R.value}`,
      dir: "auto",
      style: fe({
        fontFamily: r.value.style.fontFamily,
        width: "100%",
        backgroundColor: r.value.style.chart.backgroundColor,
        height: Y.value ? `${G.value}px` : void 0
      })
    }, [
      Ye.value ? (g(), N("div", {
        key: 0,
        ref_key: "noTitle",
        ref: Oe,
        class: "vue-data-ui-no-title-space",
        style: "height:36px; width: 100%;background:transparent"
      }, null, 512)) : M("", !0),
      r.value.style.chart.title.text ? (g(), N("div", {
        key: 1,
        ref_key: "chartTitle",
        ref: Se,
        style: "width:100%;background:transparent;padding-bottom:12px"
      }, [
        (g(), V(zo, {
          key: `title_${Be.value}`,
          config: {
            title: {
              cy: "geo-title",
              ...r.value.style.chart.title
            },
            subtitle: {
              cy: "geo-subtitle",
              ...r.value.style.chart.title.subtitle
            }
          }
        }, null, 8, ["config"]))
      ], 512)) : M("", !0),
      r.value.userOptions.buttons.annotator ? (g(), V(y(Dt), {
        key: 2,
        svgRef: y(ae),
        backgroundColor: r.value.style.chart.backgroundColor,
        color: r.value.style.chart.color,
        active: oe.value,
        onClose: Te
      }, {
        "annotator-action-close": F(() => [
          b(e.$slots, "annotator-action-close", {}, void 0, !0)
        ]),
        "annotator-action-color": F(({ color: t }) => [
          b(e.$slots, "annotator-action-color", $(T({ color: t })), void 0, !0)
        ]),
        "annotator-action-draw": F(({ mode: t }) => [
          b(e.$slots, "annotator-action-draw", $(T({ mode: t })), void 0, !0)
        ]),
        "annotator-action-undo": F(({ disabled: t }) => [
          b(e.$slots, "annotator-action-undo", $(T({ disabled: t })), void 0, !0)
        ]),
        "annotator-action-redo": F(({ disabled: t }) => [
          b(e.$slots, "annotator-action-redo", $(T({ disabled: t })), void 0, !0)
        ]),
        "annotator-action-delete": F(({ disabled: t }) => [
          b(e.$slots, "annotator-action-delete", $(T({ disabled: t })), void 0, !0)
        ]),
        _: 3
      }, 8, ["svgRef", "backgroundColor", "color", "active"])) : M("", !0),
      r.value.userOptions.show && (y(ze) || y(Ge)) ? (g(), V(y(zt), {
        ref: "userOptionsRef",
        key: `user_options_${he.value}`,
        backgroundColor: r.value.style.chart.backgroundColor,
        color: r.value.style.chart.color,
        isPrinting: y(De),
        isImaging: y(Ze),
        uid: R.value,
        hasXls: !1,
        hasTable: !1,
        hasTooltip: r.value.userOptions.buttons.tooltip && r.value.style.chart.tooltip.show,
        hasPdf: r.value.userOptions.buttons.pdf,
        hasImg: r.value.userOptions.buttons.img,
        hasSvg: r.value.userOptions.buttons.svg,
        hasFullscreen: r.value.userOptions.buttons.fullscreen,
        hasAnnotator: r.value.userOptions.buttons.annotator,
        hasZoom: r.value.userOptions.buttons.zoom,
        isZoom: B.value,
        isFullscreen: j.value,
        isTooltip: K.value.showTooltip,
        titles: { ...r.value.userOptions.buttonTitles },
        chartElement: I.value,
        position: r.value.userOptions.position,
        isAnnotation: oe.value,
        callbacks: r.value.userOptions.callbacks,
        printScale: r.value.userOptions.print.scale,
        onToggleFullscreen: je,
        onGeneratePdf: y(Le),
        onGenerateImage: y(We),
        onGenerateSvg: kt,
        onToggleTooltip: At,
        onToggleAnnotator: Te,
        onToggleZoom: lo,
        style: fe({
          visibility: y(ze) ? y(Ge) ? "visible" : "hidden" : "visible"
        })
      }, Ao({ _: 2 }, [
        e.$slots.menuIcon ? {
          name: "menuIcon",
          fn: F(({ isOpen: t, color: n }) => [
            b(e.$slots, "menuIcon", $(T({ isOpen: t, color: n })), void 0, !0)
          ]),
          key: "0"
        } : void 0,
        e.$slots.optionTooltip ? {
          name: "optionTooltip",
          fn: F(() => [
            b(e.$slots, "optionTooltip", {}, void 0, !0)
          ]),
          key: "1"
        } : void 0,
        e.$slots.optionPdf ? {
          name: "optionPdf",
          fn: F(() => [
            b(e.$slots, "optionPdf", {}, void 0, !0)
          ]),
          key: "2"
        } : void 0,
        e.$slots.optionImg ? {
          name: "optionImg",
          fn: F(() => [
            b(e.$slots, "optionImg", {}, void 0, !0)
          ]),
          key: "3"
        } : void 0,
        e.$slots.optionSvg ? {
          name: "optionSvg",
          fn: F(() => [
            b(e.$slots, "optionSvg", {}, void 0, !0)
          ]),
          key: "4"
        } : void 0,
        e.$slots.optionFullscreen ? {
          name: "optionFullscreen",
          fn: F(({ toggleFullscreen: t, isFullscreen: n }) => [
            b(e.$slots, "optionFullscreen", $(T({ toggleFullscreen: t, isFullscreen: n })), void 0, !0)
          ]),
          key: "5"
        } : void 0,
        e.$slots.optionAnnotator ? {
          name: "optionAnnotator",
          fn: F(({ toggleAnnotator: t, isAnnotator: n }) => [
            b(e.$slots, "optionAnnotator", $(T({ toggleAnnotator: t, isAnnotator: n })), void 0, !0)
          ]),
          key: "6"
        } : void 0,
        e.$slots.optionZoom ? {
          name: "optionZoom",
          fn: F(({ toggleZoom: t, isZoomLocked: n }) => [
            b(e.$slots, "optionZoom", $(T({ toggleZoom: t, isZoomLocked: n })), void 0, !0)
          ]),
          key: "7"
        } : void 0
      ]), 1032, ["backgroundColor", "color", "isPrinting", "isImaging", "uid", "hasTooltip", "hasPdf", "hasImg", "hasSvg", "hasFullscreen", "hasAnnotator", "hasZoom", "isZoom", "isFullscreen", "isTooltip", "titles", "chartElement", "position", "isAnnotation", "callbacks", "printScale", "onGeneratePdf", "onGenerateImage", "style"])) : M("", !0),
      r.value.style.chart.controls.position === "top" && r.value.style.chart.controls.show && !y(pe) ? (g(), V(Tt, {
        key: 4,
        ref_key: "zoomControlsTop",
        ref: Re,
        config: r.value,
        scale: y(rt),
        isFullscreen: j.value,
        onZoomIn: ke,
        onZoomOut: Fe,
        onResetZoom: ut
      }, null, 8, ["config", "scale", "isFullscreen"])) : M("", !0),
      (g(), N("svg", {
        ref_key: "svgRef",
        ref: ae,
        xmlns: y(Po),
        viewBox: st.value,
        preserveAspectRatio: "xMidYMid meet",
        style: fe({
          display: "block",
          width: "100%",
          height: Y.value ? `${G.value}px` : "auto",
          background: r.value.style.chart.backgroundColor,
          touchAction: B.value ? "none" : "auto",
          cursor: B.value ? Z.value ? "grabbing" : "grab" : "default"
        }),
        id: `vue-ui-geo_${R.value}`,
        onPointerdown: go,
        onPointerup: xe,
        onPointercancel: xe,
        onPointerleave: xe,
        onWheel: yo
      }, [
        Pt(y(Zt)),
        ie("g", {
          transform: ot.value.transform,
          style: fe({ pointerEvents: Z.value ? "none" : "auto" })
        }, [
          ie("g", null, [
            (g(!0), N(de, null, me(Ke.value, (t) => (g(), N("path", {
              class: "vue-ui-geo-territory",
              key: t.uid,
              d: t.path,
              fill: x.value === t.uid ? S.value.hover.fill : S.value.fill,
              stroke: x.value === t.uid ? S.value.hover.stroke : S.value.stroke,
              "stroke-width": x.value === t.uid ? S.value.hover.strokeWidth : S.value.strokeWidth,
              "vector-effect": "non-scaling-stroke",
              onMouseenter: (n) => mt(t),
              onMouseleave: (n) => ht(t),
              onClick: (n) => vt(t)
            }, null, 40, Yo))), 128))
          ]),
          ie("g", null, [
            (g(!0), N(de, null, me(Qe.value, (t) => (g(), N("path", {
              class: "vue-ui-geo-territory",
              key: t.uid,
              d: t.path,
              fill: "none",
              stroke: x.value === t.uid ? S.value.hover.stroke : S.value.stroke,
              "stroke-width": x.value === t.uid ? S.value.hover.strokeWidth : S.value.strokeWidth,
              "vector-effect": "non-scaling-stroke",
              onMouseenter: (n) => mt(t),
              onMouseleave: (n) => ht(t),
              onClick: (n) => vt(t)
            }, null, 40, qo))), 128))
          ]),
          ie("g", null, [
            (g(!0), N(de, null, me(et.value, (t) => (g(), N("circle", {
              key: t.uid,
              cx: t.x,
              cy: t.y,
              r: t.radius,
              fill: t.fill,
              stroke: t.stroke,
              "stroke-width": t.strokeWidth,
              "vector-effect": "non-scaling-stroke",
              onMouseenter: (n) => uo(t),
              onMouseleave: co
            }, null, 40, Ho))), 128))
          ]),
          (g(!0), N(de, null, me(ft.value, (t) => (g(), N("g", {
            key: t.uid
          }, [
            b(e.$slots, "datapoint", ko({ ref_for: !0 }, {
              point: t,
              onPointEnter: pt,
              onPointLeave: gt,
              onPointClick: bt,
              highlighted: ee.value === t.uid
            }), () => [
              ie("circle", {
                class: wt({
                  "vue-ui-geo-point": !0,
                  "vue-ui-geo-point-with-event": yt.value
                }),
                cx: t.x,
                cy: t.y,
                r: ee.value === t.uid ? t.radius * t.hoverRadiusRatio : t.radius,
                fill: t.fill,
                stroke: Ct.value.stroke,
                "stroke-width": Ct.value.strokeWidth,
                "vector-effect": "non-scaling-stroke",
                onMouseenter: (n) => pt(t),
                onMouseleave: (n) => gt(t),
                onClick: (n) => bt(t)
              }, null, 42, Xo)
            ], !0),
            r.value.style.chart.points.labels.show ? (g(), N("text", {
              key: 0,
              class: "vue-ui-geo-point-label",
              x: t.x,
              y: t.y + (ee.value === t.uid ? t.radius * t.hoverRadiusRatio : t.radius) + r.value.style.chart.points.labels.offsetY + 1 * r.value.style.chart.points.labels.fontSizeRatio,
              "text-anchor": "middle",
              fill: r.value.style.chart.points.labels.color,
              "font-size": 1 * r.value.style.chart.points.labels.fontSizeRatio
            }, Fo(t.name), 9, Uo)) : M("", !0)
          ]))), 128)),
          b(e.$slots, "svg", {
            svg: {
              drawingArea: st.value,
              data: {
                areaPaths: Ke.value,
                linePaths: Qe.value,
                geoJsonPoints: et.value,
                projectedPoints: ft.value
              }
            }
          }, void 0, !0)
        ], 12, Wo)
      ], 44, Lo)),
      e.$slots.watermark ? (g(), N("div", Vo, [
        b(e.$slots, "watermark", $(T({ isPrinting: y(De) || y(Ze) })), void 0, !0)
      ])) : M("", !0),
      r.value.style.chart.controls.position === "bottom" && r.value.style.chart.controls.show && !y(pe) ? (g(), V(Tt, {
        key: 6,
        ref_key: "zoomControlsBottom",
        ref: _e,
        config: r.value,
        scale: y(rt),
        isFullscreen: j.value,
        onZoomIn: ke,
        onZoomOut: Fe,
        onResetZoom: ut
      }, null, 8, ["config", "scale", "isFullscreen"])) : M("", !0),
      Pt(y(Gt), {
        show: K.value.showTooltip && Ne.value,
        backgroundColor: r.value.style.chart.tooltip.backgroundColor,
        color: r.value.style.chart.tooltip.color,
        fontSize: r.value.style.chart.tooltip.fontSize,
        borderRadius: r.value.style.chart.tooltip.borderRadius,
        borderColor: r.value.style.chart.tooltip.borderColor,
        borderWidth: r.value.style.chart.tooltip.borderWidth,
        backgroundOpacity: r.value.style.chart.tooltip.backgroundOpacity,
        position: r.value.style.chart.tooltip.position,
        offsetY: r.value.style.chart.tooltip.offsetY,
        parent: I.value,
        content: we.value,
        isCustom: z.value,
        isFullscreen: j.value,
        smooth: r.value.style.chart.tooltip.smooth,
        backdropFilter: r.value.style.chart.tooltip.backdropFilter,
        smoothForce: r.value.style.chart.tooltip.smoothForce,
        smoothSnapThreshold: r.value.style.chart.tooltip.smoothSnapThreshold
      }, {
        "tooltip-before": F(() => [
          b(e.$slots, "tooltip-before", $(T({ ...le.value })), void 0, !0)
        ]),
        "tooltip-after": F(() => [
          b(e.$slots, "tooltip-after", $(T({ ...le.value })), void 0, !0)
        ]),
        _: 3
      }, 8, ["show", "backgroundColor", "color", "fontSize", "borderRadius", "borderColor", "borderWidth", "backgroundOpacity", "position", "offsetY", "parent", "content", "isCustom", "isFullscreen", "smooth", "backdropFilter", "smoothForce", "smoothSnapThreshold"]),
      e.$slots.source ? (g(), N("div", {
        key: 7,
        ref_key: "source",
        ref: Me,
        dir: "auto"
      }, [
        b(e.$slots, "source", {}, void 0, !0)
      ], 512)) : M("", !0),
      y(pe) ? (g(), V(Bo, { key: 8 })) : M("", !0)
    ], 14, Zo));
  }
}, Ko = /* @__PURE__ */ Do(Jo, [["__scopeId", "data-v-fcd9019f"]]), gn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
  __proto__: null,
  default: Ko
}, Symbol.toStringTag, { value: "Module" }));
export {
  pn as a,
  gn as b,
  Ko as v
};