UNPKG

vue-cesium

Version:
1 lines 6.24 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/post-processes/post-process-stage-scan/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-24 22:38:56\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\post-process-stage-scan\\index.ts\n */\nimport type { ExtractPropTypes, PropType, WatchStopHandle } from 'vue'\nimport { useCommon } from '@vue-cesium/composables'\nimport type { VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from '@vue-cesium/utils/types'\nimport { computed, defineComponent, getCurrentInstance, h, onUnmounted, ref, watch } from 'vue'\nimport VcPostProcessStage from '../post-process-stage'\nimport useRadar from './use-radar-scan'\nimport useCircle from './use-circle-scan'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nconst defaultOptions = {\n position: [0, 0],\n radius: 1500,\n interval: 3500,\n color: [0, 0, 0, 255]\n}\n\nexport type VcPostProcessStageScanOpts = {\n position?: VcPosition\n radius: number\n interval: number\n color: VcColor\n}\n\nexport const postProcessStageScanProps = {\n type: {\n type: String,\n default: 'radar' // radar, circle\n },\n options: Object as PropType<VcPostProcessStageScanOpts>\n}\n\nexport default defineComponent({\n name: 'VcPostProcessStageScan',\n props: postProcessStageScanProps,\n emits: commonEmits,\n setup(props, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcPostProcessStageScan'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const fragmentShader = ref('')\n const uniforms = ref<any>(null)\n const { $services } = commonState\n const useRadarState = useRadar($services)\n const useCircleState = useCircle($services)\n let unwatchFns: Array<WatchStopHandle> = []\n // computed\n const options = computed(() => {\n return Object.assign({}, defaultOptions, props.options)\n })\n // watch\n unwatchFns.push(\n watch(\n () => options,\n val => {\n if (instance.mounted) {\n ;(instance.proxy as VcComponentPublicInstance).reload()\n }\n },\n { deep: true }\n )\n )\n\n // methods\n instance.createCesiumObject = async () => {\n const opts = commonState.transformProps(options.value)\n let result\n if (props.type === 'radar') {\n result = useRadarState.webgl(opts)\n } else if (props.type === 'circle') {\n result = useCircleState.webgl(opts)\n }\n fragmentShader.value = result.shaderSource\n uniforms.value = result.uniforms\n return true\n }\n\n // life cycle\n onUnmounted(() => {\n unwatchFns.forEach(item => item())\n unwatchFns = []\n })\n\n return () => {\n return h(VcPostProcessStage, {\n fragmentShader: fragmentShader.value,\n uniforms: uniforms.value\n })\n }\n }\n})\n\nexport type VcPostProcessStageScanProps = {\n /**\n * Specify the scan type, optional values are'radar','circle'.\n */\n type?: 'radar' | 'circle'\n /**\n * Specify optional parameters.\n */\n options?: VcPostProcessStageScanOpts\n /**\n * Triggers before the component is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the component is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the component load failed.\n */\n onUnready?: (e: any) => void\n /**\n * Triggers when the component is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcPostProcessStageScanRef = VcComponentPublicInstance<VcPostProcessStageScanProps>\n"],"names":["VcPostProcessStage"],"mappings":"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"}