{"version":3,"file":"use-compass.mjs","sources":["../../../../../../packages/components/controls/navigation-sm/use-compass.ts"],"sourcesContent":["import { ref } from 'vue'\nimport type { AnyFunction, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport CameraFlightPath from '../compass/CameraFlightPath'\nimport { getInstanceListener, $ } from '@vue-cesium/utils/private/vm'\nimport type { VcTooltipRef } from '@vue-cesium/components/ui'\nimport { isObject } from '@vue-cesium/utils/util'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance) {\n  // state\n  const vectorScratch: any = {}\n  const oldTransformScratch: any = {}\n  const newTransformScratch: any = {}\n  const centerScratch: any = {}\n\n  let unsubscribeFromPostRender: AnyFunction<void>\n  let unsubscribeFromClockTick: AnyFunction<void>\n\n  let rotateEastMouseUpFunction: AnyFunction<void>\n  let rotateEastTickFunction: AnyFunction<void>\n\n  const heading = ref(0)\n\n  let isrotateEasting = false\n  let rotateEastLastTimestamp = 0\n\n  let rotateMouseUpFunction: AnyFunction<void>\n  let rotateMouseMoveFunction: AnyFunction<void>\n  let isRotating = false\n  let rotateInitialCursorAngle = 0\n  let rotateFrame: any = {}\n  let rotateIsLook = false\n  let rotateInitialCameraAngle = 0\n  let rotateInitialCameraDistance: any = {}\n\n  let screenSpaceEventHandler: Cesium.ScreenSpaceEventHandler\n\n  let tiltMouseMoveFunction: AnyFunction<void>\n  let tiltMouseUpFunction: AnyFunction<void>\n  let isTilting = false\n  let tiltFrame: any = {}\n  let tiltInitialCursorAngle = 0\n  const tiltbarLeft = ref(56)\n  const tiltbarTop = ref(3)\n  let clickStartPosition\n\n  const tooltipRef = ref<VcTooltipRef>(null)\n\n  // methods\n  const handleMouseDown = (e: Event) => {\n    if (e.stopPropagation) e.stopPropagation()\n    if (e.preventDefault) e.preventDefault()\n\n    $(tooltipRef)?.hide()\n\n    const { Cartesian2, SceneMode, Math: CesiumMath } = Cesium\n    const scene = vcInstance.viewer.scene\n    if (scene.mode === SceneMode.MORPHING) {\n      return true\n    }\n    const compassElement = e.currentTarget as HTMLElement\n    const compassRectangle = (e.currentTarget as HTMLElement).getBoundingClientRect()\n    const center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2.0, (compassRectangle.bottom - compassRectangle.top) / 2.0)\n    let clickLocation\n    if (e instanceof MouseEvent) {\n      clickLocation = new Cartesian2(e.clientX - compassRectangle.left, e.clientY - compassRectangle.top)\n      clickStartPosition = new Cartesian2(e.clientX, e.clientY)\n    } else if (e instanceof TouchEvent) {\n      clickLocation = new Cartesian2(e.changedTouches[0].clientX - compassRectangle.left, e.changedTouches[0].clientY - compassRectangle.top)\n      clickStartPosition = new Cartesian2(e.changedTouches[0].clientX, e.changedTouches[0].clientY)\n    }\n    const vector = Cartesian2.subtract(clickLocation, center, vectorScratch)\n\n    const distanceFromCenter = Cartesian2.magnitude(vector)\n\n    if (distanceFromCenter > 30 && distanceFromCenter < 45) {\n      rotate(compassElement, vector)\n    } else if (!(distanceFromCenter > 50 && distanceFromCenter < 70)) {\n      rotateEast(compassElement, vector)\n    } else {\n      const angle = CesiumMath.PI_OVER_TWO - Math.atan2(-vector.y, vector.x)\n      angle >= 0 && angle <= CesiumMath.PI_OVER_TWO && tilt(compassElement, vector)\n    }\n  }\n\n  const handleMouseUp = event => {\n    const { Cartesian2, Math: CesiumMath } = Cesium\n    const compassRectangle = event.currentTarget.getBoundingClientRect()\n    const center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2.0, (compassRectangle.bottom - compassRectangle.top) / 2.0)\n    const clickLocation =\n      event.type === 'mouseup'\n        ? new Cartesian2(event.clientX - compassRectangle.left, event.clientY - compassRectangle.top)\n        : new Cartesian2(event.changedTouches[0].clientX - compassRectangle.left, event.changedTouches[0].clientY - compassRectangle.top)\n    const vector = Cartesian2.subtract(clickLocation, center, vectorScratch)\n    const magnitude = Cartesian2.magnitude(vector)\n    if (magnitude > 30 && magnitude < 45) {\n      const angle = CesiumMath.toDegrees(Math.atan2(-vector.y, vector.x))\n      const clickStartPositionUp =\n        event.type === 'mouseup'\n          ? new Cartesian2(event.clientX, event.clientY)\n          : new Cartesian2(event.changedTouches[0].clientX, event.changedTouches[0].clientY)\n      const dX = clickStartPositionUp.x - clickStartPosition.x\n      const dY = clickStartPositionUp.y - clickStartPosition.y\n      const distance = Math.sqrt(dX * dX + dY * dY)\n      if (distance > 5) {\n        return\n      }\n      const headingDegree = CesiumMath.toDegrees(heading.value)\n      const m = Math.abs(angle - headingDegree)\n      const scene = vcInstance.viewer.scene\n      if ((angle > 0 && headingDegree > 0 && headingDegree < 90 && m > 80 && m < 100) || (m > 260 && m < 280)) {\n        scene.camera.flyTo({\n          destination: scene.camera.position,\n          orientation: {\n            heading: 0,\n            pitch: scene.camera.pitch\n          }\n        })\n      }\n    }\n  }\n  const handleDoubleClick = e => {\n    const { Cartesian2, Cartesian3, defined, Matrix4, Ray, SceneMode, Transforms } = Cesium\n    const { viewer } = vcInstance\n    const scene = viewer.scene\n    const camera = scene.camera\n    const sscc = scene.screenSpaceCameraController\n\n    if (scene.mode === SceneMode.MORPHING || !sscc.enableInputs) {\n      return true\n    }\n    if (scene.mode === SceneMode.COLUMBUS_VIEW && !sscc.enableTranslate) {\n      return\n    }\n    if (scene.mode === SceneMode.SCENE3D || scene.mode === SceneMode.COLUMBUS_VIEW) {\n      if (!sscc.enableLook) {\n        return\n      }\n\n      if (scene.mode === SceneMode.SCENE3D) {\n        if (!sscc.enableRotate) {\n          return\n        }\n      }\n    }\n\n    const windowPosition = new Cartesian2()\n    windowPosition.x = scene.canvas.clientWidth / 2\n    windowPosition.y = scene.canvas.clientHeight / 2\n    const pickRayScratch = new Ray()\n    const ray = camera.getPickRay(windowPosition, pickRayScratch)\n\n    const center = scene.globe.pick(ray, scene, centerScratch)\n    if (!defined(center)) {\n      // Globe is barely visible, so reset to home view.\n      viewer.camera.flyHome()\n      return\n    }\n\n    const listener = getInstanceListener(vcInstance, 'compassEvt')\n    listener &&\n      emit('compassEvt', {\n        type: 'reset',\n        camera: viewer.camera,\n        status: 'start',\n        target: e.currentTarget\n      })\n    const rotateFrame = Transforms.eastNorthUpToFixedFrame(center || new Cartesian3(), viewer.scene.globe.ellipsoid)\n    const lookVector = Cartesian3.subtract(center || new Cartesian3(), camera.position, new Cartesian3())\n    const flight = CameraFlightPath.createTween(scene, {\n      destination: Matrix4.multiplyByPoint(rotateFrame, new Cartesian3(0.0, 0.0, Cartesian3.magnitude(lookVector)), new Cartesian3()),\n      direction: Matrix4.multiplyByPointAsVector(rotateFrame, new Cartesian3(0.0, 0.0, -1.0), new Cartesian3()),\n      up: Matrix4.multiplyByPointAsVector(rotateFrame, new Cartesian3(0.0, 1.0, 0.0), new Cartesian3()),\n      duration: props.duration,\n      complete: () => {\n        listener &&\n          emit('compassEvt', {\n            type: 'reset',\n            camera: viewer.camera,\n            status: 'end',\n            target: e.currentTarget\n          })\n      },\n      cancel: () => {\n        listener &&\n          emit('compassEvt', {\n            type: 'reset',\n            camera: viewer.camera,\n            status: 'cancel',\n            target: e.currentTarget\n          })\n      }\n    })\n    ;(scene as any).tweens.add(flight)\n  }\n\n  // methods\n  const viewerChange = () => {\n    const { defined } = Cesium\n    if (defined(vcInstance.viewer)) {\n      if (unsubscribeFromPostRender) {\n        unsubscribeFromPostRender()\n        ;(unsubscribeFromPostRender as any) = undefined\n      }\n\n      unsubscribeFromPostRender = vcInstance.viewer.scene.postRender.addEventListener(function () {\n        if (heading.value !== vcInstance.viewer.scene.camera.heading) {\n          heading.value = vcInstance.viewer.scene.camera.heading\n        }\n      })\n    } else {\n      if (unsubscribeFromPostRender) {\n        unsubscribeFromPostRender()\n        ;(unsubscribeFromPostRender as any) = undefined\n      }\n    }\n  }\n\n  const rotateEast = (compassElement: HTMLElement, cursorVector: Cesium.Cartesian2) => {\n    const { defined, getTimestamp, SceneMode, Math: CesiumMath, ScreenSpaceEventType } = Cesium\n    const scene = vcInstance.viewer.scene\n    const sscc = scene.screenSpaceCameraController\n    // do not orbit if it is disabled\n    if (scene.mode === SceneMode.MORPHING || !sscc.enableInputs) {\n      return\n    }\n\n    switch (scene.mode) {\n      case SceneMode.COLUMBUS_VIEW:\n        if (sscc.enableLook) {\n          break\n        }\n        if (!sscc.enableTranslate || !sscc.enableTilt) {\n          return\n        }\n        break\n      case SceneMode.SCENE3D:\n        if (sscc.enableLook) {\n          break\n        }\n        if (!sscc.enableTilt || !sscc.enableRotate) {\n          return\n        }\n        break\n      case Cesium.SceneMode.SCENE2D:\n        if (!sscc.enableTranslate) {\n          return\n        }\n        break\n    }\n\n    screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n    if (defined(rotateEastTickFunction)) {\n      vcInstance.viewer.clock.onTick.removeEventListener(rotateEastTickFunction)\n    }\n\n    ;(rotateEastMouseUpFunction as any) = undefined\n    ;(rotateEastTickFunction as any) = undefined\n\n    isrotateEasting = true\n    rotateEastLastTimestamp = getTimestamp()\n\n    let angle = CesiumMath.PI_OVER_TWO - Math.atan2(-cursorVector.y, cursorVector.x)\n    const quarterPI = Math.PI / 4\n    let roateDirection = 0\n    const roateType = {\n      LEFT: 1,\n      RIGHT: 2,\n      UP: 3,\n      DOWN: 4\n    }\n    roateDirection =\n      angle >= -quarterPI && quarterPI >= angle\n        ? roateType.DOWN\n        : angle >= quarterPI && 3 * quarterPI >= angle\n        ? roateType.RIGHT\n        : angle >= 3 * quarterPI && 5 * quarterPI >= angle\n        ? roateType.UP\n        : roateType.LEFT\n\n    const listener = getInstanceListener(vcInstance, 'compassEvt')\n    let type = `rotateEast`\n    switch (roateDirection) {\n      case roateType.LEFT:\n        type = 'rotateWest'\n        break\n      case roateType.RIGHT:\n        type = 'rotateEast'\n        break\n      case roateType.UP:\n        type = 'rotateNorth'\n        break\n      case roateType.DOWN:\n        type = 'rotateSouth'\n    }\n\n    listener &&\n      emit('compassEvt', {\n        type: type,\n        camera: scene.camera,\n        status: 'start',\n        target: compassElement\n      })\n\n    rotateEastTickFunction = function (e) {\n      const scene = vcInstance.viewer.scene\n      const camera = scene.camera\n      const timestamp = getTimestamp()\n      angle = 20 * Math.abs(camera.positionCartographic.height / 6378317) * 0.0005\n      switch (roateDirection) {\n        case roateType.LEFT:\n          camera.rotateLeft(angle)\n          break\n        case roateType.RIGHT:\n          camera.rotateRight(angle)\n          break\n        case roateType.UP:\n          camera.rotate(camera.right, -angle)\n          break\n        case roateType.DOWN:\n          camera.rotate(camera.right, angle)\n      }\n      rotateEastLastTimestamp = timestamp\n      listener &&\n        emit('compassEvt', {\n          type: type,\n          camera: scene.camera,\n          status: 'changing',\n          target: compassElement\n        })\n    }\n\n    rotateEastMouseUpFunction = function (e) {\n      // TODO: if mouse didn't move, reset view to looking down, north is up?\n\n      isrotateEasting = false\n      screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n      defined(rotateEastTickFunction) && vcInstance.viewer.clock.onTick.removeEventListener(rotateEastTickFunction)\n      ;(rotateEastMouseUpFunction as any) = undefined\n      ;(rotateEastTickFunction as any) = undefined\n\n      listener &&\n        emit('compassEvt', {\n          type: type,\n          camera: scene.camera,\n          status: 'end',\n          target: compassElement\n        })\n    }\n\n    screenSpaceEventHandler.setInputAction(rotateEastMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n    unsubscribeFromClockTick = vcInstance.viewer.clock.onTick.addEventListener(rotateEastTickFunction)\n  }\n\n  const rotate = (compassElement: HTMLElement, cursorVector: Cesium.Cartesian2) => {\n    if (!props.enableCompassOuterRing) {\n      return\n    }\n\n    const scene = vcInstance.viewer.scene\n    let camera = scene.camera\n    const sscc = scene.screenSpaceCameraController\n    // do not rotate in 2D mode or if rotating is disabled\n    if (scene.mode === Cesium.SceneMode.MORPHING || scene.mode === Cesium.SceneMode.SCENE2D || !sscc.enableInputs) {\n      return\n    }\n    if (!sscc.enableLook && (scene.mode === Cesium.SceneMode.COLUMBUS_VIEW || (scene.mode === Cesium.SceneMode.SCENE3D && !sscc.enableRotate))) {\n      return\n    }\n    // Remove existing event handlers, if any.\n    document.removeEventListener('mousemove', rotateMouseMoveFunction, false)\n    document.removeEventListener('touchmove', rotateMouseMoveFunction, false)\n    document.removeEventListener('mouseup', rotateMouseUpFunction, false)\n    document.removeEventListener('touchend', rotateMouseUpFunction, false)\n    const { Cartesian2, Cartesian3, defined, Math: CesiumMath, Matrix4, Ray, Transforms } = Cesium\n    ;(rotateMouseMoveFunction as any) = undefined\n    ;(rotateMouseUpFunction as any) = undefined\n\n    const listener = getInstanceListener(vcInstance, 'compassEvt')\n    listener &&\n      emit('compassEvt', {\n        type: 'rotate',\n        camera: scene.camera,\n        status: 'start',\n        target: compassElement\n      })\n\n    isRotating = true\n    rotateInitialCursorAngle = Math.atan2(-cursorVector.y, cursorVector.x)\n\n    const windowPosition = new Cartesian2()\n    windowPosition.x = scene.canvas.clientWidth / 2\n    windowPosition.y = scene.canvas.clientHeight / 2\n    const pickRayScratch = new Ray()\n    const ray = camera.getPickRay(windowPosition, pickRayScratch)\n\n    const viewCenter = scene.globe.pick(ray, scene, centerScratch)\n    if (!defined(viewCenter)) {\n      rotateFrame = Transforms.eastNorthUpToFixedFrame(camera.positionWC, scene.globe.ellipsoid, newTransformScratch)\n      rotateIsLook = true\n    } else {\n      rotateFrame = Transforms.eastNorthUpToFixedFrame(viewCenter || new Cartesian3(), scene.globe.ellipsoid, newTransformScratch)\n      rotateIsLook = false\n    }\n\n    let oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)\n    camera.lookAtTransform(rotateFrame)\n    rotateInitialCameraAngle = Math.atan2(camera.position.y, camera.position.x)\n    rotateInitialCameraDistance = Cartesian3.magnitude(new Cartesian3(camera.position.x, camera.position.y, 0.0))\n    camera.lookAtTransform(oldTransform)\n\n    rotateMouseMoveFunction = function (e: MouseEvent | TouchEvent) {\n      const compassRectangle = compassElement.getBoundingClientRect()\n      const center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2.0, (compassRectangle.bottom - compassRectangle.top) / 2.0)\n      let clickLocation\n      if (e instanceof MouseEvent) {\n        clickLocation = new Cartesian2(e.clientX - compassRectangle.left, e.clientY - compassRectangle.top)\n      } else if (e instanceof TouchEvent) {\n        clickLocation = new Cartesian2(e.changedTouches[0].clientX - compassRectangle.left, e.changedTouches[0].clientY - compassRectangle.top)\n      }\n      const vector = Cartesian2.subtract(clickLocation, center, vectorScratch)\n      const angle = Math.atan2(-vector.y, vector.x)\n\n      const angleDifference = angle - rotateInitialCursorAngle\n      const newCameraAngle = CesiumMath.zeroToTwoPi(rotateInitialCameraAngle - angleDifference)\n\n      camera = vcInstance.viewer.scene.camera\n\n      oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)\n      camera.lookAtTransform(rotateFrame)\n      const currentCameraAngle = Math.atan2(camera.position.y, camera.position.x)\n      camera.rotateRight(newCameraAngle - currentCameraAngle)\n      camera.lookAtTransform(oldTransform)\n      listener &&\n        emit('compassEvt', {\n          type: 'rotate',\n          camera: scene.camera,\n          status: 'changing',\n          target: compassElement\n        })\n    }\n\n    rotateMouseUpFunction = function (e) {\n      isRotating = false\n      document.removeEventListener('mousemove', rotateMouseMoveFunction, false)\n      document.removeEventListener('touchmove', rotateMouseMoveFunction, false)\n      document.removeEventListener('mouseup', rotateMouseUpFunction, false)\n      document.removeEventListener('touchend', rotateMouseUpFunction, false)\n      ;(rotateMouseMoveFunction as any) = undefined\n      ;(rotateMouseUpFunction as any) = undefined\n\n      listener &&\n        emit('compassEvt', {\n          type: 'rotate',\n          camera: scene.camera,\n          status: 'end',\n          target: compassElement\n        })\n    }\n\n    document.addEventListener('mousemove', rotateMouseMoveFunction, false)\n    document.addEventListener('touchmove', rotateMouseMoveFunction, false)\n    document.addEventListener('mouseup', rotateMouseUpFunction, false)\n    document.addEventListener('touchend', rotateMouseUpFunction, false)\n  }\n\n  const tilt = (compassElement: HTMLElement, cursorVector: Cesium.Cartesian2) => {\n    const { Cartesian2, defined, Math: CesiumMath, Matrix4, ScreenSpaceEventType, Transforms } = Cesium\n    // Remove existing event handlers, if any.\n    screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.MOUSE_MOVE)\n    screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n    ;(tiltMouseMoveFunction as any) = undefined\n    ;(tiltMouseUpFunction as any) = undefined\n    tiltInitialCursorAngle = CesiumMath.PI_OVER_TWO - Math.atan2(-cursorVector.y, cursorVector.x)\n    tiltInitialCursorAngle = tiltInitialCursorAngle < 0 ? 0 : tiltInitialCursorAngle\n    tiltInitialCursorAngle = tiltInitialCursorAngle > CesiumMath.PI_OVER_TWO ? CesiumMath.PI_OVER_TWO : tiltInitialCursorAngle\n    isTilting = true\n    const scene = vcInstance.viewer.scene\n    const camera = scene.camera\n    const windowPosition = new Cartesian2()\n    windowPosition.x = scene.canvas.clientWidth / 2\n    windowPosition.y = scene.canvas.clientHeight / 2\n    let pickPosition = camera.pickEllipsoid(windowPosition, scene.globe.ellipsoid)\n    if (!defined(pickPosition)) {\n      for (; windowPosition.y < scene.canvas.clientHeight; ) {\n        windowPosition.y += 5\n        pickPosition = camera.pickEllipsoid(windowPosition, scene.globe.ellipsoid)\n      }\n    }\n\n    const listener = getInstanceListener(vcInstance, 'compassEvt')\n    listener &&\n      emit('compassEvt', {\n        type: 'tilt',\n        camera: scene.camera,\n        status: 'start',\n        target: compassElement\n      })\n\n    isObject(pickPosition) && defined(pickPosition) && (tiltFrame = Transforms.eastNorthUpToFixedFrame(pickPosition, scene.globe.ellipsoid))\n    tiltMouseMoveFunction = e => {\n      isTilting = true\n      const compassRectangle = compassElement.getBoundingClientRect()\n      const center = new Cesium.Cartesian2(\n        (compassRectangle.right - compassRectangle.left) / 2.0,\n        (compassRectangle.bottom - compassRectangle.top) / 2.0\n      )\n      const endPosition = Cartesian2.clone(e.endPosition)\n      const vector = Cartesian2.subtract(endPosition, center, vectorScratch)\n      let angle = CesiumMath.PI_OVER_TWO - Math.atan2(-vector.y, vector.x)\n      angle = angle < 0 ? 0 : angle\n      angle = angle > CesiumMath.PI_OVER_TWO ? CesiumMath.PI_OVER_TWO : angle\n      const camera = vcInstance.viewer.scene.camera\n      const oldTransform = Matrix4.clone(camera.transform, oldTransformScratch)\n      camera.lookAtTransform(tiltFrame)\n      const rotateUpAngle = angle - tiltInitialCursorAngle\n      camera.rotateUp(rotateUpAngle)\n      tiltInitialCursorAngle = angle\n      camera.lookAtTransform(oldTransform)\n      let level = Math.ceil(angle / (Math.PI / 40))\n      level = level > 19 ? 19 : level\n      const position = getPoints()[level]\n      tiltbarLeft.value = position.x\n      tiltbarTop.value = position.y\n      listener &&\n        emit('compassEvt', {\n          type: 'tilt',\n          camera: scene.camera,\n          status: 'changing',\n          target: compassElement\n        })\n    }\n\n    tiltMouseUpFunction = function (e) {\n      isTilting = false\n      screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.MOUSE_MOVE)\n      screenSpaceEventHandler.removeInputAction(ScreenSpaceEventType.LEFT_UP)\n      ;(tiltMouseMoveFunction as any) = undefined\n      ;(tiltMouseUpFunction as any) = undefined\n      listener &&\n        emit('compassEvt', {\n          type: 'tilt',\n          camera: scene.camera,\n          status: 'end',\n          target: compassElement\n        })\n    }\n\n    screenSpaceEventHandler.setInputAction(tiltMouseMoveFunction, ScreenSpaceEventType.MOUSE_MOVE)\n    screenSpaceEventHandler.setInputAction(tiltMouseUpFunction, ScreenSpaceEventType.LEFT_UP)\n  }\n\n  const onTooltipBeforeShow = e => {\n    if (rotateMouseMoveFunction !== undefined) {\n      e.cancel = true\n    }\n  }\n\n  const getTiltbarPosition = () => {\n    const { Math: CesiumMath } = Cesium\n    const pitch = CesiumMath.PI_OVER_TWO + vcInstance.viewer.scene.camera.pitch\n    const length = Math.PI / 2 / 20\n    let level = Math.floor(pitch / length)\n    level = level > 19 ? 19 : level\n    level = level < 0 ? 0 : level\n    tiltbarLeft.value = getPoints()[level].x\n    tiltbarTop.value = getPoints()[level].y\n  }\n\n  const load = async (viewer: Cesium.Viewer, el) => {\n    vcInstance.viewer = viewer\n    heading.value = viewer.scene.camera.heading\n    viewerChange()\n    screenSpaceEventHandler = new Cesium.ScreenSpaceEventHandler(el)\n    getTiltbarPosition()\n    return true\n  }\n\n  const unload = async () => {\n    document.removeEventListener('mousemove', rotateMouseMoveFunction, false)\n    document.removeEventListener('touchmove', rotateMouseMoveFunction, false)\n    document.removeEventListener('mouseup', rotateMouseUpFunction, false)\n    document.removeEventListener('touchend', rotateMouseUpFunction, false)\n\n    unsubscribeFromClockTick && unsubscribeFromClockTick()\n    unsubscribeFromPostRender && unsubscribeFromPostRender()\n    screenSpaceEventHandler?.destroy()\n    return true\n  }\n\n  return {\n    heading,\n    handleDoubleClick,\n    handleMouseDown,\n    handleMouseUp,\n    onTooltipBeforeShow,\n    viewerChange,\n    load,\n    unload,\n    tiltbarLeft,\n    tiltbarTop,\n    tooltipRef\n  }\n}\n\nfunction getPoints() {\n  return [\n    {\n      x: 56,\n      y: 3\n    },\n    {\n      x: 59,\n      y: 4\n    },\n    {\n      x: 64,\n      y: 5\n    },\n    {\n      x: 69,\n      y: 6\n    },\n    {\n      x: 74,\n      y: 7\n    },\n    {\n      x: 79,\n      y: 9\n    },\n    {\n      x: 84,\n      y: 12\n    },\n    {\n      x: 89,\n      y: 15\n    },\n    {\n      x: 92,\n      y: 19\n    },\n    {\n      x: 94,\n      y: 20\n    },\n    {\n      x: 99,\n      y: 25\n    },\n    {\n      x: 104,\n      y: 34\n    },\n    {\n      x: 106,\n      y: 40\n    },\n    {\n      x: 107,\n      y: 44\n    },\n    {\n      x: 107,\n      y: 46\n    },\n    {\n      x: 107,\n      y: 48\n    },\n    {\n      x: 107,\n      y: 50\n    },\n    {\n      x: 107,\n      y: 52\n    },\n    {\n      x: 107,\n      y: 54\n    },\n    {\n      x: 107,\n      y: 56\n    }\n  ]\n}\n"],"names":["rotateFrame","scene","camera"],"mappings":"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"}