vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 29 kB
Source Map (JSON)
{"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: 2024-01-26 14:04:15\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium\\packages\\composables\\use-drawing\\use-drawing-fab.ts\n */\nimport { VcCollectionPrimitive } from '@vue-cesium/components/primitive-collections'\nimport type { VcFabProps, VcFabRef } from '@vue-cesium/components/ui'\nimport { VcFab, VcFabAction, VcTooltip } from '@vue-cesium/components/ui'\nimport { useCommon, useHandler } from '@vue-cesium/composables'\nimport { VisibilityState } from '@vue-cesium/shared'\nimport { VcDrawingActionInstance } from '@vue-cesium/utils/drawing-types'\nimport { VcActionTooltipProps, VcComponentInternalInstance, VcDrawingProvider, VcReadyObject } from '@vue-cesium/utils/types'\nimport { CSSProperties, provide, reactive, ref, VNode, h, createCommentVNode, ComputedRef, nextTick } from 'vue'\nimport usePosition from '../private/use-position'\nimport { $ } from '@vue-cesium/utils/private/vm'\nimport { isString } from '@vue-cesium/utils/util'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { vcKey } from '@vue-cesium/utils/config'\nimport { useLocale } from '../use-locale'\nimport { VcAnalysesRef, VcDrawingsRef, VcMeasurementsRef } from '@vue-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 const { viewer } = $services\n emit(\n 'clearEvt',\n {\n type: 'clear',\n option: clearActionOpts\n },\n viewer\n )\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":["cmp"],"mappings":"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"}