{"version":3,"file":"dep-107c350f.mjs","sources":["../../src/base-map/tools/useTools.ts"],"sourcesContent":["import LatLngOverlay from './latlng-overlay';\nimport RoamTool from './roam-tool';\n\nexport default function useTools(\n  mapInstance: LooseObject | null,\n  containerDom: HTMLElement,\n  mapProps: LooseObject,\n): LooseObject {\n  if (!mapInstance) return {};\n\n  const mapToolInstanceData = new Map();\n\n  const mapToolAttrsHandlers = {\n    enableRealtimeLatlng(enable: boolean): void {\n      if (enable) {\n        mapInstance?.on('mousemove', createRealtimeLatlngOverlay);\n        containerDom.addEventListener('mouseleave', onLeaveContainer);\n        containerDom.addEventListener('mouseenter', onEnterContainer);\n      } else {\n        mapInstance?.off('mousemove', createRealtimeLatlngOverlay);\n        containerDom.removeEventListener('mouseleave', onLeaveContainer);\n        containerDom.removeEventListener('mouseenter', onEnterContainer);\n      }\n    },\n    measureToolType(type: string): void {\n      const tool = getMeasureTool();\n      if (type === 'disable') {\n        tool.disable();\n        return;\n      }\n      tool.enable();\n      if (type === 'distance') {\n        tool.measureDistance().then(() => mapToolAttrsHandlers.measureToolType(type));\n      } else {\n        tool.measureArea().then(() => mapToolAttrsHandlers.measureToolType(type));\n      }\n    },\n    enableRoam(enable: boolean) {\n      const tool = getRoamTool();\n      enable ? tool.start() : tool.stop();\n    },\n    roamDuration(val: number) {\n      const tool = getRoamTool();\n      tool.setDuration(val);\n      mapProps.enableRoam && tool.start();\n    },\n    roamLoop(val: number) {\n      const tool = getRoamTool();\n      tool.setLoop(val);\n      mapProps.enableRoam && tool.start();\n    },\n    roamData(data: RoamKeyFrame[]) {\n      const tool = getRoamTool();\n      tool.setData(data);\n      mapProps.enableRoam && tool.start();\n    },\n  };\n\n  // 实时坐标显示\n  const createRealtimeLatlngOverlay = (e: MapEvent): void => {\n    showLatLng(e.latLng);\n  };\n\n  const showLatLng = (position: LatLng): void => {\n    if (!mapToolInstanceData.has('enableRealtimeLatlng')) {\n      mapToolInstanceData.set('enableRealtimeLatlng', new LatLngOverlay({\n        map: mapInstance,\n        position,\n      }));\n    } else {\n      const overlay = mapToolInstanceData.get('enableRealtimeLatlng');\n      overlay.updatePosition(position);\n      overlay.updateDOM();\n    }\n  };\n\n  const handleRealtimeOverlayVisible = (visible: boolean): void => { // 处理鼠标移出地图组件，实时坐标仍显示的问题\n    if (!mapToolInstanceData.has('enableRealtimeLatlng')) return;\n    mapToolInstanceData.get('enableRealtimeLatlng').setMap(visible ? mapInstance : null);\n  };\n\n  const onLeaveContainer = (): void => {\n    handleRealtimeOverlayVisible(false);\n  };\n\n  const onEnterContainer = (): void => {\n    handleRealtimeOverlayVisible(true);\n  };\n\n  // 测量工具\n  const getMeasureTool = (): LooseObject => {\n    if (!mapToolInstanceData.has('measureToolType')) {\n      mapToolInstanceData.set('measureToolType', new TMap.tools.MeasureTool({\n        map: mapInstance,\n      }));\n    }\n    return mapToolInstanceData.get('measureToolType');\n  };\n\n  // 地图漫游\n  const getRoamTool = (): RoamTool => {\n    if (!mapToolInstanceData.has('roamTool')) {\n      mapToolInstanceData.set('roamTool', new RoamTool(\n        mapInstance,\n        mapProps.roamData,\n        mapProps.roamLoop,\n        mapProps.roamDuration,\n      ));\n    }\n    return mapToolInstanceData.get('roamTool');\n  };\n\n  // 销毁时清空map结构\n  const destroyTools = (): void => {\n    mapToolInstanceData.forEach(tool => tool.destroy());\n    mapToolInstanceData.clear();\n  };\n\n  return {\n    mapToolAttrsHandlers,\n    destroyTools,\n  };\n}\n"],"names":["useTools","mapInstance","containerDom","mapProps","mapToolInstanceData","Map","mapToolAttrsHandlers","enableRealtimeLatlng","enable","on","createRealtimeLatlngOverlay","addEventListener","onLeaveContainer","onEnterContainer","off","removeEventListener","measureToolType","type","tool","getMeasureTool","disable","measureDistance","then","measureArea","enableRoam","getRoamTool","start","stop","roamDuration","val","setDuration","roamLoop","setLoop","roamData","data","setData","e","showLatLng","latLng","position","has","set","LatLngOverlay","map","overlay","get","updatePosition","updateDOM","handleRealtimeOverlayVisible","visible","setMap","TMap","tools","MeasureTool","RoamTool","destroyTools","forEach","destroy","clear"],"mappings":"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"}