{"version":3,"file":"use-drawing-point.mjs","sources":["../../../../../packages/composables/use-drawing/use-drawing-point.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-19 11:34:26\n * @LastEditTime: 2023-05-23 10:32:30\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium\\packages\\composables\\use-drawing\\use-drawing-point.ts\n */\n\nimport { VcOverlayHtml } from '@vue-cesium/components/overlays'\nimport { VcCollectionBillboard, VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive } from '@vue-cesium/components/primitive-collections'\nimport { VcBtn, VcTooltip } from '@vue-cesium/components/ui'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from '@vue-cesium/shared'\nimport { makeCartesian3 } from '@vue-cesium/utils/cesium-helpers'\nimport { VcPointDrawing } from '@vue-cesium/utils/drawing-types'\nimport { VcComponentInternalInstance, VcDrawingProvider } from '@vue-cesium/utils/types'\nimport { getCurrentInstance, nextTick, onUnmounted, ref, VNode, watch, WatchStopHandle, h } from 'vue'\nimport useCommon from '../use-common'\nimport useDrawingAction from './use-drawing-action'\nimport { VcAnalysesRef, VcDrawingsRef, VcMeasurementsRef } from '@vue-cesium/components'\nimport { platform } from '@vue-cesium/utils/platform'\n\nexport default function (props, ctx, cmpName: string) {\n  const instance = getCurrentInstance() as VcComponentInternalInstance\n\n  const commonState = useCommon(props, ctx, instance)\n  if (commonState === void 0) {\n    return\n  }\n\n  const { t } = useLocale()\n  const $services = commonState.$services as VcDrawingProvider\n  const { emit } = ctx\n\n  const {\n    drawingType,\n    drawTip,\n    drawTipOpts,\n    drawStatus,\n    canShowDrawTip,\n    drawTipPosition,\n    showEditor,\n    editorPosition,\n    mouseoverPoint,\n    editingPoint,\n    primitiveCollectionRef,\n    editorType,\n    onMouseoverPoints,\n    onMouseoutPoints,\n    onMouseenterEditor,\n    onMouseleaveEditor,\n    onPrimitiveCollectionReady,\n    onVcCollectionPointReady,\n    onVcCollectionLabelReady\n  } = useDrawingAction(props, ctx, instance, cmpName, $services)\n\n  const renderDatas = ref<Array<VcPointDrawing>>([])\n  let restorePosition\n  let unwatchFns: Array<WatchStopHandle> = []\n\n  if (cmpName === 'VcDrawingPin' && props.billboardOpts.image === '') {\n    props.billboardOpts.image = Cesium.buildModuleUrl('Assets/Textures/pin.svg')\n  }\n\n  // watch\n  unwatchFns.push(\n    watch(\n      () => props.editable,\n      val => {\n        const { drawingFabInstance, selectedDrawingActionInstance } = $services\n        if (val && selectedDrawingActionInstance?.name === drawingType) {\n          const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n          drawingFabInstanceVm.toggleAction(selectedDrawingActionInstance)\n        }\n      }\n    )\n  )\n\n  const convert2Degrees = (position, point, scene) => {\n    const cart = Cesium.Cartographic.fromCartesian(position, scene.globe.ellipsoid)\n    const positionDegrees = [Cesium.Math.toDegrees(cart.longitude), Cesium.Math.toDegrees(cart.latitude), cart.height] as [number, number, number]\n    point.positionDegrees = positionDegrees\n  }\n\n  const startNew = () => {\n    const { Cartesian3 } = Cesium\n    const point: VcPointDrawing = {\n      drawStatus: DrawStatus.Drawing,\n      show: false,\n      position: new Cartesian3(),\n      lng: 0,\n      lat: 0,\n      height: 0,\n      slope: 0,\n      pointOpts: {},\n      labelOpts: {},\n      billboardOpts: {}\n    }\n\n    renderDatas.value.push(point)\n    drawStatus.value = DrawStatus.Drawing\n    canShowDrawTip.value = true\n    drawTip.value = drawTipOpts.value.drawingTipStart\n  }\n\n  const stop = (removeLatest = true) => {\n    if (removeLatest && drawStatus.value === DrawStatus.Drawing) {\n      renderDatas.value.pop()\n    }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n    const point: VcPointDrawing = renderDatas.value[index]\n    if (point) {\n      point.drawStatus = DrawStatus.AfterDraw\n    }\n\n    drawStatus.value = DrawStatus.AfterDraw\n    canShowDrawTip.value = false\n    drawTipPosition.value = [0, 0, 0]\n  }\n\n  const handleMouseClick = (movement, options?) => {\n    const { viewer, drawingFabInstance, getWorldPosition, selectedDrawingActionInstance } = $services\n    const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (options.button === 2 && options.ctrl) {\n      const drawingsOption = drawingFabInstanceVm?.getDrawingActionInstance(drawingType)\n      drawingFabInstanceVm?.toggleAction(drawingsOption)\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            name: drawingType,\n            finished: true,\n            windowPoistion: movement,\n            type: 'cancel'\n          },\n          viewer\n        )\n      })\n      return\n    }\n\n    // if (drawStatus.value === DrawStatus.AfterDraw) {\n    //   startNew()\n    // }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n    const point: VcPointDrawing = renderDatas.value[index]\n\n    if (options.button === 2 && editingPoint.value) {\n      drawingFabInstanceVm.editingActionName = undefined\n      renderDatas.value[index] = restorePosition\n      drawStatus.value = DrawStatus.AfterDraw\n      renderDatas.value[index].drawStatus = DrawStatus.AfterDraw\n      editingPoint.value = undefined\n      drawTip.value = drawTipOpts.value.drawingTipStart\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            name: drawingType,\n            index,\n            renderDatas,\n            finished: true,\n            windowPoistion: movement,\n            type: 'cancel'\n          },\n          viewer\n        )\n      })\n      return\n    }\n\n    if (options.button !== 0) {\n      return\n    }\n\n    const { defined } = Cesium\n    let type = 'new'\n    if (drawStatus.value === DrawStatus.BeforeDraw) {\n      const scene = viewer.scene\n      const position = getWorldPosition(scene, movement, {} as any)\n\n      if (!defined(position)) {\n        return\n      }\n\n      point.position = position\n      point.show = true\n      point.drawStatus = DrawStatus.AfterDraw\n      drawStatus.value = DrawStatus.AfterDraw\n      drawTip.value = drawTipOpts.value.drawingTipStart\n\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            index,\n            renderDatas,\n            name: drawingType,\n            finished: true,\n            position,\n            windowPoistion: movement,\n            type\n          },\n          viewer\n        )\n      })\n    } else {\n      drawStatus.value = DrawStatus.AfterDraw\n      point.drawStatus = DrawStatus.AfterDraw\n\n      const scene = viewer.scene\n\n      if (platform().hasTouch === true) {\n        const position = getWorldPosition(scene, movement, {} as any)\n        convert2Degrees(position, point, scene)\n        if (defined(position)) {\n          point.position = position\n          point.show = true\n        }\n      }\n\n      if (editingPoint.value) {\n        editingPoint.value = undefined\n        drawingFabInstanceVm.editingActionName = undefined\n        canShowDrawTip.value = false\n        type = editorType.value\n      } else {\n        if (props.mode === 1) {\n          nextTick(() => {\n            drawingFabInstanceVm.toggleAction(selectedDrawingActionInstance)\n          })\n        }\n      }\n\n      if (selectedDrawingActionInstance) {\n        drawTip.value = drawTipOpts.value.drawingTipStart\n        canShowDrawTip.value = true\n      }\n\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            index,\n            renderDatas,\n            name: drawingType,\n            finished: true,\n            position: renderDatas.value[index].position,\n            positionDegrees: renderDatas.value[index].positionDegrees,\n            windowPoistion: movement,\n            type\n          },\n          viewer\n        )\n      })\n    }\n  }\n\n  const handleMouseMove = movement => {\n    const { viewer, getWorldPosition } = $services\n    const scene = viewer.scene\n    const { defined, SceneMode } = Cesium\n\n    if (scene.mode !== SceneMode.MORPHING) {\n      const position = getWorldPosition(scene, movement, {} as any)\n\n      if (!defined(position)) {\n        return\n      }\n\n      drawTipPosition.value = position\n\n      if (drawStatus.value === DrawStatus.AfterDraw) {\n        startNew()\n      }\n\n      if (drawStatus.value !== DrawStatus.Drawing) {\n        return\n      }\n\n      const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n      const point: VcPointDrawing = renderDatas.value[index]\n      point.position = position\n      convert2Degrees(position, point, scene)\n      getMeasurementResult(point, movement)\n      const type = editingPoint.value ? editorType.value : 'new'\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          {\n            index,\n            renderDatas,\n            name: drawingType,\n            finished: false,\n            position,\n            positionDegrees: point.positionDegrees,\n            windowPoistion: movement,\n            type\n          },\n          viewer\n        )\n      })\n    }\n  }\n\n  const getMeasurementResult = (point: VcPointDrawing, movement?) => {\n    const { viewer } = $services\n    const scene = viewer.scene\n    const { defined, defaultValue, Math: CesiumMath, SceneMode } = Cesium\n    const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const positionCartographic = ellipsoid.cartesianToCartographic(point.position, {} as any)\n    const globe = scene.globe\n    let height = defined(globe) ? defaultValue(globe.getHeight(positionCartographic), 0) : 0\n    height = props.heightReference === 0 ? positionCartographic.height : positionCartographic.height - height\n    CesiumMath.equalsEpsilon(height, 0, CesiumMath.EPSILON3) && (height = 0)\n    let slope = 0\n\n    if (scene.mode !== SceneMode.SCENE2D) {\n      if (!movement) {\n        movement = scene.cartesianToCanvasCoordinates(point.position, {} as any)\n      }\n      slope = getSlope(scene, movement)\n    }\n\n    point.show = true\n    point.lng = positionCartographic.longitude\n    point.lat = positionCartographic.latitude\n    point.height = height\n    point.slope = slope\n  }\n\n  const getSlope = (scene: Cesium.Scene, movement: Cesium.Cartesian2) => {\n    const { getWorldPosition } = $services\n    const { defined, Cartesian2, Cartesian3, Math: CesiumMath } = Cesium\n    const position = getWorldPosition(scene, movement, {} as any)\n    if (defined(position)) {\n      const cameraPosition = scene.camera.position\n      const distance = Cartesian3.distance(position, cameraPosition)\n      const scratchCartesian3s = [new Cartesian3(), new Cartesian3(), new Cartesian3(), new Cartesian3(), new Cartesian3()]\n      const normalScratch = new Cartesian3()\n      const surfaceNormalScratch = new Cartesian3()\n      if (!(1e4 < distance)) {\n        const p0 = scratchCartesian3s[0]\n        const p1 = scratchCartesian3s[1]\n        const p2 = scratchCartesian3s[2]\n        const p3 = scratchCartesian3s[3]\n        let surfaceNormal = scene.frameState.mapProjection.ellipsoid.geodeticSurfaceNormal(position, normalScratch)\n        surfaceNormal = Cartesian3.negate(surfaceNormal, surfaceNormal)\n        const u = Cartesian2.clone(movement, scratchCartesian3s[0])\n        u.x -= 2\n        u.y -= 2\n        const d = Cartesian2.clone(movement, scratchCartesian3s[1])\n        d.x -= 2\n        d.y += 2\n        const h = Cartesian2.clone(movement, scratchCartesian3s[2])\n        h.x += 2\n        h.y += 2\n        const p = Cartesian2.clone(movement, scratchCartesian3s[3])\n        p.x += 2\n        p.y -= 2\n\n        const T = getWorldPosition(scene, u, p0)\n        const x = getWorldPosition(scene, d, p1)\n        const b = getWorldPosition(scene, h, p2)\n        const E = getWorldPosition(scene, p, p3)\n        let m, f, g, _, y, C, v, S\n        if (defined(T)) {\n          m = Cartesian3.subtract(T, position, p0)\n          f = Cartesian3.magnitude(m) / distance <= 0.05 ? Cartesian3.normalize(m, p0) : undefined\n        }\n        if (defined(x)) {\n          g = Cartesian3.subtract(x, position, p1)\n          _ = Cartesian3.magnitude(g) / distance <= 0.05 ? Cartesian3.normalize(g, p1) : undefined\n        }\n        if (defined(b)) {\n          y = Cartesian3.subtract(b, position, p2)\n          C = Cartesian3.magnitude(y) / distance <= 0.05 ? Cartesian3.normalize(y, p2) : undefined\n        }\n        if (defined(E)) {\n          v = Cartesian3.subtract(E, position, p3)\n          S = Cartesian3.magnitude(v) / distance <= 0.05 ? Cartesian3.normalize(v, p3) : undefined\n        }\n\n        let P = Cartesian3.clone(Cartesian3.ZERO, surfaceNormalScratch)\n        let A = scratchCartesian3s[4]\n\n        if (defined(f) && defined(_)) {\n          A = Cartesian3.normalize(Cartesian3.cross(f, _, A), A)\n          P = Cartesian3.add(P, A, P)\n        }\n\n        if (defined(_) && defined(C)) {\n          A = Cartesian3.normalize(Cartesian3.cross(_, C, A), A)\n          P = Cartesian3.add(P, A, P)\n        }\n\n        if (defined(C) && defined(S)) {\n          A = Cartesian3.normalize(Cartesian3.cross(C, S, A), A)\n          P = Cartesian3.add(P, A, P)\n        }\n\n        if (defined(S) && defined(f)) {\n          A = Cartesian3.normalize(Cartesian3.cross(S, f, A), A)\n          P = Cartesian3.add(P, A, P)\n        }\n        if (!P.equals(Cartesian3.ZERO)) {\n          P = Cartesian3.normalize(P, P)\n          return CesiumMath.asinClamped(Math.abs(Math.sin(Cartesian3.angleBetween(P, surfaceNormal))))\n        }\n      }\n    }\n    return 0\n  }\n\n  const onEditorClick = e => {\n    editorPosition.value = [0, 0, 0]\n    showEditor.value = false\n\n    if (!props.editable) {\n      return\n    }\n    editorType.value = e\n    const { viewer, drawingFabInstance } = $services\n    const drawingFabInstanceVm = drawingFabInstance?.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (e === 'move') {\n      drawTip.value = drawTipOpts.value.drawingTipEditing\n      drawStatus.value = DrawStatus.Drawing\n      editingPoint.value = mouseoverPoint.value\n      canShowDrawTip.value = true\n      restorePosition = Object.assign({}, renderDatas.value[editingPoint.value._vcPolylineIndx])\n      drawingFabInstanceVm.editingActionName = drawingType\n    } else if (e === 'remove') {\n      const index = mouseoverPoint.value._vcPolylineIndx\n      renderDatas.value.splice(index, 1)\n    } else {\n      const index = mouseoverPoint.value._vcPolylineIndx\n      const polyline = renderDatas.value[index]\n      props.editorOpts?.[e]?.callback?.(index, polyline)\n    }\n\n    emit(\n      'editorEvt',\n      {\n        type: e,\n        name: drawingType,\n        renderDatas,\n        index: mouseoverPoint.value._vcPolylineIndx,\n        pointIndex: mouseoverPoint.value._index,\n        point: mouseoverPoint.value\n      },\n      viewer\n    )\n  }\n\n  const clear = () => {\n    renderDatas.value = []\n    stop()\n  }\n\n  const getLabelText = (point: VcPointDrawing) => {\n    const { viewer } = $services\n    const scene = viewer.scene\n    const positionCartographic = (scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid).cartesianToCartographic(point.position, {} as any)\n    if (!Cesium.defined(positionCartographic)) {\n      return ''\n    }\n\n    return (\n      `${t('vc.measurement.point.lng')}${MeasureUnits.angleToString(\n        positionCartographic.longitude,\n        props.measureUnits?.angleUnits,\n        props.locale,\n        props.decimals?.lng\n      )}\\n` +\n      `${t('vc.measurement.point.lat')}${MeasureUnits.angleToString(\n        positionCartographic.latitude,\n        props.measureUnits?.angleUnits,\n        props.locale,\n        props.decimals?.lat\n      )}\\n` +\n      `${t('vc.measurement.point.height')}${MeasureUnits.distanceToString(\n        point.height,\n        props.measureUnits?.distanceUnits,\n        props.locale,\n        props.decimals?.height\n      )}\\n` +\n      `${t('vc.measurement.point.slope')}${MeasureUnits.angleToString(\n        point.slope,\n        props.measureUnits?.slopeUnits,\n        props.locale,\n        props.decimals?.slope\n      )}`\n    )\n  }\n\n  if (props.preRenderDatas && props.preRenderDatas.length) {\n    const { viewer } = $services\n    props.preRenderDatas.forEach(preRenderData => {\n      const pointDrawing: VcPointDrawing = {\n        drawStatus: DrawStatus.AfterDraw,\n        show: true,\n        position: makeCartesian3(preRenderData) as Cesium.Cartesian3,\n        lng: 0,\n        lat: 0,\n        height: 0,\n        slope: 0,\n\n        pointOpts: {},\n        labelOpts: {},\n        billboardOpts: {}\n      }\n      const cart = Cesium.Cartographic.fromCartesian(pointDrawing.position, viewer.scene.globe.ellipsoid)\n      pointDrawing.positionDegrees = [Cesium.Math.toDegrees(cart.longitude), Cesium.Math.toDegrees(cart.latitude), cart.height] as [\n        number,\n        number,\n        number\n      ]\n\n      getMeasurementResult(pointDrawing)\n\n      renderDatas.value.push(pointDrawing)\n    })\n  }\n\n  // life cycle\n  onUnmounted(() => {\n    unwatchFns.forEach(item => item())\n    unwatchFns = []\n  })\n\n  // expose public methods\n  const publicMethods = { renderDatas, startNew, stop, clear, handleMouseClick, handleMouseMove }\n  Object.assign(instance.proxy, publicMethods)\n\n  return () => {\n    const { createGuid } = Cesium\n    const children: Array<VNode> = []\n    const pointsRender: Array<any> = []\n    const labelsRender: Array<any> = []\n    const billboardsRender: Array<any> = []\n    renderDatas.value.forEach((point, index) => {\n      const pointOpts = Object.assign({}, props.pointOpts, point.pointOpts)\n      pointsRender.push({\n        position: point.position,\n        id: createGuid(),\n        _vcPolylineIndx: index, // for editor\n        ...pointOpts,\n        show: (point.show && props.pointOpts?.show) || props.editable || point.drawStatus === DrawStatus.Drawing\n      })\n\n      const labelsOpts = Object.assign({}, props.labelOpts, point.labelOpts)\n\n      if (props.showLabel) {\n        if (cmpName === 'VcDrawingPin') {\n          const billboardOpts = Object.assign({}, props.billboardOpts, point.billboardOpts)\n          billboardsRender.push({\n            position: point.position,\n            id: createGuid(),\n            _vcPolylineIndx: index, // for editor\n            ...billboardOpts\n          })\n\n          labelsOpts.text &&\n            labelsRender.push({\n              position: point.position,\n              id: createGuid(),\n              ...labelsOpts\n            })\n        } else {\n          labelsRender.push({\n            position: point.position,\n            id: createGuid(),\n            text: getLabelText(point),\n            ...labelsOpts\n          })\n        }\n      }\n    })\n    children.push(\n      h(VcCollectionPoint, {\n        enableMouseEvent: props.enableMouseEvent,\n        points: pointsRender,\n        onMouseover: onMouseoverPoints,\n        onMouseout: onMouseoutPoints,\n        onReady: onVcCollectionPointReady\n      })\n    )\n    // ;(cmpName.includes('VcMeasurement') || cmpName === 'VcDrawingPin') &&\n    children.push(\n      h(VcCollectionLabel, {\n        enableMouseEvent: props.enableMouseEvent,\n        labels: labelsRender,\n        onReady: onVcCollectionLabelReady\n      })\n    )\n\n    cmpName === 'VcDrawingPin' &&\n      children.push(\n        h(VcCollectionBillboard, {\n          enableMouseEvent: props.enableMouseEvent,\n          billboards: billboardsRender\n        })\n      )\n\n    if (props.drawtip?.show && canShowDrawTip.value) {\n      const { viewer } = $services\n      children.push(\n        h(\n          VcOverlayHtml,\n          {\n            position: drawTipPosition.value,\n            pixelOffset: props.drawtip?.pixelOffset,\n            teleport: {\n              to: viewer.container\n            }\n          },\n          () =>\n            h(\n              'div',\n              {\n                class: 'vc-drawtip vc-tooltip--style'\n              },\n              drawTip.value\n            )\n        )\n      )\n    }\n\n    if (showEditor.value) {\n      const buttons: Array<VNode> = []\n      if (mouseoverPoint.value) {\n        const editorOpts = props.editorOpts\n        for (const key in editorOpts) {\n          if (!Array.isArray(editorOpts[key]) && typeof editorOpts[key] !== 'number') {\n            const opts = {\n              ...editorOpts[key]\n            }\n            delete opts.color\n\n            buttons.push(\n              h(\n                VcBtn,\n                {\n                  style: { color: editorOpts[key].color, background: editorOpts[key].background },\n                  ...opts,\n                  onclick: onEditorClick.bind(undefined, key)\n                },\n                () =>\n                  h(\n                    VcTooltip,\n                    {\n                      ...editorOpts[key].tooltip\n                    },\n                    () => h('strong', null, editorOpts[key].tooltip?.tip || t(`vc.drawing.editor.${key}`))\n                  )\n              )\n            )\n          }\n        }\n      }\n\n      const { viewer } = $services\n      children.push(\n        h(\n          VcOverlayHtml,\n          {\n            position: editorPosition.value,\n            pixelOffset: props.editorOpts?.pixelOffset,\n            teleport: {\n              to: viewer.container\n            },\n            onMouseenter: onMouseenterEditor,\n            onMouseleave: onMouseleaveEditor\n          },\n          () =>\n            h(\n              'div',\n              {\n                class: 'vc-editor'\n              },\n              buttons\n            )\n        )\n      )\n    }\n    return h(\n      VcCollectionPrimitive,\n      {\n        ref: primitiveCollectionRef,\n        show: props.show,\n        onReady: onPrimitiveCollectionReady\n      },\n      () => children\n    )\n  }\n}\n"],"names":["h","_a"],"mappings":"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"}