import { jsx as s } from "react/jsx-runtime";
import r from "react";
import { createRoot as n } from "react-dom/client";
import * as o from "d3";
import p from "./Tooltip.js";
import { loadJSON as h } from "./Utils.js";
let g = class extends r.Component {
  constructor() {
    super(), this.loadJSON = this.loadJSON.bind(this), this.create = this.create.bind(this), this.createLayer = this.createLayer.bind(this), this.loadJSON = this.loadJSON.bind(this), this.showToolTip = this.showToolTip.bind(this), this.moveToolTip = this.moveToolTip.bind(this), this.gRef = r.createRef(), this.state = { json: null };
  }
  loadJSON(t) {
    return h(t);
  }
  createLayer(t) {
    alert("please implement createLayer");
  }
  applyInitialTransform() {
    const { editing: t, initialPosition: e, width: i, height: a } = this.props;
    o.select(this.gRef.current).attr("transform", `translate(${e.x},${e.y}) scale(${e.k})`);
  }
  create() {
    const {
      file: t
    } = this.props;
    this.state.json ? this.createLayer(this.state.json) : this.loadJSON(t).then((e) => {
      this.createLayer(e);
    });
  }
  showToolTip(t, e, i, a) {
    if (e) {
      const l = o.select("body").append("div").attr("class", "d3MapTooltip").style("position", "absolute").html("").style("left", window.event.pageX + 15 + "px").style("top", window.event.pageY - 50 + "px");
      n(l._groups[0][0]).render(/* @__PURE__ */ s(
        p,
        {
          intl: this.props.intl,
          tooltip: t,
          data: e,
          tooltipEnableMarkdown: !1
        }
      ));
    }
  }
  moveToolTip(t) {
    o.select(".d3MapTooltip").style("left", window.event.pageX + 15 + "px").style("top", window.event.pageY - 50 + "px");
  }
  hiddenToolTip(t) {
    o.selectAll(".d3MapTooltip").remove();
  }
  componentDidMount() {
    this.props.zoom && this.gRef.current && this.applyInitialTransform(), this.create();
  }
  render() {
    const { name: t, height: e, width: i } = this.props;
    return /* @__PURE__ */ s("g", { className: "layer", ref: this.gRef });
  }
};
export {
  g as default
};
