{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/status-bar/index.ts"],"sourcesContent":["import type { VNode, CSSProperties } from 'vue'\nimport { defineComponent, getCurrentInstance, nextTick, ref, reactive, h, createCommentVNode, watch } from 'vue'\nimport { $, getInstanceListener, getVcParentInstance } from 'casc-cesium-utils/private/vm'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport type { VcStatusBarEvt, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport MouseCoords, { extendForMouseCoords } from './MouseCoords'\nimport throttle from 'casc-cesium-utils/private/throttle'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport type { VcBtnRef, VcTooltipRef } from 'casc-cesium-components/ui'\nimport { VcBtn, VcTooltip, VcTooltipProps } from 'casc-cesium-components/ui'\nimport defaultProps from './defaultProps'\nimport { isPlainObject } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport { heightToLevel } from 'casc-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    // 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      canRender.value = true\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        viewer.scene.debugShowFramesPerSecond = true\n        viewer.scene.postRender.addEventListener(onScenePostRender)\n      }\n\n      return new Promise((resolve, reject) => {\n        nextTick(() => {\n          if (!hasVcNavigation && props.teleportToViewer) {\n            const viewerElement = (viewer as any)._element\n            viewerElement.appendChild($(rootRef)?.$el)\n            resolve($(rootRef)?.$el)\n          } else {\n            resolve($(rootRef)?.$el)\n          }\n        })\n      })\n    }\n\n    instance.mount = async () => {\n      updateRootStyle()\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      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 (viewer.scene._performanceDisplay) {\n          viewer.scene._performanceDisplay._container.style.display = 'block'\n        }\n\n        viewer.scene.postRender.removeEventListener(onScenePostRender)\n      }\n\n      if (!hasVcNavigation) {\n        viewerElement.contains($(rootRef)?.$el) && viewerElement.removeChild($(rootRef)?.$el)\n      }\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)?.$el\n      })\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    }, 500)\n\n    const onCameraChanged = () => {\n      const { viewer } = $services\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        return 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      } 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"],"mappings":"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"}