{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/overlays/typhoon/index.ts"],"sourcesContent":["import type { PropType, VNode } from 'vue'\nimport { defineComponent, getCurrentInstance, ref, h, reactive } from 'vue'\nimport type {\n  VcAppearance,\n  VcCartesian3Array,\n  VcColor,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcPickEvent,\n  VcPosition,\n  VcReadyObject,\n  VcTyphoonDatasource,\n  VcTyphoonPoint,\n  VcTyphoonRoute\n} from '@vue-cesium/utils/types'\nimport { useLocale } from '@vue-cesium/composables'\nimport { makeCartesian3Array } from '@vue-cesium/utils/cesium-helpers'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport {\n  VcCollectionLabel,\n  VcCollectionPoint,\n  VcCollectionPrimitive,\n  VcCollectionPrimitiveRef,\n  VcLabelProps,\n  VcPointProps,\n  VcPolygon\n} from '@vue-cesium/components/primitive-collections'\nimport { cloneDeep, uniqWith } from 'lodash-es'\nimport useLog from '@vue-cesium/composables/private/use-log'\nimport { VcPrimitive, VcPrimitiveProps } from '@vue-cesium/components/primitives'\nimport { VcGeometryInstance } from '@vue-cesium/components/geometry-instance'\nimport { VcGeometryPolyline, VcGeometryPolylineProps } from '@vue-cesium/components/geometries'\nimport VcOverlayHtml from '@vue-cesium/components/overlays/html'\nimport circle from '@turf/circle'\nimport { deepMerge } from '@vue-cesium/utils/util'\nimport { useCommon } from '@vue-cesium/composables'\n\nconst defaultPointProps = {\n  color: '#409eff',\n  pixelSize: 8,\n  outlineColor: 'rgba(0,0,0,0.6)',\n  outlineWidth: 1,\n  disableDepthTestDistance: Number.POSITIVE_INFINITY\n}\n\nconst defaultLinePrimitiveProps = {\n  enableMouseEvent: false,\n  asynchronous: false,\n  allowPicking: true\n}\n\nconst defaultLineGeometryProps = {\n  width: 2.0,\n  show: true\n}\n\nconst defaultLabelProps = {\n  pixelOffset: [20, 0],\n  showBackground: true,\n  backgroundColor: 'rgba(0,0,0,1)',\n  enableMouseEvent: false\n}\n\nexport const typhoonOverlayProps = {\n  typhoonRoutes: {\n    type: Array as PropType<VcTyphoonRoute[]>\n  },\n  clampToGround: {\n    type: Boolean,\n    default: false\n  },\n  radius7Color: {\n    type: String,\n    default: 'rgba(68, 255, 230, 0.3)'\n  },\n  radius10Color: {\n    type: String,\n    default: 'rgba(32, 237, 39, 0.3)'\n  },\n  radius12Color: {\n    type: String,\n    default: 'rgba(255, 247, 16, 0.3)'\n  },\n  pointProps: {\n    type: [Object, Function] as PropType<VcPointProps | ((e: VcTyphoonPoint) => VcPointProps)>,\n    default: () => defaultPointProps\n  },\n  linePrimitiveProps: {\n    type: [Object, Function] as PropType<VcPrimitiveProps | ((e: VcTyphoonDatasource) => VcPrimitiveProps)>,\n    default: () => defaultLinePrimitiveProps\n  },\n  lineGeometryProps: {\n    type: [Object, Function] as PropType<VcGeometryPolylineProps | ((e: VcTyphoonDatasource) => VcGeometryPolylineProps)>,\n    default: () => defaultLineGeometryProps\n  },\n  labelProps: {\n    type: [Object, Function] as PropType<VcLabelProps | ((e: VcTyphoonDatasource) => VcLabelProps)>,\n    default: () => defaultLabelProps\n  },\n  circleOverlayPosition: {\n    type: [String, Function] as PropType<string | ((e: VcTyphoonPoint) => string)>,\n    default: '-175px'\n  },\n  setsArray: {\n    type: Array as PropType<string[]>,\n    default: () => ['中央台', '日本', '美国', '韩国', '中国香港']\n  }\n}\nconst emits = {\n  ...commonEmits,\n  mouseover: (e: VcPickEvent) => true,\n  mouseout: (e: VcPickEvent) => true,\n  click: (e: VcPickEvent) => true,\n  clickout: (e: VcPickEvent) => true,\n  forecastRouteAdded: (e: { livePoint: VcTyphoonPoint; datasource: VcTyphoonDatasource; addedByClick: boolean }) => true\n}\n\nexport default defineComponent({\n  name: 'VcOverlayTyphoon',\n  props: typhoonOverlayProps,\n  emits: emits,\n  setup(props: VcOverlayTyphoonProps, ctx) {\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverlayTyphoon'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n\n    const { $services } = commonState\n    const logger = useLog(instance as VcComponentInternalInstance)\n    const { t } = useLocale()\n    const primitiveCollectionRef = ref<VcCollectionPrimitiveRef>(null)\n    const typhoonDatasources: VcTyphoonDatasource[] = reactive([])\n\n    instance.createCesiumObject = async () => {\n      return primitiveCollectionRef\n    }\n\n    const addTyphoonPath = (index: number, datasource: VcTyphoonDatasource) => {\n      datasource.playIndex = index\n      const point = datasource.typhoonRoute.points[index]\n      point.type = 'live'\n      point.index = index\n      point.tfbh = datasource.name\n\n      const position = [point.lng, point.lat]\n      datasource.positions.push(position)\n\n      const pointProps = typeof props.pointProps === 'function' ? deepMerge(cloneDeep(defaultPointProps), props.pointProps(point)) : props.pointProps\n      datasource.points.push({\n        id: point.id || Cesium.createGuid(),\n        position,\n        onMouseover(evt: VcPickEvent) {\n          ctx.emit('mouseover', evt)\n        },\n        onMouseout(evt) {\n          ctx.emit('mouseout', evt)\n        },\n        onClick(evt) {\n          showForecast(point, datasource, index, true)\n          datasource.playIndex = point.index\n          ctx.emit('click', evt)\n        },\n        onClickout(evt) {\n          ctx.emit('clickout', evt)\n        },\n        ...pointProps,\n        ...point\n      })\n      const lastPoint = datasource.points[index]\n      lastPoint && datasource.colors.push(lastPoint.color)\n      // 最后一个实况点，展示预报路径   如最后一个点没有预报路径则显示最新一个点的预报路径\n      if (index === datasource.typhoonRoute.points.length - 1) {\n        showForecast(point, datasource, index)\n      }\n    }\n    const playTyphoonRoute = (tfbh: string) => {\n      const typhoonDatasourceIndex = typhoonDatasources.findIndex(datasource => datasource.name === tfbh)\n      if (typhoonDatasourceIndex >= 0) {\n        let index = 0\n        const datasource = typhoonDatasources[typhoonDatasourceIndex] as VcTyphoonDatasource\n        datasource.points.length = 0\n        datasource.positions.length = 0\n        const typhoonData = datasource.typhoonRoute\n        addTyphoonPath(index, datasource)\n\n        cancelAnimationFrame(datasource.playInterval)\n        const animation = () => {\n          index++\n          if (index >= typhoonData.points.length) {\n            cancelAnimationFrame(datasource.playInterval)\n          } else {\n            addTyphoonPath(index, datasource)\n          }\n\n          datasource.playInterval = requestAnimationFrame(animation)\n        }\n        datasource.playInterval = requestAnimationFrame(animation)\n      } else {\n        // logger.warn('播放台风失败，原因：未找到对应编号的台风数据。')\n        logger.warn(t(`vc.typhoon.warn`) || '播放台风失败，原因：未找到对应编号的台风数据。')\n      }\n    }\n\n    const showForecast = (livePoint: VcTyphoonPoint, datasource: VcTyphoonDatasource, index?: number, fromClick = false) => {\n      // 1. 删除预报数据\n      datasource.children.length = 0\n      // 2. 添加预报\n      let forecast = fromClick ? livePoint.forecast || [] : []\n      if (!fromClick) {\n        for (let i = 0; i < props.setsArray.length; i++) {\n          const f = (livePoint, index) => {\n            const forecastRaw: Array<any> = livePoint?.forecast || []\n            forecast.push(...forecastRaw)\n\n            if (fromClick) {\n              return\n            }\n\n            forecast = uniqWith(forecast, (a: any, b) => a.sets === b.sets)\n\n            const sets = props.setsArray[i]\n            const setsIndex = forecast.findIndex(v => v.sets === sets)\n\n            if (setsIndex > -1) {\n              if (!forecast[setsIndex].unshifted) {\n                forecast[setsIndex].points.unshift({\n                  lat: livePoint.lat,\n                  lng: livePoint.lng\n                } as any)\n                forecast[setsIndex].unshifted = true\n              }\n\n              // continue\n            } else if (index > 0) {\n              const preLivePoint = datasource.typhoonRoute.points[index - 1]\n              f(preLivePoint, index - 1)\n            }\n          }\n\n          f(livePoint, index)\n        }\n      }\n\n      if (!forecast || forecast.length <= 0) {\n        return\n      }\n      // let newForecast = []\n      // newForecast = forecast.filter(point => {\n      //   return point.sets !== '英国'\n      // })\n      for (let i = 0; i < forecast.length; i++) {\n        // 预报机构数据\n        const typhoonRouteBySet = forecast[i]\n\n        const points: VcTyphoonPoint[] = []\n        const positions: VcPosition[] = []\n        const datasourceBySet: VcTyphoonDatasource = {\n          name: datasource.name + '_' + typhoonRouteBySet.sets,\n          typhoonRoute: typhoonRouteBySet,\n          show: true,\n          positions,\n          points,\n          type: 'forc'\n        }\n        datasource.children.push(datasourceBySet)\n        typhoonRouteBySet.points.forEach((point, index) => {\n          const position = [point.lng, point.lat]\n          datasourceBySet.positions.push(position)\n\n          if (index === 0 && fromClick) {\n            datasourceBySet.positions.unshift([livePoint.lng, livePoint.lat])\n          }\n\n          point.sets = typhoonRouteBySet.sets\n          point.type = 'forc'\n          point.index = index\n          const pointProps = typeof props.pointProps === 'function' ? props.pointProps(point) : props.pointProps\n          index !== 0 &&\n            datasourceBySet.points.push({\n              id: point.id || Cesium.createGuid(),\n              position,\n              onMouseover(evt: VcPickEvent) {\n                ctx.emit('mouseover', evt)\n              },\n              onMouseout(evt) {\n                ctx.emit('mouseout', evt)\n              },\n              onClick(evt) {\n                ctx.emit('click', evt)\n              },\n              ...pointProps,\n              ...point\n            })\n        })\n      }\n\n      ctx.emit('forecastRouteAdded', {\n        livePoint,\n        datasource,\n        addedByClick: fromClick\n      })\n    }\n\n    const addTyphoonRoute = (typhoonRoute: VcTyphoonRoute) => {\n      const points: VcTyphoonPoint[] = []\n      const positions: VcPosition[] = []\n      const typhoonDatasource: VcTyphoonDatasource = {\n        name: typhoonRoute.tfbh,\n        typhoonRoute,\n        show: true,\n        positions,\n        points,\n        children: [],\n        colors: [],\n        type: 'live'\n      }\n\n      typhoonDatasources.push(typhoonDatasource)\n\n      playTyphoonRoute(typhoonRoute.tfbh)\n\n      return typhoonDatasource\n    }\n\n    const flyToTyphoonRoute = (\n      typhoon: string | Array<string>,\n      options?: {\n        duration?: number\n        offset?: Cesium.HeadingPitchRange\n        complete?: Cesium.Camera.FlightCompleteCallback\n        cancel?: Cesium.Camera.FlightCancelledCallback\n        endTransform?: Cesium.Matrix4\n        maximumHeight?: number\n        pitchAdjustHeight?: number\n        flyOverLongitude?: number\n        flyOverLongitudeWeight?: number\n        easingFunction?: Cesium.EasingFunction.Callback\n      }\n    ) => {\n      const names = []\n      if (typeof typhoon === 'string') {\n        names.push(typhoon)\n      } else {\n        names.push(...typhoon)\n      }\n      let boundingSphereUnion = null\n      names.forEach(name => {\n        const positions = []\n        const typhoonDatasource = typhoonDatasources.find(v => v.name === name)\n        if (typhoonDatasource && typhoonDatasource.typhoonRoute.points) {\n          typhoonDatasource.typhoonRoute.points.forEach(point => {\n            positions.push([point.lng, point.lat])\n          })\n        }\n\n        // 预报路径点\n        if (typhoonDatasource?.children?.length) {\n          typhoonDatasource.children.forEach(v => {\n            v.typhoonRoute.points.forEach(point => {\n              positions.push([point.lng, point.lat])\n            })\n          })\n        }\n\n        const cartesian3Array = makeCartesian3Array(positions)\n        const boundingSphere = Cesium.BoundingSphere.fromPoints(cartesian3Array as Cesium.Cartesian3[])\n        if (null === boundingSphereUnion) {\n          boundingSphereUnion = boundingSphere\n        } else {\n          boundingSphereUnion = Cesium.BoundingSphere.union(boundingSphereUnion, boundingSphere)\n        }\n      })\n\n      $services.viewer.camera.flyToBoundingSphere(new Cesium.BoundingSphere(boundingSphereUnion.center, boundingSphereUnion.radius), {\n        ...options\n      })\n    }\n\n    const removeTyphoonData = (datasource: VcTyphoonDatasource) => {\n      const index = typhoonDatasources.indexOf(datasource)\n      if (index >= 0) {\n        clearInterval(datasource.playInterval)\n        typhoonDatasources.splice(index, 1)\n      }\n    }\n\n    const removeAllTyphoonData = () => {\n      typhoonDatasources.forEach(datasource => {\n        clearInterval(datasource.playInterval)\n      })\n      typhoonDatasources.length = 0\n    }\n\n    const getTyphoonCirclePostions = (center: VcPosition, radiusData) => {\n      let positions: VcPosition[] = []\n      if (typeof radiusData === 'number') {\n        positions = circle(center as number[], radiusData * 1000, {\n          units: 'meters'\n        }).geometry.coordinates as unknown as VcPosition[]\n      } else if (radiusData['ne']) {\n        const _angInterval = 6\n        const _pointNums = 360 / (_angInterval * 4)\n        const quadrant = {\n          // 逆时针算角度\n          '0': 'ne',\n          '1': 'nw',\n          '2': 'sw',\n          '3': 'se'\n        }\n        for (let i = 0; i < 4; i++) {\n          let _r = parseFloat(radiusData[quadrant[i]]) * 1000 // 单位是km\n          if (!_r) _r = 0\n          for (let j = i * _pointNums; j <= (i + 1) * _pointNums; j++) {\n            const _ang = _angInterval * j\n            const x: number = center[0] + (_r * Math.cos((_ang * Math.PI) / 180)) / 111000\n            const y: number = center[1] + (_r * Math.sin((_ang * Math.PI) / 180)) / 111000\n            positions.push([x, y])\n          }\n        }\n      }\n      return positions as VcCartesian3Array\n    }\n\n    const getChildren = (datasources: VcTyphoonDatasource[], centerPointCircle: VNode[]) => {\n      const children: Array<VNode> = []\n      datasources.forEach(typhoonDatasource => {\n        // polyline 台风路径-线\n        if (typhoonDatasource.positions.length > 1) {\n          const linePrimitiveProps: any =\n            typeof props.linePrimitiveProps === 'function'\n              ? deepMerge(cloneDeep(defaultLinePrimitiveProps), props.linePrimitiveProps(typhoonDatasource))\n              : props.linePrimitiveProps\n\n          const lineGeometryProps =\n            typeof props.lineGeometryProps === 'function'\n              ? deepMerge(cloneDeep(defaultLineGeometryProps), props.lineGeometryProps(typhoonDatasource))\n              : props.lineGeometryProps\n\n          children.push(\n            h(\n              VcPrimitive,\n              {\n                show: typhoonDatasource.show,\n                appearance: {\n                  type: typhoonDatasource.type === 'live' ? 'PolylineColorAppearance' : 'PolylineMaterialAppearance',\n                  options: {\n                    material:\n                      typhoonDatasource.type === 'live'\n                        ? undefined\n                        : {\n                            fabric: {\n                              type: 'PolylineDash',\n                              uniforms: {\n                                color: '#000000'\n                              }\n                            }\n                          },\n                    translucent: true\n                  }\n                } as VcAppearance,\n                onMouseover: evt => {\n                  ctx.emit('mouseover', evt)\n                },\n                onMouseout: evt => {\n                  ctx.emit('mouseout', evt)\n                },\n                onClick: evt => {\n                  ctx.emit('click', evt)\n                },\n                onClickout: evt => {\n                  ctx.emit('clickout', evt)\n                },\n                ...linePrimitiveProps\n              },\n              () =>\n                h(\n                  VcGeometryInstance,\n                  {\n                    id: typhoonDatasource.name || Cesium.createGuid()\n                  },\n                  () =>\n                    h(VcGeometryPolyline, {\n                      positions: makeCartesian3Array(typhoonDatasource.positions as VcCartesian3Array),\n                      colors: typhoonDatasource.colors,\n                      ...lineGeometryProps\n                    })\n                )\n            )\n          )\n        }\n        // points 台风路径-点\n        typhoonDatasource.points.length &&\n          children.push(\n            h(VcCollectionPoint, {\n              show: typhoonDatasource.show,\n              points: typhoonDatasource.points,\n              onReady: (e: VcReadyObject) => {\n                const { cesiumObject: pointPrimitiveCollection } = e as any\n                const originalUpdate = pointPrimitiveCollection.update\n\n                pointPrimitiveCollection.update = function (frameState) {\n                  const originalLength = frameState.commandList.length\n                  originalUpdate.call(this, frameState)\n                  const endLength = frameState.commandList.length\n                  for (let i = originalLength; i < endLength; ++i) {\n                    frameState.commandList[i].pass = Cesium['Pass'].TRANSLUCENT\n                    frameState.commandList[i].renderState = Cesium['RenderState'].fromCache({\n                      depthTest: {\n                        enabled: false\n                      },\n                      depthMask: false\n                    })\n                  }\n                }\n              }\n            })\n          )\n\n        // polygon 台风风圈\n        if (typhoonDatasource.type === 'live') {\n          const labelProps =\n            typeof props.labelProps === 'function' ? deepMerge(cloneDeep(defaultLabelProps), props.labelProps(typhoonDatasource)) : props.labelProps\n\n          //text   台风名字\n          children.push(\n            h(VcCollectionLabel, {\n              show: typhoonDatasource.show,\n              enableMouseEvent: false,\n              labels: [\n                {\n                  text: typhoonDatasource.typhoonRoute.name,\n                  position: typhoonDatasource.positions[0],\n                  ...labelProps\n                } as VcLabelProps\n              ]\n            })\n          )\n\n          const point = typhoonDatasource.points[typhoonDatasource.playIndex]\n          centerPointCircle.length =\n            // 旋转图形\n            centerPointCircle.push(\n              h(VcOverlayHtml, { show: typhoonDatasource.show, position: point.position, autoHidden: true }, () =>\n                h('div', {\n                  class: 'vc-typhoon-circle',\n                  style: {\n                    backgroundPosition:\n                      typeof props.circleOverlayPosition == 'function' ? props.circleOverlayPosition(point) : props.circleOverlayPosition\n                  }\n                })\n              )\n            )\n          // 7 级风圈\n          if (point?.radius7 > 0) {\n            children.push(\n              h(VcPolygon, {\n                show: typhoonDatasource.show,\n                positions: getTyphoonCirclePostions(point.position, point.radius7_quad),\n                clampToGround: props.clampToGround,\n                asynchronous: false,\n                allowPicking: false,\n                enableMouseEvent: false,\n                classificationType: 2,\n                appearance: {\n                  type: 'MaterialAppearance',\n                  options: {\n                    material: {\n                      fabric: {\n                        type: 'Color',\n                        uniforms: {\n                          color: props.radius7Color\n                        }\n                      }\n                    }\n                  }\n                } as VcAppearance,\n                onReady: onVcPolygonReady\n              })\n            )\n          }\n          // 10 级风圈\n          if (point?.radius10 > 0) {\n            children.push(\n              h(VcPolygon, {\n                show: typhoonDatasource.show,\n                positions: getTyphoonCirclePostions(point.position, point.radius10_quad),\n                clampToGround: props.clampToGround,\n                asynchronous: false,\n                allowPicking: false,\n                enableMouseEvent: false,\n                classificationType: 2,\n                appearance: {\n                  type: 'MaterialAppearance',\n                  options: {\n                    material: {\n                      fabric: {\n                        type: 'Color',\n                        uniforms: {\n                          color: props.radius10Color\n                        }\n                      }\n                    }\n                  }\n                } as VcAppearance,\n                onReady: onVcPolygonReady\n              })\n            )\n          }\n          // 12 级风圈\n          if (point?.radius12 > 0) {\n            children.push(\n              h(VcPolygon, {\n                show: typhoonDatasource.show,\n                positions: getTyphoonCirclePostions(point.position, point.radius12_quad),\n                clampToGround: props.clampToGround,\n                asynchronous: false,\n                allowPicking: false,\n                enableMouseEvent: false,\n                classificationType: 2,\n                appearance: {\n                  type: 'MaterialAppearance',\n                  options: {\n                    material: {\n                      fabric: {\n                        type: 'Color',\n                        uniforms: {\n                          color: props.radius12Color\n                        }\n                      }\n                    }\n                  }\n                } as VcAppearance,\n                onReady: onVcPolygonReady\n              })\n            )\n          }\n        }\n\n        if (typhoonDatasource.children) {\n          children.push(...getChildren(typhoonDatasource.children, centerPointCircle))\n        }\n      })\n\n      return children\n    }\n\n    const onVcPolygonReady = e => {\n      const primitive = e.cesiumObject as any\n      const originalPrimitiveUpdate = primitive.update\n\n      primitive.update = function (frameState) {\n        const originalLength = frameState.commandList.length\n        originalPrimitiveUpdate.call(this, frameState)\n        const endLength = frameState.commandList.length\n        for (let i = originalLength; i < endLength; ++i) {\n          if (frameState.commandList[i].pass !== Cesium['Pass'].TRANSLUCENT) {\n            continue\n          }\n          frameState.commandList[i].pass = Cesium['Pass'].OPAQUE\n          frameState.commandList[i].renderState = Cesium['RenderState'].fromCache({\n            depthTest: {\n              enabled: false\n            },\n            depthMask: false,\n            blending: Cesium.BlendingState.ALPHA_BLEND\n          })\n        }\n      }\n    }\n\n    Object.assign(instance.proxy, {\n      addTyphoonRoute,\n      playTyphoonRoute,\n      flyToTyphoonRoute,\n      showForecast,\n      removeTyphoonData,\n      removeAllTyphoonData,\n      getTyphoonDatasources: () => typhoonDatasources\n    })\n\n    props.typhoonRoutes.forEach(typhoonData => {\n      addTyphoonRoute(typhoonData)\n    })\n\n    return () => {\n      const centerPointCircle: VNode[] = []\n      const children = getChildren(typhoonDatasources, centerPointCircle)\n      return [\n        h(\n          VcCollectionPrimitive,\n          {\n            ref: primitiveCollectionRef,\n            show: true\n            // onReady: e => {\n            //   ctx.emit('ready', e)\n            // }\n          },\n          () => children\n        ),\n        ...centerPointCircle\n      ]\n    }\n  }\n})\n\nexport type VcOverlayTyphoonEmits = typeof emits\nexport interface VcOverlayTyphoonProps {\n  /**\n   * Specify the routes of typhoon.\n   */\n  typhoonRoutes?: VcTyphoonRoute[]\n  /**\n   * Specify whether the route object is attached to the ground or 3dtiles.\n   */\n  clampToGround?: boolean\n  /**\n   * Specify the color of radius7.\n   * Default value: rgba(68, 255, 230, 0.3)\n   */\n  radius7Color?: VcColor\n  /**\n   * Specify the color of radius10.\n   * Default value: rgba(32, 237, 39, 0.3)\n   */\n  radius10Color?: VcColor\n  /**\n   * Specify the color of radius12.\n   * Default value: rgba(255, 247, 16, 0.3)\n   */\n  radius12Color?: VcColor\n  /**\n   * Specify the props of point.\n   */\n  pointProps?: VcPointProps | ((e: VcTyphoonPoint) => VcPointProps)\n  /**\n   * Specify the props of line primitive.\n   */\n  linePrimitiveProps?: VcPrimitiveProps | ((e: VcTyphoonDatasource) => VcPrimitiveProps)\n  /**\n   * Specify the props of line geometry.\n   */\n  lineGeometryProps?: VcGeometryPolylineProps | ((e: VcTyphoonDatasource) => VcGeometryPolylineProps)\n  /**\n   * Specify the props of typhoon name label.\n   */\n  labelProps?: VcLabelProps | ((e: VcTyphoonDatasource) => VcLabelProps)\n  /**\n   * Specify the position of the background map of the typhoon wind circle.\n   * Default value: '-175px'\n   */\n  circleOverlayPosition?: string | ((e: VcTyphoonPoint) => string)\n  /**\n   * Specify the forecasting agency.\n   */\n  setsArray?: string[]\n  /**\n   * Triggers before the VcOverlayHtml is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcOverlayHtml is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (evt: any) => void\n  /**\n   * Triggers when the VcOverlayHtml is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the mouse moves over to the typhoon object.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out to the typhoon object.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on the typhoon object.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside the typhoon object.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the forecast route is added.\n   */\n  onForecastRouteAdded?: (e: { livePoint: VcTyphoonPoint; datasource: VcTyphoonDatasource; addedByClick: boolean }) => void\n}\n\nexport interface VcOverlayTyphoonRef extends VcComponentPublicInstance<VcOverlayTyphoonProps> {\n  /**\n   * Add typhoon track data.\n   * @param typhoonRoute\n   * @returns\n   */\n  addTyphoonRoute: (typhoonRoute: VcTyphoonRoute) => VcTyphoonDatasource\n  /**\n   * Play typhoon route data.\n   * @param tfbh\n   * @returns\n   */\n  playTyphoonRoute: (tfbh: string) => void\n  /**\n   * Fly to typhoon route data.\n   * @param tfbhs\n   * @returns\n   */\n  flyToTyphoonRoute: (tfbhs: string | string[]) => void\n  /**\n   * Shows the forecast typhoon track of the live point.\n   * @param livePoint\n   * @param datasource\n   * @param index\n   * @param fromClick\n   * @returns\n   */\n  showForecast: (livePoint: VcTyphoonPoint, datasource: VcTyphoonDatasource, index?: number, fromClick?: boolean) => void\n  /**\n   * Remove typhoon track data.\n   * @param datasource\n   * @returns\n   */\n  removeTyphoonData: (datasource: VcTyphoonDatasource) => void\n  /**\n   * Remove all typhoon track data.\n   * @returns\n   */\n  removeAllTyphoonData: () => void\n  /**\n   * Get all typhoon track data.\n   * @returns\n   */\n  getTyphoonDatasources: () => VcTyphoonDatasource[]\n}\n"],"names":["livePoint","index","VcOverlayHtml"],"mappings":"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"}