{"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 _window$naver, _window$naver$maps, _markers$0$lat, _markers$, _markers$0$lng, _markers$2;\n    if (!((_window$naver = window.naver) !== null && _window$naver !== void 0 && (_window$naver$maps = _window$naver.maps) !== null && _window$naver$maps !== void 0 && _window$naver$maps.MarkerClustering)) {\n      // 모듈이 로드되지 않은 상태\n      console.error(\"MarkerClustering 모듈이 로드되지 않았습니다.\");\n      return;\n    }\n    if (!window.naver || !window.naver.maps || !window.naver.maps.MarkerClustering || !mapRef.current) return;\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    const markerObjs = [];\n    const infoWindows = [];\n    markers.forEach((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 || \"\"\n      });\n      markerObjs.push(markerObj);\n      if (marker.title || marker.desc) {\n        const infoWindow = new window.naver.maps.InfoWindow({\n          content: `<div style=\"padding:7px;font-size:14px;\">\n            <b>${marker.title || \"\"}</b><br/>\n            ${marker.desc || \"\"}\n          </div>`\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    });\n\n    // ⭐️ 클러스터러 생성\n    const 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        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    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: 99,\n        columnNumber: 11\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 98,\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: 102,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 96,\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","_window$naver","_window$naver$maps","_markers$0$lat","_markers$","_markers$0$lng","_markers$2","window","naver","maps","MarkerClustering","console","error","current","map","Map","center","LatLng","lat","lng","zoom","markerObjs","infoWindows","forEach","marker","idx","markerObj","Marker","position","icon","title","push","desc","infoWindow","InfoWindow","content","Event","addListener","iw","close","open","clusterer","minClusterSize","maxZoom","disableClickZoom","gridSize","icons","html","size","Size","undefined","anchor","Point","e","tempWindow","coord","toFixed","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\r\n    if (!window.naver?.maps?.MarkerClustering) {\r\n      // 모듈이 로드되지 않은 상태\r\n      console.error(\"MarkerClustering 모듈이 로드되지 않았습니다.\");\r\n      return;\r\n    }\r\n    if (\r\n      !window.naver ||\r\n      !window.naver.maps ||\r\n      !window.naver.maps.MarkerClustering ||\r\n      !mapRef.current\r\n    ) return;\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    const markerObjs = [];\r\n    const infoWindows = [];\r\n\r\n    markers.forEach((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 || \"\",\r\n      });\r\n      markerObjs.push(markerObj);\r\n\r\n      if (marker.title || marker.desc) {\r\n        const infoWindow = new window.naver.maps.InfoWindow({\r\n          content: `<div style=\"padding:7px;font-size:14px;\">\r\n            <b>${marker.title || \"\"}</b><br/>\r\n            ${marker.desc || \"\"}\r\n          </div>`\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    });\r\n\r\n    // ⭐️ 클러스터러 생성\r\n    const 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          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    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":[]}