{"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: 2023-03-13 17:56:05\n * @LastEditors: zouyaoji 370681295@qq.com\n * @Description:\n * @FilePath: \\vue-cesium@next\\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, deepMerge } 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 } 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>(deepMerge(cloneDeep(defaultOptions.sightlineAnalysisOpts), props.sightlineAnalysisOpts))\n\n    const viewshedActionOpts = reactive<VcActionTooltipProps>(\n      Object.assign({}, defaultOptions.viewshedActionOpts, mergeActionOpts('viewshedActionOpts'))\n    )\n    const viewshedAnalysisOpts = reactive<VcViewshedAnalysisOpts>(\n      deepMerge(cloneDeep(defaultOptions.viewshedAnalysisOpts), props.viewshedAnalysisOpts)\n    )\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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"}