whistle.mockbubu 2.2.5 → 2.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/public/js/app.js CHANGED
@@ -61,16 +61,18 @@ __webpack_require__.r(__webpack_exports__);
61
61
  /* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_9__);
62
62
  /* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/esnext.iterator.some.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.some.js");
63
63
  /* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_10__);
64
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! vue */ "./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js");
64
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! vue */ "./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js");
65
65
  /* harmony import */ var _utils_clipboard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/clipboard */ "./src/utils/clipboard.js");
66
66
  /* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../service */ "./src/service/index.js");
67
67
  /* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! dayjs */ "./node_modules/.pnpm/dayjs@1.11.2/node_modules/dayjs/dayjs.min.js");
68
68
  /* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(dayjs__WEBPACK_IMPORTED_MODULE_13__);
69
69
  /* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../util */ "./src/util.js");
70
- /* harmony import */ var _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/cache-manager */ "./src/utils/cache-manager.js");
71
- /* harmony import */ var _content_RequestList_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./content/RequestList.vue */ "./src/components/content/RequestList.vue");
72
- /* harmony import */ var _header_ActionPanel_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./header/ActionPanel.vue */ "./src/components/header/ActionPanel.vue");
73
- /* harmony import */ var _content_RequestDetail_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./content/RequestDetail.vue */ "./src/components/content/RequestDetail.vue");
70
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/constants */ "./src/utils/constants.js");
71
+ /* harmony import */ var _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/cache-manager */ "./src/utils/cache-manager.js");
72
+ /* harmony import */ var _content_RequestList_vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./content/RequestList.vue */ "./src/components/content/RequestList.vue");
73
+ /* harmony import */ var _header_ActionPanel_vue__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./header/ActionPanel.vue */ "./src/components/header/ActionPanel.vue");
74
+ /* harmony import */ var _content_RequestDetail_vue__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./content/RequestDetail.vue */ "./src/components/content/RequestDetail.vue");
75
+
74
76
 
75
77
 
76
78
 
@@ -97,10 +99,10 @@ const __default__ = {
97
99
  };
98
100
  /* harmony default export */ __webpack_exports__["default"] = (/*#__PURE__*/Object.assign(__default__, {
99
101
  setup(__props) {
100
- const requestDetailRef = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)(null);
101
- const requestListRef = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)(null);
102
- const actionPanelRef = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)(null);
103
- const searchParam = (0,vue__WEBPACK_IMPORTED_MODULE_19__.reactive)({
102
+ const requestDetailRef = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)(null);
103
+ const requestListRef = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)(null);
104
+ const actionPanelRef = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)(null);
105
+ const searchParam = (0,vue__WEBPACK_IMPORTED_MODULE_20__.reactive)({
104
106
  name: '',
105
107
  rule: '',
106
108
  range: 'all',
@@ -110,14 +112,14 @@ const __default__ = {
110
112
 
111
113
  // ✅ 新架构:分离两个列表
112
114
  // savedList: 已保存文件列表(固定在顶部,不受2000条限制)
113
- const savedList = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)([]);
115
+ const savedList = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)([]);
114
116
  // cachedList: 未保存数据列表(轮询追加,有2000条限制)
115
- const cachedList = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)([]);
117
+ const cachedList = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)([]);
116
118
  // requestList: 合并后的展示列表 [...savedList, ...cachedList]
117
- const requestList = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)([]);
119
+ const requestList = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)([]);
118
120
 
119
121
  // 筛选后的列表(用于前端展示)
120
- const filteredList = (0,vue__WEBPACK_IMPORTED_MODULE_19__.computed)(() => {
122
+ const filteredList = (0,vue__WEBPACK_IMPORTED_MODULE_20__.computed)(() => {
121
123
  let list = requestList.value;
122
124
 
123
125
  // 1. 按搜索文本筛选(模糊匹配 URL)
@@ -150,22 +152,22 @@ const __default__ = {
150
152
  }
151
153
  return list;
152
154
  });
153
- const activeRules = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)([{
155
+ const activeRules = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)([{
154
156
  name: 'All',
155
157
  value: ''
156
158
  }]); // whistle 激活的 mockbubu 规则列表
157
- const currentRow = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)(null);
158
- const selectedRows = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)([]); // 批量选中的行
159
+ const currentRow = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)(null);
160
+ const selectedRows = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)([]); // 批量选中的行
159
161
 
160
162
  // 备注编辑弹窗状态
161
- const remarkDialogVisible = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)(false);
162
- const remarkDraft = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)('');
163
- const remarkSaving = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)(false);
164
- const remarkEditingName = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)('');
163
+ const remarkDialogVisible = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)(false);
164
+ const remarkDraft = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)('');
165
+ const remarkSaving = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)(false);
166
+ const remarkEditingName = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)('');
165
167
  let remarkEditingRow = null;
166
168
 
167
169
  // 插件启用状态(由 ActionPanel emit 更新)
168
- const isPluginEnabled = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)(true);
170
+ const isPluginEnabled = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)(true);
169
171
  const handlePluginEnabledChange = enabled => {
170
172
  isPluginEnabled.value = enabled;
171
173
  if (!enabled) {
@@ -182,8 +184,8 @@ const __default__ = {
182
184
 
183
185
  // 悬浮模式状态
184
186
  const FLOATING_WIDTH_THRESHOLD = 800; // 宽度阈值(px):低于此值自动切换为悬浮模式
185
- const isFloatingMode = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)(false);
186
- const drawerVisible = (0,vue__WEBPACK_IMPORTED_MODULE_19__.ref)(false);
187
+ const isFloatingMode = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)(false);
188
+ const drawerVisible = (0,vue__WEBPACK_IMPORTED_MODULE_20__.ref)(false);
187
189
  const toggleFloatingMode = () => {
188
190
  isFloatingMode.value = !isFloatingMode.value;
189
191
  drawerVisible.value = false;
@@ -207,7 +209,6 @@ const __default__ = {
207
209
  let parentResizeHandler = null;
208
210
  const initResizeObserver = () => {
209
211
  const apply = width => {
210
- console.log('[MockContainer] 浏览器视口宽度:', width, '悬浮模式:', width < FLOATING_WIDTH_THRESHOLD);
211
212
  isFloatingMode.value = width < FLOATING_WIDTH_THRESHOLD;
212
213
  };
213
214
  apply(getBrowserViewportWidth());
@@ -370,7 +371,7 @@ const __default__ = {
370
371
  savedFilesLoaded = true;
371
372
 
372
373
  // 选中第一行
373
- (0,vue__WEBPACK_IMPORTED_MODULE_19__.nextTick)(() => {
374
+ (0,vue__WEBPACK_IMPORTED_MODULE_20__.nextTick)(() => {
374
375
  changeCurrentRow();
375
376
  });
376
377
  } else {
@@ -444,7 +445,7 @@ const __default__ = {
444
445
  cachedList.value.push(...newCachedItems);
445
446
 
446
447
  // 加入 cacheManager(供后续操作使用,如保存、编辑)
447
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].addBatch(filteredData);
448
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].addBatch(filteredData);
448
449
 
449
450
  // 只追加新数据到 requestList 末尾,避免重新赋值导致视口跳动
450
451
  requestList.value.push(...newCachedItems);
@@ -481,18 +482,18 @@ const __default__ = {
481
482
  currentRow.value = row;
482
483
 
483
484
  // 使用 nextTick 确保 DOM 更新后再设置高亮
484
- (0,vue__WEBPACK_IMPORTED_MODULE_19__.nextTick)(() => {
485
+ (0,vue__WEBPACK_IMPORTED_MODULE_20__.nextTick)(() => {
485
486
  if (requestListRef.value?.tableRef) {
486
487
  // 先清除所有高亮,再设置新的高亮,避免多个高亮同时存在
487
488
  requestListRef.value.tableRef.setCurrentRow(null);
488
- (0,vue__WEBPACK_IMPORTED_MODULE_19__.nextTick)(() => {
489
+ (0,vue__WEBPACK_IMPORTED_MODULE_20__.nextTick)(() => {
489
490
  requestListRef.value.tableRef.setCurrentRow(row);
490
491
  });
491
492
  }
492
493
  });
493
494
  };
494
495
  const changeCurrentRow = () => {
495
- (0,vue__WEBPACK_IMPORTED_MODULE_19__.nextTick)(() => {
496
+ (0,vue__WEBPACK_IMPORTED_MODULE_20__.nextTick)(() => {
496
497
  let newCurrentRow = filteredList.value[0];
497
498
  if (currentRow.value) {
498
499
  newCurrentRow = filteredList.value.find(item => currentRow.value.name === item.name);
@@ -503,10 +504,10 @@ const __default__ = {
503
504
  // 同一行(rowKey 相同)时只同步表格高亮,不重置 currentRow
504
505
  // 避免 visibilitychange 刷新列表后触发右侧编辑区重新加载
505
506
  if (newCurrentRow && currentRow.value && newCurrentRow.rowKey === currentRow.value.rowKey) {
506
- (0,vue__WEBPACK_IMPORTED_MODULE_19__.nextTick)(() => {
507
+ (0,vue__WEBPACK_IMPORTED_MODULE_20__.nextTick)(() => {
507
508
  if (requestListRef.value?.tableRef) {
508
509
  requestListRef.value.tableRef.setCurrentRow(null);
509
- (0,vue__WEBPACK_IMPORTED_MODULE_19__.nextTick)(() => requestListRef.value.tableRef.setCurrentRow(newCurrentRow));
510
+ (0,vue__WEBPACK_IMPORTED_MODULE_20__.nextTick)(() => requestListRef.value.tableRef.setCurrentRow(newCurrentRow));
510
511
  }
511
512
  });
512
513
  return;
@@ -630,7 +631,7 @@ const __default__ = {
630
631
  savedList.value.push(row);
631
632
 
632
633
  // 从 cacheManager 移除
633
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].remove(url);
634
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].remove(url);
634
635
  } else {
635
636
  console.warn('[MockContainer] 未在 cachedList 中找到 url:', url);
636
637
  }
@@ -678,7 +679,7 @@ const __default__ = {
678
679
  }
679
680
 
680
681
  // 从缓存中删除(已保存)
681
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].remove(row.url);
682
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].remove(row.url);
682
683
  // 删除 session 字段,标记为已保存
683
684
  delete row.session;
684
685
 
@@ -760,7 +761,7 @@ const __default__ = {
760
761
  rowKey: `file-${savedFile.id}`
761
762
  });
762
763
  }
763
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].remove(row.url);
764
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].remove(row.url);
764
765
  delete row.session;
765
766
  const cacheIndex = cachedList.value.findIndex(item => item.url === row.url);
766
767
  if (cacheIndex !== -1) {
@@ -871,7 +872,7 @@ const __default__ = {
871
872
  }
872
873
 
873
874
  // 从缓存中删除(已保存)
874
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].remove(row.url);
875
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].remove(row.url);
875
876
  // 删除 session 字段,标记为已保存
876
877
  delete row.session;
877
878
 
@@ -954,7 +955,7 @@ const __default__ = {
954
955
  cachedList.value.splice(cachedIndex, 1);
955
956
  }
956
957
  // 从 cacheManager 删除
957
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].remove(row.url);
958
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].remove(row.url);
958
959
  // 从 requestList 删除(用 URL 匹配)
959
960
  const requestIndex = requestList.value.findIndex(item => item.url === row.url);
960
961
  if (requestIndex !== -1) {
@@ -992,7 +993,7 @@ const __default__ = {
992
993
  }
993
994
 
994
995
  // 1. 切换 CacheManager 组(清空缓存)
995
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].switchGroup(newGroupId);
996
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].switchGroup(newGroupId);
996
997
 
997
998
  // 2. 清空前端列表
998
999
  savedList.value = [];
@@ -1008,7 +1009,7 @@ const __default__ = {
1008
1009
  try {
1009
1010
  const groupsRes = await (0,_service__WEBPACK_IMPORTED_MODULE_12__.getGroups)();
1010
1011
  if (groupsRes.code === 200 && groupsRes.data.currentGroupId) {
1011
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].setCurrentGroupId(groupsRes.data.currentGroupId);
1012
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].setCurrentGroupId(groupsRes.data.currentGroupId);
1012
1013
  }
1013
1014
  } catch (err) {
1014
1015
  console.error('[MockContainer] 获取当前组ID失败:', err);
@@ -1094,7 +1095,7 @@ const __default__ = {
1094
1095
  // 通过 id 字段判断是否已保存
1095
1096
 
1096
1097
  // 从缓存中删除
1097
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].remove(row.url);
1098
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].remove(row.url);
1098
1099
 
1099
1100
  // 从 cachedList 移到 savedList
1100
1101
  const cacheIndex = cachedList.value.findIndex(item => item.url === row.url);
@@ -1212,7 +1213,7 @@ const __default__ = {
1212
1213
  }
1213
1214
 
1214
1215
  // 从 cacheManager 删除
1215
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].remove(row.url);
1216
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].remove(row.url);
1216
1217
  totalDeleted++;
1217
1218
  });
1218
1219
  }
@@ -1316,7 +1317,7 @@ const __default__ = {
1316
1317
  // 通过 id 字段判断是否已保存
1317
1318
 
1318
1319
  // 从缓存中删除
1319
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].remove(row.url);
1320
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].remove(row.url);
1320
1321
 
1321
1322
  // 从 cachedList 移到 savedList
1322
1323
  const cacheIndex = cachedList.value.findIndex(item => item.url === row.url);
@@ -1336,7 +1337,7 @@ const __default__ = {
1336
1337
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_4___default().error('批量保存失败: ' + (err.message || '未知错误'));
1337
1338
  }
1338
1339
  };
1339
- (0,vue__WEBPACK_IMPORTED_MODULE_19__.watch)(currentRow, val => {
1340
+ (0,vue__WEBPACK_IMPORTED_MODULE_20__.watch)(currentRow, val => {
1340
1341
  if (val && val.id) {
1341
1342
  // 已保存文件:按需加载完整数据(含 query/payload/headers)
1342
1343
  getCurrentRowData(val);
@@ -1346,12 +1347,12 @@ const __default__ = {
1346
1347
  val.query = extractQueryFromSession(val.session);
1347
1348
  }
1348
1349
  });
1349
- (0,vue__WEBPACK_IMPORTED_MODULE_19__.onMounted)(async () => {
1350
+ (0,vue__WEBPACK_IMPORTED_MODULE_20__.onMounted)(async () => {
1350
1351
  // 0. 初始化当前组ID(从后端获取)
1351
1352
  try {
1352
1353
  const groupsRes = await (0,_service__WEBPACK_IMPORTED_MODULE_12__.getGroups)();
1353
1354
  if (groupsRes.code === 200 && groupsRes.data.currentGroupId) {
1354
- _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"].setCurrentGroupId(groupsRes.data.currentGroupId);
1355
+ _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"].setCurrentGroupId(groupsRes.data.currentGroupId);
1355
1356
  }
1356
1357
  } catch (err) {
1357
1358
  console.error('[MockContainer] 获取当前组ID失败:', err);
@@ -1373,7 +1374,7 @@ const __default__ = {
1373
1374
  // 5. 监听面板实际可见宽度(frameElement 在父页面中的渲染尺寸)
1374
1375
  initResizeObserver();
1375
1376
  });
1376
- (0,vue__WEBPACK_IMPORTED_MODULE_19__.onBeforeUnmount)(() => {
1377
+ (0,vue__WEBPACK_IMPORTED_MODULE_20__.onBeforeUnmount)(() => {
1377
1378
  document.removeEventListener('visibilitychange', visibleChange);
1378
1379
  if (intervalId) {
1379
1380
  clearInterval(intervalId);
@@ -1441,10 +1442,11 @@ const __default__ = {
1441
1442
  handleBatchUpdateMock,
1442
1443
  handleBatchDeleteSelected,
1443
1444
  handleBatchSave,
1444
- cacheManager: _utils_cache_manager__WEBPACK_IMPORTED_MODULE_15__["default"],
1445
- RequestList: _content_RequestList_vue__WEBPACK_IMPORTED_MODULE_16__["default"],
1446
- ActionPanel: _header_ActionPanel_vue__WEBPACK_IMPORTED_MODULE_17__["default"],
1447
- RequestDetail: _content_RequestDetail_vue__WEBPACK_IMPORTED_MODULE_18__["default"]
1445
+ TOOLTIP_DELAY: _utils_constants__WEBPACK_IMPORTED_MODULE_15__.TOOLTIP_DELAY,
1446
+ cacheManager: _utils_cache_manager__WEBPACK_IMPORTED_MODULE_16__["default"],
1447
+ RequestList: _content_RequestList_vue__WEBPACK_IMPORTED_MODULE_17__["default"],
1448
+ ActionPanel: _header_ActionPanel_vue__WEBPACK_IMPORTED_MODULE_18__["default"],
1449
+ RequestDetail: _content_RequestDetail_vue__WEBPACK_IMPORTED_MODULE_19__["default"]
1448
1450
  };
1449
1451
  }
1450
1452
  }));
@@ -1756,11 +1758,17 @@ const __default__ = {
1756
1758
  __webpack_require__.r(__webpack_exports__);
1757
1759
  /* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.constructor.js");
1758
1760
  /* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);
1759
- /* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.map.js");
1760
- /* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_1__);
1761
- /* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.some.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.some.js");
1762
- /* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_2__);
1763
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vue */ "./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js");
1761
+ /* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.filter.js");
1762
+ /* harmony import */ var core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_filter_js__WEBPACK_IMPORTED_MODULE_1__);
1763
+ /* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.for-each.js");
1764
+ /* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2__);
1765
+ /* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.map.js");
1766
+ /* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_3__);
1767
+ /* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/esnext.iterator.some.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.some.js");
1768
+ /* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_4__);
1769
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue */ "./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js");
1770
+
1771
+
1764
1772
 
1765
1773
 
1766
1774
 
@@ -1770,17 +1778,14 @@ const __default__ = {
1770
1778
  };
1771
1779
  /* harmony default export */ __webpack_exports__["default"] = (/*#__PURE__*/Object.assign(__default__, {
1772
1780
  props: {
1773
- /** 当前规则的条件列表 */
1774
1781
  conditions: {
1775
1782
  type: Array,
1776
1783
  default: () => []
1777
1784
  },
1778
- /** 捕获到的 query 参数(来自 file.json session) */
1779
1785
  capturedQuery: {
1780
1786
  type: Object,
1781
1787
  default: () => ({})
1782
1788
  },
1783
- /** 捕获到的 payload 参数(来自 file.json session) */
1784
1789
  capturedPayload: {
1785
1790
  type: Object,
1786
1791
  default: () => ({})
@@ -1791,48 +1796,186 @@ const __default__ = {
1791
1796
  emit
1792
1797
  }) {
1793
1798
  const props = __props;
1799
+ const OPERATORS = [{
1800
+ value: 'eq',
1801
+ symbol: '=',
1802
+ text: '等于',
1803
+ label: '= 等于'
1804
+ }, {
1805
+ value: 'neq',
1806
+ symbol: '≠',
1807
+ text: '不等于',
1808
+ label: '≠ 不等于'
1809
+ }, {
1810
+ value: 'contains',
1811
+ symbol: '⊃',
1812
+ text: '包含',
1813
+ label: '⊃ 包含'
1814
+ }, {
1815
+ value: 'regex',
1816
+ symbol: '.*',
1817
+ text: '正则',
1818
+ label: '.* 正则'
1819
+ }, {
1820
+ value: 'exists',
1821
+ symbol: '∃',
1822
+ text: '存在',
1823
+ label: '∃ 存在'
1824
+ }, {
1825
+ value: 'not_exists',
1826
+ symbol: '∄',
1827
+ text: '不存在',
1828
+ label: '∄ 不存在'
1829
+ }];
1794
1830
 
1795
- // 本地副本,编辑时使用
1796
- const localConditions = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)([]);
1797
- const showCapturedParams = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);
1831
+ /** exists / not_exists 不需要 value 输入 */
1832
+ const VALUELESS_OPS = new Set(['exists', 'not_exists']);
1833
+ const isValueless = op => VALUELESS_OPS.has(op);
1798
1834
 
1799
- // 初始化 & 同步 props → local
1800
- (0,vue__WEBPACK_IMPORTED_MODULE_3__.watch)(() => props.conditions, newVal => {
1835
+ /** 条件是否不完整(会被后端跳过) */
1836
+ const isIncomplete = cond => {
1837
+ if (!cond.key) return true;
1838
+ return !isValueless(cond.operator) && !cond.value;
1839
+ };
1840
+ const localConditions = (0,vue__WEBPACK_IMPORTED_MODULE_5__.ref)([]);
1841
+ const showCapturedParams = (0,vue__WEBPACK_IMPORTED_MODULE_5__.ref)(false);
1842
+ (0,vue__WEBPACK_IMPORTED_MODULE_5__.watch)(() => props.conditions, newVal => {
1801
1843
  localConditions.value = (newVal || []).map(c => ({
1802
- ...c
1844
+ ...c,
1845
+ operator: c.operator || 'eq',
1846
+ _regexError: validateRegex(c.operator, c.value)
1803
1847
  }));
1804
1848
  }, {
1805
1849
  immediate: true,
1806
1850
  deep: true
1807
1851
  });
1808
1852
 
1809
- // capturedQuery/capturedPayload 对象转换为数组
1810
- const queryParamList = (0,vue__WEBPACK_IMPORTED_MODULE_3__.computed)(() => Object.entries(props.capturedQuery || {}).map(([key, value]) => ({
1853
+ /** 校验正则语法,返回错误描述或 null */
1854
+ function validateRegex(operator, value) {
1855
+ if (operator !== 'regex' || !value) return null;
1856
+ try {
1857
+ RegExp(value);
1858
+ return null;
1859
+ } catch (e) {
1860
+ return `正则语法错误:${e.message}`;
1861
+ }
1862
+ }
1863
+
1864
+ // ---- 冲突检测 ----
1865
+
1866
+ /**
1867
+ * 规则内冲突类型:
1868
+ * 1. 同 source+key 出现 exists + not_exists → 永远矛盾
1869
+ * 2. 同 source+key 出现多个 eq 但值不同 → 不可能同时满足
1870
+ * 3. 同 source+key 出现 eq X + neq X(相同值) → 矛盾
1871
+ * 4. 同 source+key 重复 key(其他情况) → 冗余警告
1872
+ */
1873
+ const conflictIndexes = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => new Set(conflictData.value.map(c => c.index)));
1874
+ const conflictMessages = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {
1875
+ const map = {};
1876
+ conflictData.value.forEach(c => {
1877
+ map[c.index] = c.msg;
1878
+ });
1879
+ return map;
1880
+ });
1881
+ const conflictData = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {
1882
+ const results = [];
1883
+ const grouped = {};
1884
+ localConditions.value.forEach((cond, index) => {
1885
+ if (!cond.key) return;
1886
+ const gk = `${cond.source}::${cond.key}`;
1887
+ (grouped[gk] = grouped[gk] || []).push({
1888
+ index,
1889
+ cond
1890
+ });
1891
+ });
1892
+ Object.values(grouped).forEach(group => {
1893
+ if (group.length < 2) return;
1894
+ const ops = group.map(g => g.cond.operator || 'eq');
1895
+ const hasExists = ops.includes('exists');
1896
+ const hasNotExists = ops.includes('not_exists');
1897
+ if (hasExists && hasNotExists) {
1898
+ group.forEach(({
1899
+ index
1900
+ }) => results.push({
1901
+ index,
1902
+ msg: '矛盾:同一参数同时要求"存在"和"不存在",此规则永远无法命中'
1903
+ }));
1904
+ return;
1905
+ }
1906
+ const eqVals = group.filter(g => (g.cond.operator || 'eq') === 'eq').map(g => String(g.cond.value || ''));
1907
+ const uniqueEqVals = new Set(eqVals);
1908
+ if (uniqueEqVals.size > 1) {
1909
+ group.filter(g => (g.cond.operator || 'eq') === 'eq').forEach(({
1910
+ index
1911
+ }) => results.push({
1912
+ index,
1913
+ msg: '矛盾:同一参数设置了多个不同的"等于"值,无法同时满足'
1914
+ }));
1915
+ return;
1916
+ }
1917
+ const neqVals = group.filter(g => g.cond.operator === 'neq').map(g => String(g.cond.value || ''));
1918
+ if (eqVals.length > 0 && neqVals.includes(eqVals[0])) {
1919
+ group.forEach(({
1920
+ index
1921
+ }) => results.push({
1922
+ index,
1923
+ msg: '矛盾:同一参数的"等于"和"不等于"使用了相同的值,无法同时满足'
1924
+ }));
1925
+ return;
1926
+ }
1927
+
1928
+ // 其他重复 key 的组合(如重复 contains 等)视为冗余警告
1929
+ group.forEach(({
1930
+ index
1931
+ }) => results.push({
1932
+ index,
1933
+ msg: `注意:同一参数 "${group[0].cond.key}" 出现了多条条件,请确认是否符合预期`
1934
+ }));
1935
+ });
1936
+ return results;
1937
+ });
1938
+
1939
+ // ---- 操作符切换 ----
1940
+
1941
+ function onOperatorChange(cond) {
1942
+ if (isValueless(cond.operator)) {
1943
+ cond.value = '';
1944
+ cond._regexError = null;
1945
+ } else {
1946
+ cond._regexError = validateRegex(cond.operator, cond.value);
1947
+ }
1948
+ emitChange();
1949
+ }
1950
+ function onValueBlur(cond) {
1951
+ cond._regexError = validateRegex(cond.operator, cond.value);
1952
+ emitChange();
1953
+ }
1954
+
1955
+ // ---- 捕获参数 ----
1956
+
1957
+ const queryParamList = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => Object.entries(props.capturedQuery || {}).map(([key, value]) => ({
1811
1958
  key,
1812
1959
  value: String(value)
1813
1960
  })));
1814
- const payloadParamList = (0,vue__WEBPACK_IMPORTED_MODULE_3__.computed)(() => Object.entries(props.capturedPayload || {}).map(([key, value]) => ({
1961
+ const payloadParamList = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => Object.entries(props.capturedPayload || {}).map(([key, value]) => ({
1815
1962
  key,
1816
1963
  value: String(value)
1817
1964
  })));
1818
- const hasCapturedParams = (0,vue__WEBPACK_IMPORTED_MODULE_3__.computed)(() => queryParamList.value.length > 0 || payloadParamList.value.length > 0);
1819
-
1820
- /** 判断某个捕获参数是否已被添加到条件中 */
1965
+ const hasCapturedParams = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => queryParamList.value.length > 0 || payloadParamList.value.length > 0);
1821
1966
  function isCapturedParamAdded(source, key) {
1822
1967
  return localConditions.value.some(c => c.source === source && c.key === key);
1823
1968
  }
1824
-
1825
- /** 手动添加一行空条件 */
1826
1969
  function addCondition() {
1827
1970
  localConditions.value.push({
1828
1971
  source: 'query',
1829
1972
  key: '',
1830
- value: ''
1973
+ operator: 'eq',
1974
+ value: '',
1975
+ _regexError: null
1831
1976
  });
1832
1977
  emitChange();
1833
1978
  }
1834
-
1835
- /** 从捕获参数面板中切换条件(添加/移除) */
1836
1979
  function toggleCapturedParam(source, key, value) {
1837
1980
  const existIndex = localConditions.value.findIndex(c => c.source === source && c.key === key);
1838
1981
  if (existIndex > -1) {
@@ -1841,30 +1984,41 @@ const __default__ = {
1841
1984
  localConditions.value.push({
1842
1985
  source,
1843
1986
  key,
1844
- value
1987
+ operator: 'eq',
1988
+ value,
1989
+ _regexError: null
1845
1990
  });
1846
1991
  }
1847
1992
  emitChange();
1848
1993
  }
1849
-
1850
- /** 删除某行条件 */
1851
1994
  function removeCondition(index) {
1852
1995
  localConditions.value.splice(index, 1);
1853
1996
  emitChange();
1854
1997
  }
1855
-
1856
- /** 向父组件同步变更 */
1857
1998
  function emitChange() {
1858
- emit('update:conditions', localConditions.value.map(c => ({
1999
+ emit('update:conditions', localConditions.value.map(({
2000
+ _regexError,
2001
+ ...c
2002
+ }) => ({
1859
2003
  ...c
1860
2004
  })));
1861
2005
  }
1862
2006
  return {
1863
2007
  __sfc: true,
2008
+ OPERATORS,
2009
+ VALUELESS_OPS,
2010
+ isValueless,
2011
+ isIncomplete,
1864
2012
  props,
1865
2013
  emit,
1866
2014
  localConditions,
1867
2015
  showCapturedParams,
2016
+ validateRegex,
2017
+ conflictIndexes,
2018
+ conflictMessages,
2019
+ conflictData,
2020
+ onOperatorChange,
2021
+ onValueBlur,
1868
2022
  queryParamList,
1869
2023
  payloadParamList,
1870
2024
  hasCapturedParams,
@@ -1887,16 +2041,8 @@ const __default__ = {
1887
2041
 
1888
2042
  "use strict";
1889
2043
  __webpack_require__.r(__webpack_exports__);
1890
- /* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.constructor.js");
1891
- /* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);
1892
- /* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.for-each.js");
1893
- /* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1__);
1894
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue */ "./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js");
1895
- /* harmony import */ var _ResponsePanel_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ResponsePanel.vue */ "./src/components/content/ResponsePanel.vue");
1896
- /* harmony import */ var _common_Editor_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/Editor.vue */ "./src/components/common/Editor.vue");
1897
-
1898
-
1899
-
2044
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vue */ "./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js");
2045
+ /* harmony import */ var _ResponsePanel_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ResponsePanel.vue */ "./src/components/content/ResponsePanel.vue");
1900
2046
 
1901
2047
 
1902
2048
  const __default__ = {
@@ -1915,148 +2061,143 @@ const __default__ = {
1915
2061
  emit
1916
2062
  }) {
1917
2063
  const props = __props;
1918
- const responsePanelRef = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)(null);
1919
-
1920
- // 解析 payload 为 JSON 对象供 jsoneditor 使用
1921
- const parsedPayloadData = (0,vue__WEBPACK_IMPORTED_MODULE_4__.computed)(() => {
1922
- if (!props.currentRow?.payload) {
1923
- return null;
1924
- }
1925
- const payload = props.currentRow.payload;
1926
-
1927
- // 1. 如果已经是对象,直接返回
1928
- if (typeof payload === 'object') {
1929
- // 如果是带 parsed 结构的对象
1930
- if (payload.parsed && payload.parsed.data) {
1931
- return payload.parsed.data;
1932
- }
1933
- // 如果是普通对象
1934
- return payload;
2064
+ const responsePanelRef = (0,vue__WEBPACK_IMPORTED_MODULE_1__.ref)(null);
2065
+ const handeMockVersionChange = versionName => {
2066
+ emit('handeMockVersionChange', versionName);
2067
+ };
2068
+ const handleFileSaved = data => {
2069
+ emit('fileSaved', data);
2070
+ };
2071
+ const refreshVersions = () => {
2072
+ if (responsePanelRef.value) {
2073
+ responsePanelRef.value.refreshVersions();
1935
2074
  }
2075
+ };
2076
+ expose({
2077
+ refreshVersions
2078
+ });
2079
+ return {
2080
+ __sfc: true,
2081
+ props,
2082
+ emit,
2083
+ responsePanelRef,
2084
+ handeMockVersionChange,
2085
+ handleFileSaved,
2086
+ refreshVersions,
2087
+ ResponsePanel: _ResponsePanel_vue__WEBPACK_IMPORTED_MODULE_0__["default"]
2088
+ };
2089
+ }
2090
+ }));
1936
2091
 
1937
- // 2. 如果是字符串,尝试解析
1938
- if (typeof payload === 'string') {
1939
- const result = {};
1940
-
1941
- // 2.1 尝试解析 JSON 格式
1942
- try {
1943
- const parsed = JSON.parse(payload);
1944
- if (typeof parsed === 'object' && parsed !== null) {
1945
- return parsed;
1946
- }
1947
- } catch (e) {
1948
- // 不是 JSON,继续尝试其他格式
1949
- }
2092
+ /***/ }),
1950
2093
 
1951
- // 2.2 尝试解析 multipart/form-data 格式
1952
- if (payload.includes('Content-Disposition: form-data')) {
1953
- return parseMultipartBodyToJson(payload);
1954
- }
2094
+ /***/ "./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.12.16_webpack@5.100.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=script&setup=true&lang=js":
2095
+ /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
2096
+ !*** ./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.12.16_webpack@5.100.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=script&setup=true&lang=js ***!
2097
+ \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
2098
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
1955
2099
 
1956
- // 2.3 尝试解析 application/x-www-form-urlencoded 格式
1957
- if (Object.keys(result).length === 0 && payload.includes('=')) {
1958
- try {
1959
- const params = new URLSearchParams(payload);
1960
- params.forEach((value, key) => {
1961
- result[key] = value;
1962
- });
1963
- } catch (e) {
1964
- // 解析失败
1965
- }
1966
- }
2100
+ "use strict";
2101
+ __webpack_require__.r(__webpack_exports__);
2102
+ /* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.constructor.js");
2103
+ /* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);
2104
+ /* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.find.js");
2105
+ /* harmony import */ var core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_find_js__WEBPACK_IMPORTED_MODULE_1__);
2106
+ /* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.for-each.js");
2107
+ /* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_2__);
2108
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue */ "./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js");
2109
+ /* harmony import */ var _common_Editor_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/Editor.vue */ "./src/components/common/Editor.vue");
2110
+ /* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../service */ "./src/service/index.js");
1967
2111
 
1968
- // 如果成功解析出键值对,返回结果
1969
- if (Object.keys(result).length > 0) {
1970
- return result;
1971
- }
1972
2112
 
1973
- // 如果无法解析,返回包含原始文本的对象
1974
- console.log('%c [ parsedPayloadData 最终 ]-186', 'font-size:13px; background:purple; color:white;', '返回 { raw: payload }');
1975
- return {
1976
- raw: payload
1977
- };
1978
- }
1979
- console.log('%c [ parsedPayloadData 最终 ]-189', 'font-size:13px; background:red; color:white;', '返回 null');
1980
- return null;
1981
- });
1982
- function parseMultipartBodyToJson(rawBody) {
1983
- const result = {};
1984
2113
 
1985
- // 1. 获取 Boundary (通常是第一行)
1986
- // 注意:真实 HTTP 换行符是 \r\n,但复制粘贴可能变成 \n,这里做兼容处理
1987
- const lines = rawBody.split(/\r?\n/);
1988
- const boundary = lines[0].trim();
1989
- if (!boundary) return result;
1990
-
1991
- // 2. 使用 Boundary 切割数据
1992
- // 每一部分都会被 boundary 分隔开
1993
- const parts = rawBody.split(boundary);
1994
- parts.forEach(part => {
1995
- // 忽略空的部分(通常是开头或结尾的空字符串/换行符)
1996
- if (!part || part.trim() === '--' || part.trim() === '') return;
1997
-
1998
- // 3. 分离 Header 和 Value
1999
- // 协议规定 Header 和 Value 之间由两个换行符 (\r\n\r\n 或 \n\n) 分隔
2000
- // 我们寻找第一个空行的位置
2001
- const headerEndIndex = part.search(/\r?\n\r?\n/);
2002
- if (headerEndIndex === -1) return; // 格式不正确,跳过
2003
-
2004
- // 提取 Header 部分
2005
- const header = part.substring(0, headerEndIndex);
2006
- // 提取 Value 部分 (去掉前面的空行,并去掉末尾的换行符)
2007
- const value = part.substring(headerEndIndex).trim();
2008
-
2009
- // 4. 从 Header 中正则提取 name 字段
2010
- const nameMatch = header.match(/name="([^"]+)"/);
2011
- if (nameMatch && nameMatch[1]) {
2012
- const key = nameMatch[1];
2013
-
2014
- // 5. 存入结果对象
2015
- // 考虑到可能有同名 key (例如多选框),这里做一个简单的兼容:
2016
- // 如果 key 已存在,转为数组;如果不存在,直接赋值。
2017
- if (result[key]) {
2018
- if (Array.isArray(result[key])) {
2019
- result[key].push(value);
2020
- } else {
2021
- result[key] = [result[key], value];
2022
- }
2023
- } else {
2024
- result[key] = value;
2025
- }
2026
- }
2027
- });
2028
- return result;
2029
- }
2030
2114
 
2031
- // Tab 管理:默认选中 response,并记住用户的选择
2032
- const STORAGE_KEY = 'mockbubu_active_tab';
2033
- const activeTabName = (0,vue__WEBPACK_IMPORTED_MODULE_4__.ref)('response'); // 默认选中 Response tab
2034
2115
 
2035
- // 有效的 tab 名列表(query/payload 已合并到 overview,旧缓存需兼容)
2036
- const VALID_TABS = ['overview', 'reqHeaders', 'resHeaders', 'response'];
2037
2116
 
2038
- // localStorage 读取用户上次选择的 tab
2039
- (0,vue__WEBPACK_IMPORTED_MODULE_4__.onMounted)(() => {
2040
- const savedTab = localStorage.getItem(STORAGE_KEY);
2041
- // 若旧缓存中存了已废弃的 query/payload tab,回退到 overview
2042
- if (savedTab && VALID_TABS.includes(savedTab)) {
2043
- activeTabName.value = savedTab;
2117
+ const __default__ = {
2118
+ name: 'RequestInfoDialog'
2119
+ };
2120
+ /* harmony default export */ __webpack_exports__["default"] = (/*#__PURE__*/Object.assign(__default__, {
2121
+ props: {
2122
+ visible: {
2123
+ type: Boolean,
2124
+ default: false
2125
+ },
2126
+ row: {
2127
+ type: Object,
2128
+ default: null
2129
+ }
2130
+ },
2131
+ emits: ['update:visible'],
2132
+ setup(__props) {
2133
+ const props = __props;
2134
+ const tabs = [{
2135
+ name: 'overview',
2136
+ label: '概览'
2137
+ }, {
2138
+ name: 'reqHeaders',
2139
+ label: '请求头'
2140
+ }, {
2141
+ name: 'resHeaders',
2142
+ label: '响应头'
2143
+ }, {
2144
+ name: 'source',
2145
+ label: '原始响应'
2146
+ }];
2147
+ const activeTab = (0,vue__WEBPACK_IMPORTED_MODULE_5__.ref)('overview');
2148
+ const copied = (0,vue__WEBPACK_IMPORTED_MODULE_5__.ref)(false);
2149
+ const savedSourceData = (0,vue__WEBPACK_IMPORTED_MODULE_5__.ref)(null); // 已保存文件懒加载的 source 数据(含 body + headers)
2150
+ let copyTimer = null;
2151
+ const loadSavedSourceData = async () => {
2152
+ if (props.row?.session) return;
2153
+ if (!props.row?.id) return;
2154
+ if (savedSourceData.value !== null) return;
2155
+ const res = await (0,_service__WEBPACK_IMPORTED_MODULE_4__.getVersions)({
2156
+ fileId: props.row.id
2157
+ });
2158
+ if (res.code !== 200) return;
2159
+ const list = typeof res.data === 'string' ? JSON.parse(res.data) : res.data;
2160
+ const source = list.find(v => v.type === 'source');
2161
+ savedSourceData.value = source ?? null;
2162
+ };
2163
+ (0,vue__WEBPACK_IMPORTED_MODULE_5__.watch)(() => props.visible, val => {
2164
+ if (val) {
2165
+ activeTab.value = 'overview';
2166
+ savedSourceData.value = null;
2167
+ loadSavedSourceData();
2044
2168
  }
2045
2169
  });
2046
-
2047
- // 当用户切换 tab 时,保存到 localStorage
2048
- const handleTabClick = tab => {
2049
- localStorage.setItem(STORAGE_KEY, tab.name);
2170
+ const copyUrl = () => {
2171
+ const url = props.row?.name || fullUrl.value;
2172
+ if (!url) return;
2173
+ navigator.clipboard.writeText(url).then(() => {
2174
+ copied.value = true;
2175
+ clearTimeout(copyTimer);
2176
+ copyTimer = setTimeout(() => {
2177
+ copied.value = false;
2178
+ }, 1800);
2179
+ });
2050
2180
  };
2051
-
2052
- // fullUrl 从 url + query 重建完整 URL(含 query 参数)
2053
- // query 对于已保存文件在 session 加载后填充,对缓存数据在轮询时填充
2054
- const fullUrl = (0,vue__WEBPACK_IMPORTED_MODULE_4__.computed)(() => {
2055
- const url = props.currentRow?.url;
2056
- if (!url) return '';
2057
- const query = props.currentRow?.query;
2058
- if (!query || Object.keys(query).length === 0) return url;
2059
- return `${url}?${new URLSearchParams(query).toString()}`;
2181
+ const METHOD_COLORS = {
2182
+ get: 'is-get',
2183
+ post: 'is-post',
2184
+ put: 'is-put',
2185
+ delete: 'is-delete',
2186
+ patch: 'is-patch',
2187
+ head: 'is-head',
2188
+ options: 'is-options'
2189
+ };
2190
+ const methodClass = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {
2191
+ const m = (props.row?.method || 'get').toLowerCase();
2192
+ return METHOD_COLORS[m] || 'is-get';
2193
+ });
2194
+ const statusClass = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {
2195
+ const s = props.row?.status;
2196
+ if (!s) return '';
2197
+ if (s >= 200 && s < 300) return 'is-2xx';
2198
+ if (s >= 300 && s < 400) return 'is-3xx';
2199
+ if (s >= 400 && s < 500) return 'is-4xx';
2200
+ return 'is-5xx';
2060
2201
  });
2061
2202
  const overviewItems = [{
2062
2203
  key: 'id',
@@ -2064,9 +2205,6 @@ const __default__ = {
2064
2205
  }, {
2065
2206
  key: 'method',
2066
2207
  label: 'Method'
2067
- }, {
2068
- key: 'ruleValue',
2069
- label: 'Mock Mode'
2070
2208
  }, {
2071
2209
  key: 'status',
2072
2210
  label: 'Status'
@@ -2075,52 +2213,91 @@ const __default__ = {
2075
2213
  label: 'Filename'
2076
2214
  }, {
2077
2215
  key: 'url',
2078
- label: 'Url'
2079
- }, {
2080
- key: 'rule',
2081
- label: 'Rule'
2216
+ label: 'URL'
2082
2217
  }, {
2083
2218
  key: 'date',
2084
2219
  label: 'Date'
2085
- }, {
2086
- key: 'mockTime',
2087
- label: 'Mock Date'
2088
2220
  }];
2089
- const handeMockVersionChange = versionName => {
2090
- emit('handeMockVersionChange', versionName);
2091
- };
2092
-
2093
- // 处理文件保存事件(从 ResponsePanel 传递上来)
2094
- const handleFileSaved = data => {
2095
- emit('fileSaved', data);
2096
- };
2097
-
2098
- // 暴露刷新版本列表的方法
2099
- const refreshVersions = () => {
2100
- if (responsePanelRef.value) {
2101
- responsePanelRef.value.refreshVersions();
2221
+ const fullUrl = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {
2222
+ const url = props.row?.url;
2223
+ if (!url) return '';
2224
+ const query = props.row?.query;
2225
+ if (!query || Object.keys(query).length === 0) return url;
2226
+ return `${url}?${new URLSearchParams(query).toString()}`;
2227
+ });
2228
+ const parsedPayload = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {
2229
+ const payload = props.row?.payload;
2230
+ if (!payload) return null;
2231
+ if (typeof payload === 'object') {
2232
+ if (payload.parsed?.data) return payload.parsed.data;
2233
+ return payload;
2102
2234
  }
2103
- };
2104
- expose({
2105
- refreshVersions
2235
+ if (typeof payload === 'string') {
2236
+ try {
2237
+ const parsed = JSON.parse(payload);
2238
+ if (typeof parsed === 'object' && parsed !== null) return parsed;
2239
+ } catch (e) {/* ignore */}
2240
+ if (payload.includes('=')) {
2241
+ try {
2242
+ const result = {};
2243
+ new URLSearchParams(payload).forEach((v, k) => {
2244
+ result[k] = v;
2245
+ });
2246
+ if (Object.keys(result).length > 0) return result;
2247
+ } catch (e) {/* ignore */}
2248
+ }
2249
+ return {
2250
+ raw: payload
2251
+ };
2252
+ }
2253
+ return null;
2254
+ });
2255
+ const sourceContent = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {
2256
+ const session = props.row?.session;
2257
+ if (session?.res) {
2258
+ const body = session.res.body;
2259
+ if (!body) return null;
2260
+ if (typeof body === 'object') return body;
2261
+ if (typeof body === 'string') {
2262
+ try {
2263
+ return JSON.parse(body);
2264
+ } catch (e) {
2265
+ return {
2266
+ raw: body
2267
+ };
2268
+ }
2269
+ }
2270
+ return null;
2271
+ }
2272
+ return savedSourceData.value?.content ?? null;
2273
+ });
2274
+ const reqHeaders = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {
2275
+ if (props.row?.session) return props.row.session?.req?.headers || {};
2276
+ return savedSourceData.value?.reqHeaders || {};
2277
+ });
2278
+ const resHeaders = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {
2279
+ if (props.row?.session) return props.row.session?.res?.headers || {};
2280
+ return savedSourceData.value?.resHeaders || {};
2106
2281
  });
2107
2282
  return {
2108
2283
  __sfc: true,
2109
2284
  props,
2110
- emit,
2111
- responsePanelRef,
2112
- parsedPayloadData,
2113
- parseMultipartBodyToJson,
2114
- STORAGE_KEY,
2115
- activeTabName,
2116
- VALID_TABS,
2117
- handleTabClick,
2118
- fullUrl,
2285
+ tabs,
2286
+ activeTab,
2287
+ copied,
2288
+ savedSourceData,
2289
+ copyTimer,
2290
+ loadSavedSourceData,
2291
+ copyUrl,
2292
+ METHOD_COLORS,
2293
+ methodClass,
2294
+ statusClass,
2119
2295
  overviewItems,
2120
- handeMockVersionChange,
2121
- handleFileSaved,
2122
- refreshVersions,
2123
- ResponsePanel: _ResponsePanel_vue__WEBPACK_IMPORTED_MODULE_2__["default"],
2296
+ fullUrl,
2297
+ parsedPayload,
2298
+ sourceContent,
2299
+ reqHeaders,
2300
+ resHeaders,
2124
2301
  Editor: _common_Editor_vue__WEBPACK_IMPORTED_MODULE_3__["default"]
2125
2302
  };
2126
2303
  }
@@ -2138,9 +2315,16 @@ const __default__ = {
2138
2315
  __webpack_require__.r(__webpack_exports__);
2139
2316
  /* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.constructor.js");
2140
2317
  /* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_0__);
2141
- /* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.some.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.some.js");
2142
- /* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_1__);
2143
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vue */ "./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js");
2318
+ /* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.for-each.js");
2319
+ /* harmony import */ var core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_for_each_js__WEBPACK_IMPORTED_MODULE_1__);
2320
+ /* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/esnext.iterator.some.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.some.js");
2321
+ /* harmony import */ var core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_some_js__WEBPACK_IMPORTED_MODULE_2__);
2322
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! vue */ "./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js");
2323
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
2324
+ /* harmony import */ var _RequestInfoDialog_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./RequestInfoDialog.vue */ "./src/components/content/RequestInfoDialog.vue");
2325
+
2326
+
2327
+
2144
2328
 
2145
2329
 
2146
2330
 
@@ -2172,9 +2356,26 @@ const __default__ = {
2172
2356
  emit
2173
2357
  }) {
2174
2358
  const props = __props;
2359
+ const requestInfoVisible = (0,vue__WEBPACK_IMPORTED_MODULE_5__.ref)(false);
2360
+ const requestInfoRow = (0,vue__WEBPACK_IMPORTED_MODULE_5__.ref)(null);
2361
+ const instance = (0,vue__WEBPACK_IMPORTED_MODULE_5__.getCurrentInstance)();
2362
+ const closeOtherPopovers = currentIndex => {
2363
+ const refs = instance.proxy.$refs;
2364
+ Object.keys(refs).forEach(key => {
2365
+ if (key.startsWith('morePopover_') && key !== `morePopover_${currentIndex}`) {
2366
+ refs[key]?.doClose?.();
2367
+ }
2368
+ });
2369
+ };
2370
+ const openRequestInfo = (row, index) => {
2371
+ const refs = instance.proxy.$refs;
2372
+ refs[`morePopover_${index}`]?.doClose?.();
2373
+ requestInfoRow.value = row;
2374
+ requestInfoVisible.value = true;
2375
+ };
2175
2376
 
2176
2377
  // 表格 ref,需要暴露给父组件用于调用 setCurrentRow
2177
- const tableRef = (0,vue__WEBPACK_IMPORTED_MODULE_2__.ref)(null);
2378
+ const tableRef = (0,vue__WEBPACK_IMPORTED_MODULE_5__.ref)(null);
2178
2379
  const handleSelectRow = row => {
2179
2380
  emit('handleSelectRow', row);
2180
2381
  };
@@ -2216,9 +2417,9 @@ const __default__ = {
2216
2417
  const isActiveMockFile = rule => {
2217
2418
  return props.activeRules.some(item => item.value === rule);
2218
2419
  };
2219
- (0,vue__WEBPACK_IMPORTED_MODULE_2__.onMounted)(() => {
2420
+ (0,vue__WEBPACK_IMPORTED_MODULE_5__.onMounted)(() => {
2220
2421
  if (props.currentRow) {
2221
- (0,vue__WEBPACK_IMPORTED_MODULE_2__.nextTick)(() => {
2422
+ (0,vue__WEBPACK_IMPORTED_MODULE_5__.nextTick)(() => {
2222
2423
  tableRef.value?.setCurrentRow(props.currentRow);
2223
2424
  });
2224
2425
  }
@@ -2228,6 +2429,11 @@ const __default__ = {
2228
2429
  });
2229
2430
  return {
2230
2431
  __sfc: true,
2432
+ requestInfoVisible,
2433
+ requestInfoRow,
2434
+ instance,
2435
+ closeOtherPopovers,
2436
+ openRequestInfo,
2231
2437
  props,
2232
2438
  emit,
2233
2439
  tableRef,
@@ -2239,7 +2445,8 @@ const __default__ = {
2239
2445
  openRemarkEditor,
2240
2446
  handleFilenameWheel,
2241
2447
  checkSelectable,
2242
- isActiveMockFile
2448
+ isActiveMockFile,
2449
+ RequestInfoDialog: _RequestInfoDialog_vue__WEBPACK_IMPORTED_MODULE_4__["default"]
2243
2450
  };
2244
2451
  }
2245
2452
  }));
@@ -2290,7 +2497,7 @@ __webpack_require__.r(__webpack_exports__);
2290
2497
 
2291
2498
 
2292
2499
 
2293
- // 条件匹配模式常量(与后端保持一致)
2500
+ // 与后端 DEFAULT_VERSION_NAME / MATCH_MODE_VALUE 保持一致
2294
2501
 
2295
2502
  const __default__ = {
2296
2503
  name: 'ResponsePanel'
@@ -2312,6 +2519,7 @@ const __default__ = {
2312
2519
  emit
2313
2520
  }) {
2314
2521
  const props = __props;
2522
+ const SOURCE_VERSION_NAME = 'source';
2315
2523
  const MATCH_MODE_VALUE = '__match_mode__';
2316
2524
  const editRef = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(null);
2317
2525
  const fullScreenEditorRef = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(null);
@@ -2322,6 +2530,7 @@ const __default__ = {
2322
2530
  top: false,
2323
2531
  bottom: false
2324
2532
  });
2533
+ const headerCollapsed = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(false);
2325
2534
  let tabsFadePending = false;
2326
2535
  const updateTabsFade = () => {
2327
2536
  if (tabsFadePending) return;
@@ -2330,7 +2539,7 @@ const __default__ = {
2330
2539
  const el = tabsAreaRef.value;
2331
2540
  if (el) {
2332
2541
  tabsFade.top = el.scrollTop > 2;
2333
- tabsFade.bottom = el.scrollTop + el.clientHeight < el.scrollHeight - 2;
2542
+ tabsFade.bottom = el.scrollTop + el.clientHeight < el.scrollHeight - 14;
2334
2543
  }
2335
2544
  tabsFadePending = false;
2336
2545
  });
@@ -2357,6 +2566,8 @@ const __default__ = {
2357
2566
  // ========== 条件匹配模式状态 ==========
2358
2567
  // 当前显示模式:'version' = 版本直选,'match' = 条件匹配
2359
2568
  const mockMode = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)('version');
2569
+ // 切换到条件匹配前记录的版本名,切回时用于恢复选中
2570
+ const prevVersionNameBeforeMatch = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(null);
2360
2571
  // 模式下拉是否展开
2361
2572
  const modeDropdownVisible = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(false);
2362
2573
  // 匹配规则列表
@@ -2374,6 +2585,45 @@ const __default__ = {
2374
2585
  description: '',
2375
2586
  editingRule: null
2376
2587
  });
2588
+ /**
2589
+ * 跨规则冲突检测:条件集等价的两条规则中,低优先级的永远无法命中。
2590
+ * 返回 { [ruleId]: conflictMsg } 的对象,有冲突时才有对应条目。
2591
+ *
2592
+ * "条件集等价"判断:两条规则的条件数相同,且每个条件的 source+key+operator+value 完全一致。
2593
+ * (排序后比较,与条件顺序无关)
2594
+ */
2595
+ const crossRuleConflicts = (0,vue__WEBPACK_IMPORTED_MODULE_12__.computed)(() => {
2596
+ const result = {};
2597
+ const list = matchRuleList.value;
2598
+ if (list.length < 2) return result;
2599
+ const condKey = c => `${c.source}::${c.key}::${c.operator || 'eq'}::${String(c.value || '')}`;
2600
+ const ruleFingerprint = rule => {
2601
+ const conds = (rule.conditions || []).map(condKey).sort();
2602
+ return conds.join('|');
2603
+ };
2604
+ const fpMap = {};
2605
+ list.forEach(rule => {
2606
+ const fp = ruleFingerprint(rule);
2607
+ (fpMap[fp] = fpMap[fp] || []).push(rule);
2608
+ });
2609
+ Object.values(fpMap).forEach(group => {
2610
+ if (group.length < 2) return;
2611
+ // 按后端排序规则:条件数多的先,priority 小的先
2612
+ const sorted = [...group].sort((a, b) => {
2613
+ const condDiff = (b.conditions?.length || 0) - (a.conditions?.length || 0);
2614
+ if (condDiff !== 0) return condDiff;
2615
+ return (a.priority || 0) - (b.priority || 0);
2616
+ });
2617
+ const winner = sorted[0];
2618
+ sorted.slice(1).forEach(rule => {
2619
+ result[rule.id] = `与规则「${winner.name}」条件完全相同,本规则永远不会被命中(优先级低)`;
2620
+ });
2621
+ // 赢家也做一个提示,告知它遮蔽了其他规则
2622
+ result[winner.id] = `遮蔽了 ${sorted.length - 1} 条条件完全相同的规则,可删除多余规则`;
2623
+ });
2624
+ return result;
2625
+ });
2626
+
2377
2627
  // 捕获到的参数(来自 file.json session,用于"从捕获参数选择")
2378
2628
  const capturedQuery = (0,vue__WEBPACK_IMPORTED_MODULE_12__.computed)(() => props.api.query || {});
2379
2629
  const capturedPayload = (0,vue__WEBPACK_IMPORTED_MODULE_12__.computed)(() => {
@@ -2432,6 +2682,7 @@ const __default__ = {
2432
2682
  const date = (0,vue__WEBPACK_IMPORTED_MODULE_12__.computed)(() => props.api.date);
2433
2683
  const isSourceReadonly = (0,vue__WEBPACK_IMPORTED_MODULE_12__.computed)(() => mockMode.value === 'version' && currentFile.value.type === 'source');
2434
2684
  const activeEditorContent = (0,vue__WEBPACK_IMPORTED_MODULE_12__.computed)(() => mockMode.value === 'match' ? currentMatchRule.value?.content : currentFile.value.content);
2685
+ const historyVersionCount = (0,vue__WEBPACK_IMPORTED_MODULE_12__.computed)(() => responseList.value.filter(item => item.type === 'history').length);
2435
2686
 
2436
2687
  /**
2437
2688
  * 获取 source 版本数据(仅用于未保存文件)
@@ -2492,9 +2743,9 @@ const __default__ = {
2492
2743
 
2493
2744
  /**
2494
2745
  * 获取已保存文件的完整版本列表(source + 历史版本)
2495
- * 后端返回的数据已经是统一格式:{ type, name, content, updateTime }
2746
+ * @param {string} [overrideTargetName] - 指定选中的版本名,不传则从 props.api.mockVersion 读取
2496
2747
  */
2497
- const getHistoryVersions = () => {
2748
+ const getHistoryVersions = overrideTargetName => {
2498
2749
  const fileId = props.api.id;
2499
2750
  return (0,_service__WEBPACK_IMPORTED_MODULE_11__.getVersions)({
2500
2751
  fileId
@@ -2531,10 +2782,9 @@ const __default__ = {
2531
2782
  // 直接替换列表数据
2532
2783
  responseList.value = versionList;
2533
2784
 
2534
- // 更新当前选中的文件
2535
- // 如果 mockVersion 为空或为 "source",选中 source
2536
- // 否则选中对应的版本
2537
- const targetName = mockVersion.value || 'source';
2785
+ // overrideTargetName 优先(如从条件匹配切回时由调用方传入),
2786
+ // 否则从 props.api.mockVersion 读取
2787
+ const targetName = overrideTargetName !== undefined ? overrideTargetName || SOURCE_VERSION_NAME : mockVersion.value || SOURCE_VERSION_NAME;
2538
2788
  const currentFileData = versionList.find(item => item.name === targetName);
2539
2789
 
2540
2790
  // 选中项需要深拷贝一份可编辑副本(frozen 对象不可直接编辑)
@@ -2597,12 +2847,10 @@ const __default__ = {
2597
2847
  // 判断是否删除的是当前选中的 tab
2598
2848
  const isDeletingCurrentTab = item.filename === currentFile.value.filename;
2599
2849
  if (isDeletingCurrentTab) {
2600
- // 如果删除当前 tab,切换到前一个 tab
2601
- // 如果当前是第一个,则切换到下一个(删除后会变成第一个)
2602
- const targetIndex = index > 0 ? index - 1 : 0;
2603
- const targetFile = responseList.value[targetIndex];
2850
+ // 优先切换到第一个剩余的 history 版本,没有 history 时才回退到 source
2851
+ const remainingHistory = responseList.value.filter(v => v.type === 'history' && v.filename !== item.filename);
2852
+ const targetFile = remainingHistory.length > 0 ? remainingHistory[0] : responseList.value.find(v => v.type === 'source');
2604
2853
  if (targetFile) {
2605
- // 先切换 tab,再删除
2606
2854
  selectFile(targetFile);
2607
2855
  }
2608
2856
  }
@@ -2980,6 +3228,7 @@ const __default__ = {
2980
3228
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error('JSON 格式错误,请修正后再保存');
2981
3229
  return;
2982
3230
  }
3231
+ editRef.value?.format?.();
2983
3232
  updateMatchRuleHandler();
2984
3233
  return;
2985
3234
  }
@@ -2995,6 +3244,7 @@ const __default__ = {
2995
3244
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error('JSON 格式错误,请修正后再保存');
2996
3245
  return;
2997
3246
  }
3247
+ editRef.value?.format?.();
2998
3248
  if (currentFile.value.type === 'history') {
2999
3249
  updateHistory();
3000
3250
  } else {
@@ -3016,58 +3266,18 @@ const __default__ = {
3016
3266
  return;
3017
3267
  }
3018
3268
 
3019
- // 同步更新列表中的数据
3269
+ // 同步更新列表中的数据(Vue 2 下标赋值不触发响应式,需用 splice)
3020
3270
  const idx = matchRuleList.value.findIndex(r => r.id === currentMatchRule.value.id);
3021
3271
  if (idx > -1) {
3022
- matchRuleList.value[idx] = {
3272
+ matchRuleList.value.splice(idx, 1, {
3023
3273
  ...matchRuleList.value[idx],
3024
3274
  ...currentMatchRule.value
3025
- };
3275
+ });
3026
3276
  }
3027
3277
  matchRuleChanged.value = false;
3028
3278
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().success('保存成功');
3029
3279
  };
3030
3280
 
3031
- // 格式化 JSON
3032
- const handleFormat = () => {
3033
- try {
3034
- const content = activeEditorContent.value;
3035
- if (!content) {
3036
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().warning('内容为空');
3037
- return;
3038
- }
3039
- if (editRef.value && editRef.value.format) {
3040
- editRef.value.format();
3041
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().success('格式化成功');
3042
- } else {
3043
- const formatted = JSON.parse(JSON.stringify(content));
3044
- if (mockMode.value === 'match' && currentMatchRule.value) {
3045
- currentMatchRule.value.content = formatted;
3046
- } else {
3047
- currentFile.value.content = formatted;
3048
- }
3049
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().success('格式化成功');
3050
- }
3051
- } catch (error) {
3052
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error('格式化失败: ' + error.message);
3053
- }
3054
- };
3055
-
3056
- // 验证 JSON
3057
- const handleValidate = () => {
3058
- try {
3059
- const content = activeEditorContent.value;
3060
- if (!content) {
3061
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().warning('内容为空');
3062
- return;
3063
- }
3064
- JSON.parse(JSON.stringify(content));
3065
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().success('JSON 格式正确');
3066
- } catch (error) {
3067
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error('JSON 格式错误: ' + error.message);
3068
- }
3069
- };
3070
-
3071
3281
  // 展开所有节点
3072
3282
  const handleExpandAll = () => {
3073
3283
  if (editRef.value && editRef.value.expandAll) {
@@ -3117,40 +3327,6 @@ const __default__ = {
3117
3327
  }
3118
3328
  };
3119
3329
 
3120
- // 全屏编辑器 - 格式化
3121
- const handleFullScreenFormat = () => {
3122
- try {
3123
- if (!fullScreenModal.content) {
3124
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().warning('内容为空');
3125
- return;
3126
- }
3127
- if (fullScreenEditorRef.value && fullScreenEditorRef.value.format) {
3128
- fullScreenEditorRef.value.format();
3129
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().success('格式化成功');
3130
- } else {
3131
- const formatted = JSON.parse(JSON.stringify(fullScreenModal.content));
3132
- fullScreenModal.content = formatted;
3133
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().success('格式化成功');
3134
- }
3135
- } catch (error) {
3136
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error('格式化失败: ' + error.message);
3137
- }
3138
- };
3139
-
3140
- // 全屏编辑器 - 验证
3141
- const handleFullScreenValidate = () => {
3142
- try {
3143
- if (!fullScreenModal.content) {
3144
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().warning('内容为空');
3145
- return;
3146
- }
3147
- JSON.parse(JSON.stringify(fullScreenModal.content));
3148
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().success('JSON 格式正确');
3149
- } catch (error) {
3150
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error('JSON 格式错误: ' + error.message);
3151
- }
3152
- };
3153
-
3154
3330
  // 全屏编辑器 - 展开所有
3155
3331
  const handleFullScreenExpandAll = () => {
3156
3332
  if (fullScreenEditorRef.value && fullScreenEditorRef.value.expandAll) {
@@ -3178,6 +3354,7 @@ const __default__ = {
3178
3354
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error('JSON 格式错误,请修正后再保存');
3179
3355
  return;
3180
3356
  }
3357
+ fullScreenEditorRef.value?.format?.();
3181
3358
  const cloned = JSON.parse(JSON.stringify(fullScreenModal.content));
3182
3359
  if (mockMode.value === 'match' && currentMatchRule.value) {
3183
3360
  currentMatchRule.value.content = cloned;
@@ -3240,13 +3417,15 @@ const __default__ = {
3240
3417
  }
3241
3418
  }
3242
3419
 
3243
- // 切换为条件匹配
3420
+ // 切换为条件匹配:记录当前版本名,切回时用于恢复
3421
+ prevVersionNameBeforeMatch.value = currentFile.value.filename || SOURCE_VERSION_NAME;
3244
3422
  const res = await (0,_service__WEBPACK_IMPORTED_MODULE_11__.setMatchMode)({
3245
3423
  url: props.api.name,
3246
3424
  enable: true
3247
3425
  });
3248
3426
  if (res.code !== 200) {
3249
3427
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error(res.msg || '切换失败');
3428
+ prevVersionNameBeforeMatch.value = null;
3250
3429
  return;
3251
3430
  }
3252
3431
  mockMode.value = 'match';
@@ -3257,7 +3436,7 @@ const __default__ = {
3257
3436
  matchRuleChanged.value = false;
3258
3437
  emit('changeMockVersion', MATCH_MODE_VALUE);
3259
3438
  } else {
3260
- // 切换回版本直选
3439
+ // 切换回版本直选:优先用前端记录的版本名,后端 restoredMockVersion 作为次要参考
3261
3440
  const res = await (0,_service__WEBPACK_IMPORTED_MODULE_11__.setMatchMode)({
3262
3441
  url: props.api.name,
3263
3442
  enable: false
@@ -3270,11 +3449,16 @@ const __default__ = {
3270
3449
  matchRuleList.value = [];
3271
3450
  currentMatchRule.value = null;
3272
3451
  matchRuleChanged.value = false;
3273
- const restoredVersion = res.data.restoredMockVersion || null;
3274
- emit('changeMockVersion', restoredVersion);
3275
- // 重新加载版本列表
3452
+ const targetVersion = prevVersionNameBeforeMatch.value || res.data.restoredMockVersion || SOURCE_VERSION_NAME;
3453
+ prevVersionNameBeforeMatch.value = null;
3454
+ emit('changeMockVersion', targetVersion === SOURCE_VERSION_NAME ? null : targetVersion);
3276
3455
  if (props.api.id) {
3277
- await getHistoryVersions();
3456
+ await getHistoryVersions(targetVersion);
3457
+ // getHistoryVersions 只设置前端状态,需要显式持久化选中版本
3458
+ (0,_service__WEBPACK_IMPORTED_MODULE_11__.setMockVersion)({
3459
+ url: props.api.name,
3460
+ versionName: targetVersion === SOURCE_VERSION_NAME ? '' : targetVersion
3461
+ });
3278
3462
  }
3279
3463
  }
3280
3464
  };
@@ -3333,10 +3517,10 @@ const __default__ = {
3333
3517
  } else {
3334
3518
  const idx = matchRuleList.value.findIndex(r => r.id === currentMatchRule.value.id);
3335
3519
  if (idx > -1) {
3336
- matchRuleList.value[idx] = {
3520
+ matchRuleList.value.splice(idx, 1, {
3337
3521
  ...matchRuleList.value[idx],
3338
3522
  conditions: newConditions
3339
- };
3523
+ });
3340
3524
  }
3341
3525
  }
3342
3526
  };
@@ -3488,7 +3672,11 @@ const __default__ = {
3488
3672
  matchRuleList.value = [];
3489
3673
  currentMatchRule.value = null;
3490
3674
  matchRuleChanged.value = false;
3675
+ prevVersionNameBeforeMatch.value = null;
3491
3676
  modeDropdownVisible.value = false;
3677
+ tabsFade.top = false;
3678
+ tabsFade.bottom = false;
3679
+ headerCollapsed.value = false;
3492
3680
 
3493
3681
  // 判断当前是否是条件匹配模式
3494
3682
  const isMatchMode = props.api.mockVersion === MATCH_MODE_VALUE;
@@ -3570,6 +3758,7 @@ const __default__ = {
3570
3758
  });
3571
3759
  return {
3572
3760
  __sfc: true,
3761
+ SOURCE_VERSION_NAME,
3573
3762
  MATCH_MODE_VALUE,
3574
3763
  props,
3575
3764
  emit,
@@ -3579,6 +3768,7 @@ const __default__ = {
3579
3768
  matchRuleNameInput,
3580
3769
  tabsAreaRef,
3581
3770
  tabsFade,
3771
+ headerCollapsed,
3582
3772
  tabsFadePending,
3583
3773
  updateTabsFade,
3584
3774
  responseList,
@@ -3588,11 +3778,13 @@ const __default__ = {
3588
3778
  versionModal,
3589
3779
  fullScreenModal,
3590
3780
  mockMode,
3781
+ prevVersionNameBeforeMatch,
3591
3782
  modeDropdownVisible,
3592
3783
  matchRuleList,
3593
3784
  currentMatchRule,
3594
3785
  matchRuleChanged,
3595
3786
  matchRuleModal,
3787
+ crossRuleConflicts,
3596
3788
  capturedQuery,
3597
3789
  capturedPayload,
3598
3790
  name,
@@ -3601,6 +3793,7 @@ const __default__ = {
3601
3793
  date,
3602
3794
  isSourceReadonly,
3603
3795
  activeEditorContent,
3796
+ historyVersionCount,
3604
3797
  getSourceVersion,
3605
3798
  getHistoryVersions,
3606
3799
  onCreate,
@@ -3618,16 +3811,12 @@ const __default__ = {
3618
3811
  updateApiDataHandler,
3619
3812
  handleUpdate,
3620
3813
  updateMatchRuleHandler,
3621
- handleFormat,
3622
- handleValidate,
3623
3814
  handleExpandAll,
3624
3815
  handleCollapseAll,
3625
3816
  handleFullScreen,
3626
3817
  handleFullScreenOpened,
3627
3818
  handleFullScreenClosed,
3628
3819
  handleFullScreenChange,
3629
- handleFullScreenFormat,
3630
- handleFullScreenValidate,
3631
3820
  handleFullScreenExpandAll,
3632
3821
  handleFullScreenCollapseAll,
3633
3822
  handleFullScreenSave,
@@ -4080,14 +4269,16 @@ __webpack_require__.r(__webpack_exports__);
4080
4269
  /* harmony import */ var core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_constructor_js__WEBPACK_IMPORTED_MODULE_7__);
4081
4270
  /* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ "./node_modules/.pnpm/core-js@3.8.3/node_modules/core-js/modules/esnext.iterator.map.js");
4082
4271
  /* harmony import */ var core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_esnext_iterator_map_js__WEBPACK_IMPORTED_MODULE_8__);
4083
- /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! vue */ "./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js");
4272
+ /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! vue */ "./node_modules/.pnpm/vue@2.7.14/node_modules/vue/dist/vue.runtime.esm.js");
4084
4273
  /* harmony import */ var _utils_clipboard__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @/utils/clipboard */ "./src/utils/clipboard.js");
4085
4274
  /* harmony import */ var _service__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../service */ "./src/service/index.js");
4086
4275
  /* harmony import */ var _hooks_useHeader_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../hooks/useHeader.js */ "./src/hooks/useHeader.js");
4087
- /* harmony import */ var _hooks_useTheme_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../hooks/useTheme.js */ "./src/hooks/useTheme.js");
4088
- /* harmony import */ var _group_GroupSelector_vue__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../group/GroupSelector.vue */ "./src/components/group/GroupSelector.vue");
4089
- /* harmony import */ var _storage_StorageManager_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../storage/StorageManager.vue */ "./src/components/storage/StorageManager.vue");
4090
- /* harmony import */ var _memory_MemoryMonitor_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../memory/MemoryMonitor.vue */ "./src/components/memory/MemoryMonitor.vue");
4276
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
4277
+ /* harmony import */ var _hooks_useTheme_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../hooks/useTheme.js */ "./src/hooks/useTheme.js");
4278
+ /* harmony import */ var _group_GroupSelector_vue__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../group/GroupSelector.vue */ "./src/components/group/GroupSelector.vue");
4279
+ /* harmony import */ var _storage_StorageManager_vue__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../storage/StorageManager.vue */ "./src/components/storage/StorageManager.vue");
4280
+ /* harmony import */ var _memory_MemoryMonitor_vue__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../memory/MemoryMonitor.vue */ "./src/components/memory/MemoryMonitor.vue");
4281
+
4091
4282
 
4092
4283
 
4093
4284
 
@@ -4178,29 +4369,29 @@ const __default__ = {
4178
4369
  const {
4179
4370
  currentTheme,
4180
4371
  toggleTheme
4181
- } = (0,_hooks_useTheme_js__WEBPACK_IMPORTED_MODULE_12__.useTheme)();
4182
- const archiveInput = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(null);
4183
- const groupSelectorRef = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(null); // GroupSelector 组件引用
4372
+ } = (0,_hooks_useTheme_js__WEBPACK_IMPORTED_MODULE_13__.useTheme)();
4373
+ const archiveInput = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(null);
4374
+ const groupSelectorRef = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(null); // GroupSelector 组件引用
4184
4375
 
4185
4376
  // 插件头部栏状态
4186
- const pluginVersion = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)('');
4187
- const pluginShortName = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)('mockbubu');
4188
- const pluginEnabled = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(true);
4189
- const helpDialogVisible = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(false);
4190
- const morePopoverVisible = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(false);
4377
+ const pluginVersion = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)('');
4378
+ const pluginShortName = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)('mockbubu');
4379
+ const pluginEnabled = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(true);
4380
+ const helpDialogVisible = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(false);
4381
+ const morePopoverVisible = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(false);
4191
4382
 
4192
4383
  // 版本更新横幅
4193
- const latestVersion = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(null);
4194
- const updateBannerClosed = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(false);
4195
- const installing = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(false);
4196
- const updateAvailable = (0,vue__WEBPACK_IMPORTED_MODULE_16__.computed)(() => {
4384
+ const latestVersion = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(null);
4385
+ const updateBannerClosed = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(false);
4386
+ const installing = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(false);
4387
+ const updateAvailable = (0,vue__WEBPACK_IMPORTED_MODULE_17__.computed)(() => {
4197
4388
  if (!latestVersion.value || !pluginVersion.value) return false;
4198
4389
  const parse = v => v.split('.').map(Number);
4199
4390
  const [la, lb, lc] = parse(latestVersion.value);
4200
4391
  const [ca, cb, cc] = parse(pluginVersion.value);
4201
4392
  return la > ca || la === ca && lb > cb || la === ca && lb === cb && lc > cc;
4202
4393
  });
4203
- const updateCmd = (0,vue__WEBPACK_IMPORTED_MODULE_16__.computed)(() => `w2 install whistle.mockbubu --registry=https://registry.npmjs.org/`);
4394
+ const updateCmd = (0,vue__WEBPACK_IMPORTED_MODULE_17__.computed)(() => `w2 install whistle.mockbubu --registry=https://registry.npmjs.org/`);
4204
4395
 
4205
4396
  // 获取插件版本号
4206
4397
  const fetchPluginVersion = async () => {
@@ -4360,7 +4551,7 @@ const __default__ = {
4360
4551
  };
4361
4552
 
4362
4553
  // 存储管理
4363
- const storageManagerVisible = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(false);
4554
+ const storageManagerVisible = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(false);
4364
4555
 
4365
4556
  // 显示存储管理对话框
4366
4557
  const showStorageManager = () => {
@@ -4368,7 +4559,7 @@ const __default__ = {
4368
4559
  };
4369
4560
 
4370
4561
  // 插件工作模式(初始为 null,获取后才显示)
4371
- const pluginMode = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(null); // null | 'default' | 'mock-only'
4562
+ const pluginMode = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(null); // null | 'default' | 'mock-only'
4372
4563
 
4373
4564
  // 获取插件工作模式
4374
4565
  const fetchPluginMode = async () => {
@@ -4403,19 +4594,10 @@ const __default__ = {
4403
4594
  closeAllDialogs
4404
4595
  });
4405
4596
 
4406
- // 切换插件工作模式
4407
- const handleModeChange = async newMode => {
4408
- const oldMode = pluginMode.value; // 保存旧值,用于失败时恢复
4409
-
4410
- const modeNames = {
4411
- default: '默认模式',
4412
- 'mock-only': '仅Mock模式',
4413
- disabled: '禁用模式'
4414
- };
4415
- const loadingInstance = element_ui_lib_loading__WEBPACK_IMPORTED_MODULE_4___default().service({
4416
- fullscreen: true,
4417
- text: `正在切换到${modeNames[newMode]}...`
4418
- });
4597
+ // 切换捕获开关(true=捕获/default,false=停止捕获/mock-only)
4598
+ const handleCaptureToggle = async enabled => {
4599
+ const newMode = enabled ? 'default' : 'mock-only';
4600
+ const oldMode = pluginMode.value;
4419
4601
  try {
4420
4602
  const res = await fetch('/cgi-bin/mockbubu/set-plugin-mode', {
4421
4603
  method: 'POST',
@@ -4429,19 +4611,13 @@ const __default__ = {
4429
4611
  const data = await res.json();
4430
4612
  if (data.success) {
4431
4613
  pluginMode.value = newMode;
4432
- element_ui_lib_message__WEBPACK_IMPORTED_MODULE_6___default().success(`已切换到${modeNames[newMode]}`);
4433
4614
  } else {
4434
- // 切换失败,恢复原状态
4435
4615
  pluginMode.value = oldMode;
4436
4616
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_6___default().error('切换失败: ' + data.message);
4437
4617
  }
4438
4618
  } catch (error) {
4439
- // 切换失败,恢复原状态
4440
4619
  pluginMode.value = oldMode;
4441
- console.error('[mockbubu] 切换插件模式失败:', error);
4442
4620
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_6___default().error('切换失败: ' + error.message);
4443
- } finally {
4444
- loadingInstance.close();
4445
4621
  }
4446
4622
  };
4447
4623
 
@@ -4451,7 +4627,7 @@ const __default__ = {
4451
4627
  };
4452
4628
 
4453
4629
  // 内存监控
4454
- const memoryMonitorRef = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(null);
4630
+ const memoryMonitorRef = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(null);
4455
4631
 
4456
4632
  // 显示内存监控对话框
4457
4633
  const showMemoryMonitor = () => {
@@ -4460,43 +4636,26 @@ const __default__ = {
4460
4636
  }
4461
4637
  };
4462
4638
 
4463
- // 生效规则列表
4464
- const activeRulesList = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)([]);
4465
-
4466
- // 获取生效规则
4467
- const fetchActiveRules = async () => {
4468
- try {
4469
- const res = await (0,_service__WEBPACK_IMPORTED_MODULE_10__.getActiveRules)();
4470
- if (res.code === 200) {
4471
- activeRulesList.value = res.data.rules || [];
4472
- }
4473
- } catch (error) {
4474
- console.error('[mockbubu] 获取生效规则失败:', error);
4475
- }
4476
- };
4477
-
4478
- // 定时刷新规则列表 & Whistle 插件状态的定时器
4479
- let rulesRefreshInterval = null;
4639
+ // 定时轮询 Whistle 插件启停状态的定时器
4640
+ let pluginStateInterval = null;
4480
4641
 
4481
- // 组件挂载时获取规则和插件状态
4482
- (0,vue__WEBPACK_IMPORTED_MODULE_16__.onMounted)(async () => {
4642
+ // 组件挂载时获取插件状态
4643
+ (0,vue__WEBPACK_IMPORTED_MODULE_17__.onMounted)(async () => {
4483
4644
  await fetchPluginVersion();
4484
4645
  fetchWhistlePluginState();
4485
- fetchActiveRules();
4486
4646
  fetchPluginMode();
4487
4647
 
4488
- // 每2秒刷新规则列表 + Whistle 插件启停状态
4489
- rulesRefreshInterval = setInterval(() => {
4490
- fetchActiveRules();
4648
+ // 每2秒刷新 Whistle 插件启停状态
4649
+ pluginStateInterval = setInterval(() => {
4491
4650
  fetchWhistlePluginState();
4492
4651
  }, 2000);
4493
4652
  });
4494
4653
 
4495
4654
  // 组件卸载时清理定时器
4496
- (0,vue__WEBPACK_IMPORTED_MODULE_16__.onUnmounted)(() => {
4497
- if (rulesRefreshInterval) {
4498
- clearInterval(rulesRefreshInterval);
4499
- rulesRefreshInterval = null;
4655
+ (0,vue__WEBPACK_IMPORTED_MODULE_17__.onUnmounted)(() => {
4656
+ if (pluginStateInterval) {
4657
+ clearInterval(pluginStateInterval);
4658
+ pluginStateInterval = null;
4500
4659
  }
4501
4660
  });
4502
4661
 
@@ -4526,22 +4685,17 @@ const __default__ = {
4526
4685
 
4527
4686
  // 处理组切换/刷新
4528
4687
  const handleGroupRefresh = payload => {
4529
- // 组切换后需要:
4530
- // 1. 通知父组件切换组(清空缓存、重置状态)
4531
- // 2. 重新加载已保存文件
4532
- // 3. 重置轮询startTime
4533
- console.log('[ActionPanel] handleGroupRefresh 收到事件:', payload);
4534
4688
  emit('handleGroupSwitch', payload);
4535
4689
  };
4536
4690
 
4537
4691
  // 导出分组对话框相关状态
4538
- const exportDialogVisible = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)(false);
4539
- const selectedGroupIds = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)([]);
4540
- const allGroups = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)([]);
4541
- const currentGroupId = (0,vue__WEBPACK_IMPORTED_MODULE_16__.ref)('');
4692
+ const exportDialogVisible = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)(false);
4693
+ const selectedGroupIds = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)([]);
4694
+ const allGroups = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)([]);
4695
+ const currentGroupId = (0,vue__WEBPACK_IMPORTED_MODULE_17__.ref)('');
4542
4696
 
4543
4697
  // 计算是否全选
4544
- const isAllSelected = (0,vue__WEBPACK_IMPORTED_MODULE_16__.computed)(() => {
4698
+ const isAllSelected = (0,vue__WEBPACK_IMPORTED_MODULE_17__.computed)(() => {
4545
4699
  return allGroups.value.length > 0 && selectedGroupIds.value.length === allGroups.value.length;
4546
4700
  });
4547
4701
 
@@ -4714,13 +4868,11 @@ const __default__ = {
4714
4868
  fetchPluginMode,
4715
4869
  enablePlugin,
4716
4870
  closeAllDialogs,
4717
- handleModeChange,
4871
+ handleCaptureToggle,
4718
4872
  handleStorageManagerRefresh,
4719
4873
  memoryMonitorRef,
4720
4874
  showMemoryMonitor,
4721
- activeRulesList,
4722
- fetchActiveRules,
4723
- rulesRefreshInterval,
4875
+ pluginStateInterval,
4724
4876
  searchApi,
4725
4877
  handleBatchDelete,
4726
4878
  handleBatchUpdateMock,
@@ -4738,9 +4890,10 @@ const __default__ = {
4738
4890
  confirmExport,
4739
4891
  handleImportArchive,
4740
4892
  handleArchiveUpload,
4741
- GroupSelector: _group_GroupSelector_vue__WEBPACK_IMPORTED_MODULE_13__["default"],
4742
- StorageManager: _storage_StorageManager_vue__WEBPACK_IMPORTED_MODULE_14__["default"],
4743
- MemoryMonitor: _memory_MemoryMonitor_vue__WEBPACK_IMPORTED_MODULE_15__["default"]
4893
+ TOOLTIP_DELAY: _utils_constants__WEBPACK_IMPORTED_MODULE_12__.TOOLTIP_DELAY,
4894
+ GroupSelector: _group_GroupSelector_vue__WEBPACK_IMPORTED_MODULE_14__["default"],
4895
+ StorageManager: _storage_StorageManager_vue__WEBPACK_IMPORTED_MODULE_15__["default"],
4896
+ MemoryMonitor: _memory_MemoryMonitor_vue__WEBPACK_IMPORTED_MODULE_16__["default"]
4744
4897
  };
4745
4898
  }
4746
4899
  }));
@@ -5003,7 +5156,9 @@ var render = function render() {
5003
5156
  staticClass: "mock-container__disabled-overlay"
5004
5157
  }, [_c("div", {
5005
5158
  staticClass: "mock-container__disabled-card"
5006
- }, [_vm._m(0), _c("div", {
5159
+ }, [_c("div", {
5160
+ staticClass: "mock-container__disabled-icon"
5161
+ }), _c("div", {
5007
5162
  staticClass: "mock-container__disabled-title"
5008
5163
  }, [_vm._v("插件已停用")]), _c("div", {
5009
5164
  staticClass: "mock-container__disabled-desc"
@@ -5087,7 +5242,7 @@ var render = function render() {
5087
5242
  attrs: {
5088
5243
  content: "复制 URL",
5089
5244
  placement: "top",
5090
- "open-delay": 400
5245
+ "open-delay": _setup.TOOLTIP_DELAY
5091
5246
  }
5092
5247
  }, [_c("div", {
5093
5248
  staticClass: "mock-container__current-url-copy",
@@ -5220,16 +5375,7 @@ var render = function render() {
5220
5375
  }
5221
5376
  }, [_vm._v(" 确定 ")])], 1)], 2)], 1);
5222
5377
  };
5223
- var staticRenderFns = [function () {
5224
- var _vm = this,
5225
- _c = _vm._self._c,
5226
- _setup = _vm._self._setupProxy;
5227
- return _c("div", {
5228
- staticClass: "mock-container__disabled-icon"
5229
- }, [_c("i", {
5230
- staticClass: "el-icon-video-pause"
5231
- })]);
5232
- }];
5378
+ var staticRenderFns = [];
5233
5379
  render._withStripped = true;
5234
5380
 
5235
5381
 
@@ -5314,7 +5460,10 @@ var render = function render() {
5314
5460
  }, [_vm._l(_setup.localConditions, function (cond, index) {
5315
5461
  return _c("div", {
5316
5462
  key: index,
5317
- staticClass: "match-condition-editor__row"
5463
+ staticClass: "match-condition-editor__row",
5464
+ class: {
5465
+ "is-conflict": _setup.conflictIndexes.has(index)
5466
+ }
5318
5467
  }, [_c("el-select", {
5319
5468
  staticClass: "match-condition-editor__source-select",
5320
5469
  attrs: {
@@ -5356,16 +5505,48 @@ var render = function render() {
5356
5505
  },
5357
5506
  expression: "cond.key"
5358
5507
  }
5359
- }), _c("span", {
5360
- staticClass: "match-condition-editor__operator"
5361
- }, [_vm._v("=")]), _c("el-input", {
5508
+ }), _c("el-select", {
5509
+ staticClass: "match-condition-editor__operator-select",
5510
+ attrs: {
5511
+ size: "mini"
5512
+ },
5513
+ on: {
5514
+ change: function ($event) {
5515
+ return _setup.onOperatorChange(cond);
5516
+ }
5517
+ },
5518
+ model: {
5519
+ value: cond.operator,
5520
+ callback: function ($$v) {
5521
+ _vm.$set(cond, "operator", $$v);
5522
+ },
5523
+ expression: "cond.operator"
5524
+ }
5525
+ }, _vm._l(_setup.OPERATORS, function (op) {
5526
+ return _c("el-option", {
5527
+ key: op.value,
5528
+ attrs: {
5529
+ label: op.label,
5530
+ value: op.value
5531
+ }
5532
+ }, [_c("span", {
5533
+ staticClass: "match-condition-editor__op-symbol"
5534
+ }, [_vm._v(_vm._s(op.symbol))]), _c("span", {
5535
+ staticClass: "match-condition-editor__op-label"
5536
+ }, [_vm._v(_vm._s(op.text))])]);
5537
+ }), 1), !_setup.isValueless(cond.operator) ? _c("el-input", {
5362
5538
  staticClass: "match-condition-editor__value-input",
5539
+ class: {
5540
+ "is-regex-error": cond._regexError
5541
+ },
5363
5542
  attrs: {
5364
5543
  size: "mini",
5365
- placeholder: "参数值"
5544
+ placeholder: cond.operator === "regex" ? "正则表达式" : "参数值"
5366
5545
  },
5367
5546
  on: {
5368
- blur: _setup.emitChange
5547
+ blur: function ($event) {
5548
+ return _setup.onValueBlur(cond);
5549
+ }
5369
5550
  },
5370
5551
  model: {
5371
5552
  value: cond.value,
@@ -5374,7 +5555,35 @@ var render = function render() {
5374
5555
  },
5375
5556
  expression: "cond.value"
5376
5557
  }
5377
- }), _c("el-button", {
5558
+ }) : _c("span", {
5559
+ staticClass: "match-condition-editor__value-input match-condition-editor__value-placeholder"
5560
+ }, [_vm._v("(任意值)")]), _c("span", {
5561
+ staticClass: "match-condition-editor__status"
5562
+ }, [cond._regexError ? _c("el-tooltip", {
5563
+ attrs: {
5564
+ content: cond._regexError,
5565
+ placement: "top",
5566
+ effect: "dark"
5567
+ }
5568
+ }, [_c("i", {
5569
+ staticClass: "el-icon-warning match-condition-editor__icon--error"
5570
+ })]) : _setup.isIncomplete(cond) ? _c("el-tooltip", {
5571
+ attrs: {
5572
+ content: "条件未填完整,不参与匹配(会被自动跳过)",
5573
+ placement: "top",
5574
+ effect: "dark"
5575
+ }
5576
+ }, [_c("i", {
5577
+ staticClass: "el-icon-warning match-condition-editor__icon--incomplete"
5578
+ })]) : _setup.conflictIndexes.has(index) ? _c("el-tooltip", {
5579
+ attrs: {
5580
+ content: _setup.conflictMessages[index],
5581
+ placement: "top",
5582
+ effect: "dark"
5583
+ }
5584
+ }, [_c("i", {
5585
+ staticClass: "el-icon-warning-outline match-condition-editor__icon--warn"
5586
+ })]) : _vm._e()], 1), _c("el-button", {
5378
5587
  staticClass: "match-condition-editor__delete-btn",
5379
5588
  attrs: {
5380
5589
  type: "text",
@@ -5388,9 +5597,9 @@ var render = function render() {
5388
5597
  })], 1);
5389
5598
  }), _setup.localConditions.length === 0 ? _c("div", {
5390
5599
  staticClass: "match-condition-editor__empty"
5391
- }, [_c("i", {
5392
- staticClass: "el-icon-info"
5393
- }), _c("span", [_vm._v("无条件(兜底规则,匹配所有请求)")])]) : _vm._e()], 2), _c("div", {
5600
+ }, [_c("span", {
5601
+ staticClass: "match-condition-editor__empty-badge"
5602
+ }, [_vm._v("✦")]), _c("span", [_vm._v("无条件(兜底规则,匹配所有请求)")])]) : _vm._e()], 2), _c("div", {
5394
5603
  staticClass: "match-condition-editor__actions"
5395
5604
  }, [_c("el-button", {
5396
5605
  attrs: {
@@ -5511,137 +5720,225 @@ var render = function render() {
5511
5720
  var _vm = this,
5512
5721
  _c = _vm._self._c,
5513
5722
  _setup = _vm._self._setupProxy;
5514
- return _vm.currentRow ? _c("div", {
5515
- staticClass: "request-detail"
5516
- }, [_c("el-tabs", {
5517
- staticClass: "request-detail__tabs",
5723
+ return _c("div", {
5724
+ staticClass: "request-detail",
5725
+ class: {
5726
+ "request-detail--empty": !_vm.currentRow
5727
+ }
5728
+ }, [!_vm.currentRow ? _c("div", {
5729
+ staticClass: "request-detail__placeholder"
5730
+ }, [_c("span", {
5731
+ staticClass: "request-detail__placeholder-text"
5732
+ }, [_vm._v("暂无数据")])]) : _c(_setup.ResponsePanel, {
5733
+ ref: "responsePanelRef",
5518
5734
  attrs: {
5519
- type: "border-card"
5735
+ "row-key": _vm.currentRow.rowKey,
5736
+ api: _vm.currentRow
5520
5737
  },
5521
5738
  on: {
5522
- "tab-click": _setup.handleTabClick
5739
+ changeMockVersion: _setup.handeMockVersionChange,
5740
+ fileSaved: _setup.handleFileSaved
5741
+ }
5742
+ })], 1);
5743
+ };
5744
+ var staticRenderFns = [];
5745
+ render._withStripped = true;
5746
+
5747
+
5748
+ /***/ }),
5749
+
5750
+ /***/ "./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.12.16_webpack@5.100.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=template&id=b9cf4022&scoped=true":
5751
+ /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
5752
+ !*** ./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.12.16_webpack@5.100.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=template&id=b9cf4022&scoped=true ***!
5753
+ \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
5754
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5755
+
5756
+ "use strict";
5757
+ __webpack_require__.r(__webpack_exports__);
5758
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
5759
+ /* harmony export */ render: function() { return /* binding */ render; },
5760
+ /* harmony export */ staticRenderFns: function() { return /* binding */ staticRenderFns; }
5761
+ /* harmony export */ });
5762
+ var render = function render() {
5763
+ var _vm = this,
5764
+ _c = _vm._self._c,
5765
+ _setup = _vm._self._setupProxy;
5766
+ return _c("el-dialog", {
5767
+ attrs: {
5768
+ visible: _vm.visible,
5769
+ width: "860px",
5770
+ top: "5vh",
5771
+ "append-to-body": "",
5772
+ "custom-class": "request-info-dialog",
5773
+ "show-close": false
5523
5774
  },
5524
- model: {
5525
- value: _setup.activeTabName,
5526
- callback: function ($$v) {
5527
- _setup.activeTabName = $$v;
5775
+ on: {
5776
+ "update:visible": function ($event) {
5777
+ return _vm.$emit("update:visible", $event);
5528
5778
  },
5529
- expression: "activeTabName"
5779
+ close: function ($event) {
5780
+ return _vm.$emit("update:visible", false);
5781
+ }
5530
5782
  }
5531
- }, [_c("el-tab-pane", {
5532
- staticClass: "request-detail__tab-pane",
5783
+ }, [_c("template", {
5784
+ slot: "title"
5785
+ }, [_c("div", {
5786
+ staticClass: "rid-header"
5787
+ }, [_c("div", {
5788
+ staticClass: "rid-header__info"
5789
+ }, [_c("span", {
5790
+ staticClass: "rid-header__method",
5791
+ class: _setup.methodClass
5792
+ }, [_vm._v(_vm._s(_vm.row && _vm.row.method || "GET"))]), _vm.row && _vm.row.status ? _c("span", {
5793
+ staticClass: "rid-header__status",
5794
+ class: _setup.statusClass
5795
+ }, [_vm._v(_vm._s(_vm.row.status))]) : _vm._e(), _c("span", {
5796
+ staticClass: "rid-header__url",
5797
+ attrs: {
5798
+ title: _setup.fullUrl
5799
+ }
5800
+ }, [_vm._v(_vm._s(_vm.row && _vm.row.name || _setup.fullUrl))]), _c("button", {
5801
+ staticClass: "rid-header__copy",
5802
+ class: {
5803
+ "is-copied": _setup.copied
5804
+ },
5533
5805
  attrs: {
5534
- label: "Overview",
5535
- name: "overview"
5806
+ title: _setup.fullUrl
5807
+ },
5808
+ on: {
5809
+ click: _setup.copyUrl
5810
+ }
5811
+ }, [_c("i", {
5812
+ class: _setup.copied ? "el-icon-check" : "el-icon-copy-document"
5813
+ })])]), _c("button", {
5814
+ staticClass: "rid-header__close",
5815
+ on: {
5816
+ click: function ($event) {
5817
+ return _vm.$emit("update:visible", false);
5818
+ }
5536
5819
  }
5820
+ }, [_c("i", {
5821
+ staticClass: "el-icon-close"
5822
+ })]), _c("div", {
5823
+ staticClass: "rid-header__tabs"
5824
+ }, _vm._l(_setup.tabs, function (tab) {
5825
+ return _c("div", {
5826
+ key: tab.name,
5827
+ staticClass: "rid-header__tab",
5828
+ class: {
5829
+ "is-active": _setup.activeTab === tab.name
5830
+ },
5831
+ on: {
5832
+ click: function ($event) {
5833
+ _setup.activeTab = tab.name;
5834
+ }
5835
+ }
5836
+ }, [_vm._v(" " + _vm._s(tab.label) + " ")]);
5837
+ }), 0)])]), _vm.row ? _c("div", {
5838
+ staticClass: "rid-body"
5839
+ }, [_c("div", {
5840
+ directives: [{
5841
+ name: "show",
5842
+ rawName: "v-show",
5843
+ value: _setup.activeTab === "overview",
5844
+ expression: "activeTab === 'overview'"
5845
+ }],
5846
+ staticClass: "rid-pane"
5537
5847
  }, [_c("div", {
5538
- staticClass: "request-detail__section"
5848
+ staticClass: "rid-section"
5539
5849
  }, [_c("div", {
5540
- staticClass: "request-detail__section-title"
5541
- }, [_vm._v("Overview")]), _vm._l(_setup.overviewItems, function (item) {
5850
+ staticClass: "rid-section__title"
5851
+ }, [_vm._v("概览")]), _vm._l(_setup.overviewItems, function (item) {
5542
5852
  return _c("div", {
5543
5853
  key: item.key,
5544
- staticClass: "request-detail__item"
5854
+ staticClass: "rid-kv"
5545
5855
  }, [_c("div", {
5546
- staticClass: "request-detail__label"
5547
- }, [item.key === "mockTime" ? [_c("el-tooltip", {
5548
- attrs: {
5549
- effect: "dark",
5550
- content: "The latest hitting the mock",
5551
- placement: "top"
5552
- }
5553
- }, [_c("i", {
5554
- staticClass: "el-icon-warning-outline"
5555
- })])] : _vm._e(), _vm._v(" " + _vm._s(item.label) + " ")], 2), _c("div", {
5556
- staticClass: "request-detail__value"
5557
- }, [_vm._v(_vm._s(item.key === "url" ? _setup.fullUrl : _vm.currentRow[item.key]))])]);
5856
+ staticClass: "rid-kv__key"
5857
+ }, [_vm._v(_vm._s(item.label))]), _c("div", {
5858
+ staticClass: "rid-kv__val"
5859
+ }, [_vm._v(_vm._s(item.key === "url" ? _setup.fullUrl : _vm.row[item.key]))])]);
5558
5860
  })], 2), _c("div", {
5559
- staticClass: "request-detail__section"
5861
+ staticClass: "rid-section"
5560
5862
  }, [_c("div", {
5561
- staticClass: "request-detail__section-title"
5562
- }, [_vm._v("Query")]), _vm.currentRow.query && Object.keys(_vm.currentRow.query).length > 0 ? _vm._l(_vm.currentRow.query, function (value, key) {
5863
+ staticClass: "rid-section__title"
5864
+ }, [_vm._v("Query")]), _vm.row.query && Object.keys(_vm.row.query).length > 0 ? _vm._l(_vm.row.query, function (value, key) {
5563
5865
  return _c("div", {
5564
5866
  key: key,
5565
- staticClass: "request-detail__item"
5867
+ staticClass: "rid-kv"
5566
5868
  }, [_c("div", {
5567
- staticClass: "request-detail__label"
5869
+ staticClass: "rid-kv__key"
5568
5870
  }, [_vm._v(_vm._s(key))]), _c("div", {
5569
- staticClass: "request-detail__value"
5871
+ staticClass: "rid-kv__val"
5570
5872
  }, [_vm._v(_vm._s(value))])]);
5571
5873
  }) : _c("div", {
5572
- staticClass: "request-detail__empty"
5573
- }, [_vm._v(" No query parameters ")])], 2), _c("div", {
5574
- staticClass: "request-detail__section"
5874
+ staticClass: "rid-empty"
5875
+ }, [_vm._v("暂无 Query 参数")])], 2), _c("div", {
5876
+ staticClass: "rid-section"
5575
5877
  }, [_c("div", {
5576
- staticClass: "request-detail__section-title"
5577
- }, [_vm._v("Payload")]), _setup.parsedPayloadData ? _c("div", {
5578
- staticClass: "request-detail__payload-editor"
5878
+ staticClass: "rid-section__title"
5879
+ }, [_vm._v("Payload")]), _setup.parsedPayload ? _c("div", {
5880
+ staticClass: "rid-editor-wrap"
5579
5881
  }, [_c(_setup.Editor, {
5580
5882
  attrs: {
5581
- value: _setup.parsedPayloadData,
5883
+ value: _setup.parsedPayload,
5582
5884
  "show-btns": false,
5583
5885
  "read-only": true,
5584
5886
  lang: "zh"
5585
5887
  }
5586
5888
  })], 1) : _c("div", {
5587
- staticClass: "request-detail__empty"
5588
- }, [_vm._v(" No payload ")])])]), _c("el-tab-pane", {
5589
- staticClass: "request-detail__tab-pane",
5590
- attrs: {
5591
- label: "Request Headers",
5592
- name: "reqHeaders"
5593
- }
5594
- }, [_vm._l(_vm.currentRow.reqHeaders, function (value, key) {
5889
+ staticClass: "rid-empty"
5890
+ }, [_vm._v("暂无 Payload")])])]), _c("div", {
5891
+ directives: [{
5892
+ name: "show",
5893
+ rawName: "v-show",
5894
+ value: _setup.activeTab === "reqHeaders",
5895
+ expression: "activeTab === 'reqHeaders'"
5896
+ }],
5897
+ staticClass: "rid-pane"
5898
+ }, [_vm._l(_setup.reqHeaders, function (value, key) {
5595
5899
  return _c("div", {
5596
5900
  key: key,
5597
- staticClass: "request-detail__item"
5901
+ staticClass: "rid-kv"
5598
5902
  }, [_c("div", {
5599
- staticClass: "request-detail__label"
5903
+ staticClass: "rid-kv__key"
5600
5904
  }, [_vm._v(_vm._s(key))]), _c("div", {
5601
- staticClass: "request-detail__value"
5905
+ staticClass: "rid-kv__val"
5602
5906
  }, [_vm._v(_vm._s(value))])]);
5603
- }), !_vm.currentRow.reqHeaders || Object.keys(_vm.currentRow.reqHeaders).length === 0 ? _c("div", {
5604
- staticClass: "request-detail__empty"
5605
- }, [_vm._v(" No request headers available ")]) : _vm._e()], 2), _c("el-tab-pane", {
5606
- staticClass: "request-detail__tab-pane",
5607
- attrs: {
5608
- label: "Response Headers",
5609
- name: "resHeaders"
5610
- }
5611
- }, [_vm._l(_vm.currentRow.resHeaders, function (value, key) {
5907
+ }), Object.keys(_setup.reqHeaders).length === 0 ? _c("div", {
5908
+ staticClass: "rid-empty"
5909
+ }, [_vm._v("暂无请求头")]) : _vm._e()], 2), _c("div", {
5910
+ directives: [{
5911
+ name: "show",
5912
+ rawName: "v-show",
5913
+ value: _setup.activeTab === "resHeaders",
5914
+ expression: "activeTab === 'resHeaders'"
5915
+ }],
5916
+ staticClass: "rid-pane"
5917
+ }, [_vm._l(_setup.resHeaders, function (value, key) {
5612
5918
  return _c("div", {
5613
5919
  key: key,
5614
- staticClass: "request-detail__item"
5920
+ staticClass: "rid-kv"
5615
5921
  }, [_c("div", {
5616
- staticClass: "request-detail__label"
5922
+ staticClass: "rid-kv__key"
5617
5923
  }, [_vm._v(_vm._s(key))]), _c("div", {
5618
- staticClass: "request-detail__value"
5924
+ staticClass: "rid-kv__val"
5619
5925
  }, [_vm._v(_vm._s(value))])]);
5620
- }), !_vm.currentRow.resHeaders || Object.keys(_vm.currentRow.resHeaders).length === 0 ? _c("div", {
5621
- staticClass: "request-detail__empty"
5622
- }, [_vm._v(" No response headers available ")]) : _vm._e()], 2), _vm.currentRow ? _c("el-tab-pane", {
5623
- staticClass: "request-detail__tab-pane",
5624
- attrs: {
5625
- name: "response"
5626
- }
5627
- }, [_c("span", {
5628
- attrs: {
5629
- slot: "label"
5630
- },
5631
- slot: "label"
5632
- }, [_vm._v("Response")]), _c(_setup.ResponsePanel, {
5633
- ref: "responsePanelRef",
5926
+ }), Object.keys(_setup.resHeaders).length === 0 ? _c("div", {
5927
+ staticClass: "rid-empty"
5928
+ }, [_vm._v("暂无响应头")]) : _vm._e()], 2), _setup.activeTab === "source" ? _c("div", {
5929
+ staticClass: "rid-pane rid-pane--editor"
5930
+ }, [_setup.sourceContent !== null ? _c("div", {
5931
+ staticClass: "rid-editor-wrap rid-editor-wrap--full"
5932
+ }, [_c(_setup.Editor, {
5634
5933
  attrs: {
5635
- "row-key": _vm.currentRow.rowKey,
5636
- api: _vm.currentRow
5637
- },
5638
- on: {
5639
- changeMockVersion: _setup.handeMockVersionChange,
5640
- fileSaved: _setup.handleFileSaved
5934
+ value: _setup.sourceContent,
5935
+ "show-btns": false,
5936
+ "read-only": true,
5937
+ lang: "zh"
5641
5938
  }
5642
- })], 1) : _vm._e()], 1)], 1) : _c("div", {
5643
- staticClass: "request-detail"
5644
- });
5939
+ })], 1) : _c("div", {
5940
+ staticClass: "rid-empty"
5941
+ }, [_vm._v("暂无原始响应数据")])]) : _vm._e()]) : _vm._e()], 2);
5645
5942
  };
5646
5943
  var staticRenderFns = [];
5647
5944
  render._withStripped = true;
@@ -5706,7 +6003,7 @@ var render = function render() {
5706
6003
  }), _c("el-table-column", {
5707
6004
  attrs: {
5708
6005
  prop: "name",
5709
- label: "Filename",
6006
+ label: "请求URL",
5710
6007
  "min-width": "300"
5711
6008
  },
5712
6009
  scopedSlots: _vm._u([{
@@ -5755,14 +6052,30 @@ var render = function render() {
5755
6052
  slot: "header"
5756
6053
  }, [_vm._v(" Mock ")])], 2), _c("el-table-column", {
5757
6054
  attrs: {
5758
- label: "Operation",
5759
- width: "80",
6055
+ label: "操作",
6056
+ width: "110",
5760
6057
  align: "center"
5761
6058
  },
5762
6059
  scopedSlots: _vm._u([{
5763
6060
  key: "default",
5764
6061
  fn: function (scope) {
5765
6062
  return [_c("el-button", {
6063
+ staticClass: "request-list__btn",
6064
+ class: {
6065
+ "request-list__btn--locked": scope.row.locked
6066
+ },
6067
+ attrs: {
6068
+ type: "text",
6069
+ size: "mini",
6070
+ icon: scope.row.locked ? "el-icon-lock" : "el-icon-unlock"
6071
+ },
6072
+ on: {
6073
+ click: function ($event) {
6074
+ $event.stopPropagation();
6075
+ return _setup.updateLock(!scope.row.locked, scope.row);
6076
+ }
6077
+ }
6078
+ }), _c("el-button", {
5766
6079
  staticClass: "request-list__btn request-list__btn--delete",
5767
6080
  attrs: {
5768
6081
  type: "text",
@@ -5775,26 +6088,63 @@ var render = function render() {
5775
6088
  return _setup.handleDelete(scope.row, scope.$index);
5776
6089
  }
5777
6090
  }
5778
- }), _c("el-button", {
5779
- staticClass: "request-list__btn",
5780
- class: {
5781
- "request-list__btn--locked": scope.row.locked
6091
+ }), _c("el-popover", {
6092
+ ref: `morePopover_${scope.$index}`,
6093
+ attrs: {
6094
+ placement: "bottom-end",
6095
+ trigger: "click",
6096
+ "popper-class": "request-list__more-popover"
5782
6097
  },
6098
+ on: {
6099
+ show: function ($event) {
6100
+ return _setup.closeOtherPopovers(scope.$index);
6101
+ }
6102
+ }
6103
+ }, [_c("div", {
6104
+ staticClass: "request-list__more-menu"
6105
+ }, [_c("div", {
6106
+ staticClass: "request-list__more-item",
6107
+ on: {
6108
+ click: function ($event) {
6109
+ $event.stopPropagation();
6110
+ return _setup.openRequestInfo(scope.row, scope.$index);
6111
+ }
6112
+ }
6113
+ }, [_c("i", {
6114
+ staticClass: "el-icon-document"
6115
+ }), _c("span", [_vm._v("查看请求信息")])])]), _c("el-button", {
6116
+ staticClass: "request-list__btn request-list__btn--more",
5783
6117
  attrs: {
6118
+ slot: "reference",
5784
6119
  type: "text",
5785
- size: "mini",
5786
- icon: scope.row.locked ? "el-icon-lock" : "el-icon-unlock"
6120
+ size: "mini"
5787
6121
  },
5788
6122
  on: {
5789
6123
  click: function ($event) {
5790
6124
  $event.stopPropagation();
5791
- return _setup.updateLock(!scope.row.locked, scope.row);
5792
6125
  }
5793
- }
5794
- })];
6126
+ },
6127
+ slot: "reference"
6128
+ }, [_c("i", {
6129
+ staticClass: "el-icon-more"
6130
+ })])], 1)];
5795
6131
  }
5796
6132
  }])
5797
- })], 1)], 1);
6133
+ }), _c("template", {
6134
+ slot: "empty"
6135
+ }, [_c("span", {
6136
+ staticClass: "request-list__empty-text"
6137
+ }, [_vm._v("暂无数据")])])], 2), _c(_setup.RequestInfoDialog, {
6138
+ attrs: {
6139
+ visible: _setup.requestInfoVisible,
6140
+ row: _setup.requestInfoRow
6141
+ },
6142
+ on: {
6143
+ "update:visible": function ($event) {
6144
+ _setup.requestInfoVisible = $event;
6145
+ }
6146
+ }
6147
+ })], 1);
5798
6148
  };
5799
6149
  var staticRenderFns = [];
5800
6150
  render._withStripped = true;
@@ -5824,7 +6174,25 @@ var render = function render() {
5824
6174
  staticClass: "response-panel__header"
5825
6175
  }, [_c("div", {
5826
6176
  staticClass: "response-panel__header-toolbar"
5827
- }, [_setup.props.api ? _c("div", {
6177
+ }, [_setup.mockMode === "version" ? _c("div", {
6178
+ staticClass: "response-panel__add-btn",
6179
+ on: {
6180
+ click: _setup.onCreate
6181
+ }
6182
+ }, [_c("i", {
6183
+ staticClass: "el-icon-plus"
6184
+ }), _c("span", [_vm._v("新增版本")])]) : _vm._e(), _setup.mockMode === "match" ? _c("div", {
6185
+ staticClass: "response-panel__add-btn",
6186
+ on: {
6187
+ click: _setup.onCreateMatchRule
6188
+ }
6189
+ }, [_c("i", {
6190
+ staticClass: "el-icon-plus"
6191
+ }), _c("span", [_vm._v("新增规则")])]) : _vm._e(), _setup.mockMode === "version" ? _c("span", {
6192
+ staticClass: "response-panel__version-count"
6193
+ }, [_vm._v(" mock版本列表: " + _vm._s(_setup.historyVersionCount) + " 个版本 ")]) : _vm._e(), _setup.mockMode === "match" && _setup.matchRuleList.length > 0 ? _c("span", {
6194
+ staticClass: "response-panel__version-count"
6195
+ }, [_vm._v(" " + _vm._s(_setup.matchRuleList.length) + " 条规则 ")]) : _vm._e(), _setup.props.api ? _c("div", {
5828
6196
  staticClass: "response-panel__mode-selector"
5829
6197
  }, [_c("div", {
5830
6198
  staticClass: "response-panel__mode-btn",
@@ -5863,66 +6231,31 @@ var render = function render() {
5863
6231
  return _setup.switchMode("match");
5864
6232
  }
5865
6233
  }
5866
- }, [_vm._v(" 条件匹配 ")])]) : _vm._e()]) : _vm._e(), _setup.mockMode === "version" ? _c("div", {
5867
- staticClass: "response-panel__add-btn",
5868
- on: {
5869
- click: _setup.onCreate
5870
- }
5871
- }, [_c("i", {
5872
- staticClass: "el-icon-plus"
5873
- }), _c("span", [_vm._v("新增版本")])]) : _vm._e(), _setup.mockMode === "match" ? _c("div", {
5874
- staticClass: "response-panel__add-btn",
5875
- on: {
5876
- click: _setup.onCreateMatchRule
5877
- }
5878
- }, [_c("i", {
5879
- staticClass: "el-icon-plus"
5880
- }), _c("span", [_vm._v("新增规则")])]) : _vm._e(), _setup.mockMode === "version" && _setup.responseList.length > 1 ? _c("span", {
5881
- staticClass: "response-panel__version-count"
5882
- }, [_vm._v(" " + _vm._s(_setup.responseList.length - 1) + " 个版本 ")]) : _vm._e(), _setup.mockMode === "match" && _setup.matchRuleList.length > 0 ? _c("span", {
5883
- staticClass: "response-panel__version-count"
5884
- }, [_vm._v(" " + _vm._s(_setup.matchRuleList.length) + " 条规则 ")]) : _vm._e()]), _c("div", {
6234
+ }, [_vm._v(" 条件匹配 ")])]) : _vm._e()]) : _vm._e()]), _c("div", {
5885
6235
  staticClass: "response-panel__tabs-wrapper",
5886
6236
  class: {
5887
- "has-top-fade": _setup.tabsFade.top,
5888
- "has-bottom-fade": _setup.tabsFade.bottom
6237
+ "has-top-fade": _setup.tabsFade.top && !_setup.headerCollapsed,
6238
+ "has-bottom-fade": _setup.tabsFade.bottom && !_setup.headerCollapsed
5889
6239
  }
5890
6240
  }, [_setup.mockMode === "version" ? _c("div", {
6241
+ directives: [{
6242
+ name: "show",
6243
+ rawName: "v-show",
6244
+ value: !_setup.headerCollapsed,
6245
+ expression: "!headerCollapsed"
6246
+ }],
5891
6247
  ref: "tabsAreaRef",
5892
6248
  staticClass: "response-panel__tabs-area",
5893
6249
  on: {
5894
6250
  scroll: _setup.updateTabsFade
5895
6251
  }
5896
- }, _vm._l(_setup.responseList, function (item, index) {
5897
- return _c("div", {
6252
+ }, [_vm._l(_setup.responseList, function (item, index) {
6253
+ return [item.type === "history" ? _c("el-tooltip", {
5898
6254
  key: `${item.type}-${item.filename}`,
5899
- staticClass: "response-panel__tab",
5900
- class: {
5901
- "response-panel__tab--selected": item.filename === _setup.currentFile.filename
5902
- },
5903
- on: {
5904
- click: function ($event) {
5905
- return _setup.selectFile(item);
5906
- }
5907
- }
5908
- }, [item.type === "source" ? _c("el-tooltip", {
5909
6255
  attrs: {
5910
6256
  effect: "dark",
5911
- placement: "top"
5912
- }
5913
- }, [_c("div", {
5914
- attrs: {
5915
- slot: "content"
5916
- },
5917
- slot: "content"
5918
- }, [_vm._v(" 原始响应数据(只读)"), _c("br"), _vm._v(" 从服务器捕获的原始响应 ")]), _c("span", {
5919
- staticClass: "response-panel__source-tab"
5920
- }, [_c("i", {
5921
- staticClass: "el-icon-document"
5922
- }), _c("span", [_vm._v("Source")])])]) : item.type === "history" ? _c("el-tooltip", {
5923
- attrs: {
5924
- effect: "dark",
5925
- placement: "top"
6257
+ placement: "top",
6258
+ "open-delay": 1000
5926
6259
  }
5927
6260
  }, [_c("div", {
5928
6261
  staticStyle: {
@@ -5932,9 +6265,21 @@ var render = function render() {
5932
6265
  slot: "content"
5933
6266
  },
5934
6267
  slot: "content"
5935
- }, [_c("div", [_c("strong", [_vm._v("版本名称:")]), _vm._v(_vm._s(item.filename))]), _c("div", [_c("strong", [_vm._v("描述:")]), _vm._v(_vm._s(item.description || "(无)"))]), _c("div", [_c("strong", [_vm._v("创建时间:")]), _vm._v(_vm._s(item.createTime ? _setup.formatTime(item.createTime) : "(旧版本,无记录)"))]), _c("div", [_c("strong", [_vm._v("修改时间:")]), _vm._v(_vm._s(item.updateTime ? _setup.formatTime(item.updateTime) : "(旧版本,无记录)"))])]), _c("span", {
6268
+ }, [_c("div", [_c("strong", [_vm._v("版本名称:")]), _vm._v(_vm._s(item.filename))]), _c("div", [_c("strong", [_vm._v("描述:")]), _vm._v(_vm._s(item.description || "(无)"))]), _c("div", [_c("strong", [_vm._v("创建时间:")]), _vm._v(_vm._s(item.createTime ? _setup.formatTime(item.createTime) : "(旧版本,无记录)"))]), _c("div", [_c("strong", [_vm._v("修改时间:")]), _vm._v(_vm._s(item.updateTime ? _setup.formatTime(item.updateTime) : "(旧版本,无记录)"))])]), _c("div", {
6269
+ staticClass: "response-panel__tab",
6270
+ class: {
6271
+ "response-panel__tab--selected": item.filename === _setup.currentFile.filename
6272
+ },
6273
+ on: {
6274
+ click: function ($event) {
6275
+ return _setup.selectFile(item);
6276
+ }
6277
+ }
6278
+ }, [_c("span", {
5936
6279
  staticClass: "response-panel__tab-text"
5937
- }, [_vm._v(_vm._s(item.filename))])]) : _c("span", [_vm._v(_vm._s(item.filename))]), item.type === "history" ? _c("i", {
6280
+ }, [_vm._v(_vm._s(item.filename))]), _c("div", {
6281
+ staticClass: "response-panel__tab-actions"
6282
+ }, [_c("i", {
5938
6283
  staticClass: "el-icon-edit response-panel__edit-btn",
5939
6284
  on: {
5940
6285
  click: function ($event) {
@@ -5942,7 +6287,7 @@ var render = function render() {
5942
6287
  return _setup.onEditVersion(item);
5943
6288
  }
5944
6289
  }
5945
- }) : _vm._e(), item.type === "history" ? _c("i", {
6290
+ }), _c("i", {
5946
6291
  staticClass: "el-icon-delete response-panel__delete-btn",
5947
6292
  on: {
5948
6293
  click: function ($event) {
@@ -5950,29 +6295,37 @@ var render = function render() {
5950
6295
  return _setup.deleteVersionHandler(item, index);
5951
6296
  }
5952
6297
  }
5953
- }) : _vm._e()], 1);
5954
- }), 0) : _vm._e(), _setup.mockMode === "match" ? _c("div", {
5955
- ref: "tabsAreaRef",
5956
- staticClass: "response-panel__tabs-area",
5957
- on: {
5958
- scroll: _setup.updateTabsFade
5959
- }
5960
- }, _vm._l(_setup.matchRuleList, function (item, index) {
5961
- return _c("div", {
5962
- key: item.id,
6298
+ })])])]) : item.type !== "source" ? _c("div", {
6299
+ key: `${item.type}-${item.filename}`,
5963
6300
  staticClass: "response-panel__tab",
5964
6301
  class: {
5965
- "response-panel__tab--selected": _setup.currentMatchRule && item.id === _setup.currentMatchRule.id
6302
+ "response-panel__tab--selected": item.filename === _setup.currentFile.filename
5966
6303
  },
5967
6304
  on: {
5968
6305
  click: function ($event) {
5969
- return _setup.selectMatchRule(item);
6306
+ return _setup.selectFile(item);
5970
6307
  }
5971
6308
  }
5972
- }, [_c("el-tooltip", {
6309
+ }, [_c("span", [_vm._v(_vm._s(item.filename))])]) : _vm._e()];
6310
+ })], 2) : _vm._e(), _setup.mockMode === "match" ? _c("div", {
6311
+ directives: [{
6312
+ name: "show",
6313
+ rawName: "v-show",
6314
+ value: !_setup.headerCollapsed,
6315
+ expression: "!headerCollapsed"
6316
+ }],
6317
+ ref: "tabsAreaRef",
6318
+ staticClass: "response-panel__tabs-area",
6319
+ on: {
6320
+ scroll: _setup.updateTabsFade
6321
+ }
6322
+ }, _vm._l(_setup.matchRuleList, function (item, index) {
6323
+ return _c("el-tooltip", {
6324
+ key: item.id,
5973
6325
  attrs: {
5974
6326
  effect: "dark",
5975
- placement: "top"
6327
+ placement: "top",
6328
+ "open-delay": 1000
5976
6329
  }
5977
6330
  }, [_c("div", {
5978
6331
  staticStyle: {
@@ -5982,9 +6335,28 @@ var render = function render() {
5982
6335
  slot: "content"
5983
6336
  },
5984
6337
  slot: "content"
5985
- }, [_c("div", [_c("strong", [_vm._v("规则名称:")]), _vm._v(_vm._s(item.name))]), _c("div", [_c("strong", [_vm._v("描述:")]), _vm._v(_vm._s(item.description || "(无)"))]), _c("div", [_c("strong", [_vm._v("条件数:")]), _vm._v(_vm._s(item.conditions ? item.conditions.length : 0))])]), _c("span", {
6338
+ }, [_c("div", [_c("strong", [_vm._v("规则名称:")]), _vm._v(_vm._s(item.name))]), _c("div", [_c("strong", [_vm._v("描述:")]), _vm._v(_vm._s(item.description || "(无)"))]), _c("div", [_c("strong", [_vm._v("条件数:")]), _vm._v(_vm._s(item.conditions ? item.conditions.length : 0))]), _setup.crossRuleConflicts[item.id] ? _c("div", {
6339
+ staticStyle: {
6340
+ "margin-top": "4px",
6341
+ color: "#f59e0b"
6342
+ }
6343
+ }, [_c("strong", [_vm._v("⚠ 冲突:")]), _vm._v(_vm._s(_setup.crossRuleConflicts[item.id]) + " ")]) : _vm._e()]), _c("div", {
6344
+ staticClass: "response-panel__tab",
6345
+ class: {
6346
+ "response-panel__tab--selected": _setup.currentMatchRule && item.id === _setup.currentMatchRule.id
6347
+ },
6348
+ on: {
6349
+ click: function ($event) {
6350
+ return _setup.selectMatchRule(item);
6351
+ }
6352
+ }
6353
+ }, [_setup.crossRuleConflicts[item.id] ? _c("i", {
6354
+ staticClass: "el-icon-warning response-panel__rule-conflict-badge"
6355
+ }) : _vm._e(), _c("span", {
5986
6356
  staticClass: "response-panel__tab-text"
5987
- }, [_vm._v(_vm._s(item.name))])]), _c("i", {
6357
+ }, [_vm._v(_vm._s(item.name))]), _c("div", {
6358
+ staticClass: "response-panel__tab-actions"
6359
+ }, [_c("i", {
5988
6360
  staticClass: "el-icon-edit response-panel__edit-btn",
5989
6361
  on: {
5990
6362
  click: function ($event) {
@@ -6000,10 +6372,22 @@ var render = function render() {
6000
6372
  return _setup.deleteMatchRuleHandler(item, index);
6001
6373
  }
6002
6374
  }
6003
- })], 1);
6004
- }), 0) : _vm._e()])]), _c("div", {
6375
+ })])])]);
6376
+ }), 1) : _vm._e(), (_setup.mockMode === "version" ? _setup.historyVersionCount > 0 : _setup.matchRuleList.length > 0) ? _c("div", {
6377
+ staticClass: "response-panel__collapse-btn",
6378
+ class: {
6379
+ "response-panel__collapse-btn--collapsed": _setup.headerCollapsed
6380
+ },
6381
+ on: {
6382
+ click: function ($event) {
6383
+ _setup.headerCollapsed = !_setup.headerCollapsed;
6384
+ }
6385
+ }
6386
+ }, [_c("i", {
6387
+ class: _setup.headerCollapsed ? "el-icon-arrow-down" : "el-icon-arrow-up"
6388
+ })]) : _vm._e()])]), _c("div", {
6005
6389
  staticClass: "response-panel__content"
6006
- }, [_setup.mockMode === "match" && _setup.currentMatchRule ? _c(_setup.MatchConditionEditor, {
6390
+ }, [_setup.mockMode === "match" && _setup.currentMatchRule && !_setup.headerCollapsed ? _c(_setup.MatchConditionEditor, {
6007
6391
  attrs: {
6008
6392
  conditions: _setup.currentMatchRule.conditions || [],
6009
6393
  "captured-query": _setup.capturedQuery,
@@ -6015,34 +6399,6 @@ var render = function render() {
6015
6399
  }) : _vm._e(), _c("div", {
6016
6400
  staticClass: "response-panel__toolbar"
6017
6401
  }, [_c("el-tooltip", {
6018
- attrs: {
6019
- content: _setup.isSourceReadonly ? "原始响应不可格式化" : "格式化 JSON",
6020
- placement: "bottom"
6021
- }
6022
- }, [_c("el-button", {
6023
- attrs: {
6024
- size: "mini",
6025
- icon: "el-icon-brush",
6026
- disabled: !_setup.activeEditorContent || _setup.isSourceReadonly
6027
- },
6028
- on: {
6029
- click: _setup.handleFormat
6030
- }
6031
- }, [_vm._v(" 格式化 ")])], 1), _c("el-tooltip", {
6032
- attrs: {
6033
- content: _setup.isSourceReadonly ? "原始响应不可修改" : "验证 JSON 语法",
6034
- placement: "bottom"
6035
- }
6036
- }, [_c("el-button", {
6037
- attrs: {
6038
- size: "mini",
6039
- icon: "el-icon-check",
6040
- disabled: !_setup.activeEditorContent || _setup.isSourceReadonly
6041
- },
6042
- on: {
6043
- click: _setup.handleValidate
6044
- }
6045
- }, [_vm._v(" 验证 ")])], 1), _c("el-tooltip", {
6046
6402
  attrs: {
6047
6403
  content: "展开所有节点",
6048
6404
  placement: "bottom"
@@ -6103,22 +6459,9 @@ var render = function render() {
6103
6459
  staticClass: "response-panel__readonly-badge"
6104
6460
  }, [_c("i", {
6105
6461
  staticClass: "el-icon-lock"
6106
- }), _c("span", [_vm._v("只读模式")])]) : _vm._e(), (_setup.mockMode === "match" ? _setup.currentMatchRule && _setup.matchRuleChanged : !_setup.isSourceReadonly && _setup.currentFile.effect && (_setup.currentFile.type === "history" || _vm.api.mock)) ? _c("div", {
6107
- staticClass: "response-panel__save-inline"
6108
- }, [_setup.hasJsonError ? _c("span", {
6109
- staticClass: "response-panel__error-text-inline"
6110
- }, [_vm._v("JSON 格式错误")]) : _vm._e(), _c("el-button", {
6111
- attrs: {
6112
- size: "mini",
6113
- type: "primary",
6114
- disabled: _setup.hasJsonError
6115
- },
6116
- on: {
6117
- click: _setup.handleUpdate
6118
- }
6119
- }, [_vm._v(" 保存 ")]), _c("span", {
6120
- staticClass: "response-panel__effect-dot"
6121
- })], 1) : _vm._e()], 1), _setup.mockMode === "version" ? _c(_setup.Editor, {
6462
+ }), _c("span", [_vm._v("只读模式")])]) : _vm._e()], 1), _c("div", {
6463
+ staticClass: "response-panel__editor-wrap"
6464
+ }, [_setup.mockMode === "version" ? _c(_setup.Editor, {
6122
6465
  key: `editor-${_setup.currentFile.filename}-${_setup.isSourceReadonly}`,
6123
6466
  ref: "editRef",
6124
6467
  attrs: {
@@ -6172,12 +6515,28 @@ var render = function render() {
6172
6515
  },
6173
6516
  expression: "currentMatchRule.content"
6174
6517
  }
6175
- }) : _vm._e()], 1), _c("el-dialog", {
6518
+ }) : _vm._e(), (_setup.mockMode === "match" ? _setup.currentMatchRule && _setup.matchRuleChanged : !_setup.isSourceReadonly && _setup.currentFile.effect && (_setup.currentFile.type === "history" || _vm.api.mock)) ? _c("div", {
6519
+ staticClass: "response-panel__save"
6520
+ }, [_setup.hasJsonError ? _c("span", {
6521
+ staticClass: "response-panel__error-text"
6522
+ }, [_vm._v("JSON 格式错误,无法保存")]) : _c("span", {
6523
+ staticClass: "response-panel__effect-icon"
6524
+ }), _c("el-button", {
6525
+ attrs: {
6526
+ size: "small",
6527
+ type: "primary",
6528
+ disabled: _setup.hasJsonError
6529
+ },
6530
+ on: {
6531
+ click: _setup.handleUpdate
6532
+ }
6533
+ }, [_vm._v(" 保存 ")])], 1) : _vm._e()], 1)], 1), _c("el-dialog", {
6176
6534
  attrs: {
6177
6535
  visible: _setup.versionModal.visible,
6178
6536
  width: "min(500px, 92vw)",
6179
6537
  title: _setup.versionModal.status === "create" ? "创建新版本" : "编辑版本信息",
6180
6538
  "close-on-click-modal": false,
6539
+ "append-to-body": true,
6181
6540
  "custom-class": "version-dialog"
6182
6541
  },
6183
6542
  on: {
@@ -6291,6 +6650,7 @@ var render = function render() {
6291
6650
  width: "min(500px, 92vw)",
6292
6651
  title: _setup.matchRuleModal.status === "create" ? "新增匹配规则" : "编辑规则信息",
6293
6652
  "close-on-click-modal": false,
6653
+ "append-to-body": true,
6294
6654
  "custom-class": "version-dialog"
6295
6655
  },
6296
6656
  on: {
@@ -6385,6 +6745,7 @@ var render = function render() {
6385
6745
  fullscreen: "",
6386
6746
  title: `${_setup.isSourceReadonly ? "全屏查看" : "全屏编辑"} - ${_setup.mockMode === "match" ? _setup.currentMatchRule && _setup.currentMatchRule.name || "" : _setup.currentFile.filename || ""}`,
6387
6747
  "close-on-click-modal": false,
6748
+ "append-to-body": true,
6388
6749
  "custom-class": "fullscreen-editor-dialog"
6389
6750
  },
6390
6751
  on: {
@@ -6399,33 +6760,6 @@ var render = function render() {
6399
6760
  }, [_c("div", {
6400
6761
  staticClass: "fullscreen-editor-toolbar"
6401
6762
  }, [_c("el-tooltip", {
6402
- attrs: {
6403
- content: _setup.isSourceReadonly ? "原始响应不可格式化" : "格式化 JSON",
6404
- placement: "bottom"
6405
- }
6406
- }, [_c("el-button", {
6407
- attrs: {
6408
- size: "small",
6409
- icon: "el-icon-brush",
6410
- disabled: _setup.isSourceReadonly
6411
- },
6412
- on: {
6413
- click: _setup.handleFullScreenFormat
6414
- }
6415
- }, [_vm._v(" 格式化 ")])], 1), _c("el-tooltip", {
6416
- attrs: {
6417
- content: "验证 JSON 语法",
6418
- placement: "bottom"
6419
- }
6420
- }, [_c("el-button", {
6421
- attrs: {
6422
- size: "small",
6423
- icon: "el-icon-check"
6424
- },
6425
- on: {
6426
- click: _setup.handleFullScreenValidate
6427
- }
6428
- }, [_vm._v(" 验证 ")])], 1), _c("el-tooltip", {
6429
6763
  attrs: {
6430
6764
  content: "展开所有节点",
6431
6765
  placement: "bottom"
@@ -6941,8 +7275,9 @@ var render = function render() {
6941
7275
  }, [_c("span", {
6942
7276
  staticClass: "plugin-header__name"
6943
7277
  }, [_vm._v("MockBubu")]), _c("el-switch", {
7278
+ staticClass: "plugin-header__switch",
6944
7279
  attrs: {
6945
- width: 36
7280
+ width: 26
6946
7281
  },
6947
7282
  on: {
6948
7283
  change: _setup.handlePluginEnabledToggle
@@ -7131,16 +7466,39 @@ var render = function render() {
7131
7466
  staticClass: "action-panel__row"
7132
7467
  }, [_c("div", {
7133
7468
  staticClass: "action-panel__search"
7134
- }, [_c(_setup.GroupSelector, {
7135
- ref: "groupSelectorRef",
7469
+ }, [_setup.pluginMode !== null ? [_c("div", {
7470
+ staticClass: "capture-status",
7471
+ class: {
7472
+ "is-capturing": _setup.pluginMode === "default"
7473
+ }
7474
+ }, [_c("span", {
7475
+ staticClass: "capture-status__dot"
7476
+ }), _c("span", {
7477
+ staticClass: "capture-status__text"
7478
+ }, [_vm._v(" " + _vm._s(_setup.pluginMode === "default" ? "捕获请求中" : "停止捕获请求") + " ")]), _c("el-switch", {
7479
+ staticClass: "capture-status__switch",
7480
+ attrs: {
7481
+ value: _setup.pluginMode === "default",
7482
+ width: 26,
7483
+ "active-color": "#67c23a",
7484
+ "inactive-color": "#c0c4cc"
7485
+ },
7136
7486
  on: {
7137
- refresh: _setup.handleGroupRefresh
7487
+ change: _setup.handleCaptureToggle
7138
7488
  }
7139
- }), _c("el-divider", {
7489
+ }), _c("el-tooltip", {
7490
+ attrs: {
7491
+ content: "停止后不再捕获新的请求,但仍可以命中请求返回开启 Mock 的数据",
7492
+ placement: "bottom",
7493
+ "open-delay": _setup.TOOLTIP_DELAY
7494
+ }
7495
+ }, [_c("i", {
7496
+ staticClass: "el-icon-question capture-status__help"
7497
+ })])], 1), _c("el-divider", {
7140
7498
  attrs: {
7141
7499
  direction: "vertical"
7142
7500
  }
7143
- }), _c("el-input", {
7501
+ })] : _vm._e(), _c("el-input", {
7144
7502
  staticClass: "action-panel__input",
7145
7503
  attrs: {
7146
7504
  clearable: "",
@@ -7200,131 +7558,61 @@ var render = function render() {
7200
7558
  staticClass: "action-panel__result-count"
7201
7559
  }, [_c("span", {
7202
7560
  staticClass: "action-panel__result-text"
7203
- }, [_vm._v("共 " + _vm._s(_vm.totalCount) + " 条")])])], 1), _c("div", {
7204
- staticClass: "action-panel__actions"
7205
- }, [_vm.selectedRows.length > 0 ? [_c("el-tag", {
7561
+ }, [_vm._v("共 " + _vm._s(_vm.totalCount) + " 条")])]), _vm.selectedRows.length > 0 ? [_c("el-divider", {
7562
+ attrs: {
7563
+ direction: "vertical"
7564
+ }
7565
+ }), _c("el-tag", {
7206
7566
  staticClass: "action-panel__selection-count",
7207
7567
  attrs: {
7208
7568
  type: "info",
7209
7569
  size: "small"
7210
7570
  }
7211
- }, [_vm._v(" 已选 " + _vm._s(_vm.selectedRows.length) + " 项 ")]), _c("el-divider", {
7212
- attrs: {
7213
- direction: "vertical"
7214
- }
7215
- }), _c("el-button", {
7571
+ }, [_vm._v(" 已选 " + _vm._s(_vm.selectedRows.length) + " 项 ")]), _c("el-button", {
7216
7572
  attrs: {
7217
7573
  size: "mini",
7218
7574
  type: "primary",
7219
7575
  icon: "el-icon-folder-checked"
7220
7576
  },
7221
7577
  on: {
7222
- click: _setup.handleBatchSave
7223
- }
7224
- }, [_vm._v(" 保存选中 ")]), _c("el-button", {
7225
- attrs: {
7226
- size: "mini",
7227
- type: "success",
7228
- icon: "el-icon-check"
7229
- },
7230
- on: {
7231
- click: function ($event) {
7232
- return _setup.handleBatchUpdateMock(true);
7233
- }
7234
- }
7235
- }, [_vm._v(" 开启 Mock ")]), _c("el-button", {
7236
- attrs: {
7237
- size: "mini",
7238
- icon: "el-icon-close"
7239
- },
7240
- on: {
7241
- click: function ($event) {
7242
- return _setup.handleBatchUpdateMock(false);
7243
- }
7244
- }
7245
- }, [_vm._v(" 关闭 Mock ")]), _c("el-button", {
7246
- attrs: {
7247
- size: "mini",
7248
- type: "danger",
7249
- icon: "el-icon-delete"
7250
- },
7251
- on: {
7252
- click: _setup.handleBatchDeleteSelected
7253
- }
7254
- }, [_vm._v(" 删除选中 ")])] : void 0], 2)]) : _vm._e(), _vm.showActionRow ? _c("div", {
7255
- staticClass: "action-panel__rules-row"
7256
- }, [_setup.pluginMode !== null ? _c("div", {
7257
- staticClass: "plugin-mode-wrapper"
7258
- }, [_c("span", {
7259
- staticClass: "plugin-mode-label"
7260
- }, [_vm._v("工作模式:")]), _c("el-radio-group", {
7261
- attrs: {
7262
- size: "small"
7263
- },
7264
- on: {
7265
- change: _setup.handleModeChange
7266
- },
7267
- model: {
7268
- value: _setup.pluginMode,
7269
- callback: function ($$v) {
7270
- _setup.pluginMode = $$v;
7271
- },
7272
- expression: "pluginMode"
7273
- }
7274
- }, [_c("el-radio-button", {
7275
- attrs: {
7276
- label: "default"
7277
- }
7278
- }, [_c("el-tooltip", {
7279
- attrs: {
7280
- content: "全功能模式:捕获新请求 + 返回Mock数据",
7281
- placement: "top"
7282
- }
7283
- }, [_c("span", [_c("i", {
7284
- staticClass: "el-icon-upload2"
7285
- }), _vm._v(" 默认模式 ")])])], 1), _c("el-radio-button", {
7286
- attrs: {
7287
- label: "mock-only"
7288
- }
7289
- }, [_c("el-tooltip", {
7290
- attrs: {
7291
- content: "不捕获新请求,仅返回已开启Mock的数据",
7292
- placement: "top"
7578
+ click: _setup.handleBatchSave
7293
7579
  }
7294
- }, [_c("span", [_c("i", {
7295
- staticClass: "el-icon-download"
7296
- }), _vm._v(" 仅Mock模式 ")])])], 1)], 1), _c("el-divider", {
7580
+ }, [_vm._v(" 保存选中 ")]), _c("el-button", {
7297
7581
  attrs: {
7298
- direction: "vertical"
7582
+ size: "mini",
7583
+ type: "success",
7584
+ icon: "el-icon-check"
7585
+ },
7586
+ on: {
7587
+ click: function ($event) {
7588
+ return _setup.handleBatchUpdateMock(true);
7589
+ }
7299
7590
  }
7300
- })], 1) : _vm._e(), _c("el-tooltip", {
7591
+ }, [_vm._v(" 开启 Mock ")]), _c("el-button", {
7301
7592
  attrs: {
7302
- placement: "bottom"
7593
+ size: "mini",
7594
+ icon: "el-icon-close"
7595
+ },
7596
+ on: {
7597
+ click: function ($event) {
7598
+ return _setup.handleBatchUpdateMock(false);
7599
+ }
7303
7600
  }
7304
- }, [_c("div", {
7305
- staticClass: "rules-help-content",
7601
+ }, [_vm._v(" 关闭 Mock ")]), _c("el-button", {
7306
7602
  attrs: {
7307
- slot: "content"
7308
- },
7309
- slot: "content"
7310
- }, [_c("pre", [_vm._v(" 插件规则配置说明:\n 在whistle规则板块配置以下格式并开启生效\n pattern mockbubu://\n 规则匹配文档见:"), _c("a", {
7311
- staticStyle: {
7312
- color: "green"
7603
+ size: "mini",
7604
+ type: "danger",
7605
+ icon: "el-icon-delete"
7313
7606
  },
7314
- attrs: {
7315
- href: "https://wproxy.org/docs/rules/pattern.html",
7316
- target: "_blank",
7317
- rel: "noopener noreferrer"
7607
+ on: {
7608
+ click: _setup.handleBatchDeleteSelected
7318
7609
  }
7319
- }, [_vm._v("whistle文档")]), _vm._v("\n ")])]), _c("div", {
7320
- staticClass: "active-rules-text"
7321
- }, [_c("span", {
7322
- staticClass: "rules-label"
7323
- }, [_vm._v("? 当前生效规则:")]), _setup.activeRulesList.length > 0 ? _c("span", {
7324
- staticClass: "rules-value"
7325
- }, [_vm._v(" " + _vm._s(_setup.activeRulesList.join(", ")) + " ")]) : _c("span", {
7326
- staticClass: "rules-empty"
7327
- }, [_vm._v("暂无")])])])], 1) : _vm._e(), _c("input", {
7610
+ }, [_vm._v(" 删除选中 ")])] : _vm._e()], 2), _c(_setup.GroupSelector, {
7611
+ ref: "groupSelectorRef",
7612
+ on: {
7613
+ refresh: _setup.handleGroupRefresh
7614
+ }
7615
+ })], 1) : _vm._e(), _c("input", {
7328
7616
  ref: "archiveInput",
7329
7617
  staticStyle: {
7330
7618
  display: "none"
@@ -7962,7 +8250,7 @@ __webpack_require__.r(__webpack_exports__);
7962
8250
 
7963
8251
  var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
7964
8252
  // Module
7965
- ___CSS_LOADER_EXPORT___.push([module.id, ".mock-container[data-v-d97322d2] {\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n.mock-container__content[data-v-d97322d2] {\n position: relative;\n padding-bottom: 16px;\n background-image: linear-gradient(0deg, var(--mb-accent-blue) 0, var(--mb-accent-blue) 16px, transparent 100%);\n display: flex;\n flex: 1;\n border: 1px solid var(--mb-border-color-light);\n border-left: none;\n overflow: hidden;\n}\n.mock-container__toolbar[data-v-d97322d2] {\n width: 48px;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-top: 16px;\n gap: 8px;\n background: var(--mb-bg-base);\n border-right: 1px solid var(--mb-border-color-deep);\n z-index: 10;\n overflow: visible;\n}\n.mock-container__list-badge[data-v-d97322d2] {\n line-height: 1;\n overflow: visible;\n}\n.mock-container__detail-wrapper[data-v-d97322d2] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.mock-container__current-url[data-v-d97322d2] {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 6px;\n padding: 5px 10px 5px 12px;\n background: var(--mb-bg-mantle);\n border-bottom: 1px solid var(--mb-border-color);\n min-height: 30px;\n flex-shrink: 0;\n}\n.mock-container__current-url-copy[data-v-d97322d2] {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n cursor: pointer;\n color: var(--mb-text-muted);\n transition: color 0.15s, background 0.15s;\n}\n.mock-container__current-url-copy[data-v-d97322d2]:hover {\n color: var(--mb-accent-blue);\n background: var(--mb-bg-surface);\n}\n.mock-container__current-url-copy .el-icon-link[data-v-d97322d2] {\n font-size: 13px;\n}\n.mock-container__current-url-scroll[data-v-d97322d2] {\n flex: 1;\n min-width: 0;\n overflow-x: auto;\n overflow-y: hidden;\n text-align: left;\n}\n.mock-container__current-url-scroll[data-v-d97322d2]::-webkit-scrollbar {\n height: 3px;\n}\n.mock-container__current-url-scroll[data-v-d97322d2]::-webkit-scrollbar-track {\n background: transparent;\n}\n.mock-container__current-url-scroll[data-v-d97322d2]::-webkit-scrollbar-thumb {\n background: var(--mb-border-color-deep);\n border-radius: 2px;\n}\n.mock-container__current-url-text[data-v-d97322d2] {\n display: inline-block;\n font-size: 12px;\n color: var(--mb-text-secondary);\n white-space: nowrap;\n font-family: 'SF Mono', 'Consolas', monospace;\n line-height: 20px;\n}\n.mock-container__list-overlay[data-v-d97322d2] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 9;\n}\n.mock-container__backdrop[data-v-d97322d2] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.3);\n}\n.mock-container__list-panel[data-v-d97322d2] {\n position: absolute;\n top: 0;\n left: 48px;\n bottom: 0;\n width: 85%;\n max-width: calc(100% - 48px);\n background: var(--mb-bg-base);\n display: flex;\n flex-direction: column;\n box-shadow: 4px 0 12px rgba(0, 0, 0, 0.15);\n overflow: hidden;\n z-index: 1;\n}\n.mock-container__list-panel-body[data-v-d97322d2] {\n flex: 1;\n overflow: hidden;\n display: flex;\n}\n.mock-container__list-panel-body .request-list[data-v-d97322d2] {\n width: 100%;\n}\n.mock-container__disabled-overlay[data-v-d97322d2] {\n position: absolute;\n inset: 0;\n z-index: 20;\n background: var(--mb-disabled-overlay);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.mock-container__disabled-card[data-v-d97322d2] {\n background: var(--mb-disabled-card-bg);\n border-radius: 16px;\n padding: 40px 48px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n min-width: 260px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);\n}\n.mock-container__disabled-icon[data-v-d97322d2] {\n font-size: 36px;\n color: #888;\n line-height: 1;\n margin-bottom: 4px;\n}\n.mock-container__disabled-title[data-v-d97322d2] {\n font-size: 18px;\n font-weight: 600;\n color: #fff;\n}\n.mock-container__disabled-desc[data-v-d97322d2] {\n font-size: 13px;\n color: #aaa;\n text-align: center;\n}\n.mock-container__disabled-btn[data-v-d97322d2] {\n margin-top: 8px;\n border-radius: 8px;\n padding: 10px 32px;\n font-size: 15px;\n font-weight: 500;\n}\n", ""]);
8253
+ ___CSS_LOADER_EXPORT___.push([module.id, ".mock-container[data-v-d97322d2] {\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n}\n.mock-container__content[data-v-d97322d2] {\n position: relative;\n padding-bottom: 16px;\n background-image: linear-gradient(0deg, var(--mb-accent-blue) 0, var(--mb-accent-blue) 16px, transparent 100%);\n display: flex;\n flex: 1;\n border: 1px solid var(--mb-border-color);\n border-left: none;\n overflow: hidden;\n}\n.mock-container__toolbar[data-v-d97322d2] {\n width: 48px;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-top: 16px;\n gap: 8px;\n background: var(--mb-bg-base);\n border-right: 1px solid var(--mb-border-color-deep);\n z-index: 10;\n overflow: visible;\n}\n.mock-container__list-badge[data-v-d97322d2] {\n line-height: 1;\n overflow: visible;\n}\n.mock-container__detail-wrapper[data-v-d97322d2] {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n isolation: isolate;\n}\n.mock-container__current-url[data-v-d97322d2] {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 6px;\n padding: 5px 10px 5px 12px;\n background: var(--mb-bg-mantle);\n border-bottom: 1px solid var(--mb-border-color);\n min-height: 30px;\n flex-shrink: 0;\n}\n.mock-container__current-url-copy[data-v-d97322d2] {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n border-radius: 4px;\n cursor: pointer;\n color: var(--mb-text-muted);\n transition: color 0.15s, background 0.15s;\n}\n.mock-container__current-url-copy[data-v-d97322d2]:hover {\n color: var(--mb-accent-blue);\n background: var(--mb-bg-surface);\n}\n.mock-container__current-url-copy .el-icon-link[data-v-d97322d2] {\n font-size: 13px;\n}\n.mock-container__current-url-scroll[data-v-d97322d2] {\n flex: 1;\n min-width: 0;\n overflow-x: auto;\n overflow-y: hidden;\n text-align: left;\n}\n.mock-container__current-url-scroll[data-v-d97322d2]::-webkit-scrollbar {\n height: 3px;\n}\n.mock-container__current-url-scroll[data-v-d97322d2]::-webkit-scrollbar-track {\n background: transparent;\n}\n.mock-container__current-url-scroll[data-v-d97322d2]::-webkit-scrollbar-thumb {\n background: var(--mb-border-color-deep);\n border-radius: 2px;\n}\n.mock-container__current-url-text[data-v-d97322d2] {\n display: inline-block;\n font-size: 12px;\n color: var(--mb-text-secondary);\n white-space: nowrap;\n font-family: 'SF Mono', 'Consolas', monospace;\n line-height: 20px;\n}\n.mock-container__list-overlay[data-v-d97322d2] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 9;\n}\n.mock-container__backdrop[data-v-d97322d2] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.3);\n}\n.mock-container__list-panel[data-v-d97322d2] {\n position: absolute;\n top: 0;\n left: 48px;\n bottom: 0;\n width: 85%;\n max-width: calc(100% - 48px);\n background: var(--mb-bg-base);\n display: flex;\n flex-direction: column;\n box-shadow: 4px 0 12px rgba(0, 0, 0, 0.15);\n overflow: hidden;\n z-index: 1;\n}\n.mock-container__list-panel-body[data-v-d97322d2] {\n flex: 1;\n overflow: hidden;\n display: flex;\n}\n.mock-container__list-panel-body .request-list[data-v-d97322d2] {\n width: 100%;\n}\n.mock-container__disabled-overlay[data-v-d97322d2] {\n position: absolute;\n inset: 0;\n z-index: 20;\n background: var(--mb-disabled-overlay);\n backdrop-filter: blur(6px);\n -webkit-backdrop-filter: blur(6px);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.mock-container__disabled-card[data-v-d97322d2] {\n background: #fff;\n border-radius: 16px;\n padding: 36px 48px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n min-width: 280px;\n box-shadow: 0 4px 24px rgba(0, 0, 0, 0.12);\n}\n.mock-container__disabled-icon[data-v-d97322d2] {\n width: 52px;\n height: 52px;\n border-radius: 50%;\n background: #e8e8e8;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 5px;\n margin-bottom: 4px;\n flex-shrink: 0;\n}\n.mock-container__disabled-icon[data-v-d97322d2]::before,\n.mock-container__disabled-icon[data-v-d97322d2]::after {\n content: '';\n width: 5px;\n height: 18px;\n border-radius: 3px;\n background: #999;\n}\n.mock-container__disabled-title[data-v-d97322d2] {\n font-size: 17px;\n font-weight: 600;\n color: #1a1a1a;\n}\n.mock-container__disabled-desc[data-v-d97322d2] {\n font-size: 13px;\n color: #999;\n text-align: center;\n line-height: 1.5;\n}\n.mock-container__disabled-btn[data-v-d97322d2] {\n margin-top: 8px;\n border-radius: 10px !important;\n padding: 10px 40px;\n font-size: 15px;\n font-weight: 500;\n}\n", ""]);
7966
8254
  // Exports
7967
8255
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
7968
8256
 
@@ -8034,7 +8322,7 @@ __webpack_require__.r(__webpack_exports__);
8034
8322
 
8035
8323
  var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
8036
8324
  // Module
8037
- ___CSS_LOADER_EXPORT___.push([module.id, ".match-condition-editor[data-v-af0bed2e] {\n padding: 8px 12px;\n background-color: var(--mb-bg-surface);\n border-bottom: 1px solid var(--mb-border-color);\n}\n.match-condition-editor__header[data-v-af0bed2e] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n.match-condition-editor__title[data-v-af0bed2e] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mb-text-primary);\n}\n.match-condition-editor__hint[data-v-af0bed2e] {\n font-size: 11px;\n color: var(--mb-text-muted);\n}\n.match-condition-editor__list[data-v-af0bed2e] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n margin-bottom: 8px;\n}\n.match-condition-editor__row[data-v-af0bed2e] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.match-condition-editor__source-select[data-v-af0bed2e] {\n width: 90px;\n flex-shrink: 0;\n}\n.match-condition-editor__key-input[data-v-af0bed2e] {\n flex: 1;\n min-width: 80px;\n}\n.match-condition-editor__operator[data-v-af0bed2e] {\n font-size: 13px;\n color: var(--mb-text-muted);\n flex-shrink: 0;\n padding: 0 2px;\n}\n.match-condition-editor__value-input[data-v-af0bed2e] {\n flex: 1;\n min-width: 80px;\n}\n.match-condition-editor__delete-btn[data-v-af0bed2e] {\n padding: 0 4px;\n color: var(--mb-text-placeholder);\n flex-shrink: 0;\n}\n.match-condition-editor__delete-btn[data-v-af0bed2e]:hover {\n color: var(--mb-accent-red);\n}\n.match-condition-editor__empty[data-v-af0bed2e] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 0;\n font-size: 12px;\n color: var(--mb-text-muted);\n font-style: italic;\n}\n.match-condition-editor__actions[data-v-af0bed2e] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n}\n.match-condition-editor__actions .el-button[data-v-af0bed2e] {\n margin: 0;\n}\n.match-condition-editor__tips[data-v-af0bed2e] {\n font-size: 11px;\n color: var(--mb-text-placeholder);\n}\n.match-condition-editor__captured-panel[data-v-af0bed2e] {\n max-height: 280px;\n overflow-y: auto;\n}\n.match-condition-editor__param-group-title[data-v-af0bed2e] {\n font-size: 11px;\n color: var(--mb-text-muted);\n padding: 4px 0;\n}\n.match-condition-editor__param-item[data-v-af0bed2e] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 6px;\n cursor: pointer;\n border-radius: 4px;\n font-size: 12px;\n}\n.match-condition-editor__param-item[data-v-af0bed2e]:hover {\n background-color: var(--mb-accent-blue-bg);\n}\n.match-condition-editor__param-item.is-checked[data-v-af0bed2e] {\n background-color: var(--mb-accent-blue-bg);\n}\n.match-condition-editor__param-item .el-checkbox[data-v-af0bed2e] {\n pointer-events: none;\n}\n.match-condition-editor__param-key[data-v-af0bed2e] {\n color: var(--mb-accent-blue);\n font-weight: 500;\n}\n.match-condition-editor__param-sep[data-v-af0bed2e] {\n color: var(--mb-text-muted);\n}\n.match-condition-editor__param-value[data-v-af0bed2e] {\n color: var(--mb-accent-green);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.match-condition-editor__no-params[data-v-af0bed2e] {\n padding: 12px;\n text-align: center;\n font-size: 12px;\n color: var(--mb-text-muted);\n}\n", ""]);
8325
+ ___CSS_LOADER_EXPORT___.push([module.id, ".match-condition-editor[data-v-af0bed2e] {\n padding: 8px 12px;\n background-color: var(--mb-bg-surface);\n border-bottom: 1px solid var(--mb-border-color);\n}\n.match-condition-editor__header[data-v-af0bed2e] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n.match-condition-editor__title[data-v-af0bed2e] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mb-text-primary);\n}\n.match-condition-editor__hint[data-v-af0bed2e] {\n font-size: 11px;\n color: var(--mb-text-muted);\n}\n.match-condition-editor__list[data-v-af0bed2e] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n margin-bottom: 8px;\n}\n.match-condition-editor__row[data-v-af0bed2e] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.match-condition-editor__source-select[data-v-af0bed2e] {\n width: 80px;\n flex-shrink: 0;\n}\n.match-condition-editor__key-input[data-v-af0bed2e] {\n flex: 1.2;\n min-width: 70px;\n}\n.match-condition-editor__operator-select[data-v-af0bed2e] {\n width: 96px;\n flex-shrink: 0;\n}\n.match-condition-editor__value-input[data-v-af0bed2e] {\n flex: 1;\n min-width: 60px;\n}\n.match-condition-editor__value-input.is-regex-error[data-v-af0bed2e] .el-input__inner {\n border-color: var(--mb-accent-red);\n}\n.match-condition-editor__value-placeholder[data-v-af0bed2e] {\n display: inline-flex;\n align-items: center;\n font-size: 11px;\n color: var(--mb-text-placeholder);\n font-style: italic;\n padding-left: 4px;\n}\n.match-condition-editor__status[data-v-af0bed2e] {\n width: 18px;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.match-condition-editor__icon--error[data-v-af0bed2e] {\n color: var(--mb-accent-red);\n font-size: 14px;\n cursor: help;\n}\n.match-condition-editor__icon--muted[data-v-af0bed2e] {\n color: var(--mb-text-placeholder);\n font-size: 14px;\n cursor: help;\n}\n.match-condition-editor__icon--incomplete[data-v-af0bed2e] {\n color: #f59e0b;\n font-size: 14px;\n cursor: help;\n}\n.match-condition-editor__icon--warn[data-v-af0bed2e] {\n color: #f59e0b;\n font-size: 14px;\n cursor: help;\n}\n.match-condition-editor__delete-btn[data-v-af0bed2e] {\n padding: 0 4px;\n color: var(--mb-text-placeholder);\n flex-shrink: 0;\n}\n.match-condition-editor__delete-btn[data-v-af0bed2e]:hover {\n color: var(--mb-accent-red);\n}\n.match-condition-editor__empty[data-v-af0bed2e] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 0;\n font-size: 12px;\n color: var(--mb-text-muted);\n font-style: italic;\n}\n.match-condition-editor__empty-badge[data-v-af0bed2e] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n border-radius: 3px;\n background-color: var(--mb-accent-blue);\n color: #fff;\n font-size: 9px;\n font-style: normal;\n flex-shrink: 0;\n line-height: 1;\n}\n.match-condition-editor__actions[data-v-af0bed2e] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 6px;\n}\n.match-condition-editor__actions .el-button[data-v-af0bed2e] {\n margin: 0;\n}\n.match-condition-editor__tips[data-v-af0bed2e] {\n font-size: 11px;\n color: var(--mb-text-placeholder);\n}\n.match-condition-editor__captured-panel[data-v-af0bed2e] {\n max-height: 280px;\n overflow-y: auto;\n}\n.match-condition-editor__param-group-title[data-v-af0bed2e] {\n font-size: 11px;\n color: var(--mb-text-muted);\n padding: 4px 0;\n}\n.match-condition-editor__param-item[data-v-af0bed2e] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 6px;\n cursor: pointer;\n border-radius: 4px;\n font-size: 12px;\n}\n.match-condition-editor__param-item[data-v-af0bed2e]:hover {\n background-color: var(--mb-accent-blue-bg);\n}\n.match-condition-editor__param-item.is-checked[data-v-af0bed2e] {\n background-color: var(--mb-accent-blue-bg);\n}\n.match-condition-editor__param-item .el-checkbox[data-v-af0bed2e] {\n pointer-events: none;\n}\n.match-condition-editor__param-key[data-v-af0bed2e] {\n color: var(--mb-accent-blue);\n font-weight: 500;\n}\n.match-condition-editor__param-sep[data-v-af0bed2e] {\n color: var(--mb-text-muted);\n}\n.match-condition-editor__param-value[data-v-af0bed2e] {\n color: var(--mb-accent-green);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.match-condition-editor__no-params[data-v-af0bed2e] {\n padding: 12px;\n text-align: center;\n font-size: 12px;\n color: var(--mb-text-muted);\n}\n.match-condition-editor__op-symbol[data-v-af0bed2e] {\n display: inline-block;\n width: 20px;\n font-weight: 700;\n color: var(--mb-accent-blue);\n font-size: 12px;\n}\n.match-condition-editor__op-label[data-v-af0bed2e] {\n font-size: 12px;\n color: var(--mb-text-secondary);\n}\n", ""]);
8038
8326
  // Exports
8039
8327
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8040
8328
 
@@ -8058,7 +8346,55 @@ __webpack_require__.r(__webpack_exports__);
8058
8346
 
8059
8347
  var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
8060
8348
  // Module
8061
- ___CSS_LOADER_EXPORT___.push([module.id, ".request-detail[data-v-77bc97aa] {\n position: relative;\n flex: 1;\n overflow: hidden;\n border-left: 1px solid var(--mb-border-color-light);\n margin-left: -2px;\n background: var(--mb-bg-base);\n}\n.request-detail__tabs[data-v-77bc97aa] {\n box-shadow: none;\n border: none;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.request-detail__tabs[data-v-77bc97aa] .el-tabs__content {\n padding: 0;\n flex: 1;\n overflow: hidden;\n background-color: var(--mb-bg-base);\n}\n.request-detail__tabs[data-v-77bc97aa] .el-tabs__header {\n background-color: var(--mb-bg-base);\n border-bottom-color: var(--mb-border-color-light);\n}\n.request-detail__tabs[data-v-77bc97aa] .el-tabs__item {\n height: 30px;\n line-height: 30px;\n font-size: 12px;\n background-color: var(--mb-bg-base);\n color: var(--mb-text-primary);\n border-right-color: var(--mb-border-color-light);\n border-left-color: var(--mb-border-color-light);\n}\n.request-detail__tabs[data-v-77bc97aa] .el-tabs__item.is-active {\n background-color: var(--mb-selected-bg);\n}\n.request-detail__tabs[data-v-77bc97aa] .el-tabs__nav-wrap {\n margin-bottom: 0;\n}\n.request-detail__tabs[data-v-77bc97aa] .el-tabs__nav-prev,\n.request-detail__tabs[data-v-77bc97aa] .el-tabs__nav-next {\n height: 30px;\n line-height: 30px;\n}\n.request-detail__tab-pane[data-v-77bc97aa] {\n height: 100%;\n overflow-y: auto;\n background-color: var(--mb-bg-base);\n color: var(--mb-text-primary);\n}\n.request-detail__section[data-v-77bc97aa] {\n margin-bottom: 12px;\n}\n.request-detail__section[data-v-77bc97aa]:last-child {\n margin-bottom: 0;\n}\n.request-detail__section-title[data-v-77bc97aa] {\n padding: 5px 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mb-text-muted);\n background-color: var(--mb-bg-mantle);\n border-bottom: 1px solid var(--mb-border-color-light);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n.request-detail__item[data-v-77bc97aa] {\n display: flex;\n font-size: 12px;\n border-bottom: 1px solid var(--mb-border-color-light);\n background-color: var(--mb-bg-base);\n}\n.request-detail__label[data-v-77bc97aa] {\n flex: 0 0 100px;\n text-align: right;\n line-height: 1;\n padding: 4px 6px;\n font-weight: 400;\n color: var(--mb-text-secondary);\n background-color: var(--mb-selected-bg);\n}\n.request-detail__value[data-v-77bc97aa] {\n flex: 1;\n padding: 4px 6px;\n line-height: 1;\n text-align: left;\n word-break: break-all;\n color: var(--mb-text-primary);\n background-color: var(--mb-bg-base);\n}\n.request-detail__empty[data-v-77bc97aa] {\n padding: 20px;\n text-align: center;\n color: var(--mb-text-muted);\n font-size: 12px;\n}\n.request-detail__payload-editor[data-v-77bc97aa] {\n height: 200px;\n overflow: hidden;\n}\n.container[data-v-77bc97aa] {\n display: flex;\n flex: 1;\n border: 1px solid var(--mb-border-color-light);\n border-left: none;\n overflow: hidden;\n}\n.container .detail[data-v-77bc97aa] {\n position: relative;\n flex: 1;\n overflow: hidden;\n border-left: 1px solid var(--mb-border-color-light);\n margin-left: -2px;\n background: var(--mb-bg-base);\n}\n.container .detail__tabs[data-v-77bc97aa] {\n box-shadow: none;\n border: none;\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n.container .detail__tabs[data-v-77bc97aa] .el-tabs__content {\n padding: 0;\n flex: 1;\n overflow: hidden;\n background-color: var(--mb-bg-base);\n}\n.container .detail__tabs[data-v-77bc97aa] .el-tabs__header {\n background-color: var(--mb-bg-base);\n border-bottom-color: var(--mb-border-color-light);\n}\n.container .detail__tabs[data-v-77bc97aa] .el-tabs__item {\n height: 30px;\n line-height: 30px;\n font-size: 12px;\n background-color: var(--mb-bg-base);\n color: var(--mb-text-primary);\n border-right-color: var(--mb-border-color-light);\n border-left-color: var(--mb-border-color-light);\n}\n.container .detail__tabs[data-v-77bc97aa] .el-tabs__item.is-active {\n background-color: var(--mb-selected-bg);\n}\n.container .detail__tabs[data-v-77bc97aa] .el-tabs__nav-wrap {\n margin-bottom: 0;\n}\n.container .detail__tabs[data-v-77bc97aa] .el-tabs__nav-prev,\n.container .detail__tabs[data-v-77bc97aa] .el-tabs__nav-next {\n height: 30px;\n line-height: 30px;\n}\n.container .detail__tab-pane[data-v-77bc97aa] {\n height: 100%;\n overflow-y: auto;\n background-color: var(--mb-bg-base);\n color: var(--mb-text-primary);\n}\n.container .detail__section[data-v-77bc97aa] {\n margin-bottom: 12px;\n}\n.container .detail__section[data-v-77bc97aa]:last-child {\n margin-bottom: 0;\n}\n.container .detail__section-title[data-v-77bc97aa] {\n padding: 5px 8px;\n font-size: 11px;\n font-weight: 600;\n color: var(--mb-text-muted);\n background-color: var(--mb-bg-mantle);\n border-bottom: 1px solid var(--mb-border-color-light);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n.container .detail__item[data-v-77bc97aa] {\n display: flex;\n font-size: 12px;\n border-bottom: 1px solid var(--mb-border-color-light);\n background-color: var(--mb-bg-base);\n}\n.container .detail__label[data-v-77bc97aa] {\n flex: 0 0 100px;\n text-align: right;\n line-height: 1;\n padding: 4px 6px;\n font-weight: 400;\n color: var(--mb-text-secondary);\n background-color: var(--mb-selected-bg);\n}\n.container .detail__value[data-v-77bc97aa] {\n flex: 1;\n padding: 4px 6px;\n line-height: 1;\n text-align: left;\n word-break: break-all;\n color: var(--mb-text-primary);\n background-color: var(--mb-bg-base);\n}\n.container .detail__empty[data-v-77bc97aa] {\n padding: 20px;\n text-align: center;\n color: var(--mb-text-muted);\n font-size: 12px;\n}\n.container .detail__payload-editor[data-v-77bc97aa] {\n height: 200px;\n overflow: hidden;\n}\n.container .detail .el-icon-close[data-v-77bc97aa] {\n position: absolute;\n top: 0;\n cursor: pointer;\n right: 0;\n width: 28px;\n height: 28px;\n z-index: 1;\n font-size: 14px;\n line-height: 28px;\n}\n[data-v-77bc97aa] .el-table {\n border-color: var(--mb-border-color-light) !important;\n border-left: none;\n border-bottom: none;\n border-top: none;\n}\n[data-v-77bc97aa] .el-table::before,[data-v-77bc97aa] .el-table::after {\n content: none;\n}\n[data-v-77bc97aa] .el-table .el-table__cell {\n border-color: var(--mb-border-color-light) !important;\n}\n[data-v-77bc97aa] .el-table .el-table__body .el-table__cell {\n padding: 0 !important;\n}\n[data-v-77bc97aa] .el-table .cell {\n line-height: 1.4 !important;\n}\n[data-v-77bc97aa] .el-table .el-table__row:hover .name-expand-shadow {\n background: var(--mb-hover-bg);\n}\n[data-v-77bc97aa] .el-table .el-table__row:hover .name-expand-icon {\n background: var(--mb-hover-bg);\n}\n[data-v-77bc97aa] .el-table .el-button.danger {\n color: var(--mb-accent-red);\n}\n", ""]);
8349
+ ___CSS_LOADER_EXPORT___.push([module.id, ".request-detail[data-v-77bc97aa] {\n position: relative;\n flex: 1;\n overflow: hidden;\n border-left: 1px solid var(--mb-border-color-deep);\n background: var(--mb-bg-base);\n}\n.request-detail--empty[data-v-77bc97aa] {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.request-detail__placeholder[data-v-77bc97aa] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n color: var(--mb-text-muted);\n}\n.request-detail__placeholder-text[data-v-77bc97aa] {\n font-size: 13px;\n}\n", ""]);
8350
+ // Exports
8351
+ /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8352
+
8353
+
8354
+ /***/ }),
8355
+
8356
+ /***/ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less":
8357
+ /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
8358
+ !*** ./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less ***!
8359
+ \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
8360
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
8361
+
8362
+ "use strict";
8363
+ __webpack_require__.r(__webpack_exports__);
8364
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/noSourceMaps.js");
8365
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
8366
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/api.js");
8367
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
8368
+ // Imports
8369
+
8370
+
8371
+ var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
8372
+ // Module
8373
+ ___CSS_LOADER_EXPORT___.push([module.id, ".request-info-dialog {\n border-radius: 10px !important;\n overflow: hidden;\n height: 90vh;\n display: flex !important;\n flex-direction: column;\n}\n.request-info-dialog .el-dialog__header {\n padding: 0 !important;\n border-bottom: none !important;\n flex-shrink: 0;\n}\n.request-info-dialog .el-dialog__body {\n padding: 0 !important;\n flex: 1;\n min-height: 0;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n", ""]);
8374
+ // Exports
8375
+ /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8376
+
8377
+
8378
+ /***/ }),
8379
+
8380
+ /***/ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true":
8381
+ /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
8382
+ !*** ./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true ***!
8383
+ \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
8384
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
8385
+
8386
+ "use strict";
8387
+ __webpack_require__.r(__webpack_exports__);
8388
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/noSourceMaps.js");
8389
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
8390
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/api.js");
8391
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
8392
+ // Imports
8393
+
8394
+
8395
+ var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
8396
+ // Module
8397
+ ___CSS_LOADER_EXPORT___.push([module.id, ".rid-header[data-v-b9cf4022] {\n position: relative;\n background: var(--mb-bg-mantle);\n border-bottom: 1px solid var(--mb-border-color);\n}\n.rid-header__info[data-v-b9cf4022] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 48px 10px 16px;\n min-height: 42px;\n}\n.rid-header__method[data-v-b9cf4022] {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n height: 18px;\n padding: 0 6px;\n border-radius: 3px;\n font-family: 'Menlo', 'Monaco', 'Courier New', monospace;\n font-size: 10px;\n font-weight: 700;\n letter-spacing: 0.5px;\n color: #fff;\n text-transform: uppercase;\n}\n.rid-header__method.is-get[data-v-b9cf4022] {\n background: #1677ff;\n}\n.rid-header__method.is-post[data-v-b9cf4022] {\n background: #52c41a;\n}\n.rid-header__method.is-put[data-v-b9cf4022] {\n background: #fa8c16;\n}\n.rid-header__method.is-delete[data-v-b9cf4022] {\n background: #ff4d4f;\n}\n.rid-header__method.is-patch[data-v-b9cf4022] {\n background: #722ed1;\n}\n.rid-header__method.is-head[data-v-b9cf4022] {\n background: #13c2c2;\n}\n.rid-header__method.is-options[data-v-b9cf4022] {\n background: #8c8c8c;\n}\n.rid-header__url[data-v-b9cf4022] {\n flex: 1;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n font-family: 'Menlo', 'Monaco', 'Courier New', monospace;\n font-size: 12px;\n color: var(--mb-text-primary);\n line-height: 1.4;\n cursor: default;\n}\n.rid-header__status[data-v-b9cf4022] {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n height: 18px;\n padding: 0 6px;\n border-radius: 3px;\n font-size: 11px;\n font-weight: 600;\n font-family: 'Menlo', 'Monaco', 'Courier New', monospace;\n}\n.rid-header__status.is-2xx[data-v-b9cf4022] {\n background: #f6ffed;\n color: #52c41a;\n border: 1px solid #b7eb8f;\n}\n.rid-header__status.is-3xx[data-v-b9cf4022] {\n background: #e6f4ff;\n color: #1677ff;\n border: 1px solid #91caff;\n}\n.rid-header__status.is-4xx[data-v-b9cf4022] {\n background: #fff7e6;\n color: #fa8c16;\n border: 1px solid #ffd591;\n}\n.rid-header__status.is-5xx[data-v-b9cf4022] {\n background: #fff2f0;\n color: #ff4d4f;\n border: 1px solid #ffccc7;\n}\n.rid-header__copy[data-v-b9cf4022] {\n flex-shrink: 0;\n width: 26px;\n height: 26px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--mb-border-color);\n background: var(--mb-bg-base);\n color: var(--mb-text-muted);\n font-size: 13px;\n border-radius: 5px;\n cursor: pointer;\n transition: all 0.15s;\n}\n.rid-header__copy[data-v-b9cf4022]:hover {\n border-color: var(--mb-accent-blue);\n color: var(--mb-accent-blue);\n background: var(--mb-accent-blue-bg);\n}\n.rid-header__copy.is-copied[data-v-b9cf4022] {\n border-color: var(--mb-accent-green);\n color: var(--mb-accent-green);\n background: var(--mb-accent-green-bg);\n}\n.rid-header__close[data-v-b9cf4022] {\n position: absolute;\n top: 10px;\n right: 12px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n color: var(--mb-text-muted);\n font-size: 14px;\n border-radius: 4px;\n cursor: pointer;\n transition: background 0.15s, color 0.15s;\n}\n.rid-header__close[data-v-b9cf4022]:hover {\n background: var(--mb-hover-bg);\n color: var(--mb-text-primary);\n}\n.rid-header__tabs[data-v-b9cf4022] {\n display: flex;\n align-items: flex-end;\n gap: 0;\n padding: 0 12px;\n background: var(--mb-bg-base);\n border-top: 1px solid var(--mb-border-color-light);\n}\n.rid-header__tab[data-v-b9cf4022] {\n position: relative;\n padding: 7px 14px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mb-text-muted);\n cursor: pointer;\n transition: color 0.15s;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n white-space: nowrap;\n}\n.rid-header__tab[data-v-b9cf4022]::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 14px;\n right: 14px;\n height: 2px;\n background: var(--mb-accent-blue);\n border-radius: 1px 1px 0 0;\n transform: scaleX(0);\n transition: transform 0.18s ease;\n}\n.rid-header__tab[data-v-b9cf4022]:hover {\n color: var(--mb-text-primary);\n}\n.rid-header__tab.is-active[data-v-b9cf4022] {\n color: var(--mb-accent-blue);\n}\n.rid-header__tab.is-active[data-v-b9cf4022]::after {\n transform: scaleX(1);\n}\n.rid-body[data-v-b9cf4022] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n background: var(--mb-bg-base);\n}\n.rid-pane[data-v-b9cf4022] {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 0;\n}\n.rid-pane--editor[data-v-b9cf4022] {\n position: relative;\n overflow: hidden;\n}\n.rid-section[data-v-b9cf4022] {\n margin-bottom: 0;\n overflow: hidden;\n border-bottom: 1px solid var(--mb-border-color-light);\n}\n.rid-section[data-v-b9cf4022]:last-child {\n border-bottom: none;\n}\n.rid-section__title[data-v-b9cf4022] {\n padding: 5px 16px;\n font-size: 10px;\n font-weight: 700;\n letter-spacing: 0.8px;\n text-transform: uppercase;\n color: var(--mb-text-muted);\n background: var(--mb-bg-mantle);\n border-bottom: 1px solid var(--mb-border-color-light);\n}\n.rid-kv[data-v-b9cf4022] {\n display: flex;\n font-size: 12px;\n border-bottom: 1px solid var(--mb-border-color-light);\n}\n.rid-kv[data-v-b9cf4022]:last-child {\n border-bottom: none;\n}\n.rid-kv__key[data-v-b9cf4022] {\n flex: 0 0 140px;\n padding: 5px 12px 5px 16px;\n text-align: right;\n font-weight: 500;\n color: var(--mb-text-muted);\n background: var(--mb-bg-mantle);\n border-right: 1px solid var(--mb-border-color-light);\n word-break: break-all;\n font-family: 'Menlo', 'Monaco', 'Courier New', monospace;\n font-size: 11px;\n}\n.rid-kv__val[data-v-b9cf4022] {\n flex: 1;\n padding: 5px 16px;\n color: var(--mb-text-primary);\n word-break: break-all;\n line-height: 1.5;\n}\n.rid-empty[data-v-b9cf4022] {\n padding: 20px 16px;\n font-size: 12px;\n color: var(--mb-text-muted);\n text-align: center;\n}\n.rid-editor-wrap[data-v-b9cf4022] {\n height: 300px;\n}\n.rid-editor-wrap--full[data-v-b9cf4022] {\n position: absolute;\n inset: 0;\n height: auto;\n}\n", ""]);
8062
8398
  // Exports
8063
8399
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8064
8400
 
@@ -8082,7 +8418,31 @@ __webpack_require__.r(__webpack_exports__);
8082
8418
 
8083
8419
  var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
8084
8420
  // Module
8085
- ___CSS_LOADER_EXPORT___.push([module.id, ".request-list[data-v-1d02c492] {\n width: 55%;\n}\n.request-list__table[data-v-1d02c492] {\n border-color: var(--mb-border-color-light) !important;\n border-left: none;\n border-bottom: none;\n border-top: none;\n}\n.request-list__table[data-v-1d02c492]::before,\n.request-list__table[data-v-1d02c492]::after {\n content: none;\n}\n.request-list__table[data-v-1d02c492] .el-table__cell {\n border-color: var(--mb-border-color-light) !important;\n}\n.request-list__table[data-v-1d02c492] .el-table__body .el-table__cell {\n padding: 0 !important;\n}\n.request-list__table[data-v-1d02c492] .cell {\n line-height: 1.4 !important;\n}\n.request-list__table[data-v-1d02c492] .el-table__row:hover .request-list__filename-expand-shadow {\n background: var(--mb-hover-bg);\n}\n.request-list__table[data-v-1d02c492] .el-table__row:hover .request-list__filename-expand-icon {\n background: var(--mb-hover-bg);\n}\n.request-list__table[data-v-1d02c492] th.el-table__cell > .cell {\n color: var(--mb-text-primary);\n font-weight: 500;\n}\n.request-list__table[data-v-1d02c492] .el-table__body tr.current-row>td.el-table__cell {\n background-color: var(--mb-active-row-bg);\n color: var(--mb-active-row-text);\n}\n.request-list__filename[data-v-1d02c492] {\n position: relative;\n white-space: nowrap;\n line-height: 0;\n overflow-x: auto;\n overflow-y: hidden;\n /*隐藏滚动条,当IE下溢出,仍然可以滚动*/\n -ms-overflow-style: none;\n /*火狐下隐藏滚动条*/\n overflow: -moz-scrollbars-none;\n scrollbar-width: none;\n /*Chrome下隐藏滚动条,溢出可以透明滚动*/\n}\n.request-list__filename[data-v-1d02c492]::-webkit-scrollbar {\n display: none;\n}\n.request-list__filename-value[data-v-1d02c492] {\n white-space: nowrap;\n position: relative;\n line-height: 23px;\n vertical-align: top;\n font-weight: bold;\n display: inline-block;\n}\n.request-list__filename-value--active[data-v-1d02c492] {\n color: var(--mb-tag-saved-text);\n}\n.request-list__filename-value--error[data-v-1d02c492] {\n color: var(--mb-tag-error-text);\n}\n.request-list__filename-expand-shadow[data-v-1d02c492] {\n width: 500px;\n height: 23px;\n background: var(--mb-bg-base);\n display: inline-block;\n z-index: 30;\n position: relative;\n}\n.request-list__filename-expand-icon[data-v-1d02c492] {\n width: 12px;\n position: absolute;\n top: 8px;\n right: 0;\n background: var(--mb-bg-base);\n z-index: 1;\n}\n.request-list__remark-text[data-v-1d02c492] {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n color: var(--mb-text-secondary);\n line-height: 23px;\n padding: 0 4px;\n}\n.request-list__remark-text[data-v-1d02c492]:hover {\n color: var(--mb-accent-blue);\n}\n.request-list__remark-placeholder[data-v-1d02c492] {\n color: var(--mb-text-placeholder);\n cursor: pointer;\n line-height: 23px;\n padding: 0 4px;\n}\n.request-list__remark-placeholder[data-v-1d02c492]:hover {\n color: var(--mb-text-muted);\n}\n.request-list__btn[data-v-1d02c492] {\n font-size: 16px;\n padding: 4px 2px;\n}\n.request-list__btn--delete[data-v-1d02c492] {\n color: var(--mb-accent-red);\n}\n.request-list__btn--locked[data-v-1d02c492] {\n color: var(--mb-accent-green);\n}\n.container[data-v-1d02c492] {\n display: flex;\n flex: 1;\n border: 1px solid var(--mb-border-color-light);\n border-left: none;\n overflow: hidden;\n}\n.container .list-body[data-v-1d02c492] {\n width: 55%;\n}\n.container .list-body__table[data-v-1d02c492] {\n border-color: var(--mb-border-color-light) !important;\n border-left: none;\n border-bottom: none;\n border-top: none;\n}\n.container .list-body__table[data-v-1d02c492]::before,\n.container .list-body__table[data-v-1d02c492]::after {\n content: none;\n}\n.container .list-body__table[data-v-1d02c492] .el-table__cell {\n border-color: var(--mb-border-color-light) !important;\n}\n.container .list-body__table[data-v-1d02c492] .el-table__body .el-table__cell {\n padding: 0 !important;\n}\n.container .list-body__table[data-v-1d02c492] .cell {\n line-height: 1.4 !important;\n}\n.container .list-body__table[data-v-1d02c492] .el-table__row:hover .request-list__filename-expand-shadow {\n background: var(--mb-hover-bg);\n}\n.container .list-body__table[data-v-1d02c492] .el-table__row:hover .request-list__filename-expand-icon {\n background: var(--mb-hover-bg);\n}\n.container .list-body__table[data-v-1d02c492] th.el-table__cell > .cell {\n color: var(--mb-text-primary);\n font-weight: 500;\n}\n.container .list-body__table[data-v-1d02c492] .el-table__body tr.current-row>td.el-table__cell {\n background-color: var(--mb-active-row-bg);\n color: var(--mb-active-row-text);\n}\n.container .list-body__filename[data-v-1d02c492] {\n position: relative;\n white-space: nowrap;\n line-height: 0;\n overflow-x: auto;\n overflow-y: hidden;\n /*隐藏滚动条,当IE下溢出,仍然可以滚动*/\n -ms-overflow-style: none;\n /*火狐下隐藏滚动条*/\n overflow: -moz-scrollbars-none;\n scrollbar-width: none;\n /*Chrome下隐藏滚动条,溢出可以透明滚动*/\n}\n.container .list-body__filename[data-v-1d02c492]::-webkit-scrollbar {\n display: none;\n}\n.container .list-body__filename-value[data-v-1d02c492] {\n white-space: nowrap;\n position: relative;\n line-height: 23px;\n vertical-align: top;\n font-weight: bold;\n display: inline-block;\n}\n.container .list-body__filename-value--active[data-v-1d02c492] {\n color: var(--mb-tag-saved-text);\n}\n.container .list-body__filename-value--error[data-v-1d02c492] {\n color: var(--mb-tag-error-text);\n}\n.container .list-body__filename-expand-shadow[data-v-1d02c492] {\n width: 500px;\n height: 23px;\n background: var(--mb-bg-base);\n display: inline-block;\n z-index: 30;\n position: relative;\n}\n.container .list-body__filename-expand-icon[data-v-1d02c492] {\n width: 12px;\n position: absolute;\n top: 8px;\n right: 0;\n background: var(--mb-bg-base);\n z-index: 1;\n}\n.container .list-body__remark-text[data-v-1d02c492] {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n color: var(--mb-text-secondary);\n line-height: 23px;\n padding: 0 4px;\n}\n.container .list-body__remark-text[data-v-1d02c492]:hover {\n color: var(--mb-accent-blue);\n}\n.container .list-body__remark-placeholder[data-v-1d02c492] {\n color: var(--mb-text-placeholder);\n cursor: pointer;\n line-height: 23px;\n padding: 0 4px;\n}\n.container .list-body__remark-placeholder[data-v-1d02c492]:hover {\n color: var(--mb-text-muted);\n}\n.container .list-body__btn[data-v-1d02c492] {\n font-size: 16px;\n padding: 4px 2px;\n}\n.container .list-body__btn--delete[data-v-1d02c492] {\n color: var(--mb-accent-red);\n}\n.container .list-body__btn--locked[data-v-1d02c492] {\n color: var(--mb-accent-green);\n}\n", ""]);
8421
+ ___CSS_LOADER_EXPORT___.push([module.id, ".request-list[data-v-1d02c492] {\n width: 55%;\n}\n.request-list__table[data-v-1d02c492] {\n border-color: var(--mb-border-color-light) !important;\n border-left: none;\n border-bottom: none;\n border-top: none;\n}\n.request-list__table[data-v-1d02c492]::before,\n.request-list__table[data-v-1d02c492]::after {\n content: none;\n}\n.request-list__table[data-v-1d02c492] .el-table__cell {\n border-color: var(--mb-border-color-light) !important;\n}\n.request-list__table[data-v-1d02c492] .el-table__body .el-table__cell {\n padding: 0 !important;\n}\n.request-list__table[data-v-1d02c492] .cell {\n line-height: 1.4 !important;\n}\n.request-list__table[data-v-1d02c492] .el-table__row:hover .request-list__filename-expand-shadow {\n background: var(--mb-hover-bg);\n}\n.request-list__table[data-v-1d02c492] .el-table__row:hover .request-list__filename-expand-icon {\n background: var(--mb-hover-bg);\n}\n.request-list__table[data-v-1d02c492] th.el-table__cell > .cell {\n color: var(--mb-text-primary);\n font-weight: 500;\n}\n.request-list__table[data-v-1d02c492] .el-table__body tr.current-row>td.el-table__cell {\n background-color: var(--mb-active-row-bg);\n color: var(--mb-active-row-text);\n}\n.request-list__table[data-v-1d02c492] .el-table__empty-block {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.request-list__table[data-v-1d02c492] .el-table__empty-text {\n line-height: unset;\n width: auto;\n}\n.request-list__filename[data-v-1d02c492] {\n position: relative;\n white-space: nowrap;\n line-height: 0;\n overflow-x: auto;\n overflow-y: hidden;\n /*隐藏滚动条,当IE下溢出,仍然可以滚动*/\n -ms-overflow-style: none;\n /*火狐下隐藏滚动条*/\n overflow: -moz-scrollbars-none;\n scrollbar-width: none;\n /*Chrome下隐藏滚动条,溢出可以透明滚动*/\n}\n.request-list__filename[data-v-1d02c492]::-webkit-scrollbar {\n display: none;\n}\n.request-list__filename-value[data-v-1d02c492] {\n white-space: nowrap;\n position: relative;\n line-height: 23px;\n vertical-align: top;\n font-weight: bold;\n display: inline-block;\n}\n.request-list__filename-value--active[data-v-1d02c492] {\n color: var(--mb-tag-saved-text);\n}\n.request-list__filename-value--error[data-v-1d02c492] {\n color: var(--mb-tag-error-text);\n}\n.request-list__filename-expand-shadow[data-v-1d02c492] {\n width: 500px;\n height: 23px;\n background: var(--mb-bg-base);\n display: inline-block;\n z-index: 30;\n position: relative;\n}\n.request-list__filename-expand-icon[data-v-1d02c492] {\n width: 12px;\n position: absolute;\n top: 8px;\n right: 0;\n background: var(--mb-bg-base);\n z-index: 1;\n}\n.request-list__remark-text[data-v-1d02c492] {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n color: var(--mb-text-secondary);\n line-height: 23px;\n padding: 0 4px;\n}\n.request-list__remark-text[data-v-1d02c492]:hover {\n color: var(--mb-accent-blue);\n}\n.request-list__remark-placeholder[data-v-1d02c492] {\n color: var(--mb-text-placeholder);\n cursor: pointer;\n line-height: 23px;\n padding: 0 4px;\n}\n.request-list__remark-placeholder[data-v-1d02c492]:hover {\n color: var(--mb-text-muted);\n}\n.request-list__btn[data-v-1d02c492] {\n font-size: 16px;\n padding: 4px 2px;\n}\n.request-list__btn--delete[data-v-1d02c492] {\n color: var(--mb-accent-red);\n}\n.request-list__btn--locked[data-v-1d02c492] {\n color: var(--mb-accent-green);\n}\n.request-list__btn--more[data-v-1d02c492] {\n color: var(--mb-text-muted);\n font-size: 15px;\n transition: color 0.15s;\n}\n.request-list__btn--more[data-v-1d02c492]:hover {\n color: var(--mb-accent-blue);\n}\n.request-list__btn--more .el-icon-more[data-v-1d02c492] {\n font-size: 15px;\n}\n.request-list__empty-state[data-v-1d02c492] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n color: var(--mb-text-muted);\n}\n.request-list__empty-icon[data-v-1d02c492] {\n font-size: 32px;\n opacity: 0.4;\n}\n.request-list__empty-text[data-v-1d02c492] {\n font-size: 13px;\n}\n.container[data-v-1d02c492] {\n display: flex;\n flex: 1;\n border: 1px solid var(--mb-border-color-light);\n border-left: none;\n overflow: hidden;\n}\n.container .list-body[data-v-1d02c492] {\n width: 55%;\n}\n.container .list-body__table[data-v-1d02c492] {\n border-color: var(--mb-border-color-light) !important;\n border-left: none;\n border-bottom: none;\n border-top: none;\n}\n.container .list-body__table[data-v-1d02c492]::before,\n.container .list-body__table[data-v-1d02c492]::after {\n content: none;\n}\n.container .list-body__table[data-v-1d02c492] .el-table__cell {\n border-color: var(--mb-border-color-light) !important;\n}\n.container .list-body__table[data-v-1d02c492] .el-table__body .el-table__cell {\n padding: 0 !important;\n}\n.container .list-body__table[data-v-1d02c492] .cell {\n line-height: 1.4 !important;\n}\n.container .list-body__table[data-v-1d02c492] .el-table__row:hover .request-list__filename-expand-shadow {\n background: var(--mb-hover-bg);\n}\n.container .list-body__table[data-v-1d02c492] .el-table__row:hover .request-list__filename-expand-icon {\n background: var(--mb-hover-bg);\n}\n.container .list-body__table[data-v-1d02c492] th.el-table__cell > .cell {\n color: var(--mb-text-primary);\n font-weight: 500;\n}\n.container .list-body__table[data-v-1d02c492] .el-table__body tr.current-row>td.el-table__cell {\n background-color: var(--mb-active-row-bg);\n color: var(--mb-active-row-text);\n}\n.container .list-body__table[data-v-1d02c492] .el-table__empty-block {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.container .list-body__table[data-v-1d02c492] .el-table__empty-text {\n line-height: unset;\n width: auto;\n}\n.container .list-body__filename[data-v-1d02c492] {\n position: relative;\n white-space: nowrap;\n line-height: 0;\n overflow-x: auto;\n overflow-y: hidden;\n /*隐藏滚动条,当IE下溢出,仍然可以滚动*/\n -ms-overflow-style: none;\n /*火狐下隐藏滚动条*/\n overflow: -moz-scrollbars-none;\n scrollbar-width: none;\n /*Chrome下隐藏滚动条,溢出可以透明滚动*/\n}\n.container .list-body__filename[data-v-1d02c492]::-webkit-scrollbar {\n display: none;\n}\n.container .list-body__filename-value[data-v-1d02c492] {\n white-space: nowrap;\n position: relative;\n line-height: 23px;\n vertical-align: top;\n font-weight: bold;\n display: inline-block;\n}\n.container .list-body__filename-value--active[data-v-1d02c492] {\n color: var(--mb-tag-saved-text);\n}\n.container .list-body__filename-value--error[data-v-1d02c492] {\n color: var(--mb-tag-error-text);\n}\n.container .list-body__filename-expand-shadow[data-v-1d02c492] {\n width: 500px;\n height: 23px;\n background: var(--mb-bg-base);\n display: inline-block;\n z-index: 30;\n position: relative;\n}\n.container .list-body__filename-expand-icon[data-v-1d02c492] {\n width: 12px;\n position: absolute;\n top: 8px;\n right: 0;\n background: var(--mb-bg-base);\n z-index: 1;\n}\n.container .list-body__remark-text[data-v-1d02c492] {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n cursor: pointer;\n color: var(--mb-text-secondary);\n line-height: 23px;\n padding: 0 4px;\n}\n.container .list-body__remark-text[data-v-1d02c492]:hover {\n color: var(--mb-accent-blue);\n}\n.container .list-body__remark-placeholder[data-v-1d02c492] {\n color: var(--mb-text-placeholder);\n cursor: pointer;\n line-height: 23px;\n padding: 0 4px;\n}\n.container .list-body__remark-placeholder[data-v-1d02c492]:hover {\n color: var(--mb-text-muted);\n}\n.container .list-body__btn[data-v-1d02c492] {\n font-size: 16px;\n padding: 4px 2px;\n}\n.container .list-body__btn--delete[data-v-1d02c492] {\n color: var(--mb-accent-red);\n}\n.container .list-body__btn--locked[data-v-1d02c492] {\n color: var(--mb-accent-green);\n}\n.container .list-body__btn--more[data-v-1d02c492] {\n color: var(--mb-text-muted);\n font-size: 15px;\n transition: color 0.15s;\n}\n.container .list-body__btn--more[data-v-1d02c492]:hover {\n color: var(--mb-accent-blue);\n}\n.container .list-body__btn--more .el-icon-more[data-v-1d02c492] {\n font-size: 15px;\n}\n.container .list-body__empty-state[data-v-1d02c492] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n color: var(--mb-text-muted);\n}\n.container .list-body__empty-icon[data-v-1d02c492] {\n font-size: 32px;\n opacity: 0.4;\n}\n.container .list-body__empty-text[data-v-1d02c492] {\n font-size: 13px;\n}\n", ""]);
8422
+ // Exports
8423
+ /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8424
+
8425
+
8426
+ /***/ }),
8427
+
8428
+ /***/ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less":
8429
+ /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
8430
+ !*** ./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less ***!
8431
+ \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
8432
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
8433
+
8434
+ "use strict";
8435
+ __webpack_require__.r(__webpack_exports__);
8436
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/noSourceMaps.js");
8437
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
8438
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/api.js */ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/runtime/api.js");
8439
+ /* harmony import */ var _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
8440
+ // Imports
8441
+
8442
+
8443
+ var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
8444
+ // Module
8445
+ ___CSS_LOADER_EXPORT___.push([module.id, ".request-list__more-popover {\n padding: 6px 0 !important;\n min-width: 148px !important;\n border-radius: 8px !important;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12), 0 1px 4px rgba(0, 0, 0, 0.08) !important;\n border: 1px solid var(--mb-border-color) !important;\n background: var(--mb-bg-base) !important;\n}\n.request-list__more-popover .popper__arrow {\n border-bottom-color: var(--mb-border-color) !important;\n}\n.request-list__more-popover .popper__arrow::after {\n border-bottom-color: var(--mb-bg-base) !important;\n}\n.request-list__more-menu {\n display: flex;\n flex-direction: column;\n}\n.request-list__more-item {\n display: flex;\n align-items: center;\n gap: 9px;\n padding: 7px 14px;\n font-size: 12.5px;\n cursor: pointer;\n color: var(--mb-text-primary);\n border-radius: 4px;\n margin: 0 4px;\n transition: background 0.12s, color 0.12s;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.request-list__more-item:hover {\n background: var(--mb-accent-blue-bg);\n color: var(--mb-accent-blue);\n}\n.request-list__more-item:hover i {\n color: var(--mb-accent-blue);\n}\n.request-list__more-item i {\n font-size: 13px;\n color: var(--mb-text-muted);\n flex-shrink: 0;\n transition: color 0.12s;\n}\n", ""]);
8086
8446
  // Exports
8087
8447
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8088
8448
 
@@ -8106,7 +8466,7 @@ __webpack_require__.r(__webpack_exports__);
8106
8466
 
8107
8467
  var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
8108
8468
  // Module
8109
- ___CSS_LOADER_EXPORT___.push([module.id, ".response-panel[data-v-c23cd6a6] {\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n.response-panel__header[data-v-c23cd6a6] {\n display: flex;\n flex-direction: column;\n background-color: var(--mb-bg-mantle);\n flex-shrink: 0;\n}\n.response-panel__header-toolbar[data-v-c23cd6a6] {\n display: flex;\n align-items: center;\n gap: 0;\n height: 34px;\n border-bottom: 1px solid var(--mb-border-color);\n padding: 0 4px 0 0;\n}\n.response-panel__version-count[data-v-c23cd6a6] {\n margin-left: 6px;\n font-size: 11px;\n color: var(--mb-text-muted);\n font-variant-numeric: tabular-nums;\n}\n.response-panel__tabs-wrapper[data-v-c23cd6a6] {\n position: relative;\n}\n.response-panel__tabs-wrapper[data-v-c23cd6a6]::before,\n.response-panel__tabs-wrapper[data-v-c23cd6a6]::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n height: 36px;\n z-index: 1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.2s;\n}\n.response-panel__tabs-wrapper[data-v-c23cd6a6]::before {\n top: 0;\n background: linear-gradient(var(--mb-bg-mantle), transparent);\n}\n.response-panel__tabs-wrapper[data-v-c23cd6a6]::after {\n bottom: 0;\n background: linear-gradient(transparent, var(--mb-bg-mantle));\n}\n.response-panel__tabs-wrapper.has-top-fade[data-v-c23cd6a6]::before {\n opacity: 1;\n}\n.response-panel__tabs-wrapper.has-bottom-fade[data-v-c23cd6a6]::after {\n opacity: 1;\n}\n.response-panel__tabs-area[data-v-c23cd6a6] {\n display: flex;\n flex-wrap: wrap;\n align-content: flex-start;\n gap: 5px;\n min-width: 0;\n padding: 5px 8px;\n max-height: calc((30px + 5px) * 3 + 5px);\n overflow-y: auto;\n overflow-x: hidden;\n}\n.response-panel__tabs-area[data-v-c23cd6a6]::-webkit-scrollbar {\n width: 3px;\n}\n.response-panel__tabs-area[data-v-c23cd6a6]::-webkit-scrollbar-thumb {\n background: var(--mb-border-color-deep);\n border-radius: 2px;\n}\n.response-panel__tab[data-v-c23cd6a6] {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n cursor: pointer;\n height: 26px;\n padding: 0 10px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mb-text-secondary);\n background-color: var(--mb-bg-base);\n border: 1px solid var(--mb-border-color-deep);\n border-radius: 5px;\n white-space: nowrap;\n transition: color 0.15s, background-color 0.15s, border-color 0.15s;\n}\n.response-panel__tab[data-v-c23cd6a6]:hover:not(.response-panel__tab--selected) {\n color: var(--mb-accent-blue);\n border-color: var(--mb-accent-blue);\n background-color: var(--mb-accent-blue-bg);\n}\n.response-panel__tab--selected[data-v-c23cd6a6] {\n background-color: var(--mb-accent-blue);\n color: #fff;\n font-weight: 600;\n border-color: var(--mb-accent-blue);\n}\n.response-panel__tab--selected .response-panel__source-tab[data-v-c23cd6a6] {\n color: #fff;\n}\n.response-panel__tab--selected .response-panel__edit-btn[data-v-c23cd6a6],\n.response-panel__tab--selected .response-panel__delete-btn[data-v-c23cd6a6] {\n color: rgba(255, 255, 255, 0.7);\n opacity: 1;\n}\n.response-panel__tab--selected .response-panel__edit-btn[data-v-c23cd6a6]:hover,\n.response-panel__tab--selected .response-panel__delete-btn[data-v-c23cd6a6]:hover {\n color: #fff;\n}\n.response-panel__source-tab[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n color: var(--mb-tag-amber);\n font-weight: 600;\n}\n.response-panel__source-tab i[data-v-c23cd6a6] {\n font-size: 13px;\n}\n.response-panel__tab-text[data-v-c23cd6a6] {\n display: inline-block;\n max-width: 100px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n vertical-align: middle;\n}\n.response-panel__edit-btn[data-v-c23cd6a6] {\n font-size: 11px;\n color: var(--mb-text-muted);\n opacity: 0;\n transition: opacity 0.12s, color 0.12s;\n}\n.response-panel__edit-btn[data-v-c23cd6a6]:hover {\n color: var(--mb-accent-blue);\n}\n.response-panel__delete-btn[data-v-c23cd6a6] {\n font-size: 11px;\n color: var(--mb-text-muted);\n opacity: 0;\n transition: opacity 0.12s, color 0.12s;\n}\n.response-panel__delete-btn[data-v-c23cd6a6]:hover {\n color: var(--mb-accent-red);\n}\n.response-panel__tab:hover .response-panel__edit-btn[data-v-c23cd6a6],\n.response-panel__tab:hover .response-panel__delete-btn[data-v-c23cd6a6] {\n opacity: 1;\n}\n.response-panel__add-btn[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n cursor: pointer;\n height: 24px;\n padding: 0 10px;\n margin: 0 8px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mb-accent-blue);\n background-color: var(--mb-accent-blue-bg);\n border: 1px solid var(--mb-accent-blue);\n border-radius: 4px;\n transition: background-color 0.15s, color 0.15s;\n}\n.response-panel__add-btn i[data-v-c23cd6a6] {\n font-size: 12px;\n}\n.response-panel__add-btn[data-v-c23cd6a6]:hover {\n color: #fff;\n background-color: var(--mb-accent-blue);\n}\n.response-panel__content[data-v-c23cd6a6] {\n position: relative;\n flex: 1;\n overflow: hidden;\n}\n.response-panel__toolbar[data-v-c23cd6a6] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background-color: var(--mb-bg-surface);\n border-bottom: 1px solid var(--mb-border-color);\n overflow-x: auto;\n}\n.response-panel__toolbar > *[data-v-c23cd6a6] {\n flex-shrink: 0;\n}\n.response-panel__toolbar .el-button[data-v-c23cd6a6] {\n margin: 0;\n}\n.response-panel__readonly-badge[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n padding: 4px 12px;\n background-color: var(--mb-bg-mantle);\n border-radius: 4px;\n font-size: 12px;\n color: var(--mb-text-muted);\n font-weight: 500;\n height: 24px;\n overflow: hidden;\n}\n.response-panel__readonly-badge i[data-v-c23cd6a6] {\n font-size: 12px;\n}\n.response-panel__alert[data-v-c23cd6a6] {\n position: absolute;\n top: 8px;\n right: 10px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mb-accent-yellow);\n}\n.response-panel__save-inline[data-v-c23cd6a6] {\n position: relative;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n margin-left: auto;\n flex-shrink: 0;\n}\n.response-panel__save-inline .el-button[data-v-c23cd6a6] {\n margin: 0;\n}\n.response-panel__effect-dot[data-v-c23cd6a6] {\n position: absolute;\n top: -3px;\n right: -3px;\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: var(--mb-accent-red);\n pointer-events: none;\n}\n.response-panel__error-text-inline[data-v-c23cd6a6] {\n color: var(--mb-accent-red);\n font-size: 11px;\n white-space: nowrap;\n}\n.response-panel__dialog[data-v-c23cd6a6] {\n display: flex;\n align-items: center;\n}\n.response-panel__dialog-label[data-v-c23cd6a6] {\n white-space: nowrap;\n}\n.response-panel__mode-selector[data-v-c23cd6a6] {\n position: relative;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n height: 100%;\n padding: 0 8px;\n border-right: 1px solid var(--mb-border-color);\n}\n.response-panel__mode-btn[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n height: 24px;\n padding: 0 8px;\n font-size: 12px;\n font-weight: 600;\n color: #d97706;\n background-color: #fff8ee;\n border: 1px solid #f59e0b;\n border-radius: 4px;\n cursor: pointer;\n white-space: nowrap;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n transition: color 0.15s, border-color 0.15s, background-color 0.15s;\n}\n.response-panel__mode-btn .el-icon-arrow-down[data-v-c23cd6a6] {\n font-size: 12px;\n color: #d97706;\n font-weight: 900;\n transition: transform 0.2s;\n}\n.response-panel__mode-btn .el-icon-arrow-down.is-rotate[data-v-c23cd6a6] {\n transform: rotate(180deg);\n}\n.response-panel__mode-btn[data-v-c23cd6a6]:hover {\n color: #92400e;\n border-color: #d97706;\n background-color: #fef3c7;\n}\n.response-panel__mode-overlay[data-v-c23cd6a6] {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 99;\n}\n.response-panel__mode-dropdown[data-v-c23cd6a6] {\n position: absolute;\n top: calc(100% + 2px);\n left: 8px;\n z-index: 100;\n min-width: 100px;\n background-color: var(--mb-bg-overlay);\n border: 1px solid var(--mb-border-color-deep);\n border-radius: 4px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n}\n.response-panel__mode-option[data-v-c23cd6a6] {\n padding: 6px 14px;\n font-size: 12px;\n color: var(--mb-text-secondary);\n cursor: pointer;\n white-space: nowrap;\n}\n.response-panel__mode-option[data-v-c23cd6a6]:hover {\n background-color: var(--mb-bg-surface);\n color: var(--mb-accent-blue);\n}\n.response-panel__mode-option.is-active[data-v-c23cd6a6] {\n color: var(--mb-accent-blue);\n font-weight: 600;\n}\n", ""]);
8469
+ ___CSS_LOADER_EXPORT___.push([module.id, ".response-panel[data-v-c23cd6a6] {\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n.response-panel__header[data-v-c23cd6a6] {\n display: flex;\n flex-direction: column;\n background-color: var(--mb-bg-mantle);\n flex-shrink: 0;\n}\n.response-panel__header-toolbar[data-v-c23cd6a6] {\n display: flex;\n align-items: center;\n gap: 0;\n height: 34px;\n border-bottom: 1px solid var(--mb-border-color);\n padding: 0;\n}\n.response-panel__version-count[data-v-c23cd6a6] {\n margin-left: 6px;\n font-size: 11px;\n color: var(--mb-text-muted);\n font-variant-numeric: tabular-nums;\n}\n.response-panel__tabs-wrapper[data-v-c23cd6a6] {\n position: relative;\n}\n.response-panel__tabs-wrapper[data-v-c23cd6a6]::before,\n.response-panel__tabs-wrapper[data-v-c23cd6a6]::after {\n content: '';\n position: absolute;\n left: 0;\n right: 0;\n height: 36px;\n z-index: 1;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.2s;\n}\n.response-panel__tabs-wrapper[data-v-c23cd6a6]::before {\n top: 0;\n background: linear-gradient(var(--mb-bg-mantle), transparent);\n}\n.response-panel__tabs-wrapper[data-v-c23cd6a6]::after {\n bottom: 0;\n background: linear-gradient(transparent, var(--mb-bg-mantle));\n}\n.response-panel__tabs-wrapper.has-top-fade[data-v-c23cd6a6]::before {\n opacity: 1;\n}\n.response-panel__tabs-wrapper.has-bottom-fade[data-v-c23cd6a6]::after {\n opacity: 1;\n}\n.response-panel__tabs-area[data-v-c23cd6a6] {\n display: flex;\n flex-wrap: wrap;\n align-content: flex-start;\n gap: 5px;\n min-width: 0;\n padding: 5px 8px;\n max-height: calc((30px + 5px) * 3 + 5px);\n overflow-y: auto;\n overflow-x: hidden;\n}\n.response-panel__tabs-area[data-v-c23cd6a6]::-webkit-scrollbar {\n width: 3px;\n}\n.response-panel__tabs-area[data-v-c23cd6a6]::-webkit-scrollbar-thumb {\n background: var(--mb-border-color-deep);\n border-radius: 2px;\n}\n.response-panel__tab[data-v-c23cd6a6] {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n height: 26px;\n min-width: 60px;\n padding: 0 10px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mb-text-secondary);\n background-color: var(--mb-bg-base);\n border: 1px solid var(--mb-border-color-deep);\n border-radius: 5px;\n white-space: nowrap;\n transition: color 0.15s, background-color 0.15s, border-color 0.15s;\n}\n.response-panel__tab[data-v-c23cd6a6]:hover:not(.response-panel__tab--selected) {\n color: var(--mb-accent-blue);\n border-color: var(--mb-accent-blue);\n background-color: var(--mb-accent-blue-bg);\n}\n.response-panel__tab--selected[data-v-c23cd6a6] {\n background-color: var(--mb-accent-blue);\n color: #fff;\n font-weight: 600;\n border-color: var(--mb-accent-blue);\n}\n.response-panel__tab--selected .response-panel__edit-btn[data-v-c23cd6a6],\n.response-panel__tab--selected .response-panel__delete-btn[data-v-c23cd6a6] {\n color: rgba(255, 255, 255, 0.9);\n background-color: rgba(255, 255, 255, 0.2);\n border-color: rgba(255, 255, 255, 0.3);\n}\n.response-panel__tab--selected .response-panel__edit-btn[data-v-c23cd6a6]:hover,\n.response-panel__tab--selected .response-panel__delete-btn[data-v-c23cd6a6]:hover {\n color: #fff;\n background-color: rgba(255, 255, 255, 0.35);\n border-color: rgba(255, 255, 255, 0.5);\n}\n.response-panel__tab-text[data-v-c23cd6a6] {\n display: inline-block;\n max-width: 100px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n vertical-align: middle;\n}\n.response-panel__tab-actions[data-v-c23cd6a6] {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n gap: 2px;\n padding: 0 6px 0 32px;\n border-radius: 0 5px 5px 0;\n opacity: 0;\n pointer-events: none;\n background: linear-gradient(to right, transparent, var(--mb-bg-base) 55%);\n transition: opacity 0.15s;\n}\n.response-panel__edit-btn[data-v-c23cd6a6],\n.response-panel__delete-btn[data-v-c23cd6a6] {\n font-size: 13px;\n border-radius: 3px;\n padding: 1px 2px;\n transition: color 0.12s, background-color 0.12s;\n}\n.response-panel__edit-btn[data-v-c23cd6a6] {\n color: var(--mb-accent-blue);\n background-color: var(--mb-accent-blue-bg);\n}\n.response-panel__edit-btn[data-v-c23cd6a6]:hover {\n background-color: #bfdbfe;\n}\n.response-panel__delete-btn[data-v-c23cd6a6] {\n color: var(--mb-accent-red);\n background-color: #ffe4e6;\n}\n.response-panel__delete-btn[data-v-c23cd6a6]:hover {\n background-color: #fecdd3;\n}\n.response-panel__rule-conflict-badge[data-v-c23cd6a6] {\n font-size: 12px;\n color: #f59e0b;\n flex-shrink: 0;\n margin-right: 2px;\n}\n.response-panel__tab:hover .response-panel__tab-actions[data-v-c23cd6a6] {\n opacity: 1;\n pointer-events: auto;\n}\n.response-panel__tab--selected .response-panel__tab-actions[data-v-c23cd6a6] {\n background: linear-gradient(to right, transparent, #1a6fc4 55%);\n}\n.response-panel__tab--selected .response-panel__edit-btn[data-v-c23cd6a6] {\n color: #fff;\n background-color: rgba(255, 255, 255, 0.2);\n}\n.response-panel__tab--selected .response-panel__edit-btn[data-v-c23cd6a6]:hover {\n background-color: rgba(255, 255, 255, 0.35);\n}\n.response-panel__tab--selected .response-panel__delete-btn[data-v-c23cd6a6] {\n color: #fca5a5;\n background-color: rgba(255, 255, 255, 0.15);\n}\n.response-panel__tab--selected .response-panel__delete-btn[data-v-c23cd6a6]:hover {\n color: #fff;\n background-color: rgba(220, 38, 38, 0.5);\n}\n.response-panel__collapse-btn[data-v-c23cd6a6] {\n position: relative;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 16px;\n cursor: pointer;\n color: var(--mb-text-secondary);\n border-top: 1px solid var(--mb-border-color-light);\n transition: color 0.15s, background-color 0.15s;\n}\n.response-panel__collapse-btn i[data-v-c23cd6a6] {\n font-size: 12px;\n}\n.response-panel__collapse-btn[data-v-c23cd6a6]:hover {\n color: var(--mb-accent-blue);\n background-color: var(--mb-accent-blue-bg);\n}\n.response-panel__collapse-btn--collapsed[data-v-c23cd6a6] {\n background-color: var(--mb-accent-blue-bg);\n color: var(--mb-accent-blue);\n border-color: var(--mb-border-color);\n}\n.response-panel__collapse-btn--collapsed[data-v-c23cd6a6]:hover {\n background-color: #bfdbfe;\n}\n.response-panel__add-btn[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n flex-shrink: 0;\n cursor: pointer;\n height: 24px;\n padding: 0 10px;\n margin: 0 8px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mb-accent-blue);\n background-color: var(--mb-accent-blue-bg);\n border: 1px solid var(--mb-accent-blue);\n border-radius: 4px;\n transition: background-color 0.15s, color 0.15s;\n}\n.response-panel__add-btn i[data-v-c23cd6a6] {\n font-size: 12px;\n}\n.response-panel__add-btn[data-v-c23cd6a6]:hover {\n color: #fff;\n background-color: var(--mb-accent-blue);\n}\n.response-panel__content[data-v-c23cd6a6] {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow: hidden;\n}\n.response-panel__editor-wrap[data-v-c23cd6a6] {\n position: relative;\n flex: 1;\n overflow: hidden;\n}\n.response-panel__toolbar[data-v-c23cd6a6] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background-color: var(--mb-bg-surface);\n border-bottom: 1px solid var(--mb-border-color);\n overflow-x: auto;\n}\n.response-panel__toolbar > *[data-v-c23cd6a6] {\n flex-shrink: 0;\n}\n.response-panel__toolbar .el-button[data-v-c23cd6a6] {\n margin: 0;\n}\n.response-panel__readonly-badge[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n margin-left: auto;\n padding: 4px 12px;\n background-color: var(--mb-bg-mantle);\n border-radius: 4px;\n font-size: 12px;\n color: var(--mb-text-muted);\n font-weight: 500;\n height: 24px;\n overflow: hidden;\n}\n.response-panel__readonly-badge i[data-v-c23cd6a6] {\n font-size: 12px;\n}\n.response-panel__alert[data-v-c23cd6a6] {\n position: absolute;\n top: 8px;\n right: 10px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mb-accent-yellow);\n}\n.response-panel__save[data-v-c23cd6a6] {\n position: absolute;\n top: 20px;\n right: 20px;\n z-index: 10;\n}\n.response-panel__effect-icon[data-v-c23cd6a6] {\n position: absolute;\n top: -5px;\n right: -5px;\n display: block;\n width: 6px;\n height: 6px;\n border-radius: 6px;\n background-color: var(--mb-accent-red);\n}\n.response-panel__error-text[data-v-c23cd6a6] {\n position: absolute;\n top: -30px;\n right: 0;\n color: var(--mb-accent-red);\n font-size: 12px;\n white-space: nowrap;\n}\n.response-panel__dialog[data-v-c23cd6a6] {\n display: flex;\n align-items: center;\n}\n.response-panel__dialog-label[data-v-c23cd6a6] {\n white-space: nowrap;\n}\n.response-panel__mode-selector[data-v-c23cd6a6] {\n position: relative;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n height: 100%;\n padding: 0 8px;\n margin-left: auto;\n border-left: 1px solid var(--mb-border-color);\n}\n.response-panel__mode-btn[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n height: 24px;\n padding: 0 8px;\n font-size: 12px;\n font-weight: 600;\n color: #d97706;\n background-color: #fff8ee;\n border: 1px solid #f59e0b;\n border-radius: 4px;\n cursor: pointer;\n white-space: nowrap;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n transition: color 0.15s, border-color 0.15s, background-color 0.15s;\n}\n.response-panel__mode-btn .el-icon-arrow-down[data-v-c23cd6a6] {\n font-size: 12px;\n color: #d97706;\n font-weight: 900;\n transition: transform 0.2s;\n}\n.response-panel__mode-btn .el-icon-arrow-down.is-rotate[data-v-c23cd6a6] {\n transform: rotate(180deg);\n}\n.response-panel__mode-btn[data-v-c23cd6a6]:hover {\n color: #92400e;\n border-color: #d97706;\n background-color: #fef3c7;\n}\n.response-panel__mode-overlay[data-v-c23cd6a6] {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 99;\n}\n.response-panel__mode-dropdown[data-v-c23cd6a6] {\n position: absolute;\n top: calc(100% + 2px);\n right: 8px;\n left: auto;\n z-index: 100;\n min-width: 100px;\n background-color: var(--mb-bg-overlay);\n border: 1px solid var(--mb-border-color-deep);\n border-radius: 4px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n}\n.response-panel__mode-option[data-v-c23cd6a6] {\n padding: 6px 14px;\n font-size: 12px;\n color: var(--mb-text-secondary);\n cursor: pointer;\n white-space: nowrap;\n}\n.response-panel__mode-option[data-v-c23cd6a6]:hover {\n background-color: var(--mb-bg-surface);\n color: var(--mb-accent-blue);\n}\n.response-panel__mode-option.is-active[data-v-c23cd6a6] {\n color: var(--mb-accent-blue);\n font-weight: 600;\n}\n", ""]);
8110
8470
  // Exports
8111
8471
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8112
8472
 
@@ -8202,7 +8562,7 @@ __webpack_require__.r(__webpack_exports__);
8202
8562
 
8203
8563
  var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
8204
8564
  // Module
8205
- ___CSS_LOADER_EXPORT___.push([module.id, ".group-selector[data-v-fcd4b224] {\n display: flex;\n align-items: center;\n margin-right: 16px;\n}\n.group-selector__select[data-v-fcd4b224] {\n width: 180px;\n}\n.group-selector__select[data-v-fcd4b224] .el-input__inner {\n border-radius: 4px 0 0 4px;\n}\n.group-selector__btn[data-v-fcd4b224] {\n flex-shrink: 0;\n height: 32px;\n margin-left: -1px;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n", ""]);
8565
+ ___CSS_LOADER_EXPORT___.push([module.id, ".group-selector[data-v-fcd4b224] {\n display: flex;\n align-items: center;\n}\n.group-selector__select[data-v-fcd4b224] {\n width: 180px;\n}\n.group-selector__select[data-v-fcd4b224] .el-input__inner {\n border-radius: 4px 0 0 4px;\n}\n.group-selector__btn[data-v-fcd4b224] {\n flex-shrink: 0;\n height: 32px;\n margin-left: -1px;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n", ""]);
8206
8566
  // Exports
8207
8567
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8208
8568
 
@@ -8226,7 +8586,7 @@ __webpack_require__.r(__webpack_exports__);
8226
8586
 
8227
8587
  var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
8228
8588
  // Module
8229
- ___CSS_LOADER_EXPORT___.push([module.id, ".update-banner[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #fffbe8;\n border-bottom: 1px solid #e4e7ed;\n font-size: 12px;\n color: #303133;\n flex-wrap: nowrap;\n}\n.update-banner__text[data-v-7b8cce48] {\n white-space: nowrap;\n flex-shrink: 0;\n}\n.update-banner__text strong[data-v-7b8cce48] {\n font-weight: 600;\n}\n.update-banner__cmd[data-v-7b8cce48] {\n flex: 1;\n min-width: 0;\n padding: 2px 6px;\n border: 1px solid #dcdfe6;\n border-radius: 3px;\n background: #f4f4f4;\n color: #d93025;\n font-family: monospace;\n font-size: 11px;\n outline: none;\n cursor: text;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.update-banner__install[data-v-7b8cce48] {\n flex-shrink: 0;\n height: 22px;\n padding: 0 10px;\n border: 1px solid #409eff;\n border-radius: 3px;\n background: #fff;\n color: #409eff;\n font-size: 12px;\n cursor: pointer;\n white-space: nowrap;\n}\n.update-banner__install[data-v-7b8cce48]:hover {\n background: #ecf5ff;\n}\n.update-banner__install[data-v-7b8cce48]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n.update-banner__copy[data-v-7b8cce48] {\n flex-shrink: 0;\n height: 22px;\n padding: 0 10px;\n border: 1px solid #dcdfe6;\n border-radius: 3px;\n background: #fff;\n color: #303133;\n font-size: 12px;\n cursor: pointer;\n white-space: nowrap;\n}\n.update-banner__copy[data-v-7b8cce48]:hover {\n background: #f5f7fa;\n}\n.update-banner__close[data-v-7b8cce48] {\n flex-shrink: 0;\n width: 22px;\n height: 22px;\n border: 1px solid #dcdfe6;\n border-radius: 3px;\n background: #fff;\n color: #909399;\n font-size: 13px;\n line-height: 1;\n cursor: pointer;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.update-banner__close[data-v-7b8cce48]:hover {\n background: #f5f7fa;\n color: #303133;\n}\n.plugin-header[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n background: var(--mb-header-bg);\n border-bottom: 1px solid var(--mb-border-color);\n min-height: 36px;\n}\n.plugin-header__left[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.plugin-header__right[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n}\n.plugin-header__name[data-v-7b8cce48] {\n font-size: 15px;\n font-weight: 700;\n color: var(--mb-text-primary);\n letter-spacing: 0.5px;\n flex-shrink: 0;\n}\n.plugin-header__status--on[data-v-7b8cce48] {\n font-size: 13px;\n color: var(--mb-accent-green);\n font-weight: 500;\n}\n.plugin-header__status--off[data-v-7b8cce48] {\n font-size: 13px;\n color: var(--mb-accent-red);\n font-weight: 500;\n}\n.plugin-header__version[data-v-7b8cce48] {\n font-size: 12px;\n color: var(--mb-text-muted);\n letter-spacing: 0.3px;\n padding: 2px 6px;\n background: var(--mb-bg-surface);\n border-radius: 3px;\n}\n.plugin-header__help-btn[data-v-7b8cce48] {\n padding: 0;\n width: 22px;\n height: 22px;\n font-size: 16px;\n color: var(--mb-text-muted);\n}\n.plugin-header__help-btn[data-v-7b8cce48]:hover {\n color: var(--mb-accent-blue);\n}\n.plugin-header__theme-btn[data-v-7b8cce48],\n.plugin-header__refresh-btn[data-v-7b8cce48],\n.plugin-header__more-btn[data-v-7b8cce48],\n.plugin-header__float-btn[data-v-7b8cce48] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0 4px;\n font-size: 16px;\n line-height: 1;\n box-sizing: content-box;\n margin-left: 0 !important;\n}\n.plugin-header__theme-btn[data-v-7b8cce48]:hover,\n.plugin-header__refresh-btn[data-v-7b8cce48]:hover,\n.plugin-header__more-btn[data-v-7b8cce48]:hover,\n.plugin-header__float-btn[data-v-7b8cce48]:hover {\n opacity: 0.75;\n}\n.plugin-header__theme-btn[data-v-7b8cce48] {\n color: var(--mb-text-secondary);\n}\n.plugin-header__refresh-btn[data-v-7b8cce48] {\n color: var(--mb-text-muted);\n}\n.plugin-header__refresh-btn[data-v-7b8cce48]:hover {\n color: var(--mb-accent-blue);\n opacity: 1;\n}\n.plugin-header__more-btn[data-v-7b8cce48] {\n color: #606266;\n}\n.plugin-header__more-btn[data-v-7b8cce48]:hover {\n color: var(--mb-accent-blue);\n opacity: 1;\n}\n.plugin-header__float-btn[data-v-7b8cce48] {\n color: var(--mb-text-muted);\n}\n.plugin-header__float-btn[data-v-7b8cce48]:hover {\n color: var(--mb-accent-blue);\n opacity: 1;\n}\n.plugin-header__float-btn.is-active[data-v-7b8cce48] {\n color: var(--mb-accent-blue);\n}\n.help-dialog__content[data-v-7b8cce48] {\n font-size: 14px;\n line-height: 1.8;\n color: var(--mb-text-primary);\n}\n.help-dialog__content p[data-v-7b8cce48] {\n margin: 0 0 12px;\n}\n.help-section__title[data-v-7b8cce48] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mb-accent-blue);\n margin: 16px 0 8px;\n padding-left: 8px;\n border-left: 3px solid var(--mb-accent-blue);\n}\n.help-section__title[data-v-7b8cce48]:first-child {\n margin-top: 0;\n}\n.help-step[data-v-7b8cce48] {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n margin-bottom: 10px;\n}\n.help-step__num[data-v-7b8cce48] {\n flex-shrink: 0;\n width: 22px;\n height: 22px;\n background: var(--mb-accent-blue);\n color: #fff;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n font-weight: 700;\n margin-top: 1px;\n}\n.help-table[data-v-7b8cce48] {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: 8px;\n}\n.help-table td[data-v-7b8cce48] {\n padding: 6px 10px;\n border: 1px solid var(--mb-border-color);\n font-size: 13px;\n}\n.help-table td[data-v-7b8cce48]:first-child {\n width: 100px;\n background: var(--mb-bg-surface);\n white-space: nowrap;\n}\n.help-code[data-v-7b8cce48] {\n background: var(--mb-bg-surface);\n border: 1px solid var(--mb-border-color);\n border-radius: 4px;\n padding: 10px 14px;\n font-family: monospace;\n font-size: 13px;\n color: var(--mb-text-secondary);\n line-height: 1.9;\n margin: 0 0 8px;\n white-space: pre-wrap;\n}\n.help-dialog__content ul[data-v-7b8cce48] {\n padding-left: 20px;\n margin: 0 0 8px;\n}\n.help-dialog__content ul li[data-v-7b8cce48] {\n margin-bottom: 4px;\n}\n.action-panel[data-v-7b8cce48] {\n display: flex;\n flex-direction: column;\n background-color: var(--mb-bg-base);\n border-bottom: 1px solid var(--mb-border-color-deep);\n}\n.action-panel__row[data-v-7b8cce48] {\n display: flex;\n padding: 10px;\n align-items: flex-start;\n gap: 16px;\n}\n.action-panel__search[data-v-7b8cce48] {\n flex: 1;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n min-width: 0;\n}\n.action-panel__actions[data-v-7b8cce48] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n.action-panel__rules-row[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px 12px;\n padding: 6px 12px;\n background: var(--mb-bg-surface);\n border-top: 1px solid var(--mb-border-color);\n}\n.action-panel .plugin-mode-wrapper[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n.action-panel .plugin-mode-wrapper .plugin-mode-label[data-v-7b8cce48] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mb-text-secondary);\n white-space: nowrap;\n}\n.action-panel__item[data-v-7b8cce48] {\n font-size: 14px;\n}\n.action-panel__label[data-v-7b8cce48] {\n font-size: 14px;\n font-weight: 500;\n margin-right: 10px;\n}\n.action-panel__select[data-v-7b8cce48] {\n width: 180px;\n}\n.action-panel__select--method[data-v-7b8cce48] {\n width: 120px;\n}\n.action-panel__select--status[data-v-7b8cce48] {\n width: 160px;\n}\n.action-panel__input[data-v-7b8cce48] {\n width: 220px;\n}\n.action-panel__tooltip[data-v-7b8cce48] {\n flex-shrink: 0;\n}\n.action-panel__selection-count[data-v-7b8cce48] {\n font-weight: 600;\n flex-shrink: 0;\n}\n.action-panel__result-count[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n.action-panel__result-text[data-v-7b8cce48] {\n font-size: 12px;\n color: var(--mb-text-muted);\n font-weight: 400;\n white-space: nowrap;\n}\n.action-panel__cache-badge[data-v-7b8cce48] {\n flex-shrink: 0;\n}\n.export-group-selector .selector-header[data-v-7b8cce48] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mb-border-color);\n}\n.export-group-selector .selector-header .selector-title[data-v-7b8cce48] {\n font-size: 14px;\n color: var(--mb-text-secondary);\n font-weight: 500;\n}\n.export-group-selector .group-checkbox-list[data-v-7b8cce48] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n max-height: 300px;\n overflow-y: auto;\n padding: 8px 0;\n}\n.export-group-selector .group-checkbox-list .group-checkbox-item[data-v-7b8cce48] {\n padding: 12px;\n border: 1px solid var(--mb-border-color-deep);\n border-radius: 4px;\n}\n.export-group-selector .group-checkbox-list .group-checkbox-item[data-v-7b8cce48]:hover {\n border-color: var(--mb-accent-blue);\n background: var(--mb-accent-blue-bg);\n}\n.export-group-selector .group-checkbox-list .group-checkbox-item[data-v-7b8cce48] .el-checkbox {\n display: flex;\n align-items: flex-start;\n width: 100%;\n}\n.export-group-selector .group-checkbox-list .group-checkbox-item[data-v-7b8cce48] .el-checkbox .el-checkbox__input {\n margin-top: 2px;\n}\n.export-group-selector .group-checkbox-list .group-checkbox-item[data-v-7b8cce48] .el-checkbox .el-checkbox__label {\n flex: 1;\n padding-left: 8px;\n width: 0;\n}\n.export-group-selector .group-checkbox-list .group-info[data-v-7b8cce48] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n.export-group-selector .group-checkbox-list .group-info .group-name[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mb-text-primary);\n flex: 1;\n min-width: 0;\n overflow: hidden;\n}\n.export-group-selector .group-checkbox-list .group-info .group-meta[data-v-7b8cce48] {\n font-size: 12px;\n color: var(--mb-text-muted);\n white-space: nowrap;\n flex-shrink: 0;\n}\n.export-group-selector .export-summary[data-v-7b8cce48] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--mb-border-color);\n text-align: center;\n font-size: 14px;\n color: var(--mb-text-secondary);\n}\n.export-group-selector .export-summary strong[data-v-7b8cce48] {\n color: var(--mb-accent-blue);\n font-size: 16px;\n}\n.active-rules-text[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n cursor: help;\n padding: 3px 8px;\n background: var(--mb-bg-surface);\n border-radius: 4px;\n min-width: 0;\n flex: 1;\n}\n.active-rules-text[data-v-7b8cce48]:hover {\n background: var(--mb-accent-blue-bg);\n box-shadow: 0 2px 8px rgba(64, 158, 255, 0.15);\n}\n.active-rules-text .rules-label[data-v-7b8cce48] {\n color: var(--mb-text-secondary);\n font-weight: 500;\n white-space: nowrap;\n flex-shrink: 0;\n}\n.active-rules-text .rules-value[data-v-7b8cce48] {\n color: var(--mb-accent-blue);\n font-family: monospace;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n.active-rules-text .rules-empty[data-v-7b8cce48] {\n color: var(--mb-text-muted);\n font-style: italic;\n}\n.rules-help-content[data-v-7b8cce48] {\n max-width: 500px;\n padding: 4px 0;\n line-height: 1.6;\n font-size: 13px;\n color: #fff;\n text-align: left;\n}\n.import-preview__header[data-v-7b8cce48] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mb-border-color);\n}\n.import-preview__info[data-v-7b8cce48] {\n font-size: 14px;\n color: var(--mb-text-secondary);\n}\n.import-preview__actions[data-v-7b8cce48] {\n display: flex;\n gap: 8px;\n}\n", ""]);
8589
+ ___CSS_LOADER_EXPORT___.push([module.id, ".update-banner[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #fffbe8;\n border-bottom: 1px solid #e4e7ed;\n font-size: 12px;\n color: #303133;\n flex-wrap: nowrap;\n}\n.update-banner__text[data-v-7b8cce48] {\n white-space: nowrap;\n flex-shrink: 0;\n}\n.update-banner__text strong[data-v-7b8cce48] {\n font-weight: 600;\n}\n.update-banner__cmd[data-v-7b8cce48] {\n flex: 1;\n min-width: 0;\n padding: 2px 6px;\n border: 1px solid #dcdfe6;\n border-radius: 3px;\n background: #f4f4f4;\n color: #d93025;\n font-family: monospace;\n font-size: 11px;\n outline: none;\n cursor: text;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.update-banner__install[data-v-7b8cce48] {\n flex-shrink: 0;\n height: 22px;\n padding: 0 10px;\n border: 1px solid #409eff;\n border-radius: 3px;\n background: #fff;\n color: #409eff;\n font-size: 12px;\n cursor: pointer;\n white-space: nowrap;\n}\n.update-banner__install[data-v-7b8cce48]:hover {\n background: #ecf5ff;\n}\n.update-banner__install[data-v-7b8cce48]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n.update-banner__copy[data-v-7b8cce48] {\n flex-shrink: 0;\n height: 22px;\n padding: 0 10px;\n border: 1px solid #dcdfe6;\n border-radius: 3px;\n background: #fff;\n color: #303133;\n font-size: 12px;\n cursor: pointer;\n white-space: nowrap;\n}\n.update-banner__copy[data-v-7b8cce48]:hover {\n background: #f5f7fa;\n}\n.update-banner__close[data-v-7b8cce48] {\n flex-shrink: 0;\n width: 22px;\n height: 22px;\n border: 1px solid #dcdfe6;\n border-radius: 3px;\n background: #fff;\n color: #909399;\n font-size: 13px;\n line-height: 1;\n cursor: pointer;\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.update-banner__close[data-v-7b8cce48]:hover {\n background: #f5f7fa;\n color: #303133;\n}\n.plugin-header[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 12px;\n background: var(--mb-header-bg);\n border-bottom: 1px solid var(--mb-border-color);\n min-height: 36px;\n}\n.plugin-header__left[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.plugin-header__right[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n}\n.plugin-header__name[data-v-7b8cce48] {\n font-size: 15px;\n font-weight: 700;\n color: var(--mb-text-primary);\n letter-spacing: 0.5px;\n flex-shrink: 0;\n}\n.plugin-header__status--on[data-v-7b8cce48] {\n font-size: 12px;\n color: var(--mb-accent-green);\n font-weight: 500;\n}\n.plugin-header__status--off[data-v-7b8cce48] {\n font-size: 12px;\n color: var(--mb-accent-red);\n font-weight: 500;\n}\n.plugin-header__version[data-v-7b8cce48] {\n font-size: 12px;\n color: var(--mb-text-muted);\n letter-spacing: 0.3px;\n padding: 2px 6px;\n background: var(--mb-bg-surface);\n border-radius: 3px;\n}\n.plugin-header__help-btn[data-v-7b8cce48] {\n padding: 0;\n width: 14px;\n height: 14px;\n font-size: 12px;\n color: var(--mb-text-muted);\n}\n.plugin-header__help-btn[data-v-7b8cce48]:hover {\n color: var(--mb-accent-blue);\n}\n.plugin-header__switch[data-v-7b8cce48] .el-switch__core {\n height: 14px;\n line-height: 14px;\n border-radius: 7px;\n}\n.plugin-header__switch[data-v-7b8cce48] .el-switch__core::after {\n width: 10px;\n height: 10px;\n top: 1px;\n}\n.plugin-header__switch.is-checked[data-v-7b8cce48] .el-switch__core::after {\n margin-left: -11px;\n}\n.plugin-header__theme-btn[data-v-7b8cce48],\n.plugin-header__refresh-btn[data-v-7b8cce48],\n.plugin-header__more-btn[data-v-7b8cce48],\n.plugin-header__float-btn[data-v-7b8cce48] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n padding: 0 4px;\n font-size: 16px;\n line-height: 1;\n box-sizing: content-box;\n margin-left: 0 !important;\n}\n.plugin-header__theme-btn[data-v-7b8cce48]:hover,\n.plugin-header__refresh-btn[data-v-7b8cce48]:hover,\n.plugin-header__more-btn[data-v-7b8cce48]:hover,\n.plugin-header__float-btn[data-v-7b8cce48]:hover {\n opacity: 0.75;\n}\n.plugin-header__theme-btn[data-v-7b8cce48] {\n color: var(--mb-text-secondary);\n}\n.plugin-header__refresh-btn[data-v-7b8cce48] {\n color: var(--mb-text-muted);\n}\n.plugin-header__refresh-btn[data-v-7b8cce48]:hover {\n color: var(--mb-accent-blue);\n opacity: 1;\n}\n.plugin-header__more-btn[data-v-7b8cce48] {\n color: #606266;\n}\n.plugin-header__more-btn[data-v-7b8cce48]:hover {\n color: var(--mb-accent-blue);\n opacity: 1;\n}\n.plugin-header__float-btn[data-v-7b8cce48] {\n color: var(--mb-text-muted);\n}\n.plugin-header__float-btn[data-v-7b8cce48]:hover {\n color: var(--mb-accent-blue);\n opacity: 1;\n}\n.plugin-header__float-btn.is-active[data-v-7b8cce48] {\n color: var(--mb-accent-blue);\n}\n.help-dialog__content[data-v-7b8cce48] {\n font-size: 14px;\n line-height: 1.8;\n color: var(--mb-text-primary);\n}\n.help-dialog__content p[data-v-7b8cce48] {\n margin: 0 0 12px;\n}\n.help-section__title[data-v-7b8cce48] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mb-accent-blue);\n margin: 16px 0 8px;\n padding-left: 8px;\n border-left: 3px solid var(--mb-accent-blue);\n}\n.help-section__title[data-v-7b8cce48]:first-child {\n margin-top: 0;\n}\n.help-step[data-v-7b8cce48] {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n margin-bottom: 10px;\n}\n.help-step__num[data-v-7b8cce48] {\n flex-shrink: 0;\n width: 22px;\n height: 22px;\n background: var(--mb-accent-blue);\n color: #fff;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n font-weight: 700;\n margin-top: 1px;\n}\n.help-table[data-v-7b8cce48] {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: 8px;\n}\n.help-table td[data-v-7b8cce48] {\n padding: 6px 10px;\n border: 1px solid var(--mb-border-color);\n font-size: 13px;\n}\n.help-table td[data-v-7b8cce48]:first-child {\n width: 100px;\n background: var(--mb-bg-surface);\n white-space: nowrap;\n}\n.help-code[data-v-7b8cce48] {\n background: var(--mb-bg-surface);\n border: 1px solid var(--mb-border-color);\n border-radius: 4px;\n padding: 10px 14px;\n font-family: monospace;\n font-size: 13px;\n color: var(--mb-text-secondary);\n line-height: 1.9;\n margin: 0 0 8px;\n white-space: pre-wrap;\n}\n.help-dialog__content ul[data-v-7b8cce48] {\n padding-left: 20px;\n margin: 0 0 8px;\n}\n.help-dialog__content ul li[data-v-7b8cce48] {\n margin-bottom: 4px;\n}\n.action-panel[data-v-7b8cce48] {\n display: flex;\n flex-direction: column;\n background-color: var(--mb-bg-base);\n border-bottom: 1px solid var(--mb-border-color-deep);\n}\n.action-panel__row[data-v-7b8cce48] {\n display: flex;\n flex-wrap: wrap;\n padding: 10px;\n align-items: flex-start;\n gap: 8px;\n}\n.action-panel__search[data-v-7b8cce48] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n}\n.action-panel__item[data-v-7b8cce48] {\n font-size: 14px;\n}\n.action-panel__label[data-v-7b8cce48] {\n font-size: 14px;\n font-weight: 500;\n margin-right: 10px;\n}\n.action-panel__select[data-v-7b8cce48] {\n width: 180px;\n}\n.action-panel__select--method[data-v-7b8cce48] {\n width: 120px;\n}\n.action-panel__select--status[data-v-7b8cce48] {\n width: 160px;\n}\n.action-panel__input[data-v-7b8cce48] {\n width: 220px;\n}\n.action-panel__tooltip[data-v-7b8cce48] {\n flex-shrink: 0;\n}\n.action-panel__selection-count[data-v-7b8cce48] {\n font-weight: 600;\n flex-shrink: 0;\n}\n.action-panel__result-count[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n.action-panel__result-text[data-v-7b8cce48] {\n font-size: 12px;\n color: var(--mb-text-muted);\n font-weight: 400;\n white-space: nowrap;\n}\n.action-panel__cache-badge[data-v-7b8cce48] {\n flex-shrink: 0;\n}\n.capture-status[data-v-7b8cce48] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n flex-shrink: 0;\n}\n.capture-status__dot[data-v-7b8cce48] {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: #c0c4cc;\n flex-shrink: 0;\n transition: background-color 0.3s;\n}\n.capture-status__text[data-v-7b8cce48] {\n font-size: 12px;\n font-weight: 500;\n color: var(--mb-text-muted);\n white-space: nowrap;\n transition: color 0.3s;\n}\n.capture-status__help[data-v-7b8cce48] {\n font-size: 12px;\n color: var(--mb-text-muted);\n cursor: help;\n flex-shrink: 0;\n}\n.capture-status__switch[data-v-7b8cce48] {\n flex-shrink: 0;\n}\n.capture-status__switch[data-v-7b8cce48] .el-switch__core {\n height: 14px;\n line-height: 14px;\n border-radius: 7px;\n}\n.capture-status__switch[data-v-7b8cce48] .el-switch__core::after {\n width: 10px;\n height: 10px;\n top: 1px;\n}\n.capture-status__switch.is-checked[data-v-7b8cce48] .el-switch__core::after {\n margin-left: -11px;\n}\n.capture-status.is-capturing .capture-status__dot[data-v-7b8cce48] {\n background-color: #67c23a;\n animation: capture-pulse-7b8cce48 1.8s ease-in-out infinite;\n}\n.capture-status.is-capturing .capture-status__text[data-v-7b8cce48] {\n color: #67c23a;\n}\n@keyframes capture-pulse-7b8cce48 {\n0%,\n 100% {\n opacity: 1;\n transform: scale(1);\n}\n50% {\n opacity: 0.45;\n transform: scale(0.8);\n}\n}\n.export-group-selector .selector-header[data-v-7b8cce48] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mb-border-color);\n}\n.export-group-selector .selector-header .selector-title[data-v-7b8cce48] {\n font-size: 14px;\n color: var(--mb-text-secondary);\n font-weight: 500;\n}\n.export-group-selector .group-checkbox-list[data-v-7b8cce48] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n max-height: 300px;\n overflow-y: auto;\n padding: 8px 0;\n}\n.export-group-selector .group-checkbox-list .group-checkbox-item[data-v-7b8cce48] {\n padding: 12px;\n border: 1px solid var(--mb-border-color-deep);\n border-radius: 4px;\n}\n.export-group-selector .group-checkbox-list .group-checkbox-item[data-v-7b8cce48]:hover {\n border-color: var(--mb-accent-blue);\n background: var(--mb-accent-blue-bg);\n}\n.export-group-selector .group-checkbox-list .group-checkbox-item[data-v-7b8cce48] .el-checkbox {\n display: flex;\n align-items: flex-start;\n width: 100%;\n}\n.export-group-selector .group-checkbox-list .group-checkbox-item[data-v-7b8cce48] .el-checkbox .el-checkbox__input {\n margin-top: 2px;\n}\n.export-group-selector .group-checkbox-list .group-checkbox-item[data-v-7b8cce48] .el-checkbox .el-checkbox__label {\n flex: 1;\n padding-left: 8px;\n width: 0;\n}\n.export-group-selector .group-checkbox-list .group-info[data-v-7b8cce48] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 12px;\n}\n.export-group-selector .group-checkbox-list .group-info .group-name[data-v-7b8cce48] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mb-text-primary);\n flex: 1;\n min-width: 0;\n overflow: hidden;\n}\n.export-group-selector .group-checkbox-list .group-info .group-meta[data-v-7b8cce48] {\n font-size: 12px;\n color: var(--mb-text-muted);\n white-space: nowrap;\n flex-shrink: 0;\n}\n.export-group-selector .export-summary[data-v-7b8cce48] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--mb-border-color);\n text-align: center;\n font-size: 14px;\n color: var(--mb-text-secondary);\n}\n.export-group-selector .export-summary strong[data-v-7b8cce48] {\n color: var(--mb-accent-blue);\n font-size: 16px;\n}\n.import-preview__header[data-v-7b8cce48] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--mb-border-color);\n}\n.import-preview__info[data-v-7b8cce48] {\n font-size: 14px;\n color: var(--mb-text-secondary);\n}\n.import-preview__actions[data-v-7b8cce48] {\n display: flex;\n gap: 8px;\n}\n", ""]);
8230
8590
  // Exports
8231
8591
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8232
8592
 
@@ -8250,7 +8610,7 @@ __webpack_require__.r(__webpack_exports__);
8250
8610
 
8251
8611
  var ___CSS_LOADER_EXPORT___ = _node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
8252
8612
  // Module
8253
- ___CSS_LOADER_EXPORT___.push([module.id, ".action-panel__rules-row .el-radio-button__inner {\n padding: 5px 10px;\n font-size: 12px;\n white-space: nowrap;\n}\n.more-settings-popover {\n padding: 4px 0 !important;\n min-width: 140px;\n background: var(--mb-bg-overlay) !important;\n border-color: var(--mb-border-color) !important;\n}\n.more-settings-popover .popper__arrow {\n border-bottom-color: var(--mb-border-color) !important;\n}\n.more-settings-popover .popper__arrow::after {\n border-bottom-color: var(--mb-bg-overlay) !important;\n}\n.more-settings-popover .more-settings-menu__item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 9px 16px;\n font-size: 13px;\n color: var(--mb-text-primary);\n cursor: pointer;\n}\n.more-settings-popover .more-settings-menu__item:hover {\n background: var(--mb-accent-blue-bg);\n color: var(--mb-accent-blue);\n}\n.more-settings-popover .more-settings-menu__item i {\n font-size: 14px;\n}\n.more-settings-popover .more-settings-menu__divider {\n height: 1px;\n background: var(--mb-border-color);\n margin: 4px 0;\n}\n.import-preview-dialog .el-dialog__body {\n padding: 20px;\n}\n", ""]);
8613
+ ___CSS_LOADER_EXPORT___.push([module.id, ".more-settings-popover {\n padding: 4px 0 !important;\n min-width: 140px;\n background: var(--mb-bg-overlay) !important;\n border-color: var(--mb-border-color) !important;\n}\n.more-settings-popover .popper__arrow {\n border-bottom-color: var(--mb-border-color) !important;\n}\n.more-settings-popover .popper__arrow::after {\n border-bottom-color: var(--mb-bg-overlay) !important;\n}\n.more-settings-popover .more-settings-menu__item {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 9px 16px;\n font-size: 13px;\n color: var(--mb-text-primary);\n cursor: pointer;\n}\n.more-settings-popover .more-settings-menu__item:hover {\n background: var(--mb-accent-blue-bg);\n color: var(--mb-accent-blue);\n}\n.more-settings-popover .more-settings-menu__item i {\n font-size: 14px;\n}\n.more-settings-popover .more-settings-menu__divider {\n height: 1px;\n background: var(--mb-border-color);\n margin: 4px 0;\n}\n.import-preview-dialog .el-dialog__body {\n padding: 20px;\n}\n", ""]);
8254
8614
  // Exports
8255
8615
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8256
8616
 
@@ -8457,6 +8817,50 @@ if(false) // removed by dead control flow
8457
8817
 
8458
8818
  /***/ }),
8459
8819
 
8820
+ /***/ "./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less":
8821
+ /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
8822
+ !*** ./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less ***!
8823
+ \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
8824
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
8825
+
8826
+ // style-loader: Adds some css to the DOM by adding a <style> tag
8827
+
8828
+ // load the styles
8829
+ var content = __webpack_require__(/*! !!../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!../../../node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less */ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less");
8830
+ if(content.__esModule) content = content.default;
8831
+ if(typeof content === 'string') content = [[module.id, content, '']];
8832
+ if(content.locals) module.exports = content.locals;
8833
+ // add the styles to the DOM
8834
+ var add = (__webpack_require__(/*! !../../../node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/lib/addStylesClient.js */ "./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/lib/addStylesClient.js")["default"])
8835
+ var update = add("46342588", content, false, {"sourceMap":false,"shadowMode":false});
8836
+ // Hot Module Replacement
8837
+ if(false) // removed by dead control flow
8838
+ {}
8839
+
8840
+ /***/ }),
8841
+
8842
+ /***/ "./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true":
8843
+ /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
8844
+ !*** ./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true ***!
8845
+ \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
8846
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
8847
+
8848
+ // style-loader: Adds some css to the DOM by adding a <style> tag
8849
+
8850
+ // load the styles
8851
+ var content = __webpack_require__(/*! !!../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!../../../node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true */ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true");
8852
+ if(content.__esModule) content = content.default;
8853
+ if(typeof content === 'string') content = [[module.id, content, '']];
8854
+ if(content.locals) module.exports = content.locals;
8855
+ // add the styles to the DOM
8856
+ var add = (__webpack_require__(/*! !../../../node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/lib/addStylesClient.js */ "./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/lib/addStylesClient.js")["default"])
8857
+ var update = add("4f4c5fd2", content, false, {"sourceMap":false,"shadowMode":false});
8858
+ // Hot Module Replacement
8859
+ if(false) // removed by dead control flow
8860
+ {}
8861
+
8862
+ /***/ }),
8863
+
8460
8864
  /***/ "./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestList.vue?vue&type=style&index=0&id=1d02c492&lang=less&scoped=true":
8461
8865
  /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
8462
8866
  !*** ./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestList.vue?vue&type=style&index=0&id=1d02c492&lang=less&scoped=true ***!
@@ -8479,6 +8883,28 @@ if(false) // removed by dead control flow
8479
8883
 
8480
8884
  /***/ }),
8481
8885
 
8886
+ /***/ "./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less":
8887
+ /*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
8888
+ !*** ./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less ***!
8889
+ \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
8890
+ /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
8891
+
8892
+ // style-loader: Adds some css to the DOM by adding a <style> tag
8893
+
8894
+ // load the styles
8895
+ var content = __webpack_require__(/*! !!../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!../../../node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less */ "./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less");
8896
+ if(content.__esModule) content = content.default;
8897
+ if(typeof content === 'string') content = [[module.id, content, '']];
8898
+ if(content.locals) module.exports = content.locals;
8899
+ // add the styles to the DOM
8900
+ var add = (__webpack_require__(/*! !../../../node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/lib/addStylesClient.js */ "./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/lib/addStylesClient.js")["default"])
8901
+ var update = add("1fe6e0e6", content, false, {"sourceMap":false,"shadowMode":false});
8902
+ // Hot Module Replacement
8903
+ if(false) // removed by dead control flow
8904
+ {}
8905
+
8906
+ /***/ }),
8907
+
8482
8908
  /***/ "./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/ResponsePanel.vue?vue&type=style&index=0&id=c23cd6a6&lang=less&scoped=true":
8483
8909
  /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
8484
8910
  !*** ./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/ResponsePanel.vue?vue&type=style&index=0&id=c23cd6a6&lang=less&scoped=true ***!
@@ -9124,6 +9550,111 @@ __webpack_require__.r(__webpack_exports__);
9124
9550
  /* harmony import */ var _node_modules_pnpm_babel_loader_8_4_1_babel_core_7_12_16_webpack_5_100_1_node_modules_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestDetail_vue_vue_type_template_id_77bc97aa_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.12.16_webpack@5.100.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestDetail.vue?vue&type=template&id=77bc97aa&scoped=true */ "./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.12.16_webpack@5.100.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestDetail.vue?vue&type=template&id=77bc97aa&scoped=true");
9125
9551
 
9126
9552
 
9553
+ /***/ }),
9554
+
9555
+ /***/ "./src/components/content/RequestInfoDialog.vue":
9556
+ /*!******************************************************!*\
9557
+ !*** ./src/components/content/RequestInfoDialog.vue ***!
9558
+ \******************************************************/
9559
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9560
+
9561
+ "use strict";
9562
+ __webpack_require__.r(__webpack_exports__);
9563
+ /* harmony import */ var _RequestInfoDialog_vue_vue_type_template_id_b9cf4022_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RequestInfoDialog.vue?vue&type=template&id=b9cf4022&scoped=true */ "./src/components/content/RequestInfoDialog.vue?vue&type=template&id=b9cf4022&scoped=true");
9564
+ /* harmony import */ var _RequestInfoDialog_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RequestInfoDialog.vue?vue&type=script&setup=true&lang=js */ "./src/components/content/RequestInfoDialog.vue?vue&type=script&setup=true&lang=js");
9565
+ /* harmony import */ var _RequestInfoDialog_vue_vue_type_style_index_0_id_b9cf4022_lang_less__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less */ "./src/components/content/RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less");
9566
+ /* harmony import */ var _RequestInfoDialog_vue_vue_type_style_index_1_id_b9cf4022_lang_less_scoped_true__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true */ "./src/components/content/RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true");
9567
+ /* harmony import */ var _node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/runtime/componentNormalizer.js");
9568
+
9569
+
9570
+
9571
+ ;
9572
+
9573
+
9574
+
9575
+ /* normalize component */
9576
+
9577
+ var component = (0,_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_4__["default"])(
9578
+ _RequestInfoDialog_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
9579
+ _RequestInfoDialog_vue_vue_type_template_id_b9cf4022_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render,
9580
+ _RequestInfoDialog_vue_vue_type_template_id_b9cf4022_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
9581
+ false,
9582
+ null,
9583
+ "b9cf4022",
9584
+ null
9585
+
9586
+ )
9587
+
9588
+ /* hot reload */
9589
+ if (false) // removed by dead control flow
9590
+ { var api; }
9591
+ component.options.__file = "src/components/content/RequestInfoDialog.vue"
9592
+ /* harmony default export */ __webpack_exports__["default"] = (component.exports);
9593
+
9594
+ /***/ }),
9595
+
9596
+ /***/ "./src/components/content/RequestInfoDialog.vue?vue&type=script&setup=true&lang=js":
9597
+ /*!*****************************************************************************************!*\
9598
+ !*** ./src/components/content/RequestInfoDialog.vue?vue&type=script&setup=true&lang=js ***!
9599
+ \*****************************************************************************************/
9600
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9601
+
9602
+ "use strict";
9603
+ __webpack_require__.r(__webpack_exports__);
9604
+ /* harmony import */ var _node_modules_pnpm_babel_loader_8_4_1_babel_core_7_12_16_webpack_5_100_1_node_modules_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.12.16_webpack@5.100.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestInfoDialog.vue?vue&type=script&setup=true&lang=js */ "./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.12.16_webpack@5.100.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=script&setup=true&lang=js");
9605
+ /* harmony default export */ __webpack_exports__["default"] = (_node_modules_pnpm_babel_loader_8_4_1_babel_core_7_12_16_webpack_5_100_1_node_modules_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]);
9606
+
9607
+ /***/ }),
9608
+
9609
+ /***/ "./src/components/content/RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less":
9610
+ /*!***************************************************************************************************!*\
9611
+ !*** ./src/components/content/RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less ***!
9612
+ \***************************************************************************************************/
9613
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9614
+
9615
+ "use strict";
9616
+ __webpack_require__.r(__webpack_exports__);
9617
+ /* harmony import */ var _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_style_index_0_id_b9cf4022_lang_less__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!../../../node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less */ "./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=0&id=b9cf4022&lang=less");
9618
+ /* harmony import */ var _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_style_index_0_id_b9cf4022_lang_less__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_style_index_0_id_b9cf4022_lang_less__WEBPACK_IMPORTED_MODULE_0__);
9619
+ /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};
9620
+ /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_style_index_0_id_b9cf4022_lang_less__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_style_index_0_id_b9cf4022_lang_less__WEBPACK_IMPORTED_MODULE_0__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)
9621
+ /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
9622
+
9623
+
9624
+ /***/ }),
9625
+
9626
+ /***/ "./src/components/content/RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true":
9627
+ /*!***************************************************************************************************************!*\
9628
+ !*** ./src/components/content/RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true ***!
9629
+ \***************************************************************************************************************/
9630
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9631
+
9632
+ "use strict";
9633
+ __webpack_require__.r(__webpack_exports__);
9634
+ /* harmony import */ var _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_style_index_1_id_b9cf4022_lang_less_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!../../../node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true */ "./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=style&index=1&id=b9cf4022&lang=less&scoped=true");
9635
+ /* harmony import */ var _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_style_index_1_id_b9cf4022_lang_less_scoped_true__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_style_index_1_id_b9cf4022_lang_less_scoped_true__WEBPACK_IMPORTED_MODULE_0__);
9636
+ /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};
9637
+ /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_style_index_1_id_b9cf4022_lang_less_scoped_true__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_style_index_1_id_b9cf4022_lang_less_scoped_true__WEBPACK_IMPORTED_MODULE_0__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)
9638
+ /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
9639
+
9640
+
9641
+ /***/ }),
9642
+
9643
+ /***/ "./src/components/content/RequestInfoDialog.vue?vue&type=template&id=b9cf4022&scoped=true":
9644
+ /*!************************************************************************************************!*\
9645
+ !*** ./src/components/content/RequestInfoDialog.vue?vue&type=template&id=b9cf4022&scoped=true ***!
9646
+ \************************************************************************************************/
9647
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9648
+
9649
+ "use strict";
9650
+ __webpack_require__.r(__webpack_exports__);
9651
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
9652
+ /* harmony export */ render: function() { return /* reexport safe */ _node_modules_pnpm_babel_loader_8_4_1_babel_core_7_12_16_webpack_5_100_1_node_modules_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_template_id_b9cf4022_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render; },
9653
+ /* harmony export */ staticRenderFns: function() { return /* reexport safe */ _node_modules_pnpm_babel_loader_8_4_1_babel_core_7_12_16_webpack_5_100_1_node_modules_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_template_id_b9cf4022_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns; }
9654
+ /* harmony export */ });
9655
+ /* harmony import */ var _node_modules_pnpm_babel_loader_8_4_1_babel_core_7_12_16_webpack_5_100_1_node_modules_babel_loader_lib_index_js_clonedRuleSet_40_use_0_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_templateLoader_js_ruleSet_1_rules_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestInfoDialog_vue_vue_type_template_id_b9cf4022_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.12.16_webpack@5.100.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestInfoDialog.vue?vue&type=template&id=b9cf4022&scoped=true */ "./node_modules/.pnpm/babel-loader@8.4.1_@babel+core@7.12.16_webpack@5.100.1/node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[0]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestInfoDialog.vue?vue&type=template&id=b9cf4022&scoped=true");
9656
+
9657
+
9127
9658
  /***/ }),
9128
9659
 
9129
9660
  /***/ "./src/components/content/RequestList.vue":
@@ -9137,16 +9668,18 @@ __webpack_require__.r(__webpack_exports__);
9137
9668
  /* harmony import */ var _RequestList_vue_vue_type_template_id_1d02c492_scoped_true__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./RequestList.vue?vue&type=template&id=1d02c492&scoped=true */ "./src/components/content/RequestList.vue?vue&type=template&id=1d02c492&scoped=true");
9138
9669
  /* harmony import */ var _RequestList_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./RequestList.vue?vue&type=script&setup=true&lang=js */ "./src/components/content/RequestList.vue?vue&type=script&setup=true&lang=js");
9139
9670
  /* harmony import */ var _RequestList_vue_vue_type_style_index_0_id_1d02c492_lang_less_scoped_true__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./RequestList.vue?vue&type=style&index=0&id=1d02c492&lang=less&scoped=true */ "./src/components/content/RequestList.vue?vue&type=style&index=0&id=1d02c492&lang=less&scoped=true");
9140
- /* harmony import */ var _node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/runtime/componentNormalizer.js");
9671
+ /* harmony import */ var _RequestList_vue_vue_type_style_index_1_id_1d02c492_lang_less__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less */ "./src/components/content/RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less");
9672
+ /* harmony import */ var _node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/runtime/componentNormalizer.js");
9141
9673
 
9142
9674
 
9143
9675
 
9144
9676
  ;
9145
9677
 
9146
9678
 
9679
+
9147
9680
  /* normalize component */
9148
9681
 
9149
- var component = (0,_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
9682
+ var component = (0,_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_4__["default"])(
9150
9683
  _RequestList_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"],
9151
9684
  _RequestList_vue_vue_type_template_id_1d02c492_scoped_true__WEBPACK_IMPORTED_MODULE_0__.render,
9152
9685
  _RequestList_vue_vue_type_template_id_1d02c492_scoped_true__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns,
@@ -9193,6 +9726,23 @@ __webpack_require__.r(__webpack_exports__);
9193
9726
  /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
9194
9727
 
9195
9728
 
9729
+ /***/ }),
9730
+
9731
+ /***/ "./src/components/content/RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less":
9732
+ /*!*********************************************************************************************!*\
9733
+ !*** ./src/components/content/RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less ***!
9734
+ \*********************************************************************************************/
9735
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9736
+
9737
+ "use strict";
9738
+ __webpack_require__.r(__webpack_exports__);
9739
+ /* harmony import */ var _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestList_vue_vue_type_style_index_1_id_1d02c492_lang_less__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!../../../node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!../../../node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!../../../node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less */ "./node_modules/.pnpm/vue-style-loader@4.1.3/node_modules/vue-style-loader/index.js??clonedRuleSet-32.use[0]!./node_modules/.pnpm/css-loader@6.11.0_webpack@5.100.2/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/.pnpm/postcss-loader@6.2.1_postcss@8.5.6_webpack@5.100.1/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/.pnpm/less-loader@11.0.0_less@4.1.2_webpack@5.100.2/node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.use[3]!./node_modules/.pnpm/vue-loader@15.11.1_css-loader@6.11.0_vue-template-compiler@2.6.14_webpack@5.100.1/node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/content/RequestList.vue?vue&type=style&index=1&id=1d02c492&lang=less");
9740
+ /* harmony import */ var _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestList_vue_vue_type_style_index_1_id_1d02c492_lang_less__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestList_vue_vue_type_style_index_1_id_1d02c492_lang_less__WEBPACK_IMPORTED_MODULE_0__);
9741
+ /* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};
9742
+ /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestList_vue_vue_type_style_index_1_id_1d02c492_lang_less__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _node_modules_pnpm_vue_style_loader_4_1_3_node_modules_vue_style_loader_index_js_clonedRuleSet_32_use_0_node_modules_pnpm_css_loader_6_11_0_webpack_5_100_2_node_modules_css_loader_dist_cjs_js_clonedRuleSet_32_use_1_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_pnpm_postcss_loader_6_2_1_postcss_8_5_6_webpack_5_100_1_node_modules_postcss_loader_dist_cjs_js_clonedRuleSet_32_use_2_node_modules_pnpm_less_loader_11_0_0_less_4_1_2_webpack_5_100_2_node_modules_less_loader_dist_cjs_js_clonedRuleSet_32_use_3_node_modules_pnpm_vue_loader_15_11_1_css_loader_6_11_0_vue_template_compiler_2_6_14_webpack_5_100_1_node_modules_vue_loader_lib_index_js_vue_loader_options_RequestList_vue_vue_type_style_index_1_id_1d02c492_lang_less__WEBPACK_IMPORTED_MODULE_0__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)
9743
+ /* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
9744
+
9745
+
9196
9746
  /***/ }),
9197
9747
 
9198
9748
  /***/ "./src/components/content/RequestList.vue?vue&type=template&id=1d02c492&scoped=true":
@@ -11221,6 +11771,22 @@ const execCommandCopy = (text, done) => {
11221
11771
 
11222
11772
  /***/ }),
11223
11773
 
11774
+ /***/ "./src/utils/constants.js":
11775
+ /*!********************************!*\
11776
+ !*** ./src/utils/constants.js ***!
11777
+ \********************************/
11778
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
11779
+
11780
+ "use strict";
11781
+ __webpack_require__.r(__webpack_exports__);
11782
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11783
+ /* harmony export */ TOOLTIP_DELAY: function() { return /* binding */ TOOLTIP_DELAY; }
11784
+ /* harmony export */ });
11785
+ /** tooltip 统一延迟时间(ms) */
11786
+ const TOOLTIP_DELAY = 500;
11787
+
11788
+ /***/ }),
11789
+
11224
11790
  /***/ "./src/utils/createSingletonHook.js":
11225
11791
  /*!******************************************!*\
11226
11792
  !*** ./src/utils/createSingletonHook.js ***!
@@ -11599,24 +12165,6 @@ function registerMonacoPreviews() {
11599
12165
  });
11600
12166
  }
11601
12167
 
11602
- // ── 大数字千分位 ──────────────────────────────────────────────────────
11603
- const bigNumRegex = /:\s*(-?\d+(?:\.\d+)?)\b/g;
11604
- while ((match = bigNumRegex.exec(line)) !== null) {
11605
- const num = Number(match[1]);
11606
- if (!isFinite(num) || Math.abs(num) < 10000) continue;
11607
- if ((0,_preview__WEBPACK_IMPORTED_MODULE_4__.isTimestamp)(num)) continue;
11608
- const column = match.index + match[0].length + 1;
11609
- hints.push({
11610
- position: {
11611
- lineNumber,
11612
- column
11613
- },
11614
- label: num.toLocaleString('en-US'),
11615
- kind: monaco_editor__WEBPACK_IMPORTED_MODULE_3__.languages.InlayHintKind.Type,
11616
- paddingLeft: true
11617
- });
11618
- }
11619
-
11620
12168
  // ── 数组元素索引 ──────────────────────────────────────────────────────
11621
12169
  const arrayIdx = arrayIndexMap.get(lineNumber);
11622
12170
  if (arrayIdx !== undefined) {