UNPKG

vue-cesium

Version:
1 lines 9.62 kB
{"version":3,"file":"index.mjs","sources":["../../../../../packages/composables/use-datasources/index.ts"],"sourcesContent":["import { VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport useCommon from '../use-common'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { onUnmounted, provide, watch, WatchStopHandle } from 'vue'\nimport { vcKey } from '@vue-cesium/utils/config'\nimport { cloneDeep, differenceBy } from 'lodash-unified'\nimport { addCustomProperty } from '@vue-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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"}