{"ast":null,"code":"var _jsxFileName = \"D:\\\\LDT\\\\000 Project\\\\LDT\\\\Client\\\\src\\\\pages\\\\SensorMap.js\",\n  _s = $RefreshSig$();\nimport { useState, useEffect } from \"react\";\nimport NaverMap from \"../components/NaverMap\";\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nexport default function SensorMap() {\n  _s();\n  const [markers, setMarkers] = useState([]);\n  const [loading, setLoading] = useState(true);\n  const [errMsg, setErrMsg] = useState(\"\");\n  useEffect(() => {\n    setLoading(true);\n    setErrMsg(\"\");\n\n    // 로그인 토큰이 있으면 헤더에 자동 추가\n    const token = localStorage.getItem(\"token\");\n    fetch(\"http://localhost:4000/api/markers\", {\n      headers: token ? {\n        Authorization: `Bearer ${token}`\n      } : {}\n    }).then(async res => {\n      if (!res.ok) {\n        // 401, 500 등 오류 메시지 추출\n        const msg = await res.text();\n        throw new Error(msg || res.statusText);\n      }\n      return res.json();\n    }).then(data => {\n      console.log(\"받은 데이터:\", data);\n\n      // 배열 아니면 오류\n      if (!Array.isArray(data)) {\n        setErrMsg(data.msg || \"올바른 데이터가 아닙니다.\");\n        setMarkers([]);\n      } else {\n        setMarkers(data.map(row => ({\n          lat: row.x_pos,\n          lng: row.y_pos,\n          title: row.name,\n          desc: row.type\n          // icon: row.icon_url (필요시 추가)\n        })));\n      }\n    }).catch(err => {\n      setErrMsg(err.message);\n      setMarkers([]);\n    }).finally(() => setLoading(false));\n  }, []);\n  return /*#__PURE__*/_jsxDEV(\"section\", {\n    children: [/*#__PURE__*/_jsxDEV(\"header\", {\n      className: \"main\",\n      children: /*#__PURE__*/_jsxDEV(\"h1\", {\n        children: \"Sensor Map\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 56,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 55,\n      columnNumber: 7\n    }, this), loading ? /*#__PURE__*/_jsxDEV(\"div\", {\n      children: \"\\uC9C0\\uB3C4 \\uBC0F \\uB370\\uC774\\uD130 \\uBD88\\uB7EC\\uC624\\uB294 \\uC911...\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 59,\n      columnNumber: 9\n    }, this) : errMsg ? /*#__PURE__*/_jsxDEV(\"div\", {\n      style: {\n        color: \"red\"\n      },\n      children: [\"\\uC5D0\\uB7EC: \", errMsg]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 61,\n      columnNumber: 9\n    }, this) : /*#__PURE__*/_jsxDEV(NaverMap, {\n      markers: markers\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 63,\n      columnNumber: 9\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 54,\n    columnNumber: 5\n  }, this);\n}\n_s(SensorMap, \"NOdMWub/QKvMas4WGgeKNEcLAFY=\");\n_c = SensorMap;\nvar _c;\n$RefreshReg$(_c, \"SensorMap\");","map":{"version":3,"names":["useState","useEffect","NaverMap","jsxDEV","_jsxDEV","SensorMap","_s","markers","setMarkers","loading","setLoading","errMsg","setErrMsg","token","localStorage","getItem","fetch","headers","Authorization","then","res","ok","msg","text","Error","statusText","json","data","console","log","Array","isArray","map","row","lat","x_pos","lng","y_pos","title","name","desc","type","catch","err","message","finally","children","className","fileName","_jsxFileName","lineNumber","columnNumber","style","color","_c","$RefreshReg$"],"sources":["D:/LDT/000 Project/LDT/Client/src/pages/SensorMap.js"],"sourcesContent":["import { useState, useEffect } from \"react\";\r\nimport NaverMap from \"../components/NaverMap\";\r\n\r\nexport default function SensorMap() {\r\n  const [markers, setMarkers] = useState([]);\r\n  const [loading, setLoading] = useState(true);\r\n  const [errMsg, setErrMsg] = useState(\"\");\r\n\r\n  useEffect(() => {\r\n    setLoading(true);\r\n    setErrMsg(\"\");\r\n\r\n    // 로그인 토큰이 있으면 헤더에 자동 추가\r\n    const token = localStorage.getItem(\"token\");\r\n\r\n    fetch(\"http://localhost:4000/api/markers\", {\r\n      headers: token ? { Authorization: `Bearer ${token}` } : {},\r\n    })\r\n      .then(async (res) => {\r\n        if (!res.ok) {\r\n          // 401, 500 등 오류 메시지 추출\r\n          const msg = await res.text();\r\n          throw new Error(msg || res.statusText);\r\n        }\r\n        return res.json();\r\n      })\r\n      .then((data) => {\r\n        console.log(\"받은 데이터:\", data);\r\n\r\n        // 배열 아니면 오류\r\n        if (!Array.isArray(data)) {\r\n          setErrMsg(data.msg || \"올바른 데이터가 아닙니다.\");\r\n          setMarkers([]);\r\n        } else {\r\n          setMarkers(\r\n            data.map((row) => ({\r\n              lat: row.x_pos,\r\n              lng: row.y_pos,\r\n              title: row.name,\r\n              desc: row.type,\r\n              // icon: row.icon_url (필요시 추가)\r\n            }))\r\n          );\r\n        }\r\n      })\r\n      .catch((err) => {\r\n        setErrMsg(err.message);\r\n        setMarkers([]);\r\n      })\r\n      .finally(() => setLoading(false));\r\n  }, []);\r\n\r\n  return (\r\n    <section>\r\n      <header className=\"main\">\r\n        <h1>Sensor Map</h1>\r\n      </header>\r\n      {loading ? (\r\n        <div>지도 및 데이터 불러오는 중...</div>\r\n      ) : errMsg ? (\r\n        <div style={{ color: \"red\" }}>에러: {errMsg}</div>\r\n      ) : (\r\n        <NaverMap markers={markers} />\r\n      )}\r\n    </section>\r\n  );\r\n}\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}