{"version":3,"file":"Loca.vue2.mjs","sources":["../../../../packages/Loca/Loca.vue"],"sourcesContent":["<template>\r\n  <div><slot /></div>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport {defineOptions, provide} from 'vue';\r\nimport {provideKey, useRegister} from \"@vuemap/vue-amap\";\r\nimport {buildLocaProps, commonEmitNames} from \"../../utils/buildHelper\";\r\nimport type { TRegisterFn, IProvideType} from \"@vuemap/vue-amap\";\r\nimport type {PropType} from 'vue';\r\nimport type {EventOptions} from \"./Type\";\r\n\r\ndefineOptions({\r\n  name: 'ElAmapLoca',\r\n  inheritAttrs: false\r\n});\r\n\r\nconst needInitComponents: TRegisterFn[] = [];\r\nconst provideData:IProvideType = {\r\n  $amapComponent: undefined,\r\n  addChildComponent (cb){\r\n    needInitComponents.push(cb);\r\n  },\r\n  isDestroy: false,\r\n  getMap: () => {\r\n    return getMap();\r\n  }\r\n};\r\n\r\nprovide(provideKey, provideData);\r\n\r\nconst props = defineProps(buildLocaProps({\r\n  ambLight: {\r\n    type: Object\r\n  }, // 环境光\r\n  dirLight: {\r\n    type: Object\r\n  }, // 平行光\r\n  pointLight: {\r\n    type: Object\r\n  }, // 点光\r\n  onClick: {\r\n    type: Function,\r\n    default: null\r\n  },\r\n  onMousemove: {\r\n    type: Function,\r\n    default: null\r\n  },\r\n  onRightclick: {\r\n    type: Function,\r\n    default: null\r\n  },\r\n  eventOptions: {\r\n    type: Object as PropType<EventOptions>,\r\n    default: () => ({\r\n      hitFirst: true\r\n    })\r\n  } // 对于事件是否只触发第一个选中的数据\r\n}));\r\nconst emits = defineEmits(commonEmitNames);\r\n\r\nlet $amapComponent: any;\r\nlet isDragging = false;\r\nlet isRotating = false;\r\nlet hitFirst = true;\r\n\r\nconst {$$getInstance, parentInstance} = useRegister<Loca.Container, AMap.Map>((options, parentComponent) => {\r\n  return new Promise<any>((resolve) => {\r\n    $amapComponent = new Loca.Container({\r\n      map: parentComponent\r\n    });\r\n    provideData.$amapComponent = $amapComponent;\r\n    if (options.ambLight) {\r\n      $amapComponent.ambLight = options.ambLight;\r\n    }\r\n    if (options.dirLight) {\r\n      $amapComponent.dirLight = options.dirLight;\r\n    }\r\n    if (options.pointLight) {\r\n      $amapComponent.pointLight = options.pointLight;\r\n    }\r\n    hitFirst = options.eventOptions.hitFirst;\r\n    bindEvents();\r\n    resolve($amapComponent);\r\n  });\r\n\r\n}, {\r\n  emits,\r\n  needInitComponents,\r\n  provideData,\r\n  destroyComponent () {\r\n    if ($amapComponent) {\r\n      unBindEvents();\r\n      if($amapComponent.animate && $amapComponent.animate.stop){\r\n        $amapComponent.animate.stop();\r\n      }\r\n      $amapComponent.destroy();\r\n      $amapComponent = null as any;\r\n    }\r\n  },\r\n});\r\n\r\nconst getMap = () => {\r\n  return parentInstance?.$amapComponent;\r\n};\r\n\r\nconst bindEvents = () => {\r\n  if(parentInstance){\r\n    const map = getMap();\r\n    if(props.onClick !== null){\r\n      map.on('click', clickMap);\r\n    }\r\n    if(props.onMousemove !== null){\r\n      map.on('mousemove', mouseMoveMap);\r\n      map.on('dragstart', dragStart);\r\n      map.on('dragend', dragEnd);\r\n      map.on('rotatestart', rotateStart);\r\n      map.on('rotateend', rotateEnd);\r\n      map.on('mouseout', mouseoutMap);\r\n    }\r\n    if(props.onRightclick !== null){\r\n      map.on('rightclick', rightclickMap);\r\n    }\r\n  }\r\n};\r\nconst clickMap = (e) => {\r\n  const features = _getFeature(e);\r\n  emits('click', features, e);\r\n};\r\nconst rightclickMap = (e) => {\r\n  const features = _getFeature(e);\r\n  emits('rightclick', features, e);\r\n};\r\nconst mouseMoveMap = (e) => {\r\n  if(isDragging || isRotating){\r\n    return;\r\n  }\r\n  const features = _getFeature(e);\r\n  emits('mousemove', features, e);\r\n};\r\nconst _getFeature = (e) => {\r\n  const features: any[] = [];\r\n  if($amapComponent.layers){\r\n    const layers: any[] = [];\r\n    $amapComponent.layers.forEach(( v => {\r\n      layers.push(v);\r\n    }));\r\n    layers.sort((a,b) => b.zIndex - a.zIndex);\r\n    const layerLen = layers.length;\r\n    for(let i=0;i<layerLen;i++){\r\n      const temp = layers[i].queryFeature(e.pixel.toArray());\r\n      if(temp){\r\n        features.push(temp);\r\n        if(hitFirst){\r\n          break;\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  return features;\r\n};\r\nconst dragStart = () => {\r\n  isDragging = true;\r\n};\r\nconst dragEnd = () => {\r\n  isDragging = false;\r\n};\r\nconst mouseoutMap = () => {\r\n  isDragging = false;\r\n  isRotating = false;\r\n};\r\nconst rotateStart = () => {\r\n  isRotating = true;\r\n};\r\nconst rotateEnd = () => {\r\n  isRotating = false;\r\n};\r\nconst unBindEvents = () => {\r\n  if(parentInstance){\r\n    const map = getMap();\r\n    map.off('click', clickMap);\r\n    map.off('rightclick', rightclickMap);\r\n    map.off('mousemove', mouseMoveMap);\r\n    map.off('dragstart', dragStart);\r\n    map.off('dragend', dragEnd);\r\n    map.off('rotatestart', rotateStart);\r\n    map.off('rotateend', rotateEnd);\r\n    map.off('mouseout', mouseoutMap);\r\n  }\r\n};\r\n\r\ndefineExpose({\r\n  $$getInstance\r\n});\r\n\r\n</script>\r\n"],"names":[],"mappings":"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"}