nxd-plugin 1.7.82 → 1.7.84

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.
Files changed (100) hide show
  1. package/dist/chunks/{component-AiChat-BU0rzEqA.mjs → component-AiChat-BXNBLM1G.mjs} +382 -342
  2. package/dist/chunks/{component-AqiMonitor-B0X5SmQB.mjs → component-AqiMonitor-C_V1Nuf_.mjs} +1 -1
  3. package/dist/chunks/{component-ChartCumulativePre-D50ZlxtD.mjs → component-ChartCumulativePre-Bo28Bgaa.mjs} +2 -2
  4. package/dist/chunks/{component-ChartServiceMaterial-D35UWUD8.mjs → component-ChartServiceMaterial-DELVCsKj.mjs} +2 -2
  5. package/dist/chunks/{component-Duty-CuVSfL6B.mjs → component-Duty-dyZZ4vHt.mjs} +2 -2
  6. package/dist/chunks/{component-EarlyWarningStatistic-DBLY754e.mjs → component-EarlyWarningStatistic-CBJfrRsV.mjs} +2 -2
  7. package/dist/chunks/component-Forecast72h-BkVZSGhE.mjs +427 -0
  8. package/dist/chunks/{component-GeologyLiveAlarm-BGqrl_n2.mjs → component-GeologyLiveAlarm-B9jBWXf0.mjs} +2 -2
  9. package/dist/chunks/component-HdForecastProducts-D4x_Y0OB.mjs +211 -0
  10. package/dist/chunks/component-HdHeatService-Bf9XH3DP.mjs +412 -0
  11. package/dist/chunks/component-HdObservation-CM6HUrQ3.mjs +606 -0
  12. package/dist/chunks/component-HdPreSituation-CJ8-wiRO.mjs +639 -0
  13. package/dist/chunks/component-HdRadarTime-C4ZArOUM.mjs +461 -0
  14. package/dist/chunks/component-HdSeaCase-3-YFxSuM.mjs +219 -0
  15. package/dist/chunks/component-HdServiceMarterial-pSFQUH2x.mjs +316 -0
  16. package/dist/chunks/component-HdServiceRequirements-BjuiyyC5.mjs +142 -0
  17. package/dist/chunks/component-HdStationTem-Dit7Y8lu.mjs +573 -0
  18. package/dist/chunks/component-HdSuggestion-B_abfzRO.mjs +161 -0
  19. package/dist/chunks/component-HdThreeWeatherTrend-B2qzvOzb.mjs +372 -0
  20. package/dist/chunks/component-HdWaveForcast-D8UZrHzF.mjs +269 -0
  21. package/dist/chunks/{component-HighQuality-B-DNdjF7.mjs → component-HighQuality-1iqLOQAF.mjs} +3 -3
  22. package/dist/chunks/{component-HighWayEarlyWarningRed-DM_NXOxS.mjs → component-HighWayEarlyWarningRed-DlgG9rTx.mjs} +907 -759
  23. package/dist/chunks/{component-HighWayFreeze-Dldul9ds.mjs → component-HighWayFreeze-CCp1Rxpz.mjs} +2 -2
  24. package/dist/chunks/{component-HighwayLiveAlarm-7T0XNRUb.mjs → component-HighwayLiveAlarm-D7PKi5rG.mjs} +2 -2
  25. package/dist/chunks/{component-HighwayLiveAlarmNew-ClsfDywn.mjs → component-HighwayLiveAlarmNew-rH59lsj8.mjs} +3 -3
  26. package/dist/chunks/{component-HighwayStations-u3R83AXH.mjs → component-HighwayStations-DGt6Gsr9.mjs} +2 -2
  27. package/dist/chunks/{component-HighwayWeatherForecast-CHJuEi1V.mjs → component-HighwayWeatherForecast-BQrNGF7m.mjs} +73 -130
  28. package/dist/chunks/{component-IframeWeb-B_RCXBBe.mjs → component-IframeWeb-vLIWvbJY.mjs} +1 -1
  29. package/dist/chunks/{component-ImageGeneration-5zGtULQL.mjs → component-ImageGeneration-BtM7MHcE.mjs} +1 -1
  30. package/dist/chunks/{component-IntroducePic-DPf4yYOb.mjs → component-IntroducePic-D3FSEuKX.mjs} +1 -1
  31. package/dist/chunks/{component-LithiumBatteryMiningArea-D7EdisGO.mjs → component-LithiumBatteryMiningArea-B5aUe7T0.mjs} +2 -2
  32. package/dist/chunks/{component-MapPopup-pePSM1pe.mjs → component-MapPopup-UmWWAPBE.mjs} +1 -1
  33. package/dist/chunks/{component-MaterialPreview-CvHyZKau.mjs → component-MaterialPreview-1Hyl4bjM.mjs} +2 -2
  34. package/dist/chunks/{component-PieLegend-C_KQgtb2.mjs → component-PieLegend-C0Acehix.mjs} +1 -1
  35. package/dist/chunks/component-PrecipitationRanking-C63n87WI.mjs +658 -0
  36. package/dist/chunks/{component-RadarChart-Dkkpc2ex.mjs → component-RadarChart-BXfMyPPi.mjs} +2 -2
  37. package/dist/chunks/{component-RadarLegend-Bmyx7Z82.mjs → component-RadarLegend-B2ajP_0M.mjs} +1 -1
  38. package/dist/chunks/{component-RadarShortTerm-DNpfS5yC.mjs → component-RadarShortTerm-BeGEjbHr.mjs} +4 -4
  39. package/dist/chunks/{component-RadarTime-CBk6AMiD.mjs → component-RadarTime-DGRztCiR.mjs} +2 -2
  40. package/dist/chunks/{component-RenderMarkdown-DFiXNere.mjs → component-RenderMarkdown-Dv-UVGrS.mjs} +2 -2
  41. package/dist/chunks/{component-ReservoirLiveAlarm-DCzzEJ4U.mjs → component-ReservoirLiveAlarm-CRgl_ztt.mjs} +3 -3
  42. package/dist/chunks/{component-ServiceMaterial-CXBQpfHK.mjs → component-ServiceMaterial-BTWYke8W.mjs} +2 -2
  43. package/dist/chunks/{component-ServiceMaterialsBtn-CPZzLZl_.mjs → component-ServiceMaterialsBtn-CTWGd-Is.mjs} +1 -1
  44. package/dist/chunks/component-StationDialog-Ck8zd52d.mjs +956 -0
  45. package/dist/chunks/component-StationList-BvoVJwAU.mjs +337 -0
  46. package/dist/chunks/{component-TimeBasedForecast-WVO8WY-h.mjs → component-TimeBasedForecast-BaPiit4s.mjs} +36 -36
  47. package/dist/chunks/{component-WarningLine-BCPm8Eve.mjs → component-WarningLine-CcFfVzar.mjs} +2 -2
  48. package/dist/chunks/{component-WarningSignal-C2RJ8N64.mjs → component-WarningSignal-C0CnTLVH.mjs} +3 -3
  49. package/dist/chunks/component-WeatherForecast-DWdNramU.mjs +229 -0
  50. package/dist/chunks/{component-YCDataMonitor-Dx7ASmGD.mjs → component-YCDataMonitor-DPMFqIFB.mjs} +108 -110
  51. package/dist/chunks/{component-YCDataService-mj2SUWBC.mjs → component-YCDataService-CD042ss7.mjs} +4 -4
  52. package/dist/chunks/{component-YCHome-CUcEZHuo.mjs → component-YCHome-DjpIzt-5.mjs} +4 -4
  53. package/dist/chunks/{component-YCHomeLegend-DK6WU8YQ.mjs → component-YCHomeLegend-B-nlePS2.mjs} +1 -1
  54. package/dist/chunks/{component-YCLoginNew-D2RInKrk.mjs → component-YCLoginNew-Bx2LoLJz.mjs} +3 -3
  55. package/dist/components/AiChat/AiChat.vue.d.ts +0 -2
  56. package/dist/components/Forecast72h/Forecast72h.vue.d.ts +50 -0
  57. package/dist/components/HdForecastProducts/HdForecastProducts.vue.d.ts +49 -0
  58. package/dist/components/HdHeatService/HdHeatService.vue.d.ts +56 -0
  59. package/dist/components/HdObservation/HdObservation.vue.d.ts +43 -0
  60. package/dist/components/HdPreSituation/HdPreSituation.vue.d.ts +61 -0
  61. package/dist/components/HdQxServiceEffects/HdQxServiceEffects.vue.d.ts +59 -0
  62. package/dist/components/HdRadarTime/HdRadarTime.vue.d.ts +71 -0
  63. package/dist/components/HdSeaCase/HdSeaCase.vue.d.ts +46 -0
  64. package/dist/components/HdServiceMarterial/HdServiceMarterial.vue.d.ts +54 -0
  65. package/dist/components/HdServiceRequirements/HdServiceRequirements.vue.d.ts +51 -0
  66. package/dist/components/HdStationTem/HdStationTem.vue.d.ts +69 -0
  67. package/dist/components/HdSuggestion/HdSuggestion.vue.d.ts +49 -0
  68. package/dist/components/HdThreeWeatherTrend/HdThreeWeatherTrend.vue.d.ts +71 -0
  69. package/dist/components/HdWaveForcast/HdWaveForcast.vue.d.ts +70 -0
  70. package/dist/components/HighWayEarlyWarningRed/Call.vue.d.ts +18 -0
  71. package/dist/components/HighWayEarlyWarningRed/HighWayEarlyWarningRed.vue.d.ts +5 -0
  72. package/dist/components/PrecipitationRanking/PrecipitationRanking.vue.d.ts +62 -0
  73. package/dist/components/StationDialog/StationDialog.vue.d.ts +90 -0
  74. package/dist/components/StationList/StationList.vue.d.ts +64 -0
  75. package/dist/components/WeatherForecast/WeatherForecast.vue.d.ts +9 -0
  76. package/dist/index.d.ts +18 -1
  77. package/dist/nxd-plugin.mjs +56 -40
  78. package/dist/styles/component-Forecast72h.css +1 -0
  79. package/dist/styles/component-HdForecastProducts.css +1 -0
  80. package/dist/styles/component-HdHeatService.css +1 -0
  81. package/dist/styles/component-HdObservation.css +1 -0
  82. package/dist/styles/component-HdPreSituation.css +1 -0
  83. package/dist/styles/component-HdRadarTime.css +1 -0
  84. package/dist/styles/component-HdSeaCase.css +1 -0
  85. package/dist/styles/component-HdServiceMarterial.css +1 -0
  86. package/dist/styles/component-HdServiceRequirements.css +1 -0
  87. package/dist/styles/component-HdStationTem.css +1 -0
  88. package/dist/styles/component-HdSuggestion.css +1 -0
  89. package/dist/styles/component-HdThreeWeatherTrend.css +1 -0
  90. package/dist/styles/component-HdWaveForcast.css +1 -0
  91. package/dist/styles/component-HighQuality.css +1 -1
  92. package/dist/styles/component-HighWayEarlyWarningRed.css +1 -1
  93. package/dist/styles/component-PrecipitationRanking.css +1 -0
  94. package/dist/styles/component-StationDialog.css +1 -0
  95. package/dist/styles/component-StationList.css +1 -0
  96. package/dist/styles/component-WeatherForecast.css +1 -1
  97. package/dist/styles/component-YCDataMonitor.css +1 -1
  98. package/dist/styles/component-YCLoginNew.css +1 -1
  99. package/package.json +2 -1
  100. package/dist/chunks/component-WeatherForecast-CaLYtE37.mjs +0 -210
@@ -610,8 +610,8 @@ var N = /* @__PURE__ */ n(((e, t) => {
610
610
  var U, W, re = l[ne];
611
611
  if (ne < 16) W = re.high = e[t + ne * 2] | 0, U = re.low = e[t + ne * 2 + 1] | 0;
612
612
  else {
613
- var G = l[ne - 15], K = G.high, q = G.low, J = (K >>> 1 | q << 31) ^ (K >>> 8 | q << 24) ^ K >>> 7, ie = (q >>> 1 | K << 31) ^ (q >>> 8 | K << 24) ^ (q >>> 7 | K << 25), Y = l[ne - 2], ae = Y.high, oe = Y.low, se = (ae >>> 19 | oe << 13) ^ (ae << 3 | oe >>> 29) ^ ae >>> 6, ce = (oe >>> 19 | ae << 13) ^ (oe << 3 | ae >>> 29) ^ (oe >>> 6 | ae << 26), le = l[ne - 7], ue = le.high, de = le.low, fe = l[ne - 16], pe = fe.high, me = fe.low;
614
- U = ie + de, W = J + ue + (U >>> 0 < ie >>> 0 ? 1 : 0), U += ce, W = W + se + (U >>> 0 < ce >>> 0 ? 1 : 0), U += me, W = W + pe + (U >>> 0 < me >>> 0 ? 1 : 0), re.high = W, re.low = U;
613
+ var G = l[ne - 15], K = G.high, q = G.low, ie = (K >>> 1 | q << 31) ^ (K >>> 8 | q << 24) ^ K >>> 7, ae = (q >>> 1 | K << 31) ^ (q >>> 8 | K << 24) ^ (q >>> 7 | K << 25), J = l[ne - 2], oe = J.high, se = J.low, ce = (oe >>> 19 | se << 13) ^ (oe << 3 | se >>> 29) ^ oe >>> 6, le = (se >>> 19 | oe << 13) ^ (se << 3 | oe >>> 29) ^ (se >>> 6 | oe << 26), ue = l[ne - 7], de = ue.high, fe = ue.low, pe = l[ne - 16], me = pe.high, Y = pe.low;
614
+ U = ae + fe, W = ie + de + (U >>> 0 < ae >>> 0 ? 1 : 0), U += le, W = W + ce + (U >>> 0 < le >>> 0 ? 1 : 0), U += Y, W = W + me + (U >>> 0 < Y >>> 0 ? 1 : 0), re.high = W, re.low = U;
615
615
  }
616
616
  var he = L & z ^ ~L & ee, ge = R & B ^ ~R & V, _e = k & j ^ k & N ^ j & N, ve = A & M ^ A & P ^ M & P, ye = (k >>> 28 | A << 4) ^ (k << 30 | A >>> 2) ^ (k << 25 | A >>> 7), be = (A >>> 28 | k << 4) ^ (A << 30 | k >>> 2) ^ (A << 25 | k >>> 7), xe = (L >>> 14 | R << 18) ^ (L >>> 18 | R << 14) ^ (L << 23 | R >>> 9), Se = (R >>> 14 | L << 18) ^ (R >>> 18 | L << 14) ^ (R << 23 | L >>> 9), Ce = c[ne], we = Ce.high, Te = Ce.low, Ee = te + Se, De = H + xe + (Ee >>> 0 < te >>> 0 ? 1 : 0), Ee = Ee + ge, De = De + he + (Ee >>> 0 < ge >>> 0 ? 1 : 0), Ee = Ee + Te, De = De + we + (Ee >>> 0 < Te >>> 0 ? 1 : 0), Ee = Ee + U, De = De + W + (Ee >>> 0 < U >>> 0 ? 1 : 0), Oe = be + ve, ke = ye + _e + (Oe >>> 0 < be >>> 0 ? 1 : 0);
617
617
  H = ee, te = V, ee = z, V = B, z = L, B = R, R = I + Ee | 0, L = F + De + (R >>> 0 < I >>> 0 ? 1 : 0) | 0, F = N, I = P, N = j, P = M, j = k, M = A, A = Ee + Oe | 0, k = De + ke + (A >>> 0 < Ee >>> 0 ? 1 : 0) | 0;
@@ -1419,7 +1419,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1419
1419
  });
1420
1420
  }();
1421
1421
  });
1422
- })), J = /* @__PURE__ */ n(((e, t) => {
1422
+ })), ie = /* @__PURE__ */ n(((e, t) => {
1423
1423
  (function(n, r, i) {
1424
1424
  typeof e == "object" ? t.exports = e = r(P(), q()) : typeof define == "function" && define.amd ? define(["./core", "./cipher-core"], r) : r(n.CryptoJS);
1425
1425
  })(e, function(e) {
@@ -1440,7 +1440,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1440
1440
  return t;
1441
1441
  }(), e.mode.CFB;
1442
1442
  });
1443
- })), ie = /* @__PURE__ */ n(((e, t) => {
1443
+ })), ae = /* @__PURE__ */ n(((e, t) => {
1444
1444
  (function(n, r, i) {
1445
1445
  typeof e == "object" ? t.exports = e = r(P(), q()) : typeof define == "function" && define.amd ? define(["./core", "./cipher-core"], r) : r(n.CryptoJS);
1446
1446
  })(e, function(e) {
@@ -1455,7 +1455,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1455
1455
  } }), t;
1456
1456
  }(), e.mode.CTR;
1457
1457
  });
1458
- })), Y = /* @__PURE__ */ n(((e, t) => {
1458
+ })), J = /* @__PURE__ */ n(((e, t) => {
1459
1459
  (function(n, r, i) {
1460
1460
  typeof e == "object" ? t.exports = e = r(P(), q()) : typeof define == "function" && define.amd ? define(["./core", "./cipher-core"], r) : r(n.CryptoJS);
1461
1461
  })(e, function(e) {
@@ -1480,7 +1480,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1480
1480
  } }), t;
1481
1481
  }(), e.mode.CTRGladman;
1482
1482
  });
1483
- })), ae = /* @__PURE__ */ n(((e, t) => {
1483
+ })), oe = /* @__PURE__ */ n(((e, t) => {
1484
1484
  (function(n, r, i) {
1485
1485
  typeof e == "object" ? t.exports = e = r(P(), q()) : typeof define == "function" && define.amd ? define(["./core", "./cipher-core"], r) : r(n.CryptoJS);
1486
1486
  })(e, function(e) {
@@ -1493,7 +1493,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1493
1493
  } }), t;
1494
1494
  }(), e.mode.OFB;
1495
1495
  });
1496
- })), oe = /* @__PURE__ */ n(((e, t) => {
1496
+ })), se = /* @__PURE__ */ n(((e, t) => {
1497
1497
  (function(n, r, i) {
1498
1498
  typeof e == "object" ? t.exports = e = r(P(), q()) : typeof define == "function" && define.amd ? define(["./core", "./cipher-core"], r) : r(n.CryptoJS);
1499
1499
  })(e, function(e) {
@@ -1506,7 +1506,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1506
1506
  } }), t;
1507
1507
  }(), e.mode.ECB;
1508
1508
  });
1509
- })), se = /* @__PURE__ */ n(((e, t) => {
1509
+ })), ce = /* @__PURE__ */ n(((e, t) => {
1510
1510
  (function(n, r, i) {
1511
1511
  typeof e == "object" ? t.exports = e = r(P(), q()) : typeof define == "function" && define.amd ? define(["./core", "./cipher-core"], r) : r(n.CryptoJS);
1512
1512
  })(e, function(e) {
@@ -1521,7 +1521,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1521
1521
  }
1522
1522
  }, e.pad.Ansix923;
1523
1523
  });
1524
- })), ce = /* @__PURE__ */ n(((e, t) => {
1524
+ })), le = /* @__PURE__ */ n(((e, t) => {
1525
1525
  (function(n, r, i) {
1526
1526
  typeof e == "object" ? t.exports = e = r(P(), q()) : typeof define == "function" && define.amd ? define(["./core", "./cipher-core"], r) : r(n.CryptoJS);
1527
1527
  })(e, function(e) {
@@ -1536,7 +1536,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1536
1536
  }
1537
1537
  }, e.pad.Iso10126;
1538
1538
  });
1539
- })), le = /* @__PURE__ */ n(((e, t) => {
1539
+ })), ue = /* @__PURE__ */ n(((e, t) => {
1540
1540
  (function(n, r, i) {
1541
1541
  typeof e == "object" ? t.exports = e = r(P(), q()) : typeof define == "function" && define.amd ? define(["./core", "./cipher-core"], r) : r(n.CryptoJS);
1542
1542
  })(e, function(e) {
@@ -1549,7 +1549,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1549
1549
  }
1550
1550
  }, e.pad.Iso97971;
1551
1551
  });
1552
- })), ue = /* @__PURE__ */ n(((e, t) => {
1552
+ })), de = /* @__PURE__ */ n(((e, t) => {
1553
1553
  (function(n, r, i) {
1554
1554
  typeof e == "object" ? t.exports = e = r(P(), q()) : typeof define == "function" && define.amd ? define(["./core", "./cipher-core"], r) : r(n.CryptoJS);
1555
1555
  })(e, function(e) {
@@ -1566,7 +1566,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1566
1566
  }
1567
1567
  }, e.pad.ZeroPadding;
1568
1568
  });
1569
- })), de = /* @__PURE__ */ n(((e, t) => {
1569
+ })), fe = /* @__PURE__ */ n(((e, t) => {
1570
1570
  (function(n, r, i) {
1571
1571
  typeof e == "object" ? t.exports = e = r(P(), q()) : typeof define == "function" && define.amd ? define(["./core", "./cipher-core"], r) : r(n.CryptoJS);
1572
1572
  })(e, function(e) {
@@ -1575,7 +1575,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1575
1575
  unpad: function() {}
1576
1576
  }, e.pad.NoPadding;
1577
1577
  });
1578
- })), fe = /* @__PURE__ */ n(((e, t) => {
1578
+ })), pe = /* @__PURE__ */ n(((e, t) => {
1579
1579
  (function(n, r, i) {
1580
1580
  typeof e == "object" ? t.exports = e = r(P(), q()) : typeof define == "function" && define.amd ? define(["./core", "./cipher-core"], r) : r(n.CryptoJS);
1581
1581
  })(e, function(e) {
@@ -1592,7 +1592,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1592
1592
  };
1593
1593
  })(), e.format.Hex;
1594
1594
  });
1595
- })), pe = /* @__PURE__ */ n(((e, t) => {
1595
+ })), me = /* @__PURE__ */ n(((e, t) => {
1596
1596
  (function(n, r, i) {
1597
1597
  typeof e == "object" ? t.exports = e = r(P(), R(), B(), K(), q()) : typeof define == "function" && define.amd ? define([
1598
1598
  "./core",
@@ -1662,7 +1662,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
1662
1662
  t.AES = n._createHelper(h);
1663
1663
  })(), e.AES;
1664
1664
  });
1665
- })), me = /* @__PURE__ */ n(((e, t) => {
1665
+ })), Y = /* @__PURE__ */ n(((e, t) => {
1666
1666
  (function(n, r, i) {
1667
1667
  typeof e == "object" ? t.exports = e = r(P(), R(), B(), K(), q()) : typeof define == "function" && define.amd ? define([
1668
1668
  "./core",
@@ -3691,7 +3691,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
3691
3691
  });
3692
3692
  })), ye = /* @__PURE__ */ n(((e, t) => {
3693
3693
  (function(n, r, i) {
3694
- typeof e == "object" ? t.exports = e = r(P(), F(), I(), L(), R(), z(), B(), ee(), V(), H(), te(), ne(), U(), W(), re(), G(), K(), q(), J(), ie(), Y(), ae(), oe(), se(), ce(), le(), ue(), de(), fe(), pe(), me(), he(), ge(), _e(), ve()) : typeof define == "function" && define.amd ? define(/* @__PURE__ */ "./core,./x64-core,./lib-typedarrays,./enc-utf16,./enc-base64,./enc-base64url,./md5,./sha1,./sha256,./sha224,./sha512,./sha384,./sha3,./ripemd160,./hmac,./pbkdf2,./evpkdf,./cipher-core,./mode-cfb,./mode-ctr,./mode-ctr-gladman,./mode-ofb,./mode-ecb,./pad-ansix923,./pad-iso10126,./pad-iso97971,./pad-zeropadding,./pad-nopadding,./format-hex,./aes,./tripledes,./rc4,./rabbit,./rabbit-legacy,./blowfish".split(","), r) : n.CryptoJS = r(n.CryptoJS);
3694
+ typeof e == "object" ? t.exports = e = r(P(), F(), I(), L(), R(), z(), B(), ee(), V(), H(), te(), ne(), U(), W(), re(), G(), K(), q(), ie(), ae(), J(), oe(), se(), ce(), le(), ue(), de(), fe(), pe(), me(), Y(), he(), ge(), _e(), ve()) : typeof define == "function" && define.amd ? define(/* @__PURE__ */ "./core,./x64-core,./lib-typedarrays,./enc-utf16,./enc-base64,./enc-base64url,./md5,./sha1,./sha256,./sha224,./sha512,./sha384,./sha3,./ripemd160,./hmac,./pbkdf2,./evpkdf,./cipher-core,./mode-cfb,./mode-ctr,./mode-ctr-gladman,./mode-ofb,./mode-ecb,./pad-ansix923,./pad-iso10126,./pad-iso97971,./pad-zeropadding,./pad-nopadding,./format-hex,./aes,./tripledes,./rc4,./rabbit,./rabbit-legacy,./blowfish".split(","), r) : n.CryptoJS = r(n.CryptoJS);
3695
3695
  })(e, function(e) {
3696
3696
  return e;
3697
3697
  });
@@ -3724,17 +3724,17 @@ var N = /* @__PURE__ */ n(((e, t) => {
3724
3724
  };
3725
3725
  t.exports = function e(t, n, r, o) {
3726
3726
  var s = n || {};
3727
- if (ie(s, "quoteStyle") && !ie(R, s.quoteStyle)) throw TypeError("option \"quoteStyle\" must be \"single\" or \"double\"");
3728
- if (ie(s, "maxStringLength") && (typeof s.maxStringLength == "number" ? s.maxStringLength < 0 && s.maxStringLength !== Infinity : s.maxStringLength !== null)) throw TypeError("option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`");
3729
- var u = ie(s, "customInspect") ? s.customInspect : !0;
3727
+ if (ae(s, "quoteStyle") && !ae(R, s.quoteStyle)) throw TypeError("option \"quoteStyle\" must be \"single\" or \"double\"");
3728
+ if (ae(s, "maxStringLength") && (typeof s.maxStringLength == "number" ? s.maxStringLength < 0 && s.maxStringLength !== Infinity : s.maxStringLength !== null)) throw TypeError("option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`");
3729
+ var u = ae(s, "customInspect") ? s.customInspect : !0;
3730
3730
  if (typeof u != "boolean" && u !== "symbol") throw TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");
3731
- if (ie(s, "indent") && s.indent !== null && s.indent !== " " && !(parseInt(s.indent, 10) === s.indent && s.indent > 0)) throw TypeError("option \"indent\" must be \"\\t\", an integer > 0, or `null`");
3732
- if (ie(s, "numericSeparator") && typeof s.numericSeparator != "boolean") throw TypeError("option \"numericSeparator\", if provided, must be `true` or `false`");
3731
+ if (ae(s, "indent") && s.indent !== null && s.indent !== " " && !(parseInt(s.indent, 10) === s.indent && s.indent > 0)) throw TypeError("option \"indent\" must be \"\\t\", an integer > 0, or `null`");
3732
+ if (ae(s, "numericSeparator") && typeof s.numericSeparator != "boolean") throw TypeError("option \"numericSeparator\", if provided, must be `true` or `false`");
3733
3733
  var d = s.numericSeparator;
3734
3734
  if (t === void 0) return "undefined";
3735
3735
  if (t === null) return "null";
3736
3736
  if (typeof t == "boolean") return t ? "true" : "false";
3737
- if (typeof t == "string") return pe(t, s);
3737
+ if (typeof t == "string") return me(t, s);
3738
3738
  if (typeof t == "number") {
3739
3739
  if (t === 0) return Infinity / t > 0 ? "0" : "-0";
3740
3740
  var f = String(t);
@@ -3748,23 +3748,23 @@ var N = /* @__PURE__ */ n(((e, t) => {
3748
3748
  if (r === void 0 && (r = 0), r >= h && h > 0 && typeof t == "object") return H(t) ? "[Array]" : "[Object]";
3749
3749
  var g = ye(s, r);
3750
3750
  if (o === void 0) o = [];
3751
- else if (oe(o, t) >= 0) return "[Circular]";
3751
+ else if (se(o, t) >= 0) return "[Circular]";
3752
3752
  function y(t, n, i) {
3753
3753
  if (n && (o = w.call(o), o.push(n)), i) {
3754
3754
  var a = { depth: s.depth };
3755
- return ie(s, "quoteStyle") && (a.quoteStyle = s.quoteStyle), e(t, a, r + 1, o);
3755
+ return ae(s, "quoteStyle") && (a.quoteStyle = s.quoteStyle), e(t, a, r + 1, o);
3756
3756
  }
3757
3757
  return e(t, s, r + 1, o);
3758
3758
  }
3759
3759
  if (typeof t == "function" && !ne(t)) {
3760
- var x = ae(t), T = xe(t, y);
3760
+ var x = oe(t), T = xe(t, y);
3761
3761
  return "[Function" + (x ? ": " + x : " (anonymous)") + "]" + (T.length > 0 ? " { " + C.call(T, ", ") + " }" : "");
3762
3762
  }
3763
3763
  if (K(t)) {
3764
3764
  var D = k ? v.call(String(t), /^(Symbol\(.*\))_[^)]*$/, "$1") : O.call(t);
3765
3765
  return typeof t == "object" && !k ? he(D) : D;
3766
3766
  }
3767
- if (fe(t)) {
3767
+ if (pe(t)) {
3768
3768
  for (var N = "<" + b.call(String(t.nodeName)), I = t.attributes || [], z = 0; z < I.length; z++) N += " " + I[z].name + "=" + B(ee(I[z].value), "double", s);
3769
3769
  return N += ">", t.childNodes && t.childNodes.length && (N += "..."), N += "</" + b.call(String(t.nodeName)) + ">", N;
3770
3770
  }
@@ -3774,28 +3774,28 @@ var N = /* @__PURE__ */ n(((e, t) => {
3774
3774
  return g && !ve(V) ? "[" + be(V, g) + "]" : "[ " + C.call(V, ", ") + " ]";
3775
3775
  }
3776
3776
  if (U(t)) {
3777
- var J = xe(t, y);
3778
- return !("cause" in Error.prototype) && "cause" in t && !j.call(t, "cause") ? "{ [" + String(t) + "] " + C.call(S.call("[cause]: " + y(t.cause), J), ", ") + " }" : J.length === 0 ? "[" + String(t) + "]" : "{ [" + String(t) + "] " + C.call(J, ", ") + " }";
3777
+ var ie = xe(t, y);
3778
+ return !("cause" in Error.prototype) && "cause" in t && !j.call(t, "cause") ? "{ [" + String(t) + "] " + C.call(S.call("[cause]: " + y(t.cause), ie), ", ") + " }" : ie.length === 0 ? "[" + String(t) + "]" : "{ [" + String(t) + "] " + C.call(ie, ", ") + " }";
3779
3779
  }
3780
3780
  if (typeof t == "object" && u) {
3781
3781
  if (L && typeof t[L] == "function" && F) return F(t, { depth: h - r });
3782
3782
  if (u !== "symbol" && typeof t.inspect == "function") return t.inspect();
3783
3783
  }
3784
- if (se(t)) {
3785
- var me = [];
3784
+ if (ce(t)) {
3785
+ var Y = [];
3786
3786
  return a && a.call(t, function(e, n) {
3787
- me.push(y(n, t, !0) + " => " + y(e, t));
3788
- }), _e("Map", i.call(t), me, g);
3787
+ Y.push(y(n, t, !0) + " => " + y(e, t));
3788
+ }), _e("Map", i.call(t), Y, g);
3789
3789
  }
3790
- if (ue(t)) {
3790
+ if (de(t)) {
3791
3791
  var Se = [];
3792
3792
  return l && l.call(t, function(e) {
3793
3793
  Se.push(y(e, t));
3794
3794
  }), _e("Set", c.call(t), Se, g);
3795
3795
  }
3796
- if (ce(t)) return ge("WeakMap");
3797
- if (de(t)) return ge("WeakSet");
3798
- if (le(t)) return ge("WeakRef");
3796
+ if (le(t)) return ge("WeakMap");
3797
+ if (fe(t)) return ge("WeakSet");
3798
+ if (ue(t)) return ge("WeakRef");
3799
3799
  if (re(t)) return he(y(Number(t)));
3800
3800
  if (q(t)) return he(y(E.call(t)));
3801
3801
  if (G(t)) return he(p.call(t));
@@ -3803,7 +3803,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
3803
3803
  if (typeof window < "u" && t === window) return "{ [object Window] }";
3804
3804
  if (typeof globalThis < "u" && t === globalThis || typeof global < "u" && t === global) return "{ [object globalThis] }";
3805
3805
  if (!te(t) && !ne(t)) {
3806
- var Ce = xe(t, y), we = M ? M(t) === Object.prototype : t instanceof Object || t.constructor === Object, Te = t instanceof Object ? "" : "null prototype", Ee = !we && A && Object(t) === t && A in t ? _.call(Y(t), 8, -1) : Te ? "Object" : "", De = (we || typeof t.constructor != "function" ? "" : t.constructor.name ? t.constructor.name + " " : "") + (Ee || Te ? "[" + C.call(S.call([], Ee || [], Te || []), ": ") + "] " : "");
3806
+ var Ce = xe(t, y), we = M ? M(t) === Object.prototype : t instanceof Object || t.constructor === Object, Te = t instanceof Object ? "" : "null prototype", Ee = !we && A && Object(t) === t && A in t ? _.call(J(t), 8, -1) : Te ? "Object" : "", De = (we || typeof t.constructor != "function" ? "" : t.constructor.name ? t.constructor.name + " " : "") + (Ee || Te ? "[" + C.call(S.call([], Ee || [], Te || []), ": ") + "] " : "");
3807
3807
  return Ce.length === 0 ? De + "{}" : g ? De + "{" + be(Ce, g) + "}" : De + "{ " + C.call(Ce, ", ") + " }";
3808
3808
  }
3809
3809
  return String(t);
@@ -3819,25 +3819,25 @@ var N = /* @__PURE__ */ n(((e, t) => {
3819
3819
  return !A || !(typeof e == "object" && (A in e || e[A] !== void 0));
3820
3820
  }
3821
3821
  function H(e) {
3822
- return Y(e) === "[object Array]" && V(e);
3822
+ return J(e) === "[object Array]" && V(e);
3823
3823
  }
3824
3824
  function te(e) {
3825
- return Y(e) === "[object Date]" && V(e);
3825
+ return J(e) === "[object Date]" && V(e);
3826
3826
  }
3827
3827
  function ne(e) {
3828
- return Y(e) === "[object RegExp]" && V(e);
3828
+ return J(e) === "[object RegExp]" && V(e);
3829
3829
  }
3830
3830
  function U(e) {
3831
- return Y(e) === "[object Error]" && V(e);
3831
+ return J(e) === "[object Error]" && V(e);
3832
3832
  }
3833
3833
  function W(e) {
3834
- return Y(e) === "[object String]" && V(e);
3834
+ return J(e) === "[object String]" && V(e);
3835
3835
  }
3836
3836
  function re(e) {
3837
- return Y(e) === "[object Number]" && V(e);
3837
+ return J(e) === "[object Number]" && V(e);
3838
3838
  }
3839
3839
  function G(e) {
3840
- return Y(e) === "[object Boolean]" && V(e);
3840
+ return J(e) === "[object Boolean]" && V(e);
3841
3841
  }
3842
3842
  function K(e) {
3843
3843
  if (k) return e && typeof e == "object" && e instanceof Symbol;
@@ -3855,26 +3855,26 @@ var N = /* @__PURE__ */ n(((e, t) => {
3855
3855
  } catch {}
3856
3856
  return !1;
3857
3857
  }
3858
- var J = Object.prototype.hasOwnProperty || function(e) {
3858
+ var ie = Object.prototype.hasOwnProperty || function(e) {
3859
3859
  return e in this;
3860
3860
  };
3861
- function ie(e, t) {
3862
- return J.call(e, t);
3861
+ function ae(e, t) {
3862
+ return ie.call(e, t);
3863
3863
  }
3864
- function Y(e) {
3864
+ function J(e) {
3865
3865
  return m.call(e);
3866
3866
  }
3867
- function ae(e) {
3867
+ function oe(e) {
3868
3868
  if (e.name) return e.name;
3869
3869
  var t = g.call(h.call(e), /^function\s*([\w$]+)/);
3870
3870
  return t ? t[1] : null;
3871
3871
  }
3872
- function oe(e, t) {
3872
+ function se(e, t) {
3873
3873
  if (e.indexOf) return e.indexOf(t);
3874
3874
  for (var n = 0, r = e.length; n < r; n++) if (e[n] === t) return n;
3875
3875
  return -1;
3876
3876
  }
3877
- function se(e) {
3877
+ function ce(e) {
3878
3878
  if (!i || !e || typeof e != "object") return !1;
3879
3879
  try {
3880
3880
  i.call(e);
@@ -3887,7 +3887,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
3887
3887
  } catch {}
3888
3888
  return !1;
3889
3889
  }
3890
- function ce(e) {
3890
+ function le(e) {
3891
3891
  if (!u || !e || typeof e != "object") return !1;
3892
3892
  try {
3893
3893
  u.call(e, u);
@@ -3900,14 +3900,14 @@ var N = /* @__PURE__ */ n(((e, t) => {
3900
3900
  } catch {}
3901
3901
  return !1;
3902
3902
  }
3903
- function le(e) {
3903
+ function ue(e) {
3904
3904
  if (!f || !e || typeof e != "object") return !1;
3905
3905
  try {
3906
3906
  return f.call(e), !0;
3907
3907
  } catch {}
3908
3908
  return !1;
3909
3909
  }
3910
- function ue(e) {
3910
+ function de(e) {
3911
3911
  if (!c || !e || typeof e != "object") return !1;
3912
3912
  try {
3913
3913
  c.call(e);
@@ -3920,7 +3920,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
3920
3920
  } catch {}
3921
3921
  return !1;
3922
3922
  }
3923
- function de(e) {
3923
+ function fe(e) {
3924
3924
  if (!d || !e || typeof e != "object") return !1;
3925
3925
  try {
3926
3926
  d.call(e, d);
@@ -3933,18 +3933,18 @@ var N = /* @__PURE__ */ n(((e, t) => {
3933
3933
  } catch {}
3934
3934
  return !1;
3935
3935
  }
3936
- function fe(e) {
3936
+ function pe(e) {
3937
3937
  return !e || typeof e != "object" ? !1 : typeof HTMLElement < "u" && e instanceof HTMLElement ? !0 : typeof e.nodeName == "string" && typeof e.getAttribute == "function";
3938
3938
  }
3939
- function pe(e, t) {
3939
+ function me(e, t) {
3940
3940
  if (e.length > t.maxStringLength) {
3941
3941
  var n = e.length - t.maxStringLength, r = "... " + n + " more character" + (n > 1 ? "s" : "");
3942
- return pe(_.call(e, 0, t.maxStringLength), t) + r;
3942
+ return me(_.call(e, 0, t.maxStringLength), t) + r;
3943
3943
  }
3944
3944
  var i = z[t.quoteStyle || "single"];
3945
- return i.lastIndex = 0, B(v.call(v.call(e, i, "\\$1"), /[\x00-\x1f]/g, me), "single", t);
3945
+ return i.lastIndex = 0, B(v.call(v.call(e, i, "\\$1"), /[\x00-\x1f]/g, Y), "single", t);
3946
3946
  }
3947
- function me(e) {
3947
+ function Y(e) {
3948
3948
  var t = e.charCodeAt(0), n = {
3949
3949
  8: "b",
3950
3950
  9: "t",
@@ -3965,7 +3965,7 @@ var N = /* @__PURE__ */ n(((e, t) => {
3965
3965
  return e + " (" + t + ") {" + i + "}";
3966
3966
  }
3967
3967
  function ve(e) {
3968
- for (var t = 0; t < e.length; t++) if (oe(e[t], "\n") >= 0) return !1;
3968
+ for (var t = 0; t < e.length; t++) if (se(e[t], "\n") >= 0) return !1;
3969
3969
  return !0;
3970
3970
  }
3971
3971
  function ye(e, t) {
@@ -3987,14 +3987,14 @@ var N = /* @__PURE__ */ n(((e, t) => {
3987
3987
  var n = H(e), r = [];
3988
3988
  if (n) {
3989
3989
  r.length = e.length;
3990
- for (var i = 0; i < e.length; i++) r[i] = ie(e, i) ? t(e[i], e) : "";
3990
+ for (var i = 0; i < e.length; i++) r[i] = ae(e, i) ? t(e[i], e) : "";
3991
3991
  }
3992
3992
  var a = typeof D == "function" ? D(e) : [], o;
3993
3993
  if (k) {
3994
3994
  o = {};
3995
3995
  for (var s = 0; s < a.length; s++) o["$" + a[s]] = a[s];
3996
3996
  }
3997
- for (var c in e) ie(e, c) && (n && String(Number(c)) === c && c < e.length || k && o["$" + c] instanceof Symbol || (x.call(/[^\w$]/, c) ? r.push(t(c, e) + ": " + t(e[c], e)) : r.push(c + ": " + t(e[c], e))));
3997
+ for (var c in e) ae(e, c) && (n && String(Number(c)) === c && c < e.length || k && o["$" + c] instanceof Symbol || (x.call(/[^\w$]/, c) ? r.push(t(c, e) + ": " + t(e[c], e)) : r.push(c + ": " + t(e[c], e))));
3998
3998
  if (typeof D == "function") for (var l = 0; l < a.length; l++) j.call(e, a[l]) && r.push("[" + t(a[l]) + "]: " + t(e[a[l]], e));
3999
3999
  return r;
4000
4000
  }
@@ -6815,7 +6815,7 @@ function Oi() {
6815
6815
  enumerable: !0,
6816
6816
  value: !1
6817
6817
  }
6818
- })), J = null, ie = null, Y = Object.seal(xr(null, {
6818
+ })), ie = null, ae = null, J = Object.seal(xr(null, {
6819
6819
  tagCheck: {
6820
6820
  writable: !0,
6821
6821
  configurable: !1,
@@ -6828,7 +6828,7 @@ function Oi() {
6828
6828
  enumerable: !0,
6829
6829
  value: null
6830
6830
  }
6831
- })), ae = !0, oe = !0, se = !1, ce = !0, le = !1, ue = !0, de = !1, fe = !1, pe = null, me = null, he = !1, ge = !1, _e = !1, ve = !1, ye = !0, be = !1, xe = "user-content-", Se = !0, Ce = !1, we = {}, Te = null, Ee = $({}, /* @__PURE__ */ "annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp".split(".")), De = null, Oe = $({}, [
6831
+ })), oe = !0, se = !0, ce = !1, le = !0, ue = !1, de = !0, fe = !1, pe = !1, me = null, Y = null, he = !1, ge = !1, _e = !1, ve = !1, ye = !0, be = !1, xe = "user-content-", Se = !0, Ce = !1, we = {}, Te = null, Ee = $({}, /* @__PURE__ */ "annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp".split(".")), De = null, Oe = $({}, [
6832
6832
  "audio",
6833
6833
  "video",
6834
6834
  "img",
@@ -6877,13 +6877,13 @@ function Oi() {
6877
6877
  }), De = Di(e, "ADD_DATA_URI_TAGS", Oe, {
6878
6878
  transform: X,
6879
6879
  base: Oe
6880
- }), Te = Di(e, "FORBID_CONTENTS", Ee, { transform: X }), J = Di(e, "FORBID_TAGS", Jr({}), { transform: X }), ie = Di(e, "FORBID_ATTR", Jr({}), { transform: X }), we = Vr(e, "USE_PROFILES") ? e.USE_PROFILES && typeof e.USE_PROFILES == "object" ? Jr(e.USE_PROFILES) : e.USE_PROFILES : !1, ae = e.ALLOW_ARIA_ATTR !== !1, oe = e.ALLOW_DATA_ATTR !== !1, se = e.ALLOW_UNKNOWN_PROTOCOLS || !1, ce = e.ALLOW_SELF_CLOSE_IN_ATTR !== !1, le = e.SAFE_FOR_TEMPLATES || !1, ue = e.SAFE_FOR_XML !== !1, de = e.WHOLE_DOCUMENT || !1, ge = e.RETURN_DOM || !1, _e = e.RETURN_DOM_FRAGMENT || !1, ve = e.RETURN_TRUSTED_TYPE || !1, he = e.FORCE_BODY || !1, ye = e.SANITIZE_DOM !== !1, be = e.SANITIZE_NAMED_PROPS || !1, Se = e.KEEP_CONTENT !== !1, Ce = e.IN_PLACE || !1, U = Zr(e.ALLOWED_URI_REGEXP) ? e.ALLOWED_URI_REGEXP : mi, Pe = typeof e.NAMESPACE == "string" ? e.NAMESPACE : Ne, ze = Vr(e, "MATHML_TEXT_INTEGRATION_POINTS") && e.MATHML_TEXT_INTEGRATION_POINTS && typeof e.MATHML_TEXT_INTEGRATION_POINTS == "object" ? Jr(e.MATHML_TEXT_INTEGRATION_POINTS) : $({}, Re), Ve = Vr(e, "HTML_INTEGRATION_POINTS") && e.HTML_INTEGRATION_POINTS && typeof e.HTML_INTEGRATION_POINTS == "object" ? Jr(e.HTML_INTEGRATION_POINTS) : $({}, Be);
6880
+ }), Te = Di(e, "FORBID_CONTENTS", Ee, { transform: X }), ie = Di(e, "FORBID_TAGS", Jr({}), { transform: X }), ae = Di(e, "FORBID_ATTR", Jr({}), { transform: X }), we = Vr(e, "USE_PROFILES") ? e.USE_PROFILES && typeof e.USE_PROFILES == "object" ? Jr(e.USE_PROFILES) : e.USE_PROFILES : !1, oe = e.ALLOW_ARIA_ATTR !== !1, se = e.ALLOW_DATA_ATTR !== !1, ce = e.ALLOW_UNKNOWN_PROTOCOLS || !1, le = e.ALLOW_SELF_CLOSE_IN_ATTR !== !1, ue = e.SAFE_FOR_TEMPLATES || !1, de = e.SAFE_FOR_XML !== !1, fe = e.WHOLE_DOCUMENT || !1, ge = e.RETURN_DOM || !1, _e = e.RETURN_DOM_FRAGMENT || !1, ve = e.RETURN_TRUSTED_TYPE || !1, he = e.FORCE_BODY || !1, ye = e.SANITIZE_DOM !== !1, be = e.SANITIZE_NAMED_PROPS || !1, Se = e.KEEP_CONTENT !== !1, Ce = e.IN_PLACE || !1, U = Zr(e.ALLOWED_URI_REGEXP) ? e.ALLOWED_URI_REGEXP : mi, Pe = typeof e.NAMESPACE == "string" ? e.NAMESPACE : Ne, ze = Vr(e, "MATHML_TEXT_INTEGRATION_POINTS") && e.MATHML_TEXT_INTEGRATION_POINTS && typeof e.MATHML_TEXT_INTEGRATION_POINTS == "object" ? Jr(e.MATHML_TEXT_INTEGRATION_POINTS) : $({}, Re), Ve = Vr(e, "HTML_INTEGRATION_POINTS") && e.HTML_INTEGRATION_POINTS && typeof e.HTML_INTEGRATION_POINTS == "object" ? Jr(e.HTML_INTEGRATION_POINTS) : $({}, Be);
6881
6881
  let t = Vr(e, "CUSTOM_ELEMENT_HANDLING") && e.CUSTOM_ELEMENT_HANDLING && typeof e.CUSTOM_ELEMENT_HANDLING == "object" ? Jr(e.CUSTOM_ELEMENT_HANDLING) : xr(null);
6882
- if (q = xr(null), Vr(t, "tagNameCheck") && qe(t.tagNameCheck) && (q.tagNameCheck = t.tagNameCheck), Vr(t, "attributeNameCheck") && qe(t.attributeNameCheck) && (q.attributeNameCheck = t.attributeNameCheck), Vr(t, "allowCustomizedBuiltInElements") && typeof t.allowCustomizedBuiltInElements == "boolean" && (q.allowCustomizedBuiltInElements = t.allowCustomizedBuiltInElements), br(q), le && (oe = !1), _e && (ge = !0), we && (W = $({}, ii), G = xr(null), we.html === !0 && ($(W, Qr), $(G, ai)), we.svg === !0 && ($(W, $r), $(G, oi), $(G, ci)), we.svgFilters === !0 && ($(W, ei), $(G, oi), $(G, ci)), we.mathMl === !0 && ($(W, ni), $(G, si), $(G, ci))), Y.tagCheck = null, Y.attributeCheck = null, Vr(e, "ADD_TAGS") && (typeof e.ADD_TAGS == "function" ? Y.tagCheck = e.ADD_TAGS : Ar(e.ADD_TAGS) && (W === re && (W = Jr(W)), $(W, e.ADD_TAGS, X))), Vr(e, "ADD_ATTR") && (typeof e.ADD_ATTR == "function" ? Y.attributeCheck = e.ADD_ATTR : Ar(e.ADD_ATTR) && (G === K && (G = Jr(G)), $(G, e.ADD_ATTR, X))), Vr(e, "ADD_URI_SAFE_ATTR") && Ar(e.ADD_URI_SAFE_ATTR) && $(ke, e.ADD_URI_SAFE_ATTR, X), Vr(e, "FORBID_CONTENTS") && Ar(e.FORBID_CONTENTS) && (Te === Ee && (Te = Jr(Te)), $(Te, e.FORBID_CONTENTS, X)), Vr(e, "ADD_FORBID_CONTENTS") && Ar(e.ADD_FORBID_CONTENTS) && (Te === Ee && (Te = Jr(Te)), $(Te, e.ADD_FORBID_CONTENTS, X)), Se && (W["#text"] = !0), de && $(W, [
6882
+ if (q = xr(null), Vr(t, "tagNameCheck") && qe(t.tagNameCheck) && (q.tagNameCheck = t.tagNameCheck), Vr(t, "attributeNameCheck") && qe(t.attributeNameCheck) && (q.attributeNameCheck = t.attributeNameCheck), Vr(t, "allowCustomizedBuiltInElements") && typeof t.allowCustomizedBuiltInElements == "boolean" && (q.allowCustomizedBuiltInElements = t.allowCustomizedBuiltInElements), br(q), ue && (se = !1), _e && (ge = !0), we && (W = $({}, ii), G = xr(null), we.html === !0 && ($(W, Qr), $(G, ai)), we.svg === !0 && ($(W, $r), $(G, oi), $(G, ci)), we.svgFilters === !0 && ($(W, ei), $(G, oi), $(G, ci)), we.mathMl === !0 && ($(W, ni), $(G, si), $(G, ci))), J.tagCheck = null, J.attributeCheck = null, Vr(e, "ADD_TAGS") && (typeof e.ADD_TAGS == "function" ? J.tagCheck = e.ADD_TAGS : Ar(e.ADD_TAGS) && (W === re && (W = Jr(W)), $(W, e.ADD_TAGS, X))), Vr(e, "ADD_ATTR") && (typeof e.ADD_ATTR == "function" ? J.attributeCheck = e.ADD_ATTR : Ar(e.ADD_ATTR) && (G === K && (G = Jr(G)), $(G, e.ADD_ATTR, X))), Vr(e, "ADD_URI_SAFE_ATTR") && Ar(e.ADD_URI_SAFE_ATTR) && $(ke, e.ADD_URI_SAFE_ATTR, X), Vr(e, "FORBID_CONTENTS") && Ar(e.FORBID_CONTENTS) && (Te === Ee && (Te = Jr(Te)), $(Te, e.FORBID_CONTENTS, X)), Vr(e, "ADD_FORBID_CONTENTS") && Ar(e.ADD_FORBID_CONTENTS) && (Te === Ee && (Te = Jr(Te)), $(Te, e.ADD_FORBID_CONTENTS, X)), Se && (W["#text"] = !0), fe && $(W, [
6883
6883
  "html",
6884
6884
  "head",
6885
6885
  "body"
6886
- ]), W.table && ($(W, ["tbody"]), delete J.tbody), e.TRUSTED_TYPES_POLICY) {
6886
+ ]), W.table && ($(W, ["tbody"]), delete ie.tbody), e.TRUSTED_TYPES_POLICY) {
6887
6887
  if (typeof e.TRUSTED_TYPES_POLICY.createHTML != "function") throw Wr("TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.");
6888
6888
  if (typeof e.TRUSTED_TYPES_POLICY.createScriptURL != "function") throw Wr("TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.");
6889
6889
  let t = S;
@@ -6975,7 +6975,7 @@ function Oi() {
6975
6975
  if (n) for (let e = n.length - 1; e >= 0; --e) t.push(n[e]);
6976
6976
  }
6977
6977
  }, ot = function(e) {
6978
- if (!ue) return;
6978
+ if (!de) return;
6979
6979
  let t = [e];
6980
6980
  for (; t.length > 0;) {
6981
6981
  let e = t.pop(), n = y ? y(e) : e.nodeType;
@@ -7013,7 +7013,7 @@ function Oi() {
7013
7013
  } catch {}
7014
7014
  }
7015
7015
  let a = t.body || t.documentElement;
7016
- return e && r && a.insertBefore(n.createTextNode(r), a.childNodes[0] || null), Pe === Ne ? F.call(t, de ? "html" : "body")[0] : de ? t.documentElement : a;
7016
+ return e && r && a.insertBefore(n.createTextNode(r), a.childNodes[0] || null), Pe === Ne ? F.call(t, fe ? "html" : "body")[0] : fe ? t.documentElement : a;
7017
7017
  }, ct = function(e) {
7018
7018
  let t = x ? x(e) : e.ownerDocument;
7019
7019
  return N.call(t || e, e, c.SHOW_ELEMENT | c.SHOW_COMMENT | c.SHOW_TEXT | c.SHOW_PROCESSING_INSTRUCTION | c.SHOW_CDATA_SECTION, null);
@@ -7051,9 +7051,9 @@ function Oi() {
7051
7051
  });
7052
7052
  }
7053
7053
  let ht = function(e, t) {
7054
- return !!(ue && e.hasChildNodes() && !pt(e.firstElementChild) && Ur(yi, e.textContent) && Ur(yi, e.innerHTML) || ue && e.namespaceURI === Ne && t === "style" && pt(e.firstElementChild) || e.nodeType === Ci.processingInstruction || ue && e.nodeType === Ci.comment && Ur(bi, e.data));
7054
+ return !!(de && e.hasChildNodes() && !pt(e.firstElementChild) && Ur(yi, e.textContent) && Ur(yi, e.innerHTML) || de && e.namespaceURI === Ne && t === "style" && pt(e.firstElementChild) || e.nodeType === Ci.processingInstruction || de && e.nodeType === Ci.comment && Ur(bi, e.data));
7055
7055
  }, gt = function(e, t, n) {
7056
- if (!J[t] && xt(t) && (q.tagNameCheck instanceof RegExp && Ur(q.tagNameCheck, t) || q.tagNameCheck instanceof Function && q.tagNameCheck(t))) return !1;
7056
+ if (!ie[t] && xt(t) && (q.tagNameCheck instanceof RegExp && Ur(q.tagNameCheck, t) || q.tagNameCheck instanceof Function && q.tagNameCheck(t))) return !1;
7057
7057
  if (Se && !Te[t]) {
7058
7058
  let t = g(e), r = h(e);
7059
7059
  if (r && t) {
@@ -7071,28 +7071,28 @@ function Oi() {
7071
7071
  if (mt(L.beforeSanitizeElements, e, null), e !== n && g(e) === null) return Ce && at(e), !0;
7072
7072
  if (dt(e)) return tt(e), !0;
7073
7073
  let r = X(b ? b(e) : e.nodeName);
7074
- if (W = _t(L.uponSanitizeElement, W, re, pe), mt(L.uponSanitizeElement, e, {
7074
+ if (W = _t(L.uponSanitizeElement, W, re, me), mt(L.uponSanitizeElement, e, {
7075
7075
  tagName: r,
7076
7076
  allowedTags: W
7077
7077
  }), e !== n && g(e) === null) return Ce && at(e), !0;
7078
7078
  if (ht(e, r)) return tt(e), !0;
7079
- if (J[r] || !(Y.tagCheck instanceof Function && Y.tagCheck(r)) && !W[r]) {
7079
+ if (ie[r] || !(J.tagCheck instanceof Function && J.tagCheck(r)) && !W[r]) {
7080
7080
  let t = gt(e, r, n);
7081
7081
  return t === !1 && mt(L.afterSanitizeElements, e, null), t;
7082
7082
  }
7083
7083
  if ((y ? y(e) : e.nodeType) === Ci.element && !et(e) || (r === "noscript" || r === "noembed" || r === "noframes") && Ur(xi, e.innerHTML)) return tt(e), !0;
7084
- if (le && e.nodeType === Ci.text) {
7084
+ if (ue && e.nodeType === Ci.text) {
7085
7085
  let n = lt(e.textContent);
7086
7086
  e.textContent !== n && (Or(t.removed, { element: e.cloneNode() }), e.textContent = n);
7087
7087
  }
7088
7088
  return mt(L.afterSanitizeElements, e, null), !1;
7089
7089
  }, yt = function(e, t, r) {
7090
- if (ie[t] || ue && t === "patchsrc" || ue && t === "for" && e !== "label" && e !== "output" || ye && (t === "id" || t === "name") && (r in n || r in Ke)) return !1;
7091
- let i = G[t] || Y.attributeCheck instanceof Function && Y.attributeCheck(t, e);
7092
- if (!(oe && Ur(ee, t)) && !(ae && Ur(V, t))) {
7090
+ if (ae[t] || de && t === "patchsrc" || de && t === "for" && e !== "label" && e !== "output" || ye && (t === "id" || t === "name") && (r in n || r in Ke)) return !1;
7091
+ let i = G[t] || J.attributeCheck instanceof Function && J.attributeCheck(t, e);
7092
+ if (!(se && Ur(ee, t)) && !(oe && Ur(V, t))) {
7093
7093
  if (!i) {
7094
7094
  if (!(xt(e) && (q.tagNameCheck instanceof RegExp && Ur(q.tagNameCheck, e) || q.tagNameCheck instanceof Function && q.tagNameCheck(e)) && (q.attributeNameCheck instanceof RegExp && Ur(q.attributeNameCheck, t) || q.attributeNameCheck instanceof Function && q.attributeNameCheck(t, e)) || t === "is" && q.allowCustomizedBuiltInElements && (q.tagNameCheck instanceof RegExp && Ur(q.tagNameCheck, r) || q.tagNameCheck instanceof Function && q.tagNameCheck(r)))) return !1;
7095
- } else if (!ke[t] && !Ur(U, Pr(r, te, "")) && !((t === "src" || t === "xlink:href" || t === "href") && e !== "script" && Fr(r, "data:") === 0 && De[e]) && !(se && !Ur(H, Pr(r, te, ""))) && r) return !1;
7095
+ } else if (!ke[t] && !Ur(U, Pr(r, te, "")) && !((t === "src" || t === "xlink:href" || t === "href") && e !== "script" && Fr(r, "data:") === 0 && De[e]) && !(ce && !Ur(H, Pr(r, te, ""))) && r) return !1;
7096
7096
  }
7097
7097
  return !0;
7098
7098
  }, bt = $({}, [
@@ -7122,7 +7122,7 @@ function Oi() {
7122
7122
  mt(L.beforeSanitizeAttributes, e, null);
7123
7123
  let t = e.attributes;
7124
7124
  if (!t || dt(e)) return;
7125
- G = _t(L.uponSanitizeAttribute, G, K, me);
7125
+ G = _t(L.uponSanitizeAttribute, G, K, Y);
7126
7126
  let n = {
7127
7127
  attrName: "",
7128
7128
  attrValue: "",
@@ -7132,7 +7132,7 @@ function Oi() {
7132
7132
  }, r = t.length, i = X(e.nodeName);
7133
7133
  for (; r--;) {
7134
7134
  let a = t[r], o = a.name, s = a.namespaceURI, c = a.value, l = X(o), u = c, d = o === "value" ? u : Ir(u);
7135
- if (n.attrName = l, n.attrValue = d, n.keepAttr = !0, n.forceKeepAttr = void 0, mt(L.uponSanitizeAttribute, e, n), d = n.attrValue, be && (l === "id" || l === "name") && Fr(d, xe) !== 0 && (rt(o, e), d = xe + d), ue && Ur(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, d)) {
7135
+ if (n.attrName = l, n.attrValue = d, n.keepAttr = !0, n.forceKeepAttr = void 0, mt(L.uponSanitizeAttribute, e, n), d = n.attrValue, be && (l === "id" || l === "name") && Fr(d, xe) !== 0 && (rt(o, e), d = xe + d), de && Ur(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, d)) {
7136
7136
  rt(o, e);
7137
7137
  continue;
7138
7138
  }
@@ -7145,11 +7145,11 @@ function Oi() {
7145
7145
  rt(o, e);
7146
7146
  continue;
7147
7147
  }
7148
- if (!ce && Ur(Si, d)) {
7148
+ if (!le && Ur(Si, d)) {
7149
7149
  rt(o, e);
7150
7150
  continue;
7151
7151
  }
7152
- if (le && (d = lt(d)), !yt(i, l, d)) {
7152
+ if (ue && (d = lt(d)), !yt(i, l, d)) {
7153
7153
  rt(o, e);
7154
7154
  continue;
7155
7155
  }
@@ -7206,14 +7206,14 @@ function Oi() {
7206
7206
  let n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, i = null, a = null, o = null, s = null;
7207
7207
  if (Fe = !e, Fe && (e = "<!-->"), typeof e != "string" && !pt(e) && (e = Yr(e), typeof e != "string")) throw Wr("dirty is not a string, aborting");
7208
7208
  if (!t.isSupported) return e;
7209
- fe ? (W = pe, G = me) : Je(n), (L.uponSanitizeElement.length > 0 || L.uponSanitizeAttribute.length > 0) && (W = Jr(W)), L.uponSanitizeAttribute.length > 0 && (G = Jr(G)), t.removed = [];
7209
+ pe ? (W = me, G = Y) : Je(n), (L.uponSanitizeElement.length > 0 || L.uponSanitizeAttribute.length > 0) && (W = Jr(W)), L.uponSanitizeAttribute.length > 0 && (G = Jr(G)), t.removed = [];
7210
7210
  let c = Ce && typeof e != "string" && pt(e);
7211
7211
  if (c) {
7212
7212
  ot(e);
7213
7213
  let t = b ? b(e) : e.nodeName;
7214
7214
  if (typeof t == "string") {
7215
7215
  let n = X(t);
7216
- if (!W[n] || J[n]) throw nt(e), Wr("root node is forbidden and cannot be sanitized in-place");
7216
+ if (!W[n] || ie[n]) throw nt(e), Wr("root node is forbidden and cannot be sanitized in-place");
7217
7217
  }
7218
7218
  if (dt(e)) throw nt(e), Wr("root node is clobbered and cannot be sanitized in-place");
7219
7219
  try {
@@ -7223,7 +7223,7 @@ function Oi() {
7223
7223
  }
7224
7224
  } else if (pt(e)) i = st("<!---->"), a = i.ownerDocument.importNode(e, !0), a.nodeType === Ci.element && a.nodeName === "BODY" || a.nodeName === "HTML" ? i = a : i.appendChild(a), Et(a);
7225
7225
  else {
7226
- if (!ge && !le && !de && e.indexOf("<") === -1) return S && ve ? O(e) : e;
7226
+ if (!ge && !ue && !fe && e.indexOf("<") === -1) return S && ve ? O(e) : e;
7227
7227
  if (i = st(e), !i) return ge ? null : ve ? C : "";
7228
7228
  }
7229
7229
  i && he && tt(i.firstChild);
@@ -7238,18 +7238,18 @@ function Oi() {
7238
7238
  }
7239
7239
  if (c) return Tr(t.removed, (e) => {
7240
7240
  e.element && at(e.element);
7241
- }), le && ut(e), e;
7241
+ }), ue && ut(e), e;
7242
7242
  if (ge) {
7243
- if (le && ut(i), _e) for (s = P.call(i.ownerDocument); i.firstChild;) s.appendChild(i.firstChild);
7243
+ if (ue && ut(i), _e) for (s = P.call(i.ownerDocument); i.firstChild;) s.appendChild(i.firstChild);
7244
7244
  else s = i;
7245
7245
  return (G.shadowroot || G.shadowrootmode) && (s = I.call(r, s, !0)), s;
7246
7246
  }
7247
- let u = de ? i.outerHTML : i.innerHTML;
7248
- return de && W["!doctype"] && i.ownerDocument && i.ownerDocument.doctype && i.ownerDocument.doctype.name && Ur(_i, i.ownerDocument.doctype.name) && (u = "<!DOCTYPE " + i.ownerDocument.doctype.name + ">\n" + u), le && (u = lt(u)), S && ve ? O(u) : u;
7247
+ let u = fe ? i.outerHTML : i.innerHTML;
7248
+ return fe && W["!doctype"] && i.ownerDocument && i.ownerDocument.doctype && i.ownerDocument.doctype.name && Ur(_i, i.ownerDocument.doctype.name) && (u = "<!DOCTYPE " + i.ownerDocument.doctype.name + ">\n" + u), ue && (u = lt(u)), S && ve ? O(u) : u;
7249
7249
  }, t.setConfig = function() {
7250
- Je(arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}), fe = !0, pe = W, me = G;
7250
+ Je(arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}), pe = !0, me = W, Y = G;
7251
7251
  }, t.clearConfig = function() {
7252
- Ge = null, fe = !1, pe = null, me = null, S = w, C = "";
7252
+ Ge = null, pe = !1, me = null, Y = null, S = w, C = "";
7253
7253
  }, t.isValidAttribute = function(e, t, n) {
7254
7254
  return Ge || Je({}), yt(X(e), X(t), n);
7255
7255
  }, t.addHook = function(e, t) {
@@ -7558,16 +7558,16 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
7558
7558
  function q(e, t) {
7559
7559
  Array.isArray(e.illegal) && (e.illegal = y(...e.illegal));
7560
7560
  }
7561
- function J(e, t) {
7561
+ function ie(e, t) {
7562
7562
  if (e.match) {
7563
7563
  if (e.begin || e.end) throw Error("begin & end are not supported with match");
7564
7564
  e.begin = e.match, delete e.match;
7565
7565
  }
7566
7566
  }
7567
- function ie(e, t) {
7567
+ function ae(e, t) {
7568
7568
  e.relevance === void 0 && (e.relevance = 1);
7569
7569
  }
7570
- var Y = (e, t) => {
7570
+ var J = (e, t) => {
7571
7571
  if (!e.beforeMatch) return;
7572
7572
  if (e.starts) throw Error("beforeMatch cannot be used with starts");
7573
7573
  let n = Object.assign({}, e);
@@ -7577,7 +7577,7 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
7577
7577
  relevance: 0,
7578
7578
  contains: [Object.assign(n, { endsParent: !0 })]
7579
7579
  }, e.relevance = 0, delete n.beforeMatch;
7580
- }, ae = [
7580
+ }, oe = [
7581
7581
  "of",
7582
7582
  "and",
7583
7583
  "for",
@@ -7589,32 +7589,32 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
7589
7589
  "parent",
7590
7590
  "list",
7591
7591
  "value"
7592
- ], oe = "keyword";
7593
- function se(e, t, n = oe) {
7592
+ ], se = "keyword";
7593
+ function ce(e, t, n = se) {
7594
7594
  let r = Object.create(null);
7595
7595
  return typeof e == "string" ? i(n, e.split(" ")) : Array.isArray(e) ? i(n, e) : Object.keys(e).forEach(function(n) {
7596
- Object.assign(r, se(e[n], t, n));
7596
+ Object.assign(r, ce(e[n], t, n));
7597
7597
  }), r;
7598
7598
  function i(e, n) {
7599
7599
  t && (n = n.map((e) => e.toLowerCase())), n.forEach(function(t) {
7600
7600
  let n = t.split("|");
7601
- r[n[0]] = [e, ce(n[0], n[1])];
7601
+ r[n[0]] = [e, le(n[0], n[1])];
7602
7602
  });
7603
7603
  }
7604
7604
  }
7605
- function ce(e, t) {
7606
- return t ? Number(t) : le(e) ? 0 : 1;
7605
+ function le(e, t) {
7606
+ return t ? Number(t) : ue(e) ? 0 : 1;
7607
7607
  }
7608
- function le(e) {
7609
- return ae.includes(e.toLowerCase());
7608
+ function ue(e) {
7609
+ return oe.includes(e.toLowerCase());
7610
7610
  }
7611
- var ue = {}, de = (e) => {
7611
+ var de = {}, fe = (e) => {
7612
7612
  console.error(e);
7613
- }, fe = (e, ...t) => {
7613
+ }, pe = (e, ...t) => {
7614
7614
  console.log(`WARN: ${e}`, ...t);
7615
- }, pe = (e, t) => {
7616
- ue[`${e}/${t}`] || (console.log(`Deprecated as of ${e}. ${t}`), ue[`${e}/${t}`] = !0);
7617
- }, me = /* @__PURE__ */ Error();
7615
+ }, me = (e, t) => {
7616
+ de[`${e}/${t}`] || (console.log(`Deprecated as of ${e}. ${t}`), de[`${e}/${t}`] = !0);
7617
+ }, Y = /* @__PURE__ */ Error();
7618
7618
  function he(e, t, { key: n }) {
7619
7619
  let r = 0, i = e[n], a = {}, o = {};
7620
7620
  for (let e = 1; e <= t.length; e++) o[e + r] = i[e], a[e + r] = !0, r += b(t[e - 1]);
@@ -7622,15 +7622,15 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
7622
7622
  }
7623
7623
  function ge(e) {
7624
7624
  if (Array.isArray(e.begin)) {
7625
- if (e.skip || e.excludeBegin || e.returnBegin) throw de("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), me;
7626
- if (typeof e.beginScope != "object" || e.beginScope === null) throw de("beginScope must be object"), me;
7625
+ if (e.skip || e.excludeBegin || e.returnBegin) throw fe("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), Y;
7626
+ if (typeof e.beginScope != "object" || e.beginScope === null) throw fe("beginScope must be object"), Y;
7627
7627
  he(e, e.begin, { key: "beginScope" }), e.begin = C(e.begin, { joinWith: "" });
7628
7628
  }
7629
7629
  }
7630
7630
  function _e(e) {
7631
7631
  if (Array.isArray(e.end)) {
7632
- if (e.skip || e.excludeEnd || e.returnEnd) throw de("skip, excludeEnd, returnEnd not compatible with endScope: {}"), me;
7633
- if (typeof e.endScope != "object" || e.endScope === null) throw de("endScope must be object"), me;
7632
+ if (e.skip || e.excludeEnd || e.returnEnd) throw fe("skip, excludeEnd, returnEnd not compatible with endScope: {}"), Y;
7633
+ if (typeof e.endScope != "object" || e.endScope === null) throw fe("endScope must be object"), Y;
7634
7634
  he(e, e.end, { key: "endScope" }), e.end = C(e.end, { joinWith: "" });
7635
7635
  }
7636
7636
  }
@@ -7703,16 +7703,16 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
7703
7703
  if (n.isCompiled) return a;
7704
7704
  [
7705
7705
  G,
7706
- J,
7706
+ ie,
7707
7707
  ye,
7708
- Y
7708
+ J
7709
7709
  ].forEach((e) => e(n, r)), e.compilerExtensions.forEach((e) => e(n, r)), n.__beforeBegin = null, [
7710
7710
  K,
7711
7711
  q,
7712
- ie
7712
+ ae
7713
7713
  ].forEach((e) => e(n, r)), n.isCompiled = !0;
7714
7714
  let s = null;
7715
- return typeof n.keywords == "object" && n.keywords.$pattern && (n.keywords = Object.assign({}, n.keywords), s = n.keywords.$pattern, delete n.keywords.$pattern), s ||= /\w+/, n.keywords &&= se(n.keywords, e.case_insensitive), a.keywordPatternRe = t(s, !0), r && (n.begin ||= /\B|\b/, a.beginRe = t(a.begin), !n.end && !n.endsWithParent && (n.end = /\B|\b/), n.end && (a.endRe = t(a.end)), a.terminatorEnd = p(a.end) || "", n.endsWithParent && r.terminatorEnd && (a.terminatorEnd += (n.end ? "|" : "") + r.terminatorEnd)), n.illegal && (a.illegalRe = t(n.illegal)), n.contains ||= [], n.contains = [].concat(...n.contains.map(function(e) {
7715
+ return typeof n.keywords == "object" && n.keywords.$pattern && (n.keywords = Object.assign({}, n.keywords), s = n.keywords.$pattern, delete n.keywords.$pattern), s ||= /\w+/, n.keywords &&= ce(n.keywords, e.case_insensitive), a.keywordPatternRe = t(s, !0), r && (n.begin ||= /\B|\b/, a.beginRe = t(a.begin), !n.end && !n.endsWithParent && (n.end = /\B|\b/), n.end && (a.endRe = t(a.end)), a.terminatorEnd = p(a.end) || "", n.endsWithParent && r.terminatorEnd && (a.terminatorEnd += (n.end ? "|" : "") + r.terminatorEnd)), n.illegal && (a.illegalRe = t(n.illegal)), n.contains ||= [], n.contains = [].concat(...n.contains.map(function(e) {
7716
7716
  return Se(e === "self" ? n : e);
7717
7717
  })), n.contains.forEach(function(e) {
7718
7718
  o(e, a);
@@ -7757,13 +7757,13 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
7757
7757
  let n = l.languageDetectRe.exec(t);
7758
7758
  if (n) {
7759
7759
  let t = N(n[1]);
7760
- return t || (fe(s.replace("{}", n[1])), fe("Falling back to no-highlight mode for this block.", e)), t ? n[1] : "no-highlight";
7760
+ return t || (pe(s.replace("{}", n[1])), pe("Falling back to no-highlight mode for this block.", e)), t ? n[1] : "no-highlight";
7761
7761
  }
7762
7762
  return t.split(/\s+/).find((e) => u(e) || N(e));
7763
7763
  }
7764
7764
  function p(e, t, n) {
7765
7765
  let r = "", i = "";
7766
- typeof t == "object" ? (r = e, n = t.ignoreIllegals, i = t.language) : (pe("10.7.0", "highlight(lang, code, ...args) has been deprecated."), pe("10.7.0", "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), i = e, r = t), n === void 0 && (n = !0);
7766
+ typeof t == "object" ? (r = e, n = t.ignoreIllegals, i = t.language) : (me("10.7.0", "highlight(lang, code, ...args) has been deprecated."), me("10.7.0", "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), i = e, r = t), n === void 0 && (n = !0);
7767
7767
  let a = {
7768
7768
  code: r,
7769
7769
  language: i
@@ -7893,7 +7893,7 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
7893
7893
  return P += a, a.length;
7894
7894
  }
7895
7895
  let D = N(e);
7896
- if (!D) throw de(s.replace("{}", e)), Error("Unknown language: \"" + e + "\"");
7896
+ if (!D) throw fe(s.replace("{}", e)), Error("Unknown language: \"" + e + "\"");
7897
7897
  let O = be(D), k = "", A = a || O, j = {}, M = new l.__emitter(l);
7898
7898
  w();
7899
7899
  let P = "", F = 0, I = 0, L = 0, R = !1;
@@ -8005,10 +8005,10 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
8005
8005
  l = Ee(l, e);
8006
8006
  }
8007
8007
  let E = () => {
8008
- k(), pe("10.6.0", "initHighlighting() deprecated. Use highlightAll() now.");
8008
+ k(), me("10.6.0", "initHighlighting() deprecated. Use highlightAll() now.");
8009
8009
  };
8010
8010
  function D() {
8011
- k(), pe("10.6.0", "initHighlightingOnLoad() deprecated. Use highlightAll() now.");
8011
+ k(), me("10.6.0", "initHighlightingOnLoad() deprecated. Use highlightAll() now.");
8012
8012
  }
8013
8013
  let O = !1;
8014
8014
  function k() {
@@ -8026,7 +8026,7 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
8026
8026
  try {
8027
8027
  i = r(e);
8028
8028
  } catch (e) {
8029
- if (de("Language definition for '{}' could not be registered.".replace("{}", n)), o) de(e);
8029
+ if (fe("Language definition for '{}' could not be registered.".replace("{}", n)), o) fe(e);
8030
8030
  else throw e;
8031
8031
  i = c;
8032
8032
  }
@@ -8072,7 +8072,7 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
8072
8072
  });
8073
8073
  }
8074
8074
  function B(e) {
8075
- return pe("10.7.0", "highlightBlock will be removed entirely in v12.0"), pe("10.7.0", "Please use highlightElement now."), w(e);
8075
+ return me("10.7.0", "highlightBlock will be removed entirely in v12.0"), me("10.7.0", "Please use highlightElement now."), w(e);
8076
8076
  }
8077
8077
  Object.assign(e, {
8078
8078
  highlight: p,
@@ -23904,7 +23904,7 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
23904
23904
  end: />/,
23905
23905
  keywords: "repeat each",
23906
23906
  contains: [...a, re]
23907
- }, J = {
23907
+ }, ie = {
23908
23908
  begin: /\(/,
23909
23909
  end: /\)/,
23910
23910
  keywords: D,
@@ -23932,7 +23932,7 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
23932
23932
  ],
23933
23933
  endsParent: !0,
23934
23934
  illegal: /["']/
23935
- }, ie = {
23935
+ }, ae = {
23936
23936
  match: [
23937
23937
  /(func|macro)/,
23938
23938
  /\s+/,
@@ -23944,20 +23944,20 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
23944
23944
  },
23945
23945
  contains: [
23946
23946
  q,
23947
- J,
23947
+ ie,
23948
23948
  t
23949
23949
  ],
23950
23950
  illegal: [/\[/, /%/]
23951
- }, Y = {
23951
+ }, J = {
23952
23952
  match: [/\b(?:subscript|init[?!]?)/, /\s*(?=[<(])/],
23953
23953
  className: { 1: "keyword" },
23954
23954
  contains: [
23955
23955
  q,
23956
- J,
23956
+ ie,
23957
23957
  t
23958
23958
  ],
23959
23959
  illegal: /\[|%/
23960
- }, ae = {
23960
+ }, oe = {
23961
23961
  match: [
23962
23962
  /operator/,
23963
23963
  /\s+/,
@@ -23967,7 +23967,7 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
23967
23967
  1: "keyword",
23968
23968
  3: "title"
23969
23969
  }
23970
- }, oe = {
23970
+ }, se = {
23971
23971
  begin: [
23972
23972
  /precedencegroup/,
23973
23973
  /\s+/,
@@ -23980,7 +23980,7 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
23980
23980
  contains: [re],
23981
23981
  keywords: [...p, ...f],
23982
23982
  end: /}/
23983
- }, se = {
23983
+ }, ce = {
23984
23984
  match: [
23985
23985
  /class\b/,
23986
23986
  /\s+/,
@@ -23993,7 +23993,7 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
23993
23993
  3: "keyword",
23994
23994
  5: "title.function"
23995
23995
  }
23996
- }, ce = {
23996
+ }, le = {
23997
23997
  match: [
23998
23998
  /class\b/,
23999
23999
  /\s+/,
@@ -24003,7 +24003,7 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
24003
24003
  1: "keyword",
24004
24004
  3: "keyword"
24005
24005
  }
24006
- }, le = {
24006
+ }, ue = {
24007
24007
  begin: [
24008
24008
  /(struct|protocol|class|extension|enum|actor)/,
24009
24009
  /\s+/,
@@ -24052,13 +24052,13 @@ var ki = Oi(), Ai = /* @__PURE__ */ n(((e, t) => {
24052
24052
  keywords: D,
24053
24053
  contains: [
24054
24054
  ...a,
24055
- ie,
24056
- Y,
24057
- se,
24055
+ ae,
24056
+ J,
24058
24057
  ce,
24059
24058
  le,
24060
- ae,
24059
+ ue,
24061
24060
  oe,
24061
+ se,
24062
24062
  {
24063
24063
  beginKeywords: "import",
24064
24064
  end: /$/,
@@ -26368,10 +26368,13 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26368
26368
  }, Hl = { class: "file-card" }, Ul = { class: "file-meta" }, Wl = { class: "file-name" }, Gl = {
26369
26369
  key: 0,
26370
26370
  class: "file-ext"
26371
- }, Kl = ["onClick"], ql = ["src", "alt"], Jl = {
26371
+ }, Kl = ["onClick"], ql = {
26372
+ key: 0,
26373
+ class: "image-preview-overlay"
26374
+ }, Jl = ["src", "alt"], Yl = {
26372
26375
  key: 0,
26373
26376
  class: "preview-caption"
26374
- }, Yl = /* @__PURE__ */ m({
26377
+ }, Xl = /* @__PURE__ */ m({
26375
26378
  __name: "AiChatResponse",
26376
26379
  props: {
26377
26380
  message: {},
@@ -26386,13 +26389,13 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26386
26389
  let t = e, n = o(() => [...t.message.blocks || []].sort((e, t) => e.sort - t.sort)), r = o(() => n.value.filter((e) => e.type === "thinking")), d = o(() => !!t.message.reasoning_content?.trim() || (t.message.tools?.length ?? 0) > 0 || r.value.length > 0 || t.message.thinkingStatus === "thinking"), f = o(() => {
26387
26390
  let e = r.value[0];
26388
26391
  return !e || !e.steps || !e.steps.length ? [] : e.steps;
26389
- }), m = x(!d.value), h = o(() => !d.value || m.value), _ = o(() => n.value.filter((e) => e.type !== "thinking")), T = o(() => !!t.message.content?.trim()), M = o(() => (t.message.resources?.length ?? 0) > 0), N = o(() => !!t.message.audioUrl), P = o(() => {
26392
+ }), m = x(!d.value), h = o(() => !d.value || m.value), _ = o(() => n.value.filter((e) => e.type !== "thinking")), T = o(() => !!t.message.content?.trim()), A = o(() => (t.message.resources?.length ?? 0) > 0), M = o(() => !!t.message.audioUrl), N = o(() => {
26390
26393
  let e = t.message.structuredData;
26391
26394
  return e && (e.analysisText || e.distributionMapUrl || e.rawData || e.detailData);
26392
- }), F = o(() => {
26395
+ }), P = o(() => {
26393
26396
  let e = t.message.structuredData?.analysisText;
26394
26397
  return e ? typeof e == "string" ? e : typeof e == "object" && e.strings && Array.isArray(e.strings) ? e.strings.join("") : String(e) : "";
26395
- }), I = o(() => t.message.structuredData?.distributionMapUrl || ""), L = o(() => {
26398
+ }), F = o(() => t.message.structuredData?.distributionMapUrl || ""), I = o(() => {
26396
26399
  let e = t.message.structuredData;
26397
26400
  if (!e) return [];
26398
26401
  let n = e.detailData || e.rawData;
@@ -26403,18 +26406,18 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26403
26406
  return [];
26404
26407
  }
26405
26408
  return Array.isArray(n) ? n : [];
26406
- }), R = o(() => {
26407
- let e = L.value;
26409
+ }), L = o(() => {
26410
+ let e = I.value;
26408
26411
  return e.length ? Object.keys(e[0]) : [];
26409
- }), z = (e) => e ? /^(https?:)?\/\//i.test(e) || e.startsWith("data:") || !t.baseHttp ? e : t.baseHttp.replace(/\/$/, "") + (e.startsWith("/") ? e : `/${e}`) : "", B = x(null), ee = o(() => z(B.value?.url)), V = /* @__PURE__ */ new Map(), H = /* @__PURE__ */ new Map(), te = x(/* @__PURE__ */ new Set()), ne = (e, t) => {
26410
- e && V.set(t, e);
26411
- }, U = (e) => {
26412
- B.value = e;
26413
- }, W = () => {
26414
- B.value = null;
26415
- }, re = (e) => {
26416
- te.value.has(e) ? te.value.delete(e) : te.value.add(e);
26417
- }, G = (e) => te.value.has(e), K = async (e, t) => {
26412
+ }), R = (e) => e ? /^(https?:)?\/\//i.test(e) || e.startsWith("data:") || !t.baseHttp ? e : t.baseHttp.replace(/\/$/, "") + (e.startsWith("/") ? e : `/${e}`) : "", z = x(null), B = o(() => R(z.value?.url)), ee = /* @__PURE__ */ new Map(), V = /* @__PURE__ */ new Map(), H = x(/* @__PURE__ */ new Set()), te = (e, t) => {
26413
+ e && ee.set(t, e);
26414
+ }, ne = (e) => {
26415
+ z.value = e;
26416
+ }, U = () => {
26417
+ z.value = null;
26418
+ }, W = (e) => {
26419
+ H.value.has(e) ? H.value.delete(e) : H.value.add(e);
26420
+ }, re = (e) => H.value.has(e), G = async (e, t) => {
26418
26421
  if (!e) return;
26419
26422
  let n = t || "file";
26420
26423
  try {
@@ -26427,7 +26430,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26427
26430
  } catch {}
26428
26431
  let r = document.createElement("a");
26429
26432
  r.href = e, r.download = n, r.target = "_blank", document.body.appendChild(r), r.click(), document.body.removeChild(r);
26430
- }, q = (e, t) => {
26433
+ }, K = (e, t) => {
26431
26434
  let n = {
26432
26435
  ...e,
26433
26436
  ...t
@@ -26449,13 +26452,13 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26449
26452
  e && typeof e == "object" && (e.splitLine = { show: !1 });
26450
26453
  });
26451
26454
  }), n;
26452
- }, J = () => {
26455
+ }, q = () => {
26453
26456
  n.value.forEach((e) => {
26454
26457
  if (e.type !== "echarts") return;
26455
- let n = V.get(e.sort);
26458
+ let n = ee.get(e.sort);
26456
26459
  if (!n) return;
26457
- let r = H.get(e.sort);
26458
- r || (r = j.init(n, void 0, { renderer: "canvas" }), H.set(e.sort, r));
26460
+ let r = V.get(e.sort);
26461
+ r || (r = j.init(n, void 0, { renderer: "canvas" }), V.set(e.sort, r));
26459
26462
  let i = t.theme === "dark" ? {
26460
26463
  backgroundColor: "transparent",
26461
26464
  textStyle: { color: "#e5e7eb" },
@@ -26500,25 +26503,25 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26500
26503
  xAxis: { splitLine: { show: !1 } },
26501
26504
  yAxis: { splitLine: { show: !1 } }
26502
26505
  };
26503
- r.setOption(q(i, e.option || {}), !0);
26506
+ r.setOption(K(i, e.option || {}), !0);
26504
26507
  });
26505
26508
  }, ie = () => {
26506
- H.forEach((e) => e.dispose()), H.clear();
26509
+ V.forEach((e) => e.dispose()), V.clear();
26507
26510
  };
26508
26511
  v(() => {
26509
- J(), window.addEventListener("resize", Y);
26512
+ q(), window.addEventListener("resize", ae);
26510
26513
  }), y(() => {
26511
- ie(), window.removeEventListener("resize", Y);
26514
+ ie(), window.removeEventListener("resize", ae);
26512
26515
  });
26513
- let Y = () => {
26514
- H.forEach((e) => e.resize());
26516
+ let ae = () => {
26517
+ V.forEach((e) => e.resize());
26515
26518
  };
26516
26519
  return D(() => t.message.thinkingStatus, (e) => {
26517
26520
  e === "end" || e === "error" ? m.value = !0 : e === "thinking" && (m.value = !1);
26518
26521
  }, { immediate: !0 }), D(() => t.message, () => {
26519
- ie(), setTimeout(J, 0);
26522
+ ie(), setTimeout(q, 0);
26520
26523
  }, { deep: !0 }), D(h, (e) => {
26521
- e && setTimeout(J, 0);
26524
+ e && setTimeout(q, 0);
26522
26525
  }), (t, n) => (b(), l("div", { class: g(["AiChatResponse", `AiChatResponse--${e.theme}`]) }, [
26523
26526
  d.value ? (b(), s(Ac, {
26524
26527
  key: 0,
@@ -26541,25 +26544,25 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26541
26544
  class: "markdown-body",
26542
26545
  innerHTML: w(dc)(e.message.content || "")
26543
26546
  }, null, 8, il)])) : c("", !0),
26544
- M.value ? (b(), s(nl, {
26547
+ A.value ? (b(), s(nl, {
26545
26548
  key: 1,
26546
26549
  resources: e.message.resources || [],
26547
26550
  baseHttp: e.baseHttp
26548
26551
  }, null, 8, ["resources", "baseHttp"])) : c("", !0),
26549
- P.value ? (b(), l("div", al, [
26550
- F.value ? (b(), l("div", ol, [u("div", {
26552
+ N.value ? (b(), l("div", al, [
26553
+ P.value ? (b(), l("div", ol, [u("div", {
26551
26554
  class: "markdown-body",
26552
- innerHTML: w(dc)(F.value)
26555
+ innerHTML: w(dc)(P.value)
26553
26556
  }, null, 8, sl)])) : c("", !0),
26554
- I.value ? (b(), l("div", cl, [n[0] ||= u("div", { class: "block-title" }, "实况分布图", -1), u("div", ll, [u("img", {
26555
- src: z(I.value),
26557
+ F.value ? (b(), l("div", cl, [n[0] ||= u("div", { class: "block-title" }, "实况分布图", -1), u("div", ll, [u("img", {
26558
+ src: R(F.value),
26556
26559
  alt: "实况分布图",
26557
26560
  loading: "lazy"
26558
26561
  }, null, 8, ul)])])) : c("", !0),
26559
- L.value.length > 0 ? (b(), l("div", dl, [n[1] ||= u("div", { class: "block-title" }, "数据列表", -1), u("div", fl, [u("table", null, [u("thead", null, [u("tr", null, [(b(!0), l(i, null, S(R.value, (e) => (b(), l("th", { key: e }, C(e), 1))), 128))])]), u("tbody", null, [(b(!0), l(i, null, S(L.value, (e, t) => (b(), l("tr", { key: t }, [(b(!0), l(i, null, S(R.value, (t) => (b(), l("td", { key: t }, C(e[t] ?? ""), 1))), 128))]))), 128))])])])])) : c("", !0)
26562
+ I.value.length > 0 ? (b(), l("div", dl, [n[1] ||= u("div", { class: "block-title" }, "数据列表", -1), u("div", fl, [u("table", null, [u("thead", null, [u("tr", null, [(b(!0), l(i, null, S(L.value, (e) => (b(), l("th", { key: e }, C(e), 1))), 128))])]), u("tbody", null, [(b(!0), l(i, null, S(I.value, (e, t) => (b(), l("tr", { key: t }, [(b(!0), l(i, null, S(L.value, (t) => (b(), l("td", { key: t }, C(e[t] ?? ""), 1))), 128))]))), 128))])])])])) : c("", !0)
26560
26563
  ])) : c("", !0),
26561
- N.value ? (b(), l("div", pl, [u("audio", {
26562
- src: z(e.message.audioUrl),
26564
+ M.value ? (b(), l("div", pl, [u("audio", {
26565
+ src: R(e.message.audioUrl),
26563
26566
  controls: "",
26564
26567
  preload: "none",
26565
26568
  class: "ai-audio-player"
@@ -26576,13 +26579,13 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26576
26579
  class: g(`is-${e.align || "left"}`)
26577
26580
  }, C(t[e.key]), 3))), 128))]))), 128))])])])])) : e.type === "echarts" ? (b(), l("div", Sl, [e.title ? (b(), l("div", Cl, C(e.title), 1)) : c("", !0), u("div", {
26578
26581
  ref_for: !0,
26579
- ref: (t) => ne(t, e.sort),
26582
+ ref: (t) => te(t, e.sort),
26580
26583
  class: "echarts-container"
26581
26584
  }, null, 512)])) : e.type === "image" ? (b(), l("div", wl, [e.title ? (b(), l("div", Tl, C(e.title), 1)) : c("", !0), u("div", {
26582
26585
  class: "image-card",
26583
- onClick: (t) => U(e)
26586
+ onClick: (t) => ne(e)
26584
26587
  }, [u("img", {
26585
- src: z(e.url),
26588
+ src: R(e.url),
26586
26589
  alt: e.caption,
26587
26590
  loading: "lazy"
26588
26591
  }, null, 8, Dl), e.caption ? (b(), l("div", Ol, C(e.caption), 1)) : c("", !0)], 8, El)])) : e.type === "list" ? (b(), l("div", kl, [e.title ? (b(), l("div", Al, C(e.title), 1)) : c("", !0), u("ul", null, [(b(!0), l(i, null, S(e.items, (e, t) => (b(), l("li", { key: t }, C(e), 1))), 128))])])) : e.type === "fileList" ? (b(), l("div", jl, [e.title ? (b(), l("div", Ml, C(e.title), 1)) : c("", !0), u("div", Nl, [(b(!0), l(i, null, S(e.files, (e, t) => (b(), l("div", {
@@ -26590,7 +26593,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26590
26593
  class: "file-list-item"
26591
26594
  }, [u("div", {
26592
26595
  class: "file-list-header",
26593
- onClick: (e) => re(t)
26596
+ onClick: (e) => W(t)
26594
26597
  }, [
26595
26598
  n[3] ||= u("div", { class: "file-list-icon" }, [u("svg", {
26596
26599
  viewBox: "0 0 24 24",
@@ -26601,14 +26604,14 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26601
26604
  u("div", Fl, C(e.name), 1),
26602
26605
  e.size ? (b(), l("div", Il, C(e.size), 1)) : c("", !0),
26603
26606
  (b(), l("svg", {
26604
- class: g(["file-list-arrow", { "is-open": G(t) }]),
26607
+ class: g(["file-list-arrow", { "is-open": re(t) }]),
26605
26608
  viewBox: "0 0 24 24",
26606
26609
  fill: "currentColor"
26607
26610
  }, [...n[2] ||= [u("path", { d: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z" }, null, -1)]], 2))
26608
26611
  ], 8, Pl), k(u("div", Ll, [e.description ? (b(), l("p", Rl, C(e.description), 1)) : c("", !0), u("button", {
26609
26612
  class: "file-list-download",
26610
- onClick: (t) => K(z(e.url), e.name)
26611
- }, "下载", 8, zl)], 512), [[E, G(t)]])]))), 128))])])) : e.type === "file" ? (b(), l("div", Bl, [e.title ? (b(), l("div", Vl, C(e.title), 1)) : c("", !0), u("div", Hl, [
26613
+ onClick: (t) => G(R(e.url), e.name)
26614
+ }, "下载", 8, zl)], 512), [[E, re(t)]])]))), 128))])])) : e.type === "file" ? (b(), l("div", Bl, [e.title ? (b(), l("div", Vl, C(e.title), 1)) : c("", !0), u("div", Hl, [
26612
26615
  n[5] ||= u("div", { class: "file-icon" }, [u("svg", {
26613
26616
  viewBox: "0 0 24 24",
26614
26617
  width: "20",
@@ -26619,7 +26622,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26619
26622
  u("button", {
26620
26623
  class: "file-download",
26621
26624
  title: "下载",
26622
- onClick: (t) => K(z(e.fileUrl), e.name)
26625
+ onClick: (t) => G(R(e.fileUrl), e.name)
26623
26626
  }, [...n[4] ||= [u("svg", {
26624
26627
  viewBox: "0 0 24 24",
26625
26628
  fill: "currentColor"
@@ -26627,26 +26630,22 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26627
26630
  ])])) : c("", !0)], 64))), 128))
26628
26631
  ], 64)) : c("", !0),
26629
26632
  p(a, { name: "fade" }, {
26630
- default: O(() => [B.value ? (b(), l("div", {
26631
- key: 0,
26632
- class: "image-preview-overlay",
26633
- onClick: A(W, ["self"])
26634
- }, [
26633
+ default: O(() => [z.value ? (b(), l("div", ql, [
26635
26634
  u("button", {
26636
26635
  class: "preview-close",
26637
- onClick: W
26636
+ onClick: U
26638
26637
  }, "×"),
26639
26638
  u("img", {
26640
- src: ee.value,
26641
- alt: B.value.caption
26642
- }, null, 8, ql),
26643
- B.value.caption ? (b(), l("div", Jl, C(B.value.caption), 1)) : c("", !0)
26639
+ src: B.value,
26640
+ alt: z.value.caption
26641
+ }, null, 8, Jl),
26642
+ z.value.caption ? (b(), l("div", Yl, C(z.value.caption), 1)) : c("", !0)
26644
26643
  ])) : c("", !0)]),
26645
26644
  _: 1
26646
26645
  })
26647
26646
  ], 2));
26648
26647
  }
26649
- }), Xl = { categories: /* @__PURE__ */ JSON.parse("{\"knowledge\":{\"label\":\"查知识\",\"responses\":[{\"keywords\":[\"台风\",\"大风\",\"预警\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询台风预警及防御知识。\"},{\"type\":\"text\",\"content\":\"2. 检索台风数据库:获取当前编号台风“卡努”的位置、强度、移向移速。\"},{\"type\":\"text\",\"content\":\"3. 查询预警规则:根据风力影响范围匹配台风黄色预警标准。\"},{\"type\":\"text\",\"content\":\"4. 整理防御提示:结合沿海、农业、城市内涝等场景输出建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 🌀 台风预警信息\\n\\n今年第 6 号台风 **“卡努”** 预计将于 48 小时内影响本市沿海区域。\\n\\n### 影响时段\\n| 阶段 | 时间 | 风力 | 降雨 |\\n|------|------|------|------|\\n| 外围影响 | 今晚~明天上午 | 东北风 6-7 级 | 阵雨 |\\n| 主体影响 | 明天下午~后天 | 偏东风 8-10 级 | 暴雨到大暴雨 |\\n| 减弱远离 | 大后天 | 东南风 5-6 级 | 小雨 |\\n\\n### 防御提示\\n1. 沿海景区、海上作业平台请于今天 18 时前撤离人员。\\n2. 加固户外广告牌、脚手架、农业大棚等易被大风吹动的搭建物。\\n3. 低洼地区居民请提前备好沙袋,注意防范城市内涝。\\n\\n> 市气象台将每 3 小时滚动发布台风路径及风雨预报。\"}]},{\"keywords\":[\"雷达\",\"云图\",\"卫星\",\"回波\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:解读雷达回波实况。\"},{\"type\":\"text\",\"content\":\"2. 读取雷达拼图:分析回波强度、走向、移动速度。\"},{\"type\":\"text\",\"content\":\"3. 反演对流参数:回波顶高、VIL、质心高度等。\"},{\"type\":\"text\",\"content\":\"4. 生成解读文本:给出短时临近预报建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 📡 雷达回波实况解读\\n\\n当前我市上游 150 km 范围内存在一条东北-西南向对流回波带,强度 35-50 dBZ,正以约 40 km/h 向东南方向移动。\\n\\n### 回波特征\\n- **回波顶高**:9-12 km,属于发展旺盛的对流单体。\\n- **垂直液态水含量**:最大 45 kg/m²,伴有短时强降水风险。\\n- **移动方向**:自西北向东南,预计 1.5 小时后影响市区。\\n\\n### 建议\\n1. 短时强降水可能引发道路积水,建议避开低洼路段。\\n2. 雷电活跃时段尽量减少户外活动。\\n3. 可通过实时雷达拼图持续关注回波移动。\"}]},{\"keywords\":[\"农业\",\"农事\",\"作物\",\"墒情\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:获取农业气象服务建议。\"},{\"type\":\"text\",\"content\":\"2. 调用土壤墒情数据:各区县土壤相对湿度。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"region\",\"title\":\"区域\",\"align\":\"left\"},{\"key\":\"rh\",\"title\":\"土壤相对湿度\",\"align\":\"center\"},{\"key\":\"evaluate\",\"title\":\"评价\",\"align\":\"center\"}],\"data\":[{\"region\":\"西海岸新区\",\"rh\":\"78%\",\"evaluate\":\"适宜\"},{\"region\":\"即墨区\",\"rh\":\"65%\",\"evaluate\":\"略偏旱\"},{\"region\":\"平度市\",\"rh\":\"85%\",\"evaluate\":\"偏湿\"}]},{\"type\":\"text\",\"content\":\"3. 结合未来 7 天天气预报,生成农事建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 🌾 农业气象服务建议\\n\\n### 当前农田墒情\\n| 区域 | 土壤相对湿度 | 评价 | 建议 |\\n|------|------------|------|------|\\n| 西海岸新区 | 78% | 适宜 | 可正常播种夏玉米 |\\n| 即墨区 | 65% | 略偏旱 | 灌溉 1 次,确保出苗 |\\n| 平度市 | 85% | 偏湿 | 注意清沟理墒,防渍害 |\\n\\n### 未来 7 天农事建议\\n1. **今明两天**有小雨,雨后趁墒开展夏玉米、大豆等作物播种。\\n2. **周三至周五**以多云为主,利于田间管理,可喷施除草剂。\\n3. 周末有阵雨,抓紧收获成熟瓜果蔬菜,避免田间腐烂。\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询指定位置当前及未来 24 小时气象概况。\"},{\"type\":\"text\",\"content\":\"2. 定位最近自动站:西海岸新区国家气象站。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationNumber\",\"title\":\"站号\",\"align\":\"center\"},{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"temperature\",\"title\":\"气温(°C)\",\"align\":\"right\"},{\"key\":\"relativeHumidity\",\"title\":\"相对湿度(%)\",\"align\":\"right\"},{\"key\":\"windDirectionTxt\",\"title\":\"风向\",\"align\":\"center\"},{\"key\":\"windSpeed\",\"title\":\"风速(m/s)\",\"align\":\"right\"}],\"data\":[{\"stationNumber\":\"54943\",\"stationName\":\"黄岛\",\"temperature\":\"26.3\",\"relativeHumidity\":\"78\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"3.2\"}]},{\"type\":\"text\",\"content\":\"3. 融合数值预报:生成通俗防御建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"根据你提供的位置信息,我查询了当前及未来 24 小时气象概况 👇\\n\\n## 🌤️ 青岛市西海岸新区 · 气象概况\\n\\n### 当前实况\\n| 要素 | 数值 |\\n|------|------|\\n| 气温 | **26.3°C** |\\n| 相对湿度 | **78%** |\\n| 风向风力 | 东南风 **3~4 级** |\\n| 能见度 | **12 km** |\\n| 气压 | 1008 hPa |\\n\\n### 防御建议\\n1. **今夜至凌晨有小雨**,沿海路段能见度较低,出行请注意交通安全。\\n2. 明早气温降至 **20°C 左右**,体感偏凉,建议携带薄外套。\\n3. 明天白天转为多云,最高气温回升至 **28°C**,适宜户外活动。\\n\\n> 数据来源:气象大数据平台\"}]}]},\"data\":{\"label\":\"查数据\",\"responses\":[{\"keywords\":[\"台风\",\"路径\",\"风力\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询台风路径及强度变化数据。\"},{\"type\":\"text\",\"content\":\"2. 调用台风预报接口:获取未来 72 小时路径点。\"},{\"type\":\"text\",\"content\":\"3. 绘制趋势图表:中心气压变化曲线。\"},{\"type\":\"text\",\"content\":\"4. 输出结构化表格与预报图。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌀 台风“卡努”未来 72 小时路径预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"time\",\"title\":\"时间\",\"align\":\"left\"},{\"key\":\"lon\",\"title\":\"经度\",\"align\":\"center\"},{\"key\":\"lat\",\"title\":\"纬度\",\"align\":\"center\"},{\"key\":\"level\",\"title\":\"强度等级\",\"align\":\"center\"},{\"key\":\"wind\",\"title\":\"近中心风力\",\"align\":\"center\"},{\"key\":\"dir\",\"title\":\"移向\",\"align\":\"center\"},{\"key\":\"speed\",\"title\":\"移速\",\"align\":\"right\"}],\"data\":[{\"time\":\"今天 20 时\",\"lon\":\"125.8°E\",\"lat\":\"28.4°N\",\"level\":\"强台风\",\"wind\":\"14 级\",\"dir\":\"西北\",\"speed\":\"12 km/h\"},{\"time\":\"明天 08 时\",\"lon\":\"124.9°E\",\"lat\":\"29.1°N\",\"level\":\"强台风\",\"wind\":\"15 级\",\"dir\":\"西北偏北\",\"speed\":\"10 km/h\"},{\"time\":\"明天 20 时\",\"lon\":\"123.7°E\",\"lat\":\"30.0°N\",\"level\":\"台风\",\"wind\":\"13 级\",\"dir\":\"北\",\"speed\":\"8 km/h\"},{\"time\":\"后天 08 时\",\"lon\":\"122.8°E\",\"lat\":\"31.2°N\",\"level\":\"强热带风暴\",\"wind\":\"11 级\",\"dir\":\"东北\",\"speed\":\"15 km/h\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"台风中心气压变化趋势\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":30,\"left\":50},\"xAxis\":{\"type\":\"category\",\"data\":[\"今天\",\"明天\",\"后天\",\"大后天\"]},\"yAxis\":{\"type\":\"value\",\"name\":\"hPa\",\"min\":900},\"series\":[{\"type\":\"line\",\"data\":[955,940,965,985],\"smooth\":true,\"areaStyle\":{\"opacity\":0.2}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/typhoon_track/400/220\",\"caption\":\"台风路径概率预报图\"}]},{\"keywords\":[\"降水\",\"雨量\",\"降雨\",\"暴雨\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询未来 24 小时累计降水量。\"},{\"type\":\"text\",\"content\":\"2. 调用格点预报数据:各区县逐 6 小时降水量。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"district\",\"title\":\"区县\",\"align\":\"left\"},{\"key\":\"h06\",\"title\":\"0-6h\",\"align\":\"right\"},{\"key\":\"h12\",\"title\":\"6-12h\",\"align\":\"right\"},{\"key\":\"h18\",\"title\":\"12-18h\",\"align\":\"right\"},{\"key\":\"h24\",\"title\":\"18-24h\",\"align\":\"right\"},{\"key\":\"total\",\"title\":\"过程累计\",\"align\":\"right\"}],\"data\":[{\"district\":\"市南区\",\"h06\":\"5 mm\",\"h12\":\"15 mm\",\"h18\":\"35 mm\",\"h24\":\"12 mm\",\"total\":\"67 mm\"},{\"district\":\"崂山区\",\"h06\":\"8 mm\",\"h12\":\"25 mm\",\"h18\":\"55 mm\",\"h24\":\"20 mm\",\"total\":\"108 mm\"},{\"district\":\"西海岸新区\",\"h06\":\"10 mm\",\"h12\":\"30 mm\",\"h18\":\"60 mm\",\"h24\":\"22 mm\",\"total\":\"122 mm\"}]},{\"type\":\"text\",\"content\":\"3. 生成柱状图:直观展示各区县过程累计降水量。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌧️ 未来 24 小时累计降水量预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"district\",\"title\":\"区县\",\"align\":\"left\"},{\"key\":\"h06\",\"title\":\"0-6h\",\"align\":\"right\"},{\"key\":\"h12\",\"title\":\"6-12h\",\"align\":\"right\"},{\"key\":\"h18\",\"title\":\"12-18h\",\"align\":\"right\"},{\"key\":\"h24\",\"title\":\"18-24h\",\"align\":\"right\"},{\"key\":\"total\",\"title\":\"过程累计\",\"align\":\"right\"}],\"data\":[{\"district\":\"市南区\",\"h06\":\"5 mm\",\"h12\":\"15 mm\",\"h18\":\"35 mm\",\"h24\":\"12 mm\",\"total\":\"67 mm\"},{\"district\":\"市北区\",\"h06\":\"3 mm\",\"h12\":\"12 mm\",\"h18\":\"28 mm\",\"h24\":\"10 mm\",\"total\":\"53 mm\"},{\"district\":\"李沧区\",\"h06\":\"4 mm\",\"h12\":\"18 mm\",\"h18\":\"42 mm\",\"h24\":\"15 mm\",\"total\":\"79 mm\"},{\"district\":\"崂山区\",\"h06\":\"8 mm\",\"h12\":\"25 mm\",\"h18\":\"55 mm\",\"h24\":\"20 mm\",\"total\":\"108 mm\"},{\"district\":\"城阳区\",\"h06\":\"6 mm\",\"h12\":\"20 mm\",\"h18\":\"38 mm\",\"h24\":\"14 mm\",\"total\":\"78 mm\"},{\"district\":\"西海岸新区\",\"h06\":\"10 mm\",\"h12\":\"30 mm\",\"h18\":\"60 mm\",\"h24\":\"22 mm\",\"total\":\"122 mm\"},{\"district\":\"即墨区\",\"h06\":\"7 mm\",\"h12\":\"22 mm\",\"h18\":\"45 mm\",\"h24\":\"16 mm\",\"total\":\"90 mm\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"各区县过程累计降水量\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":50,\"left\":60},\"xAxis\":{\"type\":\"category\",\"data\":[\"市南\",\"市北\",\"李沧\",\"崂山\",\"城阳\",\"西海岸\",\"即墨\"],\"axisLabel\":{\"rotate\":30}},\"yAxis\":{\"type\":\"value\",\"name\":\"mm\"},\"series\":[{\"type\":\"bar\",\"data\":[67,53,79,108,78,122,90],\"itemStyle\":{\"color\":\"#22d3ee\"}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/rain_map/400/220\",\"caption\":\"24 小时降水预报图\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询未来 7 天天气预报。\"},{\"type\":\"text\",\"content\":\"2. 调用城市预报数据:天气现象、气温、风向风力、降水概率。\"},{\"type\":\"text\",\"content\":\"3. 绘制气温趋势图:最高温与最低温双曲线。\"},{\"type\":\"text\",\"content\":\"4. 输出表格与趋势图。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌦️ 青岛市未来 7 天天气预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"date\",\"title\":\"日期\",\"align\":\"left\"},{\"key\":\"weather\",\"title\":\"天气现象\",\"align\":\"left\"},{\"key\":\"max\",\"title\":\"最高温\",\"align\":\"right\"},{\"key\":\"min\",\"title\":\"最低温\",\"align\":\"right\"},{\"key\":\"wind\",\"title\":\"风向风力\",\"align\":\"left\"},{\"key\":\"rain\",\"title\":\"降水概率\",\"align\":\"right\"}],\"data\":[{\"date\":\"今天\",\"weather\":\"多云转小雨\",\"max\":\"28°C\",\"min\":\"21°C\",\"wind\":\"东南风 3-4 级\",\"rain\":\"60%\"},{\"date\":\"明天\",\"weather\":\"小雨转多云\",\"max\":\"26°C\",\"min\":\"19°C\",\"wind\":\"东北风 3 级\",\"rain\":\"40%\"},{\"date\":\"后天\",\"weather\":\"多云\",\"max\":\"29°C\",\"min\":\"20°C\",\"wind\":\"南风 2-3 级\",\"rain\":\"10%\"},{\"date\":\"周四\",\"weather\":\"晴\",\"max\":\"31°C\",\"min\":\"22°C\",\"wind\":\"南风 2 级\",\"rain\":\"0%\"},{\"date\":\"周五\",\"weather\":\"晴转多云\",\"max\":\"30°C\",\"min\":\"23°C\",\"wind\":\"东南风 3 级\",\"rain\":\"10%\"},{\"date\":\"周六\",\"weather\":\"多云转阴\",\"max\":\"28°C\",\"min\":\"22°C\",\"wind\":\"东风 3 级\",\"rain\":\"30%\"},{\"date\":\"周日\",\"weather\":\"阵雨\",\"max\":\"27°C\",\"min\":\"21°C\",\"wind\":\"东北风 3-4 级\",\"rain\":\"70%\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"未来 7 天气温趋势\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":30,\"left\":40},\"legend\":{\"data\":[\"最高温\",\"最低温\"]},\"xAxis\":{\"type\":\"category\",\"data\":[\"今天\",\"明天\",\"后天\",\"周四\",\"周五\",\"周六\",\"周日\"]},\"yAxis\":{\"type\":\"value\",\"name\":\"°C\"},\"series\":[{\"name\":\"最高温\",\"type\":\"line\",\"data\":[28,26,29,31,30,28,27],\"smooth\":true,\"itemStyle\":{\"color\":\"#f59e0b\"}},{\"name\":\"最低温\",\"type\":\"line\",\"data\":[21,19,20,22,23,22,21],\"smooth\":true,\"itemStyle\":{\"color\":\"#22d3ee\"}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/weather_trend/400/220\",\"caption\":\"未来 7 天气温趋势图\"}]}]},\"material\":{\"label\":\"查材料\",\"responses\":[{\"keywords\":[\"海洋\",\"台风\",\"灾害\",\"防御\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:检索台风灾害防御相关材料。\"},{\"type\":\"text\",\"content\":\"2. 检索材料库:按关键词“台风”“灾害”“防御”匹配文档。\"},{\"type\":\"text\",\"content\":\"3. 筛选格式:PDF、XLSX、DOCX,保留权威来源。\"},{\"type\":\"text\",\"content\":\"4. 输出材料列表及摘要。\"}]},{\"sort\":2,\"type\":\"text\",\"content\":\"已检索到与台风灾害防御相关的材料,共 3 份:\"},{\"sort\":3,\"type\":\"fileList\",\"files\":[{\"name\":\"青岛市台风灾害防御应急预案.pdf\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"4.2 MB\",\"ext\":\"pdf\",\"description\":\"本预案明确了台风预警分级、应急响应启动条件、各部门职责分工及人员转移安置要求。\"},{\"name\":\"台风风险隐患清单.xlsx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"1.8 MB\",\"ext\":\"xlsx\",\"description\":\"全市低洼易涝点、地质灾害隐患点、海上作业平台等风险隐患台账。\"},{\"name\":\"人员转移安置方案.docx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"2.5 MB\",\"ext\":\"docx\",\"description\":\"受台风影响区域人员转移路线图、安置点分布及物资保障方案。\"}]}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:检索海洋气象预报相关材料。\"},{\"type\":\"text\",\"content\":\"2. 检索材料库:按关键词“海洋”“预报”“精细化”匹配。\"},{\"type\":\"text\",\"content\":\"3. 筛选格式:DOC、PDF、PPTX,按时间倒序排列。\"},{\"type\":\"text\",\"content\":\"4. 输出材料列表及摘要。\"}]},{\"sort\":2,\"type\":\"text\",\"content\":\"已检索到海洋气象预报相关材料,共 3 份:\"},{\"sort\":3,\"type\":\"fileList\",\"files\":[{\"name\":\"精细化海洋预报(20260531).doc\",\"url\":\"http://58.59.29.51:11014/productFilePath/seaService/2026/5/31/%E7%B2%BE%E7%BB%86%E5%8C%96%E6%B5%B7%E6%B4%8B%E9%A2%84%E6%8A%A5%EF%BC%8820260531%EF%BC%89.doc\",\"size\":\"5.8 MB\",\"ext\":\"doc\",\"description\":\"海洋气象预报\"},{\"name\":\"气象灾害防御工作手册.pdf\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"3.6 MB\",\"ext\":\"pdf\",\"description\":\"面向基层网格员的灾害防御操作指南,包含预警信息接收、传播和应急处置流程。\"},{\"name\":\"防灾减灾宣传材料.pptx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"8.2 MB\",\"ext\":\"pptx\",\"description\":\"面向社区、学校的防灾减灾科普宣传课件。\"}]}]}]},\"smartMake\":{\"label\":\"智能制作\",\"responses\":[{\"keywords\":[\"预警\",\"通知\",\"发文\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要生成一份气象灾害预警通知公文。\"},{\"type\":\"text\",\"content\":\"2. 匹配模板:选择《气象灾害预警通知》公文模板。\"},{\"type\":\"text\",\"content\":\"3. 填充要素:当前预警类型为台风黄色预警,影响时段为 24-48 小时,重点关注沿海区域。\"},{\"type\":\"text\",\"content\":\"4. 生成落款:青岛市气象局,日期为今日。\"},{\"type\":\"text\",\"content\":\"5. 输出格式:Word 文档,便于后续编辑和正式发文。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"气象灾害预警通知.docx\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"docx\"}]},{\"keywords\":[\"报告\",\"总结\",\"分析\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要生成气象服务总结报告。\"},{\"type\":\"text\",\"content\":\"2. 梳理素材:调用近期天气预报、服务产品、用户反馈等数据。\"},{\"type\":\"text\",\"content\":\"3. 构建框架:包含服务概况、重点过程、服务效益、存在问题及下一步计划。\"},{\"type\":\"text\",\"content\":\"4. 图表插入:自动插入降水预报准确率、服务覆盖人次等统计图表。\"},{\"type\":\"text\",\"content\":\"5. 输出格式:PDF 文档,便于归档和报送。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"气象服务总结报告.pdf\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"pdf\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要基于自动站数据智能制作气象服务材料。\"},{\"type\":\"text\",\"content\":\"2. 数据获取:调用自动站接口,获取黄岛区共 17 个站点最新实况。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationNumber\",\"title\":\"站号\",\"align\":\"center\"},{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"observationTime\",\"title\":\"观测时间\",\"align\":\"center\"},{\"key\":\"temperature\",\"title\":\"气温(°C)\",\"align\":\"right\"},{\"key\":\"relativeHumidity\",\"title\":\"相对湿度(%)\",\"align\":\"right\"},{\"key\":\"windDirectionTxt\",\"title\":\"风向\",\"align\":\"center\"},{\"key\":\"windSpeed\",\"title\":\"风速(m/s)\",\"align\":\"right\"},{\"key\":\"weatherinfo\",\"title\":\"天气\",\"align\":\"center\"}],\"data\":[{\"stationNumber\":\"54943\",\"stationName\":\"黄岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.3\",\"relativeHumidity\":\"65\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.8\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0002\",\"stationName\":\"黄岛金沙滩\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.7\",\"relativeHumidity\":\"60\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"2.5\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0008\",\"stationName\":\"黄岛琅琊\",\"observationTime\":\"8/7 10\",\"temperature\":\"32.4\",\"relativeHumidity\":\"61\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.7\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0063\",\"stationName\":\"黄岛大涧山\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.6\",\"relativeHumidity\":\"58\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"2.4\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0076\",\"stationName\":\"黄岛滨海杜鹃花区气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.9\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.3\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0167\",\"stationName\":\"黄岛隐珠气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.6\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"西北风\",\"windSpeed\":\"3.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0189\",\"stationName\":\"黄岛竹岔岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.8\",\"relativeHumidity\":\"74\",\"windDirectionTxt\":\"缺测\",\"windSpeed\":\"0.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0192\",\"stationName\":\"黄岛灵山岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"29.5\",\"relativeHumidity\":\"62\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"0.3\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0197\",\"stationName\":\"黄岛台子沟\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.1\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"2.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0199\",\"stationName\":\"黄岛轮渡\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.4\",\"relativeHumidity\":\"60\",\"windDirectionTxt\":\"西北风\",\"windSpeed\":\"0.9\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0200\",\"stationName\":\"黄岛董家口港\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.4\",\"relativeHumidity\":\"62\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"2.7\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0206\",\"stationName\":\"黄岛实验中学气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.3\",\"relativeHumidity\":\"54\",\"windDirectionTxt\":\"西南风\",\"windSpeed\":\"2.6\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0212\",\"stationName\":\"黄岛前湾港码头\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.0\",\"relativeHumidity\":\"54\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"3.4\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0231\",\"stationName\":\"黄岛泊里气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.0\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"缺测\",\"windSpeed\":\"缺测\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0263\",\"stationName\":\"黄岛薛家岛气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.8\",\"relativeHumidity\":\"75\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"3.2\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0267\",\"stationName\":\"黄岛区小珠山气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.4\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"3.1\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0501\",\"stationName\":\"黄岛滨海气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.1\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"2.5\",\"weatherinfo\":\"晴天\"}]},{\"type\":\"text\",\"content\":\"3. 降水分析:获取黄岛区近 3 小时累计降水量。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"rainfall1h\",\"title\":\"1h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall3h\",\"title\":\"3h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall6h\",\"title\":\"6h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall12h\",\"title\":\"12h降水(mm)\",\"align\":\"right\"}],\"data\":[{\"stationName\":\"黄岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.2\",\"rainfall12h\":\"1.5\"},{\"stationName\":\"黄岛金沙滩\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.0\",\"rainfall12h\":\"0.8\"},{\"stationName\":\"黄岛琅琊\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.1\",\"rainfall6h\":\"0.5\",\"rainfall12h\":\"2.1\"},{\"stationName\":\"黄岛大涧山\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.3\",\"rainfall12h\":\"1.2\"},{\"stationName\":\"黄岛滨海杜鹃花区气象观测站\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.1\",\"rainfall12h\":\"0.9\"},{\"stationName\":\"黄岛隐珠气象观测站\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.4\",\"rainfall12h\":\"1.8\"},{\"stationName\":\"黄岛竹岔岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.2\",\"rainfall6h\":\"0.6\",\"rainfall12h\":\"2.4\"},{\"stationName\":\"黄岛灵山岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.2\",\"rainfall12h\":\"1.0\"}]},{\"type\":\"text\",\"content\":\"4. 数据解析:原始返回为 JSON 格式,已提取关键字段。\"},{\"type\":\"markdown\",\"content\":\"JSON 结构示例:\\n```json\\n{\\n \\\"msg\\\": \\\"success\\\",\\n \\\"code\\\": 0,\\n \\\"dataType\\\": 14,\\n \\\"ds\\\": [\\n {\\n \\\"stationNumber\\\": \\\"54943\\\",\\n \\\"stationName\\\": \\\"黄岛\\\",\\n \\\"observationTime\\\": \\\"8/7 10\\\",\\n \\\"temperature\\\": \\\"33.3\\\",\\n \\\"relativeHumidity\\\": \\\"65\\\",\\n \\\"windDirectionTxt\\\": \\\"东风\\\",\\n \\\"windSpeed\\\": \\\"1.8\\\",\\n \\\"weatherinfo\\\": \\\"晴天\\\"\\n }\\n ]\\n}\\n```\"},{\"type\":\"text\",\"content\":\"5. 生成服务材料:基于以上数据生成 Word 文档。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"智能制作成果.docx\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"docx\"}]}]}}") }, Zl = class {
26648
+ }), Zl = { categories: /* @__PURE__ */ JSON.parse("{\"knowledge\":{\"label\":\"查知识\",\"responses\":[{\"keywords\":[\"台风\",\"大风\",\"预警\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询台风预警及防御知识。\"},{\"type\":\"text\",\"content\":\"2. 检索台风数据库:获取当前编号台风“卡努”的位置、强度、移向移速。\"},{\"type\":\"text\",\"content\":\"3. 查询预警规则:根据风力影响范围匹配台风黄色预警标准。\"},{\"type\":\"text\",\"content\":\"4. 整理防御提示:结合沿海、农业、城市内涝等场景输出建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 🌀 台风预警信息\\n\\n今年第 6 号台风 **“卡努”** 预计将于 48 小时内影响本市沿海区域。\\n\\n### 影响时段\\n| 阶段 | 时间 | 风力 | 降雨 |\\n|------|------|------|------|\\n| 外围影响 | 今晚~明天上午 | 东北风 6-7 级 | 阵雨 |\\n| 主体影响 | 明天下午~后天 | 偏东风 8-10 级 | 暴雨到大暴雨 |\\n| 减弱远离 | 大后天 | 东南风 5-6 级 | 小雨 |\\n\\n### 防御提示\\n1. 沿海景区、海上作业平台请于今天 18 时前撤离人员。\\n2. 加固户外广告牌、脚手架、农业大棚等易被大风吹动的搭建物。\\n3. 低洼地区居民请提前备好沙袋,注意防范城市内涝。\\n\\n> 市气象台将每 3 小时滚动发布台风路径及风雨预报。\"}]},{\"keywords\":[\"雷达\",\"云图\",\"卫星\",\"回波\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:解读雷达回波实况。\"},{\"type\":\"text\",\"content\":\"2. 读取雷达拼图:分析回波强度、走向、移动速度。\"},{\"type\":\"text\",\"content\":\"3. 反演对流参数:回波顶高、VIL、质心高度等。\"},{\"type\":\"text\",\"content\":\"4. 生成解读文本:给出短时临近预报建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 📡 雷达回波实况解读\\n\\n当前我市上游 150 km 范围内存在一条东北-西南向对流回波带,强度 35-50 dBZ,正以约 40 km/h 向东南方向移动。\\n\\n### 回波特征\\n- **回波顶高**:9-12 km,属于发展旺盛的对流单体。\\n- **垂直液态水含量**:最大 45 kg/m²,伴有短时强降水风险。\\n- **移动方向**:自西北向东南,预计 1.5 小时后影响市区。\\n\\n### 建议\\n1. 短时强降水可能引发道路积水,建议避开低洼路段。\\n2. 雷电活跃时段尽量减少户外活动。\\n3. 可通过实时雷达拼图持续关注回波移动。\"}]},{\"keywords\":[\"农业\",\"农事\",\"作物\",\"墒情\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:获取农业气象服务建议。\"},{\"type\":\"text\",\"content\":\"2. 调用土壤墒情数据:各区县土壤相对湿度。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"region\",\"title\":\"区域\",\"align\":\"left\"},{\"key\":\"rh\",\"title\":\"土壤相对湿度\",\"align\":\"center\"},{\"key\":\"evaluate\",\"title\":\"评价\",\"align\":\"center\"}],\"data\":[{\"region\":\"西海岸新区\",\"rh\":\"78%\",\"evaluate\":\"适宜\"},{\"region\":\"即墨区\",\"rh\":\"65%\",\"evaluate\":\"略偏旱\"},{\"region\":\"平度市\",\"rh\":\"85%\",\"evaluate\":\"偏湿\"}]},{\"type\":\"text\",\"content\":\"3. 结合未来 7 天天气预报,生成农事建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"## 🌾 农业气象服务建议\\n\\n### 当前农田墒情\\n| 区域 | 土壤相对湿度 | 评价 | 建议 |\\n|------|------------|------|------|\\n| 西海岸新区 | 78% | 适宜 | 可正常播种夏玉米 |\\n| 即墨区 | 65% | 略偏旱 | 灌溉 1 次,确保出苗 |\\n| 平度市 | 85% | 偏湿 | 注意清沟理墒,防渍害 |\\n\\n### 未来 7 天农事建议\\n1. **今明两天**有小雨,雨后趁墒开展夏玉米、大豆等作物播种。\\n2. **周三至周五**以多云为主,利于田间管理,可喷施除草剂。\\n3. 周末有阵雨,抓紧收获成熟瓜果蔬菜,避免田间腐烂。\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询指定位置当前及未来 24 小时气象概况。\"},{\"type\":\"text\",\"content\":\"2. 定位最近自动站:西海岸新区国家气象站。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationNumber\",\"title\":\"站号\",\"align\":\"center\"},{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"temperature\",\"title\":\"气温(°C)\",\"align\":\"right\"},{\"key\":\"relativeHumidity\",\"title\":\"相对湿度(%)\",\"align\":\"right\"},{\"key\":\"windDirectionTxt\",\"title\":\"风向\",\"align\":\"center\"},{\"key\":\"windSpeed\",\"title\":\"风速(m/s)\",\"align\":\"right\"}],\"data\":[{\"stationNumber\":\"54943\",\"stationName\":\"黄岛\",\"temperature\":\"26.3\",\"relativeHumidity\":\"78\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"3.2\"}]},{\"type\":\"text\",\"content\":\"3. 融合数值预报:生成通俗防御建议。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"根据你提供的位置信息,我查询了当前及未来 24 小时气象概况 👇\\n\\n## 🌤️ 青岛市西海岸新区 · 气象概况\\n\\n### 当前实况\\n| 要素 | 数值 |\\n|------|------|\\n| 气温 | **26.3°C** |\\n| 相对湿度 | **78%** |\\n| 风向风力 | 东南风 **3~4 级** |\\n| 能见度 | **12 km** |\\n| 气压 | 1008 hPa |\\n\\n### 防御建议\\n1. **今夜至凌晨有小雨**,沿海路段能见度较低,出行请注意交通安全。\\n2. 明早气温降至 **20°C 左右**,体感偏凉,建议携带薄外套。\\n3. 明天白天转为多云,最高气温回升至 **28°C**,适宜户外活动。\\n\\n> 数据来源:气象大数据平台\"}]}]},\"data\":{\"label\":\"查数据\",\"responses\":[{\"keywords\":[\"台风\",\"路径\",\"风力\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询台风路径及强度变化数据。\"},{\"type\":\"text\",\"content\":\"2. 调用台风预报接口:获取未来 72 小时路径点。\"},{\"type\":\"text\",\"content\":\"3. 绘制趋势图表:中心气压变化曲线。\"},{\"type\":\"text\",\"content\":\"4. 输出结构化表格与预报图。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌀 台风“卡努”未来 72 小时路径预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"time\",\"title\":\"时间\",\"align\":\"left\"},{\"key\":\"lon\",\"title\":\"经度\",\"align\":\"center\"},{\"key\":\"lat\",\"title\":\"纬度\",\"align\":\"center\"},{\"key\":\"level\",\"title\":\"强度等级\",\"align\":\"center\"},{\"key\":\"wind\",\"title\":\"近中心风力\",\"align\":\"center\"},{\"key\":\"dir\",\"title\":\"移向\",\"align\":\"center\"},{\"key\":\"speed\",\"title\":\"移速\",\"align\":\"right\"}],\"data\":[{\"time\":\"今天 20 时\",\"lon\":\"125.8°E\",\"lat\":\"28.4°N\",\"level\":\"强台风\",\"wind\":\"14 级\",\"dir\":\"西北\",\"speed\":\"12 km/h\"},{\"time\":\"明天 08 时\",\"lon\":\"124.9°E\",\"lat\":\"29.1°N\",\"level\":\"强台风\",\"wind\":\"15 级\",\"dir\":\"西北偏北\",\"speed\":\"10 km/h\"},{\"time\":\"明天 20 时\",\"lon\":\"123.7°E\",\"lat\":\"30.0°N\",\"level\":\"台风\",\"wind\":\"13 级\",\"dir\":\"北\",\"speed\":\"8 km/h\"},{\"time\":\"后天 08 时\",\"lon\":\"122.8°E\",\"lat\":\"31.2°N\",\"level\":\"强热带风暴\",\"wind\":\"11 级\",\"dir\":\"东北\",\"speed\":\"15 km/h\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"台风中心气压变化趋势\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":30,\"left\":50},\"xAxis\":{\"type\":\"category\",\"data\":[\"今天\",\"明天\",\"后天\",\"大后天\"]},\"yAxis\":{\"type\":\"value\",\"name\":\"hPa\",\"min\":900},\"series\":[{\"type\":\"line\",\"data\":[955,940,965,985],\"smooth\":true,\"areaStyle\":{\"opacity\":0.2}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/typhoon_track/400/220\",\"caption\":\"台风路径概率预报图\"}]},{\"keywords\":[\"降水\",\"雨量\",\"降雨\",\"暴雨\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询未来 24 小时累计降水量。\"},{\"type\":\"text\",\"content\":\"2. 调用格点预报数据:各区县逐 6 小时降水量。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"district\",\"title\":\"区县\",\"align\":\"left\"},{\"key\":\"h06\",\"title\":\"0-6h\",\"align\":\"right\"},{\"key\":\"h12\",\"title\":\"6-12h\",\"align\":\"right\"},{\"key\":\"h18\",\"title\":\"12-18h\",\"align\":\"right\"},{\"key\":\"h24\",\"title\":\"18-24h\",\"align\":\"right\"},{\"key\":\"total\",\"title\":\"过程累计\",\"align\":\"right\"}],\"data\":[{\"district\":\"市南区\",\"h06\":\"5 mm\",\"h12\":\"15 mm\",\"h18\":\"35 mm\",\"h24\":\"12 mm\",\"total\":\"67 mm\"},{\"district\":\"崂山区\",\"h06\":\"8 mm\",\"h12\":\"25 mm\",\"h18\":\"55 mm\",\"h24\":\"20 mm\",\"total\":\"108 mm\"},{\"district\":\"西海岸新区\",\"h06\":\"10 mm\",\"h12\":\"30 mm\",\"h18\":\"60 mm\",\"h24\":\"22 mm\",\"total\":\"122 mm\"}]},{\"type\":\"text\",\"content\":\"3. 生成柱状图:直观展示各区县过程累计降水量。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌧️ 未来 24 小时累计降水量预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"district\",\"title\":\"区县\",\"align\":\"left\"},{\"key\":\"h06\",\"title\":\"0-6h\",\"align\":\"right\"},{\"key\":\"h12\",\"title\":\"6-12h\",\"align\":\"right\"},{\"key\":\"h18\",\"title\":\"12-18h\",\"align\":\"right\"},{\"key\":\"h24\",\"title\":\"18-24h\",\"align\":\"right\"},{\"key\":\"total\",\"title\":\"过程累计\",\"align\":\"right\"}],\"data\":[{\"district\":\"市南区\",\"h06\":\"5 mm\",\"h12\":\"15 mm\",\"h18\":\"35 mm\",\"h24\":\"12 mm\",\"total\":\"67 mm\"},{\"district\":\"市北区\",\"h06\":\"3 mm\",\"h12\":\"12 mm\",\"h18\":\"28 mm\",\"h24\":\"10 mm\",\"total\":\"53 mm\"},{\"district\":\"李沧区\",\"h06\":\"4 mm\",\"h12\":\"18 mm\",\"h18\":\"42 mm\",\"h24\":\"15 mm\",\"total\":\"79 mm\"},{\"district\":\"崂山区\",\"h06\":\"8 mm\",\"h12\":\"25 mm\",\"h18\":\"55 mm\",\"h24\":\"20 mm\",\"total\":\"108 mm\"},{\"district\":\"城阳区\",\"h06\":\"6 mm\",\"h12\":\"20 mm\",\"h18\":\"38 mm\",\"h24\":\"14 mm\",\"total\":\"78 mm\"},{\"district\":\"西海岸新区\",\"h06\":\"10 mm\",\"h12\":\"30 mm\",\"h18\":\"60 mm\",\"h24\":\"22 mm\",\"total\":\"122 mm\"},{\"district\":\"即墨区\",\"h06\":\"7 mm\",\"h12\":\"22 mm\",\"h18\":\"45 mm\",\"h24\":\"16 mm\",\"total\":\"90 mm\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"各区县过程累计降水量\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":50,\"left\":60},\"xAxis\":{\"type\":\"category\",\"data\":[\"市南\",\"市北\",\"李沧\",\"崂山\",\"城阳\",\"西海岸\",\"即墨\"],\"axisLabel\":{\"rotate\":30}},\"yAxis\":{\"type\":\"value\",\"name\":\"mm\"},\"series\":[{\"type\":\"bar\",\"data\":[67,53,79,108,78,122,90],\"itemStyle\":{\"color\":\"#22d3ee\"}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/rain_map/400/220\",\"caption\":\"24 小时降水预报图\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:查询未来 7 天天气预报。\"},{\"type\":\"text\",\"content\":\"2. 调用城市预报数据:天气现象、气温、风向风力、降水概率。\"},{\"type\":\"text\",\"content\":\"3. 绘制气温趋势图:最高温与最低温双曲线。\"},{\"type\":\"text\",\"content\":\"4. 输出表格与趋势图。\"}]},{\"sort\":2,\"type\":\"markdown\",\"content\":\"#### 🌦️ 青岛市未来 7 天天气预报\"},{\"sort\":3,\"type\":\"table\",\"columns\":[{\"key\":\"date\",\"title\":\"日期\",\"align\":\"left\"},{\"key\":\"weather\",\"title\":\"天气现象\",\"align\":\"left\"},{\"key\":\"max\",\"title\":\"最高温\",\"align\":\"right\"},{\"key\":\"min\",\"title\":\"最低温\",\"align\":\"right\"},{\"key\":\"wind\",\"title\":\"风向风力\",\"align\":\"left\"},{\"key\":\"rain\",\"title\":\"降水概率\",\"align\":\"right\"}],\"data\":[{\"date\":\"今天\",\"weather\":\"多云转小雨\",\"max\":\"28°C\",\"min\":\"21°C\",\"wind\":\"东南风 3-4 级\",\"rain\":\"60%\"},{\"date\":\"明天\",\"weather\":\"小雨转多云\",\"max\":\"26°C\",\"min\":\"19°C\",\"wind\":\"东北风 3 级\",\"rain\":\"40%\"},{\"date\":\"后天\",\"weather\":\"多云\",\"max\":\"29°C\",\"min\":\"20°C\",\"wind\":\"南风 2-3 级\",\"rain\":\"10%\"},{\"date\":\"周四\",\"weather\":\"晴\",\"max\":\"31°C\",\"min\":\"22°C\",\"wind\":\"南风 2 级\",\"rain\":\"0%\"},{\"date\":\"周五\",\"weather\":\"晴转多云\",\"max\":\"30°C\",\"min\":\"23°C\",\"wind\":\"东南风 3 级\",\"rain\":\"10%\"},{\"date\":\"周六\",\"weather\":\"多云转阴\",\"max\":\"28°C\",\"min\":\"22°C\",\"wind\":\"东风 3 级\",\"rain\":\"30%\"},{\"date\":\"周日\",\"weather\":\"阵雨\",\"max\":\"27°C\",\"min\":\"21°C\",\"wind\":\"东北风 3-4 级\",\"rain\":\"70%\"}]},{\"sort\":4,\"type\":\"echarts\",\"title\":\"未来 7 天气温趋势\",\"option\":{\"grid\":{\"top\":40,\"right\":20,\"bottom\":30,\"left\":40},\"legend\":{\"data\":[\"最高温\",\"最低温\"]},\"xAxis\":{\"type\":\"category\",\"data\":[\"今天\",\"明天\",\"后天\",\"周四\",\"周五\",\"周六\",\"周日\"]},\"yAxis\":{\"type\":\"value\",\"name\":\"°C\"},\"series\":[{\"name\":\"最高温\",\"type\":\"line\",\"data\":[28,26,29,31,30,28,27],\"smooth\":true,\"itemStyle\":{\"color\":\"#f59e0b\"}},{\"name\":\"最低温\",\"type\":\"line\",\"data\":[21,19,20,22,23,22,21],\"smooth\":true,\"itemStyle\":{\"color\":\"#22d3ee\"}}]}},{\"sort\":5,\"type\":\"image\",\"url\":\"https://picsum.photos/seed/weather_trend/400/220\",\"caption\":\"未来 7 天气温趋势图\"}]}]},\"material\":{\"label\":\"查材料\",\"responses\":[{\"keywords\":[\"海洋\",\"台风\",\"灾害\",\"防御\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:检索台风灾害防御相关材料。\"},{\"type\":\"text\",\"content\":\"2. 检索材料库:按关键词“台风”“灾害”“防御”匹配文档。\"},{\"type\":\"text\",\"content\":\"3. 筛选格式:PDF、XLSX、DOCX,保留权威来源。\"},{\"type\":\"text\",\"content\":\"4. 输出材料列表及摘要。\"}]},{\"sort\":2,\"type\":\"text\",\"content\":\"已检索到与台风灾害防御相关的材料,共 3 份:\"},{\"sort\":3,\"type\":\"fileList\",\"files\":[{\"name\":\"青岛市台风灾害防御应急预案.pdf\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"4.2 MB\",\"ext\":\"pdf\",\"description\":\"本预案明确了台风预警分级、应急响应启动条件、各部门职责分工及人员转移安置要求。\"},{\"name\":\"台风风险隐患清单.xlsx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"1.8 MB\",\"ext\":\"xlsx\",\"description\":\"全市低洼易涝点、地质灾害隐患点、海上作业平台等风险隐患台账。\"},{\"name\":\"人员转移安置方案.docx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"2.5 MB\",\"ext\":\"docx\",\"description\":\"受台风影响区域人员转移路线图、安置点分布及物资保障方案。\"}]}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:检索海洋气象预报相关材料。\"},{\"type\":\"text\",\"content\":\"2. 检索材料库:按关键词“海洋”“预报”“精细化”匹配。\"},{\"type\":\"text\",\"content\":\"3. 筛选格式:DOC、PDF、PPTX,按时间倒序排列。\"},{\"type\":\"text\",\"content\":\"4. 输出材料列表及摘要。\"}]},{\"sort\":2,\"type\":\"text\",\"content\":\"已检索到海洋气象预报相关材料,共 3 份:\"},{\"sort\":3,\"type\":\"fileList\",\"files\":[{\"name\":\"精细化海洋预报(20260531).doc\",\"url\":\"http://58.59.29.51:11014/productFilePath/seaService/2026/5/31/%E7%B2%BE%E7%BB%86%E5%8C%96%E6%B5%B7%E6%B4%8B%E9%A2%84%E6%8A%A5%EF%BC%8820260531%EF%BC%89.doc\",\"size\":\"5.8 MB\",\"ext\":\"doc\",\"description\":\"海洋气象预报\"},{\"name\":\"气象灾害防御工作手册.pdf\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"3.6 MB\",\"ext\":\"pdf\",\"description\":\"面向基层网格员的灾害防御操作指南,包含预警信息接收、传播和应急处置流程。\"},{\"name\":\"防灾减灾宣传材料.pptx\",\"url\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"size\":\"8.2 MB\",\"ext\":\"pptx\",\"description\":\"面向社区、学校的防灾减灾科普宣传课件。\"}]}]}]},\"smartMake\":{\"label\":\"智能制作\",\"responses\":[{\"keywords\":[\"预警\",\"通知\",\"发文\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要生成一份气象灾害预警通知公文。\"},{\"type\":\"text\",\"content\":\"2. 匹配模板:选择《气象灾害预警通知》公文模板。\"},{\"type\":\"text\",\"content\":\"3. 填充要素:当前预警类型为台风黄色预警,影响时段为 24-48 小时,重点关注沿海区域。\"},{\"type\":\"text\",\"content\":\"4. 生成落款:青岛市气象局,日期为今日。\"},{\"type\":\"text\",\"content\":\"5. 输出格式:Word 文档,便于后续编辑和正式发文。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"气象灾害预警通知.docx\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"docx\"}]},{\"keywords\":[\"报告\",\"总结\",\"分析\"],\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要生成气象服务总结报告。\"},{\"type\":\"text\",\"content\":\"2. 梳理素材:调用近期天气预报、服务产品、用户反馈等数据。\"},{\"type\":\"text\",\"content\":\"3. 构建框架:包含服务概况、重点过程、服务效益、存在问题及下一步计划。\"},{\"type\":\"text\",\"content\":\"4. 图表插入:自动插入降水预报准确率、服务覆盖人次等统计图表。\"},{\"type\":\"text\",\"content\":\"5. 输出格式:PDF 文档,便于归档和报送。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"气象服务总结报告.pdf\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"pdf\"}]},{\"default\":true,\"blocks\":[{\"sort\":1,\"type\":\"thinking\",\"steps\":[{\"type\":\"text\",\"content\":\"1. 识别用户需求:需要基于自动站数据智能制作气象服务材料。\"},{\"type\":\"text\",\"content\":\"2. 数据获取:调用自动站接口,获取黄岛区共 17 个站点最新实况。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationNumber\",\"title\":\"站号\",\"align\":\"center\"},{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"observationTime\",\"title\":\"观测时间\",\"align\":\"center\"},{\"key\":\"temperature\",\"title\":\"气温(°C)\",\"align\":\"right\"},{\"key\":\"relativeHumidity\",\"title\":\"相对湿度(%)\",\"align\":\"right\"},{\"key\":\"windDirectionTxt\",\"title\":\"风向\",\"align\":\"center\"},{\"key\":\"windSpeed\",\"title\":\"风速(m/s)\",\"align\":\"right\"},{\"key\":\"weatherinfo\",\"title\":\"天气\",\"align\":\"center\"}],\"data\":[{\"stationNumber\":\"54943\",\"stationName\":\"黄岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.3\",\"relativeHumidity\":\"65\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.8\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0002\",\"stationName\":\"黄岛金沙滩\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.7\",\"relativeHumidity\":\"60\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"2.5\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0008\",\"stationName\":\"黄岛琅琊\",\"observationTime\":\"8/7 10\",\"temperature\":\"32.4\",\"relativeHumidity\":\"61\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.7\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0063\",\"stationName\":\"黄岛大涧山\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.6\",\"relativeHumidity\":\"58\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"2.4\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0076\",\"stationName\":\"黄岛滨海杜鹃花区气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.9\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"1.3\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0167\",\"stationName\":\"黄岛隐珠气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.6\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"西北风\",\"windSpeed\":\"3.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0189\",\"stationName\":\"黄岛竹岔岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.8\",\"relativeHumidity\":\"74\",\"windDirectionTxt\":\"缺测\",\"windSpeed\":\"0.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0192\",\"stationName\":\"黄岛灵山岛\",\"observationTime\":\"8/7 10\",\"temperature\":\"29.5\",\"relativeHumidity\":\"62\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"0.3\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0197\",\"stationName\":\"黄岛台子沟\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.1\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"东风\",\"windSpeed\":\"2.0\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0199\",\"stationName\":\"黄岛轮渡\",\"observationTime\":\"8/7 10\",\"temperature\":\"33.4\",\"relativeHumidity\":\"60\",\"windDirectionTxt\":\"西北风\",\"windSpeed\":\"0.9\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0200\",\"stationName\":\"黄岛董家口港\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.4\",\"relativeHumidity\":\"62\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"2.7\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0206\",\"stationName\":\"黄岛实验中学气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.3\",\"relativeHumidity\":\"54\",\"windDirectionTxt\":\"西南风\",\"windSpeed\":\"2.6\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0212\",\"stationName\":\"黄岛前湾港码头\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.0\",\"relativeHumidity\":\"54\",\"windDirectionTxt\":\"东北风\",\"windSpeed\":\"3.4\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0231\",\"stationName\":\"黄岛泊里气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.0\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"缺测\",\"windSpeed\":\"缺测\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0263\",\"stationName\":\"黄岛薛家岛气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"30.8\",\"relativeHumidity\":\"75\",\"windDirectionTxt\":\"东南风\",\"windSpeed\":\"3.2\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0267\",\"stationName\":\"黄岛区小珠山气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.4\",\"relativeHumidity\":\"缺测\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"3.1\",\"weatherinfo\":\"晴天\"},{\"stationNumber\":\"D0501\",\"stationName\":\"黄岛滨海气象观测站\",\"observationTime\":\"8/7 10\",\"temperature\":\"34.1\",\"relativeHumidity\":\"55\",\"windDirectionTxt\":\"北风\",\"windSpeed\":\"2.5\",\"weatherinfo\":\"晴天\"}]},{\"type\":\"text\",\"content\":\"3. 降水分析:获取黄岛区近 3 小时累计降水量。\"},{\"type\":\"table\",\"columns\":[{\"key\":\"stationName\",\"title\":\"站名\",\"align\":\"left\"},{\"key\":\"rainfall1h\",\"title\":\"1h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall3h\",\"title\":\"3h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall6h\",\"title\":\"6h降水(mm)\",\"align\":\"right\"},{\"key\":\"rainfall12h\",\"title\":\"12h降水(mm)\",\"align\":\"right\"}],\"data\":[{\"stationName\":\"黄岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.2\",\"rainfall12h\":\"1.5\"},{\"stationName\":\"黄岛金沙滩\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.0\",\"rainfall12h\":\"0.8\"},{\"stationName\":\"黄岛琅琊\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.1\",\"rainfall6h\":\"0.5\",\"rainfall12h\":\"2.1\"},{\"stationName\":\"黄岛大涧山\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.3\",\"rainfall12h\":\"1.2\"},{\"stationName\":\"黄岛滨海杜鹃花区气象观测站\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.1\",\"rainfall12h\":\"0.9\"},{\"stationName\":\"黄岛隐珠气象观测站\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.4\",\"rainfall12h\":\"1.8\"},{\"stationName\":\"黄岛竹岔岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.2\",\"rainfall6h\":\"0.6\",\"rainfall12h\":\"2.4\"},{\"stationName\":\"黄岛灵山岛\",\"rainfall1h\":\"0.0\",\"rainfall3h\":\"0.0\",\"rainfall6h\":\"0.2\",\"rainfall12h\":\"1.0\"}]},{\"type\":\"text\",\"content\":\"4. 数据解析:原始返回为 JSON 格式,已提取关键字段。\"},{\"type\":\"markdown\",\"content\":\"JSON 结构示例:\\n```json\\n{\\n \\\"msg\\\": \\\"success\\\",\\n \\\"code\\\": 0,\\n \\\"dataType\\\": 14,\\n \\\"ds\\\": [\\n {\\n \\\"stationNumber\\\": \\\"54943\\\",\\n \\\"stationName\\\": \\\"黄岛\\\",\\n \\\"observationTime\\\": \\\"8/7 10\\\",\\n \\\"temperature\\\": \\\"33.3\\\",\\n \\\"relativeHumidity\\\": \\\"65\\\",\\n \\\"windDirectionTxt\\\": \\\"东风\\\",\\n \\\"windSpeed\\\": \\\"1.8\\\",\\n \\\"weatherinfo\\\": \\\"晴天\\\"\\n }\\n ]\\n}\\n```\"},{\"type\":\"text\",\"content\":\"5. 生成服务材料:基于以上数据生成 Word 文档。\"}]},{\"sort\":2,\"type\":\"file\",\"title\":\"\",\"name\":\"智能制作成果.docx\",\"fileUrl\":\"https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf\",\"ext\":\"docx\"}]}]}}") }, Ql = class {
26650
26649
  controller = null;
26651
26650
  currentRequestId = 0;
26652
26651
  abort() {
@@ -26704,46 +26703,46 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26704
26703
  this.currentRequestId === r && (this.controller = null);
26705
26704
  }
26706
26705
  }
26707
- }, Ql = { class: "AiChat__headerActions" }, $l = ["title"], eu = {
26706
+ }, $l = { class: "AiChat__headerActions" }, eu = ["title"], tu = {
26708
26707
  key: 0,
26709
26708
  class: "AiChat__message AiChat__message--user"
26710
- }, tu = { class: "AiChat__content" }, nu = { class: "AiChat__bubble AiChat__bubble--user" }, ru = { class: "AiChat__time" }, iu = {
26709
+ }, nu = { class: "AiChat__content" }, ru = { class: "AiChat__bubble AiChat__bubble--user" }, iu = { class: "AiChat__time" }, au = {
26711
26710
  key: 1,
26712
26711
  class: "AiChat__message"
26713
- }, au = { class: "AiChat__content" }, ou = { class: "AiChat__bubble" }, su = {
26712
+ }, ou = { class: "AiChat__content" }, su = { class: "AiChat__bubble" }, cu = {
26714
26713
  key: 1,
26715
26714
  class: "AiChat__typing"
26716
- }, cu = {
26715
+ }, lu = {
26717
26716
  key: 0,
26718
26717
  class: "AiChat__meta"
26719
- }, lu = { class: "AiChat__time" }, uu = {
26718
+ }, uu = { class: "AiChat__time" }, du = {
26720
26719
  key: 0,
26721
26720
  class: "AiChat__actions"
26722
- }, du = {
26721
+ }, fu = {
26723
26722
  key: 1,
26724
26723
  class: "AiChat__empty"
26725
- }, fu = {
26724
+ }, pu = {
26726
26725
  key: 2,
26727
26726
  class: "AiChat__contentWrapper"
26728
- }, pu = { class: "AiChat__headerActions" }, mu = {
26727
+ }, mu = { class: "AiChat__headerActions" }, hu = {
26729
26728
  key: 0,
26730
26729
  class: "AiChat__message AiChat__message--user"
26731
- }, hu = { class: "AiChat__content" }, gu = { class: "AiChat__bubble AiChat__bubble--user" }, _u = { class: "AiChat__time" }, vu = {
26730
+ }, gu = { class: "AiChat__content" }, _u = { class: "AiChat__bubble AiChat__bubble--user" }, vu = { class: "AiChat__time" }, yu = {
26732
26731
  key: 1,
26733
26732
  class: "AiChat__message"
26734
- }, yu = { class: "AiChat__content" }, bu = { class: "AiChat__bubble" }, xu = {
26733
+ }, bu = { class: "AiChat__content" }, xu = { class: "AiChat__bubble" }, Su = {
26735
26734
  key: 1,
26736
26735
  class: "AiChat__typing"
26737
- }, Su = {
26736
+ }, Cu = {
26738
26737
  key: 0,
26739
26738
  class: "AiChat__meta"
26740
- }, Cu = { class: "AiChat__time" }, wu = {
26739
+ }, wu = { class: "AiChat__time" }, Tu = {
26741
26740
  key: 0,
26742
26741
  class: "AiChat__actions"
26743
- }, Tu = ["onClick"], Eu = {
26742
+ }, Eu = ["onClick"], Du = {
26744
26743
  key: 0,
26745
26744
  class: "AiChat__typeTabDivider"
26746
- }, Du = { class: "AiChat__inputBar" }, Ou = { class: "AiChat__textareaWrap" }, ku = ["placeholder"], Au = ["disabled"], ju = /* @__PURE__ */ m({
26745
+ }, Ou = { class: "AiChat__inputBar" }, ku = { class: "AiChat__textareaWrap" }, Au = ["placeholder"], ju = ["disabled"], Mu = /* @__PURE__ */ m({
26747
26746
  __name: "AiChat",
26748
26747
  props: {
26749
26748
  baseHttp: { default: "" },
@@ -26772,13 +26771,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26772
26771
  type: Boolean,
26773
26772
  default: !0
26774
26773
  },
26775
- mockData: {},
26776
- mockLabelList: { default: [
26777
- "查知识",
26778
- "查数据",
26779
- "查材料",
26780
- "智能制作"
26781
- ] }
26774
+ mockData: {}
26782
26775
  },
26783
26776
  emits: [
26784
26777
  "send",
@@ -26797,7 +26790,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26797
26790
  width: typeof a.width == "number" ? `${a.width}px` : a.width,
26798
26791
  height: typeof a.height == "number" ? `${a.height}px` : a.height,
26799
26792
  transform: `translate3d(${y.value}px, ${E.value}px, 0)`
26800
- }), I = x(null), L = x(null), R = x(!1), z = x(""), B = x(a.defaultType), ee = x(""), V = x(!1), H = null, te = x(""), ne = new Zl(), U = "", W = x(a.appKey || ""), re = async () => {
26793
+ }), I = x(null), L = x(null), R = x(!1), z = x(""), B = x(a.defaultType), ee = x(""), V = x(!1), H = null, te = x(""), ne = new Ql(), U = "", W = x(a.appKey || ""), re = [], G = async () => {
26801
26794
  if (!a.username || !a.password) return console.warn("[AiChat] 未配置 username/password,跳过登录"), a.appKey || "";
26802
26795
  console.log("[AiChat] 正在登录...");
26803
26796
  try {
@@ -26810,69 +26803,116 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26810
26803
  } catch (e) {
26811
26804
  return console.error("[AiChat] 登录失败:", e), a.appKey || "";
26812
26805
  }
26813
- }, G = o(() => !!I.value || !!L.value || R.value), K = x(), q = x(), J = x(Xl), ie = o(() => {
26814
- let e = J.value.categories || {};
26806
+ }, K = o(() => !!I.value || !!L.value || R.value), q = x(), ie = x(), ae = x(Zl), J = o(() => {
26807
+ let e = ae.value.categories || {};
26815
26808
  return Object.keys(e).map((t) => ({
26816
26809
  value: t,
26817
26810
  label: e[t].label || t
26818
26811
  }));
26819
- }), Y = o(() => a.placeholder || "请输入你的问题…");
26820
- D(ie, (e) => {
26812
+ }), oe = o(() => a.placeholder || "请输入你的问题…");
26813
+ D(J, (e) => {
26821
26814
  e.length && !e.find((e) => e.value === B.value) && (B.value = e[0].value);
26822
26815
  }, { immediate: !0 }), D(B, () => {
26823
- Ee();
26816
+ Oe();
26824
26817
  });
26825
- let ae = async () => {
26818
+ let se = async () => {
26826
26819
  if (te.value) return te.value;
26827
26820
  let e = a.baseHttp.replace(/\/$/, ""), t = {};
26828
26821
  W.value && (t["aiflowy-token"] = W.value);
26829
26822
  let n = (await M.get(`${e}/userCenter/bot/generateConversationId`, { headers: t })).data, r = n?.data || n;
26830
26823
  if (n?.errorCode !== void 0 && n?.errorCode !== 0) throw Error(n?.message || "生成会话ID失败");
26831
26824
  return te.value = r || "", te.value;
26832
- }, oe = async () => {
26825
+ }, ce = async () => {
26833
26826
  let e = z.value.trim();
26834
26827
  if (!(!e || R.value || V.value)) {
26835
26828
  I.value = {
26836
26829
  content: e,
26837
- time: Oe()
26838
- }, L.value = null, ee.value = "", U = "", z.value = "", Ee(), R.value = !0, V.value = !1, await De();
26830
+ time: Ae()
26831
+ }, L.value = null, ee.value = "", U = "", z.value = "", Oe(), R.value = !0, V.value = !1, await ke();
26839
26832
  try {
26840
26833
  if (a.request) {
26841
26834
  let t = await a.request({
26842
26835
  text: e,
26843
26836
  type: B.value
26844
26837
  }), n = t.blocks || [];
26845
- a.stream && ve(n) ? xe(n) : a.stream && _e(n) ? Se(n) : ge(t);
26838
+ a.stream && be(n) ? Ce(n) : a.stream && ye(n) ? we(n) : ve(t);
26846
26839
  return;
26847
26840
  }
26848
- let t = ie.value.find((e) => e.value === B.value)?.label || "";
26849
- if (a.mockLabelList?.includes(t) ?? !1) {
26850
- let t = Te(B.value, e);
26851
- a.stream && ve(t) ? xe(t) : a.stream && _e(t) ? Se(t) : ge({
26841
+ let t = J.value.find((e) => e.value === B.value)?.label || "";
26842
+ if (re?.includes(t) ?? !1) {
26843
+ let t = De(B.value, e);
26844
+ a.stream && be(t) ? Ce(t) : a.stream && ye(t) ? we(t) : ve({
26852
26845
  type: B.value,
26853
26846
  blocks: t
26854
26847
  });
26855
26848
  return;
26856
26849
  }
26857
- if (a.ids?.[B.value]?.id || a.ids?.[t]?.id) {
26858
- await se(e);
26850
+ let n = a.ids?.[B.value]?.id || a.ids?.[t]?.id;
26851
+ if (n) {
26852
+ if (t === "智能制作") {
26853
+ await le(e, String(n));
26854
+ return;
26855
+ }
26856
+ console.log("[AiChat] 调用真实接口:", {
26857
+ typeLabel: t,
26858
+ currentType: B.value,
26859
+ botId: n
26860
+ }), await ue(e);
26859
26861
  return;
26860
26862
  }
26861
- let n = Te(B.value, e);
26862
- a.stream && ve(n) ? xe(n) : a.stream && _e(n) ? Se(n) : ge({
26863
+ let r = De(B.value, e);
26864
+ a.stream && be(r) ? Ce(r) : a.stream && ye(r) ? we(r) : ve({
26863
26865
  type: B.value,
26864
- blocks: n
26866
+ blocks: r
26865
26867
  });
26866
26868
  } catch (e) {
26867
26869
  R.value = !1, f("error", e);
26868
26870
  } finally {
26869
- V.value || (R.value = !1), await De();
26871
+ V.value || (R.value = !1), await ke();
26870
26872
  }
26871
26873
  }
26872
- }, se = async (e) => {
26874
+ }, le = async (e, t) => {
26875
+ R.value = !0, V.value = !1, L.value = {
26876
+ role: "ai",
26877
+ type: B.value,
26878
+ content: "",
26879
+ thinkingStatus: "thinking",
26880
+ tools: [],
26881
+ resources: [],
26882
+ time: Ae()
26883
+ };
26884
+ try {
26885
+ let t = await ht({
26886
+ appKey: a.appKey,
26887
+ appSalt: a.appSalt,
26888
+ id: a.ids.smartMake.id,
26889
+ variables: { newParam: e },
26890
+ baseHttp: `${a.baseHttp.replace(/\/$/, "")}/userCenter/workflow/runAsyncWorkFlow`,
26891
+ reqType: a.ids.smartMake.reqType,
26892
+ isFormData: a.ids.smartMake.isFormData
26893
+ });
26894
+ console.log("[AiChat] 智能制作工作流返回:", t);
26895
+ let n = t?.data?.result?.url, r = n ? n.split("/").pop() || n : "", i = n ? `[${r}](${n})` : "智能制作完成,但未获取到文件链接";
26896
+ L.value = {
26897
+ ...L.value,
26898
+ content: i,
26899
+ thinkingStatus: "end",
26900
+ time: Ae()
26901
+ };
26902
+ } catch (e) {
26903
+ console.error("[AiChat] 智能制作工作流失败:", e), L.value = {
26904
+ ...L.value,
26905
+ content: "智能制作请求失败,请稍后重试",
26906
+ thinkingStatus: "error",
26907
+ time: Ae()
26908
+ };
26909
+ } finally {
26910
+ R.value = !1;
26911
+ }
26912
+ }, ue = async (e) => {
26873
26913
  let t = a.ids?.[B.value]?.id;
26874
26914
  if (!t) throw Error(`当前类型「${B.value}」未配置 botId`);
26875
- let n = await ae();
26915
+ let n = await se();
26876
26916
  if (!n) throw Error("会话ID为空");
26877
26917
  V.value = !0, U = "";
26878
26918
  let r = a.baseHttp.replace(/\/$/, ""), i = {
@@ -26888,14 +26928,14 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26888
26928
  thinkingStatus: "thinking",
26889
26929
  tools: [],
26890
26930
  resources: [],
26891
- time: Oe()
26931
+ time: Ae()
26892
26932
  }, ne.post(`${r}/userCenter/bot/chat`, i, {
26893
26933
  headers: { "aiflowy-token": W.value || "" },
26894
- onMessage: ce,
26895
- onError: le,
26896
- onFinished: ue
26934
+ onMessage: de,
26935
+ onError: fe,
26936
+ onFinished: pe
26897
26937
  });
26898
- }, ce = (e) => {
26938
+ }, de = (e) => {
26899
26939
  if (!e.data) return;
26900
26940
  let t;
26901
26941
  try {
@@ -26905,30 +26945,30 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26905
26945
  }
26906
26946
  let n = t?.payload?.delta;
26907
26947
  if (e.event === "done") {
26908
- de();
26948
+ me();
26909
26949
  return;
26910
26950
  }
26911
26951
  if (e.event === "error") {
26912
- fe({
26952
+ Y({
26913
26953
  content: t?.payload?.message || "未知错误",
26914
26954
  thinkingStatus: "error"
26915
- }), de();
26955
+ }), me();
26916
26956
  return;
26917
26957
  }
26918
26958
  if (t?.domain === "RESOURCE") {
26919
26959
  let e = Array.isArray(t.payload) ? t.payload : t.payload?.resources || [];
26920
- e.length && fe({ resources: [...L.value?.resources || [], ...e] });
26960
+ e.length && Y({ resources: [...L.value?.resources || [], ...e] });
26921
26961
  return;
26922
26962
  }
26923
26963
  if (t?.domain === "AUDIO") {
26924
- fe({ audioUrl: t.payload?.audioUrl });
26964
+ Y({ audioUrl: t.payload?.audioUrl });
26925
26965
  return;
26926
26966
  }
26927
26967
  if (t?.domain === "SYSTEM" && t.payload?.code === "SYSTEM_ERROR") {
26928
- fe({
26968
+ Y({
26929
26969
  content: t.payload.message,
26930
26970
  thinkingStatus: "error"
26931
- }), de();
26971
+ }), me();
26932
26972
  return;
26933
26973
  }
26934
26974
  if (t?.domain === "TOOL") {
@@ -26940,12 +26980,12 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26940
26980
  arguments: t?.payload?.arguments,
26941
26981
  result: t?.payload?.result
26942
26982
  };
26943
- r === -1 ? e.push(i) : e[r] = i, fe({ tools: e });
26983
+ r === -1 ? e.push(i) : e[r] = i, Y({ tools: e });
26944
26984
  return;
26945
26985
  }
26946
26986
  if (t?.domain === "WORKFLOW") {
26947
26987
  if (t.type === "MESSAGE" && t.payload?.structuredData) {
26948
- fe({
26988
+ Y({
26949
26989
  thinkingStatus: "end",
26950
26990
  content: t.payload?.content || "",
26951
26991
  structuredData: t.payload.structuredData
@@ -26962,61 +27002,61 @@ var fc = { class: "AiChatThinking__label" }, pc = {
26962
27002
  ...e[n],
26963
27003
  status: t?.type === "WORKFLOW_FINISHED" ? "success" : "calling",
26964
27004
  rawStatus: t?.type
26965
- }, fe({ tools: e });
27005
+ }, Y({ tools: e });
26966
27006
  return;
26967
27007
  }
26968
27008
  if (t.type === "THINKING") {
26969
- fe({ reasoning_content: (L.value?.reasoning_content || "") + (n || "") });
27009
+ Y({ reasoning_content: (L.value?.reasoning_content || "") + (n || "") });
26970
27010
  return;
26971
27011
  }
26972
27012
  if (t.type === "MESSAGE") {
26973
27013
  if (t.payload?.structuredData) {
26974
- fe({
27014
+ Y({
26975
27015
  content: t.payload?.content || U,
26976
27016
  structuredData: t.payload.structuredData,
26977
27017
  thinkingStatus: "end"
26978
27018
  });
26979
27019
  return;
26980
27020
  }
26981
- U += n || "", fe({ content: U });
27021
+ U += n || "", Y({ content: U });
26982
27022
  }
26983
- }, le = (e) => {
26984
- console.error("SSE 错误:", e), fe({
27023
+ }, fe = (e) => {
27024
+ console.error("SSE 错误:", e), Y({
26985
27025
  thinkingStatus: "error",
26986
27026
  content: U || "请求失败,请稍后重试"
26987
- }), de(), f("error", e);
26988
- }, ue = () => {
26989
- de();
26990
- }, de = () => {
26991
- V.value = !1, R.value = !1, fe({ thinkingStatus: "end" }), ne.abort(), De();
26992
- }, fe = (e) => {
27027
+ }), me(), f("error", e);
27028
+ }, pe = () => {
27029
+ me();
27030
+ }, me = () => {
27031
+ V.value = !1, R.value = !1, Y({ thinkingStatus: "end" }), ne.abort(), ke();
27032
+ }, Y = (e) => {
26993
27033
  L.value && (L.value = {
26994
27034
  ...L.value,
26995
27035
  ...e,
26996
- time: Oe()
26997
- }, De());
26998
- }, pe = (e) => {
26999
- e.key === "Enter" && !e.shiftKey && (e.preventDefault(), oe());
27000
- }, me = (e) => {
27036
+ time: Ae()
27037
+ }, ke());
27038
+ }, he = (e) => {
27039
+ e.key === "Enter" && !e.shiftKey && (e.preventDefault(), ce());
27040
+ }, ge = (e) => {
27001
27041
  B.value = e, f("changeType", e);
27002
- }, he = async () => {
27042
+ }, _e = async () => {
27003
27043
  if (!a.mockData) {
27004
- J.value = Xl;
27044
+ ae.value = Zl;
27005
27045
  return;
27006
27046
  }
27007
27047
  if (typeof a.mockData == "string") try {
27008
- J.value = await xt(a.mockData.startsWith("http") ? a.mockData : `${a.baseHttp}${a.mockData}`, !0) || Xl;
27048
+ ae.value = await xt(a.mockData.startsWith("http") ? a.mockData : `${a.baseHttp}${a.mockData}`, !0) || Zl;
27009
27049
  } catch (e) {
27010
- f("error", e), J.value = Xl;
27050
+ f("error", e), ae.value = Zl;
27011
27051
  }
27012
- else J.value = a.mockData;
27052
+ else ae.value = a.mockData;
27013
27053
  };
27014
27054
  v(async () => {
27015
- await re(), he();
27016
- }), D(() => a.mockData, he), D(() => a.appKey, (e) => {
27055
+ await G(), _e();
27056
+ }), D(() => a.mockData, _e), D(() => a.appKey, (e) => {
27017
27057
  W.value ||= e || "";
27018
27058
  });
27019
- let ge = (e) => {
27059
+ let ve = (e) => {
27020
27060
  L.value = {
27021
27061
  role: "ai",
27022
27062
  type: e.type,
@@ -27025,9 +27065,9 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27025
27065
  resources: e.resources,
27026
27066
  structuredData: e.structuredData,
27027
27067
  thinkingStatus: "end",
27028
- time: Oe()
27068
+ time: Ae()
27029
27069
  };
27030
- }, _e = (e) => !!e?.some((e) => e.type === "markdown" || e.type === "text"), ve = (e) => !!e?.some((e) => e.type === "thinking"), ye = (e) => e?.find((e) => e.type === "markdown" || e.type === "text")?.content || "", be = (e) => {
27070
+ }, ye = (e) => !!e?.some((e) => e.type === "markdown" || e.type === "text"), be = (e) => !!e?.some((e) => e.type === "thinking"), xe = (e) => e?.find((e) => e.type === "markdown" || e.type === "text")?.content || "", Se = (e) => {
27031
27071
  if (e.type === "text" || e.type === "markdown") return e.content || "";
27032
27072
  if (e.type === "table") {
27033
27073
  let t = e.columns || [], n = e.data || [];
@@ -27038,11 +27078,11 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27038
27078
  ].join("\n") : "";
27039
27079
  }
27040
27080
  return e.type === "image" ? `\n![${e.caption || ""}](${e.url || ""})\n` : e.type === "echarts" ? "\n(图表已生成)\n" : "";
27041
- }, xe = (e) => {
27042
- we(), V.value = !0, R.value = !0;
27081
+ }, Ce = (e) => {
27082
+ Ee(), V.value = !0, R.value = !0;
27043
27083
  let t = e.find((e) => e.type === "thinking"), n = e.filter((e) => e.type !== "thinking"), r = t?.steps || [], i = [];
27044
27084
  r.forEach((e) => {
27045
- let t = be(e);
27085
+ let t = Se(e);
27046
27086
  t && i.push(t);
27047
27087
  });
27048
27088
  let a = i.join("\n\n"), o = [], s = r.some((e) => e.type === "table" && e.columns?.some((e) => e.key === "stationNumber")), c = r.some((e) => e.type === "table" && e.columns?.some((e) => e.key === "rainfall1h")), l = n.some((e) => e.type === "file");
@@ -27068,7 +27108,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27068
27108
  thinkingStatus: "thinking",
27069
27109
  tools: [...o],
27070
27110
  blocks: n,
27071
- time: Oe()
27111
+ time: Ae()
27072
27112
  };
27073
27113
  let m = 0, h = o.length ? "tools" : "thinking", g = 0, _ = (e, t, n) => {
27074
27114
  if (m >= e.length) {
@@ -27080,12 +27120,12 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27080
27120
  t === "reasoning" ? L.value = {
27081
27121
  ...L.value,
27082
27122
  reasoning_content: (L.value.reasoning_content || "") + i,
27083
- time: Oe()
27123
+ time: Ae()
27084
27124
  } : L.value = {
27085
27125
  ...L.value,
27086
27126
  content: (L.value.content || "") + i,
27087
- time: Oe()
27088
- }, De();
27127
+ time: Ae()
27128
+ }, ke();
27089
27129
  let a = /[,。;:!?、,.;:!?]$/.test(i), o = Math.random() < .18, s = 50 + Math.floor(Math.random() * 70);
27090
27130
  a && (s += 80 + Math.floor(Math.random() * 120)), o && (s += 200 + Math.floor(Math.random() * 300)), H = setTimeout(() => _(e, t, n), s);
27091
27131
  }, v = () => {
@@ -27105,7 +27145,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27105
27145
  ...e,
27106
27146
  status: "success"
27107
27147
  } : e)
27108
- }, g++, De(), H = setTimeout(v, 400));
27148
+ }, g++, ke(), H = setTimeout(v, 400));
27109
27149
  }, 600);
27110
27150
  return;
27111
27151
  }
@@ -27121,7 +27161,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27121
27161
  ...L.value,
27122
27162
  thinkingStatus: "end",
27123
27163
  blocks: f.filter((e) => (e.sort || 99) < (d?.sort || 99)),
27124
- time: Oe()
27164
+ time: Ae()
27125
27165
  }, p ? _(p, "content", "done") : (h = "done", v());
27126
27166
  return;
27127
27167
  }
@@ -27130,24 +27170,24 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27130
27170
  thinkingStatus: "end",
27131
27171
  content: L.value.content || p,
27132
27172
  blocks: f,
27133
- time: Oe()
27173
+ time: Ae()
27134
27174
  };
27135
27175
  }
27136
27176
  };
27137
27177
  H = setTimeout(v, 300);
27138
- }, Se = (e) => {
27139
- let t = ye(e);
27178
+ }, we = (e) => {
27179
+ let t = xe(e);
27140
27180
  if (!t) {
27141
- ge({
27181
+ ve({
27142
27182
  type: B.value,
27143
27183
  blocks: e
27144
27184
  });
27145
27185
  return;
27146
27186
  }
27147
- we(), V.value = !0, R.value = !0, ee.value = "";
27187
+ Ee(), V.value = !0, R.value = !0, ee.value = "";
27148
27188
  let n = 0, r = () => {
27149
27189
  if (n >= t.length) {
27150
- V.value = !1, R.value = !1, ge({
27190
+ V.value = !1, R.value = !1, ve({
27151
27191
  type: B.value,
27152
27192
  blocks: e
27153
27193
  });
@@ -27164,13 +27204,13 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27164
27204
  type: "markdown",
27165
27205
  content: ee.value
27166
27206
  }],
27167
- time: Oe()
27168
- }, De();
27207
+ time: Ae()
27208
+ }, ke();
27169
27209
  let o = /[,。;:!?、,.;:!?]$/.test(a), s = Math.random() < .18, c = 50 + Math.floor(Math.random() * 70);
27170
27210
  o && (c += 80 + Math.floor(Math.random() * 120)), s && (c += 200 + Math.floor(Math.random() * 300)), H = setTimeout(r, c);
27171
27211
  };
27172
27212
  r();
27173
- }, Ce = (e) => {
27213
+ }, Te = (e) => {
27174
27214
  if (!L.value) L.value = {
27175
27215
  role: "ai",
27176
27216
  type: B.value,
@@ -27179,7 +27219,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27179
27219
  type: "markdown",
27180
27220
  content: e
27181
27221
  }],
27182
- time: Oe()
27222
+ time: Ae()
27183
27223
  };
27184
27224
  else {
27185
27225
  let t = L.value.blocks || [], n = t.find((e) => e.type === "markdown" || e.type === "text");
@@ -27192,40 +27232,40 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27192
27232
  blocks: [...t]
27193
27233
  };
27194
27234
  }
27195
- De();
27196
- }, we = () => {
27235
+ ke();
27236
+ }, Ee = () => {
27197
27237
  H &&= (clearTimeout(H), null);
27198
- }, Te = (e, t) => {
27199
- let n = J.value.categories?.[e];
27238
+ }, De = (e, t) => {
27239
+ let n = ae.value.categories?.[e];
27200
27240
  if (!n) return [];
27201
27241
  for (let e of n.responses) if (e.keywords && e.keywords.some((e) => t.includes(e))) return e.blocks;
27202
27242
  let r = n.responses.find((e) => e.default);
27203
27243
  return r ? r.blocks : n.responses[0]?.blocks || [];
27204
- }, Ee = () => {
27205
- let e = q.value;
27244
+ }, Oe = () => {
27245
+ let e = ie.value;
27206
27246
  e && (e.style.height = "auto", e.style.height = `${Math.min(e.scrollHeight, 96)}px`);
27207
- }, De = async () => {
27247
+ }, ke = async () => {
27208
27248
  await h();
27209
- let e = K.value;
27249
+ let e = q.value;
27210
27250
  e && (e.scrollTop = e.scrollHeight);
27211
- }, Oe = () => {
27251
+ }, Ae = () => {
27212
27252
  let e = /* @__PURE__ */ new Date();
27213
27253
  return `${String(e.getHours()).padStart(2, "0")}:${String(e.getMinutes()).padStart(2, "0")}`;
27214
- }, ke = () => {
27215
- we(), ne.abort(), I.value = null, L.value = null, R.value = !1, V.value = !1, ee.value = "", U = "", te.value = "";
27216
- }, Ae = () => {
27217
- ke(), m.value = !1, f("close");
27254
+ }, je = () => {
27255
+ Ee(), ne.abort(), I.value = null, L.value = null, R.value = !1, V.value = !1, ee.value = "", U = "", te.value = "";
27256
+ }, Me = () => {
27257
+ je(), m.value = !1, f("close");
27218
27258
  };
27219
27259
  return t({
27220
- setResponse: ge,
27260
+ setResponse: ve,
27221
27261
  setLoading: (e) => {
27222
27262
  R.value = e;
27223
27263
  },
27224
- appendStreamChunk: Ce,
27264
+ appendStreamChunk: Te,
27225
27265
  setFullscreen: (e) => {
27226
27266
  m.value = e;
27227
27267
  },
27228
- clear: ke
27268
+ clear: je
27229
27269
  }), (t, n) => {
27230
27270
  let a = r;
27231
27271
  return b(), l("div", {
@@ -27239,7 +27279,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27239
27279
  key: 0,
27240
27280
  class: "AiChat__header",
27241
27281
  onPointerdown: n[2] ||= A((...e) => w(N) && w(N)(...e), ["prevent"])
27242
- }, [n[12] ||= d("<div class=\"AiChat__title\"><svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"></path></svg><span>AI 智能助手</span><span class=\"AiChat__status\"><span class=\"AiChat__statusDot\"></span> 在线 </span></div>", 1), u("div", Ql, [u("button", {
27282
+ }, [n[12] ||= d("<div class=\"AiChat__title\"><svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"></path></svg><span>AI 智能助手</span><span class=\"AiChat__status\"><span class=\"AiChat__statusDot\"></span> 在线 </span></div>", 1), u("div", $l, [u("button", {
27243
27283
  class: "AiChat__headerBtn",
27244
27284
  title: m.value ? "退出全屏" : "全屏",
27245
27285
  onClick: P,
@@ -27249,28 +27289,28 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27249
27289
  width: "16",
27250
27290
  height: "16",
27251
27291
  fill: "currentColor"
27252
- }, [u("path", { d: "M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z" })], -1)]], 40, $l), u("button", {
27292
+ }, [u("path", { d: "M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z" })], -1)]], 40, eu), u("button", {
27253
27293
  class: "AiChat__headerBtn AiChat__headerBtn--close",
27254
- onClick: Ae,
27294
+ onClick: Me,
27255
27295
  onPointerdown: n[1] ||= A(() => {}, ["stop"]),
27256
27296
  title: "关闭"
27257
27297
  }, "× ", 32)])], 32)) : c("", !0),
27258
27298
  m.value ? (b(), l("div", {
27259
27299
  key: 1,
27260
27300
  ref_key: "bodyRef",
27261
- ref: K,
27301
+ ref: q,
27262
27302
  class: "AiChat__body"
27263
- }, [I.value || L.value ? (b(), l(i, { key: 0 }, [I.value ? (b(), l("div", eu, [n[13] ||= u("div", { class: "AiChat__avatar AiChat__avatar--user" }, [u("svg", {
27303
+ }, [I.value || L.value ? (b(), l(i, { key: 0 }, [I.value ? (b(), l("div", tu, [n[13] ||= u("div", { class: "AiChat__avatar AiChat__avatar--user" }, [u("svg", {
27264
27304
  viewBox: "0 0 24 24",
27265
27305
  width: "16",
27266
27306
  height: "16",
27267
27307
  fill: "currentColor"
27268
- }, [u("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" })])], -1), u("div", tu, [u("div", nu, C(I.value.content), 1), u("div", ru, C(I.value.time), 1)])])) : c("", !0), L.value || R.value ? (b(), l("div", iu, [n[20] ||= u("div", { class: "AiChat__avatar AiChat__avatar--ai" }, [u("svg", {
27308
+ }, [u("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" })])], -1), u("div", nu, [u("div", ru, C(I.value.content), 1), u("div", iu, C(I.value.time), 1)])])) : c("", !0), L.value || R.value ? (b(), l("div", au, [n[20] ||= u("div", { class: "AiChat__avatar AiChat__avatar--ai" }, [u("svg", {
27269
27309
  viewBox: "0 0 24 24",
27270
27310
  width: "16",
27271
27311
  height: "16",
27272
27312
  fill: "currentColor"
27273
- }, [u("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" })])], -1), u("div", au, [u("div", ou, [L.value ? (b(), s(Yl, {
27313
+ }, [u("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" })])], -1), u("div", ou, [u("div", su, [L.value ? (b(), s(Xl, {
27274
27314
  key: 0,
27275
27315
  message: L.value,
27276
27316
  theme: e.theme,
@@ -27281,11 +27321,11 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27281
27321
  "theme",
27282
27322
  "isFullscreen",
27283
27323
  "baseHttp"
27284
- ])) : R.value ? (b(), l("div", su, [...n[14] ||= [
27324
+ ])) : R.value ? (b(), l("div", cu, [...n[14] ||= [
27285
27325
  u("span", null, null, -1),
27286
27326
  u("span", null, null, -1),
27287
27327
  u("span", null, null, -1)
27288
- ]])) : c("", !0)]), L.value ? (b(), l("div", cu, [u("div", lu, C(L.value.time), 1), L.value.thinkingStatus === "end" ? (b(), l("div", uu, [
27328
+ ]])) : c("", !0)]), L.value ? (b(), l("div", lu, [u("div", uu, C(L.value.time), 1), L.value.thinkingStatus === "end" ? (b(), l("div", du, [
27289
27329
  p(a, {
27290
27330
  content: "复制",
27291
27331
  placement: "top"
@@ -27336,7 +27376,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27336
27376
  }), u("span", null, "导出")], -1)]]),
27337
27377
  _: 1
27338
27378
  })
27339
- ])) : c("", !0)])) : c("", !0)])])) : c("", !0)], 64)) : (b(), l("div", du, " 选择类型后输入问题,AI 将为你解答 "))], 512)) : G.value ? (b(), l("div", fu, [u("header", {
27379
+ ])) : c("", !0)])) : c("", !0)])])) : c("", !0)], 64)) : (b(), l("div", fu, " 选择类型后输入问题,AI 将为你解答 "))], 512)) : K.value ? (b(), l("div", pu, [u("header", {
27340
27380
  class: "AiChat__contentHeader",
27341
27381
  onPointerdown: n[5] ||= A((...e) => w(N) && w(N)(...e), ["prevent"])
27342
27382
  }, [n[22] ||= u("div", { class: "AiChat__contentTitle" }, [u("svg", {
@@ -27344,7 +27384,7 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27344
27384
  width: "16",
27345
27385
  height: "16",
27346
27386
  fill: "currentColor"
27347
- }, [u("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" })]), u("span", null, "AI 智能助手")], -1), u("div", pu, [u("button", {
27387
+ }, [u("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" })]), u("span", null, "AI 智能助手")], -1), u("div", mu, [u("button", {
27348
27388
  class: "AiChat__headerBtn",
27349
27389
  title: "全屏",
27350
27390
  onClick: P,
@@ -27357,13 +27397,13 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27357
27397
  }, [u("path", { d: "M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z" })], -1)]], 32), u("button", {
27358
27398
  class: "AiChat__headerBtn AiChat__headerBtn--close",
27359
27399
  title: "关闭",
27360
- onClick: Ae,
27400
+ onClick: Me,
27361
27401
  onPointerdown: n[4] ||= A(() => {}, ["stop"])
27362
27402
  }, "× ", 32)])], 32), u("div", {
27363
27403
  ref_key: "bodyRef",
27364
- ref: K,
27404
+ ref: q,
27365
27405
  class: "AiChat__contentPanel"
27366
- }, [I.value || L.value ? (b(), l(i, { key: 0 }, [I.value ? (b(), l("div", mu, [u("div", hu, [u("div", gu, C(I.value.content), 1), u("div", _u, C(I.value.time), 1)])])) : c("", !0), L.value || R.value ? (b(), l("div", vu, [u("div", yu, [u("div", bu, [L.value ? (b(), s(Yl, {
27406
+ }, [I.value || L.value ? (b(), l(i, { key: 0 }, [I.value ? (b(), l("div", hu, [u("div", gu, [u("div", _u, C(I.value.content), 1), u("div", vu, C(I.value.time), 1)])])) : c("", !0), L.value || R.value ? (b(), l("div", yu, [u("div", bu, [u("div", xu, [L.value ? (b(), s(Xl, {
27367
27407
  key: 0,
27368
27408
  message: L.value,
27369
27409
  theme: e.theme,
@@ -27374,11 +27414,11 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27374
27414
  "theme",
27375
27415
  "isFullscreen",
27376
27416
  "baseHttp"
27377
- ])) : R.value ? (b(), l("div", xu, [...n[23] ||= [
27417
+ ])) : R.value ? (b(), l("div", Su, [...n[23] ||= [
27378
27418
  u("span", null, null, -1),
27379
27419
  u("span", null, null, -1),
27380
27420
  u("span", null, null, -1)
27381
- ]])) : c("", !0)]), L.value ? (b(), l("div", Su, [u("div", Cu, C(L.value.time), 1), L.value.thinkingStatus === "end" ? (b(), l("div", wu, [
27421
+ ]])) : c("", !0)]), L.value ? (b(), l("div", Cu, [u("div", wu, C(L.value.time), 1), L.value.thinkingStatus === "end" ? (b(), l("div", Tu, [
27382
27422
  p(a, {
27383
27423
  content: "复制",
27384
27424
  placement: "top"
@@ -27436,22 +27476,22 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27436
27476
  }, [u("div", {
27437
27477
  class: g(["AiChat__typeTabs", { "AiChat__typeTabs--fullscreen": m.value }]),
27438
27478
  onPointerdown: n[6] ||= A(() => {}, ["stop"])
27439
- }, [(b(!0), l(i, null, S(ie.value, (e, t) => (b(), l(i, { key: e.value }, [u("button", {
27479
+ }, [(b(!0), l(i, null, S(J.value, (e, t) => (b(), l(i, { key: e.value }, [u("button", {
27440
27480
  class: g(["AiChat__typeTab", { "AiChat__typeTab--active": B.value === e.value }]),
27441
- onClick: (t) => me(e.value)
27442
- }, C(e.label), 11, Tu), t < ie.value.length - 1 ? (b(), l("span", Eu)) : c("", !0)], 64))), 128))], 34), u("div", Du, [u("div", Ou, [k(u("input", {
27481
+ onClick: (t) => ge(e.value)
27482
+ }, C(e.label), 11, Eu), t < J.value.length - 1 ? (b(), l("span", Du)) : c("", !0)], 64))), 128))], 34), u("div", Ou, [u("div", ku, [k(u("input", {
27443
27483
  ref_key: "textareaRef",
27444
- ref: q,
27484
+ ref: ie,
27445
27485
  "onUpdate:modelValue": n[7] ||= (e) => z.value = e,
27446
27486
  class: "AiChat__textarea",
27447
- placeholder: Y.value,
27448
- onKeydown: pe,
27449
- onInput: Ee,
27487
+ placeholder: oe.value,
27488
+ onKeydown: he,
27489
+ onInput: Oe,
27450
27490
  onPointerdown: n[8] ||= A(() => {}, ["stop"])
27451
- }, null, 40, ku), [[T, z.value]])]), u("button", {
27491
+ }, null, 40, Au), [[T, z.value]])]), u("button", {
27452
27492
  class: "AiChat__send",
27453
27493
  disabled: !z.value.trim() || R.value || V.value,
27454
- onClick: oe,
27494
+ onClick: ce,
27455
27495
  onPointerdown: n[9] ||= A(() => {}, ["stop"]),
27456
27496
  title: "发送"
27457
27497
  }, [...n[29] ||= [u("svg", {
@@ -27459,10 +27499,10 @@ var fc = { class: "AiChatThinking__label" }, pc = {
27459
27499
  width: "16",
27460
27500
  height: "16",
27461
27501
  fill: "currentColor"
27462
- }, [u("path", { d: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" })], -1)]], 40, Au)])], 34)
27502
+ }, [u("path", { d: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" })], -1)]], 40, ju)])], 34)
27463
27503
  ], 6);
27464
27504
  };
27465
27505
  }
27466
27506
  });
27467
27507
  //#endregion
27468
- export { St as a, ht as i, Ct as n, bt as o, xt as r, ju as t };
27508
+ export { St as a, ht as i, Ct as n, bt as o, xt as r, Mu as t };