UNPKG

casc-cesium

Version:

Vue 3.x components for CesiumJS.

1 lines 29.1 kB
{"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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"}