{"ast":null,"code":"var _jsxFileName = \"D:\\\\LDT\\\\000 Project\\\\LDT\\\\Client\\\\src\\\\components\\\\KakaoMap.js\",\n  _s = $RefreshSig$();\nimport React, { useEffect, useRef } from \"react\";\n\n// 마커 데이터 예시 [{lat, lng, title, desc}]\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nexport default function KakaoMap({\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  useEffect(() => {\n    var _markers$0$lat, _markers$, _markers$0$lng, _markers$2;\n    if (!window.kakao || !window.kakao.maps || !mapRef.current) return;\n    const kakao = window.kakao;\n    // 지도 생성\n    const map = new kakao.maps.Map(mapRef.current, {\n      center: new kakao.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      level: 6\n    });\n\n    // ---- 마커 객체 만들기 ----\n    const markerObjs = markers.map(m => new kakao.maps.Marker({\n      position: new kakao.maps.LatLng(m.lat, m.lng),\n      clickable: true\n    }));\n\n    // ---- 클러스터러 객체 만들기 ----\n    const clusterer = new kakao.maps.MarkerClusterer({\n      map: map,\n      markers: markerObjs,\n      gridSize: 60,\n      averageCenter: true,\n      minLevel: 3\n      // disableClickZoom: false, // 필요 시 추가\n      // styles: [{ ... }],       // 필요 시 커스텀\n    });\n\n    // ---- InfoWindow (마우스 오버/아웃) ----\n    const infoWindows = markers.map((m, i) => new kakao.maps.InfoWindow({\n      content: `<div style=\"padding:7px;font-size:14px;\">\n          <b>${m.title || \"\"}</b><br/>${m.desc || \"\"}\n        </div>`\n    }));\n    markerObjs.forEach((markerObj, idx) => {\n      if (infoWindows[idx]) {\n        // 마우스 오버: 팝업 열기\n        kakao.maps.event.addListener(markerObj, \"mouseover\", () => {\n          infoWindows.forEach(iw => iw.close());\n          infoWindows[idx].open(map, markerObj);\n        });\n        // 마우스 아웃: 팝업 닫기\n        kakao.maps.event.addListener(markerObj, \"mouseout\", () => {\n          infoWindows[idx].close();\n        });\n      }\n    });\n\n    // ---- 지도 클릭시 좌표 팝업 ----\n    kakao.maps.event.addListener(map, \"click\", function (e) {\n      const latlng = e.latLng;\n      const tempWindow = new kakao.maps.InfoWindow({\n        content: `<div style=\"padding:7px;font-size:13px;\">  좌표: ${latlng.getLat().toFixed(6)}, ${latlng.getLng().toFixed(6)}</div>`,\n        position: latlng\n      });\n      tempWindow.open(map);\n      setTimeout(() => tempWindow.close(), 2000);\n    });\n\n    // ---- Clean up ----\n    return () => {\n      clusterer && clusterer.clear();\n      markerObjs.forEach(m => m.setMap(null));\n      infoWindows.forEach(iw => iw.close());\n    };\n  }, [markers, latitude, longitude]);\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    style: {\n      position: \"relative\",\n      ...style\n    },\n    children: /*#__PURE__*/_jsxDEV(\"div\", {\n      ref: mapRef,\n      style: {\n        width: \"100%\",\n        height: \"100%\"\n      }\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 88,\n      columnNumber: 7\n    }, this)\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 87,\n    columnNumber: 5\n  }, this);\n}\n_s(KakaoMap, \"9mn7MMe4fPaZ50ApsOpRWF2HbFg=\");\n_c = KakaoMap;\nvar _c;\n$RefreshReg$(_c, \"KakaoMap\");","map":{"version":3,"names":["React","useEffect","useRef","jsxDEV","_jsxDEV","KakaoMap","latitude","longitude","markers","style","width","height","_s","mapRef","_markers$0$lat","_markers$","_markers$0$lng","_markers$2","window","kakao","maps","current","map","Map","center","LatLng","lat","lng","level","markerObjs","m","Marker","position","clickable","clusterer","MarkerClusterer","gridSize","averageCenter","minLevel","infoWindows","i","InfoWindow","content","title","desc","forEach","markerObj","idx","event","addListener","iw","close","open","e","latlng","latLng","tempWindow","getLat","toFixed","getLng","setTimeout","clear","setMap","children","ref","fileName","_jsxFileName","lineNumber","columnNumber","_c","$RefreshReg$"],"sources":["D:/LDT/000 Project/LDT/Client/src/components/KakaoMap.js"],"sourcesContent":["import React, { useEffect, useRef } from \"react\";\r\n\r\n// 마커 데이터 예시 [{lat, lng, title, desc}]\r\nexport default function KakaoMap({\r\n  latitude = 37.5665,\r\n  longitude = 126.9780,\r\n  markers = [],\r\n  style = { width: \"100%\", height: \"600px\" }\r\n}) {\r\n  const mapRef = useRef(null);\r\n\r\n  useEffect(() => {\r\n    if (!window.kakao || !window.kakao.maps || !mapRef.current) return;\r\n\r\n    const kakao = window.kakao;\r\n    // 지도 생성\r\n    const map = new kakao.maps.Map(mapRef.current, {\r\n      center: new kakao.maps.LatLng(\r\n        markers[0]?.lat ?? latitude,\r\n        markers[0]?.lng ?? longitude\r\n      ),\r\n      level: 6\r\n    });\r\n\r\n    // ---- 마커 객체 만들기 ----\r\n    const markerObjs = markers.map((m) =>\r\n      new kakao.maps.Marker({\r\n        position: new kakao.maps.LatLng(m.lat, m.lng),\r\n        clickable: true,\r\n      })\r\n    );\r\n\r\n    // ---- 클러스터러 객체 만들기 ----\r\n    const clusterer = new kakao.maps.MarkerClusterer({\r\n      map: map,\r\n      markers: markerObjs,\r\n      gridSize: 60,\r\n      averageCenter: true,\r\n      minLevel: 3,\r\n      // disableClickZoom: false, // 필요 시 추가\r\n      // styles: [{ ... }],       // 필요 시 커스텀\r\n    });\r\n\r\n    // ---- InfoWindow (마우스 오버/아웃) ----\r\n    const infoWindows = markers.map((m, i) =>\r\n      new kakao.maps.InfoWindow({\r\n        content: `<div style=\"padding:7px;font-size:14px;\">\r\n          <b>${m.title || \"\"}</b><br/>${m.desc || \"\"}\r\n        </div>`\r\n      })\r\n    );\r\n\r\n    markerObjs.forEach((markerObj, idx) => {\r\n      if (infoWindows[idx]) {\r\n        // 마우스 오버: 팝업 열기\r\n        kakao.maps.event.addListener(markerObj, \"mouseover\", () => {\r\n          infoWindows.forEach(iw => iw.close());\r\n          infoWindows[idx].open(map, markerObj);\r\n        });\r\n        // 마우스 아웃: 팝업 닫기\r\n        kakao.maps.event.addListener(markerObj, \"mouseout\", () => {\r\n          infoWindows[idx].close();\r\n        });\r\n      }\r\n    });\r\n\r\n    // ---- 지도 클릭시 좌표 팝업 ----\r\n    kakao.maps.event.addListener(map, \"click\", function (e) {\r\n      const latlng = e.latLng;\r\n      const tempWindow = new kakao.maps.InfoWindow({\r\n        content: `<div style=\"padding:7px;font-size:13px;\">  좌표: ${latlng.getLat().toFixed(6)}, ${latlng.getLng().toFixed(6)}</div>`,\r\n        position: latlng\r\n      });\r\n      tempWindow.open(map);\r\n      setTimeout(() => tempWindow.close(), 2000);\r\n    });\r\n\r\n    // ---- Clean up ----\r\n    return () => {\r\n      clusterer && clusterer.clear();\r\n      markerObjs.forEach(m => m.setMap(null));\r\n      infoWindows.forEach(iw => iw.close());\r\n    };\r\n  }, [markers, latitude, longitude]);\r\n\r\n  return (\r\n    <div style={{ position: \"relative\", ...style }}>\r\n      <div ref={mapRef} style={{ width: \"100%\", height: \"100%\" }} />\r\n    </div>\r\n  );\r\n}"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}