@scienjoy/sj-ai-plus 1.0.0 → 1.0.1

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/README.md CHANGED
@@ -1,18 +1 @@
1
- # Vue 3 + TypeScript + Vite
2
-
3
- This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
4
-
5
- ## Recommended IDE Setup
6
-
7
- - [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
8
-
9
- ## Type Support For `.vue` Imports in TS
10
-
11
- TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
12
-
13
- If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
14
-
15
- 1. Disable the built-in TypeScript Extension
16
- 1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette
17
- 2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
18
- 2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
1
+ SJ AI组件库
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@scienjoy/sj-ai-plus",
3
3
  "private": false,
4
- "version": "1.0.0",
4
+ "version": "1.0.1",
5
5
  "type": "module",
6
6
  "main": "./ui/lib/packages/components/index.ts",
7
7
  "module": "./ui/es/packages/components/index.ts",
@@ -1,7 +1,7 @@
1
1
  import t from "./index.vue2.ts";
2
2
  /* empty css */
3
- import o from "../../../../../_virtual/_plugin-vue_export-helper.ts";
4
- const m = /* @__PURE__ */ o(t, [["__scopeId", "data-v-bcb94941"]]);
3
+ import a from "../../../../../_virtual/_plugin-vue_export-helper.ts";
4
+ const m = /* @__PURE__ */ a(t, [["__scopeId", "data-v-7ad3c1b0"]]);
5
5
  export {
6
6
  m as default
7
7
  };
@@ -1,22 +1,22 @@
1
1
  /* empty css */
2
- import { defineComponent as Se, ref as d, reactive as Xe, computed as Re, watch as ne, nextTick as m, onMounted as Ye, onUnmounted as Be, resolveComponent as Oe, resolveDirective as je, openBlock as $, createElementBlock as A, normalizeStyle as Ce, withDirectives as h, createElementVNode as n, vShow as w, normalizeClass as Te, toDisplayString as oe, createVNode as E, withModifiers as ae, withCtx as ie, renderSlot as se, createCommentVNode as N, createBlock as Ie, Teleport as ze } from "vue";
3
- import ke from "../../utils/api.ts";
4
- import xe from "../../utils/utils.ts";
2
+ import { defineComponent as Se, ref as d, reactive as Ye, computed as Te, watch as oe, nextTick as m, onMounted as Be, onUnmounted as Ie, resolveComponent as Oe, resolveDirective as je, openBlock as P, createElementBlock as A, normalizeStyle as ke, withDirectives as f, createElementVNode as n, vShow as w, normalizeClass as xe, toDisplayString as ae, createVNode as L, withModifiers as ie, withCtx as le, renderSlot as se, createCommentVNode as G, createBlock as Ue, Teleport as ze } from "vue";
3
+ import ce from "../../utils/api.ts";
4
+ import Ee from "../../utils/utils.ts";
5
5
  import Fe from "../../utils/videoBackgroundRemoval.ts";
6
- import { ElIcon as Ue } from "../../../../../node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/icon/index.ts";
7
- const Ae = { class: "digital-human-assistant" }, Ne = { class: "placeholder left-placeholder" }, Ge = { class: "placeholder right-placeholder" }, Je = { class: "window-header-left" }, qe = { class: "window-title-text" }, Ke = { class: "window-header-btns" }, Qe = { class: "disconnect-btn" }, Ze = {
6
+ import { ElIcon as Ne } from "../../../../../node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/icon/index.ts";
7
+ const Ae = { class: "digital-human-assistant" }, Ge = { class: "placeholder left-placeholder" }, Je = { class: "placeholder right-placeholder" }, qe = { class: "window-header-left" }, Ke = { class: "window-title-text" }, Qe = { class: "window-header-btns" }, Ze = { class: "disconnect-btn" }, et = {
8
8
  class: "connect-btn",
9
9
  disabled: ""
10
- }, et = { class: "connect-btn" }, tt = { class: "window-content" }, nt = { class: "main-content-inner" }, ot = { class: "window-header-left" }, at = { class: "window-title-text" }, it = { class: "window-header-btns" }, st = { class: "disconnect-btn" }, lt = {
10
+ }, tt = { class: "connect-btn" }, nt = { class: "window-content" }, ot = { class: "main-content-inner" }, at = { class: "window-header-left" }, it = { class: "window-title-text" }, lt = { class: "window-header-btns" }, st = { class: "disconnect-btn" }, ct = {
11
11
  class: "connect-btn",
12
12
  disabled: ""
13
- }, dt = { class: "connect-btn" }, ct = { class: "window-content" }, ut = { class: "window-header-left" }, rt = { class: "window-title-text" }, vt = { class: "window-header-btns" }, ft = { class: "disconnect-btn" }, ht = {
13
+ }, dt = { class: "connect-btn" }, ut = { class: "window-content" }, rt = { class: "window-header-left" }, vt = { class: "window-title-text" }, ht = { class: "window-header-btns" }, ft = { class: "disconnect-btn" }, wt = {
14
14
  class: "connect-btn",
15
15
  disabled: ""
16
- }, wt = { class: "connect-btn" }, gt = { class: "window-content" }, mt = Se({
16
+ }, gt = { class: "connect-btn" }, mt = { class: "window-content" }, pt = Se({
17
17
  name: "SjDigitalHumanAssistant"
18
- }), Tt = /* @__PURE__ */ Se({
19
- ...mt,
18
+ }), kt = /* @__PURE__ */ Se({
19
+ ...pt,
20
20
  props: {
21
21
  windowWidth: { default: 320 },
22
22
  windowHeight: { default: 467 },
@@ -32,123 +32,134 @@ const Ae = { class: "digital-human-assistant" }, Ne = { class: "placeholder left
32
32
  maxReconnectTimes: { default: 10 },
33
33
  baseUrl: { default: "" }
34
34
  },
35
- setup(P, { expose: Ee }) {
36
- const o = P, le = d(null), de = d(null), c = d(null), a = d(null), p = Fe(), ce = d(null), ue = d(null), re = d(null), V = d(null), L = d(!1), u = d(!1), f = d(!1), ve = d(!0), X = d(!1), r = Xe({
35
+ setup(V, { expose: Le }) {
36
+ const o = V, de = d(null), ue = d(null), u = d(null), a = d(null), p = Fe(), re = d(null), ve = d(null), he = d(null), X = d(null), H = d(!1), s = d(!1), h = d(!1), fe = d(!0), Y = d(!1), r = Ye({
37
37
  x: 0,
38
38
  y: 0,
39
39
  offsetX: 0,
40
40
  offsetY: 0
41
- }), v = d(o.defaultStickSide), Y = d(!1), R = d(!1), M = d(!1), G = d(!1), J = d(!1);
42
- let s = null, C = "";
43
- const B = d(null), b = d(0), O = d(!1), W = d(!1), Le = Re(() => ({
41
+ }), v = d(o.defaultStickSide), B = d(!1), C = d(!1), M = d(!1), J = d(!1), q = d(!1);
42
+ let l = null, b = "";
43
+ const I = d(null), y = d(0), O = d(!1), W = d(!1), He = Te(() => ({
44
44
  "--sidebar-width": o.sidebarWidth,
45
45
  "--window-width": `${o.windowWidth}px`,
46
46
  "--window-height": `${o.windowHeight}px`
47
- })), Me = Re(() => ({
47
+ })), Me = Te(() => ({
48
48
  left: `${r.x}px`,
49
49
  top: `${r.y}px`,
50
50
  width: `${o.windowWidth}px`,
51
51
  height: `${o.windowHeight}px`,
52
- zIndex: Y.value || M.value ? 9999 : 1e3
52
+ zIndex: B.value || M.value ? 9999 : 1e3
53
53
  })), We = (t) => {
54
- !t && c.value ? (O.value = !1, b.value = 0, be()) : t ? (O.value = !0, Pe()) : console.warn("自动连接超时:video元素未挂载"), ve.value = t;
54
+ !t && u.value ? (O.value = !1, y.value = 0, _e()) : t ? (O.value = !0, Ve()) : console.warn("自动连接超时:video元素未挂载"), fe.value = t;
55
55
  }, j = (t) => {
56
- We(!t), X.value = t, t && u.value && m(() => g());
57
- }, He = () => {
56
+ We(!t), Y.value = t, t && s.value && m(() => g());
57
+ }, De = () => {
58
58
  j(!0);
59
- }, fe = () => {
59
+ }, we = () => {
60
60
  switch (v.value) {
61
61
  case "left":
62
- return ue.value ?? V.value;
62
+ return ve.value ?? X.value;
63
63
  case "right":
64
- return re.value ?? V.value;
64
+ return he.value ?? X.value;
65
65
  default:
66
- return ce.value ?? V.value;
66
+ return re.value ?? X.value;
67
67
  }
68
- }, x = () => de.value?.getBoundingClientRect() || {
68
+ }, x = () => ue.value?.getBoundingClientRect() || {
69
69
  width: 0,
70
70
  height: 0,
71
71
  left: 0,
72
72
  right: 0,
73
73
  top: 0,
74
74
  bottom: 0
75
- }, he = () => le.value?.getBoundingClientRect() || {
75
+ }, ge = () => de.value?.getBoundingClientRect() || {
76
76
  width: 0,
77
77
  height: 0,
78
78
  left: 0,
79
79
  right: 0,
80
80
  top: 0,
81
81
  bottom: 0
82
- }, q = (t, e) => {
82
+ }, K = (t, e) => {
83
83
  const i = x();
84
84
  return {
85
85
  x: Math.max(0, Math.min(t, i.width - o.windowWidth)),
86
86
  y: Math.max(0, Math.min(e, i.height - o.windowHeight))
87
87
  };
88
- }, we = () => {
89
- const t = x(), e = t.width - o.windowWidth - 10, i = t.height - o.windowHeight - 10;
90
- return q(e, i);
91
- }, ge = () => {
92
- const t = x(), e = he();
93
- G.value = e.left <= t.left + o.edgeThreshold, J.value = e.right >= t.right - o.edgeThreshold;
94
88
  }, me = () => {
95
- const t = x(), e = he(), i = e.left <= t.left + o.edgeThreshold ? "left" : e.right >= t.right - o.edgeThreshold ? "right" : "";
96
- i !== v.value && (v.value = i, c.value && (c.value.volume = i ? 0.5 : 1), H(), g()), G.value = J.value = !1;
97
- }, De = (t) => {
98
- Y.value = !0, r.offsetX = t.clientX - r.x, r.offsetY = t.clientY - r.y, document.addEventListener("mousemove", K), document.addEventListener("mouseup", Q);
99
- }, K = (t) => {
100
- if (!Y.value) return;
101
- const e = x(), { x: i, y: l } = q(t.clientX - e.left - r.offsetX, t.clientY - e.top - r.offsetY);
102
- r.x = i, r.y = l, ge();
103
- }, Q = () => {
104
- me(), Y.value = !1, document.removeEventListener("mousemove", K), document.removeEventListener("mouseup", Q);
105
- }, pe = (t, e) => {
106
- R.value = !0, r.offsetX = e.clientX - (e.clientX - o.windowWidth / 2), r.offsetY = e.clientY - (e.clientY - 20), document.addEventListener("mousemove", I);
107
- }, I = (t) => {
108
- if (!R.value) return;
89
+ const t = x(), e = t.width - o.windowWidth - 10, i = t.height - o.windowHeight - 10;
90
+ return K(e, i);
91
+ }, pe = () => {
92
+ const t = x(), e = ge();
93
+ J.value = e.left <= t.left + o.edgeThreshold, q.value = e.right >= t.right - o.edgeThreshold;
94
+ }, be = () => {
95
+ const t = x(), e = ge(), i = e.left <= t.left + o.edgeThreshold ? "left" : e.right >= t.right - o.edgeThreshold ? "right" : "";
96
+ i !== v.value && (v.value = i, u.value && (u.value.volume = i ? 0.5 : 1), D(), g()), J.value = q.value = !1;
97
+ }, $e = (t) => {
98
+ B.value = !0, r.offsetX = t.clientX - r.x, r.offsetY = t.clientY - r.y, document.addEventListener("mousemove", Q), document.addEventListener("mouseup", Z);
99
+ }, Q = (t) => {
100
+ if (!B.value) return;
101
+ const e = x(), { x: i, y: c } = K(t.clientX - e.left - r.offsetX, t.clientY - e.top - r.offsetY);
102
+ r.x = i, r.y = c, pe();
103
+ }, Z = () => {
104
+ be(), B.value = !1, document.removeEventListener("mousemove", Q), document.removeEventListener("mouseup", Z);
105
+ }, ye = (t, e) => {
106
+ C.value = !0, r.offsetX = e.clientX - (e.clientX - o.windowWidth / 2), r.offsetY = e.clientY - (e.clientY - 20), document.addEventListener("mousemove", U);
107
+ }, U = (t) => {
108
+ if (!C.value) return;
109
109
  const e = Math.abs(t.movementX), i = Math.abs(t.movementY);
110
- (e > o.dragThreshold || i > o.dragThreshold) && (M.value = !0, v.value = "", document.removeEventListener("mousemove", I), document.addEventListener("mousemove", Z), document.addEventListener("mouseup", ee));
111
- }, Z = (t) => {
110
+ (e > o.dragThreshold || i > o.dragThreshold) && (M.value = !0, v.value = "", document.removeEventListener("mousemove", U), document.addEventListener("mousemove", ee), document.addEventListener("mouseup", te));
111
+ }, ee = (t) => {
112
112
  if (!M.value) return;
113
- const e = x(), { x: i, y: l } = q(t.clientX - e.left - r.offsetX, t.clientY - e.top - r.offsetY);
114
- r.x = i, r.y = l, ge();
115
- }, ee = () => {
116
- me(), R.value = M.value = !1, document.removeEventListener("mousemove", Z), document.removeEventListener("mouseup", ee);
113
+ const e = x(), { x: i, y: c } = K(t.clientX - e.left - r.offsetX, t.clientY - e.top - r.offsetY);
114
+ r.x = i, r.y = c, pe();
115
+ }, te = () => {
116
+ be(), C.value = M.value = !1, document.removeEventListener("mousemove", ee), document.removeEventListener("mouseup", te);
117
117
  }, z = () => {
118
- R.value && !M.value && (R.value = !1, document.removeEventListener("mousemove", I));
119
- }, te = async (t) => {
120
- if (!u.value || !C)
118
+ C.value && !M.value && (C.value = !1, document.removeEventListener("mousemove", U));
119
+ }, ne = async (t) => {
120
+ if (!s.value || !b)
121
121
  return;
122
+ await E(), console.log("已打断当前对话,准备播放新文本:", t);
122
123
  const e = {
123
124
  text: t,
124
125
  type: "echo",
125
126
  interrupt: !0,
126
- sessionid: parseInt(C)
127
+ sessionid: parseInt(b)
127
128
  };
128
- ke.digitalHumanChat(o.baseUrl, e).then((i) => {
129
+ ce.digitalHumanChat(o.baseUrl, e).then((i) => {
129
130
  i && Number(i.code);
130
131
  }).catch((i) => {
131
132
  console.log("api.digitalHumanChat:", i);
132
133
  });
134
+ }, E = async () => {
135
+ if (!s.value || !b) return;
136
+ const t = {
137
+ sessionid: parseInt(b)
138
+ };
139
+ ce.digitalHumanInterruptTalk(o.baseUrl, t).then((e) => {
140
+ e && Number(e.code) === 0 && console.log("数字人对话已成功打断");
141
+ }).catch((e) => {
142
+ console.log("api.digitalHumanInterruptTalk:", e);
143
+ });
133
144
  }, S = () => {
134
- B.value && (clearTimeout(B.value), B.value = null, console.log("重连定时器已清除")), W.value = !1;
135
- }, H = (t = !1) => {
145
+ I.value && (clearTimeout(I.value), I.value = null, console.log("重连定时器已清除")), W.value = !1;
146
+ }, D = (t = !1) => {
136
147
  if (!a.value) return;
137
148
  t || p.stopProcessing();
138
149
  const e = a.value.getContext("2d");
139
150
  if (e && (e.clearRect(0, 0, a.value.width, a.value.height), !t)) {
140
- const i = a.value.width, l = a.value.height;
141
- a.value.width = i, a.value.height = l;
151
+ const i = a.value.width, c = a.value.height;
152
+ a.value.width = i, a.value.height = c;
142
153
  }
143
154
  a.value && !t && (a.value.style.width = "", a.value.style.height = "", v.value === "" && (a.value.style.marginLeft = "", a.value.style.marginTop = ""));
144
155
  }, g = async (t = !1) => {
145
- if (!c.value || !a.value || !L.value || !u.value) return;
156
+ if (!u.value || !a.value || !H.value || !s.value) return;
146
157
  await m();
147
- const e = c.value.videoWidth || o.windowWidth, i = c.value.videoHeight || o.windowHeight, l = e / i;
148
- console.log("视频原始宽高比:", l, "尺寸:", e, i);
149
- let y;
150
- const _ = fe();
151
- _ ? y = _.getBoundingClientRect() : y = {
158
+ const e = u.value.videoWidth || o.windowWidth, i = u.value.videoHeight || o.windowHeight, c = e / i;
159
+ console.log("视频原始宽高比:", c, "尺寸:", e, i);
160
+ let _;
161
+ const R = we();
162
+ R ? _ = R.getBoundingClientRect() : _ = {
152
163
  width: v.value ? 0 : o.windowWidth,
153
164
  height: v.value ? 0 : o.windowHeight,
154
165
  left: 0,
@@ -156,310 +167,320 @@ const Ae = { class: "digital-human-assistant" }, Ne = { class: "placeholder left
156
167
  right: 0,
157
168
  bottom: 0
158
169
  };
159
- const F = y.width || (v.value ? 300 : o.windowWidth), U = y.height || (v.value ? window.innerHeight - 40 : o.windowHeight), Ve = F / U;
170
+ const F = _.width || (v.value ? 300 : o.windowWidth), N = _.height || (v.value ? window.innerHeight - 40 : o.windowHeight), Xe = F / N;
160
171
  let T, k;
161
- Ve > l ? (k = U, T = k * l) : (T = F, k = T / l);
162
- const _e = window.devicePixelRatio || 1;
163
- a.value.width = Math.floor(T * _e), a.value.height = Math.floor(k * _e), a.value.style.display = "block", a.value.style.objectFit = "contain", v.value === "" ? (a.value.style.width = `${T}px`, a.value.style.height = `${k}px`, a.value.style.marginLeft = `${(F - T) / 2}px`, a.value.style.marginTop = `${(U - k) / 2}px`) : (a.value.style.width = "100%", a.value.style.height = "100%", a.value.style.marginLeft = "0", a.value.style.marginTop = "0"), console.log("Canvas适配完成:", {
172
+ Xe > c ? (k = N, T = k * c) : (T = F, k = T / c);
173
+ const Ce = window.devicePixelRatio || 1;
174
+ a.value.width = Math.floor(T * Ce), a.value.height = Math.floor(k * Ce), a.value.style.display = "block", a.value.style.objectFit = "contain", v.value === "" ? (a.value.style.width = `${T}px`, a.value.style.height = `${k}px`, a.value.style.marginLeft = `${(F - T) / 2}px`, a.value.style.marginTop = `${(N - k) / 2}px`) : (a.value.style.width = "100%", a.value.style.height = "100%", a.value.style.marginLeft = "0", a.value.style.marginTop = "0"), console.log("Canvas适配完成:", {
164
175
  mode: v.value || "浮动",
165
- container: { width: F, height: U },
176
+ container: { width: F, height: N },
166
177
  canvas: { drawWidth: T, drawHeight: k, physicalWidth: a.value.width, physicalHeight: a.value.height }
167
- }), t || (p.videoRef.value = c.value, p.canvasRef.value = a.value, await p.processVideo());
168
- }, D = () => {
169
- if (O.value || u.value || f.value || W.value) {
178
+ }), t || (p.videoRef.value = u.value, p.canvasRef.value = a.value, await p.processVideo());
179
+ }, $ = () => {
180
+ if (O.value || s.value || h.value || W.value) {
170
181
  console.log("重连条件不满足:手动断开/已连接/正在连接/正在冷却");
171
182
  return;
172
183
  }
173
- if (o.maxReconnectTimes !== -1 && b.value >= o.maxReconnectTimes) {
174
- console.warn(`数字人重连已达最大次数(${o.maxReconnectTimes}),停止重连`), S(), xe.funcElMessageShowCtrl(`数字人连接失败,已尝试${o.maxReconnectTimes}次重连,请重试!`), b.value = 0;
184
+ if (E().then(() => {
185
+ console.log("重连前已打断当前对话");
186
+ }), o.maxReconnectTimes !== -1 && y.value >= o.maxReconnectTimes) {
187
+ console.warn(`数字人重连已达最大次数(${o.maxReconnectTimes}),停止重连`), S(), Ee.funcElMessageShowCtrl(`数字人连接失败,已尝试${o.maxReconnectTimes}次重连,请重试!`), y.value = 0;
175
188
  return;
176
189
  }
177
- W.value = !0, B.value = setTimeout(() => {
190
+ W.value = !0, I.value = setTimeout(() => {
178
191
  try {
179
- b.value++, console.log(`数字人第${b.value}次重连... (最大次数:${o.maxReconnectTimes})`), be();
192
+ y.value++, console.log(`数字人第${y.value}次重连... (最大次数:${o.maxReconnectTimes})`), _e();
180
193
  } finally {
181
194
  W.value = !1;
182
195
  }
183
196
  }, o.reconnectInterval * 1e3);
184
- }, $e = async () => {
185
- if (s)
197
+ }, Pe = async () => {
198
+ if (l)
186
199
  try {
187
- s.addTransceiver("video", { direction: "recvonly" }), s.addTransceiver("audio", { direction: "recvonly" });
188
- const t = await s.createOffer();
189
- await s.setLocalDescription(t), await new Promise((l) => {
190
- if (s?.iceGatheringState === "complete")
191
- l();
200
+ l.addTransceiver("video", { direction: "recvonly" }), l.addTransceiver("audio", { direction: "recvonly" });
201
+ const t = await l.createOffer();
202
+ await l.setLocalDescription(t), await new Promise((c) => {
203
+ if (l?.iceGatheringState === "complete")
204
+ c();
192
205
  else {
193
- const y = () => {
194
- s?.iceGatheringState === "complete" && (s?.removeEventListener("icegatheringstatechange", y), l());
206
+ const _ = () => {
207
+ l?.iceGatheringState === "complete" && (l?.removeEventListener("icegatheringstatechange", _), c());
195
208
  };
196
- s?.addEventListener("icegatheringstatechange", y);
209
+ l?.addEventListener("icegatheringstatechange", _);
197
210
  }
198
211
  });
199
- const e = s.localDescription, i = {
212
+ const e = l.localDescription, i = {
200
213
  sdp: e.sdp,
201
214
  type: e.type
202
215
  };
203
- ke.digitalHumanOffer(o.baseUrl, i).then((l) => {
204
- l ? (C = l.sessionid, s.setRemoteDescription(new RTCSessionDescription(l)), u.value = !0, b.value = 0, S(), console.log("数字人连接成功,重置重连状态"), m(() => g())) : (u.value = !1, console.log("数字人连接失败:接口返回空"), D()), f.value = !1;
205
- }).catch((l) => {
206
- console.error("api.digitalHumanOffer 失败:", l), u.value = !1, f.value = !1, D();
216
+ ce.digitalHumanOffer(o.baseUrl, i).then((c) => {
217
+ c ? (b = c.sessionid, l.setRemoteDescription(new RTCSessionDescription(c)), s.value = !0, y.value = 0, S(), console.log("数字人连接成功,重置重连状态"), m(() => g())) : (s.value = !1, console.log("数字人连接失败:接口返回空"), $()), h.value = !1;
218
+ }).catch((c) => {
219
+ console.error("api.digitalHumanOffer 失败:", c), s.value = !1, h.value = !1, $();
207
220
  });
208
221
  } catch (t) {
209
- console.error("negotiate 失败:", t), u.value = !1, f.value = !1, D();
222
+ console.error("negotiate 失败:", t), s.value = !1, h.value = !1, $();
210
223
  }
211
- }, be = () => {
212
- if (u.value || f.value) {
224
+ }, _e = () => {
225
+ if (s.value || h.value) {
213
226
  console.log("当前已连接/正在连接,无需重复触发");
214
227
  return;
215
228
  }
216
- f.value = !0, console.log("开始建立数字人连接...");
229
+ h.value = !0, console.log("开始建立数字人连接...");
217
230
  const t = {
218
231
  sdpSemantics: "unified-plan"
219
232
  };
220
- s && (s.close(), s = null), s = new RTCPeerConnection(t), s.addEventListener("track", (e) => {
221
- e.track.kind === "video" && c.value && (c.value.srcObject = e.streams[0], c.value.onloadedmetadata = async () => {
222
- c.value && a.value && (p.videoRef.value = c.value, p.canvasRef.value = a.value, await g(), await p.processVideo());
223
- }, c.value.onresize = () => {
233
+ l && (l.close(), l = null), l = new RTCPeerConnection(t), l.addEventListener("track", (e) => {
234
+ e.track.kind === "video" && u.value && (u.value.srcObject = e.streams[0], u.value.onloadedmetadata = async () => {
235
+ u.value && a.value && (p.videoRef.value = u.value, p.canvasRef.value = a.value, await g(), await p.processVideo());
236
+ }, u.value.onresize = () => {
224
237
  g();
225
238
  });
226
- }), s.addEventListener("iceconnectionstatechange", () => {
227
- switch (console.log("ICE连接状态变化:", s.iceConnectionState), s.iceConnectionState) {
239
+ }), l.addEventListener("iceconnectionstatechange", () => {
240
+ switch (console.log("ICE连接状态变化:", l.iceConnectionState), l.iceConnectionState) {
228
241
  case "disconnected":
229
242
  case "failed":
230
243
  case "closed":
231
- console.log("WebRTC连接断开/失败,触发重连"), u.value = !1, f.value = !1, s = null, C = "", c.value && (c.value.srcObject = null), H(), D();
244
+ console.log("WebRTC连接断开/失败,触发重连"), s.value = !1, h.value = !1, l = null, b = "", u.value && (u.value.srcObject = null), D(), E().then(() => {
245
+ console.log("ICE连接断开,已打断对话");
246
+ }), $();
232
247
  break;
233
248
  case "connected":
234
- b.value = 0, S(), console.log("ICE连接成功,重置重连状态"), m(() => g());
249
+ y.value = 0, S(), console.log("ICE连接成功,重置重连状态"), m(() => g());
235
250
  break;
236
251
  }
237
- }), $e();
238
- }, Pe = () => {
239
- O.value = !0, S(), f.value = !1, p.stopProcessing(), H(), setTimeout(() => {
240
- s && (s.close(), s = null), C = "", c.value && (c.value.srcObject = null), u.value = !1, b.value = 0, console.log("手动断开连接,重置所有状态");
252
+ }), Pe();
253
+ }, Ve = () => {
254
+ O.value = !0, S(), h.value = !1, p.stopProcessing(), D(), E().then(() => {
255
+ console.log("手动断开连接,已打断当前对话");
256
+ }), setTimeout(() => {
257
+ l && (l.close(), l = null), b = "", u.value && (u.value.srcObject = null), s.value = !1, y.value = 0, console.log("手动断开连接,重置所有状态");
241
258
  }, 500);
242
259
  };
243
- Ee({
244
- digitalHumanChat: te,
260
+ Le({
261
+ digitalHumanChat: ne,
245
262
  // 播放文本的核心方法
246
- isConnected: u,
263
+ digitalHumanInterruptTalk: E,
264
+ // 打断方法
265
+ isConnected: s,
247
266
  // 连接状态
248
- isConnecting: f,
267
+ isConnecting: h,
249
268
  // 连接中状态
250
- reconnect: D,
269
+ reconnect: $,
251
270
  // 手动触发重连
252
271
  clearReconnectTimer: S,
253
272
  // 手动停止重连
254
- currentReconnectTimes: b,
273
+ currentReconnectTimes: y,
255
274
  // 暴露当前重连次数,方便调试
256
275
  isWaitingReconnect: W,
257
276
  adaptCanvasToContainer: g
258
277
  // 暴露适配方法,方便父组件调用
259
- }), ne(
278
+ }), oe(
260
279
  v,
261
280
  async (t, e) => {
262
- !L.value || !c.value || (await m(), c.value.volume = t ? 0.5 : 1, u.value && (H(), await g()));
281
+ !H.value || !u.value || (await m(), u.value.volume = t ? 0.5 : 1, s.value && (D(), await g()));
263
282
  },
264
283
  { immediate: !0, deep: !0 }
265
- ), ne(
266
- [() => u.value, () => o.defaultPlayText],
284
+ ), oe(
285
+ [() => s.value, () => o.defaultPlayText],
267
286
  async ([t, e], [i]) => {
268
- t && !i && e && C && (console.log("连接成功,自动播放默认文本:", e), await te(e), m(() => g()));
287
+ t && !i && e && b && (console.log("连接成功,自动播放默认文本:", e), await ne(e), m(() => g()));
269
288
  },
270
289
  { immediate: !1 }
271
- ), ne(
290
+ ), oe(
272
291
  () => o.defaultPlayText,
273
292
  async (t) => {
274
- u.value && t && C && (console.log("默认文本加载完成,自动播放:", t), await te(t), m(() => g()));
293
+ s.value && t && b && (console.log("默认文本加载完成,自动播放:", t), await ne(t), m(() => g()));
275
294
  },
276
295
  { immediate: !0 }
277
- ), Ye(async () => {
278
- await m(), await m(), L.value = !0;
279
- const { x: t, y: e } = we();
280
- r.x = t, r.y = e, window.addEventListener("resize", ye);
296
+ ), Be(async () => {
297
+ await m(), await m(), H.value = !0;
298
+ const { x: t, y: e } = me();
299
+ r.x = t, r.y = e, window.addEventListener("resize", Re);
281
300
  });
282
- const ye = xe.debounce(() => {
301
+ const Re = Ee.debounce(() => {
283
302
  if (v.value === "") {
284
- const { x: t, y: e } = we();
303
+ const { x: t, y: e } = me();
285
304
  r.x = t, r.y = e;
286
305
  }
287
- u.value && L.value && (H(!0), m(() => g(!0)));
306
+ s.value && H.value && (D(!0), m(() => g(!0)));
288
307
  }, 50);
289
- return Be(() => {
290
- document.removeEventListener("mousemove", I), document.removeEventListener("mousemove", Z), document.removeEventListener("mouseup", ee), document.removeEventListener("mousemove", K), document.removeEventListener("mouseup", Q), window.removeEventListener("resize", ye), S(), p.stopProcessing(), c.value && (c.value.srcObject = null), s && s.close();
308
+ return Ie(() => {
309
+ E().then(() => {
310
+ console.log("组件卸载,已打断当前对话");
311
+ }), document.removeEventListener("mousemove", U), document.removeEventListener("mousemove", ee), document.removeEventListener("mouseup", te), document.removeEventListener("mousemove", Q), document.removeEventListener("mouseup", Z), window.removeEventListener("resize", Re), S(), p.stopProcessing(), u.value && (u.value.srcObject = null), l && l.close();
291
312
  }), (t, e) => {
292
- const i = Oe("CloseBold"), l = Ue, y = je("drag");
293
- return $(), A("div", {
313
+ const i = Oe("CloseBold"), c = Ne, _ = je("drag");
314
+ return P(), A("div", {
294
315
  class: "draggable-window-container",
295
- style: Ce(Le.value)
316
+ style: ke(He.value)
296
317
  }, [
297
- h(n("div", Ae, null, 512), [
298
- [w, ve.value],
299
- [y, ["digital-human-assistant", He, !0]]
318
+ f(n("div", Ae, null, 512), [
319
+ [w, fe.value],
320
+ [_, ["digital-human-assistant", De, !0]]
300
321
  ]),
301
322
  n("div", {
302
323
  ref_key: "teleportFallbackRef",
303
- ref: V,
324
+ ref: X,
304
325
  class: "teleport-fallback"
305
326
  }, null, 512),
306
- h(n("div", Ne, null, 512), [
307
- [w, G.value]
308
- ]),
309
- h(n("div", Ge, null, 512), [
327
+ f(n("div", Ge, null, 512), [
310
328
  [w, J.value]
311
329
  ]),
312
- X.value && v.value === "left" ? ($(), A("div", {
330
+ f(n("div", Je, null, 512), [
331
+ [w, q.value]
332
+ ]),
333
+ Y.value && v.value === "left" ? (P(), A("div", {
313
334
  key: 0,
314
- class: Te(["sidebar left-sidebar", { pressing: R.value }])
335
+ class: xe(["sidebar left-sidebar", { pressing: C.value }])
315
336
  }, [
316
337
  n("div", {
317
338
  class: "window-header",
318
- onMousedown: e[2] || (e[2] = (_) => pe("left", _)),
339
+ onMousedown: e[2] || (e[2] = (R) => ye("left", R)),
319
340
  onMouseup: z,
320
341
  onMouseleave: z
321
342
  }, [
322
- n("div", Je, [
323
- n("span", qe, oe(P.windowTitle), 1),
324
- n("div", Ke, [
325
- h(n("button", Qe, "未连接", 512), [
326
- [w, !u.value && !f.value]
343
+ n("div", qe, [
344
+ n("span", Ke, ae(V.windowTitle), 1),
345
+ n("div", Qe, [
346
+ f(n("button", Ze, "未连接", 512), [
347
+ [w, !s.value && !h.value]
327
348
  ]),
328
- h(n("button", Ze, "连接中...", 512), [
329
- [w, f.value]
349
+ f(n("button", et, "连接中...", 512), [
350
+ [w, h.value]
330
351
  ]),
331
- h(n("button", et, "已连接", 512), [
332
- [w, u.value]
352
+ f(n("button", tt, "已连接", 512), [
353
+ [w, s.value]
333
354
  ])
334
355
  ])
335
356
  ]),
336
- E(l, {
357
+ L(c, {
337
358
  class: "drag-window-hide",
338
- onClick: e[0] || (e[0] = (_) => j(!1)),
339
- onMousedown: e[1] || (e[1] = ae(() => {
359
+ onClick: e[0] || (e[0] = (R) => j(!1)),
360
+ onMousedown: e[1] || (e[1] = ie(() => {
340
361
  }, ["stop"]))
341
362
  }, {
342
- default: ie(() => [
343
- E(i)
363
+ default: le(() => [
364
+ L(i)
344
365
  ]),
345
366
  _: 1
346
367
  })
347
368
  ], 32),
348
- n("div", tt, [
369
+ n("div", nt, [
349
370
  se(t.$slots, "sidebar-left", {}, void 0, !0),
350
371
  n("div", {
351
372
  ref_key: "sidebarLeftVideoRef",
352
- ref: ue,
373
+ ref: ve,
353
374
  class: "sidebar-video-container"
354
375
  }, null, 512)
355
376
  ])
356
- ], 2)) : N("", !0),
377
+ ], 2)) : G("", !0),
357
378
  n("div", {
358
379
  class: "main-content-outer",
359
380
  ref_key: "containerRef",
360
- ref: de
381
+ ref: ue
361
382
  }, [
362
- n("div", nt, [
383
+ n("div", ot, [
363
384
  se(t.$slots, "main", {}, void 0, !0)
364
385
  ]),
365
- X.value && v.value === "" ? ($(), A("div", {
386
+ Y.value && v.value === "" ? (P(), A("div", {
366
387
  key: 0,
367
388
  ref_key: "dragWindowRef",
368
- ref: le,
389
+ ref: de,
369
390
  class: "draggable-window",
370
- style: Ce(Me.value)
391
+ style: ke(Me.value)
371
392
  }, [
372
393
  n("div", {
373
394
  class: "window-header",
374
- onMousedown: De
395
+ onMousedown: $e
375
396
  }, [
376
- n("div", ot, [
377
- n("span", at, oe(P.windowTitle), 1),
378
- n("div", it, [
379
- h(n("button", st, "未连接", 512), [
380
- [w, !u.value && !f.value]
397
+ n("div", at, [
398
+ n("span", it, ae(V.windowTitle), 1),
399
+ n("div", lt, [
400
+ f(n("button", st, "未连接", 512), [
401
+ [w, !s.value && !h.value]
381
402
  ]),
382
- h(n("button", lt, "连接中...", 512), [
383
- [w, f.value]
403
+ f(n("button", ct, "连接中...", 512), [
404
+ [w, h.value]
384
405
  ]),
385
- h(n("button", dt, "已连接", 512), [
386
- [w, u.value]
406
+ f(n("button", dt, "已连接", 512), [
407
+ [w, s.value]
387
408
  ])
388
409
  ])
389
410
  ]),
390
- E(l, {
411
+ L(c, {
391
412
  class: "drag-window-hide",
392
- onClick: e[3] || (e[3] = (_) => j(!1)),
393
- onMousedown: e[4] || (e[4] = ae(() => {
413
+ onClick: e[3] || (e[3] = (R) => j(!1)),
414
+ onMousedown: e[4] || (e[4] = ie(() => {
394
415
  }, ["stop"]))
395
416
  }, {
396
- default: ie(() => [
397
- E(i)
417
+ default: le(() => [
418
+ L(i)
398
419
  ]),
399
420
  _: 1
400
421
  })
401
422
  ], 32),
402
- n("div", ct, [
423
+ n("div", ut, [
403
424
  n("div", {
404
425
  class: "video-container",
405
426
  ref_key: "windowVideoRef",
406
- ref: ce
427
+ ref: re
407
428
  }, null, 512)
408
429
  ])
409
- ], 4)) : N("", !0)
430
+ ], 4)) : G("", !0)
410
431
  ], 512),
411
- X.value && v.value === "right" ? ($(), A("div", {
432
+ Y.value && v.value === "right" ? (P(), A("div", {
412
433
  key: 1,
413
- class: Te(["sidebar right-sidebar", { pressing: R.value }])
434
+ class: xe(["sidebar right-sidebar", { pressing: C.value }])
414
435
  }, [
415
436
  n("div", {
416
437
  class: "window-header",
417
- onMousedown: e[7] || (e[7] = (_) => pe("right", _)),
438
+ onMousedown: e[7] || (e[7] = (R) => ye("right", R)),
418
439
  onMouseup: z,
419
440
  onMouseleave: z
420
441
  }, [
421
- n("div", ut, [
422
- n("span", rt, oe(P.windowTitle), 1),
423
- n("div", vt, [
424
- h(n("button", ft, "未连接", 512), [
425
- [w, !u.value && !f.value]
442
+ n("div", rt, [
443
+ n("span", vt, ae(V.windowTitle), 1),
444
+ n("div", ht, [
445
+ f(n("button", ft, "未连接", 512), [
446
+ [w, !s.value && !h.value]
426
447
  ]),
427
- h(n("button", ht, "连接中...", 512), [
428
- [w, f.value]
448
+ f(n("button", wt, "连接中...", 512), [
449
+ [w, h.value]
429
450
  ]),
430
- h(n("button", wt, "已连接", 512), [
431
- [w, u.value]
451
+ f(n("button", gt, "已连接", 512), [
452
+ [w, s.value]
432
453
  ])
433
454
  ])
434
455
  ]),
435
- E(l, {
456
+ L(c, {
436
457
  class: "drag-window-hide",
437
- onClick: e[5] || (e[5] = (_) => j(!1)),
438
- onMousedown: e[6] || (e[6] = ae(() => {
458
+ onClick: e[5] || (e[5] = (R) => j(!1)),
459
+ onMousedown: e[6] || (e[6] = ie(() => {
439
460
  }, ["stop"]))
440
461
  }, {
441
- default: ie(() => [
442
- E(i)
462
+ default: le(() => [
463
+ L(i)
443
464
  ]),
444
465
  _: 1
445
466
  })
446
467
  ], 32),
447
- n("div", gt, [
468
+ n("div", mt, [
448
469
  se(t.$slots, "sidebar-right", {}, void 0, !0),
449
470
  n("div", {
450
471
  ref_key: "sidebarRightVideoRef",
451
- ref: re,
472
+ ref: he,
452
473
  class: "sidebar-video-container"
453
474
  }, null, 512)
454
475
  ])
455
- ], 2)) : N("", !0),
456
- L.value ? ($(), Ie(ze, {
476
+ ], 2)) : G("", !0),
477
+ H.value ? (P(), Ue(ze, {
457
478
  key: 2,
458
- to: fe()
479
+ to: we()
459
480
  }, [
460
481
  n("video", {
461
482
  ref_key: "digitalHumanVideo",
462
- ref: c,
483
+ ref: u,
463
484
  class: "digital-video source-video",
464
485
  poster: "",
465
486
  playsinline: "",
@@ -470,11 +491,11 @@ const Ae = { class: "digital-human-assistant" }, Ne = { class: "placeholder left
470
491
  ref: a,
471
492
  class: "digital-video processed-canvas"
472
493
  }, null, 512)
473
- ], 8, ["to"])) : N("", !0)
494
+ ], 8, ["to"])) : G("", !0)
474
495
  ], 4);
475
496
  };
476
497
  }
477
498
  });
478
499
  export {
479
- Tt as default
500
+ kt as default
480
501
  };
@@ -1,10 +1,13 @@
1
1
  import { request as r } from "./axios.ts";
2
2
  const i = {
3
- async digitalHumanChat(a, t) {
4
- return await r(a, "/human", t, "post");
3
+ async digitalHumanChat(t, a) {
4
+ return await r(t, "/human", a, "post");
5
5
  },
6
- async digitalHumanOffer(a, t) {
7
- return await r(a, "/offer", t, "post");
6
+ async digitalHumanOffer(t, a) {
7
+ return await r(t, "/offer", a, "post");
8
+ },
9
+ async digitalHumanInterruptTalk(t, a) {
10
+ return await r(t, "/interrupt_talk", a, "post");
8
11
  }
9
12
  };
10
13
  export {
@@ -1 +1 @@
1
- @charset "UTF-8";:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121,187,255);--el-color-primary-light-5:rgb(160,207,255);--el-color-primary-light-7:rgb(198,226,255);--el-color-primary-light-8:rgb(217,236,255);--el-color-primary-light-9:rgb(236,245,255);--el-color-primary-dark-2:rgb(51,126,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(149,212,117);--el-color-success-light-5:rgb(179,225,157);--el-color-success-light-7:rgb(209,237,196);--el-color-success-light-8:rgb(225,243,216);--el-color-success-light-9:rgb(240,249,235);--el-color-success-dark-2:rgb(82,155,46);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(238,190,119);--el-color-warning-light-5:rgb(243,209,158);--el-color-warning-light-7:rgb(248,227,197);--el-color-warning-light-8:rgb(250,236,216);--el-color-warning-light-9:rgb(253,246,236);--el-color-warning-dark-2:rgb(184,130,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152,152);--el-color-danger-light-5:rgb(250,182,182);--el-color-danger-light-7:rgb(252,211,211);--el-color-danger-light-8:rgb(253,226,226);--el-color-danger-light-9:rgb(254,240,240);--el-color-danger-dark-2:rgb(196,86,86);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152,152);--el-color-error-light-5:rgb(250,182,182);--el-color-error-light-7:rgb(252,211,211);--el-color-error-light-8:rgb(253,226,226);--el-color-error-light-9:rgb(254,240,240);--el-color-error-dark-2:rgb(196,86,86);--el-color-info:#909399;--el-color-info-light-3:rgb(177,179,184);--el-color-info-light-5:rgb(200,201,204);--el-color-info-light-7:rgb(222,223,224);--el-color-info-light-8:rgb(233,233,235);--el-color-info-light-9:rgb(244,244,245);--el-color-info-dark-2:rgb(115,118,122);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;color:var(--color);display:inline-flex;fill:currentColor;font-size:inherit;height:1em;justify-content:center;line-height:1em;position:relative;width:1em}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:-moz-fit-content;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;width:-moz-fit-content;width:fit-content}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:0;margin:0 auto;right:0}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translateY(-100%)}.el-message-fade-enter-from.is-bottom,.el-message-fade-leave-to.is-bottom{transform:translateY(100%)}.draggable-window-container[data-v-bcb94941]{width:100%;height:100vh;min-width:800px;min-height:500px;display:flex;background:#f0f2f5;overflow:hidden;position:relative}.draggable-window-container .digital-human-assistant[data-v-bcb94941]{width:100px;height:100px;background:url(/src/assets/images/digitalHuman/digital_human_assistant.png) 0 0 no-repeat;background-size:100% 100%;box-shadow:0 4px 12px #000c;border-radius:50%;position:absolute;top:30px;right:30px;z-index:9;cursor:move}.draggable-window-container .drag-window-hide[data-v-bcb94941]{z-index:9;cursor:pointer}.draggable-window-container .teleport-fallback[data-v-bcb94941]{position:absolute;top:-9999px;left:-9999px;width:0;height:0;overflow:hidden;pointer-events:none}.draggable-window-container .placeholder[data-v-bcb94941]{position:fixed;top:0;width:var(--sidebar-width);height:100vh;background:#409eff33;border:2px dashed #4361ee;z-index:9998}.draggable-window-container .placeholder.left-placeholder[data-v-bcb94941]{left:0}.draggable-window-container .placeholder.right-placeholder[data-v-bcb94941]{right:0}.draggable-window-container .sidebar[data-v-bcb94941]{width:var(--sidebar-width);height:100%;background:#fff;box-shadow:0 4px 12px #0000001a;transition:opacity .2s}.draggable-window-container .sidebar.left-sidebar[data-v-bcb94941]{order:1}.draggable-window-container .sidebar.right-sidebar[data-v-bcb94941]{order:3}.draggable-window-container .sidebar.pressing[data-v-bcb94941]{opacity:.8}.draggable-window-container .sidebar .window-header[data-v-bcb94941]{height:40px;line-height:40px;background:#4361ee;color:#fff;padding:0 16px;border-radius:0;user-select:none;cursor:move;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.draggable-window-container .sidebar .window-header .window-header-left[data-v-bcb94941]{display:flex;align-items:center;gap:16px}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns[data-v-bcb94941]{display:flex;gap:8px;pointer-events:none}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button[data-v-bcb94941]{padding:2px 8px;border:none;border-radius:3px;font-size:12px;color:#fff}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.connect-btn[data-v-bcb94941]{background:#52c41a}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.connect-btn[data-v-bcb94941]:disabled{background:#a3d990;cursor:not-allowed}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-bcb94941]{background:#ff4d4f}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-bcb94941]:disabled{background:#ffb3b3;cursor:not-allowed}.draggable-window-container .sidebar .window-content[data-v-bcb94941]{padding:16px;height:calc(100% - 40px);background:#f8f9fa;box-sizing:border-box;position:relative}.draggable-window-container .sidebar .window-content .sidebar-video-container[data-v-bcb94941]{position:absolute;top:0;left:0;width:100%;height:100%;background:transparent;z-index:1;display:flex;padding:0;margin:0;overflow:hidden;justify-content:center;align-items:center}.draggable-window-container .sidebar .window-content .sidebar-video-container .source-video[data-v-bcb94941]{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}.draggable-window-container .sidebar .window-content .sidebar-video-container .processed-canvas[data-v-bcb94941]{object-fit:contain!important;background:transparent}.draggable-window-container .sidebar .window-content .sidebar-video-container .digital-video[data-v-bcb94941]{min-width:100%;max-width:100%;max-height:100%}.draggable-window-container .sidebar .window-content .sidebar-video-container .digital-video[poster][data-v-bcb94941]{background:url(/src/assets/images/digitalHuman/digital_human_assistant_bg.png) 0 0 no-repeat;background-size:200px 200px;background-position:center center;background-repeat:no-repeat}.draggable-window-container .main-content-outer[data-v-bcb94941]{order:2;flex:1;height:100vh;position:relative}.draggable-window-container .main-content-outer .main-content-inner[data-v-bcb94941]{padding:20px;height:100%;box-sizing:border-box}.draggable-window-container .main-content-outer .draggable-window[data-v-bcb94941]{position:absolute;width:var(--window-width);height:var(--window-height);border-radius:10px;box-shadow:0 4px 12px #0000001a}.draggable-window-container .main-content-outer .draggable-window .window-header[data-v-bcb94941]{height:40px;line-height:40px;background:#4361ee;color:#fff;padding:0 16px;border-radius:10px 10px 0 0;user-select:none;cursor:move;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left[data-v-bcb94941]{display:flex;align-items:center;gap:16px}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns[data-v-bcb94941]{display:flex;gap:8px;pointer-events:none}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button[data-v-bcb94941]{padding:2px 8px;border:none;border-radius:3px;font-size:12px;color:#fff}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.connect-btn[data-v-bcb94941]{background:#52c41a}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.connect-btn[data-v-bcb94941]:disabled{background:#a3d990;cursor:not-allowed}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-bcb94941]{background:#ff4d4f}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-bcb94941]:disabled{background:#ffb3b3;cursor:not-allowed}.draggable-window-container .main-content-outer .draggable-window .window-content[data-v-bcb94941]{height:calc(100% - 40px);border-radius:0 0 10px 10px;box-sizing:border-box;overflow:hidden}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container[data-v-bcb94941]{width:100%;height:100%;background:transparent;position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container .source-video[data-v-bcb94941]{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container .processed-canvas[data-v-bcb94941]{object-fit:contain!important;background:transparent}.draggable-window-container .main-content-outer .draggable-window .window-content .digital-video[data-v-bcb94941]{min-width:100%;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:cover}.draggable-window-container .main-content-outer .draggable-window .window-content .digital-video[poster][data-v-bcb94941]{background:url(/src/assets/images/digitalHuman/digital_human_assistant_bg.png) 0 0 no-repeat;background-size:100px 100px;background-position:center center;background-repeat:no-repeat}[data-v-bcb94941] .processed-canvas{object-fit:contain!important;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}
1
+ @charset "UTF-8";:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121,187,255);--el-color-primary-light-5:rgb(160,207,255);--el-color-primary-light-7:rgb(198,226,255);--el-color-primary-light-8:rgb(217,236,255);--el-color-primary-light-9:rgb(236,245,255);--el-color-primary-dark-2:rgb(51,126,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(149,212,117);--el-color-success-light-5:rgb(179,225,157);--el-color-success-light-7:rgb(209,237,196);--el-color-success-light-8:rgb(225,243,216);--el-color-success-light-9:rgb(240,249,235);--el-color-success-dark-2:rgb(82,155,46);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(238,190,119);--el-color-warning-light-5:rgb(243,209,158);--el-color-warning-light-7:rgb(248,227,197);--el-color-warning-light-8:rgb(250,236,216);--el-color-warning-light-9:rgb(253,246,236);--el-color-warning-dark-2:rgb(184,130,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152,152);--el-color-danger-light-5:rgb(250,182,182);--el-color-danger-light-7:rgb(252,211,211);--el-color-danger-light-8:rgb(253,226,226);--el-color-danger-light-9:rgb(254,240,240);--el-color-danger-dark-2:rgb(196,86,86);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152,152);--el-color-error-light-5:rgb(250,182,182);--el-color-error-light-7:rgb(252,211,211);--el-color-error-light-8:rgb(253,226,226);--el-color-error-light-9:rgb(254,240,240);--el-color-error-dark-2:rgb(196,86,86);--el-color-info:#909399;--el-color-info-light-3:rgb(177,179,184);--el-color-info-light-5:rgb(200,201,204);--el-color-info-light-7:rgb(222,223,224);--el-color-info-light-8:rgb(233,233,235);--el-color-info-light-9:rgb(244,244,245);--el-color-info-dark-2:rgb(115,118,122);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;color:var(--color);display:inline-flex;fill:currentColor;font-size:inherit;height:1em;justify-content:center;line-height:1em;position:relative;width:1em}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:-moz-fit-content;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;width:-moz-fit-content;width:fit-content}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:0;margin:0 auto;right:0}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translateY(-100%)}.el-message-fade-enter-from.is-bottom,.el-message-fade-leave-to.is-bottom{transform:translateY(100%)}.draggable-window-container[data-v-7ad3c1b0]{width:100%;height:100vh;min-width:800px;min-height:500px;display:flex;background:#f0f2f5;overflow:hidden;position:relative}.draggable-window-container .digital-human-assistant[data-v-7ad3c1b0]{width:100px;height:100px;background:url(/src/assets/images/digitalHuman/digital_human_assistant.png) 0 0 no-repeat;background-size:100% 100%;box-shadow:0 4px 12px #000c;border-radius:50%;position:absolute;top:30px;right:30px;z-index:9;cursor:move}.draggable-window-container .drag-window-hide[data-v-7ad3c1b0]{z-index:9;cursor:pointer}.draggable-window-container .teleport-fallback[data-v-7ad3c1b0]{position:absolute;top:-9999px;left:-9999px;width:0;height:0;overflow:hidden;pointer-events:none}.draggable-window-container .placeholder[data-v-7ad3c1b0]{position:fixed;top:0;width:var(--sidebar-width);height:100vh;background:#409eff33;border:2px dashed #4361ee;z-index:9998}.draggable-window-container .placeholder.left-placeholder[data-v-7ad3c1b0]{left:0}.draggable-window-container .placeholder.right-placeholder[data-v-7ad3c1b0]{right:0}.draggable-window-container .sidebar[data-v-7ad3c1b0]{width:var(--sidebar-width);height:100%;background:#fff;box-shadow:0 4px 12px #0000001a;transition:opacity .2s}.draggable-window-container .sidebar.left-sidebar[data-v-7ad3c1b0]{order:1}.draggable-window-container .sidebar.right-sidebar[data-v-7ad3c1b0]{order:3}.draggable-window-container .sidebar.pressing[data-v-7ad3c1b0]{opacity:.8}.draggable-window-container .sidebar .window-header[data-v-7ad3c1b0]{height:40px;line-height:40px;background:#4361ee;color:#fff;padding:0 16px;border-radius:0;user-select:none;cursor:move;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.draggable-window-container .sidebar .window-header .window-header-left[data-v-7ad3c1b0]{display:flex;align-items:center;gap:16px}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns[data-v-7ad3c1b0]{display:flex;gap:8px;pointer-events:none}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button[data-v-7ad3c1b0]{padding:2px 8px;border:none;border-radius:3px;font-size:12px;color:#fff}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.connect-btn[data-v-7ad3c1b0]{background:#52c41a}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.connect-btn[data-v-7ad3c1b0]:disabled{background:#a3d990;cursor:not-allowed}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-7ad3c1b0]{background:#ff4d4f}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-7ad3c1b0]:disabled{background:#ffb3b3;cursor:not-allowed}.draggable-window-container .sidebar .window-content[data-v-7ad3c1b0]{padding:16px;height:calc(100% - 40px);background:#f8f9fa;box-sizing:border-box;position:relative}.draggable-window-container .sidebar .window-content .sidebar-video-container[data-v-7ad3c1b0]{position:absolute;top:0;left:0;width:100%;height:100%;background:transparent;z-index:1;display:flex;padding:0;margin:0;overflow:hidden;justify-content:center;align-items:center}.draggable-window-container .sidebar .window-content .sidebar-video-container .source-video[data-v-7ad3c1b0]{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}.draggable-window-container .sidebar .window-content .sidebar-video-container .processed-canvas[data-v-7ad3c1b0]{object-fit:contain!important;background:transparent}.draggable-window-container .sidebar .window-content .sidebar-video-container .digital-video[data-v-7ad3c1b0]{min-width:100%;max-width:100%;max-height:100%}.draggable-window-container .sidebar .window-content .sidebar-video-container .digital-video[poster][data-v-7ad3c1b0]{background:url(/src/assets/images/digitalHuman/digital_human_assistant_bg.png) 0 0 no-repeat;background-size:200px 200px;background-position:center center;background-repeat:no-repeat}.draggable-window-container .main-content-outer[data-v-7ad3c1b0]{order:2;flex:1;height:100vh;position:relative}.draggable-window-container .main-content-outer .main-content-inner[data-v-7ad3c1b0]{padding:20px;height:100%;box-sizing:border-box}.draggable-window-container .main-content-outer .draggable-window[data-v-7ad3c1b0]{position:absolute;width:var(--window-width);height:var(--window-height);border-radius:10px;box-shadow:0 4px 12px #0000001a}.draggable-window-container .main-content-outer .draggable-window .window-header[data-v-7ad3c1b0]{height:40px;line-height:40px;background:#4361ee;color:#fff;padding:0 16px;border-radius:10px 10px 0 0;user-select:none;cursor:move;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left[data-v-7ad3c1b0]{display:flex;align-items:center;gap:16px}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns[data-v-7ad3c1b0]{display:flex;gap:8px;pointer-events:none}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button[data-v-7ad3c1b0]{padding:2px 8px;border:none;border-radius:3px;font-size:12px;color:#fff}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.connect-btn[data-v-7ad3c1b0]{background:#52c41a}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.connect-btn[data-v-7ad3c1b0]:disabled{background:#a3d990;cursor:not-allowed}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-7ad3c1b0]{background:#ff4d4f}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-7ad3c1b0]:disabled{background:#ffb3b3;cursor:not-allowed}.draggable-window-container .main-content-outer .draggable-window .window-content[data-v-7ad3c1b0]{height:calc(100% - 40px);border-radius:0 0 10px 10px;box-sizing:border-box;overflow:hidden}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container[data-v-7ad3c1b0]{width:100%;height:100%;background:transparent;position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container .source-video[data-v-7ad3c1b0]{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container .processed-canvas[data-v-7ad3c1b0]{object-fit:contain!important;background:transparent}.draggable-window-container .main-content-outer .draggable-window .window-content .digital-video[data-v-7ad3c1b0]{min-width:100%;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:cover}.draggable-window-container .main-content-outer .draggable-window .window-content .digital-video[poster][data-v-7ad3c1b0]{background:url(/src/assets/images/digitalHuman/digital_human_assistant_bg.png) 0 0 no-repeat;background-size:100px 100px;background-position:center center;background-repeat:no-repeat}[data-v-7ad3c1b0] .processed-canvas{object-fit:contain!important;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index.vue2.ts");;/* empty css */const t=require("../../../../../_virtual/_plugin-vue_export-helper.ts"),u=t.default(e.default,[["__scopeId","data-v-bcb94941"]]);exports.default=u;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./index.vue2.ts");;/* empty css */const t=require("../../../../../_virtual/_plugin-vue_export-helper.ts"),u=t.default(e.default,[["__scopeId","data-v-7ad3c1b0"]]);exports.default=u;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});;/* empty css */const e=require("vue"),de=require("../../utils/api.ts"),re=require("../../utils/utils.ts"),ye=require("../../utils/videoBackgroundRemoval.ts"),Ee=require("../../../../../node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/icon/index.ts"),Ve={class:"digital-human-assistant"},ke={class:"placeholder left-placeholder"},_e={class:"placeholder right-placeholder"},Se={class:"window-header-left"},xe={class:"window-title-text"},Ce={class:"window-header-btns"},Te={class:"disconnect-btn"},Re={class:"connect-btn",disabled:""},Ne={class:"connect-btn"},De={class:"window-content"},Me={class:"main-content-inner"},Le={class:"window-header-left"},We={class:"window-title-text"},He={class:"window-header-btns"},$e={class:"disconnect-btn"},Be={class:"connect-btn",disabled:""},Pe={class:"connect-btn"},Xe={class:"window-content"},Ye={class:"window-header-left"},Oe={class:"window-title-text"},je={class:"window-header-btns"},ze={class:"disconnect-btn"},Ie={class:"connect-btn",disabled:""},qe={class:"connect-btn"},Fe={class:"window-content"},Ue=e.defineComponent({name:"SjDigitalHumanAssistant"}),Ae=e.defineComponent({...Ue,props:{windowWidth:{default:320},windowHeight:{default:467},windowTitle:{default:"数字人助手"},sidebarWidth:{default:"25%"},sidebarLeftTitle:{default:"左侧业务区"},sidebarRightTitle:{default:"右侧业务区"},edgeThreshold:{default:10},dragThreshold:{default:8},defaultStickSide:{default:""},defaultPlayText:{default:""},reconnectInterval:{default:5},maxReconnectTimes:{default:10},baseUrl:{default:""}},setup(R,{expose:ue}){const n=R,A=e.ref(null),G=e.ref(null),c=e.ref(null),a=e.ref(null),h=ye.default(),J=e.ref(null),K=e.ref(null),Q=e.ref(null),N=e.ref(null),_=e.ref(!1),d=e.ref(!1),v=e.ref(!1),Z=e.ref(!0),D=e.ref(!1),r=e.reactive({x:0,y:0,offsetX:0,offsetY:0}),u=e.ref(n.defaultStickSide),M=e.ref(!1),p=e.ref(!1),S=e.ref(!1),Y=e.ref(!1),O=e.ref(!1);let l=null,b="";const L=e.ref(null),w=e.ref(0),W=e.ref(!1),x=e.ref(!1),ve=e.computed(()=>({"--sidebar-width":n.sidebarWidth,"--window-width":`${n.windowWidth}px`,"--window-height":`${n.windowHeight}px`})),fe=e.computed(()=>({left:`${r.x}px`,top:`${r.y}px`,width:`${n.windowWidth}px`,height:`${n.windowHeight}px`,zIndex:M.value||S.value?9999:1e3})),he=o=>{!o&&c.value?(W.value=!1,w.value=0,le()):o?(W.value=!0,pe()):console.warn("自动连接超时:video元素未挂载"),Z.value=o},H=o=>{he(!o),D.value=o,o&&d.value&&e.nextTick(()=>f())},we=()=>{H(!0)},ee=()=>{switch(u.value){case"left":return K.value??N.value;case"right":return Q.value??N.value;default:return J.value??N.value}},V=()=>G.value?.getBoundingClientRect()||{width:0,height:0,left:0,right:0,top:0,bottom:0},te=()=>A.value?.getBoundingClientRect()||{width:0,height:0,left:0,right:0,top:0,bottom:0},j=(o,t)=>{const i=V();return{x:Math.max(0,Math.min(o,i.width-n.windowWidth)),y:Math.max(0,Math.min(t,i.height-n.windowHeight))}},oe=()=>{const o=V(),t=o.width-n.windowWidth-10,i=o.height-n.windowHeight-10;return j(t,i)},ne=()=>{const o=V(),t=te();Y.value=t.left<=o.left+n.edgeThreshold,O.value=t.right>=o.right-n.edgeThreshold},ae=()=>{const o=V(),t=te(),i=t.left<=o.left+n.edgeThreshold?"left":t.right>=o.right-n.edgeThreshold?"right":"";i!==u.value&&(u.value=i,c.value&&(c.value.volume=i?.5:1),C(),f()),Y.value=O.value=!1},me=o=>{M.value=!0,r.offsetX=o.clientX-r.x,r.offsetY=o.clientY-r.y,document.addEventListener("mousemove",z),document.addEventListener("mouseup",I)},z=o=>{if(!M.value)return;const t=V(),{x:i,y:s}=j(o.clientX-t.left-r.offsetX,o.clientY-t.top-r.offsetY);r.x=i,r.y=s,ne()},I=()=>{ae(),M.value=!1,document.removeEventListener("mousemove",z),document.removeEventListener("mouseup",I)},ie=(o,t)=>{p.value=!0,r.offsetX=t.clientX-(t.clientX-n.windowWidth/2),r.offsetY=t.clientY-(t.clientY-20),document.addEventListener("mousemove",$)},$=o=>{if(!p.value)return;const t=Math.abs(o.movementX),i=Math.abs(o.movementY);(t>n.dragThreshold||i>n.dragThreshold)&&(S.value=!0,u.value="",document.removeEventListener("mousemove",$),document.addEventListener("mousemove",q),document.addEventListener("mouseup",F))},q=o=>{if(!S.value)return;const t=V(),{x:i,y:s}=j(o.clientX-t.left-r.offsetX,o.clientY-t.top-r.offsetY);r.x=i,r.y=s,ne()},F=()=>{ae(),p.value=S.value=!1,document.removeEventListener("mousemove",q),document.removeEventListener("mouseup",F)},B=()=>{p.value&&!S.value&&(p.value=!1,document.removeEventListener("mousemove",$))},U=async o=>{if(!d.value||!b)return;const t={text:o,type:"echo",interrupt:!0,sessionid:parseInt(b)};de.default.digitalHumanChat(n.baseUrl,t).then(i=>{i&&Number(i.code)}).catch(i=>{console.log("api.digitalHumanChat:",i)})},k=()=>{L.value&&(clearTimeout(L.value),L.value=null,console.log("重连定时器已清除")),x.value=!1},C=(o=!1)=>{if(!a.value)return;o||h.stopProcessing();const t=a.value.getContext("2d");if(t&&(t.clearRect(0,0,a.value.width,a.value.height),!o)){const i=a.value.width,s=a.value.height;a.value.width=i,a.value.height=s}a.value&&!o&&(a.value.style.width="",a.value.style.height="",u.value===""&&(a.value.style.marginLeft="",a.value.style.marginTop=""))},f=async(o=!1)=>{if(!c.value||!a.value||!_.value||!d.value)return;await e.nextTick();const t=c.value.videoWidth||n.windowWidth,i=c.value.videoHeight||n.windowHeight,s=t/i;console.log("视频原始宽高比:",s,"尺寸:",t,i);let m;const g=ee();g?m=g.getBoundingClientRect():m={width:u.value?0:n.windowWidth,height:u.value?0:n.windowHeight,left:0,top:0,right:0,bottom:0};const P=m.width||(u.value?300:n.windowWidth),X=m.height||(u.value?window.innerHeight-40:n.windowHeight),be=P/X;let y,E;be>s?(E=X,y=E*s):(y=P,E=y/s);const ce=window.devicePixelRatio||1;a.value.width=Math.floor(y*ce),a.value.height=Math.floor(E*ce),a.value.style.display="block",a.value.style.objectFit="contain",u.value===""?(a.value.style.width=`${y}px`,a.value.style.height=`${E}px`,a.value.style.marginLeft=`${(P-y)/2}px`,a.value.style.marginTop=`${(X-E)/2}px`):(a.value.style.width="100%",a.value.style.height="100%",a.value.style.marginLeft="0",a.value.style.marginTop="0"),console.log("Canvas适配完成:",{mode:u.value||"浮动",container:{width:P,height:X},canvas:{drawWidth:y,drawHeight:E,physicalWidth:a.value.width,physicalHeight:a.value.height}}),o||(h.videoRef.value=c.value,h.canvasRef.value=a.value,await h.processVideo())},T=()=>{if(W.value||d.value||v.value||x.value){console.log("重连条件不满足:手动断开/已连接/正在连接/正在冷却");return}if(n.maxReconnectTimes!==-1&&w.value>=n.maxReconnectTimes){console.warn(`数字人重连已达最大次数(${n.maxReconnectTimes}),停止重连`),k(),re.default.funcElMessageShowCtrl(`数字人连接失败,已尝试${n.maxReconnectTimes}次重连,请重试!`),w.value=0;return}x.value=!0,L.value=setTimeout(()=>{try{w.value++,console.log(`数字人第${w.value}次重连... (最大次数:${n.maxReconnectTimes})`),le()}finally{x.value=!1}},n.reconnectInterval*1e3)},ge=async()=>{if(l)try{l.addTransceiver("video",{direction:"recvonly"}),l.addTransceiver("audio",{direction:"recvonly"});const o=await l.createOffer();await l.setLocalDescription(o),await new Promise(s=>{if(l?.iceGatheringState==="complete")s();else{const m=()=>{l?.iceGatheringState==="complete"&&(l?.removeEventListener("icegatheringstatechange",m),s())};l?.addEventListener("icegatheringstatechange",m)}});const t=l.localDescription,i={sdp:t.sdp,type:t.type};de.default.digitalHumanOffer(n.baseUrl,i).then(s=>{s?(b=s.sessionid,l.setRemoteDescription(new RTCSessionDescription(s)),d.value=!0,w.value=0,k(),console.log("数字人连接成功,重置重连状态"),e.nextTick(()=>f())):(d.value=!1,console.log("数字人连接失败:接口返回空"),T()),v.value=!1}).catch(s=>{console.error("api.digitalHumanOffer 失败:",s),d.value=!1,v.value=!1,T()})}catch(o){console.error("negotiate 失败:",o),d.value=!1,v.value=!1,T()}},le=()=>{if(d.value||v.value){console.log("当前已连接/正在连接,无需重复触发");return}v.value=!0,console.log("开始建立数字人连接...");const o={sdpSemantics:"unified-plan"};l&&(l.close(),l=null),l=new RTCPeerConnection(o),l.addEventListener("track",t=>{t.track.kind==="video"&&c.value&&(c.value.srcObject=t.streams[0],c.value.onloadedmetadata=async()=>{c.value&&a.value&&(h.videoRef.value=c.value,h.canvasRef.value=a.value,await f(),await h.processVideo())},c.value.onresize=()=>{f()})}),l.addEventListener("iceconnectionstatechange",()=>{switch(console.log("ICE连接状态变化:",l.iceConnectionState),l.iceConnectionState){case"disconnected":case"failed":case"closed":console.log("WebRTC连接断开/失败,触发重连"),d.value=!1,v.value=!1,l=null,b="",c.value&&(c.value.srcObject=null),C(),T();break;case"connected":w.value=0,k(),console.log("ICE连接成功,重置重连状态"),e.nextTick(()=>f());break}}),ge()},pe=()=>{W.value=!0,k(),v.value=!1,h.stopProcessing(),C(),setTimeout(()=>{l&&(l.close(),l=null),b="",c.value&&(c.value.srcObject=null),d.value=!1,w.value=0,console.log("手动断开连接,重置所有状态")},500)};ue({digitalHumanChat:U,isConnected:d,isConnecting:v,reconnect:T,clearReconnectTimer:k,currentReconnectTimes:w,isWaitingReconnect:x,adaptCanvasToContainer:f}),e.watch(u,async(o,t)=>{!_.value||!c.value||(await e.nextTick(),c.value.volume=o?.5:1,d.value&&(C(),await f()))},{immediate:!0,deep:!0}),e.watch([()=>d.value,()=>n.defaultPlayText],async([o,t],[i])=>{o&&!i&&t&&b&&(console.log("连接成功,自动播放默认文本:",t),await U(t),e.nextTick(()=>f()))},{immediate:!1}),e.watch(()=>n.defaultPlayText,async o=>{d.value&&o&&b&&(console.log("默认文本加载完成,自动播放:",o),await U(o),e.nextTick(()=>f()))},{immediate:!0}),e.onMounted(async()=>{await e.nextTick(),await e.nextTick(),_.value=!0;const{x:o,y:t}=oe();r.x=o,r.y=t,window.addEventListener("resize",se)});const se=re.default.debounce(()=>{if(u.value===""){const{x:o,y:t}=oe();r.x=o,r.y=t}d.value&&_.value&&(C(!0),e.nextTick(()=>f(!0)))},50);return e.onUnmounted(()=>{document.removeEventListener("mousemove",$),document.removeEventListener("mousemove",q),document.removeEventListener("mouseup",F),document.removeEventListener("mousemove",z),document.removeEventListener("mouseup",I),window.removeEventListener("resize",se),k(),h.stopProcessing(),c.value&&(c.value.srcObject=null),l&&l.close()}),(o,t)=>{const i=e.resolveComponent("CloseBold"),s=Ee.ElIcon,m=e.resolveDirective("drag");return e.openBlock(),e.createElementBlock("div",{class:"draggable-window-container",style:e.normalizeStyle(ve.value)},[e.withDirectives(e.createElementVNode("div",Ve,null,512),[[e.vShow,Z.value],[m,["digital-human-assistant",we,!0]]]),e.createElementVNode("div",{ref_key:"teleportFallbackRef",ref:N,class:"teleport-fallback"},null,512),e.withDirectives(e.createElementVNode("div",ke,null,512),[[e.vShow,Y.value]]),e.withDirectives(e.createElementVNode("div",_e,null,512),[[e.vShow,O.value]]),D.value&&u.value==="left"?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["sidebar left-sidebar",{pressing:p.value}])},[e.createElementVNode("div",{class:"window-header",onMousedown:t[2]||(t[2]=g=>ie("left",g)),onMouseup:B,onMouseleave:B},[e.createElementVNode("div",Se,[e.createElementVNode("span",xe,e.toDisplayString(R.windowTitle),1),e.createElementVNode("div",Ce,[e.withDirectives(e.createElementVNode("button",Te,"未连接",512),[[e.vShow,!d.value&&!v.value]]),e.withDirectives(e.createElementVNode("button",Re,"连接中...",512),[[e.vShow,v.value]]),e.withDirectives(e.createElementVNode("button",Ne,"已连接",512),[[e.vShow,d.value]])])]),e.createVNode(s,{class:"drag-window-hide",onClick:t[0]||(t[0]=g=>H(!1)),onMousedown:t[1]||(t[1]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createVNode(i)]),_:1})],32),e.createElementVNode("div",De,[e.renderSlot(o.$slots,"sidebar-left",{},void 0,!0),e.createElementVNode("div",{ref_key:"sidebarLeftVideoRef",ref:K,class:"sidebar-video-container"},null,512)])],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"main-content-outer",ref_key:"containerRef",ref:G},[e.createElementVNode("div",Me,[e.renderSlot(o.$slots,"main",{},void 0,!0)]),D.value&&u.value===""?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dragWindowRef",ref:A,class:"draggable-window",style:e.normalizeStyle(fe.value)},[e.createElementVNode("div",{class:"window-header",onMousedown:me},[e.createElementVNode("div",Le,[e.createElementVNode("span",We,e.toDisplayString(R.windowTitle),1),e.createElementVNode("div",He,[e.withDirectives(e.createElementVNode("button",$e,"未连接",512),[[e.vShow,!d.value&&!v.value]]),e.withDirectives(e.createElementVNode("button",Be,"连接中...",512),[[e.vShow,v.value]]),e.withDirectives(e.createElementVNode("button",Pe,"已连接",512),[[e.vShow,d.value]])])]),e.createVNode(s,{class:"drag-window-hide",onClick:t[3]||(t[3]=g=>H(!1)),onMousedown:t[4]||(t[4]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createVNode(i)]),_:1})],32),e.createElementVNode("div",Xe,[e.createElementVNode("div",{class:"video-container",ref_key:"windowVideoRef",ref:J},null,512)])],4)):e.createCommentVNode("",!0)],512),D.value&&u.value==="right"?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["sidebar right-sidebar",{pressing:p.value}])},[e.createElementVNode("div",{class:"window-header",onMousedown:t[7]||(t[7]=g=>ie("right",g)),onMouseup:B,onMouseleave:B},[e.createElementVNode("div",Ye,[e.createElementVNode("span",Oe,e.toDisplayString(R.windowTitle),1),e.createElementVNode("div",je,[e.withDirectives(e.createElementVNode("button",ze,"未连接",512),[[e.vShow,!d.value&&!v.value]]),e.withDirectives(e.createElementVNode("button",Ie,"连接中...",512),[[e.vShow,v.value]]),e.withDirectives(e.createElementVNode("button",qe,"已连接",512),[[e.vShow,d.value]])])]),e.createVNode(s,{class:"drag-window-hide",onClick:t[5]||(t[5]=g=>H(!1)),onMousedown:t[6]||(t[6]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createVNode(i)]),_:1})],32),e.createElementVNode("div",Fe,[e.renderSlot(o.$slots,"sidebar-right",{},void 0,!0),e.createElementVNode("div",{ref_key:"sidebarRightVideoRef",ref:Q,class:"sidebar-video-container"},null,512)])],2)):e.createCommentVNode("",!0),_.value?(e.openBlock(),e.createBlock(e.Teleport,{key:2,to:ee()},[e.createElementVNode("video",{ref_key:"digitalHumanVideo",ref:c,class:"digital-video source-video",poster:"",playsinline:"",autoplay:""},null,512),e.createElementVNode("canvas",{ref_key:"processedCanvas",ref:a,class:"digital-video processed-canvas"},null,512)],8,["to"])):e.createCommentVNode("",!0)],4)}}});exports.default=Ae;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});;/* empty css */const e=require("vue"),G=require("../../utils/api.ts"),ue=require("../../utils/utils.ts"),Ee=require("../../utils/videoBackgroundRemoval.ts"),ke=require("../../../../../node_modules/.pnpm/element-plus@2.13.1_vue@3.5.27_typescript@5.9.3_/node_modules/element-plus/es/components/icon/index.ts"),Ve={class:"digital-human-assistant"},_e={class:"placeholder left-placeholder"},Te={class:"placeholder right-placeholder"},Ce={class:"window-header-left"},Se={class:"window-title-text"},xe={class:"window-header-btns"},Ne={class:"disconnect-btn"},Re={class:"connect-btn",disabled:""},De={class:"connect-btn"},Me={class:"window-content"},Le={class:"main-content-inner"},He={class:"window-header-left"},We={class:"window-title-text"},$e={class:"window-header-btns"},Be={class:"disconnect-btn"},Pe={class:"connect-btn",disabled:""},Xe={class:"connect-btn"},Ye={class:"window-content"},Ie={class:"window-header-left"},Oe={class:"window-title-text"},je={class:"window-header-btns"},ze={class:"disconnect-btn"},qe={class:"connect-btn",disabled:""},Ue={class:"connect-btn"},Fe={class:"window-content"},Ae=e.defineComponent({name:"SjDigitalHumanAssistant"}),Ge=e.defineComponent({...Ae,props:{windowWidth:{default:320},windowHeight:{default:467},windowTitle:{default:"数字人助手"},sidebarWidth:{default:"25%"},sidebarLeftTitle:{default:"左侧业务区"},sidebarRightTitle:{default:"右侧业务区"},edgeThreshold:{default:10},dragThreshold:{default:8},defaultStickSide:{default:""},defaultPlayText:{default:""},reconnectInterval:{default:5},maxReconnectTimes:{default:10},baseUrl:{default:""}},setup(R,{expose:ve}){const n=R,J=e.ref(null),K=e.ref(null),d=e.ref(null),a=e.ref(null),f=Ee.default(),Q=e.ref(null),Z=e.ref(null),ee=e.ref(null),D=e.ref(null),T=e.ref(!1),s=e.ref(!1),v=e.ref(!1),te=e.ref(!0),M=e.ref(!1),r=e.reactive({x:0,y:0,offsetX:0,offsetY:0}),u=e.ref(n.defaultStickSide),L=e.ref(!1),b=e.ref(!1),C=e.ref(!1),I=e.ref(!1),O=e.ref(!1);let l=null,m="";const H=e.ref(null),w=e.ref(0),W=e.ref(!1),S=e.ref(!1),he=e.computed(()=>({"--sidebar-width":n.sidebarWidth,"--window-width":`${n.windowWidth}px`,"--window-height":`${n.windowHeight}px`})),fe=e.computed(()=>({left:`${r.x}px`,top:`${r.y}px`,width:`${n.windowWidth}px`,height:`${n.windowHeight}px`,zIndex:L.value||C.value?9999:1e3})),me=o=>{!o&&d.value?(W.value=!1,w.value=0,ce()):o?(W.value=!0,be()):console.warn("自动连接超时:video元素未挂载"),te.value=o},$=o=>{me(!o),M.value=o,o&&s.value&&e.nextTick(()=>h())},we=()=>{$(!0)},oe=()=>{switch(u.value){case"left":return Z.value??D.value;case"right":return ee.value??D.value;default:return Q.value??D.value}},k=()=>K.value?.getBoundingClientRect()||{width:0,height:0,left:0,right:0,top:0,bottom:0},ne=()=>J.value?.getBoundingClientRect()||{width:0,height:0,left:0,right:0,top:0,bottom:0},j=(o,t)=>{const i=k();return{x:Math.max(0,Math.min(o,i.width-n.windowWidth)),y:Math.max(0,Math.min(t,i.height-n.windowHeight))}},ae=()=>{const o=k(),t=o.width-n.windowWidth-10,i=o.height-n.windowHeight-10;return j(t,i)},ie=()=>{const o=k(),t=ne();I.value=t.left<=o.left+n.edgeThreshold,O.value=t.right>=o.right-n.edgeThreshold},le=()=>{const o=k(),t=ne(),i=t.left<=o.left+n.edgeThreshold?"left":t.right>=o.right-n.edgeThreshold?"right":"";i!==u.value&&(u.value=i,d.value&&(d.value.volume=i?.5:1),x(),h()),I.value=O.value=!1},ge=o=>{L.value=!0,r.offsetX=o.clientX-r.x,r.offsetY=o.clientY-r.y,document.addEventListener("mousemove",z),document.addEventListener("mouseup",q)},z=o=>{if(!L.value)return;const t=k(),{x:i,y:c}=j(o.clientX-t.left-r.offsetX,o.clientY-t.top-r.offsetY);r.x=i,r.y=c,ie()},q=()=>{le(),L.value=!1,document.removeEventListener("mousemove",z),document.removeEventListener("mouseup",q)},se=(o,t)=>{b.value=!0,r.offsetX=t.clientX-(t.clientX-n.windowWidth/2),r.offsetY=t.clientY-(t.clientY-20),document.addEventListener("mousemove",B)},B=o=>{if(!b.value)return;const t=Math.abs(o.movementX),i=Math.abs(o.movementY);(t>n.dragThreshold||i>n.dragThreshold)&&(C.value=!0,u.value="",document.removeEventListener("mousemove",B),document.addEventListener("mousemove",U),document.addEventListener("mouseup",F))},U=o=>{if(!C.value)return;const t=k(),{x:i,y:c}=j(o.clientX-t.left-r.offsetX,o.clientY-t.top-r.offsetY);r.x=i,r.y=c,ie()},F=()=>{le(),b.value=C.value=!1,document.removeEventListener("mousemove",U),document.removeEventListener("mouseup",F)},P=()=>{b.value&&!C.value&&(b.value=!1,document.removeEventListener("mousemove",B))},A=async o=>{if(!s.value||!m)return;await V(),console.log("已打断当前对话,准备播放新文本:",o);const t={text:o,type:"echo",interrupt:!0,sessionid:parseInt(m)};G.default.digitalHumanChat(n.baseUrl,t).then(i=>{i&&Number(i.code)}).catch(i=>{console.log("api.digitalHumanChat:",i)})},V=async()=>{if(!s.value||!m)return;const o={sessionid:parseInt(m)};G.default.digitalHumanInterruptTalk(n.baseUrl,o).then(t=>{t&&Number(t.code)===0&&console.log("数字人对话已成功打断")}).catch(t=>{console.log("api.digitalHumanInterruptTalk:",t)})},_=()=>{H.value&&(clearTimeout(H.value),H.value=null,console.log("重连定时器已清除")),S.value=!1},x=(o=!1)=>{if(!a.value)return;o||f.stopProcessing();const t=a.value.getContext("2d");if(t&&(t.clearRect(0,0,a.value.width,a.value.height),!o)){const i=a.value.width,c=a.value.height;a.value.width=i,a.value.height=c}a.value&&!o&&(a.value.style.width="",a.value.style.height="",u.value===""&&(a.value.style.marginLeft="",a.value.style.marginTop=""))},h=async(o=!1)=>{if(!d.value||!a.value||!T.value||!s.value)return;await e.nextTick();const t=d.value.videoWidth||n.windowWidth,i=d.value.videoHeight||n.windowHeight,c=t/i;console.log("视频原始宽高比:",c,"尺寸:",t,i);let g;const p=oe();p?g=p.getBoundingClientRect():g={width:u.value?0:n.windowWidth,height:u.value?0:n.windowHeight,left:0,top:0,right:0,bottom:0};const X=g.width||(u.value?300:n.windowWidth),Y=g.height||(u.value?window.innerHeight-40:n.windowHeight),ye=X/Y;let y,E;ye>c?(E=Y,y=E*c):(y=X,E=y/c);const re=window.devicePixelRatio||1;a.value.width=Math.floor(y*re),a.value.height=Math.floor(E*re),a.value.style.display="block",a.value.style.objectFit="contain",u.value===""?(a.value.style.width=`${y}px`,a.value.style.height=`${E}px`,a.value.style.marginLeft=`${(X-y)/2}px`,a.value.style.marginTop=`${(Y-E)/2}px`):(a.value.style.width="100%",a.value.style.height="100%",a.value.style.marginLeft="0",a.value.style.marginTop="0"),console.log("Canvas适配完成:",{mode:u.value||"浮动",container:{width:X,height:Y},canvas:{drawWidth:y,drawHeight:E,physicalWidth:a.value.width,physicalHeight:a.value.height}}),o||(f.videoRef.value=d.value,f.canvasRef.value=a.value,await f.processVideo())},N=()=>{if(W.value||s.value||v.value||S.value){console.log("重连条件不满足:手动断开/已连接/正在连接/正在冷却");return}if(V().then(()=>{console.log("重连前已打断当前对话")}),n.maxReconnectTimes!==-1&&w.value>=n.maxReconnectTimes){console.warn(`数字人重连已达最大次数(${n.maxReconnectTimes}),停止重连`),_(),ue.default.funcElMessageShowCtrl(`数字人连接失败,已尝试${n.maxReconnectTimes}次重连,请重试!`),w.value=0;return}S.value=!0,H.value=setTimeout(()=>{try{w.value++,console.log(`数字人第${w.value}次重连... (最大次数:${n.maxReconnectTimes})`),ce()}finally{S.value=!1}},n.reconnectInterval*1e3)},pe=async()=>{if(l)try{l.addTransceiver("video",{direction:"recvonly"}),l.addTransceiver("audio",{direction:"recvonly"});const o=await l.createOffer();await l.setLocalDescription(o),await new Promise(c=>{if(l?.iceGatheringState==="complete")c();else{const g=()=>{l?.iceGatheringState==="complete"&&(l?.removeEventListener("icegatheringstatechange",g),c())};l?.addEventListener("icegatheringstatechange",g)}});const t=l.localDescription,i={sdp:t.sdp,type:t.type};G.default.digitalHumanOffer(n.baseUrl,i).then(c=>{c?(m=c.sessionid,l.setRemoteDescription(new RTCSessionDescription(c)),s.value=!0,w.value=0,_(),console.log("数字人连接成功,重置重连状态"),e.nextTick(()=>h())):(s.value=!1,console.log("数字人连接失败:接口返回空"),N()),v.value=!1}).catch(c=>{console.error("api.digitalHumanOffer 失败:",c),s.value=!1,v.value=!1,N()})}catch(o){console.error("negotiate 失败:",o),s.value=!1,v.value=!1,N()}},ce=()=>{if(s.value||v.value){console.log("当前已连接/正在连接,无需重复触发");return}v.value=!0,console.log("开始建立数字人连接...");const o={sdpSemantics:"unified-plan"};l&&(l.close(),l=null),l=new RTCPeerConnection(o),l.addEventListener("track",t=>{t.track.kind==="video"&&d.value&&(d.value.srcObject=t.streams[0],d.value.onloadedmetadata=async()=>{d.value&&a.value&&(f.videoRef.value=d.value,f.canvasRef.value=a.value,await h(),await f.processVideo())},d.value.onresize=()=>{h()})}),l.addEventListener("iceconnectionstatechange",()=>{switch(console.log("ICE连接状态变化:",l.iceConnectionState),l.iceConnectionState){case"disconnected":case"failed":case"closed":console.log("WebRTC连接断开/失败,触发重连"),s.value=!1,v.value=!1,l=null,m="",d.value&&(d.value.srcObject=null),x(),V().then(()=>{console.log("ICE连接断开,已打断对话")}),N();break;case"connected":w.value=0,_(),console.log("ICE连接成功,重置重连状态"),e.nextTick(()=>h());break}}),pe()},be=()=>{W.value=!0,_(),v.value=!1,f.stopProcessing(),x(),V().then(()=>{console.log("手动断开连接,已打断当前对话")}),setTimeout(()=>{l&&(l.close(),l=null),m="",d.value&&(d.value.srcObject=null),s.value=!1,w.value=0,console.log("手动断开连接,重置所有状态")},500)};ve({digitalHumanChat:A,digitalHumanInterruptTalk:V,isConnected:s,isConnecting:v,reconnect:N,clearReconnectTimer:_,currentReconnectTimes:w,isWaitingReconnect:S,adaptCanvasToContainer:h}),e.watch(u,async(o,t)=>{!T.value||!d.value||(await e.nextTick(),d.value.volume=o?.5:1,s.value&&(x(),await h()))},{immediate:!0,deep:!0}),e.watch([()=>s.value,()=>n.defaultPlayText],async([o,t],[i])=>{o&&!i&&t&&m&&(console.log("连接成功,自动播放默认文本:",t),await A(t),e.nextTick(()=>h()))},{immediate:!1}),e.watch(()=>n.defaultPlayText,async o=>{s.value&&o&&m&&(console.log("默认文本加载完成,自动播放:",o),await A(o),e.nextTick(()=>h()))},{immediate:!0}),e.onMounted(async()=>{await e.nextTick(),await e.nextTick(),T.value=!0;const{x:o,y:t}=ae();r.x=o,r.y=t,window.addEventListener("resize",de)});const de=ue.default.debounce(()=>{if(u.value===""){const{x:o,y:t}=ae();r.x=o,r.y=t}s.value&&T.value&&(x(!0),e.nextTick(()=>h(!0)))},50);return e.onUnmounted(()=>{V().then(()=>{console.log("组件卸载,已打断当前对话")}),document.removeEventListener("mousemove",B),document.removeEventListener("mousemove",U),document.removeEventListener("mouseup",F),document.removeEventListener("mousemove",z),document.removeEventListener("mouseup",q),window.removeEventListener("resize",de),_(),f.stopProcessing(),d.value&&(d.value.srcObject=null),l&&l.close()}),(o,t)=>{const i=e.resolveComponent("CloseBold"),c=ke.ElIcon,g=e.resolveDirective("drag");return e.openBlock(),e.createElementBlock("div",{class:"draggable-window-container",style:e.normalizeStyle(he.value)},[e.withDirectives(e.createElementVNode("div",Ve,null,512),[[e.vShow,te.value],[g,["digital-human-assistant",we,!0]]]),e.createElementVNode("div",{ref_key:"teleportFallbackRef",ref:D,class:"teleport-fallback"},null,512),e.withDirectives(e.createElementVNode("div",_e,null,512),[[e.vShow,I.value]]),e.withDirectives(e.createElementVNode("div",Te,null,512),[[e.vShow,O.value]]),M.value&&u.value==="left"?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["sidebar left-sidebar",{pressing:b.value}])},[e.createElementVNode("div",{class:"window-header",onMousedown:t[2]||(t[2]=p=>se("left",p)),onMouseup:P,onMouseleave:P},[e.createElementVNode("div",Ce,[e.createElementVNode("span",Se,e.toDisplayString(R.windowTitle),1),e.createElementVNode("div",xe,[e.withDirectives(e.createElementVNode("button",Ne,"未连接",512),[[e.vShow,!s.value&&!v.value]]),e.withDirectives(e.createElementVNode("button",Re,"连接中...",512),[[e.vShow,v.value]]),e.withDirectives(e.createElementVNode("button",De,"已连接",512),[[e.vShow,s.value]])])]),e.createVNode(c,{class:"drag-window-hide",onClick:t[0]||(t[0]=p=>$(!1)),onMousedown:t[1]||(t[1]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createVNode(i)]),_:1})],32),e.createElementVNode("div",Me,[e.renderSlot(o.$slots,"sidebar-left",{},void 0,!0),e.createElementVNode("div",{ref_key:"sidebarLeftVideoRef",ref:Z,class:"sidebar-video-container"},null,512)])],2)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"main-content-outer",ref_key:"containerRef",ref:K},[e.createElementVNode("div",Le,[e.renderSlot(o.$slots,"main",{},void 0,!0)]),M.value&&u.value===""?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"dragWindowRef",ref:J,class:"draggable-window",style:e.normalizeStyle(fe.value)},[e.createElementVNode("div",{class:"window-header",onMousedown:ge},[e.createElementVNode("div",He,[e.createElementVNode("span",We,e.toDisplayString(R.windowTitle),1),e.createElementVNode("div",$e,[e.withDirectives(e.createElementVNode("button",Be,"未连接",512),[[e.vShow,!s.value&&!v.value]]),e.withDirectives(e.createElementVNode("button",Pe,"连接中...",512),[[e.vShow,v.value]]),e.withDirectives(e.createElementVNode("button",Xe,"已连接",512),[[e.vShow,s.value]])])]),e.createVNode(c,{class:"drag-window-hide",onClick:t[3]||(t[3]=p=>$(!1)),onMousedown:t[4]||(t[4]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createVNode(i)]),_:1})],32),e.createElementVNode("div",Ye,[e.createElementVNode("div",{class:"video-container",ref_key:"windowVideoRef",ref:Q},null,512)])],4)):e.createCommentVNode("",!0)],512),M.value&&u.value==="right"?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["sidebar right-sidebar",{pressing:b.value}])},[e.createElementVNode("div",{class:"window-header",onMousedown:t[7]||(t[7]=p=>se("right",p)),onMouseup:P,onMouseleave:P},[e.createElementVNode("div",Ie,[e.createElementVNode("span",Oe,e.toDisplayString(R.windowTitle),1),e.createElementVNode("div",je,[e.withDirectives(e.createElementVNode("button",ze,"未连接",512),[[e.vShow,!s.value&&!v.value]]),e.withDirectives(e.createElementVNode("button",qe,"连接中...",512),[[e.vShow,v.value]]),e.withDirectives(e.createElementVNode("button",Ue,"已连接",512),[[e.vShow,s.value]])])]),e.createVNode(c,{class:"drag-window-hide",onClick:t[5]||(t[5]=p=>$(!1)),onMousedown:t[6]||(t[6]=e.withModifiers(()=>{},["stop"]))},{default:e.withCtx(()=>[e.createVNode(i)]),_:1})],32),e.createElementVNode("div",Fe,[e.renderSlot(o.$slots,"sidebar-right",{},void 0,!0),e.createElementVNode("div",{ref_key:"sidebarRightVideoRef",ref:ee,class:"sidebar-video-container"},null,512)])],2)):e.createCommentVNode("",!0),T.value?(e.openBlock(),e.createBlock(e.Teleport,{key:2,to:oe()},[e.createElementVNode("video",{ref_key:"digitalHumanVideo",ref:d,class:"digital-video source-video",poster:"",playsinline:"",autoplay:""},null,512),e.createElementVNode("canvas",{ref_key:"processedCanvas",ref:a,class:"digital-video processed-canvas"},null,512)],8,["to"])):e.createCommentVNode("",!0)],4)}}});exports.default=Ge;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("./axios.ts"),r={async digitalHumanChat(e,t){return await a.request(e,"/human",t,"post")},async digitalHumanOffer(e,t){return await a.request(e,"/offer",t,"post")}};exports.default=r;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("./axios.ts"),r={async digitalHumanChat(t,e){return await a.request(t,"/human",e,"post")},async digitalHumanOffer(t,e){return await a.request(t,"/offer",e,"post")},async digitalHumanInterruptTalk(t,e){return await a.request(t,"/interrupt_talk",e,"post")}};exports.default=r;
@@ -1 +1 @@
1
- @charset "UTF-8";:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121,187,255);--el-color-primary-light-5:rgb(160,207,255);--el-color-primary-light-7:rgb(198,226,255);--el-color-primary-light-8:rgb(217,236,255);--el-color-primary-light-9:rgb(236,245,255);--el-color-primary-dark-2:rgb(51,126,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(149,212,117);--el-color-success-light-5:rgb(179,225,157);--el-color-success-light-7:rgb(209,237,196);--el-color-success-light-8:rgb(225,243,216);--el-color-success-light-9:rgb(240,249,235);--el-color-success-dark-2:rgb(82,155,46);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(238,190,119);--el-color-warning-light-5:rgb(243,209,158);--el-color-warning-light-7:rgb(248,227,197);--el-color-warning-light-8:rgb(250,236,216);--el-color-warning-light-9:rgb(253,246,236);--el-color-warning-dark-2:rgb(184,130,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152,152);--el-color-danger-light-5:rgb(250,182,182);--el-color-danger-light-7:rgb(252,211,211);--el-color-danger-light-8:rgb(253,226,226);--el-color-danger-light-9:rgb(254,240,240);--el-color-danger-dark-2:rgb(196,86,86);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152,152);--el-color-error-light-5:rgb(250,182,182);--el-color-error-light-7:rgb(252,211,211);--el-color-error-light-8:rgb(253,226,226);--el-color-error-light-9:rgb(254,240,240);--el-color-error-dark-2:rgb(196,86,86);--el-color-info:#909399;--el-color-info-light-3:rgb(177,179,184);--el-color-info-light-5:rgb(200,201,204);--el-color-info-light-7:rgb(222,223,224);--el-color-info-light-8:rgb(233,233,235);--el-color-info-light-9:rgb(244,244,245);--el-color-info-dark-2:rgb(115,118,122);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;color:var(--color);display:inline-flex;fill:currentColor;font-size:inherit;height:1em;justify-content:center;line-height:1em;position:relative;width:1em}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:-moz-fit-content;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;width:-moz-fit-content;width:fit-content}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:0;margin:0 auto;right:0}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translateY(-100%)}.el-message-fade-enter-from.is-bottom,.el-message-fade-leave-to.is-bottom{transform:translateY(100%)}.draggable-window-container[data-v-bcb94941]{width:100%;height:100vh;min-width:800px;min-height:500px;display:flex;background:#f0f2f5;overflow:hidden;position:relative}.draggable-window-container .digital-human-assistant[data-v-bcb94941]{width:100px;height:100px;background:url(/src/assets/images/digitalHuman/digital_human_assistant.png) 0 0 no-repeat;background-size:100% 100%;box-shadow:0 4px 12px #000c;border-radius:50%;position:absolute;top:30px;right:30px;z-index:9;cursor:move}.draggable-window-container .drag-window-hide[data-v-bcb94941]{z-index:9;cursor:pointer}.draggable-window-container .teleport-fallback[data-v-bcb94941]{position:absolute;top:-9999px;left:-9999px;width:0;height:0;overflow:hidden;pointer-events:none}.draggable-window-container .placeholder[data-v-bcb94941]{position:fixed;top:0;width:var(--sidebar-width);height:100vh;background:#409eff33;border:2px dashed #4361ee;z-index:9998}.draggable-window-container .placeholder.left-placeholder[data-v-bcb94941]{left:0}.draggable-window-container .placeholder.right-placeholder[data-v-bcb94941]{right:0}.draggable-window-container .sidebar[data-v-bcb94941]{width:var(--sidebar-width);height:100%;background:#fff;box-shadow:0 4px 12px #0000001a;transition:opacity .2s}.draggable-window-container .sidebar.left-sidebar[data-v-bcb94941]{order:1}.draggable-window-container .sidebar.right-sidebar[data-v-bcb94941]{order:3}.draggable-window-container .sidebar.pressing[data-v-bcb94941]{opacity:.8}.draggable-window-container .sidebar .window-header[data-v-bcb94941]{height:40px;line-height:40px;background:#4361ee;color:#fff;padding:0 16px;border-radius:0;user-select:none;cursor:move;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.draggable-window-container .sidebar .window-header .window-header-left[data-v-bcb94941]{display:flex;align-items:center;gap:16px}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns[data-v-bcb94941]{display:flex;gap:8px;pointer-events:none}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button[data-v-bcb94941]{padding:2px 8px;border:none;border-radius:3px;font-size:12px;color:#fff}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.connect-btn[data-v-bcb94941]{background:#52c41a}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.connect-btn[data-v-bcb94941]:disabled{background:#a3d990;cursor:not-allowed}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-bcb94941]{background:#ff4d4f}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-bcb94941]:disabled{background:#ffb3b3;cursor:not-allowed}.draggable-window-container .sidebar .window-content[data-v-bcb94941]{padding:16px;height:calc(100% - 40px);background:#f8f9fa;box-sizing:border-box;position:relative}.draggable-window-container .sidebar .window-content .sidebar-video-container[data-v-bcb94941]{position:absolute;top:0;left:0;width:100%;height:100%;background:transparent;z-index:1;display:flex;padding:0;margin:0;overflow:hidden;justify-content:center;align-items:center}.draggable-window-container .sidebar .window-content .sidebar-video-container .source-video[data-v-bcb94941]{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}.draggable-window-container .sidebar .window-content .sidebar-video-container .processed-canvas[data-v-bcb94941]{object-fit:contain!important;background:transparent}.draggable-window-container .sidebar .window-content .sidebar-video-container .digital-video[data-v-bcb94941]{min-width:100%;max-width:100%;max-height:100%}.draggable-window-container .sidebar .window-content .sidebar-video-container .digital-video[poster][data-v-bcb94941]{background:url(/src/assets/images/digitalHuman/digital_human_assistant_bg.png) 0 0 no-repeat;background-size:200px 200px;background-position:center center;background-repeat:no-repeat}.draggable-window-container .main-content-outer[data-v-bcb94941]{order:2;flex:1;height:100vh;position:relative}.draggable-window-container .main-content-outer .main-content-inner[data-v-bcb94941]{padding:20px;height:100%;box-sizing:border-box}.draggable-window-container .main-content-outer .draggable-window[data-v-bcb94941]{position:absolute;width:var(--window-width);height:var(--window-height);border-radius:10px;box-shadow:0 4px 12px #0000001a}.draggable-window-container .main-content-outer .draggable-window .window-header[data-v-bcb94941]{height:40px;line-height:40px;background:#4361ee;color:#fff;padding:0 16px;border-radius:10px 10px 0 0;user-select:none;cursor:move;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left[data-v-bcb94941]{display:flex;align-items:center;gap:16px}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns[data-v-bcb94941]{display:flex;gap:8px;pointer-events:none}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button[data-v-bcb94941]{padding:2px 8px;border:none;border-radius:3px;font-size:12px;color:#fff}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.connect-btn[data-v-bcb94941]{background:#52c41a}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.connect-btn[data-v-bcb94941]:disabled{background:#a3d990;cursor:not-allowed}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-bcb94941]{background:#ff4d4f}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-bcb94941]:disabled{background:#ffb3b3;cursor:not-allowed}.draggable-window-container .main-content-outer .draggable-window .window-content[data-v-bcb94941]{height:calc(100% - 40px);border-radius:0 0 10px 10px;box-sizing:border-box;overflow:hidden}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container[data-v-bcb94941]{width:100%;height:100%;background:transparent;position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container .source-video[data-v-bcb94941]{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container .processed-canvas[data-v-bcb94941]{object-fit:contain!important;background:transparent}.draggable-window-container .main-content-outer .draggable-window .window-content .digital-video[data-v-bcb94941]{min-width:100%;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:cover}.draggable-window-container .main-content-outer .draggable-window .window-content .digital-video[poster][data-v-bcb94941]{background:url(/src/assets/images/digitalHuman/digital_human_assistant_bg.png) 0 0 no-repeat;background-size:100px 100px;background-position:center center;background-repeat:no-repeat}[data-v-bcb94941] .processed-canvas{object-fit:contain!important;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}
1
+ @charset "UTF-8";:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121,187,255);--el-color-primary-light-5:rgb(160,207,255);--el-color-primary-light-7:rgb(198,226,255);--el-color-primary-light-8:rgb(217,236,255);--el-color-primary-light-9:rgb(236,245,255);--el-color-primary-dark-2:rgb(51,126,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(149,212,117);--el-color-success-light-5:rgb(179,225,157);--el-color-success-light-7:rgb(209,237,196);--el-color-success-light-8:rgb(225,243,216);--el-color-success-light-9:rgb(240,249,235);--el-color-success-dark-2:rgb(82,155,46);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(238,190,119);--el-color-warning-light-5:rgb(243,209,158);--el-color-warning-light-7:rgb(248,227,197);--el-color-warning-light-8:rgb(250,236,216);--el-color-warning-light-9:rgb(253,246,236);--el-color-warning-dark-2:rgb(184,130,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152,152);--el-color-danger-light-5:rgb(250,182,182);--el-color-danger-light-7:rgb(252,211,211);--el-color-danger-light-8:rgb(253,226,226);--el-color-danger-light-9:rgb(254,240,240);--el-color-danger-dark-2:rgb(196,86,86);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152,152);--el-color-error-light-5:rgb(250,182,182);--el-color-error-light-7:rgb(252,211,211);--el-color-error-light-8:rgb(253,226,226);--el-color-error-light-9:rgb(254,240,240);--el-color-error-dark-2:rgb(196,86,86);--el-color-info:#909399;--el-color-info-light-3:rgb(177,179,184);--el-color-info-light-5:rgb(200,201,204);--el-color-info-light-7:rgb(222,223,224);--el-color-info-light-8:rgb(233,233,235);--el-color-info-light-9:rgb(244,244,245);--el-color-info-dark-2:rgb(115,118,122);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;color:var(--color);display:inline-flex;fill:currentColor;font-size:inherit;height:1em;justify-content:center;line-height:1em;position:relative;width:1em}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:-moz-fit-content;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;transition:opacity var(--el-transition-duration),transform .4s,top .4s,bottom .4s;width:-moz-fit-content;width:fit-content}.el-message.is-left{left:16px}.el-message.is-right{right:16px}.el-message.is-center{left:0;margin:0 auto;right:0}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translateY(-100%)}.el-message-fade-enter-from.is-bottom,.el-message-fade-leave-to.is-bottom{transform:translateY(100%)}.draggable-window-container[data-v-7ad3c1b0]{width:100%;height:100vh;min-width:800px;min-height:500px;display:flex;background:#f0f2f5;overflow:hidden;position:relative}.draggable-window-container .digital-human-assistant[data-v-7ad3c1b0]{width:100px;height:100px;background:url(/src/assets/images/digitalHuman/digital_human_assistant.png) 0 0 no-repeat;background-size:100% 100%;box-shadow:0 4px 12px #000c;border-radius:50%;position:absolute;top:30px;right:30px;z-index:9;cursor:move}.draggable-window-container .drag-window-hide[data-v-7ad3c1b0]{z-index:9;cursor:pointer}.draggable-window-container .teleport-fallback[data-v-7ad3c1b0]{position:absolute;top:-9999px;left:-9999px;width:0;height:0;overflow:hidden;pointer-events:none}.draggable-window-container .placeholder[data-v-7ad3c1b0]{position:fixed;top:0;width:var(--sidebar-width);height:100vh;background:#409eff33;border:2px dashed #4361ee;z-index:9998}.draggable-window-container .placeholder.left-placeholder[data-v-7ad3c1b0]{left:0}.draggable-window-container .placeholder.right-placeholder[data-v-7ad3c1b0]{right:0}.draggable-window-container .sidebar[data-v-7ad3c1b0]{width:var(--sidebar-width);height:100%;background:#fff;box-shadow:0 4px 12px #0000001a;transition:opacity .2s}.draggable-window-container .sidebar.left-sidebar[data-v-7ad3c1b0]{order:1}.draggable-window-container .sidebar.right-sidebar[data-v-7ad3c1b0]{order:3}.draggable-window-container .sidebar.pressing[data-v-7ad3c1b0]{opacity:.8}.draggable-window-container .sidebar .window-header[data-v-7ad3c1b0]{height:40px;line-height:40px;background:#4361ee;color:#fff;padding:0 16px;border-radius:0;user-select:none;cursor:move;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.draggable-window-container .sidebar .window-header .window-header-left[data-v-7ad3c1b0]{display:flex;align-items:center;gap:16px}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns[data-v-7ad3c1b0]{display:flex;gap:8px;pointer-events:none}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button[data-v-7ad3c1b0]{padding:2px 8px;border:none;border-radius:3px;font-size:12px;color:#fff}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.connect-btn[data-v-7ad3c1b0]{background:#52c41a}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.connect-btn[data-v-7ad3c1b0]:disabled{background:#a3d990;cursor:not-allowed}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-7ad3c1b0]{background:#ff4d4f}.draggable-window-container .sidebar .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-7ad3c1b0]:disabled{background:#ffb3b3;cursor:not-allowed}.draggable-window-container .sidebar .window-content[data-v-7ad3c1b0]{padding:16px;height:calc(100% - 40px);background:#f8f9fa;box-sizing:border-box;position:relative}.draggable-window-container .sidebar .window-content .sidebar-video-container[data-v-7ad3c1b0]{position:absolute;top:0;left:0;width:100%;height:100%;background:transparent;z-index:1;display:flex;padding:0;margin:0;overflow:hidden;justify-content:center;align-items:center}.draggable-window-container .sidebar .window-content .sidebar-video-container .source-video[data-v-7ad3c1b0]{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}.draggable-window-container .sidebar .window-content .sidebar-video-container .processed-canvas[data-v-7ad3c1b0]{object-fit:contain!important;background:transparent}.draggable-window-container .sidebar .window-content .sidebar-video-container .digital-video[data-v-7ad3c1b0]{min-width:100%;max-width:100%;max-height:100%}.draggable-window-container .sidebar .window-content .sidebar-video-container .digital-video[poster][data-v-7ad3c1b0]{background:url(/src/assets/images/digitalHuman/digital_human_assistant_bg.png) 0 0 no-repeat;background-size:200px 200px;background-position:center center;background-repeat:no-repeat}.draggable-window-container .main-content-outer[data-v-7ad3c1b0]{order:2;flex:1;height:100vh;position:relative}.draggable-window-container .main-content-outer .main-content-inner[data-v-7ad3c1b0]{padding:20px;height:100%;box-sizing:border-box}.draggable-window-container .main-content-outer .draggable-window[data-v-7ad3c1b0]{position:absolute;width:var(--window-width);height:var(--window-height);border-radius:10px;box-shadow:0 4px 12px #0000001a}.draggable-window-container .main-content-outer .draggable-window .window-header[data-v-7ad3c1b0]{height:40px;line-height:40px;background:#4361ee;color:#fff;padding:0 16px;border-radius:10px 10px 0 0;user-select:none;cursor:move;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left[data-v-7ad3c1b0]{display:flex;align-items:center;gap:16px}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns[data-v-7ad3c1b0]{display:flex;gap:8px;pointer-events:none}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button[data-v-7ad3c1b0]{padding:2px 8px;border:none;border-radius:3px;font-size:12px;color:#fff}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.connect-btn[data-v-7ad3c1b0]{background:#52c41a}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.connect-btn[data-v-7ad3c1b0]:disabled{background:#a3d990;cursor:not-allowed}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-7ad3c1b0]{background:#ff4d4f}.draggable-window-container .main-content-outer .draggable-window .window-header .window-header-left .window-header-btns button.disconnect-btn[data-v-7ad3c1b0]:disabled{background:#ffb3b3;cursor:not-allowed}.draggable-window-container .main-content-outer .draggable-window .window-content[data-v-7ad3c1b0]{height:calc(100% - 40px);border-radius:0 0 10px 10px;box-sizing:border-box;overflow:hidden}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container[data-v-7ad3c1b0]{width:100%;height:100%;background:transparent;position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container .source-video[data-v-7ad3c1b0]{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}.draggable-window-container .main-content-outer .draggable-window .window-content .video-container .processed-canvas[data-v-7ad3c1b0]{object-fit:contain!important;background:transparent}.draggable-window-container .main-content-outer .draggable-window .window-content .digital-video[data-v-7ad3c1b0]{min-width:100%;max-width:100%;max-height:100%;width:100%;height:100%;object-fit:cover}.draggable-window-container .main-content-outer .draggable-window .window-content .digital-video[poster][data-v-7ad3c1b0]{background:url(/src/assets/images/digitalHuman/digital_human_assistant_bg.png) 0 0 no-repeat;background-size:100px 100px;background-position:center center;background-repeat:no-repeat}[data-v-7ad3c1b0] .processed-canvas{object-fit:contain!important;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}