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.
- package/dist/chunks/{component-AiChat-BU0rzEqA.mjs → component-AiChat-BXNBLM1G.mjs} +382 -342
- package/dist/chunks/{component-AqiMonitor-B0X5SmQB.mjs → component-AqiMonitor-C_V1Nuf_.mjs} +1 -1
- package/dist/chunks/{component-ChartCumulativePre-D50ZlxtD.mjs → component-ChartCumulativePre-Bo28Bgaa.mjs} +2 -2
- package/dist/chunks/{component-ChartServiceMaterial-D35UWUD8.mjs → component-ChartServiceMaterial-DELVCsKj.mjs} +2 -2
- package/dist/chunks/{component-Duty-CuVSfL6B.mjs → component-Duty-dyZZ4vHt.mjs} +2 -2
- package/dist/chunks/{component-EarlyWarningStatistic-DBLY754e.mjs → component-EarlyWarningStatistic-CBJfrRsV.mjs} +2 -2
- package/dist/chunks/component-Forecast72h-BkVZSGhE.mjs +427 -0
- package/dist/chunks/{component-GeologyLiveAlarm-BGqrl_n2.mjs → component-GeologyLiveAlarm-B9jBWXf0.mjs} +2 -2
- package/dist/chunks/component-HdForecastProducts-D4x_Y0OB.mjs +211 -0
- package/dist/chunks/component-HdHeatService-Bf9XH3DP.mjs +412 -0
- package/dist/chunks/component-HdObservation-CM6HUrQ3.mjs +606 -0
- package/dist/chunks/component-HdPreSituation-CJ8-wiRO.mjs +639 -0
- package/dist/chunks/component-HdRadarTime-C4ZArOUM.mjs +461 -0
- package/dist/chunks/component-HdSeaCase-3-YFxSuM.mjs +219 -0
- package/dist/chunks/component-HdServiceMarterial-pSFQUH2x.mjs +316 -0
- package/dist/chunks/component-HdServiceRequirements-BjuiyyC5.mjs +142 -0
- package/dist/chunks/component-HdStationTem-Dit7Y8lu.mjs +573 -0
- package/dist/chunks/component-HdSuggestion-B_abfzRO.mjs +161 -0
- package/dist/chunks/component-HdThreeWeatherTrend-B2qzvOzb.mjs +372 -0
- package/dist/chunks/component-HdWaveForcast-D8UZrHzF.mjs +269 -0
- package/dist/chunks/{component-HighQuality-B-DNdjF7.mjs → component-HighQuality-1iqLOQAF.mjs} +3 -3
- package/dist/chunks/{component-HighWayEarlyWarningRed-DM_NXOxS.mjs → component-HighWayEarlyWarningRed-DlgG9rTx.mjs} +907 -759
- package/dist/chunks/{component-HighWayFreeze-Dldul9ds.mjs → component-HighWayFreeze-CCp1Rxpz.mjs} +2 -2
- package/dist/chunks/{component-HighwayLiveAlarm-7T0XNRUb.mjs → component-HighwayLiveAlarm-D7PKi5rG.mjs} +2 -2
- package/dist/chunks/{component-HighwayLiveAlarmNew-ClsfDywn.mjs → component-HighwayLiveAlarmNew-rH59lsj8.mjs} +3 -3
- package/dist/chunks/{component-HighwayStations-u3R83AXH.mjs → component-HighwayStations-DGt6Gsr9.mjs} +2 -2
- package/dist/chunks/{component-HighwayWeatherForecast-CHJuEi1V.mjs → component-HighwayWeatherForecast-BQrNGF7m.mjs} +73 -130
- package/dist/chunks/{component-IframeWeb-B_RCXBBe.mjs → component-IframeWeb-vLIWvbJY.mjs} +1 -1
- package/dist/chunks/{component-ImageGeneration-5zGtULQL.mjs → component-ImageGeneration-BtM7MHcE.mjs} +1 -1
- package/dist/chunks/{component-IntroducePic-DPf4yYOb.mjs → component-IntroducePic-D3FSEuKX.mjs} +1 -1
- package/dist/chunks/{component-LithiumBatteryMiningArea-D7EdisGO.mjs → component-LithiumBatteryMiningArea-B5aUe7T0.mjs} +2 -2
- package/dist/chunks/{component-MapPopup-pePSM1pe.mjs → component-MapPopup-UmWWAPBE.mjs} +1 -1
- package/dist/chunks/{component-MaterialPreview-CvHyZKau.mjs → component-MaterialPreview-1Hyl4bjM.mjs} +2 -2
- package/dist/chunks/{component-PieLegend-C_KQgtb2.mjs → component-PieLegend-C0Acehix.mjs} +1 -1
- package/dist/chunks/component-PrecipitationRanking-C63n87WI.mjs +658 -0
- package/dist/chunks/{component-RadarChart-Dkkpc2ex.mjs → component-RadarChart-BXfMyPPi.mjs} +2 -2
- package/dist/chunks/{component-RadarLegend-Bmyx7Z82.mjs → component-RadarLegend-B2ajP_0M.mjs} +1 -1
- package/dist/chunks/{component-RadarShortTerm-DNpfS5yC.mjs → component-RadarShortTerm-BeGEjbHr.mjs} +4 -4
- package/dist/chunks/{component-RadarTime-CBk6AMiD.mjs → component-RadarTime-DGRztCiR.mjs} +2 -2
- package/dist/chunks/{component-RenderMarkdown-DFiXNere.mjs → component-RenderMarkdown-Dv-UVGrS.mjs} +2 -2
- package/dist/chunks/{component-ReservoirLiveAlarm-DCzzEJ4U.mjs → component-ReservoirLiveAlarm-CRgl_ztt.mjs} +3 -3
- package/dist/chunks/{component-ServiceMaterial-CXBQpfHK.mjs → component-ServiceMaterial-BTWYke8W.mjs} +2 -2
- package/dist/chunks/{component-ServiceMaterialsBtn-CPZzLZl_.mjs → component-ServiceMaterialsBtn-CTWGd-Is.mjs} +1 -1
- package/dist/chunks/component-StationDialog-Ck8zd52d.mjs +956 -0
- package/dist/chunks/component-StationList-BvoVJwAU.mjs +337 -0
- package/dist/chunks/{component-TimeBasedForecast-WVO8WY-h.mjs → component-TimeBasedForecast-BaPiit4s.mjs} +36 -36
- package/dist/chunks/{component-WarningLine-BCPm8Eve.mjs → component-WarningLine-CcFfVzar.mjs} +2 -2
- package/dist/chunks/{component-WarningSignal-C2RJ8N64.mjs → component-WarningSignal-C0CnTLVH.mjs} +3 -3
- package/dist/chunks/component-WeatherForecast-DWdNramU.mjs +229 -0
- package/dist/chunks/{component-YCDataMonitor-Dx7ASmGD.mjs → component-YCDataMonitor-DPMFqIFB.mjs} +108 -110
- package/dist/chunks/{component-YCDataService-mj2SUWBC.mjs → component-YCDataService-CD042ss7.mjs} +4 -4
- package/dist/chunks/{component-YCHome-CUcEZHuo.mjs → component-YCHome-DjpIzt-5.mjs} +4 -4
- package/dist/chunks/{component-YCHomeLegend-DK6WU8YQ.mjs → component-YCHomeLegend-B-nlePS2.mjs} +1 -1
- package/dist/chunks/{component-YCLoginNew-D2RInKrk.mjs → component-YCLoginNew-Bx2LoLJz.mjs} +3 -3
- package/dist/components/AiChat/AiChat.vue.d.ts +0 -2
- package/dist/components/Forecast72h/Forecast72h.vue.d.ts +50 -0
- package/dist/components/HdForecastProducts/HdForecastProducts.vue.d.ts +49 -0
- package/dist/components/HdHeatService/HdHeatService.vue.d.ts +56 -0
- package/dist/components/HdObservation/HdObservation.vue.d.ts +43 -0
- package/dist/components/HdPreSituation/HdPreSituation.vue.d.ts +61 -0
- package/dist/components/HdQxServiceEffects/HdQxServiceEffects.vue.d.ts +59 -0
- package/dist/components/HdRadarTime/HdRadarTime.vue.d.ts +71 -0
- package/dist/components/HdSeaCase/HdSeaCase.vue.d.ts +46 -0
- package/dist/components/HdServiceMarterial/HdServiceMarterial.vue.d.ts +54 -0
- package/dist/components/HdServiceRequirements/HdServiceRequirements.vue.d.ts +51 -0
- package/dist/components/HdStationTem/HdStationTem.vue.d.ts +69 -0
- package/dist/components/HdSuggestion/HdSuggestion.vue.d.ts +49 -0
- package/dist/components/HdThreeWeatherTrend/HdThreeWeatherTrend.vue.d.ts +71 -0
- package/dist/components/HdWaveForcast/HdWaveForcast.vue.d.ts +70 -0
- package/dist/components/HighWayEarlyWarningRed/Call.vue.d.ts +18 -0
- package/dist/components/HighWayEarlyWarningRed/HighWayEarlyWarningRed.vue.d.ts +5 -0
- package/dist/components/PrecipitationRanking/PrecipitationRanking.vue.d.ts +62 -0
- package/dist/components/StationDialog/StationDialog.vue.d.ts +90 -0
- package/dist/components/StationList/StationList.vue.d.ts +64 -0
- package/dist/components/WeatherForecast/WeatherForecast.vue.d.ts +9 -0
- package/dist/index.d.ts +18 -1
- package/dist/nxd-plugin.mjs +56 -40
- package/dist/styles/component-Forecast72h.css +1 -0
- package/dist/styles/component-HdForecastProducts.css +1 -0
- package/dist/styles/component-HdHeatService.css +1 -0
- package/dist/styles/component-HdObservation.css +1 -0
- package/dist/styles/component-HdPreSituation.css +1 -0
- package/dist/styles/component-HdRadarTime.css +1 -0
- package/dist/styles/component-HdSeaCase.css +1 -0
- package/dist/styles/component-HdServiceMarterial.css +1 -0
- package/dist/styles/component-HdServiceRequirements.css +1 -0
- package/dist/styles/component-HdStationTem.css +1 -0
- package/dist/styles/component-HdSuggestion.css +1 -0
- package/dist/styles/component-HdThreeWeatherTrend.css +1 -0
- package/dist/styles/component-HdWaveForcast.css +1 -0
- package/dist/styles/component-HighQuality.css +1 -1
- package/dist/styles/component-HighWayEarlyWarningRed.css +1 -1
- package/dist/styles/component-PrecipitationRanking.css +1 -0
- package/dist/styles/component-StationDialog.css +1 -0
- package/dist/styles/component-StationList.css +1 -0
- package/dist/styles/component-WeatherForecast.css +1 -1
- package/dist/styles/component-YCDataMonitor.css +1 -1
- package/dist/styles/component-YCLoginNew.css +1 -1
- package/package.json +2 -1
- 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,
|
|
614
|
-
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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(),
|
|
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 (
|
|
3728
|
-
if (
|
|
3729
|
-
var u =
|
|
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 (
|
|
3732
|
-
if (
|
|
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
|
|
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 (
|
|
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
|
|
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 =
|
|
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 (
|
|
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
|
|
3778
|
-
return !("cause" in Error.prototype) && "cause" in t && !j.call(t, "cause") ? "{ [" + String(t) + "] " + C.call(S.call("[cause]: " + y(t.cause),
|
|
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 (
|
|
3785
|
-
var
|
|
3784
|
+
if (ce(t)) {
|
|
3785
|
+
var Y = [];
|
|
3786
3786
|
return a && a.call(t, function(e, n) {
|
|
3787
|
-
|
|
3788
|
-
}), _e("Map", i.call(t),
|
|
3787
|
+
Y.push(y(n, t, !0) + " => " + y(e, t));
|
|
3788
|
+
}), _e("Map", i.call(t), Y, g);
|
|
3789
3789
|
}
|
|
3790
|
-
if (
|
|
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 (
|
|
3797
|
-
if (
|
|
3798
|
-
if (
|
|
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(
|
|
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
|
|
3822
|
+
return J(e) === "[object Array]" && V(e);
|
|
3823
3823
|
}
|
|
3824
3824
|
function te(e) {
|
|
3825
|
-
return
|
|
3825
|
+
return J(e) === "[object Date]" && V(e);
|
|
3826
3826
|
}
|
|
3827
3827
|
function ne(e) {
|
|
3828
|
-
return
|
|
3828
|
+
return J(e) === "[object RegExp]" && V(e);
|
|
3829
3829
|
}
|
|
3830
3830
|
function U(e) {
|
|
3831
|
-
return
|
|
3831
|
+
return J(e) === "[object Error]" && V(e);
|
|
3832
3832
|
}
|
|
3833
3833
|
function W(e) {
|
|
3834
|
-
return
|
|
3834
|
+
return J(e) === "[object String]" && V(e);
|
|
3835
3835
|
}
|
|
3836
3836
|
function re(e) {
|
|
3837
|
-
return
|
|
3837
|
+
return J(e) === "[object Number]" && V(e);
|
|
3838
3838
|
}
|
|
3839
3839
|
function G(e) {
|
|
3840
|
-
return
|
|
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
|
|
3858
|
+
var ie = Object.prototype.hasOwnProperty || function(e) {
|
|
3859
3859
|
return e in this;
|
|
3860
3860
|
};
|
|
3861
|
-
function
|
|
3862
|
-
return
|
|
3861
|
+
function ae(e, t) {
|
|
3862
|
+
return ie.call(e, t);
|
|
3863
3863
|
}
|
|
3864
|
-
function
|
|
3864
|
+
function J(e) {
|
|
3865
3865
|
return m.call(e);
|
|
3866
3866
|
}
|
|
3867
|
-
function
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
3945
|
+
return i.lastIndex = 0, B(v.call(v.call(e, i, "\\$1"), /[\x00-\x1f]/g, Y), "single", t);
|
|
3946
3946
|
}
|
|
3947
|
-
function
|
|
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 (
|
|
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] =
|
|
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)
|
|
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
|
-
})),
|
|
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
|
-
})),
|
|
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 }),
|
|
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),
|
|
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
|
|
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 (!
|
|
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,
|
|
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 !!(
|
|
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 (!
|
|
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,
|
|
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 (
|
|
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 (
|
|
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 (
|
|
7091
|
-
let i = G[t] ||
|
|
7092
|
-
if (!(
|
|
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]) && !(
|
|
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,
|
|
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),
|
|
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 (!
|
|
7148
|
+
if (!le && Ur(Si, d)) {
|
|
7149
7149
|
rt(o, e);
|
|
7150
7150
|
continue;
|
|
7151
7151
|
}
|
|
7152
|
-
if (
|
|
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
|
-
|
|
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] ||
|
|
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 && !
|
|
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
|
-
}),
|
|
7241
|
+
}), ue && ut(e), e;
|
|
7242
7242
|
if (ge) {
|
|
7243
|
-
if (
|
|
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 =
|
|
7248
|
-
return
|
|
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] : {}),
|
|
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,
|
|
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
|
|
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
|
|
7567
|
+
function ae(e, t) {
|
|
7568
7568
|
e.relevance === void 0 && (e.relevance = 1);
|
|
7569
7569
|
}
|
|
7570
|
-
var
|
|
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
|
-
},
|
|
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
|
-
],
|
|
7593
|
-
function
|
|
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,
|
|
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,
|
|
7601
|
+
r[n[0]] = [e, le(n[0], n[1])];
|
|
7602
7602
|
});
|
|
7603
7603
|
}
|
|
7604
7604
|
}
|
|
7605
|
-
function
|
|
7606
|
-
return t ? Number(t) :
|
|
7605
|
+
function le(e, t) {
|
|
7606
|
+
return t ? Number(t) : ue(e) ? 0 : 1;
|
|
7607
7607
|
}
|
|
7608
|
-
function
|
|
7609
|
-
return
|
|
7608
|
+
function ue(e) {
|
|
7609
|
+
return oe.includes(e.toLowerCase());
|
|
7610
7610
|
}
|
|
7611
|
-
var
|
|
7611
|
+
var de = {}, fe = (e) => {
|
|
7612
7612
|
console.error(e);
|
|
7613
|
-
},
|
|
7613
|
+
}, pe = (e, ...t) => {
|
|
7614
7614
|
console.log(`WARN: ${e}`, ...t);
|
|
7615
|
-
},
|
|
7616
|
-
|
|
7617
|
-
},
|
|
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
|
|
7626
|
-
if (typeof e.beginScope != "object" || e.beginScope === null) throw
|
|
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
|
|
7633
|
-
if (typeof e.endScope != "object" || e.endScope === null) throw
|
|
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
|
-
|
|
7706
|
+
ie,
|
|
7707
7707
|
ye,
|
|
7708
|
-
|
|
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
|
-
|
|
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 &&=
|
|
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 || (
|
|
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) : (
|
|
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
|
|
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(),
|
|
8008
|
+
k(), me("10.6.0", "initHighlighting() deprecated. Use highlightAll() now.");
|
|
8009
8009
|
};
|
|
8010
8010
|
function D() {
|
|
8011
|
-
k(),
|
|
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 (
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
|
|
23947
|
+
ie,
|
|
23948
23948
|
t
|
|
23949
23949
|
],
|
|
23950
23950
|
illegal: [/\[/, /%/]
|
|
23951
|
-
},
|
|
23951
|
+
}, J = {
|
|
23952
23952
|
match: [/\b(?:subscript|init[?!]?)/, /\s*(?=[<(])/],
|
|
23953
23953
|
className: { 1: "keyword" },
|
|
23954
23954
|
contains: [
|
|
23955
23955
|
q,
|
|
23956
|
-
|
|
23956
|
+
ie,
|
|
23957
23957
|
t
|
|
23958
23958
|
],
|
|
23959
23959
|
illegal: /\[|%/
|
|
23960
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
|
|
24056
|
-
|
|
24057
|
-
se,
|
|
24055
|
+
ae,
|
|
24056
|
+
J,
|
|
24058
24057
|
ce,
|
|
24059
24058
|
le,
|
|
24060
|
-
|
|
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 =
|
|
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
|
-
},
|
|
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()),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
26407
|
-
let e =
|
|
26409
|
+
}), L = o(() => {
|
|
26410
|
+
let e = I.value;
|
|
26408
26411
|
return e.length ? Object.keys(e[0]) : [];
|
|
26409
|
-
}),
|
|
26410
|
-
e &&
|
|
26411
|
-
},
|
|
26412
|
-
|
|
26413
|
-
},
|
|
26414
|
-
|
|
26415
|
-
},
|
|
26416
|
-
|
|
26417
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
26455
|
+
}, q = () => {
|
|
26453
26456
|
n.value.forEach((e) => {
|
|
26454
26457
|
if (e.type !== "echarts") return;
|
|
26455
|
-
let n =
|
|
26458
|
+
let n = ee.get(e.sort);
|
|
26456
26459
|
if (!n) return;
|
|
26457
|
-
let r =
|
|
26458
|
-
r || (r = j.init(n, void 0, { renderer: "canvas" }),
|
|
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(
|
|
26506
|
+
r.setOption(K(i, e.option || {}), !0);
|
|
26504
26507
|
});
|
|
26505
26508
|
}, ie = () => {
|
|
26506
|
-
|
|
26509
|
+
V.forEach((e) => e.dispose()), V.clear();
|
|
26507
26510
|
};
|
|
26508
26511
|
v(() => {
|
|
26509
|
-
|
|
26512
|
+
q(), window.addEventListener("resize", ae);
|
|
26510
26513
|
}), y(() => {
|
|
26511
|
-
ie(), window.removeEventListener("resize",
|
|
26514
|
+
ie(), window.removeEventListener("resize", ae);
|
|
26512
26515
|
});
|
|
26513
|
-
let
|
|
26514
|
-
|
|
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(
|
|
26522
|
+
ie(), setTimeout(q, 0);
|
|
26520
26523
|
}, { deep: !0 }), D(h, (e) => {
|
|
26521
|
-
e && setTimeout(
|
|
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
|
-
|
|
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
|
-
|
|
26550
|
-
|
|
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)(
|
|
26555
|
+
innerHTML: w(dc)(P.value)
|
|
26553
26556
|
}, null, 8, sl)])) : c("", !0),
|
|
26554
|
-
|
|
26555
|
-
src:
|
|
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
|
-
|
|
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
|
-
|
|
26562
|
-
src:
|
|
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) =>
|
|
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) =>
|
|
26586
|
+
onClick: (t) => ne(e)
|
|
26584
26587
|
}, [u("img", {
|
|
26585
|
-
src:
|
|
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) =>
|
|
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":
|
|
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) =>
|
|
26611
|
-
}, "下载", 8, zl)], 512), [[E,
|
|
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) =>
|
|
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(() => [
|
|
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:
|
|
26636
|
+
onClick: U
|
|
26638
26637
|
}, "×"),
|
|
26639
26638
|
u("img", {
|
|
26640
|
-
src:
|
|
26641
|
-
alt:
|
|
26642
|
-
}, null, 8,
|
|
26643
|
-
|
|
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
|
-
},
|
|
26706
|
+
}, $l = { class: "AiChat__headerActions" }, eu = ["title"], tu = {
|
|
26708
26707
|
key: 0,
|
|
26709
26708
|
class: "AiChat__message AiChat__message--user"
|
|
26710
|
-
},
|
|
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
|
-
},
|
|
26712
|
+
}, ou = { class: "AiChat__content" }, su = { class: "AiChat__bubble" }, cu = {
|
|
26714
26713
|
key: 1,
|
|
26715
26714
|
class: "AiChat__typing"
|
|
26716
|
-
},
|
|
26715
|
+
}, lu = {
|
|
26717
26716
|
key: 0,
|
|
26718
26717
|
class: "AiChat__meta"
|
|
26719
|
-
},
|
|
26718
|
+
}, uu = { class: "AiChat__time" }, du = {
|
|
26720
26719
|
key: 0,
|
|
26721
26720
|
class: "AiChat__actions"
|
|
26722
|
-
},
|
|
26721
|
+
}, fu = {
|
|
26723
26722
|
key: 1,
|
|
26724
26723
|
class: "AiChat__empty"
|
|
26725
|
-
},
|
|
26724
|
+
}, pu = {
|
|
26726
26725
|
key: 2,
|
|
26727
26726
|
class: "AiChat__contentWrapper"
|
|
26728
|
-
},
|
|
26727
|
+
}, mu = { class: "AiChat__headerActions" }, hu = {
|
|
26729
26728
|
key: 0,
|
|
26730
26729
|
class: "AiChat__message AiChat__message--user"
|
|
26731
|
-
},
|
|
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
|
-
},
|
|
26733
|
+
}, bu = { class: "AiChat__content" }, xu = { class: "AiChat__bubble" }, Su = {
|
|
26735
26734
|
key: 1,
|
|
26736
26735
|
class: "AiChat__typing"
|
|
26737
|
-
},
|
|
26736
|
+
}, Cu = {
|
|
26738
26737
|
key: 0,
|
|
26739
26738
|
class: "AiChat__meta"
|
|
26740
|
-
},
|
|
26739
|
+
}, wu = { class: "AiChat__time" }, Tu = {
|
|
26741
26740
|
key: 0,
|
|
26742
26741
|
class: "AiChat__actions"
|
|
26743
|
-
},
|
|
26742
|
+
}, Eu = ["onClick"], Du = {
|
|
26744
26743
|
key: 0,
|
|
26745
26744
|
class: "AiChat__typeTabDivider"
|
|
26746
|
-
},
|
|
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
|
|
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
|
-
},
|
|
26814
|
-
let e =
|
|
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
|
-
}),
|
|
26820
|
-
D(
|
|
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
|
-
|
|
26816
|
+
Oe();
|
|
26824
26817
|
});
|
|
26825
|
-
let
|
|
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
|
-
},
|
|
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:
|
|
26838
|
-
}, L.value = null, ee.value = "", U = "", z.value = "",
|
|
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 &&
|
|
26838
|
+
a.stream && be(n) ? Ce(n) : a.stream && ye(n) ? we(n) : ve(t);
|
|
26846
26839
|
return;
|
|
26847
26840
|
}
|
|
26848
|
-
let t =
|
|
26849
|
-
if (
|
|
26850
|
-
let t =
|
|
26851
|
-
a.stream &&
|
|
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
|
-
|
|
26858
|
-
|
|
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
|
|
26862
|
-
a.stream &&
|
|
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:
|
|
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
|
|
26871
|
+
V.value || (R.value = !1), await ke();
|
|
26870
26872
|
}
|
|
26871
26873
|
}
|
|
26872
|
-
},
|
|
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
|
|
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:
|
|
26931
|
+
time: Ae()
|
|
26892
26932
|
}, ne.post(`${r}/userCenter/bot/chat`, i, {
|
|
26893
26933
|
headers: { "aiflowy-token": W.value || "" },
|
|
26894
|
-
onMessage:
|
|
26895
|
-
onError:
|
|
26896
|
-
onFinished:
|
|
26934
|
+
onMessage: de,
|
|
26935
|
+
onError: fe,
|
|
26936
|
+
onFinished: pe
|
|
26897
26937
|
});
|
|
26898
|
-
},
|
|
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
|
-
|
|
26948
|
+
me();
|
|
26909
26949
|
return;
|
|
26910
26950
|
}
|
|
26911
26951
|
if (e.event === "error") {
|
|
26912
|
-
|
|
26952
|
+
Y({
|
|
26913
26953
|
content: t?.payload?.message || "未知错误",
|
|
26914
26954
|
thinkingStatus: "error"
|
|
26915
|
-
}),
|
|
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 &&
|
|
26960
|
+
e.length && Y({ resources: [...L.value?.resources || [], ...e] });
|
|
26921
26961
|
return;
|
|
26922
26962
|
}
|
|
26923
26963
|
if (t?.domain === "AUDIO") {
|
|
26924
|
-
|
|
26964
|
+
Y({ audioUrl: t.payload?.audioUrl });
|
|
26925
26965
|
return;
|
|
26926
26966
|
}
|
|
26927
26967
|
if (t?.domain === "SYSTEM" && t.payload?.code === "SYSTEM_ERROR") {
|
|
26928
|
-
|
|
26968
|
+
Y({
|
|
26929
26969
|
content: t.payload.message,
|
|
26930
26970
|
thinkingStatus: "error"
|
|
26931
|
-
}),
|
|
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,
|
|
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
|
-
|
|
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
|
-
},
|
|
27005
|
+
}, Y({ tools: e });
|
|
26966
27006
|
return;
|
|
26967
27007
|
}
|
|
26968
27008
|
if (t.type === "THINKING") {
|
|
26969
|
-
|
|
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
|
-
|
|
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 || "",
|
|
27021
|
+
U += n || "", Y({ content: U });
|
|
26982
27022
|
}
|
|
26983
|
-
},
|
|
26984
|
-
console.error("SSE 错误:", e),
|
|
27023
|
+
}, fe = (e) => {
|
|
27024
|
+
console.error("SSE 错误:", e), Y({
|
|
26985
27025
|
thinkingStatus: "error",
|
|
26986
27026
|
content: U || "请求失败,请稍后重试"
|
|
26987
|
-
}),
|
|
26988
|
-
},
|
|
26989
|
-
|
|
26990
|
-
},
|
|
26991
|
-
V.value = !1, R.value = !1,
|
|
26992
|
-
},
|
|
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:
|
|
26997
|
-
},
|
|
26998
|
-
},
|
|
26999
|
-
e.key === "Enter" && !e.shiftKey && (e.preventDefault(),
|
|
27000
|
-
},
|
|
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
|
-
},
|
|
27042
|
+
}, _e = async () => {
|
|
27003
27043
|
if (!a.mockData) {
|
|
27004
|
-
|
|
27044
|
+
ae.value = Zl;
|
|
27005
27045
|
return;
|
|
27006
27046
|
}
|
|
27007
27047
|
if (typeof a.mockData == "string") try {
|
|
27008
|
-
|
|
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),
|
|
27050
|
+
f("error", e), ae.value = Zl;
|
|
27011
27051
|
}
|
|
27012
|
-
else
|
|
27052
|
+
else ae.value = a.mockData;
|
|
27013
27053
|
};
|
|
27014
27054
|
v(async () => {
|
|
27015
|
-
await
|
|
27016
|
-
}), D(() => a.mockData,
|
|
27055
|
+
await G(), _e();
|
|
27056
|
+
}), D(() => a.mockData, _e), D(() => a.appKey, (e) => {
|
|
27017
27057
|
W.value ||= e || "";
|
|
27018
27058
|
});
|
|
27019
|
-
let
|
|
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:
|
|
27068
|
+
time: Ae()
|
|
27029
27069
|
};
|
|
27030
|
-
},
|
|
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\n` : e.type === "echarts" ? "\n(图表已生成)\n" : "";
|
|
27041
|
-
},
|
|
27042
|
-
|
|
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 =
|
|
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:
|
|
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:
|
|
27123
|
+
time: Ae()
|
|
27084
27124
|
} : L.value = {
|
|
27085
27125
|
...L.value,
|
|
27086
27126
|
content: (L.value.content || "") + i,
|
|
27087
|
-
time:
|
|
27088
|
-
},
|
|
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++,
|
|
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:
|
|
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:
|
|
27173
|
+
time: Ae()
|
|
27134
27174
|
};
|
|
27135
27175
|
}
|
|
27136
27176
|
};
|
|
27137
27177
|
H = setTimeout(v, 300);
|
|
27138
|
-
},
|
|
27139
|
-
let t =
|
|
27178
|
+
}, we = (e) => {
|
|
27179
|
+
let t = xe(e);
|
|
27140
27180
|
if (!t) {
|
|
27141
|
-
|
|
27181
|
+
ve({
|
|
27142
27182
|
type: B.value,
|
|
27143
27183
|
blocks: e
|
|
27144
27184
|
});
|
|
27145
27185
|
return;
|
|
27146
27186
|
}
|
|
27147
|
-
|
|
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,
|
|
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:
|
|
27168
|
-
},
|
|
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
|
-
},
|
|
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:
|
|
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
|
-
|
|
27196
|
-
},
|
|
27235
|
+
ke();
|
|
27236
|
+
}, Ee = () => {
|
|
27197
27237
|
H &&= (clearTimeout(H), null);
|
|
27198
|
-
},
|
|
27199
|
-
let n =
|
|
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
|
-
},
|
|
27205
|
-
let e =
|
|
27244
|
+
}, Oe = () => {
|
|
27245
|
+
let e = ie.value;
|
|
27206
27246
|
e && (e.style.height = "auto", e.style.height = `${Math.min(e.scrollHeight, 96)}px`);
|
|
27207
|
-
},
|
|
27247
|
+
}, ke = async () => {
|
|
27208
27248
|
await h();
|
|
27209
|
-
let e =
|
|
27249
|
+
let e = q.value;
|
|
27210
27250
|
e && (e.scrollTop = e.scrollHeight);
|
|
27211
|
-
},
|
|
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
|
-
},
|
|
27215
|
-
|
|
27216
|
-
},
|
|
27217
|
-
|
|
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:
|
|
27260
|
+
setResponse: ve,
|
|
27221
27261
|
setLoading: (e) => {
|
|
27222
27262
|
R.value = e;
|
|
27223
27263
|
},
|
|
27224
|
-
appendStreamChunk:
|
|
27264
|
+
appendStreamChunk: Te,
|
|
27225
27265
|
setFullscreen: (e) => {
|
|
27226
27266
|
m.value = e;
|
|
27227
27267
|
},
|
|
27228
|
-
clear:
|
|
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",
|
|
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,
|
|
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:
|
|
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:
|
|
27301
|
+
ref: q,
|
|
27262
27302
|
class: "AiChat__body"
|
|
27263
|
-
}, [I.value || L.value ? (b(), l(i, { key: 0 }, [I.value ? (b(), l("div",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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:
|
|
27400
|
+
onClick: Me,
|
|
27361
27401
|
onPointerdown: n[4] ||= A(() => {}, ["stop"])
|
|
27362
27402
|
}, "× ", 32)])], 32), u("div", {
|
|
27363
27403
|
ref_key: "bodyRef",
|
|
27364
|
-
ref:
|
|
27404
|
+
ref: q,
|
|
27365
27405
|
class: "AiChat__contentPanel"
|
|
27366
|
-
}, [I.value || L.value ? (b(), l(i, { key: 0 }, [I.value ? (b(), l("div",
|
|
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",
|
|
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",
|
|
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(
|
|
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) =>
|
|
27442
|
-
}, C(e.label), 11,
|
|
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:
|
|
27484
|
+
ref: ie,
|
|
27445
27485
|
"onUpdate:modelValue": n[7] ||= (e) => z.value = e,
|
|
27446
27486
|
class: "AiChat__textarea",
|
|
27447
|
-
placeholder:
|
|
27448
|
-
onKeydown:
|
|
27449
|
-
onInput:
|
|
27487
|
+
placeholder: oe.value,
|
|
27488
|
+
onKeydown: he,
|
|
27489
|
+
onInput: Oe,
|
|
27450
27490
|
onPointerdown: n[8] ||= A(() => {}, ["stop"])
|
|
27451
|
-
}, null, 40,
|
|
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:
|
|
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,
|
|
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,
|
|
27508
|
+
export { St as a, ht as i, Ct as n, bt as o, xt as r, Mu as t };
|