{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/vc-overview-map/index.ts"],"sourcesContent":["import type { VNode, WatchStopHandle, CSSProperties, PropType } from 'vue'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport { VcBtn, VcBtnRef, VcTooltip, VcTooltipRef } from 'casc-cesium-components/ui'\nimport { $ } from 'casc-cesium-utils/private/vm'\nimport type { VcBtnTooltipProps, VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from 'casc-cesium-utils/types'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, reactive, ref } from 'vue'\nimport VcViewer, { VcViewerProps, VcViewerRef } from 'casc-cesium-components/viewer'\nimport { hSlot } from 'casc-cesium-utils/private/render'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport { makeColor } from 'casc-cesium-utils/cesium-helpers'\n\nexport const overviewProps = {\n  position: {\n    type: String as PropType<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'>,\n    default: 'bottom-right',\n    validator: (v: string) => ['top-right', 'top-left', 'bottom-right', 'bottom-left'].includes(v)\n  },\n  offset: {\n    type: Array,\n    validator: (v: Array<string>) => v.length === 2\n  },\n  width: {\n    type: String,\n    default: '150px'\n  },\n  height: {\n    type: String,\n    default: '150px'\n  },\n  border: {\n    type: String,\n    default: 'solid 4px rgb(255, 255, 255)'\n  },\n  borderRadius: {\n    type: String\n  },\n  toggleOpts: {\n    type: Object as PropType<VcBtnTooltipProps>\n  },\n  viewerOpts: {\n    type: Object as PropType<VcViewerProps>\n  },\n  centerRectColor: {\n    type: [Object, Array, String] as PropType<VcColor>,\n    default: '#ff000080'\n  },\n  widthFactor: {\n    type: Number,\n    default: 2\n  },\n  heightFactor: {\n    type: Number,\n    default: 2\n  },\n  modelValue: {\n    type: Boolean,\n    default: true\n  }\n}\nexport default defineComponent({\n  name: 'VcOverviewMap',\n  props: overviewProps,\n  emits: {\n    ...commonEmits,\n    'update:modelValue': (value: boolean) => true\n  },\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverviewMap'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { t } = useLocale()\n    const { $services } = commonState\n    const rootRef = ref<HTMLElement>(null)\n    const toggleBtnRef = ref<VcBtnRef>(null)\n    const rootStyle = reactive<CSSProperties>({})\n    const tooltipRef = ref<VcTooltipRef>(null)\n    const viewerRef = ref<VcViewerRef>(null)\n    const positionState = usePosition(props, $services)\n    const showing = ref(props.modelValue)\n    let unwatchFns: Array<WatchStopHandle> = []\n    let overviewViewer: Cesium.Viewer\n    let centerRect: Cesium.ViewportQuad\n\n    // computed\n    const toggleOpts = computed(() => {\n      return Object.assign(\n        {},\n        {\n          color: '#fff',\n          background: '#3f4854',\n          icon: 'vc-icons-overview-toggle',\n          size: '15px',\n          tooltip: {\n            delay: 500,\n            anchor: 'bottom middle',\n            offset: [0, 20],\n            tip: void 0\n          } as any\n        },\n        props.toggleOpts\n      )\n    })\n\n    const viewerOpts = computed(() => {\n      return Object.assign(\n        {},\n        {\n          removeCesiumScript: false,\n          showCredit: false,\n          sceneMode: 2,\n          containerId: 'vc-overview-map'\n        },\n        props.viewerOpts\n      )\n    })\n    // watch\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      viewerElement.appendChild($(rootRef))\n      return [$(rootRef), $(viewerRef)]\n    }\n\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.clock.onTick.addEventListener(onClockTick)\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      viewer.clock.onTick.removeEventListener(onClockTick)\n      viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      return true\n    }\n\n    const onClockTick = () => {\n      if (overviewViewer) {\n        const { viewer: parentViewer } = $services\n        const parentCameraRectangle = parentViewer.camera.computeViewRectangle()\n        const { defined } = Cesium\n        if (!defined(parentCameraRectangle)) {\n          return\n        }\n        const rectangle = parentCameraRectangle.expand(props.widthFactor, props.heightFactor)\n\n        overviewViewer.camera.flyTo({\n          destination: rectangle.clone(),\n          // destination: parentViewer.camera.position,\n          orientation: {\n            heading: parentViewer.camera.heading,\n            pitch: parentViewer.camera.pitch,\n            roll: parentViewer.camera.roll\n          },\n          duration: 0.0\n        })\n        const { Cartesian3, SceneTransforms } = Cesium\n        const wnPosition = Cartesian3.fromRadians(parentCameraRectangle.west, parentCameraRectangle.north)\n        const enPosition = Cartesian3.fromRadians(parentCameraRectangle.east, parentCameraRectangle.north)\n        const wsPosition = Cartesian3.fromRadians(parentCameraRectangle.west, parentCameraRectangle.south)\n        const esPosition = Cartesian3.fromRadians(parentCameraRectangle.east, parentCameraRectangle.south)\n        const scene = overviewViewer.scene\n        const wnWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, wnPosition)\n        const enWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, enPosition)\n        const wsWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, wsPosition)\n        const esWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, esPosition)\n\n        if (!defined(wnWindowPosition) || !defined(enWindowPosition) || !defined(wsWindowPosition) || !defined(esWindowPosition)) {\n          return\n        }\n\n        const width = enWindowPosition.x - wnWindowPosition.x\n        const height = wsWindowPosition.y - wnWindowPosition.y\n        const x = (wnWindowPosition.x + enWindowPosition.x) / 2 - width / 2\n        const y = (wnWindowPosition.y + wsWindowPosition.y) / 2 - height / 2\n\n        if (width <= 0 || height <= 0) {\n          return\n        }\n        const boundingRectangle = new Cesium.BoundingRectangle(x, y, width, height)\n        centerRect.rectangle = boundingRectangle\n        centerRect.material.uniforms.color = makeColor(props.centerRectColor)\n        centerRect.show = true\n      }\n    }\n\n    const onViewerReady = (readyObj: VcReadyObject) => {\n      const { viewer } = readyObj\n      overviewViewer = viewer\n      const control = viewer.scene.screenSpaceCameraController\n      control.enableRotate = false\n      control.enableTranslate = false\n      control.enableZoom = false\n      control.enableTilt = false\n      control.enableLook = false\n\n      overviewViewer.scene.highDynamicRange = false\n      overviewViewer.scene.globe.enableLighting = false\n      overviewViewer.scene.globe.showWaterEffect = false\n      overviewViewer.scene.globe.depthTestAgainstTerrain = false\n      overviewViewer.scene.skyAtmosphere.show = false\n      overviewViewer.scene.fog.enabled = false\n      overviewViewer.scene.skyBox.show = false\n      overviewViewer.scene.sun.show = false\n      overviewViewer.scene.moon.show = false\n      overviewViewer.scene.highDynamicRange = false\n      overviewViewer.scene.globe.showGroundAtmosphere = false\n\n      centerRect = new Cesium.ViewportQuad(new Cesium.BoundingRectangle(150, 100, 100, 50))\n      centerRect.show = false\n      overviewViewer.scene.primitives.add(centerRect)\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      rootStyle['pointer-events'] = 'none'\n\n      css.borderRadius = props.borderRadius\n      css.border = props.border\n\n      if (showing.value) {\n        css.width = props.width\n        css.height = props.height\n      } else {\n        const reg = /(\\d+)/g\n        const regResult = reg.exec(props.border)\n        const boder = regResult?.length ? parseFloat(regResult[0]) : 0\n        const toggleBtnRefStyle = getComputedStyle($(toggleBtnRef)?.$el)\n        css.width = `${parseFloat(toggleBtnRefStyle.width) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n        css.height = `${parseFloat(toggleBtnRefStyle.height) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n      }\n      Object.assign(rootStyle, css)\n    }\n\n    // const onTooltipBeforeShow = () => {\n\n    // }\n\n    const onToggle = () => {\n      if (showing.value) {\n        minimize()\n      } else {\n        restore()\n      }\n      showing.value = !showing.value\n      ctx.emit('update:modelValue', showing.value)\n    }\n\n    const minimize = () => {\n      const reg = /(\\d+)/g\n      const regResult = reg.exec(props.border)\n      const boder = regResult?.length ? parseFloat(regResult[0]) : 0\n      const toggleBtnRefStyle = getComputedStyle($(toggleBtnRef)?.$el)\n      rootStyle.width = `${parseFloat(toggleBtnRefStyle.width) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n      rootStyle.height = `${parseFloat(toggleBtnRefStyle.height) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n    }\n\n    const restore = () => {\n      rootStyle.width = props.width\n      rootStyle.height = props.height\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () => {\n      const children: Array<VNode> = []\n      children.push(\n        h(\n          VcBtn,\n          {\n            ref: toggleBtnRef,\n            class: 'toggle toggle-' + props.position + (!showing.value ? ' minimized ' : ''),\n            flat: true,\n            dense: true,\n            icon: toggleOpts.value.icon,\n            size: toggleOpts.value.size,\n            style: { color: toggleOpts.value.color, background: toggleOpts.value.background, 'pointer-events': 'auto' },\n            onClick: onToggle\n          },\n          () =>\n            toggleOpts.value.tooltip\n              ? h(\n                  VcTooltip,\n                  {\n                    ref: tooltipRef,\n                    ...toggleOpts.value.tooltip\n                    // onBeforeShow: onTooltipBeforeShow\n                  },\n                  () => h('strong', {}, toggleOpts.value.tooltip.tip || t(`vc.overview.${!showing.value ? 'show' : 'hidden'}`))\n                )\n              : createCommentVNode('v-if')\n        )\n      )\n      children.push(\n        h(\n          VcViewer,\n          {\n            ref: viewerRef,\n            ...viewerOpts.value,\n            onReady: onViewerReady\n          },\n          () => hSlot(ctx.slots.default)\n        )\n      )\n      return h(\n        'div',\n        {\n          ref: rootRef,\n          class: 'vc-overview-map ' + positionState.classes.value,\n          style: rootStyle\n        },\n        children\n      )\n    }\n  }\n})\n\nexport type VcOverviewMapProps = {\n  /**\n   * Specify the position of the VcOverviewMap.\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 VcOverviewMap horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify the width of the overviewmap component.\n   * Default value: 150px\n   */\n  width?: string\n  /**\n   * Specify the height of the overviewmap component.\n   * Default value: 150px\n   */\n  height?: string\n  /**\n   * Specify the border of the overviewmap component.\n   * Default value: solid 4px rgb(255, 255, 255)\n   */\n  border?: string\n  /**\n   * Specify the border radius of the overviewmap component.\n   */\n  borderRadius?: string\n  /**\n   * Specify the toggle button options of the overviewmap component.\n   */\n  toggleOpts?: VcBtnTooltipProps\n  /**\n   * Specify the vc-viewer component options in the overviewmap component.\n   */\n  viewerOpts?: VcViewerProps\n  /**\n   * Specify the center rectangle color.\n   * Default value: #ff000080\n   */\n  centerRectColor?: VcColor\n  /**\n   * Specify the width factor of center rectangle.\n   * Default value: 2\n   */\n  widthFactor?: number\n  /**\n   * Specify the height factor of center rectangle.\n   * Default value: 2\n   */\n  heightFactor?: number\n  /**\n   * Model of the component determining if VcOverviewMap should be expanded or not.\n   * Default value: true\n   */\n  modelValue?: boolean\n  /**\n   * Triggers before the VcOverviewMap is loaded.\n   * @param instance\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcOverviewMap 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 VcOverviewMap is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Emitted when showing/hidden state changes; Is also used by v-model.\n   * @param value New state (showing/hidden)\n   */\n  'onUpdate:modelValue'?: (value: boolean) => void\n}\n\nexport interface VcOverviewMapSlots {\n  /**\n   * Default slot content of the component\n   */\n  default: () => VNode[]\n}\n\nexport type VcOverviewMapRef = VcComponentPublicInstance<VcOverviewMapProps>\n"],"names":["VcViewer"],"mappings":"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"}