vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 9.14 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/analyses/src/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2022-01-06 10:23:09\n * @LastEditTime: 2024-03-27 13:55:06\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium\\packages\\components\\analyses\\src\\index.ts\n */\n\nimport type { VcActionTooltipProps, VcComponentInternalInstance, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, reactive, ref, computed, VNode } from 'vue'\nimport { useLocale } from '@vue-cesium/composables'\nimport { defaultOptions, analysesProps, VcAnalysesProps } from './defaultProps'\nimport type { AnalysisActionCmpRef, VcDrawingActionInstance, VcDrawingOpts, VcViewshedAnalysisOpts } from '@vue-cesium/utils/drawing-types'\nimport { camelize } from '@vue-cesium/utils/util'\nimport type { VcFabActionRef, VcFabProps, VcFabRef } from '@vue-cesium/components/ui'\nimport useDrawingFab from '@vue-cesium/composables/use-drawing/use-drawing-fab'\nimport VcAnalysisSightline from './sightline'\nimport VcAnalysisViewshed from './viewshed'\nimport { drawingEmit } from '@vue-cesium/utils/emits'\nimport { cloneDeep, isEqual, merge } from 'lodash-es'\n\nconst emits = {\n ...drawingEmit,\n fabUpdated: (value: boolean) => true,\n clearEvt: (\n e: {\n type: 'clear'\n option: VcActionTooltipProps\n },\n viewer: Cesium.Viewer\n ) => true\n}\nexport default defineComponent({\n name: 'VcAnalyses',\n props: analysesProps,\n emits: emits,\n setup(props: VcAnalysesProps, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcAnalyses'\n const { t } = useLocale()\n\n const options: any = {}\n // computed\n const clearActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.clearActionOpts, props.clearActionOpts))\n const mainFabOpts = reactive<VcActionTooltipProps & VcFabProps>(Object.assign({}, defaultOptions.mainFabOpts, props.mainFabOpts))\n\n const fabActionOpts = reactive<VcActionTooltipProps>(Object.assign({}, defaultOptions.fabActionOpts, props.fabActionOpts))\n\n const sightlineActionOpts = reactive<VcActionTooltipProps>(\n Object.assign({}, defaultOptions.sightlineActionOpts, mergeActionOpts('sightlineActionOpts'))\n )\n const sightlineAnalysisOpts = reactive<VcDrawingOpts>(merge(cloneDeep(defaultOptions.sightlineAnalysisOpts), props.sightlineAnalysisOpts))\n\n const viewshedActionOpts = reactive<VcActionTooltipProps>(\n Object.assign({}, defaultOptions.viewshedActionOpts, mergeActionOpts('viewshedActionOpts'))\n )\n const viewshedAnalysisOpts = reactive<VcViewshedAnalysisOpts>(merge(cloneDeep(defaultOptions.viewshedAnalysisOpts), props.viewshedAnalysisOpts))\n\n options.sightlineActionOpts = sightlineActionOpts\n options.sightlineAnalysisOpts = sightlineAnalysisOpts\n options.viewshedActionOpts = viewshedActionOpts\n options.viewshedAnalysisOpts = viewshedAnalysisOpts\n options.clearActionOpts = clearActionOpts\n\n const drawingActionInstances = computed<Array<VcDrawingActionInstance>>(() => {\n return props.analyses.map(analysisName => ({\n name: analysisName,\n type: 'analysis',\n actionStyle: {\n background: options[`${camelize(analysisName)}ActionOpts`].color,\n color: options[`${camelize(analysisName)}ActionOpts`].textColor\n },\n actionClass: `vc-analysis-${analysisName} vc-analysis-button`,\n actionRef: ref<VcFabActionRef>(null),\n actionOpts: options[`${camelize(analysisName)}ActionOpts`] as VcActionTooltipProps,\n cmp: getDrawingCmp(analysisName),\n cmpRef: ref<AnalysisActionCmpRef>(null!),\n cmpOpts: options[`${camelize(analysisName)}AnalysisOpts`] as VcDrawingOpts,\n tip: options[`${camelize(analysisName)}ActionOpts`].tooltip.tip || t(`vc.analysis.${camelize(analysisName)}.tip`),\n isActive: false\n }))\n })\n\n function getDrawingCmp(name) {\n switch (name) {\n case 'sightline':\n return VcAnalysisSightline\n case 'viewshed':\n return VcAnalysisViewshed\n default:\n return void 0\n }\n }\n\n function mergeActionOpts(actionName) {\n return isEqual(defaultOptions[actionName], props[actionName]) ? fabActionOpts : Object.assign({}, fabActionOpts, props[actionName])\n }\n\n return useDrawingFab(props, ctx, instance, drawingActionInstances, mainFabOpts, clearActionOpts, 'analysis')?.renderContent\n }\n})\n\nexport { VcAnalysisSightline, VcAnalysisViewshed, analysesProps }\n\nexport type { VcAnalysesProps } from './defaultProps'\nexport type VcAnalysesEmits = typeof emits\nexport interface VcAnalysesRef extends VcComponentPublicInstance<VcAnalysesProps> {\n /**\n * Get or set the editingActionName.\n */\n editingActionName?: string\n /**\n * Clear all drawing results.\n */\n clearAll: () => void\n /**\n * End listening for the ScreenSpaceEventHandler events.\n */\n deactivate: () => void\n /**\n * Start listening for ScreenSpaceEventHandler events.\n */\n activate: () => void\n /**\n * Toggle drawing instance.\n * @param drawingOption drawing instance or drawing instance name.\n */\n toggleAction: (drawingOption: VcDrawingActionInstance | string) => void\n /**\n * Get the float action button template reference.\n */\n getFabRef: () => VcFabRef\n /**\n * Get the drawingActionInstance by action name.\n */\n getDrawingActionInstance: (actionName: string) => VcDrawingActionInstance\n /**\n * Get the drawing action instances.\n */\n getDrawingActionInstances: () => Array<VcDrawingActionInstance>\n /**\n * Get the selected drawing action instance.\n */\n getSelectedDrawingActionInstance: () => VcDrawingActionInstance\n}\n\nexport type VcAnalysesSlots = {\n /**\n * body slot content of the component\n */\n body: (drawingActionInstances: Array<VcDrawingActionInstance>) => VNode[]\n}\n"],"names":[],"mappings":"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"}