{"version":3,"file":"dep-463cc2cc.mjs","sources":["../../src/jue-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    simulatorTime(time: string): void {\n      const tool = getTimeSimulatorTool(time);\n      tool?.easeTo({ time }, { duration: mapProps.simulatorDuration });\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 JUE.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  // 地图光照模拟\n  const getTimeSimulatorTool = (time: string): LooseObject => {\n    if (!mapToolInstanceData.has('timeSimulatorTool')) {\n      mapToolInstanceData.set('timeSimulatorTool', new JUE.simulation.TimeSimulator(\n        mapInstance,\n        { time },\n      ));\n    }\n    return mapToolInstanceData.get('timeSimulatorTool');\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","measureToolType","type","tool","getMeasureTool","disable","enable","measureDistance","then","measureArea","enableRoam","getRoamTool","start","stop","roamDuration","val","setDuration","roamLoop","setLoop","roamData","data","setData","simulatorTime","time","getTimeSimulatorTool","easeTo","duration","simulatorDuration","has","set","JUE","tools","MeasureTool","map","get","RoamTool","simulation","TimeSimulator","destroyTools","forEach","destroy","clear"],"mappings":"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"}