import { defineComponent as x, computed as k, ref as g, onMounted as $, nextTick as I, createElementBlock as l, createCommentVNode as f, openBlock as p, normalizeStyle as L, createVNode as v, Fragment as b, renderList as h, unref as W, withCtx as N } from "vue";
import { cloneDeep as O } from "lodash";
import { Vue3SeamlessScroll as R } from "vue3-seamless-scroll";
import { nanoid as y } from "nanoid";
/* empty css                                     */
/* empty css                                     */
import "../../../Interaction/components/Tabs/index.mjs";
import "../../../Interaction/components/Tabs-icon/index.mjs";
import "../../../Interaction/components/Button/index.mjs";
import "../../../Interaction/components/DatePicker/index.mjs";
import "../../../Interaction/components/DatePickerRange/index.mjs";
import "../../../Interaction/components/Switch/index.mjs";
import "../../../Interaction/components/Input/index.mjs";
import "../../../Interaction/components/Select/index.mjs";
import "../../../Interaction/components/Slider/index.mjs";
import "../List/index.mjs";
import "../Text/index.mjs";
import "../TextDynamic/index.mjs";
import "../TableBasic/index.mjs";
import "./index.mjs";
import "../RowScroll/index.mjs";
import "../RealTime/index.mjs";
import "../OverNumber/index.mjs";
import "../CountDown/index.mjs";
import "../TextCarousel/index.mjs";
import "../../../Media/components/Audio/index.mjs";
import "../../../Media/components/Video/index.mjs";
import "../../../Media/components/Carousel/index.mjs";
import "../../../Media/components/Flv/index.mjs";
import "../../../Media/components/Iframe/index.mjs";
import "../../../Media/components/IframeCarousel/index.mjs";
import "../../../Media/components/Image/index.mjs";
import "../../../Media/components/ImageDynamic/index.mjs";
import "../../../Media/components/M3u8/index.mjs";
import "../../../Media/components/Wavesurfer/index.mjs";
import "../../../Media/components/Weather/index.mjs";
import "../../../Media/components/Qrcode/index.mjs";
import "../../../Chart/components/bar/basic/index.mjs";
import "../../../Chart/components/bar/animation/index.mjs";
import "../../../Chart/components/bar/contrast/index.mjs";
import "../../../Chart/components/bar/contrast2/index.mjs";
import "../../../Chart/components/bar/contrast3/index.mjs";
import "../../../Chart/components/bar/gradient-column-chart/index.mjs";
import "../../../Chart/components/bar/horizontal/index.mjs";
import "../../../Chart/components/bar/horizontal-stack/index.mjs";
import "../../../Chart/components/bar/line-bar/index.mjs";
import "../../../Chart/components/bar/line-bar2/index.mjs";
import "../../../Chart/components/bar/loop/index.mjs";
import "../../../Chart/components/bar/mini/index.mjs";
import "../../../Chart/components/bar/polar/index.mjs";
import "../../../Chart/components/bar/polar-stack/index.mjs";
import "../../../Chart/components/bar/polar2/index.mjs";
import "../../../Chart/components/bar/radius-circle/index.mjs";
import "../../../Chart/components/bar/rank/index.mjs";
import "../../../Chart/components/bar/segmented-progress/index.mjs";
import "../../../Chart/components/bar/spire/index.mjs";
import "../../../Chart/components/bar/stack/index.mjs";
import "../../../Chart/components/bar/stack-line/index.mjs";
import "../../../Chart/components/bar/stack2/index.mjs";
import "../../../Chart/components/bar/stack3/index.mjs";
import "../../../Chart/components/bar/staggered/index.mjs";
import "../../../Chart/components/bar/three/index.mjs";
import "../../../Chart/components/bar/waterfall/index.mjs";
import "../../../Chart/components/bar/zebra/index.mjs";
import "../../../Chart/components/line/area-gradient/index.mjs";
import "../../../Chart/components/line/area-highlight/index.mjs";
import "../../../Chart/components/line/area-highlight2/index.mjs";
import "../../../Chart/components/line/basic/index.mjs";
import "../../../Chart/components/line/bump/index.mjs";
import "../../../Chart/components/line/dashed/index.mjs";
import "../../../Chart/components/line/ladder/index.mjs";
import "../../../Chart/components/line/logarithm/index.mjs";
import "../../../Chart/components/line/multix/index.mjs";
import "../../../Chart/components/line/polar-double/index.mjs";
import "../../../Chart/components/line/rain-flow/index.mjs";
import "../../../Chart/components/line/scale/index.mjs";
import "../../../Chart/components/line/smooth/index.mjs";
import "../../../Chart/components/line/smooth-area/index.mjs";
import "../../../Chart/components/line/stack/index.mjs";
import "../../../Chart/components/line/stack-area/index.mjs";
import "../../../Chart/components/line/temp/index.mjs";
import "../../../Chart/components/line/vertical/index.mjs";
import "../../../Chart/components/map/basic/index.mjs";
import "../../../Chart/components/map/bmap-basic/index.mjs";
import "../../../Chart/components/map/bmap-heatmap/index.mjs";
import "../../../Chart/components/map/bmap-rich/index.mjs";
import "../../../Chart/components/map/customize/index.mjs";
import "../../../Chart/components/map/lines/index.mjs";
import "../../../Chart/components/map/scatter/index.mjs";
import "../../../Chart/components/pie/3d/index.mjs";
import "../../../Chart/components/pie/basic/index.mjs";
import "../../../Chart/components/pie/basic2/index.mjs";
import "../../../Chart/components/pie/customized/index.mjs";
import "../../../Chart/components/pie/index/index.mjs";
import "../../../Chart/components/pie/interval/index.mjs";
import "../../../Chart/components/pie/legend-scroll/index.mjs";
import "../../../Chart/components/pie/radius/index.mjs";
import "../../../Chart/components/pie/rose/index.mjs";
import "../../../Chart/components/pie/round/index.mjs";
import "../../../Chart/components/pie/sunburst/index.mjs";
import "../../../Chart/components/scatter/basic/index.mjs";
import "../../../Chart/components/scatter/basic2/index.mjs";
import "../../../Chart/components/scatter/bubble/index.mjs";
import "../../../Chart/components/scatter/ripples/index.mjs";
import "../../../Chart/components/other/candlestick-basic/index.mjs";
import "../../../Chart/components/other/sunburst-basic/index.mjs";
import "../../../Chart/components/other/sunburst-basic2/index.mjs";
import "../../../Chart/components/other/sunburst-basic3/index.mjs";
import "../../../Chart/components/other/sunburst-basic4/index.mjs";
import "../../../Chart/components/other/sunburst-book/index.mjs";
import "../../../Chart/components/other/sunburst-flavors/index.mjs";
import "../../../Chart/components/other/sunburst-radius/index.mjs";
import "../../../Chart/components/other/funnel/index.mjs";
import "../../../Chart/components/other/funnel-contrast/index.mjs";
import "../../../Chart/components/other/funnel-split/index.mjs";
import "../../../Chart/components/other/funnel2/index.mjs";
import "../../../Chart/components/other/force/index.mjs";
import "../../../Chart/components/other/force2/index.mjs";
import "../../../Chart/components/other/gauge/index.mjs";
import "../../../Chart/components/other/gauge-grade/index.mjs";
import "../../../Chart/components/other/gauge-stage/index.mjs";
import "../../../Chart/components/other/graph-basic/index.mjs";
import "../../../Chart/components/other/graph-basic2/index.mjs";
import "../../../Chart/components/other/graph-calendar/index.mjs";
import "../../../Chart/components/other/circular-graph/index.mjs";
import "../../../Chart/components/other/heatmap/index.mjs";
import "../../../Chart/components/other/liquidfill/index.mjs";
import "../../../Chart/components/other/parallel-basic/index.mjs";
import "../../../Chart/components/other/parallel-mul/index.mjs";
import "../../../Chart/components/other/radar-stack/index.mjs";
import "../../../Chart/components/other/tree/index.mjs";
import "../../../Chart/components/other/tree-line/index.mjs";
import "../../../Chart/components/other/word-cloud/index.mjs";
import "../../../Chart/components/other/treemap/index.mjs";
import "../../../Chart/components/other/treemap-basic/index.mjs";
import "../../../Chart/components/other/label-gauge/index.mjs";
import "../../../Chart/components/other/grid-percentage/index.mjs";
import "../../../Chart/components/other/radar/index.mjs";
import "../../../Commons/components/CustomComponentRender/index.mjs";
import "../../../Commons/components/Graphical/index.mjs";
import "../../../Commons/components/Svg/index.mjs";
import "../../../Commons/components/ModelViewer/index.mjs";
import "../../../Commons/components/VrVideo/index.mjs";
import "../../../Commons/components/VrPhoto/index.mjs";
import "../../../Commons/components/Babylon/index.mjs";
import "../../../Commons/components/Echarts/index.mjs";
import "../../../Commons/components/GSViewer/index.mjs";
import "../../../Scene/components/Amap2d/index.mjs";
import "../../../Scene/components/Amap3d/index.mjs";
import "../../../Scene/components/Default/index.mjs";
import "../../../Scene/components/Map2d/index.mjs";
import "../../../Scene/components/Map3d/index.mjs";
import "../../../Scene/components/UeIframe/index.mjs";
import "../../../Scene/components/UeShj/index.mjs";
import "../../../Scene/components/UnityIframe/index.mjs";
import "../../../Scene/components/UnityWebgl/index.mjs";
import "../../../Scene/components/Vr/index.mjs";
import "../../../Scene/components/Earth/index.mjs";
import { SHJDatasourceV2 as H } from "../../../../commons/plugins/datasource/index.mjs";
import { SHJParseEvent as n } from "../../../../commons/plugins/event/index.mjs";
import w from "../../../../commons/components/Text.vue.mjs";
import { useWatch as J } from "./hooks/useWatch.mjs";
import { upgradeTableScroll as z } from "./version.mjs";
const F = {
  key: 0,
  class: "table-header"
}, P = ["onClick", "onMouseenter", "onMouseout"], U = ["onClick"], q = x({ name: "ShjTableScroll" }), Qe = /* @__PURE__ */ x({
  ...q,
  props: {
    option: {},
    sources: {},
    useEvents: {}
  },
  emits: [
    "on-click-item",
    "on-click-row",
    "on-mouseenter-row",
    "on-mouseout-row"
  ],
  setup(i, { expose: S, emit: E }) {
    const c = E, t = k(() => z(i.option)), d = g(y()), a = g([]), u = () => {
      H.parse({
        sources: i.sources,
        callback: (e) => {
          try {
            n.parseEvents(i.useEvents, "dataListener", a), a.value = O(e.data[0].data) || [], d.value = y();
          } catch {
            n.parseEvents(i.useEvents, "dataListener", null), a.value = [], d.value = y();
          }
        }
      });
    }, C = k(() => Object.keys(a.value[0])), V = (e) => Object.values(e), B = (e, r) => {
      const o = { row: e, rowIndex: r };
      c("on-click-row", o), n.parseEvents(i.useEvents, "on-click-row", o);
    }, M = (e, r) => {
      const o = { row: e, rowIndex: r };
      c("on-mouseenter-row", o), n.parseEvents(i.useEvents, "on-mouseenter-row", o);
    }, j = (e, r) => {
      const o = { row: e, rowIndex: r };
      c("on-mouseout-row", o), n.parseEvents(i.useEvents, "on-mouseout-row", o);
    }, D = (e, r, o, s) => {
      const m = {
        row: e,
        item: r,
        rowIndex: o,
        columnIndex: s
      };
      c("on-click-item", m), n.parseEvents(i.useEvents, "on-click-item", m);
    };
    return $(() => {
      I(() => {
        u();
      });
    }), J({ option: t.value, sources: i.sources }, u), S({
      refresh: () => u(),
      refreshView: () => u(),
      refreshData: () => u()
    }), (e, r) => a.value.length > 0 ? (p(), l("div", {
      key: d.value,
      class: "table",
      style: L({
        "--table-border-color": t.value.style.table.borderColor,
        "--table-border-width": t.value.style.table.borderWidth + "px",
        "--table-border-style": t.value.style.table.borderStyle,
        "--table-padding-left": t.value.style.table.paddingLeft + "px",
        "--table-align-items": t.value.style.table.alignItems,
        "--table-justify-content": t.value.style.table.justifyContent,
        "--table-header-height": t.value.style.header.height + "px",
        "--tabel-header-background": `url(${t.value.style.header.background})`,
        "--table-header-border-bottom-color": t.value.style.header.borderBottomColor,
        "--table-header-border-bottom-width": t.value.style.header.borderBottomWidth + "px",
        "--table-header-border-bottom-style": t.value.style.header.borderBottomStyle,
        "--table-body-height": t.value.style.body.height + "px",
        "--table-body-background": t.value.style.body.background,
        "--table-odd-background": t.value.style.oddBackground,
        "--table-hover-color": t.value.style.hoverColor
      })
    }, [
      t.value.style.header.show ? (p(), l("div", F, [
        (p(!0), l(b, null, h(C.value, (o) => (p(), l("div", {
          key: o,
          class: "th"
        }, [
          v(w, {
            text: o,
            textStyle: t.value.style.header.textStyle
          }, null, 8, ["text", "textStyle"])
        ]))), 128))
      ])) : f("", !0),
      v(W(R), {
        modelValue: t.value.scroll.start,
        "onUpdate:modelValue": r[0] || (r[0] = (o) => t.value.scroll.start = o),
        direction: t.value.scroll.direction,
        list: a.value,
        "is-watch": "",
        hover: t.value.scroll.hover,
        "limit-scroll-num": t.value.scroll.limitScrollNum,
        "single-height": t.value.scroll.isSingle ? t.value.style.body.height : 0,
        "single-wait-time": t.value.scroll.singleWaitTime,
        class: "table-body"
      }, {
        default: N(() => [
          (p(!0), l(b, null, h(a.value, (o, s) => (p(), l("div", {
            key: o,
            class: "tr",
            onClick: (m) => B(o, s),
            onMouseenter: (m) => M(o, s),
            onMouseout: (m) => j(o, s)
          }, [
            (p(!0), l(b, null, h(V(o), (m, T) => (p(), l("div", {
              key: m,
              class: "td",
              onClick: (A) => D(o, m, s, T)
            }, [
              v(w, {
                text: m,
                textStyle: t.value.style.body.textStyle
              }, null, 8, ["text", "textStyle"])
            ], 8, U))), 128))
          ], 40, P))), 128))
        ]),
        _: 1
      }, 8, ["modelValue", "direction", "list", "hover", "limit-scroll-num", "single-height", "single-wait-time"])
    ], 4)) : f("", !0);
  }
});
export {
  Qe as default
};
