{"ast":null,"code":"var _jsxFileName = \"D:\\\\LDT\\\\000 Project\\\\LDT\\\\Client\\\\src\\\\App.js\",\n  _s = $RefreshSig$();\nimport { BrowserRouter, Routes, Route } from \"react-router-dom\";\nimport { AuthProvider, useAuth } from \"./contexts/AuthContext\";\nimport ProtectedRoute from \"./components/ProtectedRoute\";\nimport Header from \"./components/Header\"; // Massively 스타일 헤더\nimport Footer from \"./components/Footer\"; // Massively 스타일 푸터\nimport Login from \"./pages/Login\";\nimport Register from \"./pages/Register\";\nimport SensorList from \"./pages/SensorList\";\nimport SensorAdd from \"./pages/SensorAdd\";\nimport Admin from \"./pages/Admin\";\n\n// 실제 메인 페이지(예시)\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nfunction MainPage() {\n  return /*#__PURE__*/_jsxDEV(\"section\", {\n    className: \"main special\",\n    children: [/*#__PURE__*/_jsxDEV(\"header\", {\n      className: \"major\",\n      children: /*#__PURE__*/_jsxDEV(\"h2\", {\n        children: \"Massively React Demo\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 16,\n        columnNumber: 33\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 16,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n      children: \"Massively \\uB808\\uC774\\uC544\\uC6C3 \\uAE30\\uBC18 React SPA \\uC608\\uC81C\\uC785\\uB2C8\\uB2E4.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 17,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 15,\n    columnNumber: 5\n  }, this);\n}\n\n// AppRoutes: 라우팅/레이아웃\n_c = MainPage;\nfunction AppRoutes() {\n  _s();\n  const {\n    user\n  } = useAuth();\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    id: \"wrapper\",\n    children: [/*#__PURE__*/_jsxDEV(Header, {\n      user: user\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 27,\n      columnNumber: 7\n    }, this), \"           \", /*#__PURE__*/_jsxDEV(\"main\", {\n      id: \"main\",\n      children: /*#__PURE__*/_jsxDEV(Routes, {\n        children: [/*#__PURE__*/_jsxDEV(Route, {\n          path: \"/login\",\n          element: /*#__PURE__*/_jsxDEV(Login, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 30,\n            columnNumber: 41\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 30,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Route, {\n          path: \"/register\",\n          element: /*#__PURE__*/_jsxDEV(Register, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 31,\n            columnNumber: 44\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 31,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Route, {\n          path: \"/sensor\",\n          element: /*#__PURE__*/_jsxDEV(ProtectedRoute, {\n            user: user,\n            children: /*#__PURE__*/_jsxDEV(SensorList, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 34,\n              columnNumber: 15\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 33,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 32,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Route, {\n          path: \"/sensor/add\",\n          element: /*#__PURE__*/_jsxDEV(ProtectedRoute, {\n            user: user,\n            roles: [\"admin\"],\n            children: /*#__PURE__*/_jsxDEV(SensorAdd, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 39,\n              columnNumber: 15\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 38,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 37,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Route, {\n          path: \"/admin\",\n          element: /*#__PURE__*/_jsxDEV(ProtectedRoute, {\n            user: user,\n            roles: [\"admin\"],\n            children: /*#__PURE__*/_jsxDEV(Admin, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 44,\n              columnNumber: 15\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 43,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 42,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Route, {\n          path: \"/\",\n          element: /*#__PURE__*/_jsxDEV(MainPage, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 47,\n            columnNumber: 36\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 47,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 29,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 28,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Footer, {}, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 50,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 26,\n    columnNumber: 5\n  }, this);\n}\n\n// App: Context, 라우터 감싸기\n_s(AppRoutes, \"9ep4vdl3mBfipxjmc+tQCDhw6Ik=\", false, function () {\n  return [useAuth];\n});\n_c2 = AppRoutes;\nexport default function App() {\n  return /*#__PURE__*/_jsxDEV(AuthProvider, {\n    children: /*#__PURE__*/_jsxDEV(BrowserRouter, {\n      children: /*#__PURE__*/_jsxDEV(AppRoutes, {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 60,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 59,\n      columnNumber: 7\n    }, this)\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 58,\n    columnNumber: 5\n  }, this);\n}\n_c3 = App;\nvar _c, _c2, _c3;\n$RefreshReg$(_c, \"MainPage\");\n$RefreshReg$(_c2, \"AppRoutes\");\n$RefreshReg$(_c3, \"App\");","map":{"version":3,"names":["BrowserRouter","Routes","Route","AuthProvider","useAuth","ProtectedRoute","Header","Footer","Login","Register","SensorList","SensorAdd","Admin","jsxDEV","_jsxDEV","MainPage","className","children","fileName","_jsxFileName","lineNumber","columnNumber","_c","AppRoutes","_s","user","id","path","element","roles","_c2","App","_c3","$RefreshReg$"],"sources":["D:/LDT/000 Project/LDT/Client/src/App.js"],"sourcesContent":["import { BrowserRouter, Routes, Route } from \"react-router-dom\";\r\nimport { AuthProvider, useAuth } from \"./contexts/AuthContext\";\r\nimport ProtectedRoute from \"./components/ProtectedRoute\";\r\nimport Header from \"./components/Header\";       // Massively 스타일 헤더\r\nimport Footer from \"./components/Footer\";       // Massively 스타일 푸터\r\nimport Login from \"./pages/Login\";\r\nimport Register from \"./pages/Register\";\r\nimport SensorList from \"./pages/SensorList\";\r\nimport SensorAdd from \"./pages/SensorAdd\";\r\nimport Admin from \"./pages/Admin\";\r\n\r\n// 실제 메인 페이지(예시)\r\nfunction MainPage() {\r\n  return (\r\n    <section className=\"main special\">\r\n      <header className=\"major\"><h2>Massively React Demo</h2></header>\r\n      <p>Massively 레이아웃 기반 React SPA 예제입니다.</p>\r\n    </section>\r\n  );\r\n}\r\n\r\n// AppRoutes: 라우팅/레이아웃\r\nfunction AppRoutes() {\r\n  const { user } = useAuth();\r\n  return (\r\n    <div id=\"wrapper\">\r\n      <Header user={user} />           {/* props로 user 전달 */}\r\n      <main id=\"main\">\r\n        <Routes>\r\n          <Route path=\"/login\" element={<Login />} />\r\n          <Route path=\"/register\" element={<Register />} />\r\n          <Route path=\"/sensor\" element={\r\n            <ProtectedRoute user={user}>\r\n              <SensorList />\r\n            </ProtectedRoute>\r\n          } />\r\n          <Route path=\"/sensor/add\" element={\r\n            <ProtectedRoute user={user} roles={[\"admin\"]}>\r\n              <SensorAdd />\r\n            </ProtectedRoute>\r\n          } />\r\n          <Route path=\"/admin\" element={\r\n            <ProtectedRoute user={user} roles={[\"admin\"]}>\r\n              <Admin />\r\n            </ProtectedRoute>\r\n          } />\r\n          <Route path=\"/\" element={<MainPage />} />\r\n        </Routes>\r\n      </main>\r\n      <Footer />\r\n    </div>\r\n  );\r\n}\r\n\r\n// App: Context, 라우터 감싸기\r\nexport default function App() {\r\n  return (\r\n    <AuthProvider>\r\n      <BrowserRouter>\r\n        <AppRoutes />\r\n      </BrowserRouter>\r\n    </AuthProvider>\r\n  );\r\n}\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}