{"ast":null,"code":"var _jsxFileName = \"D:\\\\LDT\\\\000 Project\\\\LDT\\\\Client\\\\src\\\\App.js\",\n  _s = $RefreshSig$();\nimport React, { useState } from 'react';\nimport Menu from './components/Menu';\nimport Login from './pages/Login';\nimport Register from './pages/Register';\nimport Admin from './pages/Admin'; // 센서 추가 등\nimport Sensors from './pages/Sensors';\nimport Modal from './components/Modal';\nimport { getToken, getRole } from './utils/auth';\nimport { jsxDEV as _jsxDEV, Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nfunction App() {\n  _s();\n  const [loggedIn, setLoggedIn] = useState(!!getToken());\n  const [loginOpen, setLoginOpen] = useState(!getToken());\n  const [registerOpen, setRegisterOpen] = useState(false);\n  const [sensorAddOpen, setSensorAddOpen] = useState(false);\n  const handleLogin = () => {\n    setLoggedIn(true);\n    setLoginOpen(false);\n  };\n  const handleLogout = () => {\n    setLoggedIn(false);\n    setLoginOpen(true);\n  };\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    children: [/*#__PURE__*/_jsxDEV(Menu, {\n      onLogout: handleLogout\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 21,\n      columnNumber: 7\n    }, this), !loggedIn && /*#__PURE__*/_jsxDEV(Modal, {\n      open: loginOpen,\n      onClose: () => setLoginOpen(false),\n      title: \"\\uB85C\\uADF8\\uC778\",\n      children: [/*#__PURE__*/_jsxDEV(Login, {\n        onLogin: handleLogin\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 26,\n        columnNumber: 11\n      }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n        style: {\n          marginTop: 24,\n          textAlign: 'center'\n        },\n        children: /*#__PURE__*/_jsxDEV(\"button\", {\n          className: \"button small\",\n          style: {\n            marginRight: 12\n          },\n          onClick: () => {\n            setLoginOpen(false);\n            setRegisterOpen(true);\n          },\n          children: \"\\uD68C\\uC6D0\\uAC00\\uC785\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 28,\n          columnNumber: 13\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 27,\n        columnNumber: 11\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 25,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Modal, {\n      open: registerOpen,\n      onClose: () => setRegisterOpen(false),\n      title: \"\\uD68C\\uC6D0\\uAC00\\uC785\",\n      children: /*#__PURE__*/_jsxDEV(Register, {\n        onSuccess: () => {\n          setRegisterOpen(false);\n          setLoginOpen(true);\n        },\n        onClose: () => setRegisterOpen(false)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 39,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 38,\n      columnNumber: 7\n    }, this), loggedIn && /*#__PURE__*/_jsxDEV(_Fragment, {\n      children: [window.location.pathname === '/sensors' && /*#__PURE__*/_jsxDEV(Sensors, {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 53,\n        columnNumber: 55\n      }, this), window.location.pathname === '/' && /*#__PURE__*/_jsxDEV(\"div\", {\n        children: \"\\uD648\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 54,\n        columnNumber: 48\n      }, this), window.location.pathname === '/admin' && getRole() === 'admin' && /*#__PURE__*/_jsxDEV(Admin, {\n        onAddSensor: () => setSensorAddOpen(true)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 56,\n        columnNumber: 13\n      }, this)]\n    }, void 0, true), !loggedIn && /*#__PURE__*/_jsxDEV(\"div\", {\n      style: {\n        textAlign: 'center',\n        marginTop: 60\n      },\n      children: /*#__PURE__*/_jsxDEV(\"button\", {\n        onClick: () => setLoginOpen(true),\n        style: {\n          fontSize: 18\n        },\n        children: \"\\uB85C\\uADF8\\uC778\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 62,\n        columnNumber: 11\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 61,\n      columnNumber: 9\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 20,\n    columnNumber: 5\n  }, this);\n}\n_s(App, \"Y6U00QHMKdd9s1oM04puU76P+Gg=\");\n_c = App;\nexport default App;\nvar _c;\n$RefreshReg$(_c, \"App\");","map":{"version":3,"names":["React","useState","Menu","Login","Register","Admin","Sensors","Modal","getToken","getRole","jsxDEV","_jsxDEV","Fragment","_Fragment","App","_s","loggedIn","setLoggedIn","loginOpen","setLoginOpen","registerOpen","setRegisterOpen","sensorAddOpen","setSensorAddOpen","handleLogin","handleLogout","children","onLogout","fileName","_jsxFileName","lineNumber","columnNumber","open","onClose","title","onLogin","style","marginTop","textAlign","className","marginRight","onClick","onSuccess","window","location","pathname","onAddSensor","fontSize","_c","$RefreshReg$"],"sources":["D:/LDT/000 Project/LDT/Client/src/App.js"],"sourcesContent":["import React, { useState } from 'react';\r\nimport Menu from './components/Menu';\r\nimport Login from './pages/Login';\r\nimport Register from './pages/Register';\r\nimport Admin from './pages/Admin';   // 센서 추가 등\r\nimport Sensors from './pages/Sensors';\r\nimport Modal from './components/Modal';\r\nimport { getToken, getRole } from './utils/auth';\r\n\r\nfunction App() {\r\n  const [loggedIn, setLoggedIn] = useState(!!getToken());\r\n  const [loginOpen, setLoginOpen] = useState(!getToken());\r\n  const [registerOpen, setRegisterOpen] = useState(false);\r\n  const [sensorAddOpen, setSensorAddOpen] = useState(false);\r\n\r\n  const handleLogin = () => { setLoggedIn(true); setLoginOpen(false); };\r\n  const handleLogout = () => { setLoggedIn(false); setLoginOpen(true); };\r\n\r\n  return (\r\n    <div>\r\n      <Menu onLogout={handleLogout} />\r\n\r\n      {/* 로그인 팝업 */}\r\n      {!loggedIn && (\r\n        <Modal open={loginOpen} onClose={() => setLoginOpen(false)} title=\"로그인\">\r\n          <Login onLogin={handleLogin} />\r\n          <div style={{ marginTop: 24, textAlign: 'center' }}>\r\n            <button\r\n              className=\"button small\"\r\n              style={{ marginRight: 12 }}\r\n              onClick={() => { setLoginOpen(false); setRegisterOpen(true); }}\r\n            >회원가입</button>\r\n          </div>\r\n        </Modal>\r\n      )}\r\n\r\n      {/* 회원가입 팝업 */}\r\n      <Modal open={registerOpen} onClose={() => setRegisterOpen(false)} title=\"회원가입\">\r\n        <Register\r\n          onSuccess={() => { setRegisterOpen(false); setLoginOpen(true); }}\r\n          onClose={() => setRegisterOpen(false)}\r\n        />\r\n      </Modal>\r\n\r\n      {/* 센서 추가 팝업(예: 관리자가 메뉴에서 호출할 경우) */}\r\n      {/* <Modal open={sensorAddOpen} onClose={() => setSensorAddOpen(false)} title=\"센서 추가\">\r\n        <Admin onSuccess={() => setSensorAddOpen(false)} />\r\n      </Modal> */}\r\n\r\n      {/* 실제 라우팅 영역 */}\r\n      {loggedIn && (\r\n        <>\r\n          {window.location.pathname === '/sensors' && <Sensors />}\r\n          {window.location.pathname === '/' && <div>홈</div>}\r\n          {window.location.pathname === '/admin' && getRole() === 'admin' &&\r\n            <Admin onAddSensor={() => setSensorAddOpen(true)} />}\r\n        </>\r\n      )}\r\n\r\n      {!loggedIn && (\r\n        <div style={{ textAlign: 'center', marginTop: 60 }}>\r\n          <button onClick={() => setLoginOpen(true)} style={{ fontSize: 18 }}>로그인</button>\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n}\r\nexport default App;\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}