whistle.mockbubu 2.2.4 → 2.2.6

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
@@ -1756,11 +1756,17 @@ const __default__ = {
1756
1756
  __webpack_require__.r(__webpack_exports__);
1757
1757
  /* 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
1758
  /* 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");
1759
+ /* 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");
1760
+ /* 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__);
1761
+ /* 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");
1762
+ /* 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__);
1763
+ /* 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");
1764
+ /* 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__);
1765
+ /* 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");
1766
+ /* 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__);
1767
+ /* 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");
1768
+
1769
+
1764
1770
 
1765
1771
 
1766
1772
 
@@ -1770,17 +1776,14 @@ const __default__ = {
1770
1776
  };
1771
1777
  /* harmony default export */ __webpack_exports__["default"] = (/*#__PURE__*/Object.assign(__default__, {
1772
1778
  props: {
1773
- /** 当前规则的条件列表 */
1774
1779
  conditions: {
1775
1780
  type: Array,
1776
1781
  default: () => []
1777
1782
  },
1778
- /** 捕获到的 query 参数(来自 file.json session) */
1779
1783
  capturedQuery: {
1780
1784
  type: Object,
1781
1785
  default: () => ({})
1782
1786
  },
1783
- /** 捕获到的 payload 参数(来自 file.json session) */
1784
1787
  capturedPayload: {
1785
1788
  type: Object,
1786
1789
  default: () => ({})
@@ -1791,48 +1794,187 @@ const __default__ = {
1791
1794
  emit
1792
1795
  }) {
1793
1796
  const props = __props;
1797
+ const OPERATORS = [{
1798
+ value: 'eq',
1799
+ symbol: '=',
1800
+ text: '等于',
1801
+ label: '= 等于'
1802
+ }, {
1803
+ value: 'neq',
1804
+ symbol: '≠',
1805
+ text: '不等于',
1806
+ label: '≠ 不等于'
1807
+ }, {
1808
+ value: 'contains',
1809
+ symbol: '⊃',
1810
+ text: '包含',
1811
+ label: '⊃ 包含'
1812
+ }, {
1813
+ value: 'regex',
1814
+ symbol: '.*',
1815
+ text: '正则',
1816
+ label: '.* 正则'
1817
+ }, {
1818
+ value: 'exists',
1819
+ symbol: '∃',
1820
+ text: '存在',
1821
+ label: '∃ 存在'
1822
+ }, {
1823
+ value: 'not_exists',
1824
+ symbol: '∄',
1825
+ text: '不存在',
1826
+ label: '∄ 不存在'
1827
+ }];
1794
1828
 
1795
- // 本地副本,编辑时使用
1796
- const localConditions = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)([]);
1797
- const showCapturedParams = (0,vue__WEBPACK_IMPORTED_MODULE_3__.ref)(false);
1829
+ /** exists / not_exists 不需要 value 输入 */
1830
+ const VALUELESS_OPS = new Set(['exists', 'not_exists']);
1831
+ const isValueless = op => VALUELESS_OPS.has(op);
1798
1832
 
1799
- // 初始化 & 同步 props → local
1800
- (0,vue__WEBPACK_IMPORTED_MODULE_3__.watch)(() => props.conditions, newVal => {
1833
+ /** 条件是否不完整(会被后端跳过) */
1834
+ const isIncomplete = cond => {
1835
+ if (!cond.key) return true;
1836
+ return !isValueless(cond.operator) && !cond.value;
1837
+ };
1838
+ const localConditions = (0,vue__WEBPACK_IMPORTED_MODULE_5__.ref)([]);
1839
+ const showCapturedParams = (0,vue__WEBPACK_IMPORTED_MODULE_5__.ref)(false);
1840
+ (0,vue__WEBPACK_IMPORTED_MODULE_5__.watch)(() => props.conditions, newVal => {
1801
1841
  localConditions.value = (newVal || []).map(c => ({
1802
- ...c
1842
+ ...c,
1843
+ operator: c.operator || 'eq',
1844
+ _regexError: validateRegex(c.operator, c.value)
1803
1845
  }));
1804
1846
  }, {
1805
1847
  immediate: true,
1806
1848
  deep: true
1807
1849
  });
1808
1850
 
1809
- // capturedQuery/capturedPayload 对象转换为数组
1810
- const queryParamList = (0,vue__WEBPACK_IMPORTED_MODULE_3__.computed)(() => Object.entries(props.capturedQuery || {}).map(([key, value]) => ({
1851
+ /** 校验正则语法,返回错误描述或 null */
1852
+ function validateRegex(operator, value) {
1853
+ if (operator !== 'regex' || !value) return null;
1854
+ try {
1855
+ // eslint-disable-next-line no-new-regexp
1856
+ new RegExp(value);
1857
+ return null;
1858
+ } catch (e) {
1859
+ return `正则语法错误:${e.message}`;
1860
+ }
1861
+ }
1862
+
1863
+ // ---- 冲突检测 ----
1864
+
1865
+ /**
1866
+ * 规则内冲突类型:
1867
+ * 1. 同 source+key 出现 exists + not_exists → 永远矛盾
1868
+ * 2. 同 source+key 出现多个 eq 但值不同 → 不可能同时满足
1869
+ * 3. 同 source+key 出现 eq X + neq X(相同值) → 矛盾
1870
+ * 4. 同 source+key 重复 key(其他情况) → 冗余警告
1871
+ */
1872
+ const conflictIndexes = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => new Set(conflictData.value.map(c => c.index)));
1873
+ const conflictMessages = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {
1874
+ const map = {};
1875
+ conflictData.value.forEach(c => {
1876
+ map[c.index] = c.msg;
1877
+ });
1878
+ return map;
1879
+ });
1880
+ const conflictData = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => {
1881
+ const results = [];
1882
+ const grouped = {};
1883
+ localConditions.value.forEach((cond, index) => {
1884
+ if (!cond.key) return;
1885
+ const gk = `${cond.source}::${cond.key}`;
1886
+ (grouped[gk] = grouped[gk] || []).push({
1887
+ index,
1888
+ cond
1889
+ });
1890
+ });
1891
+ Object.values(grouped).forEach(group => {
1892
+ if (group.length < 2) return;
1893
+ const ops = group.map(g => g.cond.operator || 'eq');
1894
+ const hasExists = ops.includes('exists');
1895
+ const hasNotExists = ops.includes('not_exists');
1896
+ if (hasExists && hasNotExists) {
1897
+ group.forEach(({
1898
+ index
1899
+ }) => results.push({
1900
+ index,
1901
+ msg: '矛盾:同一参数同时要求"存在"和"不存在",此规则永远无法命中'
1902
+ }));
1903
+ return;
1904
+ }
1905
+ const eqVals = group.filter(g => (g.cond.operator || 'eq') === 'eq').map(g => String(g.cond.value || ''));
1906
+ const uniqueEqVals = new Set(eqVals);
1907
+ if (uniqueEqVals.size > 1) {
1908
+ group.filter(g => (g.cond.operator || 'eq') === 'eq').forEach(({
1909
+ index
1910
+ }) => results.push({
1911
+ index,
1912
+ msg: '矛盾:同一参数设置了多个不同的"等于"值,无法同时满足'
1913
+ }));
1914
+ return;
1915
+ }
1916
+ const neqVals = group.filter(g => g.cond.operator === 'neq').map(g => String(g.cond.value || ''));
1917
+ if (eqVals.length > 0 && neqVals.includes(eqVals[0])) {
1918
+ group.forEach(({
1919
+ index
1920
+ }) => results.push({
1921
+ index,
1922
+ msg: '矛盾:同一参数的"等于"和"不等于"使用了相同的值,无法同时满足'
1923
+ }));
1924
+ return;
1925
+ }
1926
+
1927
+ // 其他重复 key 的组合(如重复 contains 等)视为冗余警告
1928
+ group.forEach(({
1929
+ index
1930
+ }) => results.push({
1931
+ index,
1932
+ msg: `注意:同一参数 "${group[0].cond.key}" 出现了多条条件,请确认是否符合预期`
1933
+ }));
1934
+ });
1935
+ return results;
1936
+ });
1937
+
1938
+ // ---- 操作符切换 ----
1939
+
1940
+ function onOperatorChange(cond) {
1941
+ if (isValueless(cond.operator)) {
1942
+ cond.value = '';
1943
+ cond._regexError = null;
1944
+ } else {
1945
+ cond._regexError = validateRegex(cond.operator, cond.value);
1946
+ }
1947
+ emitChange();
1948
+ }
1949
+ function onValueBlur(cond) {
1950
+ cond._regexError = validateRegex(cond.operator, cond.value);
1951
+ emitChange();
1952
+ }
1953
+
1954
+ // ---- 捕获参数 ----
1955
+
1956
+ const queryParamList = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => Object.entries(props.capturedQuery || {}).map(([key, value]) => ({
1811
1957
  key,
1812
1958
  value: String(value)
1813
1959
  })));
1814
- const payloadParamList = (0,vue__WEBPACK_IMPORTED_MODULE_3__.computed)(() => Object.entries(props.capturedPayload || {}).map(([key, value]) => ({
1960
+ const payloadParamList = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => Object.entries(props.capturedPayload || {}).map(([key, value]) => ({
1815
1961
  key,
1816
1962
  value: String(value)
1817
1963
  })));
1818
- const hasCapturedParams = (0,vue__WEBPACK_IMPORTED_MODULE_3__.computed)(() => queryParamList.value.length > 0 || payloadParamList.value.length > 0);
1819
-
1820
- /** 判断某个捕获参数是否已被添加到条件中 */
1964
+ const hasCapturedParams = (0,vue__WEBPACK_IMPORTED_MODULE_5__.computed)(() => queryParamList.value.length > 0 || payloadParamList.value.length > 0);
1821
1965
  function isCapturedParamAdded(source, key) {
1822
1966
  return localConditions.value.some(c => c.source === source && c.key === key);
1823
1967
  }
1824
-
1825
- /** 手动添加一行空条件 */
1826
1968
  function addCondition() {
1827
1969
  localConditions.value.push({
1828
1970
  source: 'query',
1829
1971
  key: '',
1830
- value: ''
1972
+ operator: 'eq',
1973
+ value: '',
1974
+ _regexError: null
1831
1975
  });
1832
1976
  emitChange();
1833
1977
  }
1834
-
1835
- /** 从捕获参数面板中切换条件(添加/移除) */
1836
1978
  function toggleCapturedParam(source, key, value) {
1837
1979
  const existIndex = localConditions.value.findIndex(c => c.source === source && c.key === key);
1838
1980
  if (existIndex > -1) {
@@ -1841,30 +1983,41 @@ const __default__ = {
1841
1983
  localConditions.value.push({
1842
1984
  source,
1843
1985
  key,
1844
- value
1986
+ operator: 'eq',
1987
+ value,
1988
+ _regexError: null
1845
1989
  });
1846
1990
  }
1847
1991
  emitChange();
1848
1992
  }
1849
-
1850
- /** 删除某行条件 */
1851
1993
  function removeCondition(index) {
1852
1994
  localConditions.value.splice(index, 1);
1853
1995
  emitChange();
1854
1996
  }
1855
-
1856
- /** 向父组件同步变更 */
1857
1997
  function emitChange() {
1858
- emit('update:conditions', localConditions.value.map(c => ({
1998
+ emit('update:conditions', localConditions.value.map(({
1999
+ _regexError,
2000
+ ...c
2001
+ }) => ({
1859
2002
  ...c
1860
2003
  })));
1861
2004
  }
1862
2005
  return {
1863
2006
  __sfc: true,
2007
+ OPERATORS,
2008
+ VALUELESS_OPS,
2009
+ isValueless,
2010
+ isIncomplete,
1864
2011
  props,
1865
2012
  emit,
1866
2013
  localConditions,
1867
2014
  showCapturedParams,
2015
+ validateRegex,
2016
+ conflictIndexes,
2017
+ conflictMessages,
2018
+ conflictData,
2019
+ onOperatorChange,
2020
+ onValueBlur,
1868
2021
  queryParamList,
1869
2022
  payloadParamList,
1870
2023
  hasCapturedParams,
@@ -2290,7 +2443,7 @@ __webpack_require__.r(__webpack_exports__);
2290
2443
 
2291
2444
 
2292
2445
 
2293
- // 条件匹配模式常量(与后端保持一致)
2446
+ // 与后端 DEFAULT_VERSION_NAME / MATCH_MODE_VALUE 保持一致
2294
2447
 
2295
2448
  const __default__ = {
2296
2449
  name: 'ResponsePanel'
@@ -2312,11 +2465,31 @@ const __default__ = {
2312
2465
  emit
2313
2466
  }) {
2314
2467
  const props = __props;
2468
+ const SOURCE_VERSION_NAME = 'source';
2315
2469
  const MATCH_MODE_VALUE = '__match_mode__';
2316
2470
  const editRef = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(null);
2317
2471
  const fullScreenEditorRef = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(null);
2318
2472
  const versionNameInput = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(null);
2319
2473
  const matchRuleNameInput = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(null);
2474
+ const tabsAreaRef = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(null);
2475
+ const tabsFade = (0,vue__WEBPACK_IMPORTED_MODULE_12__.reactive)({
2476
+ top: false,
2477
+ bottom: false
2478
+ });
2479
+ const headerCollapsed = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(false);
2480
+ let tabsFadePending = false;
2481
+ const updateTabsFade = () => {
2482
+ if (tabsFadePending) return;
2483
+ tabsFadePending = true;
2484
+ requestAnimationFrame(() => {
2485
+ const el = tabsAreaRef.value;
2486
+ if (el) {
2487
+ tabsFade.top = el.scrollTop > 2;
2488
+ tabsFade.bottom = el.scrollTop + el.clientHeight < el.scrollHeight - 14;
2489
+ }
2490
+ tabsFadePending = false;
2491
+ });
2492
+ };
2320
2493
  const responseList = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)([]);
2321
2494
  const currentFile = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)({
2322
2495
  content: {}
@@ -2339,6 +2512,8 @@ const __default__ = {
2339
2512
  // ========== 条件匹配模式状态 ==========
2340
2513
  // 当前显示模式:'version' = 版本直选,'match' = 条件匹配
2341
2514
  const mockMode = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)('version');
2515
+ // 切换到条件匹配前记录的版本名,切回时用于恢复选中
2516
+ const prevVersionNameBeforeMatch = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(null);
2342
2517
  // 模式下拉是否展开
2343
2518
  const modeDropdownVisible = (0,vue__WEBPACK_IMPORTED_MODULE_12__.ref)(false);
2344
2519
  // 匹配规则列表
@@ -2356,6 +2531,45 @@ const __default__ = {
2356
2531
  description: '',
2357
2532
  editingRule: null
2358
2533
  });
2534
+ /**
2535
+ * 跨规则冲突检测:条件集等价的两条规则中,低优先级的永远无法命中。
2536
+ * 返回 { [ruleId]: conflictMsg } 的对象,有冲突时才有对应条目。
2537
+ *
2538
+ * "条件集等价"判断:两条规则的条件数相同,且每个条件的 source+key+operator+value 完全一致。
2539
+ * (排序后比较,与条件顺序无关)
2540
+ */
2541
+ const crossRuleConflicts = (0,vue__WEBPACK_IMPORTED_MODULE_12__.computed)(() => {
2542
+ const result = {};
2543
+ const list = matchRuleList.value;
2544
+ if (list.length < 2) return result;
2545
+ const condKey = c => `${c.source}::${c.key}::${c.operator || 'eq'}::${String(c.value || '')}`;
2546
+ const ruleFingerprint = rule => {
2547
+ const conds = (rule.conditions || []).map(condKey).sort();
2548
+ return conds.join('|');
2549
+ };
2550
+ const fpMap = {};
2551
+ list.forEach(rule => {
2552
+ const fp = ruleFingerprint(rule);
2553
+ (fpMap[fp] = fpMap[fp] || []).push(rule);
2554
+ });
2555
+ Object.values(fpMap).forEach(group => {
2556
+ if (group.length < 2) return;
2557
+ // 按后端排序规则:条件数多的先,priority 小的先
2558
+ const sorted = [...group].sort((a, b) => {
2559
+ const condDiff = (b.conditions?.length || 0) - (a.conditions?.length || 0);
2560
+ if (condDiff !== 0) return condDiff;
2561
+ return (a.priority || 0) - (b.priority || 0);
2562
+ });
2563
+ const winner = sorted[0];
2564
+ sorted.slice(1).forEach(rule => {
2565
+ result[rule.id] = `与规则「${winner.name}」条件完全相同,本规则永远不会被命中(优先级低)`;
2566
+ });
2567
+ // 赢家也做一个提示,告知它遮蔽了其他规则
2568
+ result[winner.id] = `遮蔽了 ${sorted.length - 1} 条条件完全相同的规则,可删除多余规则`;
2569
+ });
2570
+ return result;
2571
+ });
2572
+
2359
2573
  // 捕获到的参数(来自 file.json session,用于"从捕获参数选择")
2360
2574
  const capturedQuery = (0,vue__WEBPACK_IMPORTED_MODULE_12__.computed)(() => props.api.query || {});
2361
2575
  const capturedPayload = (0,vue__WEBPACK_IMPORTED_MODULE_12__.computed)(() => {
@@ -2474,9 +2688,9 @@ const __default__ = {
2474
2688
 
2475
2689
  /**
2476
2690
  * 获取已保存文件的完整版本列表(source + 历史版本)
2477
- * 后端返回的数据已经是统一格式:{ type, name, content, updateTime }
2691
+ * @param {string} [overrideTargetName] - 指定选中的版本名,不传则从 props.api.mockVersion 读取
2478
2692
  */
2479
- const getHistoryVersions = () => {
2693
+ const getHistoryVersions = overrideTargetName => {
2480
2694
  const fileId = props.api.id;
2481
2695
  return (0,_service__WEBPACK_IMPORTED_MODULE_11__.getVersions)({
2482
2696
  fileId
@@ -2504,23 +2718,32 @@ const __default__ = {
2504
2718
 
2505
2719
  // 后端返回的数据已经包含 type, name, content, updateTime
2506
2720
  // 只需添加 filename 字段用于兼容前端现有逻辑
2721
+ // 冻结每项的 content,阻止 Vue 2 对大对象进行深度响应式处理,避免主线程卡死
2507
2722
  versionList.forEach(item => {
2508
2723
  item.filename = item.name;
2724
+ item.content = Object.freeze(item.content || {});
2509
2725
  });
2510
2726
 
2511
2727
  // 直接替换列表数据
2512
2728
  responseList.value = versionList;
2513
2729
 
2514
- // 更新当前选中的文件
2515
- // 如果 mockVersion 为空或为 "source",选中 source
2516
- // 否则选中对应的版本
2517
- const targetName = mockVersion.value || 'source';
2730
+ // overrideTargetName 优先(如从条件匹配切回时由调用方传入),
2731
+ // 否则从 props.api.mockVersion 读取
2732
+ const targetName = overrideTargetName !== undefined ? overrideTargetName || SOURCE_VERSION_NAME : mockVersion.value || SOURCE_VERSION_NAME;
2518
2733
  const currentFileData = versionList.find(item => item.name === targetName);
2734
+
2735
+ // 选中项需要深拷贝一份可编辑副本(frozen 对象不可直接编辑)
2519
2736
  if (currentFileData) {
2520
- currentFile.value = currentFileData;
2737
+ currentFile.value = {
2738
+ ...currentFileData,
2739
+ content: JSON.parse(JSON.stringify(currentFileData.content))
2740
+ };
2521
2741
  } else {
2522
- // 如果找不到目标版本,默认选中第一个(通常是 source)
2523
- currentFile.value = versionList[0] || {};
2742
+ const first = versionList[0];
2743
+ currentFile.value = first ? {
2744
+ ...first,
2745
+ content: JSON.parse(JSON.stringify(first.content))
2746
+ } : {};
2524
2747
  }
2525
2748
  console.log('[ResponsePanel] 获取版本列表成功:', {
2526
2749
  total: versionList.length,
@@ -2533,24 +2756,9 @@ const __default__ = {
2533
2756
  throw err;
2534
2757
  });
2535
2758
  };
2536
-
2537
- /**
2538
- * 从已有版本名中计算下一个 v{n} 编号(历史最大编号+1,不与现有名重复)
2539
- */
2540
- const nextVersionName = () => {
2541
- const existing = new Set(responseList.value.map(item => item.filename));
2542
- let max = 0;
2543
- responseList.value.forEach(item => {
2544
- const m = /^v(\d+)$/.exec(item.filename);
2545
- if (m) max = Math.max(max, parseInt(m[1], 10));
2546
- });
2547
- let n = max + 1;
2548
- while (existing.has(`v${n}`)) n++;
2549
- return `v${n}`;
2550
- };
2551
2759
  const onCreate = () => {
2552
2760
  versionModal.status = 'create';
2553
- versionModal.name = nextVersionName();
2761
+ versionModal.name = '';
2554
2762
  versionModal.description = '';
2555
2763
  versionModal.editingVersion = null;
2556
2764
  versionModal.visible = true;
@@ -2733,11 +2941,11 @@ const __default__ = {
2733
2941
  console.error('[ResponsePanel] 解析版本数据失败:', error);
2734
2942
  return;
2735
2943
  }
2736
- console.log('[ResponsePanel] 解析后的版本列表:', versionList);
2737
2944
 
2738
- // 添加 filename 字段
2945
+ // 冻结 content,防止 Vue 2 深度 observe 大对象阻塞主线程
2739
2946
  versionList.forEach(item => {
2740
2947
  item.filename = item.name;
2948
+ item.content = Object.freeze(item.content || {});
2741
2949
  });
2742
2950
 
2743
2951
  // 更新列表
@@ -2848,8 +3056,10 @@ const __default__ = {
2848
3056
  };
2849
3057
  const selectFile = item => {
2850
3058
  const tempEffect = currentFile.value.effect;
3059
+ // content 可能是 frozen 对象,深拷贝一份可编辑副本
2851
3060
  currentFile.value = {
2852
3061
  ...item,
3062
+ content: JSON.parse(JSON.stringify(item.content || {})),
2853
3063
  effect: tempEffect
2854
3064
  };
2855
3065
  const versionName = item.type === 'history' ? item.filename : '';
@@ -3001,13 +3211,13 @@ const __default__ = {
3001
3211
  return;
3002
3212
  }
3003
3213
 
3004
- // 同步更新列表中的数据
3214
+ // 同步更新列表中的数据(Vue 2 下标赋值不触发响应式,需用 splice)
3005
3215
  const idx = matchRuleList.value.findIndex(r => r.id === currentMatchRule.value.id);
3006
3216
  if (idx > -1) {
3007
- matchRuleList.value[idx] = {
3217
+ matchRuleList.value.splice(idx, 1, {
3008
3218
  ...matchRuleList.value[idx],
3009
3219
  ...currentMatchRule.value
3010
- };
3220
+ });
3011
3221
  }
3012
3222
  matchRuleChanged.value = false;
3013
3223
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().success('保存成功');
@@ -3225,13 +3435,15 @@ const __default__ = {
3225
3435
  }
3226
3436
  }
3227
3437
 
3228
- // 切换为条件匹配
3438
+ // 切换为条件匹配:记录当前版本名,切回时用于恢复
3439
+ prevVersionNameBeforeMatch.value = currentFile.value.filename || SOURCE_VERSION_NAME;
3229
3440
  const res = await (0,_service__WEBPACK_IMPORTED_MODULE_11__.setMatchMode)({
3230
3441
  url: props.api.name,
3231
3442
  enable: true
3232
3443
  });
3233
3444
  if (res.code !== 200) {
3234
3445
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error(res.msg || '切换失败');
3446
+ prevVersionNameBeforeMatch.value = null;
3235
3447
  return;
3236
3448
  }
3237
3449
  mockMode.value = 'match';
@@ -3242,7 +3454,7 @@ const __default__ = {
3242
3454
  matchRuleChanged.value = false;
3243
3455
  emit('changeMockVersion', MATCH_MODE_VALUE);
3244
3456
  } else {
3245
- // 切换回版本直选
3457
+ // 切换回版本直选:优先用前端记录的版本名,后端 restoredMockVersion 作为次要参考
3246
3458
  const res = await (0,_service__WEBPACK_IMPORTED_MODULE_11__.setMatchMode)({
3247
3459
  url: props.api.name,
3248
3460
  enable: false
@@ -3255,11 +3467,11 @@ const __default__ = {
3255
3467
  matchRuleList.value = [];
3256
3468
  currentMatchRule.value = null;
3257
3469
  matchRuleChanged.value = false;
3258
- const restoredVersion = res.data.restoredMockVersion || null;
3259
- emit('changeMockVersion', restoredVersion);
3260
- // 重新加载版本列表
3470
+ const targetVersion = prevVersionNameBeforeMatch.value || res.data.restoredMockVersion || SOURCE_VERSION_NAME;
3471
+ prevVersionNameBeforeMatch.value = null;
3472
+ emit('changeMockVersion', targetVersion === SOURCE_VERSION_NAME ? null : targetVersion);
3261
3473
  if (props.api.id) {
3262
- await getHistoryVersions();
3474
+ await getHistoryVersions(targetVersion);
3263
3475
  }
3264
3476
  }
3265
3477
  };
@@ -3300,14 +3512,30 @@ const __default__ = {
3300
3512
  matchRuleChanged.value = false;
3301
3513
  };
3302
3514
 
3303
- /** 条件编辑区更新 */
3304
- const handleConditionsChange = newConditions => {
3515
+ /** 条件编辑区更新 — 直接自动保存,无需手动点保存 */
3516
+ const handleConditionsChange = async newConditions => {
3305
3517
  if (!currentMatchRule.value) return;
3306
3518
  currentMatchRule.value = {
3307
3519
  ...currentMatchRule.value,
3308
3520
  conditions: newConditions
3309
3521
  };
3310
- matchRuleChanged.value = true;
3522
+ const res = await (0,_service__WEBPACK_IMPORTED_MODULE_11__.updateMatchVersion)({
3523
+ url: props.api.name,
3524
+ matchVersionId: currentMatchRule.value.id,
3525
+ conditions: newConditions,
3526
+ content: currentMatchRule.value.content
3527
+ });
3528
+ if (res.code !== 200) {
3529
+ element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error(res.msg || '条件保存失败');
3530
+ } else {
3531
+ const idx = matchRuleList.value.findIndex(r => r.id === currentMatchRule.value.id);
3532
+ if (idx > -1) {
3533
+ matchRuleList.value.splice(idx, 1, {
3534
+ ...matchRuleList.value[idx],
3535
+ conditions: newConditions
3536
+ });
3537
+ }
3538
+ }
3311
3539
  };
3312
3540
 
3313
3541
  /** 匹配规则 JSON 编辑器内容变更 */
@@ -3353,10 +3581,16 @@ const __default__ = {
3353
3581
  return;
3354
3582
  }
3355
3583
  if (matchRuleModal.status === 'create') {
3584
+ // 已保存文件:responseList 在条件匹配模式下未加载,先补一次
3585
+ if (props.api.id && !responseList.value.length) {
3586
+ await getHistoryVersions();
3587
+ }
3588
+ const sourceItem = responseList.value.find(item => item.type === 'source') || getSourceVersion();
3356
3589
  const res = await (0,_service__WEBPACK_IMPORTED_MODULE_11__.addMatchVersion)({
3357
3590
  url: props.api.name,
3358
3591
  name: matchRuleModal.name.trim(),
3359
- description: matchRuleModal.description
3592
+ description: matchRuleModal.description,
3593
+ content: sourceItem?.content ? JSON.parse(JSON.stringify(sourceItem.content)) : {}
3360
3594
  });
3361
3595
  if (res.code !== 200) {
3362
3596
  element_ui_lib_message__WEBPACK_IMPORTED_MODULE_2___default().error(res.msg || '创建失败');
@@ -3451,7 +3685,11 @@ const __default__ = {
3451
3685
  matchRuleList.value = [];
3452
3686
  currentMatchRule.value = null;
3453
3687
  matchRuleChanged.value = false;
3688
+ prevVersionNameBeforeMatch.value = null;
3454
3689
  modeDropdownVisible.value = false;
3690
+ tabsFade.top = false;
3691
+ tabsFade.bottom = false;
3692
+ headerCollapsed.value = false;
3455
3693
 
3456
3694
  // 判断当前是否是条件匹配模式
3457
3695
  const isMatchMode = props.api.mockVersion === MATCH_MODE_VALUE;
@@ -3487,6 +3725,11 @@ const __default__ = {
3487
3725
  immediate: true
3488
3726
  });
3489
3727
 
3728
+ // tabs 列表变化后重新计算遮罩状态
3729
+ (0,vue__WEBPACK_IMPORTED_MODULE_12__.watch)([responseList, matchRuleList], () => {
3730
+ (0,vue__WEBPACK_IMPORTED_MODULE_12__.nextTick)(updateTabsFade);
3731
+ });
3732
+
3490
3733
  // 移除 watch(date),避免轮询时不必要的 API 调用
3491
3734
  // date 变化由 watch(name) 统一处理
3492
3735
  // watch(date, () => {
@@ -3528,6 +3771,7 @@ const __default__ = {
3528
3771
  });
3529
3772
  return {
3530
3773
  __sfc: true,
3774
+ SOURCE_VERSION_NAME,
3531
3775
  MATCH_MODE_VALUE,
3532
3776
  props,
3533
3777
  emit,
@@ -3535,6 +3779,11 @@ const __default__ = {
3535
3779
  fullScreenEditorRef,
3536
3780
  versionNameInput,
3537
3781
  matchRuleNameInput,
3782
+ tabsAreaRef,
3783
+ tabsFade,
3784
+ headerCollapsed,
3785
+ tabsFadePending,
3786
+ updateTabsFade,
3538
3787
  responseList,
3539
3788
  currentFile,
3540
3789
  hasJsonError,
@@ -3542,11 +3791,13 @@ const __default__ = {
3542
3791
  versionModal,
3543
3792
  fullScreenModal,
3544
3793
  mockMode,
3794
+ prevVersionNameBeforeMatch,
3545
3795
  modeDropdownVisible,
3546
3796
  matchRuleList,
3547
3797
  currentMatchRule,
3548
3798
  matchRuleChanged,
3549
3799
  matchRuleModal,
3800
+ crossRuleConflicts,
3550
3801
  capturedQuery,
3551
3802
  capturedPayload,
3552
3803
  name,
@@ -3557,7 +3808,6 @@ const __default__ = {
3557
3808
  activeEditorContent,
3558
3809
  getSourceVersion,
3559
3810
  getHistoryVersions,
3560
- nextVersionName,
3561
3811
  onCreate,
3562
3812
  onEditVersion,
3563
3813
  handleDialogOpened,
@@ -4155,7 +4405,7 @@ const __default__ = {
4155
4405
  const [ca, cb, cc] = parse(pluginVersion.value);
4156
4406
  return la > ca || la === ca && lb > cb || la === ca && lb === cb && lc > cc;
4157
4407
  });
4158
- const updateCmd = (0,vue__WEBPACK_IMPORTED_MODULE_16__.computed)(() => `npm install -g whistle.mockbubu --registry https://registry.npmjs.org`);
4408
+ const updateCmd = (0,vue__WEBPACK_IMPORTED_MODULE_16__.computed)(() => `w2 install whistle.mockbubu --registry=https://registry.npmjs.org/`);
4159
4409
 
4160
4410
  // 获取插件版本号
4161
4411
  const fetchPluginVersion = async () => {
@@ -5269,7 +5519,10 @@ var render = function render() {
5269
5519
  }, [_vm._l(_setup.localConditions, function (cond, index) {
5270
5520
  return _c("div", {
5271
5521
  key: index,
5272
- staticClass: "match-condition-editor__row"
5522
+ staticClass: "match-condition-editor__row",
5523
+ class: {
5524
+ "is-conflict": _setup.conflictIndexes.has(index)
5525
+ }
5273
5526
  }, [_c("el-select", {
5274
5527
  staticClass: "match-condition-editor__source-select",
5275
5528
  attrs: {
@@ -5302,7 +5555,7 @@ var render = function render() {
5302
5555
  placeholder: "参数名"
5303
5556
  },
5304
5557
  on: {
5305
- input: _setup.emitChange
5558
+ blur: _setup.emitChange
5306
5559
  },
5307
5560
  model: {
5308
5561
  value: cond.key,
@@ -5311,16 +5564,48 @@ var render = function render() {
5311
5564
  },
5312
5565
  expression: "cond.key"
5313
5566
  }
5314
- }), _c("span", {
5315
- staticClass: "match-condition-editor__operator"
5316
- }, [_vm._v("=")]), _c("el-input", {
5567
+ }), _c("el-select", {
5568
+ staticClass: "match-condition-editor__operator-select",
5569
+ attrs: {
5570
+ size: "mini"
5571
+ },
5572
+ on: {
5573
+ change: function ($event) {
5574
+ return _setup.onOperatorChange(cond);
5575
+ }
5576
+ },
5577
+ model: {
5578
+ value: cond.operator,
5579
+ callback: function ($$v) {
5580
+ _vm.$set(cond, "operator", $$v);
5581
+ },
5582
+ expression: "cond.operator"
5583
+ }
5584
+ }, _vm._l(_setup.OPERATORS, function (op) {
5585
+ return _c("el-option", {
5586
+ key: op.value,
5587
+ attrs: {
5588
+ label: op.label,
5589
+ value: op.value
5590
+ }
5591
+ }, [_c("span", {
5592
+ staticClass: "match-condition-editor__op-symbol"
5593
+ }, [_vm._v(_vm._s(op.symbol))]), _c("span", {
5594
+ staticClass: "match-condition-editor__op-label"
5595
+ }, [_vm._v(_vm._s(op.text))])]);
5596
+ }), 1), !_setup.isValueless(cond.operator) ? _c("el-input", {
5317
5597
  staticClass: "match-condition-editor__value-input",
5598
+ class: {
5599
+ "is-regex-error": cond._regexError
5600
+ },
5318
5601
  attrs: {
5319
5602
  size: "mini",
5320
- placeholder: "参数值"
5603
+ placeholder: cond.operator === "regex" ? "正则表达式" : "参数值"
5321
5604
  },
5322
5605
  on: {
5323
- input: _setup.emitChange
5606
+ blur: function ($event) {
5607
+ return _setup.onValueBlur(cond);
5608
+ }
5324
5609
  },
5325
5610
  model: {
5326
5611
  value: cond.value,
@@ -5329,7 +5614,35 @@ var render = function render() {
5329
5614
  },
5330
5615
  expression: "cond.value"
5331
5616
  }
5332
- }), _c("el-button", {
5617
+ }) : _c("span", {
5618
+ staticClass: "match-condition-editor__value-input match-condition-editor__value-placeholder"
5619
+ }, [_vm._v("(任意值)")]), _c("span", {
5620
+ staticClass: "match-condition-editor__status"
5621
+ }, [cond._regexError ? _c("el-tooltip", {
5622
+ attrs: {
5623
+ content: cond._regexError,
5624
+ placement: "top",
5625
+ effect: "dark"
5626
+ }
5627
+ }, [_c("i", {
5628
+ staticClass: "el-icon-warning match-condition-editor__icon--error"
5629
+ })]) : _setup.isIncomplete(cond) ? _c("el-tooltip", {
5630
+ attrs: {
5631
+ content: "条件未填完整,不参与匹配(会被自动跳过)",
5632
+ placement: "top",
5633
+ effect: "dark"
5634
+ }
5635
+ }, [_c("i", {
5636
+ staticClass: "el-icon-warning match-condition-editor__icon--incomplete"
5637
+ })]) : _setup.conflictIndexes.has(index) ? _c("el-tooltip", {
5638
+ attrs: {
5639
+ content: _setup.conflictMessages[index],
5640
+ placement: "top",
5641
+ effect: "dark"
5642
+ }
5643
+ }, [_c("i", {
5644
+ staticClass: "el-icon-warning-outline match-condition-editor__icon--warn"
5645
+ })]) : _vm._e()], 1), _c("el-button", {
5333
5646
  staticClass: "match-condition-editor__delete-btn",
5334
5647
  attrs: {
5335
5648
  type: "text",
@@ -5343,9 +5656,9 @@ var render = function render() {
5343
5656
  })], 1);
5344
5657
  }), _setup.localConditions.length === 0 ? _c("div", {
5345
5658
  staticClass: "match-condition-editor__empty"
5346
- }, [_c("i", {
5347
- staticClass: "el-icon-info"
5348
- }), _c("span", [_vm._v("无条件(兜底规则,匹配所有请求)")])]) : _vm._e()], 2), _c("div", {
5659
+ }, [_c("span", {
5660
+ staticClass: "match-condition-editor__empty-badge"
5661
+ }, [_vm._v("✦")]), _c("span", [_vm._v("无条件(兜底规则,匹配所有请求)")])]) : _vm._e()], 2), _c("div", {
5349
5662
  staticClass: "match-condition-editor__actions"
5350
5663
  }, [_c("el-button", {
5351
5664
  attrs: {
@@ -5466,9 +5779,16 @@ var render = function render() {
5466
5779
  var _vm = this,
5467
5780
  _c = _vm._self._c,
5468
5781
  _setup = _vm._self._setupProxy;
5469
- return _vm.currentRow ? _c("div", {
5470
- staticClass: "request-detail"
5471
- }, [_c("el-tabs", {
5782
+ return _c("div", {
5783
+ staticClass: "request-detail",
5784
+ class: {
5785
+ "request-detail--empty": !_vm.currentRow
5786
+ }
5787
+ }, [!_vm.currentRow ? _c("div", {
5788
+ staticClass: "request-detail__placeholder"
5789
+ }, [_c("span", {
5790
+ staticClass: "request-detail__placeholder-text"
5791
+ }, [_vm._v("暂无数据")])]) : _c("el-tabs", {
5472
5792
  staticClass: "request-detail__tabs",
5473
5793
  attrs: {
5474
5794
  type: "border-card"
@@ -5594,9 +5914,7 @@ var render = function render() {
5594
5914
  changeMockVersion: _setup.handeMockVersionChange,
5595
5915
  fileSaved: _setup.handleFileSaved
5596
5916
  }
5597
- })], 1) : _vm._e()], 1)], 1) : _c("div", {
5598
- staticClass: "request-detail"
5599
- });
5917
+ })], 1) : _vm._e()], 1)], 1);
5600
5918
  };
5601
5919
  var staticRenderFns = [];
5602
5920
  render._withStripped = true;
@@ -5749,7 +6067,11 @@ var render = function render() {
5749
6067
  })];
5750
6068
  }
5751
6069
  }])
5752
- })], 1)], 1);
6070
+ }), _c("template", {
6071
+ slot: "empty"
6072
+ }, [_c("span", {
6073
+ staticClass: "request-list__empty-text"
6074
+ }, [_vm._v("暂无数据")])])], 2)], 1);
5753
6075
  };
5754
6076
  var staticRenderFns = [];
5755
6077
  render._withStripped = true;
@@ -5777,6 +6099,8 @@ var render = function render() {
5777
6099
  staticClass: "response-panel"
5778
6100
  }, [_c("div", {
5779
6101
  staticClass: "response-panel__header"
6102
+ }, [_c("div", {
6103
+ staticClass: "response-panel__header-toolbar"
5780
6104
  }, [_setup.props.api ? _c("div", {
5781
6105
  staticClass: "response-panel__mode-selector"
5782
6106
  }, [_c("div", {
@@ -5816,7 +6140,47 @@ var render = function render() {
5816
6140
  return _setup.switchMode("match");
5817
6141
  }
5818
6142
  }
5819
- }, [_vm._v(" 条件匹配 ")])]) : _vm._e()]) : _vm._e(), _setup.mockMode === "version" ? [_vm._l(_setup.responseList, function (item, index) {
6143
+ }, [_vm._v(" 条件匹配 ")])]) : _vm._e()]) : _vm._e(), _setup.mockMode === "version" ? _c("div", {
6144
+ staticClass: "response-panel__add-btn",
6145
+ on: {
6146
+ click: _setup.onCreate
6147
+ }
6148
+ }, [_c("i", {
6149
+ staticClass: "el-icon-plus"
6150
+ }), _c("span", [_vm._v("新增版本")])]) : _vm._e(), _setup.mockMode === "match" ? _c("div", {
6151
+ staticClass: "response-panel__add-btn",
6152
+ on: {
6153
+ click: _setup.onCreateMatchRule
6154
+ }
6155
+ }, [_c("i", {
6156
+ staticClass: "el-icon-plus"
6157
+ }), _c("span", [_vm._v("新增规则")])]) : _vm._e(), _setup.mockMode === "version" && _setup.responseList.length > 1 ? _c("span", {
6158
+ staticClass: "response-panel__version-count"
6159
+ }, [_vm._v(" " + _vm._s(_setup.responseList.length - 1) + " 个版本 ")]) : _vm._e(), _setup.mockMode === "match" && _setup.matchRuleList.length > 0 ? _c("span", {
6160
+ staticClass: "response-panel__version-count"
6161
+ }, [_vm._v(" " + _vm._s(_setup.matchRuleList.length) + " 条规则 ")]) : _vm._e(), _c("div", {
6162
+ staticClass: "response-panel__collapse-btn",
6163
+ on: {
6164
+ click: function ($event) {
6165
+ _setup.headerCollapsed = !_setup.headerCollapsed;
6166
+ }
6167
+ }
6168
+ }, [_c("i", {
6169
+ class: _setup.headerCollapsed ? "el-icon-arrow-down" : "el-icon-arrow-up"
6170
+ }), _c("span", [_vm._v(_vm._s(_setup.headerCollapsed ? "展开版本" : "收起版本"))])])]), _c("div", {
6171
+ staticClass: "response-panel__tabs-wrapper",
6172
+ class: {
6173
+ "has-top-fade": _setup.tabsFade.top && !_setup.headerCollapsed,
6174
+ "has-bottom-fade": _setup.tabsFade.bottom && !_setup.headerCollapsed,
6175
+ "is-collapsed": _setup.headerCollapsed
6176
+ }
6177
+ }, [_setup.mockMode === "version" ? _c("div", {
6178
+ ref: "tabsAreaRef",
6179
+ staticClass: "response-panel__tabs-area",
6180
+ on: {
6181
+ scroll: _setup.updateTabsFade
6182
+ }
6183
+ }, _vm._l(_setup.responseList, function (item, index) {
5820
6184
  return _c("div", {
5821
6185
  key: `${item.type}-${item.filename}`,
5822
6186
  staticClass: "response-panel__tab",
@@ -5874,20 +6238,13 @@ var render = function render() {
5874
6238
  }
5875
6239
  }
5876
6240
  }) : _vm._e()], 1);
5877
- }), _c("div", {
5878
- staticClass: "response-panel__add-btn",
6241
+ }), 0) : _vm._e(), _setup.mockMode === "match" ? _c("div", {
6242
+ ref: "tabsAreaRef",
6243
+ staticClass: "response-panel__tabs-area",
5879
6244
  on: {
5880
- click: _setup.onCreate
5881
- }
5882
- }, [_c("el-tooltip", {
5883
- attrs: {
5884
- effect: "dark",
5885
- content: "Add response version",
5886
- placement: "top"
6245
+ scroll: _setup.updateTabsFade
5887
6246
  }
5888
- }, [_c("i", {
5889
- staticClass: "el-icon-plus"
5890
- })])], 1)] : _vm._e(), _setup.mockMode === "match" ? [_vm._l(_setup.matchRuleList, function (item, index) {
6247
+ }, _vm._l(_setup.matchRuleList, function (item, index) {
5891
6248
  return _c("div", {
5892
6249
  key: item.id,
5893
6250
  staticClass: "response-panel__tab",
@@ -5914,7 +6271,15 @@ var render = function render() {
5914
6271
  slot: "content"
5915
6272
  }, [_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", {
5916
6273
  staticClass: "response-panel__tab-text"
5917
- }, [_vm._v(_vm._s(item.name))])]), _c("i", {
6274
+ }, [_vm._v(_vm._s(item.name))])]), _setup.crossRuleConflicts[item.id] ? _c("el-tooltip", {
6275
+ attrs: {
6276
+ content: _setup.crossRuleConflicts[item.id],
6277
+ placement: "top",
6278
+ effect: "dark"
6279
+ }
6280
+ }, [_c("i", {
6281
+ staticClass: "el-icon-warning response-panel__rule-conflict-badge"
6282
+ })]) : _vm._e(), _c("i", {
5918
6283
  staticClass: "el-icon-edit response-panel__edit-btn",
5919
6284
  on: {
5920
6285
  click: function ($event) {
@@ -5931,22 +6296,9 @@ var render = function render() {
5931
6296
  }
5932
6297
  }
5933
6298
  })], 1);
5934
- }), _c("div", {
5935
- staticClass: "response-panel__add-btn",
5936
- on: {
5937
- click: _setup.onCreateMatchRule
5938
- }
5939
- }, [_c("el-tooltip", {
5940
- attrs: {
5941
- effect: "dark",
5942
- content: "新增匹配规则",
5943
- placement: "top"
5944
- }
5945
- }, [_c("i", {
5946
- staticClass: "el-icon-plus"
5947
- })])], 1)] : _vm._e()], 2), _c("div", {
6299
+ }), 0) : _vm._e()])]), _c("div", {
5948
6300
  staticClass: "response-panel__content"
5949
- }, [_setup.mockMode === "match" && _setup.currentMatchRule ? _c(_setup.MatchConditionEditor, {
6301
+ }, [_setup.mockMode === "match" && _setup.currentMatchRule && !_setup.headerCollapsed ? _c(_setup.MatchConditionEditor, {
5950
6302
  attrs: {
5951
6303
  conditions: _setup.currentMatchRule.conditions || [],
5952
6304
  "captured-query": _setup.capturedQuery,
@@ -6046,7 +6398,9 @@ var render = function render() {
6046
6398
  staticClass: "response-panel__readonly-badge"
6047
6399
  }, [_c("i", {
6048
6400
  staticClass: "el-icon-lock"
6049
- }), _c("span", [_vm._v("只读模式")])]) : _vm._e()], 1), _setup.mockMode === "version" ? _c(_setup.Editor, {
6401
+ }), _c("span", [_vm._v("只读模式")])]) : _vm._e()], 1), _c("div", {
6402
+ staticClass: "response-panel__editor-wrap"
6403
+ }, [_setup.mockMode === "version" ? _c(_setup.Editor, {
6050
6404
  key: `editor-${_setup.currentFile.filename}-${_setup.isSourceReadonly}`,
6051
6405
  ref: "editRef",
6052
6406
  attrs: {
@@ -6115,12 +6469,13 @@ var render = function render() {
6115
6469
  on: {
6116
6470
  click: _setup.handleUpdate
6117
6471
  }
6118
- }, [_vm._v(" 保存 ")])], 1) : _vm._e()], 1), _c("el-dialog", {
6472
+ }, [_vm._v(" 保存 ")])], 1) : _vm._e()], 1)], 1), _c("el-dialog", {
6119
6473
  attrs: {
6120
6474
  visible: _setup.versionModal.visible,
6121
6475
  width: "min(500px, 92vw)",
6122
6476
  title: _setup.versionModal.status === "create" ? "创建新版本" : "编辑版本信息",
6123
6477
  "close-on-click-modal": false,
6478
+ "append-to-body": true,
6124
6479
  "custom-class": "version-dialog"
6125
6480
  },
6126
6481
  on: {
@@ -6234,6 +6589,7 @@ var render = function render() {
6234
6589
  width: "min(500px, 92vw)",
6235
6590
  title: _setup.matchRuleModal.status === "create" ? "新增匹配规则" : "编辑规则信息",
6236
6591
  "close-on-click-modal": false,
6592
+ "append-to-body": true,
6237
6593
  "custom-class": "version-dialog"
6238
6594
  },
6239
6595
  on: {
@@ -6328,6 +6684,7 @@ var render = function render() {
6328
6684
  fullscreen: "",
6329
6685
  title: `${_setup.isSourceReadonly ? "全屏查看" : "全屏编辑"} - ${_setup.mockMode === "match" ? _setup.currentMatchRule && _setup.currentMatchRule.name || "" : _setup.currentFile.filename || ""}`,
6330
6686
  "close-on-click-modal": false,
6687
+ "append-to-body": true,
6331
6688
  "custom-class": "fullscreen-editor-dialog"
6332
6689
  },
6333
6690
  on: {
@@ -7905,7 +8262,7 @@ __webpack_require__.r(__webpack_exports__);
7905
8262
 
7906
8263
  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()));
7907
8264
  // Module
7908
- ___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: 70%;\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", ""]);
8265
+ ___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 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", ""]);
7909
8266
  // Exports
7910
8267
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
7911
8268
 
@@ -7977,7 +8334,7 @@ __webpack_require__.r(__webpack_exports__);
7977
8334
 
7978
8335
  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()));
7979
8336
  // Module
7980
- ___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", ""]);
8337
+ ___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", ""]);
7981
8338
  // Exports
7982
8339
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
7983
8340
 
@@ -8001,7 +8358,7 @@ __webpack_require__.r(__webpack_exports__);
8001
8358
 
8002
8359
  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()));
8003
8360
  // Module
8004
- ___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", ""]);
8361
+ ___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-icon[data-v-77bc97aa] {\n font-size: 32px;\n opacity: 0.4;\n}\n.request-detail__placeholder-text[data-v-77bc97aa] {\n font-size: 13px;\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-deep);\n background: var(--mb-bg-base);\n}\n.container .detail--empty[data-v-77bc97aa] {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.container .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.container .detail__placeholder-icon[data-v-77bc97aa] {\n font-size: 32px;\n opacity: 0.4;\n}\n.container .detail__placeholder-text[data-v-77bc97aa] {\n font-size: 13px;\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", ""]);
8005
8362
  // Exports
8006
8363
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8007
8364
 
@@ -8025,7 +8382,7 @@ __webpack_require__.r(__webpack_exports__);
8025
8382
 
8026
8383
  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()));
8027
8384
  // Module
8028
- ___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", ""]);
8385
+ ___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__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__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", ""]);
8029
8386
  // Exports
8030
8387
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8031
8388
 
@@ -8049,7 +8406,7 @@ __webpack_require__.r(__webpack_exports__);
8049
8406
 
8050
8407
  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()));
8051
8408
  // Module
8052
- ___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-wrap: wrap;\n background-color: var(--mb-bg-base);\n}\n.response-panel__tab[data-v-c23cd6a6] {\n position: relative;\n cursor: pointer;\n height: 24px;\n padding: 0px 10px;\n font-size: 12px;\n line-height: 24px;\n color: var(--mb-text-secondary);\n font-weight: 500;\n background-color: var(--mb-bg-mantle);\n border-right: 1px solid var(--mb-border-color-light);\n border-bottom: 1px solid var(--mb-border-color-light);\n}\n.response-panel__tab[data-v-c23cd6a6]:hover:not(.response-panel__tab--selected) {\n background-color: var(--mb-hover-bg);\n color: var(--mb-text-primary);\n}\n.response-panel__tab--selected[data-v-c23cd6a6] {\n background-color: var(--mb-accent-blue);\n color: #fff;\n border-bottom-color: var(--mb-accent-blue);\n}\n.response-panel__tab--selected .response-panel__source-tab[data-v-c23cd6a6] {\n color: rgba(255, 255, 255, 0.95);\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.6);\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: 4px;\n color: var(--mb-tag-amber);\n font-weight: 600;\n}\n.response-panel__source-tab i[data-v-c23cd6a6] {\n font-size: 14px;\n}\n.response-panel__tab-text[data-v-c23cd6a6] {\n display: inline-block;\n max-width: 120px;\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 margin-left: 8px;\n color: var(--mb-text-muted);\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 margin-left: 8px;\n color: var(--mb-text-muted);\n}\n.response-panel__delete-btn[data-v-c23cd6a6]:hover {\n color: var(--mb-accent-red);\n}\n.response-panel__add-btn[data-v-c23cd6a6] {\n cursor: pointer;\n line-height: 24px;\n padding: 0px 10px;\n color: var(--mb-text-muted);\n font-weight: 500;\n background-color: var(--mb-bg-mantle);\n border-right: 1px solid var(--mb-border-color-light);\n border-bottom: 1px solid var(--mb-border-color-light);\n}\n.response-panel__add-btn[data-v-c23cd6a6]:hover {\n color: var(--mb-accent-blue);\n background-color: var(--mb-hover-bg);\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: scroll;\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: 100px;\n right: 20px;\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 margin-right: 4px;\n}\n.response-panel__mode-btn[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n height: 24px;\n padding: 0 10px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mb-text-secondary);\n background-color: var(--mb-bg-mantle);\n border-right: 1px solid var(--mb-border-color-light);\n border-bottom: 1px solid var(--mb-border-color-light);\n cursor: pointer;\n white-space: nowrap;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.response-panel__mode-btn .el-icon-arrow-down[data-v-c23cd6a6] {\n font-size: 10px;\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: var(--mb-accent-blue);\n background-color: var(--mb-hover-bg);\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: 24px;\n left: 0;\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: 0 0 4px 4px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\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", ""]);
8409
+ ___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-wrapper.is-collapsed[data-v-c23cd6a6] {\n height: 20px;\n overflow: hidden;\n pointer-events: none;\n}\n.response-panel__tabs-wrapper.is-collapsed[data-v-c23cd6a6]::after {\n opacity: 1;\n height: 20px;\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__rule-conflict-badge[data-v-c23cd6a6] {\n font-size: 12px;\n color: #f59e0b;\n cursor: help;\n flex-shrink: 0;\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__collapse-btn[data-v-c23cd6a6] {\n display: inline-flex;\n align-items: center;\n gap: 3px;\n margin-left: auto;\n flex-shrink: 0;\n height: 24px;\n padding: 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 cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\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: #fff;\n background-color: var(--mb-accent-blue);\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 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", ""]);
8053
8410
  // Exports
8054
8411
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8055
8412
 
@@ -8169,7 +8526,7 @@ __webpack_require__.r(__webpack_exports__);
8169
8526
 
8170
8527
  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()));
8171
8528
  // Module
8172
- ___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", ""]);
8529
+ ___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: inline-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 flex-shrink: 0;\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", ""]);
8173
8530
  // Exports
8174
8531
  /* harmony default export */ __webpack_exports__["default"] = (___CSS_LOADER_EXPORT___);
8175
8532