UNPKG

vue-cesium

Version:
1 lines 8.95 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/geometry-instance/src/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-08-12 11:48:54\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\10_vue-cesium\\packages\\components\\geometry-instance\\src\\index.ts\n */\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcGeometry, VcReadyObject } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode, PropType, ref, h, provide, VNode } from 'vue'\nimport { useCommon } from '@vue-cesium/composables'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { modelMatrix, id } from '@vue-cesium/utils/cesium-props'\nimport { getInstanceListener, getVcParentInstance } from '@vue-cesium/utils/private/vm'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { vcKey } from '@vue-cesium/utils/config'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport { VcPrimitiveRef } from '../../primitives'\nexport const geometryInstanceProps = {\n geometry: Object as PropType<Cesium.Geometry | Cesium.GeometryFactory>,\n ...modelMatrix,\n ...id,\n attributes: Object\n}\nconst emits = {\n ...commonEmits,\n 'update:geometry': (payload: VcGeometry) => true\n}\nexport default defineComponent({\n name: 'VcGeometryInstance',\n props: geometryInstanceProps,\n emits: emits,\n setup(props, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.renderByParent = true\n instance.cesiumClass = 'GeometryInstance'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const { emit } = ctx\n const vcIndex = ref(0)\n // methods\n instance.createCesiumObject = async () => {\n const options = commonState.transformProps(props) as any\n if (!options.geometry) {\n options.geometry = new Cesium.Geometry({ attributes: new Cesium.GeometryAttributes() })\n }\n return new Cesium.GeometryInstance(options)\n }\n instance.mount = async () => {\n const parentVM = getVcParentInstance(instance).proxy as VcPrimitiveRef\n if (parentVM.__childCount !== undefined) {\n vcIndex.value = parentVM.__childCount.value || 0\n parentVM.__childCount.value += 1\n }\n\n const geometryInstance = instance.cesiumObject as Cesium.GeometryInstance\n parentVM.__updateGeometryInstances?.(geometryInstance, vcIndex.value)\n return true\n }\n instance.unmount = async () => {\n const geometryInstance = instance.cesiumObject as Cesium.GeometryInstance\n const parentVM = getVcParentInstance(instance).proxy as VcPrimitiveRef\n parentVM.__removeGeometryInstances?.(geometryInstance)\n return true\n }\n\n const updateGeometry = geometry => {\n const listener = getInstanceListener(instance, 'update:geometry')\n if (listener) {\n emit('update:geometry', geometry)\n } else {\n const geometryInstance = instance.cesiumObject as Cesium.GeometryInstance\n geometryInstance.geometry = geometry\n }\n\n return true\n }\n\n const getServices = () => {\n return mergeDescriptors(commonState.getServices(), {\n get geometryInstance() {\n return instance.cesiumObject as Cesium.GeometryInstance\n }\n })\n }\n\n // provide\n provide(vcKey, getServices())\n\n // expose public methods\n Object.assign(instance.proxy, {\n // private but needed by VcGeometryXXX\n __updateGeometry: updateGeometry\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 || 'v-if'))\n }\n})\n\nexport type VcGeometryInstanceEmits = typeof emits\nexport type VcGeometryInstanceProps = {\n /**\n * The geometry to instance.\n */\n geometry?: Cesium.Geometry | Cesium.GeometryFactory\n /**\n * The model matrix that transforms to transform the geometry from model to world coordinates.\n */\n modelMatrix?: Cesium.Matrix4\n /**\n * A user-defined object to return when the instance is picked with Scene#pick or get/set per-instance attributes with Primitive#getGeometryInstanceAttributes.\n */\n id?: any\n /**\n * Per-instance attributes like a show or color attribute shown in the example below.\n */\n attributes?: any\n /**\n * Triggers before the VcGeometryInstance is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the VcGeometryInstance is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the component load failed.\n */\n onUnready?: (e: any) => void\n /**\n * Triggers when the VcGeometryInstance is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the geometry mounted.\n */\n 'onUpdate:geometry'?: (payload: VcGeometry) => void\n}\n\nexport interface VcGeometryInstanceRef extends VcComponentPublicInstance<VcGeometryInstanceProps> {\n /**\n * private but needed by VcGeometryXXX.\n * @param geometry\n */\n __updateGeometry?(geometry: Cesium.Geometry): boolean\n}\n\nexport interface VcGeometryInstanceSlots {\n /**\n * Slot for vc-geometry-xxx.\n */\n default: () => VNode[]\n}\n"],"names":[],"mappings":"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"}