{"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 'casc-cesium-composables'\nimport type { VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-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 'casc-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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"}