{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/overlays/echarts/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-11 15:52:55\n * @LastEditTime: 2022-03-11 13:27:23\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\echarts\\index.ts\n */\nimport type { CSSProperties, WatchStopHandle, PropType } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, h, reactive, createCommentVNode, watch, onUnmounted, nextTick } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { $ } from 'casc-cesium-utils/private/vm'\nimport { useCommon } from 'casc-cesium-composables'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport * as echarts from 'echarts'\nimport { EChartsType, EChartsOption } from 'echarts'\nimport { commonEmits } from 'casc-cesium-utils/emits'\n\nexport const echartsOverlayProps = {\n  options: {\n    type: Object as PropType<EChartsOption>,\n    required: true\n  },\n  autoHidden: {\n    type: Boolean,\n    default: true\n  },\n  customClass: String,\n  coordinateSystem: {\n    type: String,\n    default: 'cesium'\n  }\n}\nconst emits = {\n  ...commonEmits,\n  mouseenter: (evt: MouseEvent) => true,\n  mouseleave: (evt: MouseEvent) => true,\n  click: (evt: MouseEvent) => true\n}\nexport default defineComponent({\n  name: 'VcOverlayEcharts',\n  props: echartsOverlayProps,\n  emits: ['beforeLoad', 'ready', 'destroyed', 'mouseenter', 'mouseleave', 'click'],\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverlayEcharts'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const canRender = ref(false)\n    const rootRef = ref<HTMLElement>(null!)\n    const rootStyle = reactive<CSSProperties>({\n      left: '0px',\n      top: '0px',\n      pointerEvents: 'none',\n      position: 'absolute'\n    })\n    let chart: EChartsType\n    const visible = ref(true)\n    // watcch\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => props.options,\n        val => {\n          commonState.reload()\n        }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      return $(rootRef)\n    }\n    instance.mount = async () => {\n      const { viewer } = $services\n      canRender.value = true\n\n      nextTick(() => {\n        echarts.registerCoordinateSystem(props.coordinateSystem, getE3CoordinateSystem(viewer))\n        chart = echarts.init($(rootRef))\n        setCharts()\n        viewer.scene.postRender.addEventListener(onPreRender)\n      })\n\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      viewer.scene.postRender.removeEventListener(onPreRender)\n      canRender.value = false\n      return true\n    }\n\n    const onPreRender = () => {\n      if (visible.value) {\n        const { viewer } = $services\n        chart.resize({\n          width: viewer.canvas.width,\n          height: viewer.canvas.height\n        })\n      }\n    }\n\n    const setCharts = () => {\n      if (visible.value && props.options) {\n        chart.setOption(props.options)\n      }\n    }\n    const getE3CoordinateSystem = (viewer: Cesium.Viewer) => {\n      const CoordSystem = function CoordSystem(this: any, viewer) {\n        this.viewer = viewer\n        this._mapOffset = [0, 0]\n      }\n\n      CoordSystem.create = function (ecModel) {\n        ecModel.eachSeries(function (seriesModel) {\n          if (seriesModel.get('coordinateSystem') === props.coordinateSystem) {\n            seriesModel.coordinateSystem = new CoordSystem(viewer)\n          }\n        })\n        return []\n      }\n\n      CoordSystem.getDimensionsInfo = function () {\n        return ['x', 'y']\n      }\n\n      CoordSystem.dimensions = ['x', 'y']\n      CoordSystem.prototype.dimensions = ['x', 'y']\n      CoordSystem.prototype.setMapOffset = function setMapOffset(mapOffset) {\n        this._mapOffset = mapOffset\n      }\n      CoordSystem.prototype.dataToPoint = function (data) {\n        const result = []\n        const cartesian3 = Cesium.Cartesian3.fromDegrees(data[0], data[1])\n        if (!cartesian3) {\n          return result\n        }\n\n        if (props.autoHidden) {\n          const up = Cesium.Ellipsoid.WGS84.geodeticSurfaceNormal(cartesian3, new Cesium.Cartesian3())\n          const cd = this.viewer.camera.direction\n          if (Cesium.Cartesian3.dot(up, cd) >= 0) {\n            return result\n          }\n        }\n\n        const coords = this.viewer.scene.cartesianToCanvasCoordinates(cartesian3)\n        if (!coords) {\n          return result\n        }\n        return [coords.x - this._mapOffset[0], coords.y - this._mapOffset[1]]\n      }\n      CoordSystem.prototype.pointToData = function (pt) {\n        const mapOffset = this._mapOffset\n        const ellipsoid = viewer.scene.globe.ellipsoid\n        const car3 = new Cesium.Cartesian3(pt[1] + mapOffset[1], pt[2] + mapOffset[2], 0)\n        const cart = ellipsoid.cartesianToCartographic(car3)\n        return cart ? [cart.longitude, cart.latitude] : [0, 0]\n      }\n      CoordSystem.prototype.getviewerRect = function () {\n        const canvas = this.viewer.canvas\n        return new echarts.graphic.BoundingRect(0, 0, canvas.width, canvas.height)\n      }\n      CoordSystem.prototype.getRoamTransform = function () {\n        return echarts.matrix.create()\n      }\n\n      return CoordSystem\n    }\n\n    const renderContent = () => {\n      if (canRender.value) {\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: `vc-echart-container${props.customClass ? ' ' + props.customClass : ''}`,\n            style: rootStyle,\n            onMouseenter: onMouseenter,\n            onMouseleave: onMouseleave,\n            onClick: onClick\n          },\n          hSlot(ctx.slots.default)\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n\n    const onClick = evt => {\n      ctx.emit('click', evt)\n    }\n\n    const onMouseenter = evt => {\n      ctx.emit('mouseenter', evt)\n    }\n\n    const onMouseleave = evt => {\n      ctx.emit('mouseleave', evt)\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () => renderContent()\n  }\n})\n\nexport type VcOverlayEchartsEmits = typeof emits\nexport interface VcOverlayEchartsProps {\n  /**\n   * Specify the configuration items of the Echarts.\n   */\n  options: EChartsOption\n  /**\n   * Specify whether Echart elements are automatically hidden when they are on the back of the viewer.\n   * Default value: true\n   */\n  autoHidden?: boolean\n  /**\n   * Specify div class of echart.\n   */\n  customClass?: string\n  /**\n   * Specify the name of the custom coordinate system when Echart is initialized.\n   * Default value: cesium\n   */\n  coordinateSystem?: string\n  /**\n   * Triggers before the VcOverlayEcharts is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcOverlayEcharts is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcOverlayEcharts is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcOverlayEchartsRef = VcComponentPublicInstance<VcOverlayEchartsProps>\n"],"names":[],"mappings":"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"}