{"version":3,"file":"use-drawing-fab.mjs","sources":["../../../../../packages/composables/use-drawing/use-drawing-fab.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-10-13 09:45:59\n * @LastEditTime: 2022-08-12 11:47:07\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\10_vue-cesium\\packages\\composables\\use-drawing\\use-drawing-fab.ts\n */\nimport { VcCollectionPrimitive } from 'casc-cesium-components/primitive-collections'\nimport type { VcFabProps, VcFabRef } from 'casc-cesium-components/ui'\nimport { VcFab, VcFabAction, VcTooltip } from 'casc-cesium-components/ui'\nimport { useCommon, useHandler } from 'casc-cesium-composables'\nimport { VisibilityState } from 'casc-cesium-shared'\nimport { VcDrawingActionInstance } from 'casc-cesium-utils/drawing-types'\nimport { VcActionTooltipProps, VcComponentInternalInstance, VcDrawingProvider, VcReadyObject } from 'casc-cesium-utils/types'\nimport { CSSProperties, provide, reactive, ref, VNode, h, createCommentVNode, ComputedRef, nextTick } from 'vue'\nimport usePosition from '../private/use-position'\nimport { $ } from 'casc-cesium-utils/private/vm'\nimport { isString } from 'casc-cesium-utils/util'\nimport { mergeDescriptors } from 'casc-cesium-utils/merge-descriptors'\nimport { vcKey } from 'casc-cesium-utils/config'\nimport { useLocale } from '../use-locale'\nimport { VcAnalysesRef, VcDrawingsRef, VcMeasurementsRef } from 'casc-cesium-components'\n\nexport default function (\n  props,\n  ctx,\n  instance: VcComponentInternalInstance,\n  drawingActionInstances: ComputedRef<Array<VcDrawingActionInstance>>,\n  mainFabOpts: VcFabProps & VcActionTooltipProps,\n  clearActionOpts: VcActionTooltipProps,\n  cmpName: string\n) {\n  instance.cesiumEvents = []\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 canRender = ref(false)\n  const containerStyle = reactive<CSSProperties>({})\n  const positionState = usePosition(props, $services)\n  const containerRef = ref<HTMLElement>(null)\n  const fabRef = ref<VcFabRef>(null)\n  const mounted = ref(false)\n  const primitiveCollection = ref(null)\n  let visibilityState: VisibilityState\n\n  let selectedDrawingActionInstance: VcDrawingActionInstance = undefined\n\n  /**\n   *\n   * @param movement 屏幕坐标\n   * @param button 鼠标按键 0 左键, 1 中键, 2 右键\n   * @param shift\n   */\n  const handleMouseClick = (movement: Cesium.ScreenSpaceEventParamsType.LEFT_CLICK, options?) => {\n    const cmp = selectedDrawingActionInstance?.cmpRef.value\n    cmp?.handleMouseClick?.(movement.position, options)\n\n    let drawingActionOpts\n    const instanceVm = instance.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (instanceVm.editingActionName) {\n      drawingActionOpts = getDrawingActionInstance(instanceVm.editingActionName)\n    }\n\n    if (drawingActionOpts && drawingActionOpts !== selectedDrawingActionInstance) {\n      const cmp = drawingActionOpts.cmpRef.value\n      cmp?.handleMouseClick?.(movement.position, options)\n    }\n  }\n\n  const handleMouseMove = (movement: Cesium.ScreenSpaceEventParamsType.MOUSE_MOVE, options?) => {\n    const cmp = selectedDrawingActionInstance?.cmpRef.value\n    cmp?.handleMouseMove?.(movement.endPosition, options)\n\n    let drawingActionOpts\n    const instanceVm = instance.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (instanceVm.editingActionName) {\n      drawingActionOpts = getDrawingActionInstance(instanceVm.editingActionName)\n    }\n\n    if (drawingActionOpts && drawingActionOpts !== selectedDrawingActionInstance) {\n      const cmp = drawingActionOpts.cmpRef.value\n      cmp?.handleMouseMove?.(movement.endPosition, options)\n    }\n  }\n\n  const handleDoubleClick = (movement: Cesium.ScreenSpaceEventParamsType.LEFT_DOUBLE_CLICK, options?) => {\n    const cmp = selectedDrawingActionInstance?.cmpRef.value\n    cmp?.handleDoubleClick?.(movement.position, options)\n\n    let drawingActionOpts\n    const instanceVm = instance.proxy as VcDrawingsRef | VcMeasurementsRef | VcAnalysesRef\n    if (instanceVm.editingActionName) {\n      drawingActionOpts = getDrawingActionInstance(instanceVm.editingActionName)\n    }\n\n    if (drawingActionOpts && drawingActionOpts !== selectedDrawingActionInstance) {\n      const cmp = drawingActionOpts.cmpRef.value\n      cmp?.handleDoubleClick?.(movement.position, options)\n    }\n  }\n\n  const {\n    activate,\n    deactivate,\n    destroy: destroyHandler,\n    isActive\n  } = useHandler($services, {\n    handleMouseClick,\n    handleMouseMove,\n    handleDoubleClick\n  })\n\n  instance.createCesiumObject = async () => {\n    canRender.value = true\n    visibilityState = new VisibilityState()\n    return drawingActionInstances.value\n  }\n\n  instance.mount = async () => {\n    updateRootStyle()\n    mounted.value = true\n    activate()\n    return true\n  }\n\n  instance.unmount = async () => {\n    if (selectedDrawingActionInstance) {\n      toggleAction(selectedDrawingActionInstance)\n      selectedDrawingActionInstance = undefined\n    }\n\n    deactivate()\n    destroyHandler()\n    mounted.value = false\n    return true\n  }\n\n  const getWorldPosition = (scene: Cesium.Scene, windowPosition: Cesium.Cartesian2, result: Cesium.Cartesian3) => {\n    const { Cesium3DTileFeature, Cesium3DTileset, Cartesian3, defined, Model, Ray } = Cesium\n    if (Cesium.SuperMapVersion) {\n      // 超图版本下 PointPrimitive 在隐藏了的状态下仍然能被拾取到\n      // 后续逻辑失效\n      // 因此直接返回拾取坐标\n      return scene.pickPosition(windowPosition)\n    }\n    let position\n    const cartesianScratch: any = {}\n    const rayScratch = new Ray()\n    if (scene.pickPositionSupported) {\n      visibilityState.hide(scene)\n      const pickObj = scene.pick(windowPosition, 1, 1)\n      visibilityState.restore(scene)\n      if (defined(pickObj)) {\n        if (\n          pickObj instanceof Cesium3DTileFeature ||\n          pickObj.primitive instanceof Cesium3DTileset ||\n          pickObj.primitive instanceof Model ||\n          (Cesium.S3MTilesLayer && pickObj.primitive instanceof Cesium.S3MTilesLayer)\n        ) {\n          position = scene.pickPosition(windowPosition, cartesianScratch)\n          if (defined(position)) {\n            return Cartesian3.clone(position, result)\n          }\n        }\n      }\n    }\n    if (defined(scene.globe)) {\n      const ray = scene.camera.getPickRay(windowPosition, rayScratch)\n      position = scene.globe.pick(ray, scene, cartesianScratch)\n      return defined(position) ? Cartesian3.clone(position, result) : void 0\n    }\n\n    return void 0\n  }\n\n  const updateRootStyle = () => {\n    const css: CSSProperties = positionState.style.value\n    containerStyle.left = css.left\n    containerStyle.top = css.top\n    containerStyle.transform = css.transform\n\n    const side = positionState.attach.value\n    const fabTarget = $(fabRef)?.$el as HTMLElement\n    if (fabTarget !== void 0) {\n      const clientRect = fabTarget.getBoundingClientRect()\n      css.width = `${clientRect.width}px`\n      css.height = `${clientRect.height}px`\n\n      if ((side.bottom || side.top) && !side.left && !side.right) {\n        css.left = '50%'\n        css.transform = 'translate(-50%, 0)'\n      }\n\n      if ((side.left || side.right) && !side.top && !side.bottom) {\n        css.top = '50%'\n        css.transform = 'translate(0, -50%)'\n      }\n    }\n\n    Object.assign(containerStyle, css)\n  }\n\n  const restoreColor = ref<string>(null)\n  const toggleAction = (drawingOption: VcDrawingActionInstance | string) => {\n    const { viewer } = $services\n    if (isString(drawingOption)) {\n      drawingOption = getDrawingActionInstance(drawingOption)\n    }\n    if (!drawingOption) {\n      commonState.logger.error('Invalid drawingActionOption or drawingActionOption name')\n      return\n    }\n\n    const index = getDrawingActionInstanceIndex(drawingOption.name)\n    if (index === -1) {\n      return\n    }\n    if (selectedDrawingActionInstance !== void 0) {\n      selectedDrawingActionInstance.actionOpts.color = restoreColor.value || ''\n      const cmp = selectedDrawingActionInstance.cmpRef.value\n      cmp.stop?.()\n      selectedDrawingActionInstance.isActive = false\n      emit(\n        'activeEvt',\n        {\n          type: selectedDrawingActionInstance.name,\n          option: selectedDrawingActionInstance,\n          isActive: false\n        },\n        viewer\n      )\n    }\n    if (selectedDrawingActionInstance?.name === drawingOption?.name) {\n      selectedDrawingActionInstance = undefined\n      drawingActionInstances.value[index].actionOpts.color = restoreColor.value || 'red'\n    } else {\n      nextTick(() => {\n        const cmp = drawingActionInstances.value[index].cmpRef.value\n        cmp.startNew()\n        restoreColor.value = drawingActionInstances.value[index].actionOpts.color\n        drawingActionInstances.value[index].actionOpts.color = props.activeColor\n        drawingActionInstances.value[index].isActive = true\n        selectedDrawingActionInstance = drawingActionInstances.value[index]\n        emit(\n          'activeEvt',\n          {\n            type: selectedDrawingActionInstance.name,\n            option: selectedDrawingActionInstance,\n            isActive: true\n          },\n          viewer\n        )\n      })\n    }\n  }\n\n  const getDrawingActionInstance = (drawingName: string) => {\n    return drawingActionInstances.value.find(v => v.name === drawingName)\n  }\n\n  const getDrawingActionInstanceIndex = (drawingName: string) => {\n    return drawingActionInstances.value.findIndex(v => v.name === drawingName)\n  }\n\n  const onUpdateFab = value => {\n    if (value) {\n      activate()\n    } else {\n      if (selectedDrawingActionInstance) {\n        toggleAction(selectedDrawingActionInstance)\n      }\n      deactivate()\n    }\n    mainFabOpts.modelValue = value\n    emit('fabUpdated', value)\n  }\n\n  const clearAll = () => {\n    drawingActionInstances.value.forEach(drawingActionOpts => {\n      drawingActionOpts.cmpRef.value?.clear()\n    })\n\n    selectedDrawingActionInstance && toggleAction(selectedDrawingActionInstance)\n  }\n\n  const getServices = (): VcDrawingProvider => {\n    return mergeDescriptors(commonState.getServices(), {\n      get drawingFabInstance() {\n        return instance\n      },\n      get selectedDrawingActionInstance() {\n        return selectedDrawingActionInstance\n      },\n      get getWorldPosition() {\n        return getWorldPosition\n      },\n      get drawingHandlerActive() {\n        return isActive\n      }\n    })\n  }\n\n  const onPrimitiveCollectionReady = ({ cesiumObject }: VcReadyObject) => {\n    ;(cesiumObject as any)._vcId = cmpName\n  }\n\n  provide<VcDrawingProvider>(vcKey, getServices())\n\n  // expose public methods\n  Object.assign(instance.proxy, {\n    clearAll,\n    deactivate,\n    activate,\n    toggleAction,\n    getFabRef: () => fabRef.value,\n    getDrawingActionInstance,\n    getDrawingActionInstances: () => drawingActionInstances.value,\n    getSelectedDrawingActionInstance: () => selectedDrawingActionInstance\n  })\n\n  const renderContent = () => {\n    if (canRender.value) {\n      const fabActionChildren: Array<VNode> = []\n      const drawingChildren: Array<VNode> = []\n      drawingActionInstances.value.forEach(drawingActionInstance => {\n        fabActionChildren.push(\n          h(\n            VcFabAction,\n            {\n              ref: drawingActionInstance.actionRef,\n              style: drawingActionInstance.actionStyle,\n              class: drawingActionInstance.actionClass,\n              ...drawingActionInstance.actionOpts,\n              onClick: () => {\n                toggleAction(drawingActionInstance)\n              }\n            },\n            () =>\n              h(\n                VcTooltip,\n                {\n                  ...drawingActionInstance.actionOpts.tooltip\n                },\n                () => h('strong', null, drawingActionInstance.tip)\n              )\n          )\n        )\n\n        drawingActionInstance.cmp &&\n          drawingChildren.push(\n            h(drawingActionInstance.cmp, {\n              ref: drawingActionInstance.cmpRef,\n              editable: props.editable,\n              clampToGround: props.clampToGround,\n              mode: props.mode,\n              onDrawEvt: (e, viewer) => {\n                emit('drawEvt', e, viewer)\n              },\n              onEditorEvt: (e, viewer) => {\n                emit('editorEvt', e, viewer)\n              },\n              onMouseEvt: (e, viewer) => {\n                emit('mouseEvt', e, viewer)\n              },\n              ...drawingActionInstance.cmpOpts\n            })\n          )\n      })\n\n      drawingActionInstances.value.length &&\n        fabActionChildren.push(\n          h(\n            VcFabAction,\n            {\n              style: {\n                background: clearActionOpts.color,\n                color: clearActionOpts.textColor\n              },\n              class: 'vc-draw-button vc-draw-clear',\n              ...clearActionOpts,\n              onClick: clearAll\n            },\n            () =>\n              h(\n                VcTooltip,\n                {\n                  ...clearActionOpts.tooltip\n                },\n                () => h('strong', null, clearActionOpts.tooltip.tip || t(`vc.${cmpName}.clear.tip`))\n              )\n          )\n        )\n\n      const root: Array<VNode> = []\n      if (mounted.value) {\n        root.push(\n          h(\n            'div',\n            {\n              ref: containerRef,\n              class: 'vc-drawings-container ' + positionState.classes.value,\n              style: containerStyle\n            },\n            ctx.slots.body !== void 0\n              ? ctx.slots.body(drawingActionInstances.value)\n              : h(\n                  VcFab,\n                  {\n                    ref: fabRef,\n                    class: 'vc-draw-button',\n                    style: {\n                      background: mainFabOpts.color,\n                      color: mainFabOpts.textColor\n                    },\n                    ...mainFabOpts,\n                    'onUpdate:modelValue': onUpdateFab\n                  },\n                  {\n                    default: () => fabActionChildren,\n                    tooltip: () =>\n                      h(\n                        VcTooltip,\n                        {\n                          ...mainFabOpts.tooltip\n                        },\n                        () =>\n                          h('strong', null, mainFabOpts.tooltip.tip || (mainFabOpts.modelValue ? t('vc.drawing.collapse') : t('vc.drawing.expand')))\n                      )\n                  }\n                )\n          )\n        )\n      }\n      root.push(\n        h(\n          VcCollectionPrimitive,\n          {\n            ref: primitiveCollection,\n            show: props.show,\n            onReady: onPrimitiveCollectionReady\n          },\n          () => drawingChildren\n        )\n      )\n\n      return root\n    } else {\n      return createCommentVNode('v-if')\n    }\n  }\n  return {\n    renderContent\n  }\n}\n"],"names":[],"mappings":"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"}