Files
meeting-room/frontend/node_modules/.cache/default-development/9.pack

1256 lines
73 KiB
Plaintext
Raw Normal View History

wpc<00>$<10>webpack/lib/cache/PackFileCacheStrategy<67>PackContentItems <10><01>SourceMapDevToolPlugin|main.545ac401374d1f6d8d49.hot-update.js<10><10><02>assets<74>assetsInfo<10><03>main.545ac401374d1f6d8d49.hot-update.js<6A>main.545ac401374d1f6d8d49.hot-update.js.map<12>webpack/lib/util/registerExternalSerializer<65>webpack-sources/ConcatSource<10>webpack/lib/util/registerExternalSerializer<65>webpack-sources/RawSource<1F><>"use strict";
globalThis["webpackHotUpdatemeeting_room_frontend"]("main",{
/***/ "./src/App.js"
/*!********************!*\
!*** ./src/App.js ***!
\********************/
(module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/dist/index.js");
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router/dist/index.js");
/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! axios */ "./node_modules/axios/lib/axios.js");
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-dev-runtime */ "./node_modules/react/jsx-dev-runtime.js");
/* provided dependency */ var __react_refresh_utils__ = __webpack_require__(/*! ./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js */ "./node_modules/@pmmmwh/react-refresh-webpack-plugin/lib/runtime/RefreshUtils.js");
__webpack_require__.$Refresh$.runtime = __webpack_require__(/*! ./node_modules/react-refresh/runtime.js */ "./node_modules/react-refresh/runtime.js");
var _jsxFileName = "/home/node/.openclaw/workspace/flying-hero/projects/meeting-room/frontend/src/App.js",
_s = __webpack_require__.$Refresh$.signature(),
_s2 = __webpack_require__.$Refresh$.signature(),
_s3 = __webpack_require__.$Refresh$.signature();
const API_BASE = 'http://localhost:8000/api/v1';
axios__WEBPACK_IMPORTED_MODULE_3__["default"].interceptors.request.use(config => {
const token = localStorage.getItem('token');
if (token) config.headers.Authorization = `Bearer ${token}`;
return config;
});
// ============ 登录页面 ============
function LoginPage() {
_s();
const [username, setUsername] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('test');
const [password, setPassword] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('test123');
const [mode, setMode] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('solo');
const [agents, setAgents] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);
const [selectedAgents, setSelectedAgents] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);
const navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useNavigate)();
// 扫描本机龙虾
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
if (username) {
scanAgents();
}
}, [username]);
const scanAgents = async () => {
try {
// 传递 username 参数,获取绑定的龙虾信息
const res = await axios__WEBPACK_IMPORTED_MODULE_3__["default"].get(`${API_BASE}/user/scan-local-agents/?username=${username}`);
setAgents(res.data.agents || []);
} catch (error) {
console.error('扫描龙虾失败:', error);
}
};
const handleLogin = async e => {
e.preventDefault();
try {
const payload = {
username,
password,
mode
};
if (mode !== 'solo' && selectedAgents.length > 0) {
payload.agent_ids = selectedAgents;
}
const res = await axios__WEBPACK_IMPORTED_MODULE_3__["default"].post(`${API_BASE}/auth/login/`, payload);
localStorage.setItem('token', res.data.token);
localStorage.setItem('user', JSON.stringify(res.data.user));
localStorage.setItem('sessions', JSON.stringify(res.data.sessions));
localStorage.setItem('mode', res.data.mode);
navigate('/meetings');
} catch (error) {
var _error$response, _error$response$data, _error$response2, _error$response2$data;
alert('登录失败:' + (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$data = _error$response.data) === null || _error$response$data === void 0 ? void 0 : _error$response$data.detail) || ((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.error) || error.message));
}
};
const toggleAgent = agentId => {
setSelectedAgents(prev => prev.includes(agentId) ? prev.filter(id => id !== agentId) : [...prev, agentId]);
};
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.center,
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.card,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("h1", {
style: styles.title,
children: "\uD83C\uDFDB\uFE0F \u9F99\u867E\u8BAE\u4E8B\u5385"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 74,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("form", {
onSubmit: handleLogin,
style: {
...styles.form,
flexDirection: 'column'
},
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("input", {
type: "text",
placeholder: "\u7528\u6237\u540D",
value: username,
onChange: e => setUsername(e.target.value),
style: styles.input,
required: true
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 76,
columnNumber: 11
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("input", {
type: "password",
placeholder: "\u5BC6\u7801",
value: password,
onChange: e => setPassword(e.target.value),
style: styles.input,
required: true
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 77,
columnNumber: 11
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: {
margin: '15px 0'
},
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("label", {
style: {
display: 'block',
marginBottom: '10px',
fontWeight: '600'
},
children: "\uD83C\uDFAF \u51FA\u6218\u6A21\u5F0F\uFF1A"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 81,
columnNumber: 13
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("label", {
style: {
display: 'block',
marginBottom: '12px',
cursor: 'pointer',
padding: '10px',
background: mode === 'solo' ? '#e7f3ff' : 'white',
borderRadius: '8px',
border: '1px solid #2196f3'
},
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("input", {
type: "radio",
name: "mode",
value: "solo",
checked: mode === 'solo',
onChange: e => setMode(e.target.value)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 83,
columnNumber: 15
}, this), ' ', "\uD83E\uDD77 ", /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("strong", {
children: "\u5355\u67AA\u5339\u9A6C"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 90,
columnNumber: 23
}, this), "\uFF08\u4EBA\u7C7B\u5355\u72EC\u51FA\u6218\uFF0C\u4E0D\u5E26\u9F99\u867E\uFF09"]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 82,
columnNumber: 13
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("label", {
style: {
display: 'block',
marginBottom: '12px',
cursor: 'pointer',
padding: '10px',
background: mode === 'team' ? '#e7f3ff' : 'white',
borderRadius: '8px',
border: '1px solid #2196f3'
},
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("input", {
type: "radio",
name: "mode",
value: "team",
checked: mode === 'team',
onChange: e => setMode(e.target.value)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 93,
columnNumber: 15
}, this), ' ', "\uD83D\uDEE1\uFE0F ", /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("strong", {
children: "\u7EC4\u961F\u56E2\u6218"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 100,
columnNumber: 24
}, this), "\uFF08\u4EBA\u7C7B + N \u53EA\u9F99\u867E\u4E00\u8D77\u51FA\u6218\uFF09"]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 92,
columnNumber: 13
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("label", {
style: {
display: 'block',
marginBottom: '12px',
cursor: 'pointer',
padding: '10px',
background: mode === 'agent_only' ? '#e7f3ff' : 'white',
borderRadius: '8px',
border: '1px solid #2196f3'
},
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("input", {
type: "radio",
name: "mode",
value: "agent_only",
checked: mode === 'agent_only',
onChange: e => setMode(e.target.value)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 103,
columnNumber: 15
}, this), ' ', "\u2694\uFE0F ", /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("strong", {
children: "\u72EC\u5F53\u4E00\u9762"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 110,
columnNumber: 23
}, this), "\uFF08\u9F99\u867E\u5355\u72EC\u51FA\u5F81\uFF0C\u4EBA\u7C7B\u4E0D\u4E0A\u573A\uFF09"]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 102,
columnNumber: 13
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 80,
columnNumber: 11
}, this), mode !== 'solo' && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: {
margin: '15px 0',
padding: '15px',
background: '#f9f9f9',
borderRadius: '8px'
},
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("label", {
style: {
display: 'block',
marginBottom: '10px',
fontWeight: '600'
},
children: "\uD83E\uDD90 \u9009\u62E9\u9F99\u867E\u961F\u53CB\uFF1A"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 117,
columnNumber: 15
}, this), agents.length === 0 ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("p", {
style: {
color: '#999',
fontSize: '14px'
},
children: "\u672A\u627E\u5230\u53EF\u7528\u9F99\u867E"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 119,
columnNumber: 17
}, this) : agents.map(a => /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("label", {
style: {
display: 'flex',
alignItems: 'center',
marginBottom: '8px',
cursor: 'pointer'
},
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("input", {
type: "checkbox",
checked: selectedAgents.includes(a.agent_id),
onChange: () => toggleAgent(a.agent_id),
style: {
marginRight: '10px'
}
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 123,
columnNumber: 21
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("span", {
style: {
fontSize: '16px',
marginRight: '8px'
},
children: a.agent_emoji || '🤖'
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 129,
columnNumber: 21
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("span", {
children: a.agent_id
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 130,
columnNumber: 21
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("span", {
style: {
color: '#999',
fontSize: '12px',
marginLeft: '8px'
},
children: ["(", a.instance_name, ")"]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 131,
columnNumber: 21
}, this)]
}, a.agent_id, true, {
fileName: _jsxFileName,
lineNumber: 122,
columnNumber: 19
}, this)), selectedAgents.length > 0 && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("p", {
style: {
marginTop: '10px',
color: '#2196f3',
fontWeight: '600'
},
children: ["\u5DF2\u9009 ", selectedAgents.length, " \u53EA\u9F99\u867E\u961F\u53CB \uD83E\uDDB8"]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 136,
columnNumber: 17
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 116,
columnNumber: 13
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("button", {
type: "submit",
style: styles.btn,
children: "\uD83D\uDE80 \u767B\u5F55\u51FA\u5F81"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 143,
columnNumber: 11
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 75,
columnNumber: 9
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 73,
columnNumber: 7
}, this)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 72,
columnNumber: 5
}, this);
}
// ============ 会议列表 ============
_s(LoginPage, "fZ8UTwO2MCkNd6X4nAqytpuamXM=", false, function () {
return [react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useNavigate];
});
_c = LoginPage;
function MeetingList() {
_s2();
const [meetings, setMeetings] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);
const [topic, setTopic] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('');
const [autoAddAgents, setAutoAddAgents] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);
const navigate = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useNavigate)();
const token = localStorage.getItem('token');
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
if (!token) {
navigate('/login');
return;
}
fetchMeetings();
}, []);
const fetchMeetings = async () => {
try {
const res = await axios__WEBPACK_IMPORTED_MODULE_3__["default"].get(`${API_BASE}/meetings/`);
setMeetings(res.data);
} catch (error) {
console.error(error);
}
};
const createMeeting = async e => {
e.preventDefault();
try {
// 获取当前登录的龙虾
const sessions = JSON.parse(localStorage.getItem('sessions') || '[]');
const agentIds = sessions.filter(s => s.session_type === 'agent').map(s => s.agent_id);
const res = await axios__WEBPACK_IMPORTED_MODULE_3__["default"].post(`${API_BASE}/meetings/`, {
topic,
auto_add_virtual_agents: !autoAddAgents ? false : agentIds.length === 0,
// 如果没有龙虾才添加虚拟的
host_agent_id: agentIds.length > 0 ? agentIds[0] : null
});
navigate(`/meeting/${res.data.id}`);
} catch (error) {
var _error$response3, _error$response3$data;
alert('创建失败:' + (((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : (_error$response3$data = _error$response3.data) === null || _error$response3$data === void 0 ? void 0 : _error$response3$data.detail) || error.message));
}
};
const logout = () => {
localStorage.removeItem('token');
navigate('/login');
};
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.container,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.header,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("h1", {
children: "\uD83D\uDCCB \u6211\u7684\u4F1A\u8BAE\u5BA4"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 193,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("button", {
onClick: logout,
style: styles.smallBtn,
children: "\u9000\u51FA"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 194,
columnNumber: 9
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 192,
columnNumber: 7
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.card,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("h2", {
children: "\u521B\u5EFA\u4F1A\u8BAE"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 197,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("form", {
onSubmit: createMeeting,
style: styles.form,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("input", {
type: "text",
placeholder: "\u4F1A\u8BAE\u4E3B\u9898",
value: topic,
onChange: e => setTopic(e.target.value),
style: styles.input,
required: true
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 199,
columnNumber: 11
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("label", {
style: {
display: 'flex',
alignItems: 'center',
gap: '5px',
whiteSpace: 'nowrap'
},
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("input", {
type: "checkbox",
checked: autoAddAgents,
onChange: e => setAutoAddAgents(e.target.checked)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 201,
columnNumber: 13
}, this), "\u6DFB\u52A0\u865A\u62DF\u5750\u5E2D"]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 200,
columnNumber: 11
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("button", {
type: "submit",
style: styles.btn,
children: "\u521B\u5EFA"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 208,
columnNumber: 11
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 198,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("p", {
style: {
fontSize: '12px',
color: '#666',
marginTop: '10px'
},
children: "\uD83D\uDCA1 \u52FE\u9009\"\u6DFB\u52A0\u865A\u62DF\u5750\u5E2D\"\u4F1A\u81EA\u52A8\u521B\u5EFA 2 \u4E2A\u865A\u62DF\u9F99\u867E\u53C2\u4F1A\u8005\uFF0C\u65B9\u4FBF\u6D4B\u8BD5 @ \u529F\u80FD"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 210,
columnNumber: 9
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 196,
columnNumber: 7
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.list,
children: meetings.map(m => /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.item,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("h3", {
children: m.topic
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 218,
columnNumber: 15
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("p", {
children: ["\u72B6\u6001\uFF1A", m.status, " | \u9080\u8BF7\u7801\uFF1A", m.invite_code]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 219,
columnNumber: 15
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 217,
columnNumber: 13
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("button", {
onClick: () => navigate(`/meeting/${m.id}`),
style: styles.smallBtn,
children: "\u8FDB\u5165"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 221,
columnNumber: 13
}, this)]
}, m.id, true, {
fileName: _jsxFileName,
lineNumber: 216,
columnNumber: 11
}, this))
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 214,
columnNumber: 7
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 191,
columnNumber: 5
}, this);
}
// ============ 会议室 ============
_s2(MeetingList, "uNteAZxXgR2pMaYhX5ze9khr1nw=", false, function () {
return [react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useNavigate];
});
_c2 = MeetingList;
function MeetingRoom() {
_s3();
const {
id
} = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useParams)();
const [messages, setMessages] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);
const [content, setContent] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)('');
const [participants, setParticipants] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);
const [meeting, setMeeting] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
const [hoveredSeat, setHoveredSeat] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
const token = localStorage.getItem('token');
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
if (!token) return;
fetchMeeting();
fetchParticipants();
fetchMessages();
const interval = setInterval(fetchMessages, 1000);
return () => clearInterval(interval);
}, [id]);
const fetchMeeting = async () => {
try {
const res = await axios__WEBPACK_IMPORTED_MODULE_3__["default"].get(`${API_BASE}/meetings/${id}/`);
setMeeting(res.data);
} catch (error) {
console.error(error);
}
};
const fetchParticipants = async () => {
try {
const res = await axios__WEBPACK_IMPORTED_MODULE_3__["default"].get(`${API_BASE}/meetings/${id}/participants/`);
setParticipants(res.data);
} catch (error) {
console.error(error);
}
};
const fetchMessages = async () => {
try {
const res = await axios__WEBPACK_IMPORTED_MODULE_3__["default"].get(`${API_BASE}/meetings/${id}/messages/?last_id=0`);
setMessages(res.data.messages || []);
} catch (error) {
console.error(error);
}
};
const sendMessage = async e => {
e.preventDefault();
if (!content.trim()) return;
try {
await axios__WEBPACK_IMPORTED_MODULE_3__["default"].post(`${API_BASE}/meetings/${id}/send_message/`, {
content
});
setContent('');
fetchMessages();
} catch (error) {
var _error$response4, _error$response4$data;
alert('发送失败:' + (((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : (_error$response4$data = _error$response4.data) === null || _error$response4$data === void 0 ? void 0 : _error$response4$data.detail) || error.message));
}
};
const mentionAgent = async (targetAgentId, agentName) => {
const target = targetAgentId || prompt('@哪个 Agent输入 agent_id:');
if (!target || !content.trim()) return;
const name = agentName || target;
try {
await axios__WEBPACK_IMPORTED_MODULE_3__["default"].post(`${API_BASE}/meetings/${id}/mention_agent/`, {
target_agent_id: target,
content,
sender_name: localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user')).username : 'User'
});
setContent('');
fetchMessages();
alert(`✅ 已 @${name}`);
} catch (error) {
var _error$response5, _error$response5$data;
alert('发送失败:' + (((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : (_error$response5$data = _error$response5.data) === null || _error$response5$data === void 0 ? void 0 : _error$response5$data.error) || error.message));
}
};
const startMeeting = async () => {
try {
await axios__WEBPACK_IMPORTED_MODULE_3__["default"].post(`${API_BASE}/meetings/${id}/start/`);
fetchMeeting();
alert('✅ 会议已开始');
} catch (error) {
var _error$response6, _error$response6$data;
alert('开始失败:' + (((_error$response6 = error.response) === null || _error$response6 === void 0 ? void 0 : (_error$response6$data = _error$response6.data) === null || _error$response6$data === void 0 ? void 0 : _error$response6$data.error) || error.message));
}
};
const endMeeting = async () => {
if (!confirm('确定结束会议?')) return;
try {
await axios__WEBPACK_IMPORTED_MODULE_3__["default"].post(`${API_BASE}/meetings/${id}/end/`);
fetchMeeting();
alert('✅ 会议已结束');
} catch (error) {
var _error$response7, _error$response7$data;
alert('结束失败:' + (((_error$response7 = error.response) === null || _error$response7 === void 0 ? void 0 : (_error$response7$data = _error$response7.data) === null || _error$response7$data === void 0 ? void 0 : _error$response7$data.error) || error.message));
}
};
const generateMinutes = async () => {
try {
const res = await axios__WEBPACK_IMPORTED_MODULE_3__["default"].get(`${API_BASE}/meetings/${id}/minutes/?output=markdown`);
const blob = new Blob([res.data.markdown], {
type: 'text/markdown'
});
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = `meeting-${id.slice(0, 8)}.md`;
a.click();
URL.revokeObjectURL(url);
alert('✅ 纪要已导出');
} catch (error) {
alert('导出失败:' + error.message);
}
};
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.container,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.header,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_router_dom__WEBPACK_IMPORTED_MODULE_1__.Link, {
to: "/meetings",
style: styles.link,
children: "\u2190 \u8FD4\u56DE"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 338,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("h1", {
children: (meeting === null || meeting === void 0 ? void 0 : meeting.topic) || '会议室'
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 339,
columnNumber: 9
}, this), meeting && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("span", {
style: styles.badge,
children: meeting.status
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 340,
columnNumber: 21
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 337,
columnNumber: 7
}, this), meeting && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.infoCard,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("p", {
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("strong", {
children: "ID:"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 345,
columnNumber: 14
}, this), " ", meeting.id]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 345,
columnNumber: 11
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("p", {
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("strong", {
children: "\u9080\u8BF7\u7801:"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 346,
columnNumber: 14
}, this), " ", meeting.invite_code]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 346,
columnNumber: 11
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.btnGroup,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("button", {
onClick: startMeeting,
style: styles.btnGreen,
children: "\u25B6\uFE0F \u5F00\u59CB"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 348,
columnNumber: 13
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("button", {
onClick: endMeeting,
style: styles.btnRed,
children: "\u23F9\uFE0F \u7ED3\u675F"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 349,
columnNumber: 13
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("button", {
onClick: generateMinutes,
style: styles.btnBlue,
children: "\uD83D\uDCCB \u7EAA\u8981"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 350,
columnNumber: 13
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 347,
columnNumber: 11
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 344,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.card,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("h2", {
children: ["\uD83E\uDE91 \u5EA7\u4F4D\u56FE ", /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("span", {
style: styles.badge,
children: participants.length
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 357,
columnNumber: 20
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 357,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.seats,
children: participants.map(p => /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: {
...styles.seat,
...(hoveredSeat === p.id ? styles.seatHover : {})
},
onClick: () => {
if (p.agent_id) {
var _document$querySelect;
setContent(`@${p.nickname} `);
(_document$querySelect = document.querySelector('input[placeholder="输入消息..."]')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.focus();
}
},
onMouseEnter: () => setHoveredSeat(p.id),
onMouseLeave: () => setHoveredSeat(null),
title: p.agent_id ? '点击 @ 此人' : '',
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.seatEmoji,
children: p.agent_emoji || '👤'
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 373,
columnNumber: 15
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.seatName,
children: p.nickname
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 374,
columnNumber: 15
}, this), p.is_host && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.hostBadge,
children: "\uD83D\uDC51"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 375,
columnNumber: 29
}, this)]
}, p.id, true, {
fileName: _jsxFileName,
lineNumber: 360,
columnNumber: 13
}, this))
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 358,
columnNumber: 9
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 356,
columnNumber: 7
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.card,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("h2", {
children: ["\uD83D\uDCAC \u804A\u5929 ", /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("span", {
style: styles.badge,
children: messages.length
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 383,
columnNumber: 19
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 383,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.messages,
children: messages.map(msg => /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.msg,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.msgHeader,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("strong", {
children: [msg.sender_emoji, " ", msg.sender_name]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 388,
columnNumber: 17
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("span", {
style: styles.msgTime,
children: new Date(msg.created_at).toLocaleTimeString()
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 389,
columnNumber: 17
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 387,
columnNumber: 15
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("p", {
style: styles.msgContent,
children: msg.content
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 391,
columnNumber: 15
}, this), msg.in_reply_to && /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("div", {
style: styles.replyTag,
children: ["\u21A9\uFE0F \u56DE\u590D #", msg.in_reply_to]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 392,
columnNumber: 35
}, this)]
}, msg.id, true, {
fileName: _jsxFileName,
lineNumber: 386,
columnNumber: 13
}, this))
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 384,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("form", {
onSubmit: sendMessage,
style: styles.form,
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("input", {
type: "text",
placeholder: "\u8F93\u5165\u6D88\u606F...",
value: content,
onChange: e => setContent(e.target.value),
style: styles.input
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 397,
columnNumber: 11
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("button", {
type: "submit",
style: styles.btn,
children: "\u53D1\u9001"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 398,
columnNumber: 11
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)("button", {
type: "button",
onClick: mentionAgent,
style: styles.btnPink,
children: "\uD83D\uDCCD @Agent"
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 399,
columnNumber: 11
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 396,
columnNumber: 9
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 382,
columnNumber: 7
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 336,
columnNumber: 5
}, this);
}
// ============ App ============
_s3(MeetingRoom, "fh+UC+M8I83D9S4VTUsmF3cRwwg=", false, function () {
return [react_router_dom__WEBPACK_IMPORTED_MODULE_2__.useParams];
});
_c3 = MeetingRoom;
function App() {
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_router_dom__WEBPACK_IMPORTED_MODULE_1__.BrowserRouter, {
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_router_dom__WEBPACK_IMPORTED_MODULE_2__.Routes, {
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_router_dom__WEBPACK_IMPORTED_MODULE_2__.Route, {
path: "/login",
element: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(LoginPage, {}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 411,
columnNumber: 39
}, this)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 411,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_router_dom__WEBPACK_IMPORTED_MODULE_2__.Route, {
path: "/meetings",
element: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(MeetingList, {}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 412,
columnNumber: 42
}, this)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 412,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_router_dom__WEBPACK_IMPORTED_MODULE_2__.Route, {
path: "/meeting/:id",
element: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(MeetingRoom, {}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 413,
columnNumber: 45
}, this)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 413,
columnNumber: 9
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(react_router_dom__WEBPACK_IMPORTED_MODULE_2__.Route, {
path: "/",
element: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(LoginPage, {}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 414,
columnNumber: 34
}, this)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 414,
columnNumber: 9
}, this)]
}, void 0, true, {
fileName: _jsxFileName,
lineNumber: 410,
columnNumber: 7
}, this)
}, void 0, false, {
fileName: _jsxFileName,
lineNumber: 409,
columnNumber: 5
}, this);
}
// ============ 样式 ============
_c4 = App;
const styles = {
center: {
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
minHeight: '100vh',
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)'
},
container: {
maxWidth: '900px',
margin: '0 auto',
padding: '20px',
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'
},
header: {
display: 'flex',
alignItems: 'center',
gap: '15px',
marginBottom: '20px'
},
card: {
background: 'white',
borderRadius: '12px',
padding: '20px',
marginBottom: '20px',
boxShadow: '0 4px 6px rgba(0,0,0,0.1)'
},
infoCard: {
background: '#e7f3ff',
border: '1px solid #2196f3',
borderRadius: '12px',
padding: '15px',
marginBottom: '20px'
},
title: {
margin: '0 0 20px',
color: '#1a365d',
textAlign: 'center'
},
form: {
display: 'flex',
gap: '10px'
},
input: {
flex: 1,
padding: '12px',
border: '2px solid #e2e8f0',
borderRadius: '8px',
fontSize: '14px'
},
btn: {
padding: '12px 20px',
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
color: 'white',
border: 'none',
borderRadius: '8px',
cursor: 'pointer',
fontWeight: '600'
},
btnGreen: {
padding: '8px 16px',
background: 'linear-gradient(135deg, #11998e 0%, #38ef7d 100%)',
color: 'white',
border: 'none',
borderRadius: '6px',
cursor: 'pointer',
marginRight: '8px'
},
btnRed: {
padding: '8px 16px',
background: 'linear-gradient(135deg, #eb3349 0%, #f45c43 100%)',
color: 'white',
border: 'none',
borderRadius: '6px',
cursor: 'pointer',
marginRight: '8px'
},
btnBlue: {
padding: '8px 16px',
background: 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)',
color: 'white',
border: 'none',
borderRadius: '6px',
cursor: 'pointer'
},
btnPink: {
padding: '8px 16px',
background: 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)',
color: 'white',
border: 'none',
borderRadius: '6px',
cursor: 'pointer'
},
smallBtn: {
padding: '8px 16px',
background: '#edf2f7',
border: 'none',
borderRadius: '6px',
cursor: 'pointer'
},
list: {
display: 'flex',
flexDirection: 'column',
gap: '15px'
},
item: {
background: 'white',
borderRadius: '12px',
padding: '20px',
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
boxShadow: '0 4px 6px rgba(0,0,0,0.1)'
},
link: {
color: '#4299e1',
textDecoration: 'none',
fontSize: '16px'
},
badge: {
background: '#667eea',
color: 'white',
padding: '4px 10px',
borderRadius: '20px',
fontSize: '12px',
fontWeight: '600'
},
btnGroup: {
display: 'flex',
marginTop: '10px'
},
seats: {
display: 'flex',
flexWrap: 'wrap',
gap: '15px',
justifyContent: 'center'
},
seat: {
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
color: 'white',
padding: '15px',
borderRadius: '50%',
width: '90px',
height: '90px',
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
justifyContent: 'center',
textAlign: 'center',
cursor: 'pointer',
transition: 'transform 0.2s',
':hover': {
transform: 'scale(1.1)'
}
},
seatHover: {
transform: 'scale(1.05)'
},
seatEmoji: {
fontSize: '28px',
marginBottom: '5px'
},
seatName: {
fontSize: '12px',
fontWeight: '600'
},
hostBadge: {
fontSize: '10px',
opacity: '0.8'
},
messages: {
maxHeight: '400px',
overflowY: 'auto',
marginBottom: '15px'
},
msg: {
padding: '12px',
background: '#f7fafc',
borderRadius: '8px',
marginBottom: '10px'
},
msgHeader: {
display: 'flex',
justifyContent: 'space-between',
marginBottom: '5px'
},
msgContent: {
margin: '5px 0',
color: '#4a5568'
},
msgTime: {
fontSize: '12px',
color: '#a0aec0'
},
replyTag: {
fontSize: '11px',
color: '#a0aec0',
marginTop: '5px'
}
};
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (App);
var _c, _c2, _c3, _c4;
__webpack_require__.$Refresh$.register(_c, "LoginPage");
__webpack_require__.$Refresh$.register(_c2, "MeetingList");
__webpack_require__.$Refresh$.register(_c3, "MeetingRoom");
__webpack_require__.$Refresh$.register(_c4, "App");
const $ReactRefreshModuleId$ = __webpack_require__.$Refresh$.moduleId;
const $ReactRefreshCurrentExports$ = __react_refresh_utils__.getModuleExports(
$ReactRefreshModuleId$
);
function $ReactRefreshModuleRuntime$(exports) {
if (true) {
let errorOverlay;
if (true) {
errorOverlay = false;
}
let testMode;
if (typeof __react_refresh_test__ !== 'undefined') {
testMode = __react_refresh_test__;
}
return __react_refresh_utils__.executeRuntime(
exports,
$ReactRefreshModuleId$,
module.hot,
errorOverlay,
testMode
);
}
}
if (typeof Promise !== 'undefined' && $ReactRefreshCurrentExports$ instanceof Promise) {
$ReactRefreshCurrentExports$.then($ReactRefreshModuleRuntime$);
} else {
$ReactRefreshModuleRuntime$($ReactRefreshCurrentExports$);
}
/***/ }
},
/******/ function(__webpack_require__) { // webpackRuntimeModules
/******/ /* webpack/runtime/getFullHash */
/******/ (() => {
/******/ __webpack_require__.h = () => ("02c949050b7e9ad0a6fa")
/******/ })();
/******/
/******/ }
); A
//# sourceMappingURL=main.545ac401374d1f6d8d49.hot-update.js.map <1F>f{"version":3,"file":"main.545ac401374d1f6d8d49.hot-update.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AAAA;AAEA;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AAEA;AACA;AAKA;AAEA;AACA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AA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