casc-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 9.85 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../packages/composables/use-datasources/index.ts"],"sourcesContent":["import { VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport useCommon from '../use-common'\nimport { mergeDescriptors } from 'casc-cesium-utils/merge-descriptors'\nimport { onUnmounted, provide, watch, WatchStopHandle } from 'vue'\nimport { vcKey } from 'casc-cesium-utils/config'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { addCustomProperty } from 'casc-cesium-utils/util'\n\nexport default function (props, ctx, vcInstance: VcComponentInternalInstance) {\n // state\n vcInstance.cesiumEvents = ['changedEvent', 'errorEvent', 'loadingEvent']\n if (vcInstance.cesiumClass === 'KmlDataSource') {\n vcInstance.cesiumEvents.push('refreshEvent')\n vcInstance.cesiumEvents.push('unsupportedNodeEvent')\n }\n vcInstance.cesiumMembersEvents = [\n {\n name: 'clock',\n events: ['definitionChanged']\n },\n {\n name: 'clustering',\n events: ['clusterEvent']\n },\n {\n name: 'entities',\n events: ['collectionChanged']\n }\n ]\n const commonState = useCommon(props, ctx, vcInstance)\n\n if (commonState === void 0) {\n return\n }\n // watcher\n vcInstance.alreadyListening.push('entities')\n let unwatchFns: Array<WatchStopHandle> = []\n unwatchFns.push(\n watch(\n () => cloneDeep(props.entities),\n (newVal, oldVal) => {\n if (!vcInstance.mounted) {\n return\n }\n const datasource = vcInstance.cesiumObject as Cesium.DataSource\n\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 if (JSON.stringify(options) !== JSON.stringify(oldOptions)) {\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 datasource.entities.remove(modifyEntity!)\n const entityOptions = v.newOptions\n addEntities(datasource, [entityOptions])\n }\n })\n } else {\n const addeds: 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 })\n addEntities(datasource, addeds)\n }\n },\n {\n deep: true\n }\n )\n )\n // methods\n const addEntities = (datasource, entities) => {\n for (let i = 0; i < entities.length; i++) {\n const entityOptions = entities[i]\n const entityOptionsTransform = commonState.transformProps(entityOptions)\n const entity = datasource.entities.add(entityOptionsTransform)\n entityOptions.id !== entity.id && (entityOptions.id = entity.id)\n addCustomProperty(entity, entityOptionsTransform)\n }\n }\n\n vcInstance.mount = async () => {\n const dataSources = commonState.$services.dataSources\n const datasource = vcInstance.cesiumObject as Cesium.DataSource\n datasource.show = props.show\n addEntities(datasource, props.entities)\n return dataSources.add(datasource).then(() => {\n return true\n })\n }\n vcInstance.unmount = async () => {\n const dataSources = commonState.$services.dataSources\n const datasource = vcInstance.cesiumObject as Cesium.DataSource\n return dataSources && dataSources.remove(datasource, props.destroy)\n }\n\n const getServices = () => {\n return mergeDescriptors(commonState.getServices(), {\n get datasource() {\n return vcInstance.cesiumObject as Cesium.DataSource\n },\n get entities() {\n return (vcInstance.cesiumObject as Cesium.DataSource)?.entities\n }\n })\n }\n\n // life cycle\n onUnmounted(() => {\n unwatchFns.forEach(item => item())\n unwatchFns = []\n })\n\n // provide\n provide(vcKey, getServices())\n\n return {\n transformProps: commonState.transformProps,\n unwatchFns: commonState.unwatchFns,\n setPropsWatcher: commonState.setPropsWatcher\n }\n}\n"],"names":[],"mappings":"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"}