{"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 'casc-cesium-utils/types'\nimport CameraFlightPath from '../compass/CameraFlightPath'\nimport { getInstanceListener, $ } from 'casc-cesium-utils/private/vm'\nimport type { VcTooltipRef } from 'casc-cesium-components/ui'\nimport { isObject } from 'casc-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":[],"mappings":"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"}