{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/post-processes/post-process-stage-collection/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-01-19 23:52:30\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\post-process-stage-collection\\index.ts\n */\nimport type { ExtractPropTypes, WatchStopHandle, PropType } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, watch } from 'vue'\nimport type { VcComponentInternalInstance, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables/index'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport type { VcPostProcessStageProps } from '../post-process-stage'\n\nexport const postProcessStageCollectionProps = {\n  postProcesses: {\n    type: Array as PropType<Array<VcPostProcessStageProps>>,\n    default: () => []\n  }\n}\nexport default defineComponent({\n  name: 'VcPostProcessStageCollection',\n  props: postProcessStageCollectionProps,\n  emits: commonEmits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'PostProcessStageCollection'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const stages: Array<Cesium.PostProcessStage | Cesium.PostProcessStageComposite> = []\n    let unwatchFns: Array<WatchStopHandle> = []\n    // watch\n    unwatchFns.push(\n      watch(\n        () => props.postProcesses,\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      return stages\n    }\n\n    instance.mount = async () => {\n      const { postProcessStages } = $services\n      props.postProcesses.forEach(postProcess => {\n        const opts = commonState.transformProps(postProcess)\n        stages.push(postProcessStages.add(new Cesium.PostProcessStage(opts as any)))\n      })\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { postProcessStages } = $services\n      stages.forEach(stage => {\n        postProcessStages.remove(stage)\n      })\n      stages.length = 0\n      return true\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () =>\n      ctx.slots.default\n        ? h(\n            'i',\n            {\n              class: kebabCase(instance.proxy?.$options.name || ''),\n              style: { display: 'none !important' }\n            },\n            hSlot(ctx.slots.default)\n          )\n        : createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcPostProcessStageCollectionProps = ExtractPropTypes<typeof postProcessStageCollectionProps>\n"],"names":[],"mappings":"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"}