{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/entity/src/index.ts"],"sourcesContent":["import type { PropType, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, h } from 'vue'\nimport type {\n  AnyObject,\n  EntityEmitType,\n  VcCallbackPropertyFunction,\n  VcComponentInternalInstance,\n  VcComponentPublicInstance,\n  VcGraphics,\n  VcPickEvent,\n  VcPosition,\n  VcReadyObject\n} from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables/index'\nimport { position, enableMouseEvent, show, viewFrom } from '@vue-cesium/utils/cesium-props'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits, pickEventEmits } from '@vue-cesium/utils/emits'\nimport {\n  VcGraphicsBillboardProps,\n  VcGraphicsBoxProps,\n  VcGraphicsCorridorProps,\n  VcGraphicsCylinderProps,\n  VcGraphicsEllipseProps,\n  VcGraphicsEllipsoidProps,\n  VcGraphicsEllipsoidRef,\n  VcGraphicsLabelProps,\n  VcGraphicsModelProps,\n  VcGraphicsPathProps,\n  VcGraphicsPlaneProps,\n  VcGraphicsPointProps,\n  VcGraphicsPolygonProps,\n  VcGraphicsPolylineProps,\n  VcGraphicsPolylineVolumeProps,\n  VcGraphicsRectangleProps,\n  VcGraphicsTilesetProps,\n  VcGraphicsWallProps\n} from '../../graphics'\n\nexport const entityProps = {\n  id: String,\n  name: String,\n  availability: Object as PropType<Cesium.TimeIntervalCollection>,\n  ...show,\n  description: [String, Object] as PropType<string | Cesium.CallbackProperty | VcCallbackPropertyFunction<string>>,\n  ...position,\n  orientation: Object as PropType<Cesium.Quaternion | Cesium.VelocityOrientationProperty | Cesium.CallbackProperty>,\n  ...viewFrom,\n  parent: Object as PropType<Cesium.Entity>,\n  billboard: Object as PropType<Cesium.BillboardGraphics | VcGraphicsBillboardProps>,\n  box: Object as PropType<Cesium.BoxGraphics | VcGraphicsBoxProps>,\n  corridor: Object as PropType<Cesium.CorridorGraphics | VcGraphicsCorridorProps>,\n  cylinder: Object as PropType<Cesium.CylinderGraphics | VcGraphicsCylinderProps>,\n  ellipse: Object as PropType<Cesium.EllipseGraphics | VcGraphicsEllipseProps>,\n  ellipsoid: Object as PropType<Cesium.EllipsoidGraphics | VcGraphicsEllipsoidRef>,\n  label: Object as PropType<Cesium.LabelGraphics | VcGraphicsLabelProps>,\n  model: Object as PropType<Cesium.ModelGraphics | VcGraphicsModelProps>,\n  tileset: Object as PropType<Cesium.Cesium3DTilesetGraphics | VcGraphicsTilesetProps>,\n  path: Object as PropType<Cesium.PathGraphics | VcGraphicsPathProps>,\n  plane: Object as PropType<Cesium.PlaneGraphics | VcGraphicsPlaneProps>,\n  point: Object as PropType<Cesium.PointGraphics | VcGraphicsPointProps>,\n  polygon: Object as PropType<Cesium.PolygonGraphics | VcGraphicsPolygonProps>,\n  polyline: Object as PropType<Cesium.PolylineGraphics | VcGraphicsPolylineProps>,\n  properties: Object,\n  polylineVolume: Object as PropType<Cesium.PolylineVolumeGraphics | VcGraphicsPolylineVolumeProps>,\n  rectangle: Object as PropType<Cesium.RectangleGraphics | VcGraphicsRectangleProps>,\n  wall: Object as PropType<Cesium.WallGraphics | VcGraphicsWallProps>,\n  ...enableMouseEvent\n}\n\nconst emits = {\n  ...commonEmits,\n  ...pickEventEmits,\n  definitionChanged: (property: Cesium.Property) => true,\n  'update:billboard': (payload: Cesium.BillboardGraphics) => true,\n  'update:box': (payload: Cesium.BoxGraphics) => true,\n  'update:corridor': (payload: Cesium.CorridorGraphics) => true,\n  'update:cylinder': (payload: Cesium.CylinderGraphics) => true,\n  'update:ellipse': (payload: Cesium.EllipseGraphics) => true,\n  'update:ellipsoid': (payload: Cesium.EllipsoidGraphics) => true,\n  'update:label': (payload: Cesium.LabelGraphics) => true,\n  'update:model': (payload: Cesium.ModelGraphics) => true,\n  'update:path': (payload: Cesium.PathGraphics) => true,\n  'update:plane': (payload: Cesium.PlaneGraphics) => true,\n  'update:point': (payload: Cesium.PointGraphics) => true,\n  'update:polygon': (payload: Cesium.PolygonGraphics) => true,\n  'update:polyline': (payload: Cesium.PolylineGraphics) => true,\n  'update:polylineVolume': (payload: Cesium.PolylineVolumeGraphics) => true,\n  'update:rectangle': (payload: Cesium.RectangleGraphics) => true,\n  'update:tileset': (payload: any) => true,\n  'update:wall': (payload: Cesium.WallGraphics) => true\n}\n\nexport default defineComponent({\n  name: 'VcEntity',\n  props: entityProps,\n  emits: emits,\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'Entity'\n    instance.cesiumEvents = ['definitionChanged']\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const { emit } = ctx\n\n    // methods\n    instance.mount = async () => {\n      const entity = $services?.entities?.add(instance.cesiumObject as Cesium.Entity)\n      return $services?.entities.contains(entity)\n    }\n\n    instance.unmount = async () => {\n      return $services?.entities?.remove(instance.cesiumObject as Cesium.Entity)\n    }\n\n    const updateGraphics = (graphics, emitType) => {\n      const listener = getInstanceListener(instance, emitType)\n      if (listener) {\n        emit(emitType, graphics)\n      } else {\n        instance.cesiumObject && (instance.cesiumObject[emitType.substring(7)] = graphics)\n      }\n      graphics && (graphics._vcParent = instance.cesiumObject)\n      return true\n    }\n\n    // expose public methods\n    Object.assign(instance.proxy, {\n      // private but needed by VcGraphicsXXX\n      __updateGraphics: updateGraphics\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 || ''))\n  }\n})\n\nexport type VcEntityEmits = typeof emits\n\nexport type VcEntityProps = {\n  /**\n   * A unique identifier for this object. If none is provided, a GUID is generated.\n   */\n  id?: string\n  /**\n   * A human readable name to display to users. It does not have to be unique.\n   */\n  name?: string\n  /**\n   * The availability, if any, associated with this object.\n   */\n  availability?: Cesium.TimeIntervalCollection\n  /**\n   * A boolean value indicating if the entity and its children are displayed.\n   */\n  show?: boolean\n  /**\n   * A string Property specifying an HTML description for this entity.\n   */\n  description?: string | Cesium.CallbackProperty | VcCallbackPropertyFunction<string>\n  /**\n   * A Property specifying the entity position.\n   */\n  position?: VcPosition\n  /**\n   * A Property specifying the entity orientation.\n   */\n  orientation?: Cesium.Quaternion | Cesium.VelocityOrientationProperty | Cesium.CallbackProperty\n  /**\n   * A suggested initial offset for viewing this object.\n   */\n  viewFrom?: VcPosition | Cesium.CallbackProperty\n  /**\n   * A parent entity to associate with this entity.\n   */\n  parent?: Cesium.Entity\n  /**\n   * A billboard to associate with this entity.\n   */\n  billboard?: Cesium.BillboardGraphics | VcGraphicsBillboardProps\n  /**\n   * A box to associate with this entity.\n   */\n  box?: Cesium.BoxGraphics | VcGraphicsBoxProps\n  /**\n   * A corridor to associate with this entity.\n   */\n  corridor?: Cesium.CorridorGraphics | VcGraphicsCorridorProps\n  /**\n   * A cylinder to associate with this entity.\n   */\n  cylinder?: Cesium.CylinderGraphics | VcGraphicsCylinderProps\n  /**\n   * A ellipse to associate with this entity.\n   */\n  ellipse?: Cesium.EllipseGraphics | VcGraphicsEllipseProps\n  /**\n   * A ellipsoid to associate with this entity.\n   */\n  ellipsoid?: Cesium.EllipsoidGraphics | VcGraphicsEllipsoidProps\n  /**\n   * A options.label to associate with this entity.\n   */\n  label?: Cesium.LabelGraphics | VcGraphicsLabelProps\n  /**\n   * A model to associate with this entity.\n   */\n  model?: Cesium.ModelGraphics | VcGraphicsModelProps\n  /**\n   * A 3D Tiles tileset to associate with this entity.\n   */\n  tileset?: Cesium.Cesium3DTilesetGraphics | VcGraphicsTilesetProps\n  /**\n   * A path to associate with this entity.\n   */\n  path?: Cesium.PathGraphics | VcGraphicsPathProps\n  /**\n   * A plane to associate with this entity.\n   */\n  plane?: Cesium.PlaneGraphics | VcGraphicsPlaneProps\n  /**\n   * A point to associate with this entity.\n   */\n  point?: Cesium.PointGraphics | VcGraphicsPointProps\n  /**\n   * A polygon to associate with this entity.\n   */\n  polygon?: Cesium.PolygonGraphics | VcGraphicsPolygonProps\n  /**\n   * A polyline to associate with this entity.\n   */\n  polyline?: Cesium.PolylineGraphics | VcGraphicsPolylineProps\n  /**\n   * Arbitrary properties to associate with this entity.\n   */\n  properties?: AnyObject\n  /**\n   * A polylineVolume to associate with this entity.\n   */\n  polylineVolume?: Cesium.PolylineVolumeGraphics | VcGraphicsPolylineVolumeProps\n  /**\n   * A rectangle to associate with this entity.\n   */\n  rectangle?: Cesium.RectangleGraphics | VcGraphicsRectangleProps\n  /**\n   * A wall to associate with this entity.\n   */\n  wall?: Cesium.WallGraphics | VcGraphicsWallProps\n  /**\n   * Triggers before the VcEntity is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcEntity 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 VcEntity is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when a property or sub-property is changed or modified.\n   */\n  onDefinitionChanged?: (property: Cesium.Property) => void\n  /**\n   * Triggers when the mouse is pressed on this entity.\n   */\n  onMousedown?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse bounces up on this entity.\n   */\n  onMouseup?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks on this entity.\n   */\n  onClick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse clicks outside this entity.\n   */\n  onClickout?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the left mouse button double-clicks this entity.\n   */\n  onDblclick?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves on this entity.\n   */\n  onMousemove?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves over to this entity.\n   */\n  onMouseover?: (evt: VcPickEvent) => void\n  /**\n   * Triggers when the mouse moves out of this entity.\n   */\n  onMouseout?: (evt: VcPickEvent) => void\n}\nexport interface VcEntityRef extends VcComponentPublicInstance<VcEntityProps> {\n  /**\n   * private method, update graphic.\n   * @param graphics\n   * @param type\n   */\n  __updateGraphics: (graphics: VcGraphics | undefined, type: EntityEmitType) => boolean\n}\n\nexport interface VcEntitySlots {\n  /**\n   * Slot for vc-graphics-xxx.\n   */\n  default: () => VNode[]\n}\n"],"names":[],"mappings":";;;;;;;;;;AAwCO,MAAM,WAAc,GAAA;AAAA,EACzB,EAAI,EAAA,MAAA;AAAA,EACJ,IAAM,EAAA,MAAA;AAAA,EACN,YAAc,EAAA,MAAA;AAAA,EACd,GAAG,IAAA;AAAA,EACH,WAAA,EAAa,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,EAC5B,GAAG,QAAA;AAAA,EACH,WAAa,EAAA,MAAA;AAAA,EACb,GAAG,QAAA;AAAA,EACH,MAAQ,EAAA,MAAA;AAAA,EACR,SAAW,EAAA,MAAA;AAAA,EACX,GAAK,EAAA,MAAA;AAAA,EACL,QAAU,EAAA,MAAA;AAAA,EACV,QAAU,EAAA,MAAA;AAAA,EACV,OAAS,EAAA,MAAA;AAAA,EACT,SAAW,EAAA,MAAA;AAAA,EACX,KAAO,EAAA,MAAA;AAAA,EACP,KAAO,EAAA,MAAA;AAAA,EACP,OAAS,EAAA,MAAA;AAAA,EACT,IAAM,EAAA,MAAA;AAAA,EACN,KAAO,EAAA,MAAA;AAAA,EACP,KAAO,EAAA,MAAA;AAAA,EACP,OAAS,EAAA,MAAA;AAAA,EACT,QAAU,EAAA,MAAA;AAAA,EACV,UAAY,EAAA,MAAA;AAAA,EACZ,cAAgB,EAAA,MAAA;AAAA,EAChB,SAAW,EAAA,MAAA;AAAA,EACX,IAAM,EAAA,MAAA;AAAA,EACN,GAAG,gBAAA;AACL,EAAA;AAEA,MAAM,KAAQ,GAAA;AAAA,EACZ,GAAG,WAAA;AAAA,EACH,GAAG,cAAA;AAAA,EACH,iBAAA,EAAmB,CAAC,QAA8B,KAAA,IAAA;AAAA,EAClD,kBAAA,EAAoB,CAAC,OAAsC,KAAA,IAAA;AAAA,EAC3D,YAAA,EAAc,CAAC,OAAgC,KAAA,IAAA;AAAA,EAC/C,iBAAA,EAAmB,CAAC,OAAqC,KAAA,IAAA;AAAA,EACzD,iBAAA,EAAmB,CAAC,OAAqC,KAAA,IAAA;AAAA,EACzD,gBAAA,EAAkB,CAAC,OAAoC,KAAA,IAAA;AAAA,EACvD,kBAAA,EAAoB,CAAC,OAAsC,KAAA,IAAA;AAAA,EAC3D,cAAA,EAAgB,CAAC,OAAkC,KAAA,IAAA;AAAA,EACnD,cAAA,EAAgB,CAAC,OAAkC,KAAA,IAAA;AAAA,EACnD,aAAA,EAAe,CAAC,OAAiC,KAAA,IAAA;AAAA,EACjD,cAAA,EAAgB,CAAC,OAAkC,KAAA,IAAA;AAAA,EACnD,cAAA,EAAgB,CAAC,OAAkC,KAAA,IAAA;AAAA,EACnD,gBAAA,EAAkB,CAAC,OAAoC,KAAA,IAAA;AAAA,EACvD,iBAAA,EAAmB,CAAC,OAAqC,KAAA,IAAA;AAAA,EACzD,uBAAA,EAAyB,CAAC,OAA2C,KAAA,IAAA;AAAA,EACrE,kBAAA,EAAoB,CAAC,OAAsC,KAAA,IAAA;AAAA,EAC3D,gBAAA,EAAkB,CAAC,OAAiB,KAAA,IAAA;AAAA,EACpC,aAAA,EAAe,CAAC,OAAiC,KAAA,IAAA;AACnD,CAAA,CAAA;AAEA,aAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,UAAA;AAAA,EACN,KAAO,EAAA,WAAA;AAAA,EACP,KAAA;AAAA,EACA,KAAA,CAAM,OAAO,GAAK,EAAA;AAEhB,IAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,IAAA,QAAA,CAAS,WAAc,GAAA,QAAA,CAAA;AACvB,IAAS,QAAA,CAAA,YAAA,GAAe,CAAC,mBAAmB,CAAA,CAAA;AAC5C,IAAA,MAAM,WAAc,GAAA,SAAA,CAAU,KAAO,EAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAClD,IAAA,IAAI,gBAAgB,KAAQ,CAAA,EAAA;AAC1B,MAAA,OAAA;AAAA,KACF;AACA,IAAM,MAAA,EAAE,WAAc,GAAA,WAAA,CAAA;AACtB,IAAM,MAAA,EAAE,MAAS,GAAA,GAAA,CAAA;AAGjB,IAAA,QAAA,CAAS,QAAQ,YAAY;AA/GjC,MAAA,IAAA,EAAA,CAAA;AAgHM,MAAA,MAAM,MAAS,GAAA,CAAA,EAAA,GAAA,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAW,QAAX,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAqB,IAAI,QAAS,CAAA,YAAA,CAAA,CAAA;AACjD,MAAO,OAAA,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAW,SAAS,QAAS,CAAA,MAAA,CAAA,CAAA;AAAA,KACtC,CAAA;AAEA,IAAA,QAAA,CAAS,UAAU,YAAY;AApHnC,MAAA,IAAA,EAAA,CAAA;AAqHM,MAAA,OAAA,CAAO,EAAW,GAAA,SAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,QAAA,KAAX,IAAqB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAA,CAAO,QAAS,CAAA,YAAA,CAAA,CAAA;AAAA,KAC9C,CAAA;AAEA,IAAM,MAAA,cAAA,GAAiB,CAAC,QAAA,EAAU,QAAa,KAAA;AAC7C,MAAM,MAAA,QAAA,GAAW,mBAAoB,CAAA,QAAA,EAAU,QAAQ,CAAA,CAAA;AACvD,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,IAAA,CAAK,UAAU,QAAQ,CAAA,CAAA;AAAA,OAClB,MAAA;AACL,QAAA,QAAA,CAAS,iBAAiB,QAAS,CAAA,YAAA,CAAa,SAAS,SAAU,CAAA,CAAC,CAAC,CAAI,GAAA,QAAA,CAAA,CAAA;AAAA,OAC3E;AACA,MAAa,QAAA,KAAA,QAAA,CAAS,YAAY,QAAS,CAAA,YAAA,CAAA,CAAA;AAC3C,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAGA,IAAO,MAAA,CAAA,MAAA,CAAO,SAAS,KAAO,EAAA;AAAA;AAAA,MAE5B,gBAAkB,EAAA,cAAA;AAAA,KACnB,CAAA,CAAA;AAED,IAAA,OAAO,MAAG;AAzId,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AA0IM,MAAA,OAAA,GAAA,CAAI,MAAM,OACN,GAAA,CAAA;AAAA,QACE,GAAA;AAAA,QACA;AAAA,UACE,OAAO,SAAU,CAAA,CAAA,CAAA,EAAA,GAAA,QAAA,CAAS,UAAT,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAA,CAAS,SAAQ,EAAE,CAAA;AAAA,UACpD,KAAA,EAAO,EAAE,OAAA,EAAS,iBAAkB,EAAA;AAAA,SACtC;AAAA,QACA,KAAA,CAAM,GAAI,CAAA,KAAA,CAAM,OAAO,CAAA;AAAA,OACzB,GACA,mBAAmB,SAAU,CAAA,CAAA,CAAA,EAAA,GAAA,QAAA,CAAS,UAAT,IAAgB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAA,CAAS,IAAQ,KAAA,EAAE,CAAC,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GACzE;AACF,CAAC,CAAA;;;;"}