{"version":3,"file":"use-drawing-segment.mjs","sources":["../../../../../packages/composables/use-drawing/use-drawing-segment.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-22 14:09:42\n * @LastEditTime: 2022-02-15 16:32:09\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\composables\\use-drawing\\use-drawing-segment.ts\n */\nimport { VcBtn, VcTooltip } from '@vue-cesium/components/ui'\nimport { VcOverlayHtml } from '@vue-cesium/components/overlays'\nimport { VcCollectionLabel, VcCollectionPoint, VcCollectionPrimitive, VcPolygon } from '@vue-cesium/components/primitive-collections'\nimport { VcPrimitive, VcPrimitiveGroundPolyline } from '@vue-cesium/components/primitives'\nimport { VcGeometryInstance } from '@vue-cesium/components/geometry-instance'\nimport {\n  VcGeometryPolyline,\n  VcGeometryGroundPolyline,\n  VcGeometryEllipsoidOutline,\n  VcGeometryEllipsoidOutlineProps\n} from '@vue-cesium/components/geometries'\nimport { VcPostProcessStage } from '@vue-cesium/components/post-processes'\nimport { useLocale } from '../use-locale'\nimport { DrawStatus, MeasureUnits } from '@vue-cesium/shared'\nimport {\n  calculateAreaByPostions,\n  getGeodesicDistance,\n  getPolylineSegmentHeading,\n  getHeadingPitchRoll,\n  getPolylineSegmentEndpoint,\n  getPolylineSegmentPitch,\n  makeCartesian2,\n  makeCartesian3,\n  makeCartesian3Array,\n  getFirstIntersection\n} from '@vue-cesium/utils/cesium-helpers'\nimport { VcSegmentDrawing } from '@vue-cesium/utils/drawing-types'\nimport type { VcComponentInternalInstance, VcPosition } from '@vue-cesium/utils/types'\nimport { isUndefined } from '@vue-cesium/utils/util'\nimport type { VNode } from 'vue'\nimport { computed, getCurrentInstance, h, nextTick, ref } from 'vue'\nimport useCommon from '../use-common'\nimport useDrawingAction from './use-drawing-action'\n\nexport default function (props, ctx, cmpName: string, fs?: 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\n  const { emit } = ctx\n\n  const innerRadii = ref<VcPosition>({ x: 0.01, y: 0.01, z: 0.01 })\n  let lightCamera: Cesium.Camera, shadowMap: Cesium.ShadowMap\n  if (cmpName === 'VcAnalysisViewshed') {\n    lightCamera = new Cesium.Camera($services.viewer.scene)\n    lightCamera.frustum.near = 1\n    lightCamera.frustum.far = 400\n    ;(lightCamera.frustum as any).fov = Cesium.Math.PI / 3\n    ;(lightCamera.frustum as any).aspectRatio = 3\n\n    shadowMap = new Cesium.ShadowMap({\n      context: ($services.viewer.scene as any).context,\n      lightCamera,\n      enabled: true,\n      isPointLight: true,\n      pointLightRadius: 400,\n      cascadesEnabled: false,\n      size: 2048,\n      softShadows: true,\n      normalOffset: false,\n      fromLightSource: false\n    } as any)\n  }\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    onVcPrimitiveReady\n  } = useDrawingAction(props, ctx, instance, cmpName, $services)\n\n  const renderDatas = ref<Array<VcSegmentDrawing>>([])\n  if (props.preRenderDatas && props.preRenderDatas.length) {\n    props.preRenderDatas.forEach(preRenderData => {\n      const segmentDrawing: VcSegmentDrawing = {\n        positions: makeCartesian3Array(preRenderData) as Array<Cesium.Cartesian3>,\n        show: true,\n        drawStatus: DrawStatus.AfterDraw,\n        distance: 0,\n        labels: []\n      }\n\n      cmpName === 'VcMeasurementVertical' &&\n        Object.assign(segmentDrawing, {\n          draggingPlane: new Cesium.Plane(Cesium.Cartesian3.UNIT_X, 0),\n          surfaceNormal: new Cesium.Cartesian3()\n        })\n\n      renderDatas.value.push(segmentDrawing)\n    })\n  }\n  let restorePosition\n  const computedRenderDatas = computed<Array<VcSegmentDrawing>>(() => {\n    const polylines: Array<VcSegmentDrawing> = []\n    const { Cartesian3, Cartographic, Rectangle, createGuid, defined, Math: CesiumMath, Ray } = Cesium\n    const { viewer } = $services\n\n    renderDatas.value.forEach(polylineSegment => {\n      const startPosition = polylineSegment.positions[0]\n      const endPosition = polylineSegment.positions[1]\n\n      if (Cartesian3.equals(startPosition, endPosition)) {\n        return\n      }\n\n      const labels: Array<{\n        position: Cesium.Cartesian3\n        id: string\n        text: string\n      }> = []\n      const distances: number[] = []\n      const angles: number[] = []\n\n      const distance =\n        props.polylineOpts?.arcType === 0\n          ? Cartesian3.distance(startPosition, endPosition)\n          : getGeodesicDistance(startPosition, endPosition, $services.viewer.scene.globe.ellipsoid)\n      const labelPosition = Cartesian3.midpoint(startPosition, endPosition, {} as any)\n\n      const heading = getPolylineSegmentHeading(startPosition, endPosition)\n      const pitch = getPolylineSegmentPitch(startPosition, endPosition)\n\n      const polyline: VcSegmentDrawing = {\n        ...polylineSegment,\n        distance,\n        heading,\n        pitch\n      }\n\n      if (cmpName === 'VcDrawingRectangle' || cmpName === 'VcMeasurementRectangle') {\n        const startCartographic = Cartographic.fromCartesian(startPosition, viewer.scene.globe.ellipsoid)\n        const endCartographic = Cartographic.fromCartesian(endPosition, viewer.scene.globe.ellipsoid)\n        const height = startCartographic.height\n        !props.clampToGround && (endCartographic.height = height)\n\n        const rectangle = Rectangle.fromCartesianArray(polylineSegment.positions, viewer.scene.globe.ellipsoid)\n        const rectangleArr = [\n          rectangle.west,\n          rectangle.north,\n          height,\n          rectangle.east,\n          rectangle.north,\n          height,\n          rectangle.east,\n          rectangle.south,\n          height,\n          rectangle.west,\n          rectangle.south,\n          height,\n          rectangle.west,\n          rectangle.north,\n          height\n        ]\n        const polygonPositions = Cartesian3.fromRadiansArrayHeights(rectangleArr, viewer.scene.globe.ellipsoid)\n        Object.assign(polyline, {\n          polygonPositions,\n          height\n        })\n      } else if (cmpName === 'VcDrawingRegular' || cmpName === 'VcMeasurementRegular') {\n        const startPosition = polylineSegment.positions[0]\n        const endPosition = polylineSegment.positions[1]\n\n        const hpr = getHeadingPitchRoll(startPosition, endPosition, viewer.scene)\n        if (!isUndefined(hpr) && defined(hpr)) {\n          const polygonPositions: Array<Cesium.Cartesian3> = []\n          const startCartographic = Cartographic.fromCartesian(startPosition, viewer.scene.globe.ellipsoid)\n          const endCartographic = Cartographic.fromCartesian(endPosition, viewer.scene.globe.ellipsoid)\n\n          !props.clampToGround && (endCartographic.height = startCartographic.height)\n          polygonPositions.push(Cartographic.toCartesian(endCartographic, viewer.scene.globe.ellipsoid))\n          for (let i = 0; i < (props.edge || 4) - 1; i++) {\n            const position = getPolylineSegmentEndpoint(\n              startPosition,\n              (hpr[0] += (Math.PI * 2) / (props.edge || 4)),\n              distance,\n              viewer.scene.globe.ellipsoid\n            )\n            polygonPositions.push(position)\n          }\n\n          Object.assign(polyline, {\n            polygonPositions,\n            height: startCartographic.height\n          })\n        }\n      } else if (cmpName === 'VcAnalysisViewshed') {\n        // lightCamera\n        const viewPosition = makeCartesian3(startPosition) as Cesium.Cartesian3\n        lightCamera.position = viewPosition\n        lightCamera.frustum.near = 0.001 * distance\n        lightCamera.frustum.far = distance\n        const hr = CesiumMath.toRadians(props.ellipsoidOpts.horizontalViewAngle)\n        const vr = CesiumMath.toRadians(props.ellipsoidOpts.verticalViewAngle)\n        const aspectRatio = (polyline.distance * Math.tan(hr / 2) * 2) / (distance * Math.tan(vr / 2) * 2)\n        ;(lightCamera.frustum as any).fov = hr > vr ? hr : vr\n        ;(lightCamera.frustum as any).aspectRatio = aspectRatio\n        lightCamera.setView({\n          destination: viewPosition,\n          orientation: {\n            heading: CesiumMath.toRadians(heading || 0),\n            pitch: CesiumMath.toRadians(pitch || 0),\n            roll: 0\n          }\n        })\n\n        // shadowMap\n        shadowMap._pointLightRadius = distance\n        viewer.scene.shadowMap = shadowMap\n      } else if (cmpName === 'VcAnalysisSightline') {\n        if (props.sightlineType === 'segment') {\n          const positionsNew: Array<Cesium.Cartesian3> = []\n          positionsNew.push(startPosition)\n          const objectsToExclude = []\n          const primitiveCollection: Array<Cesium.PrimitiveCollection> = (primitiveCollectionRef.value.cesiumObject as any)._primitives\n          primitiveCollection.forEach(primitive => {\n            if (primitive instanceof Cesium.PointPrimitiveCollection) {\n              objectsToExclude.push(...primitive._pointPrimitives)\n            }\n            if (primitive instanceof Cesium.Primitive) {\n              objectsToExclude.push(primitive)\n            }\n          })\n          const intersection = getFirstIntersection(startPosition, endPosition, $services.viewer, objectsToExclude)\n          if (defined(intersection)) {\n            positionsNew.push(intersection)\n          }\n          positionsNew.push(endPosition)\n          let distance = 0\n          const distances = []\n          for (let i = 0; i < positionsNew.length - 1; i++) {\n            const s = Cartesian3.distance(positionsNew[i], positionsNew[i + 1])\n            distances.push(s)\n            distance = distance + s\n          }\n          Object.assign(polyline, {\n            positions: positionsNew,\n            distance\n          })\n        } else if (props.sightlineType === 'circle') {\n          // Todo\n        }\n      } else {\n        labels.push({\n          position: labelPosition,\n          id: createGuid(),\n          text: MeasureUnits.distanceToString(distance, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n          ...props.labelOpts\n        })\n      }\n\n      if (polyline.polygonPositions && polyline.polygonPositions.length) {\n        const positions = polyline.polygonPositions.slice()\n        props.loop && positions.length > 2 && positions.push(positions[0])\n        for (let i = 0; i < positions.length - 1; i++) {\n          let s = 0\n          if (props.polylineOpts?.arcType === 0) {\n            s = getGeodesicDistance(positions[i], positions[i + 1], $services.viewer.scene.globe.ellipsoid)\n          } else {\n            s = Cartesian3.distance(positions[i], positions[i + 1])\n          }\n          distances.push(s)\n          if (s > 0 && positions.length > 2 && props.showDistanceLabel) {\n            labels.push({\n              text: MeasureUnits.distanceToString(s, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n              position: Cartesian3.midpoint(positions[i], positions[i + 1], {} as any),\n              id: createGuid(),\n              ...props.labelsOpts\n            })\n          }\n          if (positions.length > 2 && props.showAngleLabel) {\n            if (i > 0 || props.loop) {\n              const point0 = positions[i === 0 ? positions.length - 2 : i - 1]\n              const point1 = positions[i]\n              const point2 = positions[i + 1]\n              const diffrence1 = Cartesian3.subtract(point0, point1, {} as any)\n              const diffrence2 = Cartesian3.subtract(point2, point1, {} as any)\n              let angle = 0\n              if (!(Cartesian3.ZERO.equals(diffrence1) || Cartesian3.ZERO.equals(diffrence2))) {\n                angle = Cartesian3.angleBetween(diffrence1, diffrence2)\n              }\n              angles.push(angle)\n              labels.push({\n                text: MeasureUnits.angleToString(angle, props.measureUnits?.angleUnits, props.locale, props.decimals?.angle),\n                position: point1,\n                id: createGuid(),\n                ...props.labelsOpts\n              })\n            }\n          }\n        }\n\n        const area = calculateAreaByPostions(positions)\n        labels.push({\n          text: MeasureUnits.areaToString(area, props.measureUnits?.areaUnits, props.locale, props.decimals?.area),\n          position: polylineSegment.positions[0],\n          id: createGuid(),\n          ...props.labelOpts\n        })\n      }\n\n      if (props.showComponentLines) {\n        Object.assign(polyline, {\n          xyPolylinePositions: [new Cartesian3(), new Cartesian3(), new Cartesian3()],\n          xyBoxPositions: [new Cartesian3(), new Cartesian3(), new Cartesian3()],\n          xDistance: 0,\n          yDistance: 0,\n          xAngle: 0,\n          yAngle: 0\n        })\n        updateComponents(polyline)\n\n        labels.push({\n          position: polyline.xLabelPosition,\n          id: createGuid(),\n          text: MeasureUnits.distanceToString(polyline.xDistance || 0, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n          ...props.xLabelOpts\n        })\n\n        labels.push({\n          position: polyline.yLabelPosition,\n          id: createGuid(),\n          text: MeasureUnits.distanceToString(polyline.yDistance || 0, props.measureUnits?.distanceUnits, props.locale, props.decimals?.distance),\n          ...props.yLabelOpts\n        })\n\n        labels.push({\n          position: polyline.xAnglePosition,\n          id: createGuid(),\n          text: MeasureUnits.angleToString(polyline.xAngle || 0, props.measureUnits?.angleUnits, props.locale, props.decimals?.angle),\n          ...props.xAngleLabelOpts\n        })\n\n        labels.push({\n          position: polyline.yAnglePosition,\n          id: createGuid(),\n          text: MeasureUnits.angleToString(polyline.yAngle || 0, props.measureUnits?.angleUnits, props.locale, props.decimals?.angle),\n          ...props.yAngleLabelOpts\n        })\n      }\n\n      Object.assign(polyline, {\n        labels\n      })\n\n      polylines.push(polyline)\n    })\n    return polylines\n  })\n\n  // methods\n  instance.createCesiumObject = async () => {\n    return primitiveCollectionRef\n  }\n\n  instance.mount = async () => {\n    const { viewer } = $services\n    cmpName === 'VcMeasurementDistance' && viewer.scene.preRender.addEventListener(updateLabelPosition)\n    ;(cmpName === 'VcMeasurementRegular' || cmpName === 'VcMeasurementRectangle') &&\n      viewer.scene.preRender.addEventListener(updateLabelPositionPolygon)\n    return true\n  }\n\n  instance.unmount = async () => {\n    const { viewer } = $services\n    cmpName === 'VcMeasurementDistance' && viewer.scene.preRender.removeEventListener(updateLabelPosition)\n    ;(cmpName === 'VcMeasurementRegular' || cmpName === 'VcMeasurementRectangle') &&\n      viewer.scene.preRender.removeEventListener(updateLabelPositionPolygon)\n    return true\n  }\n\n  const getHeightPosition = (polyline: VcSegmentDrawing, movement: Cesium.Cartesian2) => {\n    const { defined, SceneMode, Cartesian3, IntersectionTests, Plane, SceneTransforms, Ray } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const camera = scene.camera\n    const direction = camera.direction\n    const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const positions = polyline.positions\n    const p1 = positions[0]\n    let startPoint = p1\n    let endPoint = positions[1]\n    let draggingPlane = polyline.draggingPlane\n    let surfaceNormal = polyline.surfaceNormal!\n    let normal = surfaceNormal\n\n    if (scene.mode === SceneMode.COLUMBUS_VIEW) {\n      normal = Cartesian3.UNIT_X\n      const startPointCartographic = ellipsoid.cartesianToCartographic(p1, {} as any)\n      startPoint = scene.mapProjection.project(startPointCartographic, {} as any)\n      Cartesian3.fromElements(startPoint.z, startPoint.x, startPoint.y, startPoint)\n    }\n\n    let forward = Cartesian3.cross(normal, direction, {} as any) // m\n    forward = Cartesian3.cross(normal, forward, forward)\n    forward = Cartesian3.normalize(forward, forward)\n    draggingPlane = Plane.fromPointNormal(startPoint, forward, draggingPlane)\n    const ray = camera.getPickRay(movement, new Ray())\n    endPoint = IntersectionTests.rayPlane(ray, draggingPlane, {} as any)\n    if (defined(endPoint)) {\n      if (scene.mode === SceneMode.COLUMBUS_VIEW) {\n        endPoint = Cartesian3.fromElements(endPoint.y, endPoint.z, endPoint.x, endPoint)\n        const endPointCartographic = scene.mapProjection.unproject(endPoint, {} as any)\n        endPoint = ellipsoid.cartographicToCartesian(endPointCartographic, endPoint)\n      }\n\n      if (SceneTransforms.wgs84ToWindowCoordinates(scene, positions[0], {} as any).y < movement.y) {\n        surfaceNormal = Cartesian3.negate(surfaceNormal, {} as any)\n      }\n      let diffrence = Cartesian3.subtract(endPoint, p1, {} as any)\n      diffrence = Cartesian3.projectVector(diffrence, surfaceNormal, diffrence)\n      endPoint = Cartesian3.add(p1, diffrence, endPoint)\n      return endPoint\n    }\n  }\n\n  const updateComponents = (polyline: VcSegmentDrawing) => {\n    const { Cartesian3, Math: CesiumMath, defined } = Cesium\n    const { viewer } = $services\n    const ellipsoid = viewer.scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const startPosition = polyline.positions[0]\n    const endPosition = polyline.positions[1]\n    const startCartographic = ellipsoid.cartesianToCartographic(startPosition, {} as any)\n\n    if (!defined(startCartographic)) {\n      return\n    }\n    const endCartographic = ellipsoid.cartesianToCartographic(endPosition, {} as any)\n\n    const startHeight = startCartographic.height\n    const endHeight = endCartographic.height\n\n    let startPoint, endPoint, height1, height2\n\n    if (startHeight < endHeight) {\n      startPoint = startPosition\n      endPoint = endPosition\n      height2 = endHeight\n      height1 = startHeight\n    } else {\n      startPoint = endPosition\n      endPoint = startPosition\n      height2 = startHeight\n      height1 = endHeight\n    }\n\n    const xyPolylinePositions = polyline.xyPolylinePositions\n    if (xyPolylinePositions === undefined) {\n      return\n    }\n    xyPolylinePositions[0] = startPoint\n    xyPolylinePositions[2] = endPoint\n    let normal = ellipsoid.geodeticSurfaceNormal(startPoint, {} as any)\n    normal = Cartesian3.multiplyByScalar(normal, height2 - height1, normal)\n    const xyPoint = Cartesian3.add(startPoint, normal, xyPolylinePositions[1])\n    if (!(Cartesian3.equalsEpsilon(xyPoint, endPoint, CesiumMath.EPSILON10) && Cartesian3.equalsEpsilon(xyPoint, startPoint, CesiumMath.EPSILON10))) {\n      let diffrenceX = Cartesian3.subtract(endPoint, xyPoint, {} as any)\n      let diffrenceY = Cartesian3.subtract(startPoint, xyPoint, {} as any)\n      const distanceMin = Math.min(Cartesian3.magnitude(diffrenceX), Cartesian3.magnitude(diffrenceY))\n      const factor = 15 < distanceMin ? 0.15 * distanceMin : 0.25 * distanceMin\n      diffrenceX = Cartesian3.normalize(diffrenceX, diffrenceX)\n      diffrenceY = Cartesian3.normalize(diffrenceY, diffrenceY)\n      diffrenceX = Cartesian3.multiplyByScalar(diffrenceX, factor, diffrenceX)\n      diffrenceY = Cartesian3.multiplyByScalar(diffrenceY, factor, diffrenceY)\n      const xyBoxPositions = polyline.xyBoxPositions\n      if (xyBoxPositions === undefined) {\n        return\n      }\n      Cartesian3.add(xyPoint, diffrenceX, xyBoxPositions[0])\n      Cartesian3.add(xyBoxPositions[0], diffrenceY, xyBoxPositions[1])\n      Cartesian3.add(xyPoint, diffrenceY, xyBoxPositions[2])\n\n      polyline.xLabelPosition = Cartesian3.midpoint(xyPoint, endPoint, {} as any)\n      polyline.yLabelPosition = Cartesian3.midpoint(startPoint, xyPoint, {} as any)\n      polyline.xAnglePosition = endPoint\n      polyline.yAnglePosition = startPoint\n      const diffrence1 = Cartesian3.subtract(xyPoint, endPoint, {} as any)\n      const diffrence2 = Cartesian3.subtract(xyPoint, startPoint, {} as any)\n      let diffrence3 = Cartesian3.subtract(endPoint, startPoint, {} as any)\n      polyline.yAngle = Cartesian3.angleBetween(diffrence2, diffrence3)\n      diffrence3 = Cartesian3.negate(diffrence3, diffrence3)\n      polyline.xAngle = Cartesian3.angleBetween(diffrence1, diffrence3)\n      polyline.xDistance = Cartesian3.magnitude(diffrence1)\n      polyline.yDistance = Cartesian3.magnitude(diffrence2)\n    }\n  }\n\n  const updateLabelPositionPolygon = () => {\n    computedRenderDatas.value.forEach((polyline, index) => {\n      const positions = polyline.polygonPositions!\n      if (!(positions.length < 2)) {\n        const { defined, SceneTransforms, Cartesian2, HorizontalOrigin } = Cesium\n        const { viewer } = $services\n        const scene = viewer.scene\n\n        let startPosition = polyline.positions[0]\n        const positionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, startPosition, {} as any)\n\n        let startPositionWindow = defined(positionWindow)\n          ? Cartesian2.clone(positionWindow, {} as any)\n          : Cartesian2.fromElements(Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, {} as any)\n        let startY = startPositionWindow.y\n        const primitiveCollection = primitiveCollectionRef.value?.cesiumObject as Cesium.PrimitiveCollection\n        const labelCollection: Array<Cesium.LabelCollection> = (primitiveCollection as any)._primitives.filter(\n          v => v instanceof Cesium.LabelCollection\n        )\n        const labels = labelCollection[index]._labels\n        const labelTotalLength = labels[labels.length - 1]\n        for (let i = 1; i < positions.length; i++) {\n          const positionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, positions[i], {} as any)\n          if (defined(positionWindow)) {\n            const l = (startPositionWindow.y - positionWindow.y) / (positionWindow.x - startPositionWindow.x)\n            const label = labels[i - 1]\n            if (label && label !== labelTotalLength) {\n              label.horizontalOrigin = 0 < l ? HorizontalOrigin.LEFT : HorizontalOrigin.RIGHT\n            }\n\n            if (positionWindow.y < startY) {\n              startY = positionWindow.y\n              startPosition = positions[i]\n            }\n\n            startPositionWindow = Cartesian2.clone(positionWindow, startPositionWindow)\n          }\n\n          polyline.drawStatus === DrawStatus.AfterDraw && (labelTotalLength.position = startPosition)\n        }\n      }\n    })\n  }\n\n  const updateLabelPosition = () => {\n    computedRenderDatas.value.forEach((polyline, index) => {\n      const { defined, SceneTransforms, HorizontalOrigin } = Cesium\n      const { viewer } = $services\n      const scene = viewer.scene\n      const primitiveCollection = primitiveCollectionRef.value?.cesiumObject as Cesium.PrimitiveCollection\n      const positions = polyline.positions\n      const startPosition = positions[0]\n      const endPosition = positions[1]\n      const startPositionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, startPosition, {} as any)\n      const endPositionWindow = SceneTransforms.wgs84ToWindowCoordinates(scene, endPosition, {} as any)\n      if (defined(startPositionWindow) && defined(endPositionWindow)) {\n        const labelCollection: Array<Cesium.LabelCollection> = (primitiveCollection as any)._primitives.filter(\n          v => v instanceof Cesium.LabelCollection\n        )\n        if (labelCollection.length) {\n          const label = labelCollection[index].get(0)\n          let yLabel: Cesium.Label | undefined,\n            xAngleLabel: Cesium.Label | undefined,\n            yPixelOffset: Cesium.Cartesian2 | undefined,\n            xPixelOffset: Cesium.Cartesian2 | undefined\n          if (props.showComponentLines) {\n            yLabel = labelCollection[index].get(2)\n            xAngleLabel = labelCollection[index].get(3)\n            yPixelOffset = makeCartesian2(props.yLabelOpts?.pixelOffset) as Cesium.Cartesian2\n            xPixelOffset = makeCartesian2(props.xAngleLabelOpts?.pixelOffset) as Cesium.Cartesian2\n          }\n\n          if ((startPositionWindow.y - endPositionWindow.y) / (endPositionWindow.x - startPositionWindow.x) > 0) {\n            if (!isUndefined(yLabel) && !isUndefined(yPixelOffset)) {\n              yPixelOffset.x = -9\n              yLabel.pixelOffset = yPixelOffset\n              yLabel.horizontalOrigin = HorizontalOrigin.RIGHT\n            }\n\n            if (!isUndefined(xAngleLabel) && !isUndefined(xPixelOffset)) {\n              xPixelOffset.x = 12\n              xAngleLabel.pixelOffset = xPixelOffset\n              xAngleLabel.horizontalOrigin = HorizontalOrigin.LEFT\n            }\n\n            label.horizontalOrigin = HorizontalOrigin.LEFT\n          } else {\n            if (!isUndefined(yLabel) && !isUndefined(yPixelOffset)) {\n              yPixelOffset.x = 9\n              yLabel.pixelOffset = yPixelOffset\n              yLabel.horizontalOrigin = HorizontalOrigin.LEFT\n            }\n\n            if (!isUndefined(xAngleLabel) && !isUndefined(xPixelOffset)) {\n              xPixelOffset.x = -12\n              xAngleLabel.pixelOffset = xPixelOffset\n              xAngleLabel.horizontalOrigin = HorizontalOrigin.RIGHT\n            }\n\n            label.horizontalOrigin = HorizontalOrigin.RIGHT\n          }\n        }\n      }\n    })\n  }\n\n  const makeHeightPositions = (polyline: VcSegmentDrawing, position: Cesium.Cartesian3) => {\n    const { defined, defaultValue, Cartesian3 } = Cesium\n    const { viewer } = $services\n    const scene = viewer.scene\n    const positions = polyline.positions\n    positions[0] = position\n    const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n    const postionCartographic = ellipsoid.cartesianToCartographic(position, {} as any)\n    const globe = scene.globe\n    postionCartographic.height = defined(globe) ? defaultValue(globe.getHeight(postionCartographic), 0) : 0\n    positions[1] = ellipsoid.cartographicToCartesian(postionCartographic, {} as any)\n    polyline.distance = Cartesian3.distance(positions[0], positions[1])\n    polyline.labelPosition = Cartesian3.midpoint(positions[0], positions[1], {} as any)\n  }\n\n  const startNew = () => {\n    const { Cartesian3, Plane } = Cesium\n    const polyline: VcSegmentDrawing = {\n      positions: [new Cartesian3(), new Cartesian3()],\n      show: false,\n      drawStatus: DrawStatus.BeforeDraw,\n      distance: 0,\n      labels: []\n    }\n    if (cmpName === 'VcAnalysisViewshed') {\n      clear()\n    }\n\n    cmpName === 'VcMeasurementVertical' &&\n      Object.assign(polyline, {\n        draggingPlane: new Plane(Cartesian3.UNIT_X, 0),\n        surfaceNormal: new Cartesian3()\n      })\n\n    renderDatas.value.push(polyline)\n    drawStatus.value = DrawStatus.BeforeDraw\n    canShowDrawTip.value = true\n    drawTip.value = drawTipOpts.value.drawingTipStart\n  }\n\n  const stop = () => {\n    if (drawStatus.value === DrawStatus.Drawing) {\n      renderDatas.value.pop()\n    }\n    drawStatus.value = DrawStatus.BeforeDraw\n    canShowDrawTip.value = false\n    drawTipPosition.value = [0, 0, 0]\n  }\n\n  const handleMouseClick = (movement: Cesium.Cartesian2, options?) => {\n    const { viewer, drawingFabInstance, selectedDrawingActionInstance, getWorldPosition } = $services\n\n    if (options.button === 2 && options.ctrl) {\n      // 取消绘制\n      const drawingsOption = (drawingFabInstance?.proxy as any).drawingActionInstances.find(v => v.name === drawingType)\n      ;(drawingFabInstance?.proxy as any).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 polyline: VcSegmentDrawing = renderDatas.value[index]\n    const positions = polyline.positions\n\n    if (options.button === 2 && editingPoint.value) {\n      // 放弃编辑\n      ;(drawingFabInstance?.proxy as any).editingActionName = undefined\n      polyline.positions[editingPoint.value._index] = restorePosition\n      drawStatus.value = DrawStatus.AfterDraw\n      polyline.drawStatus = DrawStatus.AfterDraw\n      editingPoint.value = undefined\n      drawTip.value = drawTipOpts.value.drawingTipStart\n      if (cmpName === 'VcMeasurementHeight') {\n        makeHeightPositions(polyline, restorePosition)\n      }\n      nextTick(() => {\n        emit(\n          'drawEvt',\n          Object.assign(\n            {\n              name: drawingType,\n              index,\n              renderDatas,\n              finished: true,\n              windowPoistion: movement,\n              type: 'cancel'\n            },\n            computedRenderDatas.value[index]\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    let emitPosition\n    let finished = false\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      positions[0] = position\n      positions[1] = position\n      polyline.show = true\n      drawStatus.value = DrawStatus.Drawing\n      polyline.drawStatus = DrawStatus.Drawing\n      drawTip.value = drawTipOpts.value.drawingTipEnd\n      emitPosition = position\n      finished = false\n\n      if (cmpName === 'VcMeasurementVertical') {\n        const ellipsoid = scene.frameState.mapProjection.ellipsoid as Cesium.Ellipsoid\n        polyline.surfaceNormal = ellipsoid.geodeticSurfaceNormal(position, polyline.surfaceNormal)\n      }\n\n      if (cmpName === 'VcMeasurementHeight') {\n        makeHeightPositions(polyline, position)\n        finished = true\n\n        polyline.drawStatus = DrawStatus.AfterDraw\n        drawStatus.value = DrawStatus.AfterDraw\n        drawTip.value = drawTipOpts.value.drawingTipStart\n\n        if (props.mode === 1) {\n          ;(drawingFabInstance?.proxy as any).toggleAction(selectedDrawingActionInstance)\n        }\n      }\n    } else {\n      // if (cmpName !== 'VcMeasurementHeight') {\n\n      // }\n      polyline.drawStatus = DrawStatus.AfterDraw\n      drawStatus.value = DrawStatus.AfterDraw\n\n      if (editingPoint.value) {\n        editingPoint.value = undefined\n        ;(drawingFabInstance?.proxy as any).editingActionName = undefined\n        canShowDrawTip.value = false\n        drawTipPosition.value = [0, 0, 0]\n        type = editorType.value\n\n        if (selectedDrawingActionInstance) {\n          drawTip.value = drawTipOpts.value.drawingTipStart\n          canShowDrawTip.value = true\n        }\n      } else {\n        if (props.mode === 1) {\n          ;(drawingFabInstance?.proxy as any).toggleAction(selectedDrawingActionInstance)\n        }\n      }\n\n      finished = true\n      emitPosition = polyline.positions[1]\n    }\n\n    nextTick(() => {\n      emit(\n        'drawEvt',\n        Object.assign(\n          {\n            index,\n            renderDatas,\n            name: drawingType,\n            finished,\n            position: emitPosition,\n            windowPoistion: movement,\n            type\n          },\n          computedRenderDatas.value[index]\n        ),\n        viewer\n      )\n    })\n  }\n\n  const handleMouseMove = movement => {\n    const { viewer, getWorldPosition } = $services\n    const scene = viewer.scene\n    const position = getWorldPosition(scene, movement, {} as any)\n    const { defined, Cartographic } = Cesium\n    if (!defined(position)) {\n      return\n    }\n\n    drawTipPosition.value = position\n\n    if (drawStatus.value !== DrawStatus.Drawing) {\n      return\n    }\n\n    if (cmpName === 'VcMeasurementVertical' && scene.mode === Cesium.SceneMode.SCENE2D) {\n      return\n    }\n\n    const index = editingPoint.value ? editingPoint.value._vcPolylineIndx : renderDatas.value.length - 1\n    const polyline: VcSegmentDrawing = renderDatas.value[index]\n\n    if (cmpName === 'VcMeasurementVertical') {\n      const heightPostion = getHeightPosition(polyline, movement)\n\n      if (!isUndefined(heightPostion) && defined(heightPostion)) {\n        const positions = polyline.positions\n        positions[editingPoint.value ? editingPoint.value._index : 1] = heightPostion\n      }\n    } else if (cmpName === 'VcMeasurementHeight') {\n      makeHeightPositions(polyline, position)\n    } else if (\n      cmpName === 'VcDrawingRectangle' ||\n      cmpName === 'VcDrawingRegular' ||\n      cmpName === 'VcMeasurementRegular' ||\n      cmpName === 'VcMeasurementRectangle'\n    ) {\n      const positions = polyline.positions\n      const startPosition = positions[0]\n      const startCartographic = Cartographic.fromCartesian(startPosition, viewer.scene.globe.ellipsoid)\n      const endCartographic = Cartographic.fromCartesian(position, viewer.scene.globe.ellipsoid)\n      !props.clampToGround && (endCartographic.height = startCartographic.height)\n      positions[editingPoint.value ? editingPoint.value._index : 1] = Cartographic.toCartesian(endCartographic, viewer.scene.globe.ellipsoid)\n    } else if (cmpName === 'VcAnalysisSightline') {\n      // if (props.sightlineType === 'segment') {\n\n      // }\n      const positions = polyline.positions\n      if (editingPoint.value) {\n        const index = editingPoint.value._index > 0 ? 1 : 0\n        positions[index] = position\n      } else {\n        positions[1] = position\n      }\n    } else {\n      const positions = polyline.positions\n      positions[editingPoint.value ? editingPoint.value._index : 1] = position\n    }\n\n    nextTick(() => {\n      emit(\n        'drawEvt',\n        Object.assign(\n          {\n            index,\n            renderDatas,\n            name: drawingType,\n            finished: false,\n            position: polyline.positions[1],\n            windowPoistion: movement,\n            type: editingPoint.value ? editorType : 'new'\n          },\n          computedRenderDatas.value[index]\n        ),\n        viewer\n      )\n    })\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\n    editorType.value = e\n\n    const { viewer, drawingFabInstance } = $services\n    if (e === 'move') {\n      drawTip.value = drawTipOpts.value.drawingTipEditing\n      drawStatus.value = DrawStatus.Drawing\n      editingPoint.value = mouseoverPoint.value\n      restorePosition = renderDatas.value[editingPoint.value._vcPolylineIndx].positions[editingPoint.value._index]\n      canShowDrawTip.value = true\n      ;(drawingFabInstance?.proxy as any).editingActionName = drawingType\n    } else if (e === 'remove') {\n      const index = mouseoverPoint.value._vcPolylineIndx\n      const polyline = renderDatas.value[index]\n      polyline.positions.splice(mouseoverPoint.value._index, 1)\n    } else if (e === 'removeAll') {\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        renderDatas,\n        name: drawingType,\n        index: mouseoverPoint.value._vcPolylineIndx\n      },\n      viewer\n    )\n  }\n\n  const clear = () => {\n    renderDatas.value = []\n    stop()\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 {\n      ColorGeometryInstanceAttribute,\n      PolylineMaterialAppearance,\n      Ellipsoid,\n      createGuid,\n      defaultValue,\n      Math: CesiumMath,\n      Matrix4,\n      Cartesian3,\n      Transforms,\n      HeadingPitchRoll,\n      PerInstanceColorAppearance,\n      Cartesian4,\n      Cartesian2\n    } = Cesium\n\n    const polylineOpts = {\n      ...props.polylineOpts,\n      vertexFormat: PolylineMaterialAppearance.VERTEX_FORMAT,\n      ellipsoid: defaultValue(props.polylineOpts?.ellipsoid, Ellipsoid.WGS84)\n    }\n    props.clampToGround && delete polylineOpts.arcType\n    const children: Array<VNode> = []\n    computedRenderDatas.value.forEach((polyline, index) => {\n      const isRegular =\n        cmpName === 'VcDrawingRectangle' ||\n        cmpName === 'VcDrawingRegular' ||\n        cmpName === 'VcMeasurementRegular' ||\n        cmpName === 'VcMeasurementRectangle'\n      const positions = isRegular ? polyline.polygonPositions?.slice() : polyline.positions\n      isRegular && positions?.push(positions[0])\n      if (positions?.length && positions?.length > 1) {\n        // polyline\n        children.push(\n          h(\n            props.clampToGround ? VcPrimitiveGroundPolyline : VcPrimitive,\n            {\n              ...props.primitiveOpts,\n              show: (polyline.show && props.primitiveOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing\n            },\n            () =>\n              h(\n                VcGeometryInstance,\n                {\n                  id: createGuid()\n                },\n                () =>\n                  h(props.clampToGround ? VcGeometryGroundPolyline : VcGeometryPolyline, {\n                    positions: positions,\n                    ...polylineOpts\n                  })\n              )\n          )\n        )\n        // viewshed\n        if (cmpName === 'VcAnalysisViewshed') {\n          // ellipsoid\n          const { viewer } = $services\n\n          const modelMatrix = Matrix4.fromTranslationQuaternionRotationScale(\n            polyline.positions[0],\n            Transforms.headingPitchRollQuaternion(\n              polyline.positions[0],\n              HeadingPitchRoll.fromDegrees(polyline.heading! - props.ellipsoidOpts.horizontalViewAngle, polyline.pitch!, 0),\n              viewer.scene.globe.ellipsoid\n            ),\n            new Cartesian3(1, 1, 1)\n          )\n          const color = ColorGeometryInstanceAttribute.fromColor(props.ellipsoidOpts.color)\n          children.push(\n            h(VcPostProcessStage, {\n              fragmentShader: fs,\n              uniforms: {\n                shadowMap_textureCube: function () {\n                  shadowMap.update(viewer.scene.frameState)\n                  return shadowMap._shadowMapTexture\n                },\n                shadowMap_matrix: function () {\n                  shadowMap.update(viewer.scene.frameState)\n                  return shadowMap._shadowMapMatrix\n                },\n                shadowMap_lightPositionEC: function () {\n                  shadowMap.update(viewer.scene.frameState)\n                  return shadowMap._lightPositionEC\n                },\n                shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness: function () {\n                  shadowMap.update(viewer.scene.frameState)\n                  const bias = shadowMap._pointBias\n                  return Cartesian4.fromElements(bias.normalOffsetScale, shadowMap._distance, shadowMap.maximumDistance, 0, new Cartesian4())\n                },\n                shadowMap_texelSizeDepthBiasAndNormalShadingSmooth: function () {\n                  shadowMap.update(viewer.scene.frameState)\n                  const bias = shadowMap._pointBias\n                  const scratchTexelStepSize = new Cartesian2()\n                  const texelStepSize = scratchTexelStepSize\n                  texelStepSize.x = 1.0 / shadowMap._textureSize.x\n                  texelStepSize.y = 1.0 / shadowMap._textureSize.y\n                  return Cartesian4.fromElements(texelStepSize.x, texelStepSize.y, bias.depthBias, bias.normalShadingSmooth, new Cartesian4())\n                },\n                camera_projection_matrix: lightCamera.frustum.projectionMatrix,\n                camera_view_matrix: lightCamera.viewMatrix,\n                vc_viewDistance: function () {\n                  return polyline.distance\n                },\n                vc_visibleAreaColor: props.visibleAreaColor || Cesium.Color.LIME,\n                vc_invisibleAreaColor: props.invisibleAreaColor || Cesium.Color.RED\n              }\n            })\n          )\n          const radii: VcPosition = { x: polyline.distance, y: polyline.distance, z: polyline.distance }\n          children.push(\n            h(\n              VcPrimitive,\n              {\n                show: (polyline.show && props.ellipsoidOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n                enableMouseEvent: props.enableMouseEvent,\n                appearance: new PerInstanceColorAppearance({\n                  flat: true\n                }),\n                asynchronous: false\n              },\n              () => [\n                h(\n                  VcGeometryInstance,\n                  {\n                    id: createGuid(),\n                    modelMatrix,\n                    attributes: {\n                      color\n                    }\n                  },\n                  () =>\n                    h(VcGeometryEllipsoidOutline, {\n                      radii: radii,\n                      minimumClock: CesiumMath.toRadians(-props.ellipsoidOpts.horizontalViewAngle / 2),\n                      maximumClock: CesiumMath.toRadians(props.ellipsoidOpts.horizontalViewAngle / 2),\n                      minimumCone: CesiumMath.toRadians(props.ellipsoidOpts.verticalViewAngle + 7.75),\n                      maximumCone: CesiumMath.toRadians(180 - props.ellipsoidOpts.verticalViewAngle - 7.75),\n                      subdivisions: 256,\n                      stackPartitions: 64,\n                      slicePartitions: 64\n                    } as VcGeometryEllipsoidOutlineProps)\n                )\n              ]\n            )\n          )\n          children.push(\n            h(\n              VcPrimitive,\n              {\n                show: (polyline.show && props.ellipsoidOpts.show) || props.editable || polyline.drawStatus === DrawStatus.Drawing,\n                enableMouseEvent: props.enableMouseEvent,\n                appearance: new PerInstanceColorAppearance({\n                  flat: true\n                }),\n                asynchronous: false\n              },\n              () =>\n                h(\n                  VcGeometryInstance,\n                  {\n                    id: createGuid(),\n                    modelMatrix,\n                    attributes: {\n                      color\n                    }\n                  },\n                  () =>\n                    h(VcGeometryEllipsoidOutline, {\n                      radii: radii,\n                      innerRadii: innerRadii.value,\n                      minimumClock: CesiumMath.toRadians(-props.ellipsoidOpts.horizontalViewAngle / 2),\n                      maximumClock: CesiumMath.toRadians(props.ellipsoidOpts.horizontalViewAngle / 2),\n                      minimumCone: CesiumMath.toRadians(props.ellipsoidOpts.verticalViewAngle + 7.75),\n                      maximumCone: CesiumMath.toRadians(180 - props.ellipsoidOpts.verticalViewAngle - 7.75),\n                      subdivisions: 128,\n                      stackPartitions: 10,\n                      slicePartitions: 8\n                    } as VcGeometryEllipsoidOutlineProps)\n                )\n            )\n          )\n        }\n      }\n\n      if (polyline.polygonPositions && polyline.polygonPositions.length > 2) {\n        // polygon\n        children.push(\n          h(VcPolygon, {\n            positions: positions,\n            onReady: onVcPrimitiveReady,\n            ...props.polygonOpts,\n            show: polyline.show && props?.polygonOpts?.show\n          })\n        )\n      }\n      if (polyline.xyPolylinePositions && polyline.xyPolylinePositions.length > 1) {\n        // xyPolyline\n        children.push(\n          h(\n            VcPrimitive,\n            {\n              ...props.primitiveOpts,\n              show: (polyline.show && props.primitiveOpts) || props.editable || polyline.drawStatus === DrawStatus.Drawing\n            },\n            () =>\n              h(\n                VcGeometryInstance,\n                {\n                  id: createGuid()\n                },\n                () =>\n                  h(VcGeometryPolyline, {\n                    positions: polyline.xyPolylinePositions,\n                    ...polylineOpts\n                  })\n              )\n          )\n        )\n      }\n      if (polyline.xyBoxPositions && polyline.xyBoxPositions.length > 1) {\n        // xyBox\n        children.push(\n          h(\n            VcPrimitive,\n            {\n              ...props.primitiveOpts,\n              show: (polyline.show && props.primitiveOpts) || props.editable || polyline.drawStatus === DrawStatus.Drawing\n            },\n            () =>\n              h(\n                VcGeometryInstance,\n                {\n                  id: createGuid()\n                },\n                () =>\n                  h(VcGeometryPolyline, {\n                    positions: polyline.xyBoxPositions,\n                    ...polylineOpts\n                  })\n              )\n          )\n        )\n      }\n      // point\n      children.push(\n        h(VcCollectionPoint, {\n          enableMouseEvent: props.enableMouseEvent,\n          show: polyline.show,\n          points: polyline.positions.map((position, subIndex) => ({\n            position: position,\n            id: createGuid(),\n            _vcPolylineIndx: index, // for editor\n            ...props.pointOpts,\n            show:\n              (props.pointOpts?.show || props.editable || polyline.drawStatus === DrawStatus.Drawing) &&\n              (cmpName === 'VcAnalysisSightline' && polyline.positions.length === 3 ? subIndex !== 1 : true)\n          })),\n          onMouseover: onMouseoverPoints,\n          onMouseout: onMouseoutPoints,\n          onReady: onVcCollectionPointReady\n        })\n      )\n\n      // labels\n      cmpName.includes('VcMeasurement') &&\n        children.push(\n          h(VcCollectionLabel, {\n            enableMouseEvent: props.enableMouseEvent,\n            show: polyline.show,\n            labels: polyline.labels,\n            onReady: onVcCollectionLabelReady\n          })\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.measurement.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":[],"mappings":"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"}