{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/status-bar/index.ts"],"sourcesContent":["import { VNode, CSSProperties, Teleport } from 'vue'\nimport { defineComponent, getCurrentInstance, nextTick, ref, reactive, h, createCommentVNode, watch } from 'vue'\nimport { $, getInstanceListener, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport type { VcStatusBarEvt, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport MouseCoords, { extendForMouseCoords } from './MouseCoords'\nimport throttle from '@vue-cesium/utils/private/throttle'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport type { VcBtnRef, VcTooltipRef } from '@vue-cesium/components/ui'\nimport { VcBtn, VcTooltip, VcTooltipProps } from '@vue-cesium/components/ui'\nimport defaultProps from './defaultProps'\nimport { isPlainObject } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport { heightToLevel } from '@vue-cesium/utils/cesium-helpers'\n\nconst emits = {\n  ...commonEmits,\n  statusBarEvt: (evt: VcStatusBarEvt) => true\n}\nexport const statusBarProps = defaultProps\nexport default defineComponent({\n  name: 'VcStatusBar',\n  props: statusBarProps,\n  emits: emits,\n  setup(props: VcStatusBarProps, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcStatusBar'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const parentInstance = getVcParentInstance(instance)\n    const { $services } = commonState\n    const rootRef = ref<VcBtnRef>(null)\n    const tooltipRef = ref<VcTooltipRef>(null)\n    const { t } = useLocale()\n\n    let lastMouseX = -1\n    let lastMouseY = -1\n    const cameraInfo = reactive({\n      heading: 'NaN',\n      pitch: 'NaN',\n      roll: 'NaN',\n      height: 'NaN',\n      level: 'NaN'\n    })\n    const performanceInfo = reactive({\n      fps: 'NaN',\n      ms: 'NaN'\n    })\n    const mouseCoordsInfo = ref<MouseCoords>()\n    const positionState = usePosition(props, $services)\n    const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n    const canRender = ref(hasVcNavigation)\n    const rootStyle = reactive<CSSProperties>({})\n    let debugShowFramesPerSecond = false\n    // watch\n    watch(\n      () => props,\n      val => {\n        nextTick(() => {\n          if (!instance.mounted) {\n            return\n          }\n          updateRootStyle()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    // methods\n    instance.createCesiumObject = async () => {\n      const { viewer } = $services\n\n      const viewerElement = (viewer as any)._element as HTMLElement\n\n      if (props.showMouseInfo) {\n        mouseCoordsInfo.value = new MouseCoords({\n          gridFileUrl: props.gridFileUrl,\n          proj4Projection: props.proj4Projection,\n          projectionUnits: props.projectionUnits,\n          proj4longlat: props.proj4longlat,\n          decimal: props.decimal,\n          rangeType: props.rangeType\n        })\n\n        viewerElement.addEventListener('wheel', onMouseMove, false)\n        viewerElement.addEventListener('mousemove', onMouseMove, false)\n        viewerElement.addEventListener('touchmove', onMouseMove, false)\n        extendForMouseCoords()\n      }\n\n      if (props.showCameraInfo) {\n        viewer.camera.changed.addEventListener(onCameraChanged)\n        onCameraChanged()\n      }\n\n      if (props.showPerformanceInfo) {\n        debugShowFramesPerSecond = viewer.scene.debugShowFramesPerSecond\n        viewer.scene.debugShowFramesPerSecond = true\n        viewer.scene.postRender.addEventListener(onScenePostRender)\n      }\n\n      return rootRef\n    }\n\n    instance.mount = async () => {\n      canRender.value = true\n      nextTick(() => {\n        updateRootStyle()\n      })\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)?.$el\n      })\n      return true\n    }\n\n    instance.unmount = async () => {\n      canRender.value = false\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element as HTMLElement\n      if (props.showMouseInfo) {\n        mouseCoordsInfo.value = undefined\n        viewerElement.removeEventListener('wheel', onMouseMove)\n        viewerElement.removeEventListener('mousemove', onMouseMove)\n        viewerElement.removeEventListener('touchmove', onMouseMove)\n      }\n\n      if (props.showCameraInfo) {\n        viewer.camera.changed.removeEventListener(onCameraChanged)\n      }\n\n      if (props.showPerformanceInfo) {\n        if (debugShowFramesPerSecond) {\n          viewer.scene._performanceDisplay._container.style.display = 'block'\n        } else {\n          viewer.scene.debugShowFramesPerSecond = false\n        }\n\n        viewer.scene.postRender.removeEventListener(onScenePostRender)\n      }\n\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)?.$el\n      })\n      return true\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n\n      css.background = props.background\n      css.color = props.color\n\n      if (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\n        const side = positionState.attach.value\n        if ((side.bottom || side.top) && !side.left && !side.right) {\n          css.left = '50%'\n          css.transform = 'translate(-50%, 0)'\n        }\n\n        if ((side.left || side.right) && !side.top && !side.bottom) {\n          css.top = '50%'\n          css.transform = 'translate(0, -50%)'\n        }\n      }\n\n      Object.assign(rootStyle, css)\n    }\n\n    const onScenePostRender = throttle(scene => {\n      performanceInfo.fps = scene._performanceDisplay?._fpsText.nodeValue\n      performanceInfo.ms = scene._performanceDisplay?._msText.nodeValue\n      scene._performanceDisplay._container.style.display = 'none'\n    }, 250)\n\n    const onCameraChanged = () => {\n      const { viewer } = $services\n      const scene = viewer.scene\n      const sscc = scene.screenSpaceCameraController\n      if (scene.mode === Cesium.SceneMode.MORPHING || !sscc.enableInputs) {\n        return\n      }\n\n      const { Math: CesiumMath } = Cesium\n      cameraInfo.heading = CesiumMath.toDegrees(viewer.camera.heading).toFixed(1)\n      cameraInfo.pitch = CesiumMath.toDegrees(viewer.camera.pitch).toFixed(1)\n      cameraInfo.roll = CesiumMath.toDegrees(viewer.camera.roll).toFixed(1)\n      cameraInfo.height = viewer.camera.positionCartographic.height.toFixed(2)\n      cameraInfo.level = heightToLevel(Number(cameraInfo.height)).toFixed(0)\n    }\n\n    const onMouseMove = e => {\n      const { Cartesian2, SceneMode } = Cesium\n      const { viewer } = $services\n\n      if (viewer.scene.mode === SceneMode.MORPHING) return\n\n      const clientX = e.type === 'mousemove' || e.type === 'wheel' ? e.clientX : e.changedTouches[0].clientX\n      const clientY = e.type === 'mousemove' || e.type === 'wheel' ? e.clientY : e.changedTouches[0].clientY\n\n      if (clientX === lastMouseX && clientY === lastMouseY) {\n        return\n      }\n\n      lastMouseX = clientX\n      lastMouseY = clientY\n\n      const viewerElement = (viewer as any)._element as HTMLElement\n\n      if (viewer) {\n        if (props.showMouseInfo) {\n          const rect = viewerElement.getBoundingClientRect()\n          const position = new Cartesian2(clientX - rect.left, clientY - rect.top)\n          mouseCoordsInfo.value?.updateCoordinatesFromCesium(viewer, position)\n        }\n        const listener = getInstanceListener(instance, 'statusBarEvt')\n        listener &&\n          ctx.emit('statusBarEvt', {\n            type: 'statusBar',\n            mouseCoordsInfo: mouseCoordsInfo.value,\n            cameraInfo: cameraInfo,\n            performanceInfo: performanceInfo\n          })\n      }\n    }\n\n    const toggleUseProjection = () => {\n      if (!props.useProjection) {\n        return\n      }\n      $(tooltipRef)?.hide()\n      if (props.showMouseInfo) {\n        mouseCoordsInfo.value?.toggleUseProjection()\n      }\n    }\n\n    // expose public methods\n    Object.assign(instance.proxy, {\n      getMouseCoordsInfo: () => mouseCoordsInfo.value,\n      getCameraInfo: () => cameraInfo,\n      getPerformanceInfo: () => performanceInfo\n    })\n\n    return () => {\n      if (canRender.value) {\n        const inner: Array<VNode> = []\n        if (props.showMouseInfo) {\n          if (!mouseCoordsInfo.value?.useProjection) {\n            inner.push(\n              h(\n                'div',\n                {\n                  class: 'vc-section ellipsis'\n                },\n                [\n                  h(\n                    'span',\n                    {\n                      ...ctx.attrs\n                    },\n                    t('vc.navigation.statusBar.lng')\n                  ),\n                  h('span', {}, mouseCoordsInfo.value?.longitude)\n                ]\n              ),\n              h(\n                'div',\n                {\n                  class: 'vc-section ellipsis'\n                },\n                [h('span', {}, t('vc.navigation.statusBar.lat')), h('span', {}, mouseCoordsInfo.value?.latitude)]\n              )\n            )\n          } else {\n            inner.push(\n              h(\n                'div',\n                {\n                  class: 'vc-section-short ellipsis'\n                },\n                [\n                  h(\n                    'span',\n                    {\n                      ...ctx.attrs\n                    },\n                    t('vc.navigation.statusBar.zone')\n                  ),\n                  h('span', null, mouseCoordsInfo.value?.utmZone)\n                ]\n              ),\n              h(\n                'div',\n                {\n                  class: 'vc-section ellipsis'\n                },\n                [\n                  h(\n                    'span',\n                    {\n                      ...ctx.attrs\n                    },\n                    t('vc.navigation.statusBar.e')\n                  ),\n                  h('span', null, mouseCoordsInfo.value?.east)\n                ]\n              ),\n              h(\n                'div',\n                {\n                  class: 'vc-section ellipsis'\n                },\n                [\n                  h(\n                    'span',\n                    {\n                      ...ctx.attrs\n                    },\n                    t('vc.navigation.statusBar.n')\n                  ),\n                  h('span', null, mouseCoordsInfo.value?.north)\n                ]\n              )\n            )\n          }\n\n          if (mouseCoordsInfo.value?.elevation) {\n            inner.push(\n              h(\n                'div',\n                {\n                  class: 'vc-section ellipsis'\n                },\n                [\n                  h(\n                    'span',\n                    {\n                      ...ctx.attrs\n                    },\n                    t('vc.navigation.statusBar.elev')\n                  ),\n                  h('span', {}, mouseCoordsInfo.value?.elevation)\n                ]\n              )\n            )\n          } else {\n            inner.push(createCommentVNode('v-if'))\n          }\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        if (props.showCameraInfo) {\n          inner.push(\n            h(\n              'div',\n              {\n                class: 'vc-section-short-mini ellipsis'\n              },\n              [\n                h(\n                  'span',\n                  {\n                    ...ctx.attrs\n                  },\n                  t('vc.navigation.statusBar.level')\n                ),\n                h('span', null, cameraInfo.level)\n              ]\n            ),\n            h(\n              'div',\n              {\n                class: 'vc-section-short ellipsis'\n              },\n              [\n                h(\n                  'span',\n                  {\n                    ...ctx.attrs\n                  },\n                  t('vc.navigation.statusBar.heading')\n                ),\n                h('span', null, `${cameraInfo.heading}°`)\n              ]\n            ),\n            h(\n              'div',\n              {\n                class: 'vc-section-short ellipsis'\n              },\n              [\n                h(\n                  'span',\n                  {\n                    ...ctx.attrs\n                  },\n                  t('vc.navigation.statusBar.pitch')\n                ),\n                h('span', null, `${cameraInfo.pitch}°`)\n              ]\n            ),\n            h(\n              'div',\n              {\n                class: 'vc-section-short ellipsis'\n              },\n              [\n                h(\n                  'span',\n                  {\n                    ...ctx.attrs\n                  },\n                  t('vc.navigation.statusBar.roll')\n                ),\n                h('span', null, `${cameraInfo.roll}°`)\n              ]\n            ),\n            h(\n              'div',\n              {\n                class: 'vc-section ellipsis'\n              },\n              [\n                h(\n                  'span',\n                  {\n                    ...ctx.attrs\n                  },\n                  t('vc.navigation.statusBar.cameraHeight')\n                ),\n                h('span', null, `${cameraInfo.height}m`)\n              ]\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        if (props.showPerformanceInfo) {\n          inner.push(\n            h(\n              'div',\n              {\n                class: 'vc-section-short-mini ellipsis'\n              },\n              [h('span', null, performanceInfo.ms)]\n            ),\n            h(\n              'div',\n              {\n                class: 'vc-section-short-mini ellipsis'\n              },\n              [h('span', null, performanceInfo.fps)]\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        if (isPlainObject(props.tooltip) && props.showMouseInfo && props.useProjection) {\n          inner.push(\n            h(\n              VcTooltip,\n              {\n                ref: tooltipRef,\n                ...props.tooltip\n              },\n              () => h('strong', null, (isPlainObject(props.tooltip) && props.tooltip.tip) || t('vc.navigation.statusBar.tip'))\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        const renderContent = h(\n          VcBtn,\n          {\n            ref: rootRef,\n            class: `vc-status-bar ${positionState.classes.value} ${props.customClass}`,\n            style: rootStyle,\n            noCaps: true,\n            onClick: toggleUseProjection\n          },\n          () => inner\n        )\n\n        return !hasVcNavigation && props.teleportToViewer ? h(Teleport, { to: $services.viewer._element }, renderContent) : renderContent\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\nexport type VcStatusBarEmits = typeof emits\n\nexport interface VcStatusBarProps {\n  /**\n   * Specify the position of the VcStatusBar.\n   * Default value: bottom-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcStatusBar horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify the mouse to pick up the height model, use this to improve the accuracy of the height obtained.\n   * Default value: https://zouyaoji.top/vue-cesium/statics/SampleData/WW15MGH.DAC\n   */\n  gridFileUrl?: string\n  /**\n   * Specify the proj4 projection.\n   * Default value: +proj=utm +ellps=GRS80 +units=m +no_defs\n   */\n  proj4Projection?: string\n  /**\n   * Specify the projection units.\n   * Default value: m\n   */\n  projectionUnits?: string\n  /**\n   * Specify the proj4 longlat.\n   * Default value: +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees +no_defs\n   */\n  proj4longlat?: string\n  /**\n   * Specify the css color of the information bar.\n   * Default value: #fff\n   */\n  color?: string\n  /**\n   * Specify the latitude and longitude display range. 0: 0-180, distinguish between East and West; 1: -180-180; 2: 0-360.\n   * Default value: 1\n   */\n  rangeType?: number\n  /**\n   * Specify the number of decimal places for latitude and longitude.\n   * Default value: 5\n   */\n  decimal?: number\n  /**\n   * Specify the background of the information bar.\n   * Default value: #3f4854\n   */\n  background?: string\n  /**\n   * Specify whether to display camera information in the information bar.\n   * Default value: true\n   */\n  showCameraInfo?: boolean\n  /**\n   * Specify whether to display mouse coords information in the information bar.\n   * Default value: true\n   */\n  showMouseInfo?: boolean\n  /**\n   * Specify whether to display frame rate information in the information bar.\n   * Default value: true\n   */\n  showPerformanceInfo?: boolean\n  /**\n   * Specify whether the latitude and longitude coordinates on the information bar can be switched to UTM projected coordinates.\n   * Default value: true\n   */\n  useProjection?: boolean\n  /**\n   * The tooltip parameter.\n   */\n  tooltip?: false | VcTooltipProps\n  /**\n   * Specify the customClass of the vc-status-bar.\n   */\n  customClass?: string\n  /**\n   * Specify whether to add to the cesium-viewer node.\n   * Default value: true\n   */\n  teleportToViewer?: boolean\n  /**\n   * Triggers before the VcStatusBar is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcStatusBar 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 VcStatusBar is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the information changed.\n   */\n  onStatusBarEvt?: (evt: VcStatusBarEvt) => void\n}\n\nexport interface VcStatusBarRef extends VcComponentPublicInstance<VcStatusBarProps> {\n  /**\n   * Get the mouseCoords info.\n   */\n  getMouseCoordsInfo: () => MouseCoords\n  /**\n   * Get the camera info.\n   */\n  getCameraInfo: () => {\n    heading: string\n    pitch: string\n    roll: string\n    height: string\n    level: string\n  }\n  /**\n   * Get the performance info.\n   */\n  getPerformanceInfo: () => { fps: string; ms: string }\n}\n"],"names":["defaultProps","_a"],"mappings":"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"}