{"version":3,"file":"index.mjs","sources":["../../../../../packages/composables/use-events/index.ts"],"sourcesContent":["import { AnyObject, VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport { kebabCase, capitalize, isArray } from 'casc-cesium-utils/util'\nimport { getInstanceListener } from 'casc-cesium-utils/private/vm'\n\nexport default function (props, vcInstance: VcComponentInternalInstance, logger) {\n  const bindEvents = (cesiumObject: AnyObject, cesiumEvents: Array<string>, register = true) => {\n    const ev = cesiumEvents || vcInstance.cesiumEvents || []\n    ev &&\n      ev.forEach(eventName => {\n        if (cesiumObject[eventName]) {\n          const listener = getInstanceListener(vcInstance, eventName)\n          const methodName = register ? 'addEventListener' : 'removeEventListener'\n          listener && cesiumObject[eventName][methodName](listener)\n        } else if (process.env.VUECESIUM_DEBUG) {\n          logger.warn('Add event linstener of ' + eventName + ' failed, try to upgrade Cesium to latest version.')\n        }\n      })\n  }\n  const registerEvents = register => {\n    const { viewer, cesiumObject } = vcInstance\n    if (cesiumObject === void 0) {\n      return\n    }\n    const { ScreenSpaceEventHandler, ScreenSpaceEventType } = Cesium\n\n    if (!viewer._vcPickScreenSpaceEventHandler || !viewer._vcViewerScreenSpaceEventHandler) {\n      viewer._vcPickScreenSpaceEventHandler = new ScreenSpaceEventHandler(viewer.canvas)\n      viewer._vcViewerScreenSpaceEventHandler = new ScreenSpaceEventHandler(viewer.canvas)\n      viewerScreenSpaceEvents.forEach(type => {\n        const listener = getInstanceListener(vcInstance, type)\n        listener && viewer._vcViewerScreenSpaceEventHandler.setInputAction(listener, ScreenSpaceEventType[type])\n        // vc-viewer 率先绑定\n        viewer._vcPickScreenSpaceEventHandler.setInputAction(pickedAction.bind({ eventName: type, viewer }), ScreenSpaceEventType[type])\n      })\n    }\n\n    bindEvents(cesiumObject, vcInstance.cesiumEvents || [], register)\n\n    vcInstance.cesiumMembersEvents?.forEach(eventName => {\n      const cesiumIntanceMember =\n        isArray(eventName.name) && eventName.name.length > 0 && cesiumObject[eventName.name[0]]\n          ? cesiumObject[eventName.name[0]][eventName.name[1]]\n          : cesiumObject[eventName.name as string]\n      cesiumIntanceMember && bindEvents(cesiumIntanceMember, eventName.events, register)\n    })\n\n    if (props.enableMouseEvent) {\n      pickEvents.forEach(eventName => {\n        const listener = getInstanceListener(vcInstance, eventName)\n        if (register) {\n          listener && (cesiumObject[`vc${eventName}`] = listener)\n        } else {\n          listener && delete cesiumObject[`vc${eventName}`]\n        }\n      })\n    }\n  }\n\n  function pickedAction(this, movement) {\n    if (!props.enableMouseEvent || !movement) {\n      return\n    }\n    const viewer: Cesium.Viewer = this.viewer\n    const { eventName } = this\n    const position: Cesium.Cartesian2 = movement.position || movement.endPosition\n    if (!position) {\n      return\n    }\n\n    const pickedFeatureAndCallbackNames: Array<any> = []\n\n    let callbackName\n    if (eventName.indexOf('LEFT_DOUBLE_CLICK') !== -1) {\n      callbackName = 'dblclick'\n    } else if (eventName.indexOf('CLICK') !== -1) {\n      callbackName = 'click'\n    } else if (eventName.indexOf('DOWN') !== -1) {\n      callbackName = 'mousedown'\n    } else if (eventName.indexOf('UP') !== -1) {\n      callbackName = 'mouseup'\n    } else if (eventName.indexOf('MOUSE_MOVE') !== -1) {\n      callbackName = 'mousemove'\n    }\n\n    let callbackNameOut\n    if (callbackName === 'mousemove') {\n      callbackNameOut = 'mouseout'\n    } else if (callbackName === 'click') {\n      callbackNameOut = 'clickout'\n    }\n\n    const pickedFeature = viewer.scene.pick(position)\n    if (!Cesium.defined(pickedFeature)) {\n      if (this.pickedFeature) {\n        // 没有拾取到对象，this.pickedFeature又有记录，说明移出了。\n        pickedFeatureAndCallbackNames.push({\n          callbackName: callbackNameOut,\n          pickedFeature: this.pickedFeature\n        })\n      }\n\n      this.pickedFeature = undefined\n    } else {\n      if (this.pickedFeature && this.pickedFeature.id !== pickedFeature.id) {\n        pickedFeatureAndCallbackNames.push({\n          // 拾取到对象，this.pickedFeature也有记录，两者不同，说明操作到另外一个对象上去了\n          callbackName: callbackNameOut,\n          pickedFeature: this.pickedFeature\n        })\n      }\n      if (callbackName === 'mousemove' && (!this.pickedFeature || this.pickedFeature.id !== pickedFeature.id)) {\n        pickedFeatureAndCallbackNames.push({\n          callbackName: 'mouseover',\n          pickedFeature\n        })\n      }\n\n      pickedFeatureAndCallbackNames.push({\n        callbackName,\n        pickedFeature\n      })\n    }\n\n    if (pickedFeatureAndCallbackNames.length === 0) {\n      return\n    }\n\n    let intersection: Cesium.Cartesian3 | undefined\n    const scene = viewer.scene\n    if (scene.mode === Cesium.SceneMode.SCENE3D) {\n      const ray = scene.camera.getPickRay(position)\n      intersection = scene.globe.pick(ray, scene)\n    } else {\n      intersection = scene.camera.pickEllipsoid(position, scene.globe.ellipsoid)\n    }\n\n    let button = -1\n    if (eventName.indexOf('LEFT') !== -1) {\n      button = 0\n    } else if (eventName.indexOf('MIDDLE') !== -1) {\n      button = 1\n    } else if (eventName.indexOf('RIGHT') !== -1) {\n      button = 2\n    }\n    const eventSourceList: Array<any> = []\n    pickedFeatureAndCallbackNames.forEach(item => {\n      const callbackName = item.callbackName\n      const pickedFeature = item.pickedFeature\n      if (pickedFeature.id) {\n        if (isArray(pickedFeature.id) && pickedFeature.id[0] instanceof Cesium.Entity) {\n          // 数据源集合（集群）\n          eventSourceList.push({\n            callbackName,\n            cesiumObject: pickedFeature.id[0].entityCollection.owner,\n            pickedFeature\n          })\n        } else if (pickedFeature.id instanceof Cesium.Entity) {\n          // 实体\n          eventSourceList.push({\n            callbackName,\n            cesiumObject: pickedFeature.id,\n            pickedFeature\n          })\n          // 数据源\n          eventSourceList.push({\n            callbackName,\n            cesiumObject: pickedFeature.id.entityCollection.owner,\n            pickedFeature\n          })\n        }\n      }\n      const getParentCollection = e => {\n        eventSourceList.push({\n          callbackName,\n          cesiumObject: e,\n          pickedFeature\n        })\n        if (e._vcParent) {\n          getParentCollection(e._vcParent)\n        }\n      }\n      // 图元\n      // + 自定义图元 如 PolygonPrimitive\n      if (pickedFeature.primitive) {\n        if (pickedFeature.primitive._vcParent) {\n          getParentCollection(pickedFeature.primitive._vcParent)\n        }\n        eventSourceList.push({\n          callbackName,\n          cesiumObject: pickedFeature.primitive,\n          pickedFeature\n        })\n      }\n\n      // 图元集合\n      if (pickedFeature.collection) {\n        if (pickedFeature.collection._vcParent) {\n          getParentCollection(pickedFeature.collection._vcParent)\n        }\n\n        eventSourceList.push({\n          callbackName,\n          cesiumObject: pickedFeature.collection,\n          pickedFeature\n        })\n      }\n    })\n\n    eventSourceList.forEach(event => {\n      if (event.callbackName) {\n        const fn =\n          event.cesiumObject[`vc${event.callbackName}`] ||\n          event.cesiumObject[`on${capitalize(event.callbackName)}`] ||\n          event.cesiumObject[kebabCase(`on${capitalize(event.callbackName)}`)]\n\n        if (Cesium.defined(fn)) {\n          const payload = {\n            type: `on${event.callbackName}`,\n            windowPosition: position,\n            surfacePosition: intersection,\n            pickedFeature: event.pickedFeature,\n            button,\n            cesiumObject: event.cesiumObject\n          }\n          if (fn instanceof Cesium.CallbackProperty) {\n            ;(fn as any)._callback(payload)\n          } else {\n            fn(payload)\n          }\n        }\n      }\n    })\n\n    this.pickedFeature = pickedFeature\n  }\n  return {\n    bindEvents,\n    registerEvents\n  }\n}\n\nconst viewerScreenSpaceEvents: Array<string> = [\n  'LEFT_CLICK',\n  'LEFT_DOUBLE_CLICK',\n  'LEFT_DOWN',\n  'LEFT_UP',\n  'MIDDLE_CLICK',\n  'MIDDLE_DOWN',\n  'MIDDLE_UP',\n  'MOUSE_MOVE',\n  'PINCH_END',\n  'PINCH_MOVE',\n  'PINCH_START',\n  'RIGHT_CLICK',\n  'RIGHT_DOWN',\n  'RIGHT_UP',\n  'WHEEL'\n]\n\nconst pickEvents: Array<string> = ['mousedown', 'mouseup', 'click', 'clickout', 'dblclick', 'mousemove', 'mouseover', 'mouseout']\n\nexport { pickEvents, viewerScreenSpaceEvents }\n"],"names":[],"mappings":"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"}