{"ast":null,"code":"var _jsxFileName = \"D:\\\\LDT\\\\000 Project\\\\LDT\\\\Client\\\\src\\\\pages\\\\SensorList.js\",\n  _s = $RefreshSig$();\nimport React, { useEffect, useState } from \"react\";\nimport axios from \"axios\";\nimport mqtt from \"mqtt/dist/mqtt\"; // 브라우저용\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction SensorList({\n  token\n}) {\n  _s();\n  const [sensors, setSensors] = useState([]);\n  useEffect(() => {\n    axios.get(\"/api/sensor\", {\n      headers: {\n        Authorization: token\n      }\n    }).then(res => setSensors(res.data));\n    // MQTT 실시간 구독\n    const client = mqtt.connect(\"ws://localhost:9001\"); // MQTT 브로커 websocket 포트\n    client.on(\"connect\", () => client.subscribe(\"sensor/update\"));\n    client.on(\"message\", (topic, msg) => {\n      if (topic === \"sensor/update\") {\n        const data = JSON.parse(msg.toString());\n        setSensors(s => s.map(x => x.id === Number(data.id) ? {\n          ...x,\n          value: data.value\n        } : x));\n      }\n    });\n    return () => client.end();\n  }, [token]);\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n      children: \"\\uC13C\\uC11C\\uB9AC\\uC2A4\\uD2B8\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 25,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"table\", {\n      children: [/*#__PURE__*/_jsxDEV(\"thead\", {\n        children: /*#__PURE__*/_jsxDEV(\"tr\", {\n          children: [/*#__PURE__*/_jsxDEV(\"th\", {\n            children: \"ID\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 27,\n            columnNumber: 20\n          }, this), /*#__PURE__*/_jsxDEV(\"th\", {\n            children: \"\\uC774\\uB984\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 27,\n            columnNumber: 31\n          }, this), /*#__PURE__*/_jsxDEV(\"th\", {\n            children: \"\\uAC12\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 27,\n            columnNumber: 42\n          }, this), /*#__PURE__*/_jsxDEV(\"th\", {\n            children: \"\\uAC31\\uC2E0\\uC77C\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 27,\n            columnNumber: 52\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 27,\n          columnNumber: 16\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 27,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"tbody\", {\n        children: sensors.map(s => /*#__PURE__*/_jsxDEV(\"tr\", {\n          children: [/*#__PURE__*/_jsxDEV(\"td\", {\n            children: s.id\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 31,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(\"td\", {\n            children: s.name\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 32,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(\"td\", {\n            children: s.value\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 33,\n            columnNumber: 15\n          }, this), /*#__PURE__*/_jsxDEV(\"td\", {\n            children: s.updated_at\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 34,\n            columnNumber: 15\n          }, this)]\n        }, s.id, true, {\n          fileName: _jsxFileName,\n          lineNumber: 30,\n          columnNumber: 13\n        }, this))\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 28,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 26,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 24,\n    columnNumber: 5\n  }, this);\n}\n_s(SensorList, \"jX46rH897G+urM0ad4iJqHW7k0U=\");\n_c = SensorList;\nexport default SensorList;\nvar _c;\n$RefreshReg$(_c, \"SensorList\");","map":{"version":3,"names":["React","useEffect","useState","axios","mqtt","jsxDEV","_jsxDEV","SensorList","token","_s","sensors","setSensors","get","headers","Authorization","then","res","data","client","connect","on","subscribe","topic","msg","JSON","parse","toString","s","map","x","id","Number","value","end","children","fileName","_jsxFileName","lineNumber","columnNumber","name","updated_at","_c","$RefreshReg$"],"sources":["D:/LDT/000 Project/LDT/Client/src/pages/SensorList.js"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\nimport mqtt from \"mqtt/dist/mqtt\"; // 브라우저용\r\n\r\nfunction SensorList({ token }) {\r\n  const [sensors, setSensors] = useState([]);\r\n  useEffect(() => {\r\n    axios.get(\"/api/sensor\", { headers: { Authorization: token } })\r\n      .then(res => setSensors(res.data));\r\n    // MQTT 실시간 구독\r\n    const client = mqtt.connect(\"ws://localhost:9001\"); // MQTT 브로커 websocket 포트\r\n    client.on(\"connect\", () => client.subscribe(\"sensor/update\"));\r\n    client.on(\"message\", (topic, msg) => {\r\n      if (topic === \"sensor/update\") {\r\n        const data = JSON.parse(msg.toString());\r\n        setSensors(s =>\r\n          s.map(x => x.id === Number(data.id) ? { ...x, value: data.value } : x)\r\n        );\r\n      }\r\n    });\r\n    return () => client.end();\r\n  }, [token]);\r\n  return (\r\n    <div>\r\n      <h2>센서리스트</h2>\r\n      <table>\r\n        <thead><tr><th>ID</th><th>이름</th><th>값</th><th>갱신일</th></tr></thead>\r\n        <tbody>\r\n          {sensors.map(s => (\r\n            <tr key={s.id}>\r\n              <td>{s.id}</td>\r\n              <td>{s.name}</td>\r\n              <td>{s.value}</td>\r\n              <td>{s.updated_at}</td>\r\n            </tr>\r\n          ))}\r\n        </tbody>\r\n      </table>\r\n    </div>\r\n  );\r\n}\r\nexport default SensorList;\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}