{"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-02-15 09:14:41\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\geometry-instance\\src\\index.ts\n */\nimport type { VcComponentInternalInstance, VcComponentPublicInstance, VcGeometry } from '@vue-cesium/utils/types'\nimport { defineComponent, getCurrentInstance, createCommentVNode, PropType, ref, h, provide } from 'vue'\nimport type { ExtractPropTypes } 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'\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 VcComponentPublicInstance\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 VcComponentPublicInstance\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    instance.appContext.config.globalProperties.$VueCesium = 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\n// export type VcGeometryInstanceProps = ExtractPropTypes<typeof geometryInstanceProps>\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"],"names":[],"mappings":"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"}