{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/overlays/dynamic/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-24 11:38:18\n * @LastEditTime: 2022-02-20 00:53:12\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\dynamic\\index.ts\n */\nimport type { ExtractPropTypes, WatchStopHandle, PropType } from 'vue'\nimport { defineComponent, getCurrentInstance, createCommentVNode, onUnmounted, ref, watch } from 'vue'\nimport { DynamicOverlayOpts, SampledPosition, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables'\nimport { show } from '@vue-cesium/utils/cesium-props'\nimport { addCustomProperty, isPlainObject, kebabCase } from '@vue-cesium/utils/util'\nimport DynamicOverlay from '@vue-cesium/shared/src/DynamicOverlay'\nimport { makeJulianDate } from '@vue-cesium/utils/cesium-helpers'\nimport { cloneDeep, differenceBy, remove } from 'lodash-unified'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { commonEmits } from '@vue-cesium/utils/emits'\n\nexport const dynamicOverlayProps = {\n  ...show,\n  name: {\n    type: String,\n    default: '__vc__overlay__dynamic__'\n  },\n  startTime: {\n    type: [Object, String] as PropType<Cesium.JulianDate | string>\n  },\n  stopTime: {\n    type: [Object, String] as PropType<Cesium.JulianDate | string>\n  },\n  currentTime: {\n    type: [Object, String] as PropType<Cesium.JulianDate | string>\n  },\n  clockRange: {\n    type: Number as PropType<number | Cesium.ClockRange>,\n    default: 0\n  },\n  clockStep: {\n    type: Number as PropType<number | Cesium.ClockStep>,\n    default: 1\n  },\n  shouldAnimate: {\n    type: Boolean,\n    default: true\n  },\n  canAnimate: {\n    type: Boolean,\n    default: true\n  },\n  multiplier: {\n    type: Number,\n    default: 1.0\n  },\n  dynamicOverlays: {\n    type: Array as PropType<DynamicOverlayOpts[]>,\n    default: () => []\n  },\n  defaultInterval: {\n    type: Number,\n    default: 3\n  }\n}\nconst emits = {\n  ...commonEmits,\n  'update:currentTime': (currentTime: Cesium.JulianDate) => true,\n  'update:shouldAnimate': (shouldAnimate: boolean) => true,\n  'update:canAnimate': (canAnimate: boolean) => true,\n  'update:clockRange': (clockRange: number | Cesium.ClockRange) => true,\n  'update:clockStep': (clockStep: number | Cesium.ClockStep) => true,\n  'update:multiplier': (multiplier: number) => true,\n  'update:startTime': (startTime: Cesium.JulianDate) => true,\n  'update:stopTime': (stopTime: Cesium.JulianDate) => true,\n  onStop: (clock: Cesium.Clock) => true\n}\nexport default defineComponent({\n  name: 'VcOverlayDynamic',\n  props: dynamicOverlayProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverlayDynamic'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const overlays = ref<Array<DynamicOverlay>>([])\n    const restoreClockOpts = ref<any>({})\n    const { emit } = ctx\n\n    // watcch\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => props.show,\n        val => {\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          datasource && (datasource.show = val)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.name,\n        val => {\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          datasource && (datasource.name = val)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.startTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.startTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.stopTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.stopTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.currentTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.currentTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.multiplier,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.multiplier = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.clockStep,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.clockStep = val\n          }\n        }\n      )\n    )\n    unwatchFns.push(\n      watch(\n        () => props.clockRange,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.clockRange = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.canAnimate,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.canAnimate = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.shouldAnimate,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.shouldAnimate = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => cloneDeep(props.dynamicOverlays),\n        (newVal, oldVal) => {\n          if (!instance.mounted) {\n            return\n          }\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          if (newVal.length === oldVal.length) {\n            // 视为修改操作\n            // Treated as modified\n            const modifies: Array<any> = []\n            for (let i = 0; i < newVal.length; i++) {\n              const options = newVal[i]\n              const oldOptions = oldVal[i]\n\n              // 忽略 model 的 nodeTransformations\n              // 即该属性不支持动态响应\n              const testReplace = (key, value) => {\n                if (key !== 'nodeTransformations') {\n                  return value\n                }\n              }\n\n              if (JSON.stringify(options, testReplace) !== JSON.stringify(oldOptions, testReplace)) {\n                modifies.push({\n                  newOptions: options,\n                  oldOptions: oldOptions\n                })\n              }\n            }\n\n            modifies.forEach(v => {\n              const modifyEntity = datasource.entities.getById(v.oldOptions.id)\n              if (v.oldOptions.id === v.newOptions.id) {\n                modifyEntity &&\n                  Object.keys(v.newOptions).forEach(prop => {\n                    if (v.oldOptions[prop] !== v.newOptions[prop]) {\n                      modifyEntity[prop] = commonState.transformProp(prop, v.newOptions[prop])\n                    }\n                  })\n              } else {\n                // 改了 id\n                if (modifyEntity) {\n                  datasource.entities.remove(modifyEntity)\n                  remove(overlays.value, overlay => overlay.id === modifyEntity.id)\n                  const entityOptions = v.newOptions\n                  addDynamicOverlays(datasource, [entityOptions])\n                }\n              }\n            })\n          } else {\n            const adds: any = differenceBy(newVal, oldVal, 'id')\n            const deletes: any = differenceBy(oldVal, newVal, 'id')\n            const deletedEntities: Array<Cesium.Entity> = []\n            for (let i = 0; i < deletes.length; i++) {\n              const deleteEntity = datasource.entities.getById(deletes[i].id)\n              deletedEntities.push(deleteEntity!)\n            }\n\n            deletedEntities.forEach(v => {\n              datasource.entities.remove(v)\n              remove(overlays.value, overlay => overlay.id === v.id)\n            })\n\n            addDynamicOverlays(datasource, adds)\n          }\n        },\n        {\n          deep: true\n        }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      return new Cesium.CustomDataSource(props.name)\n    }\n\n    const onClockTick = (clock: Cesium.Clock) => {\n      let listener = getInstanceListener(instance, 'update:currentTime')\n      listener && emit('update:currentTime', clock.currentTime)\n\n      listener = getInstanceListener(instance, 'update:shouldAnimate')\n      listener && emit('update:shouldAnimate', clock.shouldAnimate)\n\n      listener = getInstanceListener(instance, 'update:canAnimate')\n      listener && emit('update:canAnimate', clock.canAnimate)\n\n      listener = getInstanceListener(instance, 'update:clockRange')\n      listener && emit('update:clockRange', clock.clockRange)\n\n      listener = getInstanceListener(instance, 'update:clockStep')\n      listener && emit('update:clockStep', clock.clockStep)\n\n      listener = getInstanceListener(instance, 'update:multiplier')\n      listener && emit('update:multiplier', clock.multiplier)\n\n      listener = getInstanceListener(instance, 'update:startTime')\n      listener && emit('update:startTime', clock.startTime)\n\n      listener = getInstanceListener(instance, 'update:stopTime')\n      listener && emit('update:stopTime', clock.stopTime)\n    }\n\n    const addDynamicOverlays = (datasource: Cesium.CustomDataSource, dynamicOverlays: Array<DynamicOverlayOpts>) => {\n      for (let i = 0; i < dynamicOverlays.length; i++) {\n        const entityOptions = dynamicOverlays[i] as any\n        const entityOptionsTransform = commonState.transformProps<DynamicOverlayOpts>(entityOptions)\n        const dynamicOverlay = new DynamicOverlay(entityOptionsTransform)\n        overlays.value.push(dynamicOverlay)\n        const entity = datasource.entities.add(dynamicOverlay._entity)\n        entityOptionsTransform.sampledPositions.forEach((sampledPosition: SampledPosition) => {\n          // 如果是数组认为是经纬度数组\n          if (Array.isArray(sampledPosition) || sampledPosition instanceof Cesium.Cartesian3) {\n            dynamicOverlay.addPosition(sampledPosition, props.defaultInterval)\n          } else if (isPlainObject(sampledPosition)) {\n            if (sampledPosition.time) {\n              dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.time)\n            } else if (sampledPosition.interval) {\n              dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.interval)\n            }\n          }\n        })\n        entityOptions.id !== entity.id && (entityOptions.id = entity.id)\n        addCustomProperty(entity, entityOptionsTransform)\n      }\n    }\n\n    instance.mount = async () => {\n      const { viewer } = $services\n      const datasource = instance.cesiumObject as Cesium.CustomDataSource\n      datasource.show = props.show\n      addDynamicOverlays(datasource, props.dynamicOverlays)\n\n      return viewer.dataSources.add(datasource).then(() => {\n        restoreClockOpts.value.startTime = viewer.clock.startTime\n        restoreClockOpts.value.stopTime = viewer.clock.stopTime\n        restoreClockOpts.value.currentTime = viewer.clock.currentTime\n        restoreClockOpts.value.multiplier = viewer.clock.multiplier\n        restoreClockOpts.value.clockStep = viewer.clock.clockStep\n        restoreClockOpts.value.clockRange = viewer.clock.clockRange\n        restoreClockOpts.value.canAnimate = viewer.clock.canAnimate\n        restoreClockOpts.value.shouldAnimate = viewer.clock.shouldAnimate\n\n        if (props.startTime) {\n          viewer.clock.startTime = makeJulianDate(props.startTime)\n        }\n        if (props.stopTime) {\n          viewer.clock.stopTime = makeJulianDate(props.stopTime)\n        }\n        if (props.currentTime) {\n          viewer.clock.currentTime = makeJulianDate(props.currentTime)\n        }\n\n        viewer.clock.multiplier = props.multiplier\n        viewer.clock.clockStep = props.clockStep\n        viewer.clock.clockRange = props.clockRange\n        viewer.clock.canAnimate = false\n        viewer.clock.shouldAnimate = props.shouldAnimate\n\n        viewer.clock.onTick.addEventListener(onClockTick)\n        const listener = getInstanceListener(instance, 'onStop')\n        listener && viewer.clock.onStop.addEventListener(listener)\n        return true\n      })\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const datasource = instance.cesiumObject as Cesium.CustomDataSource\n      viewer.dataSources.remove(datasource, true)\n\n      viewer.clock.startTime = restoreClockOpts.value.startTime\n      viewer.clock.stopTime = restoreClockOpts.value.stopTime\n      viewer.clock.multiplier = restoreClockOpts.value.multiplier\n      viewer.clock.clockStep = restoreClockOpts.value.clockStep\n      viewer.clock.clockRange = restoreClockOpts.value.clockRange\n      viewer.clock.canAnimate = restoreClockOpts.value.canAnimate\n      viewer.clock.shouldAnimate = restoreClockOpts.value.shouldAnimate\n      overlays.value.length = 0\n      viewer.clock.onTick.removeEventListener(onClockTick)\n      const listener = getInstanceListener(instance, 'onStop')\n      listener && viewer.clock.onStop.removeEventListener(listener)\n      return true\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    // expose public methods\n    Object.assign(instance.proxy, { overlays })\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport type VcOverlayDynamicProps = ExtractPropTypes<typeof dynamicOverlayProps>\nexport type VcOverlayDynamicEmits = typeof emits\n"],"names":[],"mappings":"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"}