UNPKG

vue-cesium-jyt

Version:
1 lines 26.5 kB
{"version":3,"file":"index.mjs","sources":["../../../../../packages/composables/use-common/index.ts"],"sourcesContent":["import type { VcReadyObject, VcComponentInternalInstance, VcComponentPublicInstance, VcMittEvents, VcViewerProvider } from '@vue-cesium/utils/types'\nimport { inject, onUnmounted, WatchStopHandle } from 'vue'\nimport mitt, { Emitter } from 'mitt'\nimport { getObjClassName, isEmptyObj, isFunction, removeEmpty } from '@vue-cesium/utils/util'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport * as cesiumProps from '@vue-cesium/utils/cesium-props'\nimport { vcKey } from '@vue-cesium/utils/config'\nimport useLog from '../private/use-log'\nimport { useLocale } from '../use-locale'\nimport useEvents from '../use-events'\n\nexport default function (props, { emit }, vcInstance: VcComponentInternalInstance) {\n const logger = useLog(vcInstance)\n\n // state\n vcInstance.alreadyListening = []\n vcInstance.removeCallbacks = []\n let unwatchFns: Array<WatchStopHandle> = []\n vcInstance.mounted = false\n const vcMitt: Emitter<VcMittEvents> = mitt()\n vcInstance.vcMitt = vcMitt\n const $services = inject<VcViewerProvider>(vcKey)\n const { t } = useLocale()\n\n if ($services === void 0) {\n console.error(`${vcInstance.cesiumClass} ${t('vc.loadError')}`)\n return\n }\n\n const parentVcInstance = getVcParentInstance(vcInstance)\n const eventsState = useEvents(props, vcInstance, logger)\n vcInstance.children = []\n\n const entityGraphics = [\n 'billboard',\n 'box',\n 'corridor',\n 'cylinder',\n 'ellipse',\n 'ellipsoid',\n 'label',\n 'model',\n 'tileset',\n 'path',\n 'plane',\n 'point',\n 'polygon',\n 'polyline',\n 'polylineVolume',\n 'rectangle',\n 'wall'\n ]\n\n // methods\n const beforeLoad = async () => {\n emit('beforeLoad', vcInstance)\n\n if (parentVcInstance.nowaiting) {\n return true\n } else {\n await (parentVcInstance.proxy as VcComponentPublicInstance).createPromise\n }\n }\n\n const load = async () => {\n // Returns if it is already loaded. 如果已经加载则返回。\n if (vcInstance.mounted) {\n return false\n }\n\n logger.debug(`${vcInstance.cesiumClass}---loading`)\n\n await beforeLoad()\n\n const { Cesium, viewer } = $services\n vcInstance.viewer = viewer\n vcInstance.Cesium = Cesium\n\n // If you call the unload method to unload the component, the Cesium object of the parent component may be unloaded. You need to load the parent component first.\n // 如果调用过 unload 方法卸载组件,父组件的 Cesium 对象可能会被卸载 需要先加载父组件。\n if (!parentVcInstance.cesiumObject && !parentVcInstance.nowaiting) {\n return await (parentVcInstance.proxy as VcComponentPublicInstance)?.load()\n }\n\n setPropsWatcher(true)\n\n return createCesiumObject().then(async cesiumObject => {\n vcInstance.cesiumObject = cesiumObject\n // Load the created Cesium object. 加载创建的 Cesium 对象。\n return mount().then((): VcReadyObject => {\n vcInstance.mounted = true\n parentVcInstance.children.push(vcInstance)\n Object.assign(vcInstance.proxy, {\n cesiumObject: vcInstance.cesiumObject\n })\n // Trigger the component's 'ready' event. 触发该组件的 'ready' 事件。\n const readyObj: VcReadyObject = { Cesium, viewer, cesiumObject, vm: vcInstance.proxy as VcComponentPublicInstance }\n emit('ready', readyObj)\n vcMitt.emit('ready', readyObj)\n logger.debug(`${vcInstance.cesiumClass}---loaded`)\n return readyObj\n })\n })\n }\n\n const beforeUnload = async () => {\n await vcInstance.unloadingPromise\n }\n\n // eslint-disable-next-line arrow-parens\n const unload = async () => {\n await beforeUnload()\n\n // If the component has subcomponents, you need to remove the subcomponents first. 如果该组件带有子组件,需要先移除子组件。\n for (let i = 0; i < vcInstance.children.length; i++) {\n const vcChildCmp = vcInstance.children[i].proxy as VcComponentPublicInstance\n await vcChildCmp.unload()\n }\n\n vcInstance.children.length = 0\n\n return vcInstance.mounted\n ? unmount().then(async () => {\n setPropsWatcher(false)\n vcInstance.cesiumObject = undefined\n vcInstance.mounted = false\n vcInstance.removeCallbacks.forEach(removeCallback => {\n removeCallback()\n })\n emit('destroyed', vcInstance)\n logger.debug(`${vcInstance.cesiumClass}---unmounted`)\n\n // If the component cannot be rendered without the parent component, the parent component needs to be removed.\n // 如果该组件的渲染和父组件是绑定在一起的,需要移除父组件。\n return vcInstance.renderByParent && !vcInstance.unloadingPromise ? (parentVcInstance.proxy as VcComponentPublicInstance).unload() : true\n })\n : false\n }\n\n const reload = async () => {\n return unload().then(() => {\n return load()\n })\n }\n\n const mount = async () => {\n eventsState.registerEvents(true)\n return vcInstance.mount?.() || true\n }\n\n const unmount = async () => {\n eventsState.registerEvents(false)\n return vcInstance.unmount?.() || true\n }\n\n const createCesiumObject = async () => {\n logger.debug('do createCesiumObject')\n if (isFunction(vcInstance.createCesiumObject)) {\n return vcInstance.createCesiumObject()\n } else {\n const options = transformProps(props)\n return new Cesium[vcInstance.cesiumClass](options)\n }\n }\n\n const deepWatchHandler = (vueProp, watcherOptions) => {\n let deep = watcherOptions?.deep\n const {\n SampledPositionProperty,\n Appearance,\n DebugAppearance,\n MaterialAppearance,\n PolylineColorAppearance,\n EllipsoidSurfaceAppearance,\n PerInstanceColorAppearance,\n PolylineMaterialAppearance\n } = Cesium\n\n if (vueProp === 'position') {\n // position 要排除 SampledPositionProperty 不然会卡死\n deep = !((vcInstance.proxy as any)[vueProp] instanceof SampledPositionProperty)\n } else if (vueProp === 'appearance' || vueProp === 'depthFailAppearance') {\n // appearance 要排除 Cesium 的类型 不然会卡死\n const value = (vcInstance.proxy as any)[vueProp]\n deep = !(\n value instanceof Appearance ||\n value instanceof DebugAppearance ||\n value instanceof MaterialAppearance ||\n value instanceof PolylineColorAppearance ||\n value instanceof EllipsoidSurfaceAppearance ||\n value instanceof PerInstanceColorAppearance ||\n value instanceof PolylineMaterialAppearance ||\n getObjClassName(value as any).indexOf('Appearance') !== -1\n )\n }\n\n return deep\n }\n\n const setPropsWatcher = register => {\n if (register) {\n if (!vcInstance.cesiumClass || !Cesium[vcInstance.cesiumClass]) {\n return\n }\n\n props &&\n Object.keys(props).forEach(vueProp => {\n let cesiumProp = vueProp\n if (vueProp === 'labelStyle' || vueProp === 'wmtsStyle') {\n cesiumProp = 'style'\n } else if (vueProp === 'bmKey') {\n cesiumProp = 'key'\n }\n // 如果在vue文件中已经监听了改 props 这儿不再监听了\n // If you have listened to the props in the vue file, you will not add any more listeners here.\n if (vcInstance.proxy?.$options.watch?.[vueProp] || vcInstance.alreadyListening.indexOf(vueProp) !== -1) {\n return\n }\n\n const watcherOptions = vcInstance.proxy?.$options.props[vueProp]?.watcherOptions\n // returns an unwatch function that stops firing the callback\n const unwatch = vcInstance.proxy?.$watch(\n vueProp,\n async val => {\n // Wait for child components to be created.\n // 等待子组件创建完成。否则在父组件的 `ready` 事件中就改变的属性将不起作用。\n await (vcInstance.proxy as VcComponentPublicInstance).createPromise\n const { cesiumObject } = vcInstance\n // Get the writability of the current cesiumobject or the props on its prototype chain to\n // detect whether the component property responds dynamically or reloads the component when the property changes.\n // 通过 cesiumObject 对象或它原型链上的 prop 的可写性,以检测属性改变时组件属性是动态响应还是重载组件。\n const pd = cesiumObject && Object.getOwnPropertyDescriptor(cesiumObject, cesiumProp)\n const pdProto = cesiumObject && Object.getOwnPropertyDescriptor(Object.getPrototypeOf(cesiumObject), cesiumProp)\n const hasSetter = (pd && (pd.writable || pd.set)) || (pdProto && (pdProto.writable || pdProto.set))\n if (hasSetter) {\n // Attributes are writable and directly respond to changes in attributes.\n // 属性可写,直接动态响应属性的改变。\n if (watcherOptions && watcherOptions.cesiumObjectBuilder) {\n const newVal = watcherOptions.cesiumObjectBuilder.call(vcInstance, val, vcInstance.viewer.scene.globe.ellipsoid)\n // If an exclude condition has been defined for the object, such as \"_callback\", Cesium will automatically handle it internally and no longer need to be assigned.\n // 如果对象已经定义了 exclude 条件,如已经定义了“_callback”,Cesium 内部会自动处理的 不用再赋值了。\n if (!(Cesium.defined(cesiumObject[cesiumProp]) && Cesium.defined(cesiumObject[cesiumProp]._callback))) {\n cesiumObject[cesiumProp] = newVal\n }\n } else {\n cesiumObject[cesiumProp] = transformProp(cesiumProp, val)\n }\n return true\n } else {\n // The attribute is not writable, and the property is changed indirectly through reloading the component.\n // 属性不可写,通过重加载组件间接实现改变属性\n return (vcInstance.proxy as VcComponentPublicInstance).reload()\n }\n },\n {\n deep: deepWatchHandler(vueProp, watcherOptions)\n }\n )\n unwatchFns.push(unwatch!)\n })\n } else {\n unwatchFns.forEach(item => item())\n unwatchFns = []\n }\n }\n\n const transformProps = <T>(props: T, childProps?: any) => {\n let options: any = {}\n props &&\n Object.keys(props).forEach(vueProp => {\n let cesiumProp = vueProp\n // The properties of the following Cesium instance objects are HTML or Vue reserved words and require special handling.\n // 以下 Cesium 实例对象的属性是 HTML 或 Vue 保留字,需要特别处理一下。\n if (vueProp === 'labelStyle' || vueProp === 'wmtsStyle') {\n cesiumProp = 'style'\n } else if (vueProp === 'bmKey') {\n cesiumProp = 'key'\n }\n\n const className = getObjClassName(props[vueProp])\n if (\n className &&\n className.indexOf('Graphics') === -1 &&\n entityGraphics.indexOf(cesiumProp) !== -1 &&\n (vcInstance.cesiumClass === 'Entity' || vcInstance.cesiumClass.indexOf('DataSource') > 0)\n ) {\n options[cesiumProp] = transformProps(props[vueProp], childProps)\n } else {\n options[cesiumProp] = transformProp(vueProp, props[vueProp], childProps)\n }\n })\n\n options = removeEmpty(options)\n return options as T\n }\n\n const transformProp = (prop, value, childProps?) => {\n const className = getObjClassName(value)\n if (\n className &&\n className.indexOf('Graphics') === -1 &&\n entityGraphics.indexOf(prop) !== -1 &&\n (vcInstance.cesiumClass === 'Entity' || vcInstance.cesiumClass.indexOf('DataSource') > 0 || vcInstance.cesiumClass === 'VcOverlayDynamic')\n ) {\n return transformProps(value, childProps)\n } else {\n const cmpName = vcInstance.proxy?.$options.name\n const propOption = vcInstance.proxy?.$options.props[prop] || childProps?.[prop] || (cesiumProps[prop] && cesiumProps[prop][prop])\n return propOption?.watcherOptions && !isEmptyObj(value)\n ? propOption.watcherOptions.cesiumObjectBuilder.call(vcInstance, value, vcInstance.viewer.scene.globe.ellipsoid)\n : isFunction(value) && cmpName && (cmpName.indexOf('Graphics') !== -1 || cmpName === 'VcEntity' || cmpName.indexOf('Datasource') !== -1)\n ? new Cesium.CallbackProperty(value, false)\n : value\n }\n }\n\n const getServices = () => {\n return mergeDescriptors({}, $services || {})\n }\n\n // lifecycle\n const createPromise = new Promise<VcReadyObject | boolean>((resolve, reject) => {\n try {\n let isLoading = false\n if ($services.viewer) {\n isLoading = true\n load().then(e => {\n resolve(e)\n isLoading = false\n })\n }\n parentVcInstance.vcMitt.on('ready', () => {\n if (!isLoading && !vcInstance.isUnmounted) {\n resolve(load())\n }\n })\n } catch (e) {\n reject(e)\n }\n })\n logger.debug(`${vcInstance.cesiumClass}---onCreated`)\n onUnmounted(() => {\n logger.debug(`${vcInstance.cesiumClass}---onUnmounted`)\n vcInstance.unloadingPromise = new Promise((resolve, reject) => {\n unload().then(() => {\n logger.debug(`${vcInstance.cesiumClass}---unloaded`)\n resolve(true)\n vcInstance.unloadingPromise = undefined\n vcMitt.all.clear()\n })\n })\n vcInstance.alreadyListening = []\n })\n\n // expose public methods\n Object.assign(vcInstance.proxy, {\n createPromise: createPromise,\n load: load,\n unload: unload,\n reload: reload,\n getCesiumObject: () => vcInstance.cesiumObject\n })\n\n return {\n $services,\n load,\n unload,\n reload,\n createPromise,\n transformProp,\n transformProps,\n unwatchFns,\n setPropsWatcher,\n logger,\n getServices\n }\n}\n"],"names":[],"mappings":"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"}