var s = Object.defineProperty;
var i = (r, e, t) => e in r ? s(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
var o = (r, e, t) => (i(r, typeof e != "symbol" ? e + "" : e, t), t);
import { defineComponent as c, getCurrentInstance as a } from "vue";
import { useViewController as h } from "@ibiz-template/vue-util";
import { Neuron as l, ViewNerve as d, ViewController as u } from "@ibiz-template/controller";
class p extends l {
}
class m extends d {
  constructor() {
    super(...arguments);
    o(this, "chart");
  }
  createNeuron() {
    return new p(this.bindAbility());
  }
  inclusive(t) {
    return t === "chart" || super.inclusive(t);
  }
  connect(t, n) {
    super.connect(t, n), t === "chart" && (this.chart = n, this.chart.evt.on("destroyed", () => {
      this.chart = void 0;
    }));
  }
  destroy() {
    super.destroy(), this.chart = void 0;
  }
}
class v extends u {
  createNerve() {
    return new m(this);
  }
  async onInit() {
    await super.onInit();
    const { chart: e } = this.model;
    e && (this.providers[e.name] = await ibiz.register.control.get(e)), this.nerve.self.evt.on("mounted", () => {
      this.model.source.loadDefault && this.load();
    });
  }
  /**
   * 视图加载方法
   *
   * @return {*}  {Promise<IData[]>}
   * @memberof ChartViewController
   */
  async load() {
    const { chart: e } = this.nerve;
    return e.call.load();
  }
  /**
   * 刷新视图
   *
   * @author zhanghengfeng
   * @date 2023-04-07 17:04:41
   * @return {*}  {Promise<void>}
   */
  async refresh() {
    this.load();
  }
}
function f(r, e) {
  return h(
    r,
    (t, n) => new v(e, t, n)
  );
}
const V = c({
  props: {
    context: Object,
    params: {
      type: Object,
      default: () => ({})
    },
    modelPath: {
      type: String,
      required: !0
    },
    modal: {
      type: Object
    }
  },
  setup(r) {
    const {
      proxy: e
    } = a();
    return {
      c: f(e, r.modelPath)
    };
  },
  render(r) {
    let e = null;
    if (this.c.complete) {
      const {
        chart: t
      } = this.c.model;
      this.c.providers[t.name] && (e = r(this.c.providers[t.name].component, {
        props: {
          modelData: t,
          context: this.c.context,
          params: this.c.params
        },
        on: {
          neuronInit: this.c.nerve.onNeuronInit(t.name)
        }
      }));
    }
    return r("view-base", {
      attrs: {
        controller: this.c
      }
    }, [e]);
  }
});
export {
  V as default
};
