{"version":3,"file":"use-zoom-control.mjs","sources":["../../../../../../packages/components/controls/navigation-sm/use-zoom-control.ts"],"sourcesContent":["import type { AnyFunction, VcComponentInternalInstance, VcViewerProvider } from '@vue-cesium/utils/types'\nimport { $, getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { ref } from 'vue'\nimport type { VcTooltipRef } from '@vue-cesium/components/ui'\nimport { isObject } from '@vue-cesium/utils/util'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance, $services: VcViewerProvider) {\n  // state\n  const zoombarTop = ref(65)\n  const zoomInTooltipRef = ref<VcTooltipRef>(null)\n  const zoomOutTooltipRef = ref<VcTooltipRef>(null)\n  const zoomBarTooltipRef = ref<VcTooltipRef>(null)\n  let screenSpaceEventHandler: Cesium.ScreenSpaceEventHandler\n\n  let zoominTickFunction: AnyFunction<void>\n  let zoominMouseUpFunction: AnyFunction<void>\n  let isZoomin = false\n  let zoominLastTimestamp = 0\n  let unsubscribeFromClockTickZoomin: AnyFunction<void>\n\n  let zoomoutTickFunction: AnyFunction<void>\n  let zoomoutMouseUpFunction: AnyFunction<void>\n  let iszoomout = false\n  let zoomoutLastTimestamp = 0\n  let unsubscribeFromClockTickZoomout: AnyFunction<void>\n\n  let zoomBarScrollMouseMoveFunction: AnyFunction<void>\n  let zoomBarScrollMouseUpFunction: AnyFunction<void>\n  let zoombarTickFunction: AnyFunction<void>\n  let isZoomBarScrolling = false\n  let unsubscribeFromClockTickZoomBar: AnyFunction<void>\n  let container: HTMLElement\n\n  // methods\n  const handleZoomInMouseDown = e => {\n    const { defined, getTimestamp, SceneMode, ScreenSpaceEventType } = Cesium\n    const { viewer } = $services\n    $(zoomInTooltipRef)?.hide()\n    $(zoomOutTooltipRef)?.hide()\n    $(zoomBarTooltipRef)?.hide()\n    screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n    defined(zoominTickFunction) && viewer.clock.onTick.removeEventListener(zoominTickFunction)\n    ;(zoominMouseUpFunction as any) = undefined\n    ;(zoominTickFunction as any) = undefined\n    isZoomin = true\n    zoominLastTimestamp = getTimestamp()\n    const scene = viewer.scene\n    const camera = scene.camera\n    zoominTickFunction = () => {\n      viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D ? camera.zoomIn() : handlezoom(1)\n    }\n\n    zoominMouseUpFunction = () => {\n      isZoomin = false\n      screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n      defined(zoominTickFunction) && viewer.clock.onTick.removeEventListener(zoominTickFunction)\n      ;(zoominMouseUpFunction as any) = undefined\n      ;(zoominTickFunction as any) = undefined\n    }\n\n    screenSpaceEventHandler.setInputAction(zoominMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n    unsubscribeFromClockTickZoomin = viewer.clock.onTick.addEventListener(zoominTickFunction)\n  }\n\n  const handleZoomOutMouseDown = event => {\n    $(zoomInTooltipRef)?.hide()\n    $(zoomOutTooltipRef)?.hide()\n    $(zoomBarTooltipRef)?.hide()\n    const { defined, getTimestamp, SceneMode, ScreenSpaceEventType } = Cesium\n    const { viewer } = $services\n    screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n    defined(zoomoutTickFunction) && viewer.clock.onTick.removeEventListener(zoomoutTickFunction)\n    ;(zoomoutMouseUpFunction as any) = undefined\n    ;(zoomoutTickFunction as any) = undefined\n    iszoomout = false\n    zoomoutLastTimestamp = getTimestamp()\n    const scene = viewer.scene\n    const camera = scene.camera\n    zoomoutTickFunction = () => {\n      viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D ? camera.zoomOut() : handlezoom(-1)\n    }\n\n    zoomoutMouseUpFunction = () => {\n      iszoomout = false\n      screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n      defined(zoomoutTickFunction) && viewer.clock.onTick.removeEventListener(zoomoutTickFunction)\n      ;(zoomoutMouseUpFunction as any) = undefined\n      ;(zoomoutTickFunction as any) = undefined\n    }\n\n    screenSpaceEventHandler.setInputAction(zoomoutMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n    unsubscribeFromClockTickZoomout = viewer.clock.onTick.addEventListener(zoomoutTickFunction)\n  }\n\n  const handleZoomBarScrollMouseDown = event => {\n    $(zoomInTooltipRef)?.hide()\n    $(zoomOutTooltipRef)?.hide()\n    $(zoomBarTooltipRef)?.hide()\n    const { Cartesian2, defined, SceneMode } = Cesium\n    const { viewer } = $services\n    document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n    document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n    document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n    document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n    defined(zoombarTickFunction) && viewer.clock.onTick.removeEventListener(zoombarTickFunction)\n    ;(zoomBarScrollMouseUpFunction as any) = undefined\n    ;(zoombarTickFunction as any) = undefined\n    isZoomBarScrolling = true\n    const scene = viewer.scene\n    const camera = scene.camera\n\n    zoombarTickFunction = () => {\n      const zoomOffset = zoombarTop.value - 65\n      if (zoomOffset > 0) {\n        if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D) {\n          camera.zoomOut()\n        } else {\n          handlezoom(-1)\n        }\n      } else if (zoomOffset < 0) {\n        if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D) {\n          camera.zoomIn()\n        } else {\n          handlezoom(1)\n        }\n      }\n    }\n    zoomBarScrollMouseMoveFunction = e => {\n      const zoombarTopMove = zoombarTop.value\n      const clientRect = e.target.parentElement.getBoundingClientRect()\n      const rectNavigation = container.getBoundingClientRect()\n      const endPosition = new Cesium.Cartesian2()\n      endPosition.x = e.type === 'touchmove' ? e.changedTouches[0].clientX - rectNavigation.left : e.clientX - rectNavigation.left\n      endPosition.y = e.type === 'touchmove' ? e.changedTouches[0].clientY - rectNavigation.top : e.clientY - rectNavigation.top\n      const padding = new Cartesian2(clientRect.width - endPosition.x, clientRect.height - endPosition.y)\n      let offset = padding.y - 16\n      offset = offset < 0 ? 0 : offset\n      offset = offset > 120 ? 120 : offset\n      zoombarTop.value = 120 - offset\n\n      const zoomFlag = zoombarTop.value - zoombarTopMove\n      if (zoomFlag > 0) {\n        if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D) {\n          camera.zoomOut()\n        } else {\n          handlezoom(-1)\n        }\n      } else {\n        if (viewer.scene.mode === SceneMode.COLUMBUS_VIEW || viewer.scene.mode === SceneMode.SCENE2D) {\n          camera.zoomIn()\n        } else {\n          handlezoom(1)\n        }\n      }\n    }\n\n    zoomBarScrollMouseUpFunction = () => {\n      isZoomBarScrolling = false\n      document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n      document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n      document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n      document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n      defined(zoombarTickFunction) && viewer.clock.onTick.removeEventListener(zoombarTickFunction)\n      ;(zoomBarScrollMouseUpFunction as any) = undefined\n      ;(zoomBarScrollMouseMoveFunction as any) = undefined\n      ;(zoombarTickFunction as any) = undefined\n      zoombarTop.value = 65\n    }\n    document.addEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n    document.addEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n    document.addEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n    document.addEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n    unsubscribeFromClockTickZoomBar = viewer.clock.onTick.addEventListener(zoombarTickFunction)\n  }\n\n  const handlezoom = i => {\n    const { Cartesian2, Cartesian3, defined, Ellipsoid, Math } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const camera = scene.camera\n    const canvas = scene.canvas\n    const centerPixel = new Cartesian2()\n    centerPixel.x = canvas.clientWidth / 2\n    centerPixel.y = canvas.clientHeight / 2\n    const centerPosition = pickGlobe(centerPixel)\n    if (defined(centerPosition)) {\n      const distance = Cartesian3.distance(camera.position, centerPosition)\n      let factor = 0.0618 * i * 0.2\n      factor = distance > 300 ? factor : 2 * factor\n      const amount = distance * factor\n      const direction = new Cartesian3()\n      Cartesian3.subtract(centerPosition, camera.position, direction)\n      const cameraRight = Cartesian3.clone(camera.right)\n      const dot = Cartesian3.dot(direction, cameraRight)\n      const movementVector = new Cartesian3()\n      Cartesian3.multiplyByScalar(cameraRight, dot, movementVector)\n      Cartesian3.subtract(direction, movementVector, direction)\n      Cartesian3.normalize(direction, direction)\n      camera.move(direction, amount)\n      const centerPositionNormal = new Cartesian3()\n      Cartesian3.normalize(centerPosition, centerPositionNormal)\n\n      const pickPosition = camera.pickEllipsoid(centerPixel, viewer.scene.globe.ellipsoid)\n      if (\n        isObject(pickPosition) &&\n        defined(pickPosition) &&\n        !isNaN(pickPosition.x) &&\n        !isNaN(pickPosition.y) &&\n        !isNaN(pickPosition.z) &&\n        !(camera.positionCartographic.height < 0)\n      ) {\n        Cartesian3.normalize(pickPosition, pickPosition)\n        const angle = Cartesian3.angleBetween(centerPositionNormal, pickPosition)\n        if (!Math.equalsEpsilon(angle, 0, Math.EPSILON10)) {\n          const axis = Cartesian3.cross(centerPositionNormal, pickPosition, new Cartesian3())\n          camera.rotate(axis, angle)\n          const listener = getInstanceListener(vcInstance, 'zoomEvt')\n          listener &&\n            emit('zoomEvt', {\n              type: i === 1 ? 'zoomIn' : 'zoomOut',\n              camera: viewer.camera,\n              status: 'end'\n            })\n        }\n      }\n    }\n  }\n\n  const pickGlobe = mousePosition => {\n    const { defined, Cartesian3 } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const globe = scene.globe\n    const camera = scene.camera\n    if (defined(globe)) {\n      let depthIntersection\n      if (scene.pickPositionSupported) {\n        depthIntersection = scene.pickPositionWorldCoordinates(mousePosition)\n      }\n      const ray = camera.getPickRay(mousePosition)\n      const rayIntersection = globe.pick(ray, scene)\n      const pickDistance = defined(depthIntersection) ? Cartesian3.distance(depthIntersection, camera.positionWC) : Number.POSITIVE_INFINITY\n      const rayDistance =\n        isObject(rayIntersection) && defined(rayIntersection) ? Cartesian3.distance(rayIntersection, camera.positionWC) : Number.POSITIVE_INFINITY\n      return rayDistance > pickDistance ? depthIntersection : rayIntersection\n    }\n  }\n\n  const onTooltipBeforeShow = e => {\n    if (zoomBarScrollMouseMoveFunction !== undefined || zoominTickFunction !== undefined || zoomoutTickFunction !== undefined) {\n      e.cancel = true\n    }\n  }\n\n  const load = el => {\n    container = el\n    screenSpaceEventHandler = new Cesium.ScreenSpaceEventHandler(el)\n    return true\n  }\n\n  const unload = () => {\n    document.removeEventListener('mousemove', zoomBarScrollMouseMoveFunction, false)\n    document.removeEventListener('touchmove', zoomBarScrollMouseMoveFunction, false)\n    document.removeEventListener('mouseup', zoomBarScrollMouseUpFunction, false)\n    document.removeEventListener('touchend', zoomBarScrollMouseUpFunction, false)\n    unsubscribeFromClockTickZoomin?.()\n    unsubscribeFromClockTickZoomout?.()\n    unsubscribeFromClockTickZoomBar?.()\n    screenSpaceEventHandler?.destroy()\n    return true\n  }\n\n  return {\n    handleZoomInMouseDown,\n    handleZoomOutMouseDown,\n    handleZoomBarScrollMouseDown,\n    load,\n    unload,\n    zoombarTop,\n    zoomInTooltipRef,\n    zoomOutTooltipRef,\n    zoomBarTooltipRef,\n    onTooltipBeforeShow\n  }\n}\n"],"names":[],"mappings":"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"}