{"ast":null,"code":"var _jsxFileName = \"D:\\\\LDT\\\\000 Project\\\\LDT\\\\Client\\\\src\\\\components\\\\NaverMap.js\",\n  _s = $RefreshSig$();\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nexport default function NaverMap({\n  latitude = 37.5665,\n  longitude = 126.9780,\n  markers = [],\n  style = {\n    width: \"100%\",\n    height: \"600px\"\n  }\n}) {\n  _s();\n  const mapRef = useRef(null);\n  const [loading, setLoading] = useState(true);\n  useEffect(() => {\n    var _markers$0$lat, _markers$, _markers$0$lng, _markers$2;\n    if (!window.naver || !window.naver.maps || !mapRef.current) return;\n\n    // 지도 생성\n    const map = new window.naver.maps.Map(mapRef.current, {\n      center: new window.naver.maps.LatLng((_markers$0$lat = (_markers$ = markers[0]) === null || _markers$ === void 0 ? void 0 : _markers$.lat) !== null && _markers$0$lat !== void 0 ? _markers$0$lat : latitude, (_markers$0$lng = (_markers$2 = markers[0]) === null || _markers$2 === void 0 ? void 0 : _markers$2.lng) !== null && _markers$0$lng !== void 0 ? _markers$0$lng : longitude),\n      zoom: 13\n    });\n    setLoading(false);\n\n    // 기존 마커/클러스터러 클린업용 ref\n    let markerObjs = [];\n    let infoWindows = [];\n    let clusterer = null;\n\n    // 마커 생성\n    markerObjs = markers.map((marker, idx) => {\n      const markerObj = new window.naver.maps.Marker({\n        position: new window.naver.maps.LatLng(marker.lat, marker.lng),\n        icon: marker.icon,\n        title: marker.title || marker.name || \"\"\n      });\n\n      // InfoWindow 연결\n      if (marker.title || marker.desc) {\n        const infoWindow = new window.naver.maps.InfoWindow({\n          content: `\n            <div style=\"padding:7px;font-size:14px;\">\n              <b>${marker.title || marker.name || \"\"}</b><br/>\n              ${marker.desc || \"\"}` + (marker.lat && marker.lng ? `<br/>(${marker.lat.toFixed(5)}, ${marker.lng.toFixed(5)})` : \"\") + `</div>\n          `\n        });\n        infoWindows.push(infoWindow);\n        window.naver.maps.Event.addListener(markerObj, \"click\", () => {\n          infoWindows.forEach(iw => iw.close());\n          infoWindow.open(map, markerObj);\n        });\n      }\n      return markerObj;\n    });\n\n    // 마커 클러스터러 생성\n    clusterer = new window.naver.maps.MarkerClustering({\n      minClusterSize: 2,\n      maxZoom: 17,\n      map: map,\n      markers: markerObjs,\n      disableClickZoom: false,\n      gridSize: 80,\n      icons: [\n      // 필요 시 클러스터 아이콘 커스텀\n      {\n        html: '<div style=\"background:#3887be;color:#fff;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:16px;\">{n}</div>',\n        size: window.naver.maps.Size ? new window.naver.maps.Size(36, 36) : undefined,\n        anchor: window.naver.maps.Point ? new window.naver.maps.Point(18, 18) : undefined\n      }]\n    });\n\n    // 지도 클릭시 좌표 info\n    window.naver.maps.Event.addListener(map, \"click\", e => {\n      const tempWindow = new window.naver.maps.InfoWindow({\n        content: `<div style=\"padding:7px;font-size:13px;\">좌표: ${e.coord.lat().toFixed(6)}, ${e.coord.lng().toFixed(6)}</div>`\n      });\n      tempWindow.open(map, e.coord);\n      setTimeout(() => tempWindow.close(), 2000);\n    });\n\n    // cleanup\n    return () => {\n      markerObjs.forEach(marker => marker.setMap(null));\n      infoWindows.forEach(iw => iw.close());\n      if (clusterer) clusterer.setMap(null);\n    };\n  }, [markers, latitude, longitude]);\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    style: {\n      position: \"relative\",\n      ...style\n    },\n    children: [loading && /*#__PURE__*/_jsxDEV(\"div\", {\n      children: /*#__PURE__*/_jsxDEV(\"h3\", {\n        children: \"Map loading...\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 100,\n        columnNumber: 11\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 99,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      ref: mapRef,\n      style: {\n        width: \"100%\",\n        height: \"100%\"\n      }\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 103,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 97,\n    columnNumber: 5\n  }, this);\n}\n_s(NaverMap, \"TZFGDAfS7ZPPjP6zz2xL/p/oo5Q=\");\n_c = NaverMap;\nvar _c;\n$RefreshReg$(_c, \"NaverMap\");","map":{"version":3,"names":["React","useEffect","useRef","useState","jsxDEV","_jsxDEV","NaverMap","latitude","longitude","markers","style","width","height","_s","mapRef","loading","setLoading","_markers$0$lat","_markers$","_markers$0$lng","_markers$2","window","naver","maps","current","map","Map","center","LatLng","lat","lng","zoom","markerObjs","infoWindows","clusterer","marker","idx","markerObj","Marker","position","icon","title","name","desc","infoWindow","InfoWindow","content","toFixed","push","Event","addListener","forEach","iw","close","open","MarkerClustering","minClusterSize","maxZoom","disableClickZoom","gridSize","icons","html","size","Size","undefined","anchor","Point","e","tempWindow","coord","setTimeout","setMap","children","fileName","_jsxFileName","lineNumber","columnNumber","ref","_c","$RefreshReg$"],"sources":["D:/LDT/000 Project/LDT/Client/src/components/NaverMap.js"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\r\n\r\nexport default function NaverMap({\r\n  latitude = 37.5665, longitude = 126.9780,\r\n  markers = [],\r\n  style = { width: \"100%\", height: \"600px\" }\r\n}) {\r\n  const mapRef = useRef(null);\r\n  const [loading, setLoading] = useState(true);\r\n\r\n  useEffect(() => {\r\n    if (!window.naver || !window.naver.maps || !mapRef.current) return;\r\n\r\n    // 지도 생성\r\n    const map = new window.naver.maps.Map(mapRef.current, {\r\n      center: new window.naver.maps.LatLng(\r\n        markers[0]?.lat ?? latitude,\r\n        markers[0]?.lng ?? longitude\r\n      ),\r\n      zoom: 13,\r\n    });\r\n\r\n    setLoading(false);\r\n\r\n    // 기존 마커/클러스터러 클린업용 ref\r\n    let markerObjs = [];\r\n    let infoWindows = [];\r\n    let clusterer = null;\r\n\r\n    // 마커 생성\r\n    markerObjs = markers.map((marker, idx) => {\r\n      const markerObj = new window.naver.maps.Marker({\r\n        position: new window.naver.maps.LatLng(marker.lat, marker.lng),\r\n        icon: marker.icon,\r\n        title: marker.title || marker.name || \"\",\r\n      });\r\n\r\n      // InfoWindow 연결\r\n      if (marker.title || marker.desc) {\r\n        const infoWindow = new window.naver.maps.InfoWindow({\r\n          content: `\r\n            <div style=\"padding:7px;font-size:14px;\">\r\n              <b>${marker.title || marker.name || \"\"}</b><br/>\r\n              ${marker.desc || \"\"}`\r\n            + (marker.lat && marker.lng\r\n              ? `<br/>(${marker.lat.toFixed(5)}, ${marker.lng.toFixed(5)})`\r\n              : \"\") +\r\n            `</div>\r\n          `,\r\n        });\r\n        infoWindows.push(infoWindow);\r\n\r\n        window.naver.maps.Event.addListener(markerObj, \"click\", () => {\r\n          infoWindows.forEach(iw => iw.close());\r\n          infoWindow.open(map, markerObj);\r\n        });\r\n      }\r\n      return markerObj;\r\n    });\r\n\r\n    // 마커 클러스터러 생성\r\n    clusterer = new window.naver.maps.MarkerClustering({\r\n      minClusterSize: 2,\r\n      maxZoom: 17,\r\n      map: map,\r\n      markers: markerObjs,\r\n      disableClickZoom: false,\r\n      gridSize: 80,\r\n      icons: [\r\n        // 필요 시 클러스터 아이콘 커스텀\r\n        {\r\n          html: '<div style=\"background:#3887be;color:#fff;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:16px;\">{n}</div>',\r\n          size: window.naver.maps.Size ? new window.naver.maps.Size(36, 36) : undefined,\r\n          anchor: window.naver.maps.Point ? new window.naver.maps.Point(18, 18) : undefined,\r\n        }\r\n      ]\r\n    });\r\n\r\n    // 지도 클릭시 좌표 info\r\n    window.naver.maps.Event.addListener(map, \"click\", (e) => {\r\n      const tempWindow = new window.naver.maps.InfoWindow({\r\n        content: `<div style=\"padding:7px;font-size:13px;\">좌표: ${e.coord.lat().toFixed(6)}, ${e.coord.lng().toFixed(6)}</div>`\r\n      });\r\n      tempWindow.open(map, e.coord);\r\n      setTimeout(() => tempWindow.close(), 2000);\r\n    });\r\n\r\n    // cleanup\r\n    return () => {\r\n      markerObjs.forEach(marker => marker.setMap(null));\r\n      infoWindows.forEach(iw => iw.close());\r\n      if (clusterer) clusterer.setMap(null);\r\n    };\r\n  }, [markers, latitude, longitude]);\r\n\r\n  return (\r\n    <div style={{ position: \"relative\", ...style }}>\r\n      {loading && (\r\n        <div>\r\n          <h3>Map loading...</h3>\r\n        </div>\r\n      )}\r\n      <div ref={mapRef} style={{ width: \"100%\", height: \"100%\" }} />\r\n    </div>\r\n  );\r\n}\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}