@asgard-js/react 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/components/chatbot/chatbot-body/chatbot-body.d.ts.map +1 -0
  2. package/dist/components/chatbot/chatbot-body/conversation-message-renderer.d.ts.map +1 -0
  3. package/dist/components/chatbot/chatbot-body/index.d.ts +2 -0
  4. package/dist/components/chatbot/chatbot-body/index.d.ts.map +1 -0
  5. package/dist/components/chatbot/chatbot-container/chatbot-container.d.ts +8 -0
  6. package/dist/components/chatbot/chatbot-container/chatbot-container.d.ts.map +1 -0
  7. package/dist/components/chatbot/chatbot-container/chatbot-full-screen-container.d.ts +4 -0
  8. package/dist/components/chatbot/chatbot-container/chatbot-full-screen-container.d.ts.map +1 -0
  9. package/dist/components/chatbot/chatbot-footer/chatbot-footer.d.ts.map +1 -1
  10. package/dist/components/chatbot/chatbot-header/chatbot-header.d.ts.map +1 -0
  11. package/dist/components/chatbot/chatbot-header/index.d.ts +2 -0
  12. package/dist/components/chatbot/chatbot-header/index.d.ts.map +1 -0
  13. package/dist/components/chatbot/chatbot.d.ts.map +1 -1
  14. package/dist/components/templates/index.d.ts +0 -1
  15. package/dist/components/templates/index.d.ts.map +1 -1
  16. package/dist/components/templates/text-template/bot-typing-box.d.ts.map +1 -0
  17. package/dist/components/templates/text-template/bot-typing-placeholder.d.ts.map +1 -0
  18. package/dist/components/templates/text-template/index.d.ts +2 -0
  19. package/dist/components/templates/text-template/index.d.ts.map +1 -1
  20. package/dist/components/templates/text-template/text-template.d.ts.map +1 -1
  21. package/dist/context/asgard-service-context.d.ts.map +1 -1
  22. package/dist/context/asgard-theme-context.d.ts +0 -1
  23. package/dist/context/asgard-theme-context.d.ts.map +1 -1
  24. package/dist/hooks/index.d.ts +6 -0
  25. package/dist/hooks/index.d.ts.map +1 -1
  26. package/dist/hooks/use-is-on-screen-keyboard-open.d.ts +2 -0
  27. package/dist/hooks/use-is-on-screen-keyboard-open.d.ts.map +1 -0
  28. package/dist/hooks/use-on-screen-keyboard-scroll-fix.d.ts +2 -0
  29. package/dist/hooks/use-on-screen-keyboard-scroll-fix.d.ts.map +1 -0
  30. package/dist/hooks/use-prevent-over-scrolling.d.ts +4 -0
  31. package/dist/hooks/use-prevent-over-scrolling.d.ts.map +1 -0
  32. package/dist/hooks/use-resize-observer.d.ts +9 -0
  33. package/dist/hooks/use-resize-observer.d.ts.map +1 -0
  34. package/dist/hooks/use-update-vh.d.ts +4 -0
  35. package/dist/hooks/use-update-vh.d.ts.map +1 -0
  36. package/dist/hooks/use-viewport-size.d.ts +6 -0
  37. package/dist/hooks/use-viewport-size.d.ts.map +1 -0
  38. package/dist/index.js +601 -426
  39. package/dist/style.css +1 -1
  40. package/package.json +1 -1
  41. package/dist/components/chatbot/chatbot-body.d.ts.map +0 -1
  42. package/dist/components/chatbot/chatbot-header.d.ts.map +0 -1
  43. package/dist/components/conversation-message-renderer/conversation-message-renderer.d.ts.map +0 -1
  44. package/dist/components/conversation-message-renderer/index.d.ts +0 -2
  45. package/dist/components/conversation-message-renderer/index.d.ts.map +0 -1
  46. package/dist/components/templates/bot-typing-box/bot-typing-box.d.ts.map +0 -1
  47. package/dist/components/templates/bot-typing-box/bot-typing-placeholder.d.ts.map +0 -1
  48. package/dist/components/templates/bot-typing-box/index.d.ts +0 -3
  49. package/dist/components/templates/bot-typing-box/index.d.ts.map +0 -1
  50. package/dist/components/templates/bot-typing-box/resize-observer-box.d.ts +0 -9
  51. package/dist/components/templates/bot-typing-box/resize-observer-box.d.ts.map +0 -1
  52. /package/dist/components/chatbot/{chatbot-body.d.ts → chatbot-body/chatbot-body.d.ts} +0 -0
  53. /package/dist/components/{conversation-message-renderer → chatbot/chatbot-body}/conversation-message-renderer.d.ts +0 -0
  54. /package/dist/components/chatbot/{chatbot-header.d.ts → chatbot-header/chatbot-header.d.ts} +0 -0
  55. /package/dist/components/templates/{bot-typing-box → text-template}/bot-typing-box.d.ts +0 -0
  56. /package/dist/components/templates/{bot-typing-box → text-template}/bot-typing-placeholder.d.ts +0 -0
package/dist/index.js CHANGED
@@ -1,36 +1,23 @@
1
- import { jsx as r, jsxs as m } from "react/jsx-runtime";
2
- import * as u from "react";
3
- import { createContext as ot, useMemo as y, useContext as nt, useRef as A, useEffect as L, useState as R, useCallback as g, memo as _t } from "react";
4
- import { AsgardServiceClient as ut, Conversation as dt, Channel as ht, MessageTemplateType as V } from "@asgard-js/core";
5
- function rt(e) {
6
- var t, o, n = "";
7
- if (typeof e == "string" || typeof e == "number") n += e;
8
- else if (typeof e == "object") if (Array.isArray(e)) {
9
- var s = e.length;
10
- for (t = 0; t < s; t++) e[t] && (o = rt(e[t])) && (n && (n += " "), n += o);
11
- } else for (o in e) e[o] && (n && (n += " "), n += o);
12
- return n;
13
- }
14
- function w() {
15
- for (var e, t, o = 0, n = "", s = arguments.length; o < s; o++) (e = arguments[o]) && (t = rt(e)) && (n && (n += " "), n += t);
16
- return n;
17
- }
1
+ import { jsx as s, jsxs as p } from "react/jsx-runtime";
2
+ import * as g from "react";
3
+ import { createContext as nt, useMemo as C, useContext as ot, useRef as M, useEffect as w, useState as x, useCallback as b, useLayoutEffect as rt, memo as gt } from "react";
4
+ import { AsgardServiceClient as ft, Conversation as mt, Channel as bt, MessageTemplateType as A } from "@asgard-js/core";
18
5
  function U(e) {
19
6
  return e !== null && typeof e == "object" && !Array.isArray(e);
20
7
  }
21
- function D(e, t) {
8
+ function st(e, t) {
22
9
  const o = { ...e };
23
10
  if (!t) return o;
24
- for (const [n, s] of Object.entries(t)) {
25
- if (!U(s)) {
26
- o[n] = s;
11
+ for (const [n, r] of Object.entries(t)) {
12
+ if (!U(r)) {
13
+ o[n] = r;
27
14
  continue;
28
15
  }
29
- o[n] = D(U(o[n]) ? o[n] : {}, s);
16
+ o[n] = st(U(o[n]) ? o[n] : {}, r);
30
17
  }
31
18
  return o;
32
19
  }
33
- const st = {
20
+ const ct = {
34
21
  chatbot: {
35
22
  width: "375px",
36
23
  height: "640px",
@@ -47,121 +34,236 @@ const st = {
47
34
  color: "var(--asg-color-text)",
48
35
  backgroundColor: "var(--asg-color-primary)"
49
36
  }
50
- }, ct = ot(
51
- st
37
+ }, it = nt(
38
+ ct
52
39
  );
53
- function mt(e) {
54
- const { children: t, fullScreen: o, theme: n = {} } = e, s = y(
55
- () => D(
56
- st,
57
- o ? D(n, {
58
- chatbot: {
59
- width: "100vw",
60
- height: "100vh",
61
- borderRadius: "var(--asg-radius-none)"
62
- }
63
- }) : n
64
- ),
65
- [o, n]
40
+ function pt(e) {
41
+ const { children: t, theme: o = {} } = e, n = C(
42
+ () => st(ct, o),
43
+ [o]
66
44
  );
67
- return /* @__PURE__ */ r(ct.Provider, { value: s, children: t });
45
+ return /* @__PURE__ */ s(it.Provider, { value: n, children: t });
68
46
  }
69
- function j() {
70
- return nt(ct);
47
+ function z() {
48
+ return ot(it);
71
49
  }
72
- function gt(e) {
73
- const { config: t } = e, o = A(null);
74
- return o.current || (o.current = new ut(t)), L(() => () => {
50
+ function vt(e) {
51
+ const { config: t } = e, o = M(null);
52
+ return o.current || (o.current = new ft(t)), w(() => () => {
75
53
  o.current && (o.current.close(), o.current = null);
76
54
  }, [t]), o.current;
77
55
  }
78
- function bt(e) {
56
+ function Ct(e) {
79
57
  const {
80
58
  client: t,
81
59
  customChannelId: o,
82
60
  customMessageId: n,
83
- initMessages: s,
61
+ initMessages: r,
84
62
  showDebugMessage: c
85
63
  } = e;
86
64
  if (!t)
87
65
  throw new Error("Client instance is required");
88
66
  if (!o)
89
67
  throw new Error("Custom channel id is required");
90
- const [i, a] = R(null), [_, f] = R(!0), [v, b] = R(!1), [l, d] = R(!1), [h, p] = R(null), C = g(async () => {
91
- const x = new dt({
68
+ const [i, a] = x(null), [l, d] = x(!0), [h, f] = x(!1), [u, _] = x(!1), [m, v] = x(null), E = b(async () => {
69
+ const L = new mt({
92
70
  showDebugMessage: c,
93
71
  messages: new Map(
94
- s == null ? void 0 : s.map((N) => [N.messageId, N])
72
+ r == null ? void 0 : r.map((H) => [H.messageId, H])
95
73
  )
96
74
  });
97
- b(!0), d(!0), p(x);
98
- const P = await ht.reset(
75
+ f(!0), _(!0), v(L);
76
+ const ht = await bt.reset(
99
77
  {
100
78
  client: t,
101
79
  customChannelId: o,
102
80
  customMessageId: n,
103
- conversation: x,
104
- statesObserver: (N) => {
105
- d(N.isConnecting), p(N.conversation);
81
+ conversation: L,
82
+ statesObserver: (H) => {
83
+ _(H.isConnecting), v(H.conversation);
106
84
  }
107
85
  },
108
86
  {
109
87
  onSseCompleted() {
110
- b(!1);
88
+ f(!1);
111
89
  },
112
90
  onSseError() {
113
- b(!1);
91
+ f(!1);
114
92
  }
115
93
  }
116
94
  );
117
- a(P);
95
+ a(ht);
118
96
  }, [
119
97
  t,
120
98
  o,
121
99
  n,
122
- s,
100
+ r,
123
101
  c
124
- ]), M = g(() => {
125
- a((x) => (x == null || x.close(), null)), f(!1), b(!1), d(!1), p(null);
126
- }, []), B = g(
127
- (x) => {
128
- i == null || i.sendMessage({ text: x });
102
+ ]), S = b(() => {
103
+ a((L) => (L == null || L.close(), null)), d(!1), f(!1), _(!1), v(null);
104
+ }, []), W = b(
105
+ (L) => {
106
+ i == null || i.sendMessage({ text: L });
129
107
  },
130
108
  [i]
131
109
  );
132
- return L(() => {
133
- !i && _ && C();
134
- }, [i, _, C]), L(() => () => M(), [M]), y(
110
+ return w(() => {
111
+ !i && l && E();
112
+ }, [i, l, E]), w(() => () => S(), [S]), C(
135
113
  () => ({
136
- isOpen: _,
137
- isResetting: v,
138
- isConnecting: l,
139
- conversation: h,
140
- sendMessage: B,
141
- resetChannel: C,
142
- closeChannel: M
114
+ isOpen: l,
115
+ isResetting: h,
116
+ isConnecting: u,
117
+ conversation: m,
118
+ sendMessage: W,
119
+ resetChannel: E,
120
+ closeChannel: S
143
121
  }),
144
122
  [
145
- _,
146
- v,
147
123
  l,
148
124
  h,
149
- B,
150
- C,
151
- M
125
+ u,
126
+ m,
127
+ W,
128
+ E,
129
+ S
152
130
  ]
153
131
  );
154
132
  }
155
- function ft(e, t) {
156
- const [o, n] = R(e);
157
- return L(() => {
158
- const s = window.setTimeout(() => {
133
+ function wt(e, t) {
134
+ const [o, n] = x(e);
135
+ return w(() => {
136
+ const r = window.setTimeout(() => {
159
137
  n(e);
160
138
  }, t ?? 300);
161
- return () => clearTimeout(s);
139
+ return () => clearTimeout(r);
162
140
  }, [e, t]), o;
163
141
  }
164
- const it = ot({
142
+ const D = typeof window < "u" ? rt : null;
143
+ function xt() {
144
+ return window.visualViewport ? [window.visualViewport.width, window.visualViewport.height] : [window.innerWidth, window.innerHeight];
145
+ }
146
+ function yt() {
147
+ const [e, t] = x(), o = b(() => {
148
+ const n = xt();
149
+ t(
150
+ (r) => r && r[0] === n[0] && r[1] === n[1] ? r : n
151
+ );
152
+ }, []);
153
+ return D == null || D(o, [o]), w(() => {
154
+ var r;
155
+ function n() {
156
+ o(), setTimeout(o, 1e3);
157
+ }
158
+ return window.addEventListener("resize", n), window.addEventListener("orientationchange", n), (r = window.visualViewport) == null || r.addEventListener("resize", n), () => {
159
+ var c;
160
+ window.removeEventListener("resize", n), window.removeEventListener("orientationchange", n), (c = window.visualViewport) == null || c.removeEventListener("resize", n);
161
+ };
162
+ }, [o]), e;
163
+ }
164
+ function K(e) {
165
+ return ["INPUT", "TEXTAREA"].includes(e.tagName) && !["button", "submit", "checkbox", "file", "image"].includes(
166
+ e.type
167
+ ) || e.hasAttribute("contenteditable");
168
+ }
169
+ function Tt() {
170
+ const [e, t] = x(!1);
171
+ return w(() => {
172
+ function o(r) {
173
+ if (!r.target) return;
174
+ const c = r.target;
175
+ K(c) && t(!0);
176
+ }
177
+ function n(r) {
178
+ if (!r.target) return;
179
+ const c = r.target;
180
+ K(c) && t(!1);
181
+ }
182
+ return document.addEventListener("focusin", o), document.addEventListener("focusout", n), () => {
183
+ document.removeEventListener("focusin", o), document.removeEventListener("focusout", n);
184
+ };
185
+ }, []), e;
186
+ }
187
+ function Nt() {
188
+ w(() => {
189
+ function e() {
190
+ window.scrollTo(0, 0);
191
+ }
192
+ return window.addEventListener("scroll", e), () => {
193
+ window.removeEventListener("scroll", e);
194
+ };
195
+ }, []);
196
+ }
197
+ function at(e) {
198
+ if (e.scrollHeight > e.offsetHeight)
199
+ return e;
200
+ const t = e.parentElement;
201
+ if (t)
202
+ return at(t);
203
+ }
204
+ function Et(e) {
205
+ w(() => {
206
+ const t = e.current;
207
+ if (!t) return;
208
+ let o;
209
+ function n(c) {
210
+ c.touches.length === 1 && (o = c.touches[0]);
211
+ }
212
+ function r(c) {
213
+ if (c.touches.length !== 1 || !o) return;
214
+ const i = o.pageY - c.targetTouches[0].pageY, a = o.pageX - c.targetTouches[0].pageX;
215
+ if (Math.abs(a) > Math.abs(i)) return;
216
+ const l = c.target, d = at(l);
217
+ if (!d) {
218
+ c.preventDefault();
219
+ return;
220
+ }
221
+ const h = i < 0, f = d.scrollTop === 0;
222
+ if (h && f) {
223
+ c.preventDefault();
224
+ return;
225
+ }
226
+ const u = d.scrollTop === d.scrollHeight - d.clientHeight;
227
+ if (!h && u) {
228
+ c.preventDefault();
229
+ return;
230
+ }
231
+ }
232
+ return t.addEventListener("touchstart", n), t.addEventListener("touchmove", r), () => {
233
+ t.removeEventListener("touchstart", n), t.removeEventListener("touchmove", r);
234
+ };
235
+ }, [e]);
236
+ }
237
+ const j = typeof window < "u" ? rt : null;
238
+ function Lt(e) {
239
+ const t = b(() => {
240
+ const o = window.innerHeight * 0.01;
241
+ e.current && e.current.style.setProperty("--vh", `${o}px`);
242
+ }, [e]);
243
+ j == null || j(t, [t]), w(() => {
244
+ function o() {
245
+ t(), setTimeout(t, 1e3);
246
+ }
247
+ return t(), window.addEventListener("resize", o), () => {
248
+ window.removeEventListener("resize", o);
249
+ };
250
+ }, [t]);
251
+ }
252
+ function kt(e) {
253
+ const { ref: t, onResize: o } = e;
254
+ w(() => {
255
+ const n = new ResizeObserver((r) => {
256
+ for (const c of r) {
257
+ const { width: i, height: a } = c.contentRect;
258
+ o(i, a);
259
+ }
260
+ });
261
+ return t.current && n.observe(t.current), () => {
262
+ n.disconnect();
263
+ };
264
+ }, [t, o]);
265
+ }
266
+ const lt = nt({
165
267
  avatar: void 0,
166
268
  client: null,
167
269
  isOpen: !1,
@@ -171,72 +273,69 @@ const it = ot({
171
273
  messageBoxBottomRef: { current: null },
172
274
  botTypingPlaceholder: void 0
173
275
  });
174
- function pt(e) {
276
+ function Mt(e) {
175
277
  const {
176
278
  avatar: t,
177
279
  children: o,
178
280
  config: n,
179
- botTypingPlaceholder: s,
281
+ botTypingPlaceholder: r,
180
282
  customChannelId: c,
181
- customMessageId: i,
182
- delayTime: a,
183
- initMessages: _,
184
- options: f,
185
- ...v
186
- } = e, b = A(null), l = gt({ config: n }), {
187
- isOpen: d,
188
- isResetting: h,
189
- isConnecting: p,
190
- conversation: C,
191
- sendMessage: M,
192
- resetChannel: B,
193
- closeChannel: x
194
- } = bt({
195
- client: l,
283
+ initMessages: i,
284
+ options: a
285
+ } = e, l = M(null), d = vt({ config: n }), {
286
+ isOpen: h,
287
+ isResetting: f,
288
+ isConnecting: u,
289
+ conversation: _,
290
+ sendMessage: m,
291
+ resetChannel: v,
292
+ closeChannel: E
293
+ } = Ct({
294
+ client: d,
196
295
  customChannelId: c,
197
- initMessages: _,
198
- showDebugMessage: f == null ? void 0 : f.showDebugMessage
199
- }), P = y(
296
+ initMessages: i,
297
+ showDebugMessage: a == null ? void 0 : a.showDebugMessage
298
+ }), S = C(
200
299
  () => ({
201
300
  avatar: t,
202
- client: l,
203
- isOpen: d,
204
- isResetting: h,
205
- isConnecting: p,
206
- messages: (C == null ? void 0 : C.messages) ?? null,
207
- sendMessage: M,
208
- resetChannel: B,
209
- closeChannel: x,
210
- botTypingPlaceholder: s,
211
- messageBoxBottomRef: b
301
+ client: d,
302
+ isOpen: h,
303
+ isResetting: f,
304
+ isConnecting: u,
305
+ messages: (_ == null ? void 0 : _.messages) ?? null,
306
+ sendMessage: m,
307
+ resetChannel: v,
308
+ closeChannel: E,
309
+ botTypingPlaceholder: r,
310
+ messageBoxBottomRef: l
212
311
  }),
213
312
  [
214
313
  t,
215
- l,
216
314
  d,
217
315
  h,
218
- p,
219
- C == null ? void 0 : C.messages,
220
- M,
221
- B,
222
- x,
223
- s
316
+ f,
317
+ u,
318
+ _ == null ? void 0 : _.messages,
319
+ m,
320
+ v,
321
+ E,
322
+ r
224
323
  ]
225
- ), N = j();
226
- return /* @__PURE__ */ r(it.Provider, { value: P, children: /* @__PURE__ */ r("div", { style: N == null ? void 0 : N.chatbot, ...v, children: o }) });
324
+ );
325
+ return /* @__PURE__ */ s(lt.Provider, { value: S, children: o });
227
326
  }
228
- function T() {
229
- return nt(it);
230
- }
231
- const Ct = "_chatbot_header_cqlve_1", vt = "_chatbot_header__content_cqlve_1", xt = "_chatbot_header__title_cqlve_9", yt = "_chatbot_header__extra_cqlve_20", I = {
232
- chatbot_header: Ct,
233
- chatbot_header__content: vt,
234
- chatbot_header__title: xt,
235
- chatbot_header__extra: yt
236
- }, wt = (e) => /* @__PURE__ */ u.createElement("svg", { width: 33, height: 32, viewBox: "0 0 33 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ u.createElement("g", { clipPath: "url(#clip0_3084_29383)" }, /* @__PURE__ */ u.createElement("path", { d: "M0.410645 16C0.410645 7.16344 7.57409 0 16.4106 0C25.2472 0 32.4106 7.16344 32.4106 16C32.4106 24.8366 25.2472 32 16.4106 32C7.57409 32 0.410645 24.8366 0.410645 16Z", fill: "#333333" }), /* @__PURE__ */ u.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.5788 6.33398C19.8925 6.33398 22.5788 9.02028 22.5788 12.334C22.5788 14.2211 21.7075 15.9048 20.3453 17.0047C23.6487 18.3735 26.0607 21.6974 26.4106 25.6673H24.4569C24.0206 21.6274 20.9742 18.4911 17.2591 18.3397L16.9776 18.334H16.5788H15.8437C12.0019 18.334 8.81164 21.5258 8.36437 25.6673H6.41064C6.76857 21.607 9.28344 18.2225 12.7029 16.9143C11.4036 15.8137 10.5788 14.1701 10.5788 12.334C10.5788 9.02028 13.265 6.33398 16.5788 6.33398ZM16.5788 16.334C18.7879 16.334 20.5788 14.5431 20.5788 12.334C20.5788 10.1248 18.7879 8.33398 16.5788 8.33398C14.3696 8.33398 12.5788 10.1248 12.5788 12.334C12.5788 14.5431 14.3696 16.334 16.5788 16.334Z", fill: "#8C8C8C" })), /* @__PURE__ */ u.createElement("defs", null, /* @__PURE__ */ u.createElement("clipPath", { id: "clip0_3084_29383" }, /* @__PURE__ */ u.createElement("path", { d: "M0.410645 16C0.410645 7.16344 7.57409 0 16.4106 0C25.2472 0 32.4106 7.16344 32.4106 16C32.4106 24.8366 25.2472 32 16.4106 32C7.57409 32 0.410645 24.8366 0.410645 16Z", fill: "white" }))));
237
- function Tt(e) {
327
+ function N() {
328
+ return ot(lt);
329
+ }
330
+ const St = "_chatbot_header_luxt4_1", Rt = "_chatbot_header__content_luxt4_4", zt = "_chatbot_header__title_luxt4_12", Ht = "_chatbot_header__extra_luxt4_23", Z = {
331
+ chatbot_header: St,
332
+ chatbot_header__content: Rt,
333
+ chatbot_header__title: zt,
334
+ chatbot_header__extra: Ht
335
+ }, Vt = (e) => /* @__PURE__ */ g.createElement("svg", { width: 33, height: 32, viewBox: "0 0 33 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ g.createElement("g", { clipPath: "url(#clip0_3084_29383)" }, /* @__PURE__ */ g.createElement("path", { d: "M0.410645 16C0.410645 7.16344 7.57409 0 16.4106 0C25.2472 0 32.4106 7.16344 32.4106 16C32.4106 24.8366 25.2472 32 16.4106 32C7.57409 32 0.410645 24.8366 0.410645 16Z", fill: "#333333" }), /* @__PURE__ */ g.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M16.5788 6.33398C19.8925 6.33398 22.5788 9.02028 22.5788 12.334C22.5788 14.2211 21.7075 15.9048 20.3453 17.0047C23.6487 18.3735 26.0607 21.6974 26.4106 25.6673H24.4569C24.0206 21.6274 20.9742 18.4911 17.2591 18.3397L16.9776 18.334H16.5788H15.8437C12.0019 18.334 8.81164 21.5258 8.36437 25.6673H6.41064C6.76857 21.607 9.28344 18.2225 12.7029 16.9143C11.4036 15.8137 10.5788 14.1701 10.5788 12.334C10.5788 9.02028 13.265 6.33398 16.5788 6.33398ZM16.5788 16.334C18.7879 16.334 20.5788 14.5431 20.5788 12.334C20.5788 10.1248 18.7879 8.33398 16.5788 8.33398C14.3696 8.33398 12.5788 10.1248 12.5788 12.334C12.5788 14.5431 14.3696 16.334 16.5788 16.334Z", fill: "#8C8C8C" })), /* @__PURE__ */ g.createElement("defs", null, /* @__PURE__ */ g.createElement("clipPath", { id: "clip0_3084_29383" }, /* @__PURE__ */ g.createElement("path", { d: "M0.410645 16C0.410645 7.16344 7.57409 0 16.4106 0C25.2472 0 32.4106 7.16344 32.4106 16C32.4106 24.8366 25.2472 32 16.4106 32C7.57409 32 0.410645 24.8366 0.410645 16Z", fill: "white" }))));
336
+ function Bt(e) {
238
337
  const { avatar: t } = e;
239
- return t ? /* @__PURE__ */ r(
338
+ return t ? /* @__PURE__ */ s(
240
339
  "img",
241
340
  {
242
341
  src: t,
@@ -247,89 +346,103 @@ function Tt(e) {
247
346
  borderRadius: "50%"
248
347
  }
249
348
  }
250
- ) : /* @__PURE__ */ r(wt, {});
349
+ ) : /* @__PURE__ */ s(Vt, {});
251
350
  }
252
- const Nt = (e) => /* @__PURE__ */ u.createElement("svg", { width: 16, height: 16, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ u.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M3.49453 2.3352C6.44049 -0.226723 10.9105 -0.106316 13.7142 2.69633C16.6428 5.62613 16.6428 10.3739 13.7144 13.3035C10.7846 16.2322 6.03581 16.2322 3.1073 13.3036C2.30873 12.505 1.71132 11.5536 1.34188 10.5109L1.78892 10.3525L1.34171 10.5106L1.22791 10.162C1.01752 9.46018 0.910643 8.73159 0.910643 7.9997H2.4542L2.46382 8.33865C2.49584 8.9024 2.60763 9.46037 2.79674 9.99539L2.7968 9.99536L2.90116 10.2683C3.19714 10.9887 3.63414 11.6475 4.19876 12.2121C6.52451 14.5379 10.2961 14.5379 12.6229 12.212C14.9486 9.88539 14.9486 6.11464 12.6227 3.78781C10.3306 1.49653 6.63579 1.46263 4.30292 3.68622L6.68087 3.68698V5.22954H3.49394H1.95141V3.68698V0.5H3.49394L3.49453 2.3352Z", fill: "#8C8C8C" })), Rt = (e) => /* @__PURE__ */ u.createElement("svg", { width: 15, height: 14, viewBox: "0 0 15 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ u.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M13.3496 0L7.41062 5.938L1.47162 0L0.411621 1.06L6.34962 6.999L0.411621 12.938L1.47162 13.999L7.41062 8.059L13.3496 13.999L14.4096 12.938L8.47162 6.999L14.4096 1.06L13.3496 0Z", fill: "#8C8C8C" }));
253
- function Mt(e) {
254
- const { title: t, onReset: o, onClose: n } = e, { chatbot: s } = j(), { avatar: c, isResetting: i, resetChannel: a, closeChannel: _ } = T(), f = y(
351
+ const At = (e) => /* @__PURE__ */ g.createElement("svg", { width: 16, height: 16, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ g.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M3.49453 2.3352C6.44049 -0.226723 10.9105 -0.106316 13.7142 2.69633C16.6428 5.62613 16.6428 10.3739 13.7144 13.3035C10.7846 16.2322 6.03581 16.2322 3.1073 13.3036C2.30873 12.505 1.71132 11.5536 1.34188 10.5109L1.78892 10.3525L1.34171 10.5106L1.22791 10.162C1.01752 9.46018 0.910643 8.73159 0.910643 7.9997H2.4542L2.46382 8.33865C2.49584 8.9024 2.60763 9.46037 2.79674 9.99539L2.7968 9.99536L2.90116 10.2683C3.19714 10.9887 3.63414 11.6475 4.19876 12.2121C6.52451 14.5379 10.2961 14.5379 12.6229 12.212C14.9486 9.88539 14.9486 6.11464 12.6227 3.78781C10.3306 1.49653 6.63579 1.46263 4.30292 3.68622L6.68087 3.68698V5.22954H3.49394H1.95141V3.68698V0.5H3.49394L3.49453 2.3352Z", fill: "#8C8C8C" })), It = (e) => /* @__PURE__ */ g.createElement("svg", { width: 15, height: 14, viewBox: "0 0 15 14", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ g.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M13.3496 0L7.41062 5.938L1.47162 0L0.411621 1.06L6.34962 6.999L0.411621 12.938L1.47162 13.999L7.41062 8.059L13.3496 13.999L14.4096 12.938L8.47162 6.999L14.4096 1.06L13.3496 0Z", fill: "#8C8C8C" }));
352
+ function Ot(e) {
353
+ const { title: t, onReset: o, onClose: n } = e, { chatbot: r } = z(), { avatar: c, isResetting: i, resetChannel: a, closeChannel: l } = N(), d = C(
255
354
  () => ({
256
- maxWidth: (s == null ? void 0 : s.contentMaxWidth) ?? "1200px"
355
+ maxWidth: (r == null ? void 0 : r.contentMaxWidth) ?? "1200px",
356
+ borderBottomColor: r == null ? void 0 : r.borderColor
257
357
  }),
258
- [s]
259
- ), v = g(
260
- (l) => {
261
- i || (l.stopPropagation(), o == null || o(), a == null || a());
358
+ [r]
359
+ ), h = b(
360
+ (u) => {
361
+ i || (u.stopPropagation(), o == null || o(), a == null || a());
262
362
  },
263
363
  [i, o, a]
264
- ), b = g(
265
- (l) => {
266
- i || (l.stopPropagation(), n == null || n(), _ == null || _());
364
+ ), f = b(
365
+ (u) => {
366
+ i || (u.stopPropagation(), n == null || n(), l == null || l());
267
367
  },
268
- [i, n, _]
368
+ [i, n, l]
269
369
  );
270
- return /* @__PURE__ */ r("div", { className: I.chatbot_header, children: /* @__PURE__ */ m("div", { className: I.chatbot_header__content, style: f, children: [
271
- /* @__PURE__ */ m("div", { className: I.chatbot_header__title, children: [
272
- /* @__PURE__ */ r(Tt, { avatar: c }),
273
- /* @__PURE__ */ r("h4", { children: t })
370
+ return /* @__PURE__ */ s("div", { className: Z.chatbot_header, children: /* @__PURE__ */ p("div", { className: Z.chatbot_header__content, style: d, children: [
371
+ /* @__PURE__ */ p("div", { className: Z.chatbot_header__title, children: [
372
+ /* @__PURE__ */ s(Bt, { avatar: c }),
373
+ /* @__PURE__ */ s("h4", { children: t })
274
374
  ] }),
275
- /* @__PURE__ */ m("div", { className: I.chatbot_header__extra, children: [
276
- /* @__PURE__ */ r("div", { onClick: v, children: /* @__PURE__ */ r(Nt, {}) }),
277
- /* @__PURE__ */ r("div", { onClick: b, children: /* @__PURE__ */ r(Rt, {}) })
375
+ /* @__PURE__ */ p("div", { className: Z.chatbot_header__extra, children: [
376
+ /* @__PURE__ */ s("div", { onClick: h, children: /* @__PURE__ */ s(At, {}) }),
377
+ /* @__PURE__ */ s("div", { onClick: f, children: /* @__PURE__ */ s(It, {}) })
278
378
  ] })
279
379
  ] }) });
280
380
  }
281
- const St = "_chatbot_body_1f0gq_1", Lt = "_chatbot_body__content_1f0gq_7", J = {
282
- chatbot_body: St,
283
- chatbot_body__content: Lt
284
- }, Et = "_template_box_1ozig_1", E = {
285
- template_box: Et,
381
+ const Zt = "_chatbot_body_f6sqm_1", Pt = "_chatbot_body__content_f6sqm_5", X = {
382
+ chatbot_body: Zt,
383
+ chatbot_body__content: Pt
384
+ }, Dt = "_template_box_1ozig_1", R = {
385
+ template_box: Dt,
286
386
  "template_box--bot": "_template_box--bot_1ozig_7",
287
387
  "template_box--horizontal": "_template_box--horizontal_1ozig_7",
288
388
  "template_box--vertical": "_template_box--vertical_1ozig_10",
289
389
  "template_box--user": "_template_box--user_1ozig_14"
290
390
  };
291
- function q(e) {
292
- const { type: t, direction: o = "horizontal", children: n } = e, s = y(() => {
391
+ function ut(e) {
392
+ var t, o, n = "";
393
+ if (typeof e == "string" || typeof e == "number") n += e;
394
+ else if (typeof e == "object") if (Array.isArray(e)) {
395
+ var r = e.length;
396
+ for (t = 0; t < r; t++) e[t] && (o = ut(e[t])) && (n && (n += " "), n += o);
397
+ } else for (o in e) e[o] && (n && (n += " "), n += o);
398
+ return n;
399
+ }
400
+ function T() {
401
+ for (var e, t, o = 0, n = "", r = arguments.length; o < r; o++) (e = arguments[o]) && (t = ut(e)) && (n && (n += " "), n += t);
402
+ return n;
403
+ }
404
+ function O(e) {
405
+ const { type: t, direction: o = "horizontal", children: n } = e, r = C(() => {
293
406
  switch (t) {
294
407
  case "user":
295
- return w(E.template_box, E["template_box--user"]);
408
+ return T(R.template_box, R["template_box--user"]);
296
409
  case "bot":
297
410
  default:
298
- return w(
299
- E.template_box,
300
- E["template_box--bot"],
301
- o === "horizontal" ? E["template_box--horizontal"] : E["template_box--vertical"]
411
+ return T(
412
+ R.template_box,
413
+ R["template_box--bot"],
414
+ o === "horizontal" ? R["template_box--horizontal"] : R["template_box--vertical"]
302
415
  );
303
416
  }
304
417
  }, [o, t]);
305
- return /* @__PURE__ */ r("div", { className: s, children: n });
306
- }
307
- const kt = "_template_box_content_12ojl_1", Bt = "_content_12ojl_7", K = {
308
- template_box_content: kt,
309
- content: Bt
310
- }, Ht = "_quick_replies_box_zoq7y_1", zt = "_quick_reply_zoq7y_7", Q = {
311
- quick_replies_box: Ht,
312
- quick_reply: zt
418
+ return /* @__PURE__ */ s("div", { className: r, children: n });
419
+ }
420
+ const jt = "_template_box_content_fs2wk_1", qt = "_content_fs2wk_8", Y = {
421
+ template_box_content: jt,
422
+ content: qt
423
+ }, $t = "_quick_replies_box_zoq7y_1", Ft = "_quick_reply_zoq7y_7", J = {
424
+ quick_replies_box: $t,
425
+ quick_reply: Ft
313
426
  };
314
- function Vt(e) {
315
- const { quickReplies: t } = e, { sendMessage: o, isConnecting: n } = T(), s = g(
427
+ function Wt(e) {
428
+ const { quickReplies: t } = e, { sendMessage: o, isConnecting: n } = N(), r = b(
316
429
  (c) => {
317
430
  o == null || o(c);
318
431
  },
319
432
  [o]
320
433
  );
321
- return t != null && t.length ? /* @__PURE__ */ r("div", { className: Q.quick_replies_box, children: t.map((c) => /* @__PURE__ */ r(
434
+ return t != null && t.length ? /* @__PURE__ */ s("div", { className: J.quick_replies_box, children: t.map((c) => /* @__PURE__ */ s(
322
435
  "button",
323
436
  {
324
- className: Q.quick_reply,
437
+ className: J.quick_reply,
325
438
  disabled: n,
326
- onClick: () => s(c.text),
439
+ onClick: () => r(c.text),
327
440
  children: c.text
328
441
  },
329
442
  c.text
330
443
  )) }) : null;
331
444
  }
332
- function O(e) {
445
+ function q(e) {
333
446
  return e.toLocaleTimeString("zh-TW", {
334
447
  timeZone: "Asia/Taipei",
335
448
  hour: "2-digit",
@@ -337,84 +450,38 @@ function O(e) {
337
450
  hour12: !1
338
451
  });
339
452
  }
340
- const qt = "_time_rgg92_1", At = {
341
- time: qt
453
+ const Ut = "_time_rgg92_1", Kt = {
454
+ time: Ut
342
455
  };
343
- function F(e) {
456
+ function $(e) {
344
457
  const { time: t, className: o } = e;
345
- return t ? /* @__PURE__ */ r("div", { className: w(At.time, o), children: O(t) }) : null;
458
+ return t ? /* @__PURE__ */ s("div", { className: T(Kt.time, o), children: q(t) }) : null;
346
459
  }
347
- function W(e) {
460
+ function F(e) {
348
461
  const { quickReplies: t, time: o, children: n } = e;
349
- return /* @__PURE__ */ m("div", { className: K.template_box_content, children: [
350
- /* @__PURE__ */ m("div", { className: K.content, children: [
462
+ return /* @__PURE__ */ p("div", { className: Y.template_box_content, children: [
463
+ /* @__PURE__ */ p("div", { className: Y.content, children: [
351
464
  n,
352
- /* @__PURE__ */ r(F, { time: o })
465
+ /* @__PURE__ */ s($, { time: o })
353
466
  ] }),
354
- !!(t != null && t.length) && /* @__PURE__ */ r(Vt, { quickReplies: t })
467
+ !!(t != null && t.length) && /* @__PURE__ */ s(Wt, { quickReplies: t })
355
468
  ] });
356
469
  }
357
- const It = "_bot_avatar_xrs9x_1", X = {
358
- bot_avatar: It
359
- }, Zt = (e) => /* @__PURE__ */ u.createElement("svg", { viewBox: "0 0 25 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ u.createElement("path", { d: "M0.40625 12C0.40625 5.37258 5.77883 0 12.4062 0C19.0337 0 24.4062 5.37258 24.4062 12C24.4062 18.6274 19.0337 24 12.4062 24C5.77883 24 0.40625 18.6274 0.40625 12Z", fill: "#585858" }), /* @__PURE__ */ u.createElement("path", { d: "M6.40625 18.75V15C6.40625 14.5875 6.55313 14.2344 6.84688 13.9406C7.14063 13.6469 7.49375 13.5 7.90625 13.5H16.9062C17.3188 13.5 17.6719 13.6469 17.9656 13.9406C18.2594 14.2344 18.4062 14.5875 18.4062 15V18.75H6.40625ZM10.1562 12.75C9.11875 12.75 8.23438 12.3844 7.50312 11.6531C6.77187 10.9219 6.40625 10.0375 6.40625 9C6.40625 7.9625 6.77187 7.07812 7.50312 6.34687C8.23438 5.61562 9.11875 5.25 10.1562 5.25H14.6562C15.6938 5.25 16.5781 5.61562 17.3094 6.34687C18.0406 7.07812 18.4062 7.9625 18.4062 9C18.4062 10.0375 18.0406 10.9219 17.3094 11.6531C16.5781 12.3844 15.6938 12.75 14.6562 12.75H10.1562ZM7.90625 17.25H16.9062V15H7.90625V17.25ZM10.1562 11.25H14.6562C15.2812 11.25 15.8125 11.0312 16.25 10.5938C16.6875 10.1562 16.9062 9.625 16.9062 9C16.9062 8.375 16.6875 7.84375 16.25 7.40625C15.8125 6.96875 15.2812 6.75 14.6562 6.75H10.1562C9.53125 6.75 9 6.96875 8.5625 7.40625C8.125 7.84375 7.90625 8.375 7.90625 9C7.90625 9.625 8.125 10.1562 8.5625 10.5938C9 11.0312 9.53125 11.25 10.1562 11.25ZM10.1562 9.75C10.3688 9.75 10.5469 9.67812 10.6906 9.53438C10.8344 9.39062 10.9062 9.2125 10.9062 9C10.9062 8.7875 10.8344 8.60938 10.6906 8.46562C10.5469 8.32187 10.3688 8.25 10.1562 8.25C9.94375 8.25 9.76562 8.32187 9.62187 8.46562C9.47812 8.60938 9.40625 8.7875 9.40625 9C9.40625 9.2125 9.47812 9.39062 9.62187 9.53438C9.76562 9.67812 9.94375 9.75 10.1562 9.75ZM14.6562 9.75C14.8687 9.75 15.0469 9.67812 15.1906 9.53438C15.3344 9.39062 15.4062 9.2125 15.4062 9C15.4062 8.7875 15.3344 8.60938 15.1906 8.46562C15.0469 8.32187 14.8687 8.25 14.6562 8.25C14.4438 8.25 14.2656 8.32187 14.1219 8.46562C13.9781 8.60938 13.9062 8.7875 13.9062 9C13.9062 9.2125 13.9781 9.39062 14.1219 9.53438C14.2656 9.67812 14.4438 9.75 14.6562 9.75Z", fill: "white" })), $ = _t((e) => {
470
+ const Xt = "_bot_avatar_xrs9x_1", Q = {
471
+ bot_avatar: Xt
472
+ }, Yt = (e) => /* @__PURE__ */ g.createElement("svg", { viewBox: "0 0 25 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ g.createElement("path", { d: "M0.40625 12C0.40625 5.37258 5.77883 0 12.4062 0C19.0337 0 24.4062 5.37258 24.4062 12C24.4062 18.6274 19.0337 24 12.4062 24C5.77883 24 0.40625 18.6274 0.40625 12Z", fill: "#585858" }), /* @__PURE__ */ g.createElement("path", { d: "M6.40625 18.75V15C6.40625 14.5875 6.55313 14.2344 6.84688 13.9406C7.14063 13.6469 7.49375 13.5 7.90625 13.5H16.9062C17.3188 13.5 17.6719 13.6469 17.9656 13.9406C18.2594 14.2344 18.4062 14.5875 18.4062 15V18.75H6.40625ZM10.1562 12.75C9.11875 12.75 8.23438 12.3844 7.50312 11.6531C6.77187 10.9219 6.40625 10.0375 6.40625 9C6.40625 7.9625 6.77187 7.07812 7.50312 6.34687C8.23438 5.61562 9.11875 5.25 10.1562 5.25H14.6562C15.6938 5.25 16.5781 5.61562 17.3094 6.34687C18.0406 7.07812 18.4062 7.9625 18.4062 9C18.4062 10.0375 18.0406 10.9219 17.3094 11.6531C16.5781 12.3844 15.6938 12.75 14.6562 12.75H10.1562ZM7.90625 17.25H16.9062V15H7.90625V17.25ZM10.1562 11.25H14.6562C15.2812 11.25 15.8125 11.0312 16.25 10.5938C16.6875 10.1562 16.9062 9.625 16.9062 9C16.9062 8.375 16.6875 7.84375 16.25 7.40625C15.8125 6.96875 15.2812 6.75 14.6562 6.75H10.1562C9.53125 6.75 9 6.96875 8.5625 7.40625C8.125 7.84375 7.90625 8.375 7.90625 9C7.90625 9.625 8.125 10.1562 8.5625 10.5938C9 11.0312 9.53125 11.25 10.1562 11.25ZM10.1562 9.75C10.3688 9.75 10.5469 9.67812 10.6906 9.53438C10.8344 9.39062 10.9062 9.2125 10.9062 9C10.9062 8.7875 10.8344 8.60938 10.6906 8.46562C10.5469 8.32187 10.3688 8.25 10.1562 8.25C9.94375 8.25 9.76562 8.32187 9.62187 8.46562C9.47812 8.60938 9.40625 8.7875 9.40625 9C9.40625 9.2125 9.47812 9.39062 9.62187 9.53438C9.76562 9.67812 9.94375 9.75 10.1562 9.75ZM14.6562 9.75C14.8687 9.75 15.0469 9.67812 15.1906 9.53438C15.3344 9.39062 15.4062 9.2125 15.4062 9C15.4062 8.7875 15.3344 8.60938 15.1906 8.46562C15.0469 8.32187 14.8687 8.25 14.6562 8.25C14.4438 8.25 14.2656 8.32187 14.1219 8.46562C13.9781 8.60938 13.9062 8.7875 13.9062 9C13.9062 9.2125 13.9781 9.39062 14.1219 9.53438C14.2656 9.67812 14.4438 9.75 14.6562 9.75Z", fill: "white" })), P = gt((e) => {
360
473
  const { avatar: t } = e;
361
- return t ? /* @__PURE__ */ r("img", { src: t, alt: "Bot Avatar", className: X.bot_avatar }) : /* @__PURE__ */ r("div", { className: X.bot_avatar, children: /* @__PURE__ */ r(Zt, {}) });
362
- }), jt = "_text_1djgp_1", $t = "_dot_1djgp_18", k = {
363
- text: jt,
364
- "text--bot": "_text--bot_1djgp_7",
365
- "typing-indicator": "_typing-indicator_1djgp_13",
366
- dot: $t
367
- };
368
- function Pt(e) {
369
- const { children: t, onResize: o } = e, n = A(null);
370
- return L(() => {
371
- const s = new ResizeObserver((c) => {
372
- for (const i of c) {
373
- const { width: a, height: _ } = i.contentRect;
374
- o(a, _);
375
- }
376
- });
377
- return n.current && s.observe(n.current), () => {
378
- s.disconnect();
379
- };
380
- }, [n, o]), /* @__PURE__ */ r("div", { ref: n, children: t });
381
- }
382
- function at(e) {
383
- const { isTyping: t, typingText: o } = e, { messageBoxBottomRef: n, avatar: s } = T(), c = g(() => {
384
- var a;
385
- (a = n.current) == null || a.scrollIntoView({ behavior: "smooth" });
386
- }, [n]), i = ft(t, 500);
387
- return i ? /* @__PURE__ */ m(q, { type: "bot", direction: "horizontal", children: [
388
- /* @__PURE__ */ r($, { avatar: s }),
389
- /* @__PURE__ */ r(W, { time: /* @__PURE__ */ new Date(), children: /* @__PURE__ */ r("div", { className: w(k.text, k["text--bot"]), children: /* @__PURE__ */ m(Pt, { onResize: c, children: [
390
- /* @__PURE__ */ r("span", { children: o ?? "" }),
391
- i && /* @__PURE__ */ m("span", { className: k["typing-indicator"], children: [
392
- /* @__PURE__ */ r("div", { className: k.dot }),
393
- /* @__PURE__ */ r("div", { className: k.dot }),
394
- /* @__PURE__ */ r("div", { className: k.dot })
395
- ] })
396
- ] }) }) })
397
- ] }) : null;
398
- }
399
- function Dt(e) {
400
- const { placeholder: t } = e, { isConnecting: o, messages: n } = T(), s = y(
401
- () => Array.from((n == null ? void 0 : n.values()) ?? []).some(
402
- (c) => c.type === "bot" && c.isTyping
403
- ),
404
- [n]
405
- );
406
- return o && !s ? /* @__PURE__ */ r(at, { isTyping: !0, typingText: t }) : null;
407
- }
408
- const Ot = "_card_root_1ygom_1", Ft = "_card_content_1ygom_10", Wt = "_card_title_1ygom_17", Ut = "_card_description_1ygom_23", Jt = "_card_actions_1ygom_37", H = {
409
- card_root: Ot,
410
- card_content: Ft,
411
- card_title: Wt,
412
- card_description: Ut,
413
- card_actions: Jt
474
+ return t ? /* @__PURE__ */ s("img", { src: t, alt: "Bot Avatar", className: Q.bot_avatar }) : /* @__PURE__ */ s("div", { className: Q.bot_avatar, children: /* @__PURE__ */ s(Yt, {}) });
475
+ }), Jt = "_card_root_1ygom_1", Qt = "_card_content_1ygom_10", Gt = "_card_title_1ygom_17", te = "_card_description_1ygom_23", ee = "_card_actions_1ygom_37", V = {
476
+ card_root: Jt,
477
+ card_content: Qt,
478
+ card_title: Gt,
479
+ card_description: te,
480
+ card_actions: ee
414
481
  };
415
- function lt(e) {
482
+ function dt(e) {
416
483
  var i;
417
- const { template: t } = e, { sendMessage: o } = T(), n = y(() => (t == null ? void 0 : t.thumbnailImageUrl.replace(/^http:/, "").replace(/^https:/, "")) || "https://via.assets.so/img.jpg?w=200&h=270&tc=white&bg=#eeeeee", [t]), s = y(() => {
484
+ const { template: t } = e, { sendMessage: o } = N(), n = C(() => (t == null ? void 0 : t.thumbnailImageUrl.replace(/^http:/, "").replace(/^https:/, "")) || "https://via.assets.so/img.jpg?w=200&h=270&tc=white&bg=#eeeeee", [t]), r = C(() => {
418
485
  switch (t == null ? void 0 : t.imageAspectRatio) {
419
486
  case "square":
420
487
  return "1 / 1";
@@ -422,7 +489,7 @@ function lt(e) {
422
489
  default:
423
490
  return "1.51 / 1";
424
491
  }
425
- }, [t]), c = g(
492
+ }, [t]), c = b(
426
493
  (a) => function() {
427
494
  switch (a.type) {
428
495
  case "message":
@@ -435,8 +502,8 @@ function lt(e) {
435
502
  },
436
503
  [o]
437
504
  );
438
- return /* @__PURE__ */ m("div", { className: H.card_root, children: [
439
- (t == null ? void 0 : t.thumbnailImageUrl) && /* @__PURE__ */ r(
505
+ return /* @__PURE__ */ p("div", { className: V.card_root, children: [
506
+ (t == null ? void 0 : t.thumbnailImageUrl) && /* @__PURE__ */ s(
440
507
  "img",
441
508
  {
442
509
  alt: t == null ? void 0 : t.title,
@@ -446,315 +513,423 @@ function lt(e) {
446
513
  width: "100%",
447
514
  maxHeight: "170px",
448
515
  objectFit: t == null ? void 0 : t.imageSize,
449
- aspectRatio: s
516
+ aspectRatio: r
450
517
  }
451
518
  }
452
519
  ),
453
- /* @__PURE__ */ m("div", { className: H.card_content, children: [
454
- /* @__PURE__ */ r("h5", { className: H.card_title, children: t == null ? void 0 : t.title }),
455
- /* @__PURE__ */ r("div", { className: H.card_description, children: t == null ? void 0 : t.text }),
456
- /* @__PURE__ */ r("div", { className: H.card_actions, children: (i = t == null ? void 0 : t.buttons) == null ? void 0 : i.map((a, _) => /* @__PURE__ */ r("button", { onClick: c(a.action), children: a.label }, _)) })
520
+ /* @__PURE__ */ p("div", { className: V.card_content, children: [
521
+ /* @__PURE__ */ s("h5", { className: V.card_title, children: t == null ? void 0 : t.title }),
522
+ /* @__PURE__ */ s("div", { className: V.card_description, children: t == null ? void 0 : t.text }),
523
+ /* @__PURE__ */ s("div", { className: V.card_actions, children: (i = t == null ? void 0 : t.buttons) == null ? void 0 : i.map((a, l) => /* @__PURE__ */ s("button", { onClick: c(a.action), children: a.label }, l)) })
457
524
  ] })
458
525
  ] });
459
526
  }
460
- function Kt(e) {
461
- const { message: t } = e, { avatar: o } = T(), n = t.message.template;
462
- return /* @__PURE__ */ m(q, { type: "bot", direction: "horizontal", children: [
463
- /* @__PURE__ */ r($, { avatar: o }),
464
- /* @__PURE__ */ r(
465
- W,
527
+ function ne(e) {
528
+ const { message: t } = e, { avatar: o } = N(), n = t.message.template;
529
+ return /* @__PURE__ */ p(O, { type: "bot", direction: "horizontal", children: [
530
+ /* @__PURE__ */ s(P, { avatar: o }),
531
+ /* @__PURE__ */ s(
532
+ F,
466
533
  {
467
534
  time: t.time,
468
535
  quickReplies: n == null ? void 0 : n.quickReplies,
469
- children: /* @__PURE__ */ r(lt, { template: n })
536
+ children: /* @__PURE__ */ s(dt, { template: n })
470
537
  }
471
538
  )
472
539
  ] });
473
540
  }
474
- const Qt = "_text_sbjtw_1", Z = {
475
- text: Qt,
476
- "text--user": "_text--user_sbjtw_7",
477
- "text--bot": "_text--bot_sbjtw_13"
541
+ const oe = "_text_5fknl_1", re = "_dot_5fknl_31", y = {
542
+ text: oe,
543
+ "text--user": "_text--user_5fknl_8",
544
+ "text--bot": "_text--bot_5fknl_14",
545
+ "typing-indicator": "_typing-indicator_5fknl_26",
546
+ dot: re
478
547
  };
479
548
  function G(e) {
480
- var n;
481
- const { message: t } = e, { avatar: o } = T();
482
- return t.type === "error" ? null : t.type === "user" ? /* @__PURE__ */ m(q, { type: "user", direction: "horizontal", children: [
483
- /* @__PURE__ */ r("div", { className: w(Z.text, Z["text--user"]), children: t.text }),
484
- /* @__PURE__ */ r(F, { time: t.time })
485
- ] }) : /* @__PURE__ */ m(q, { type: "bot", direction: "horizontal", children: [
486
- /* @__PURE__ */ r($, { avatar: o }),
487
- /* @__PURE__ */ r(
488
- W,
549
+ var c;
550
+ const { message: t } = e, { avatar: o } = N(), n = z(), r = C(() => {
551
+ var i, a, l, d;
552
+ switch (t.type) {
553
+ case "user":
554
+ return {
555
+ color: (i = n == null ? void 0 : n.userMessage) == null ? void 0 : i.color,
556
+ backgroundColor: (a = n == null ? void 0 : n.userMessage) == null ? void 0 : a.backgroundColor
557
+ };
558
+ case "bot":
559
+ return {
560
+ color: (l = n == null ? void 0 : n.botMessage) == null ? void 0 : l.color,
561
+ backgroundColor: (d = n == null ? void 0 : n.botMessage) == null ? void 0 : d.backgroundColor
562
+ };
563
+ default:
564
+ return {};
565
+ }
566
+ }, [t, n]);
567
+ return t.type === "error" ? null : t.type === "user" ? /* @__PURE__ */ p(O, { type: "user", direction: "horizontal", children: [
568
+ /* @__PURE__ */ s(
569
+ "div",
570
+ {
571
+ className: T(y.text, y["text--user"]),
572
+ style: r,
573
+ children: t.text
574
+ }
575
+ ),
576
+ /* @__PURE__ */ s($, { time: t.time })
577
+ ] }) : /* @__PURE__ */ p(O, { type: "bot", direction: "horizontal", children: [
578
+ /* @__PURE__ */ s(P, { avatar: o }),
579
+ /* @__PURE__ */ s(
580
+ F,
489
581
  {
490
582
  time: t.time,
491
- quickReplies: (n = t.message.template) == null ? void 0 : n.quickReplies,
492
- children: /* @__PURE__ */ r("div", { className: w(Z.text, Z["text--bot"]), children: t.message.text })
583
+ quickReplies: (c = t.message.template) == null ? void 0 : c.quickReplies,
584
+ children: /* @__PURE__ */ s(
585
+ "div",
586
+ {
587
+ className: T(y.text, y["text--bot"]),
588
+ style: r,
589
+ children: t.message.text
590
+ }
591
+ )
493
592
  }
494
593
  )
495
594
  ] });
496
595
  }
497
- const Xt = "_carousel_root_sv1hc_1", Gt = "_carousel_time_sv1hc_12", Y = {
498
- carousel_root: Xt,
499
- carousel_time: Gt
596
+ function _t(e) {
597
+ const { isTyping: t, typingText: o } = e, { messageBoxBottomRef: n, avatar: r } = N(), c = z(), i = M(null), a = b(() => {
598
+ var h;
599
+ (h = n.current) == null || h.scrollIntoView({ behavior: "smooth" });
600
+ }, [n]);
601
+ kt({ ref: i, onResize: a });
602
+ const l = wt(t, 500), d = C(
603
+ () => {
604
+ var h, f;
605
+ return {
606
+ color: (h = c == null ? void 0 : c.botMessage) == null ? void 0 : h.color,
607
+ backgroundColor: (f = c == null ? void 0 : c.botMessage) == null ? void 0 : f.backgroundColor
608
+ };
609
+ },
610
+ [c]
611
+ );
612
+ return l ? /* @__PURE__ */ p(O, { type: "bot", direction: "horizontal", children: [
613
+ /* @__PURE__ */ s(P, { avatar: r }),
614
+ /* @__PURE__ */ s(F, { time: /* @__PURE__ */ new Date(), children: /* @__PURE__ */ s(
615
+ "div",
616
+ {
617
+ ref: i,
618
+ className: T(y.text, y["text--bot"]),
619
+ style: d,
620
+ children: /* @__PURE__ */ p("span", { children: [
621
+ o ?? "",
622
+ l && /* @__PURE__ */ p("span", { className: y["typing-indicator"], children: [
623
+ /* @__PURE__ */ s("div", { className: y.dot }),
624
+ /* @__PURE__ */ s("div", { className: y.dot }),
625
+ /* @__PURE__ */ s("div", { className: y.dot })
626
+ ] })
627
+ ] })
628
+ }
629
+ ) })
630
+ ] }) : null;
631
+ }
632
+ function se(e) {
633
+ const { placeholder: t } = e, { isConnecting: o, messages: n } = N(), r = C(
634
+ () => Array.from((n == null ? void 0 : n.values()) ?? []).some(
635
+ (c) => c.type === "bot" && c.isTyping
636
+ ),
637
+ [n]
638
+ );
639
+ return o && !r ? /* @__PURE__ */ s(_t, { isTyping: !0, typingText: t }) : null;
640
+ }
641
+ const ce = "_carousel_root_sv1hc_1", ie = "_carousel_time_sv1hc_12", tt = {
642
+ carousel_root: ce,
643
+ carousel_time: ie
500
644
  };
501
- function Yt(e) {
502
- var s;
503
- const { message: t } = e, { avatar: o } = T(), n = t.message.template;
504
- return /* @__PURE__ */ m(q, { type: "bot", direction: "vertical", children: [
505
- /* @__PURE__ */ r($, { avatar: o }),
506
- /* @__PURE__ */ r("div", { className: Y.carousel_root, children: (s = n.columns) == null ? void 0 : s.map((c, i) => /* @__PURE__ */ r(lt, { template: c }, i)) }),
507
- /* @__PURE__ */ r(F, { className: Y.carousel_time, time: t.time })
645
+ function ae(e) {
646
+ var r;
647
+ const { message: t } = e, { avatar: o } = N(), n = t.message.template;
648
+ return /* @__PURE__ */ p(O, { type: "bot", direction: "vertical", children: [
649
+ /* @__PURE__ */ s(P, { avatar: o }),
650
+ /* @__PURE__ */ s("div", { className: tt.carousel_root, children: (r = n.columns) == null ? void 0 : r.map((c, i) => /* @__PURE__ */ s(dt, { template: c }, i)) }),
651
+ /* @__PURE__ */ s($, { className: tt.carousel_time, time: t.time })
508
652
  ] });
509
653
  }
510
- const te = "_hint_root_k5fud_1", ee = "_hint_root__error_k5fud_13", oe = "_time_k5fud_17", z = {
511
- hint_root: te,
512
- hint_root__error: ee,
513
- time: oe
654
+ const le = "_hint_root_k5fud_1", ue = "_hint_root__error_k5fud_13", de = "_time_k5fud_17", B = {
655
+ hint_root: le,
656
+ hint_root__error: ue,
657
+ time: de
514
658
  };
515
- function tt(e) {
659
+ function et(e) {
516
660
  const { message: t } = e;
517
661
  if (t.type === "user") return null;
518
662
  if (t.type === "error")
519
- return /* @__PURE__ */ m("div", { className: w(z.hint_root, z.hint_root__error), children: [
520
- /* @__PURE__ */ r("div", { className: z.time, children: O(t.time) }),
521
- /* @__PURE__ */ r("span", { children: "Unexpected error" })
663
+ return /* @__PURE__ */ p("div", { className: T(B.hint_root, B.hint_root__error), children: [
664
+ /* @__PURE__ */ s("div", { className: B.time, children: q(t.time) }),
665
+ /* @__PURE__ */ s("span", { children: "Unexpected error" })
522
666
  ] });
523
667
  const o = t.message.template;
524
- return o.type !== V.HINT ? null : /* @__PURE__ */ m("div", { className: z.hint_root, children: [
525
- /* @__PURE__ */ r("div", { className: z.time, children: O(t.time) }),
668
+ return o.type !== A.HINT ? null : /* @__PURE__ */ p("div", { className: B.hint_root, children: [
669
+ /* @__PURE__ */ s("div", { className: B.time, children: q(t.time) }),
526
670
  o.text
527
671
  ] });
528
672
  }
529
- function ne(e) {
673
+ function _e(e) {
530
674
  var o;
531
675
  const { message: t } = e;
532
676
  if (t.type === "user")
533
- return /* @__PURE__ */ r(G, { message: t });
677
+ return /* @__PURE__ */ s(G, { message: t });
534
678
  if (t.type === "error")
535
- return /* @__PURE__ */ r(tt, { message: t });
679
+ return /* @__PURE__ */ s(et, { message: t });
536
680
  if (t.isTyping)
537
- return /* @__PURE__ */ r(
538
- at,
681
+ return /* @__PURE__ */ s(
682
+ _t,
539
683
  {
540
684
  isTyping: t.isTyping,
541
685
  typingText: t.typingText
542
686
  }
543
687
  );
544
688
  switch ((o = t.message.template) == null ? void 0 : o.type) {
545
- case V.TEXT:
546
- return /* @__PURE__ */ r(G, { message: t });
547
- case V.HINT:
548
- return /* @__PURE__ */ r(tt, { message: t });
549
- case V.BUTTON:
550
- return /* @__PURE__ */ r(Kt, { message: t });
551
- case V.CAROUSEL:
552
- return /* @__PURE__ */ r(Yt, { message: t });
689
+ case A.TEXT:
690
+ return /* @__PURE__ */ s(G, { message: t });
691
+ case A.HINT:
692
+ return /* @__PURE__ */ s(et, { message: t });
693
+ case A.BUTTON:
694
+ return /* @__PURE__ */ s(ne, { message: t });
695
+ case A.CAROUSEL:
696
+ return /* @__PURE__ */ s(ae, { message: t });
553
697
  default:
554
- return /* @__PURE__ */ r("div", {});
698
+ return /* @__PURE__ */ s("div", {});
555
699
  }
556
700
  }
557
- function re() {
558
- const { chatbot: e } = j(), { messages: t, messageBoxBottomRef: o, botTypingPlaceholder: n } = T();
559
- L(() => {
701
+ function he() {
702
+ const { chatbot: e } = z(), { messages: t, messageBoxBottomRef: o, botTypingPlaceholder: n } = N();
703
+ w(() => {
560
704
  var c;
561
705
  (c = o.current) == null || c.scrollIntoView({ behavior: "smooth" });
562
706
  }, [t, o]);
563
- const s = y(
707
+ const r = C(
564
708
  () => ({
565
709
  maxWidth: (e == null ? void 0 : e.contentMaxWidth) ?? "1200px"
566
710
  }),
567
711
  [e]
568
712
  );
569
- return /* @__PURE__ */ r("div", { className: J.chatbot_body, children: /* @__PURE__ */ m("div", { className: J.chatbot_body__content, style: s, children: [
570
- Array.from((t == null ? void 0 : t.values()) ?? []).map((c) => /* @__PURE__ */ r(
571
- ne,
713
+ return /* @__PURE__ */ s("div", { className: X.chatbot_body, children: /* @__PURE__ */ p("div", { className: X.chatbot_body__content, style: r, children: [
714
+ Array.from((t == null ? void 0 : t.values()) ?? []).map((c) => /* @__PURE__ */ s(
715
+ _e,
572
716
  {
573
717
  message: c
574
718
  },
575
719
  c.messageId
576
720
  )),
577
- /* @__PURE__ */ r(
578
- Dt,
721
+ /* @__PURE__ */ s(
722
+ se,
579
723
  {
580
724
  placeholder: n ?? "正在輸入訊息"
581
725
  }
582
726
  ),
583
- /* @__PURE__ */ r("div", { ref: o })
727
+ /* @__PURE__ */ s("div", { ref: o })
584
728
  ] }) });
585
729
  }
586
- const se = "_chatbot_footer_1uvgs_1", ce = "_chatbot_footer__content_1uvgs_1", ie = "_chatbot_textarea_1uvgs_11", ae = "_chatbot_submit_button_1uvgs_26", le = "_chatbot_submit_button__disabled_1uvgs_51", S = {
587
- chatbot_footer: se,
588
- chatbot_footer__content: ce,
589
- chatbot_textarea: ie,
590
- chatbot_submit_button: ae,
591
- chatbot_submit_button__disabled: le
592
- }, _e = (e) => /* @__PURE__ */ u.createElement("svg", { width: 15, height: 12, viewBox: "0 0 15 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ u.createElement("path", { d: "M0.823242 11.6953V0.945312L14.3328 6.32031L0.823242 11.6953ZM1.90658 10.0911L11.3649 6.32031L1.90658 2.54948V4.98052L5.92574 6.32031L1.90658 7.6601V10.0911Z", fill: "white" })), ue = (e) => /* @__PURE__ */ u.createElement("svg", { width: 11, height: 16, viewBox: "0 0 11 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ u.createElement("path", { d: "M5.40658 9.90397C4.82435 9.90397 4.33158 9.7023 3.92824 9.29897C3.52491 8.89564 3.32324 8.40286 3.32324 7.82064V2.82064C3.32324 2.23842 3.52491 1.74564 3.92824 1.3423C4.33158 0.938971 4.82435 0.737305 5.40658 0.737305C5.9888 0.737305 6.48158 0.938971 6.88491 1.3423C7.28824 1.74564 7.48991 2.23842 7.48991 2.82064V7.82064C7.48991 8.40286 7.28824 8.89564 6.88491 9.29897C6.48158 9.7023 5.9888 9.90397 5.40658 9.90397ZM4.86491 15.1123V12.8654C3.56213 12.7208 2.47949 12.1724 1.61699 11.2202C0.754492 10.2679 0.323242 9.13467 0.323242 7.82064H1.40658C1.40658 8.92731 1.79706 9.87064 2.57803 10.6506C3.35887 11.4306 4.30331 11.8206 5.41137 11.8206C6.51928 11.8206 7.46213 11.4306 8.23991 10.6506C9.01769 9.87064 9.40658 8.92731 9.40658 7.82064H10.4899C10.4899 9.13467 10.0587 10.2679 9.19616 11.2202C8.33366 12.1724 7.25102 12.7208 5.94824 12.8654V15.1123H4.86491ZM5.40658 8.82064C5.68991 8.82064 5.92741 8.7248 6.11908 8.53314C6.31074 8.34147 6.40658 8.10397 6.40658 7.82064V2.82064C6.40658 2.5373 6.31074 2.2998 6.11908 2.10814C5.92741 1.91647 5.68991 1.82064 5.40658 1.82064C5.12324 1.82064 4.88574 1.91647 4.69408 2.10814C4.50241 2.2998 4.40658 2.5373 4.40658 2.82064V7.82064C4.40658 8.10397 4.50241 8.34147 4.69408 8.53314C4.88574 8.7248 5.12324 8.82064 5.40658 8.82064Z", fill: "white" })), de = (e) => /* @__PURE__ */ u.createElement("svg", { width: 40, height: 40, viewBox: "0 0 40 40", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ u.createElement("circle", { cx: 20, cy: 20, r: 18, fill: "#D04444" }), /* @__PURE__ */ u.createElement("rect", { x: 12, y: 12, width: 16, height: 16, fill: "#FFFFFF", rx: 2, ry: 2 }));
593
- function he(e) {
594
- const { setValue: t, className: o } = e, [n, s] = R(!1), c = A(null);
595
- L(() => {
596
- const l = window.SpeechRecognition || window.webkitSpeechRecognition;
597
- if (!l) return;
598
- const d = new l();
599
- d.lang = "zh-TW", d.continuous = !0, d.interimResults = !0, d.onresult = (h) => {
600
- for (let p = h.resultIndex; p < h.results.length; p++)
601
- h.results[p].isFinal && t((C) => C + h.results[p][0].transcript);
602
- }, d.onerror = (h) => {
603
- alert(`語音識別錯誤: ${JSON.stringify(h.error)}`);
604
- }, d.onend = () => {
605
- s(!1);
606
- }, c.current = d;
730
+ const ge = "_chatbot_footer_1slg7_1", fe = "_chatbot_footer__content_1slg7_4", me = "_chatbot_textarea_1slg7_14", be = "_chatbot_submit_button_1slg7_29", pe = "_chatbot_submit_button__disabled_1slg7_54", k = {
731
+ chatbot_footer: ge,
732
+ chatbot_footer__content: fe,
733
+ chatbot_textarea: me,
734
+ chatbot_submit_button: be,
735
+ chatbot_submit_button__disabled: pe
736
+ }, ve = (e) => /* @__PURE__ */ g.createElement("svg", { width: 15, height: 12, viewBox: "0 0 15 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ g.createElement("path", { d: "M0.823242 11.6953V0.945312L14.3328 6.32031L0.823242 11.6953ZM1.90658 10.0911L11.3649 6.32031L1.90658 2.54948V4.98052L5.92574 6.32031L1.90658 7.6601V10.0911Z", fill: "white" })), Ce = (e) => /* @__PURE__ */ g.createElement("svg", { width: 11, height: 16, viewBox: "0 0 11 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ g.createElement("path", { d: "M5.40658 9.90397C4.82435 9.90397 4.33158 9.7023 3.92824 9.29897C3.52491 8.89564 3.32324 8.40286 3.32324 7.82064V2.82064C3.32324 2.23842 3.52491 1.74564 3.92824 1.3423C4.33158 0.938971 4.82435 0.737305 5.40658 0.737305C5.9888 0.737305 6.48158 0.938971 6.88491 1.3423C7.28824 1.74564 7.48991 2.23842 7.48991 2.82064V7.82064C7.48991 8.40286 7.28824 8.89564 6.88491 9.29897C6.48158 9.7023 5.9888 9.90397 5.40658 9.90397ZM4.86491 15.1123V12.8654C3.56213 12.7208 2.47949 12.1724 1.61699 11.2202C0.754492 10.2679 0.323242 9.13467 0.323242 7.82064H1.40658C1.40658 8.92731 1.79706 9.87064 2.57803 10.6506C3.35887 11.4306 4.30331 11.8206 5.41137 11.8206C6.51928 11.8206 7.46213 11.4306 8.23991 10.6506C9.01769 9.87064 9.40658 8.92731 9.40658 7.82064H10.4899C10.4899 9.13467 10.0587 10.2679 9.19616 11.2202C8.33366 12.1724 7.25102 12.7208 5.94824 12.8654V15.1123H4.86491ZM5.40658 8.82064C5.68991 8.82064 5.92741 8.7248 6.11908 8.53314C6.31074 8.34147 6.40658 8.10397 6.40658 7.82064V2.82064C6.40658 2.5373 6.31074 2.2998 6.11908 2.10814C5.92741 1.91647 5.68991 1.82064 5.40658 1.82064C5.12324 1.82064 4.88574 1.91647 4.69408 2.10814C4.50241 2.2998 4.40658 2.5373 4.40658 2.82064V7.82064C4.40658 8.10397 4.50241 8.34147 4.69408 8.53314C4.88574 8.7248 5.12324 8.82064 5.40658 8.82064Z", fill: "white" })), we = (e) => /* @__PURE__ */ g.createElement("svg", { width: 40, height: 40, viewBox: "0 0 40 40", xmlns: "http://www.w3.org/2000/svg", ...e }, /* @__PURE__ */ g.createElement("circle", { cx: 20, cy: 20, r: 18, fill: "#D04444" }), /* @__PURE__ */ g.createElement("rect", { x: 12, y: 12, width: 16, height: 16, fill: "#FFFFFF", rx: 2, ry: 2 }));
737
+ function xe(e) {
738
+ const { setValue: t, className: o } = e, [n, r] = x(!1), c = M(null);
739
+ w(() => {
740
+ const u = window.SpeechRecognition || window.webkitSpeechRecognition;
741
+ if (!u) return;
742
+ const _ = new u();
743
+ _.lang = "zh-TW", _.continuous = !0, _.interimResults = !0, _.onresult = (m) => {
744
+ for (let v = m.resultIndex; v < m.results.length; v++)
745
+ m.results[v].isFinal && t((E) => E + m.results[v][0].transcript);
746
+ }, _.onerror = (m) => {
747
+ alert(`語音識別錯誤: ${JSON.stringify(m.error)}`);
748
+ }, _.onend = () => {
749
+ r(!1);
750
+ }, c.current = _;
607
751
  }, [t]);
608
- const i = g(() => {
752
+ const i = b(() => {
609
753
  if (!c.current) {
610
754
  alert("無法開始辨識: 語音識別器未初始化,請檢查是否有授權使用麥克風");
611
755
  return;
612
756
  }
613
757
  try {
614
- c.current.start(), s(!0);
615
- } catch (l) {
616
- alert(`無法開始辨識: ${JSON.stringify(l)}`);
758
+ c.current.start(), r(!0);
759
+ } catch (u) {
760
+ alert(`無法開始辨識: ${JSON.stringify(u)}`);
617
761
  }
618
- }, []), a = g(() => {
619
- c.current && (c.current.stop(), s(!1));
620
- }, []), _ = g(
621
- (l) => {
622
- n || (l.preventDefault(), i());
762
+ }, []), a = b(() => {
763
+ c.current && (c.current.stop(), r(!1));
764
+ }, []), l = b(
765
+ (u) => {
766
+ n || (u.preventDefault(), i());
623
767
  },
624
768
  [n, i]
625
- ), f = g(
626
- (l) => {
627
- n && (l.preventDefault(), a());
769
+ ), d = b(
770
+ (u) => {
771
+ n && (u.preventDefault(), a());
628
772
  },
629
773
  [n, a]
630
- ), v = g(
631
- (l) => {
632
- n || (l.preventDefault(), i());
774
+ ), h = b(
775
+ (u) => {
776
+ n || (u.preventDefault(), i());
633
777
  },
634
778
  [n, i]
635
- ), b = g(
636
- (l) => {
637
- n && (l.preventDefault(), a());
779
+ ), f = b(
780
+ (u) => {
781
+ n && (u.preventDefault(), a());
638
782
  },
639
783
  [n, a]
640
784
  );
641
- return /* @__PURE__ */ r(
785
+ return /* @__PURE__ */ s(
642
786
  "div",
643
787
  {
644
788
  className: o,
645
- onMouseDown: _,
646
- onMouseUp: f,
647
- onTouchStart: v,
648
- onTouchEnd: b,
649
- children: n ? /* @__PURE__ */ r(de, {}) : /* @__PURE__ */ r(ue, {})
789
+ onMouseDown: l,
790
+ onMouseUp: d,
791
+ onTouchStart: h,
792
+ onTouchEnd: f,
793
+ children: n ? /* @__PURE__ */ s(we, {}) : /* @__PURE__ */ s(Ce, {})
650
794
  }
651
795
  );
652
796
  }
653
- function me() {
654
- const { sendMessage: e, isConnecting: t } = T(), { chatbot: o } = j(), [n, s] = R(""), [c, i] = R(!1), a = A(null), _ = y(() => t || !n, [t, n]), f = y(
797
+ function ye() {
798
+ const { sendMessage: e, isConnecting: t } = N(), { chatbot: o } = z(), [n, r] = x(""), [c, i] = x(!1), a = M(null), l = C(
799
+ () => t || !n.trim(),
800
+ [t, n]
801
+ ), d = C(
655
802
  () => ({
656
- maxWidth: (o == null ? void 0 : o.contentMaxWidth) ?? "1200px"
803
+ maxWidth: (o == null ? void 0 : o.contentMaxWidth) ?? "1200px",
804
+ borderTopColor: o == null ? void 0 : o.borderColor
657
805
  }),
658
806
  [o]
659
- ), v = g(
660
- (d) => {
661
- const h = d.target, p = h.value;
662
- h.style.height = "36px", p && (h.style.height = `${h.scrollHeight}px`), s(d.target.value);
807
+ ), h = b(
808
+ (_) => {
809
+ const m = _.target, v = m.value;
810
+ m.style.height = "36px", v && (m.style.height = `${m.scrollHeight}px`), r(_.target.value);
663
811
  },
664
812
  []
665
- ), b = g(() => {
666
- !c && !t && (e == null || e(n), s(""), a.current && (a.current.style.height = "36px"));
667
- }, [c, t, e, n]), l = g(
668
- (d) => {
669
- if (d.key === "Enter" && !c && !t) {
670
- e == null || e(n), s("");
671
- const h = d.target;
672
- h.style.height = "36px";
813
+ ), f = b(() => {
814
+ !c && !t && (e == null || e(n), r(""), a.current && (a.current.style.height = "36px"));
815
+ }, [c, t, e, n]), u = b(
816
+ (_) => {
817
+ if (_.key === "Enter" && !c && !t && n.trim()) {
818
+ e == null || e(n), r("");
819
+ const m = _.target;
820
+ m.style.height = "36px";
673
821
  }
674
822
  },
675
823
  [c, t, e, n]
676
824
  );
677
- return /* @__PURE__ */ r("div", { className: S.chatbot_footer, children: /* @__PURE__ */ m("div", { className: S.chatbot_footer__content, style: f, children: [
678
- /* @__PURE__ */ r(
825
+ return /* @__PURE__ */ s("div", { className: k.chatbot_footer, children: /* @__PURE__ */ p("div", { className: k.chatbot_footer__content, style: d, children: [
826
+ /* @__PURE__ */ s(
679
827
  "textarea",
680
828
  {
681
829
  ref: a,
682
- className: S.chatbot_textarea,
830
+ className: k.chatbot_textarea,
683
831
  disabled: t,
684
832
  cols: 40,
685
833
  value: n,
686
834
  placeholder: "Enter message",
687
- onChange: v,
688
- onKeyDown: l,
835
+ onChange: h,
836
+ onKeyDown: u,
689
837
  onCompositionStart: () => i(!0),
690
838
  onCompositionEnd: () => i(!1)
691
839
  }
692
840
  ),
693
- n ? /* @__PURE__ */ r(
841
+ n ? /* @__PURE__ */ s(
694
842
  "button",
695
843
  {
696
- className: w(
697
- S.chatbot_submit_button,
698
- _ && S.chatbot_submit_button__disabled
844
+ className: T(
845
+ k.chatbot_submit_button,
846
+ l && k.chatbot_submit_button__disabled
699
847
  ),
700
- disabled: _,
701
- onClick: b,
702
- children: /* @__PURE__ */ r(_e, {})
848
+ disabled: l,
849
+ onClick: f,
850
+ children: /* @__PURE__ */ s(ve, {})
703
851
  }
704
- ) : /* @__PURE__ */ r(
705
- he,
852
+ ) : /* @__PURE__ */ s(
853
+ xe,
706
854
  {
707
- setValue: s,
708
- className: w(
709
- S.chatbot_submit_button,
710
- t && S.chatbot_submit_button__disabled
855
+ setValue: r,
856
+ className: T(
857
+ k.chatbot_submit_button,
858
+ t && k.chatbot_submit_button__disabled
711
859
  )
712
860
  }
713
861
  )
714
862
  ] }) });
715
863
  }
716
- const ge = "_chatbot_root_od4qx_1", be = "_chatbot_root__fullScreen_od4qx_126", et = {
717
- chatbot_root: ge,
718
- chatbot_root__fullScreen: be
864
+ const Te = "_chatbot_root_1tnjj_1", Ne = "_full_screen_1tnjj_121", Ee = "_chatbot_container_1tnjj_129", Le = "_screen_keyboard_open_1tnjj_134", I = {
865
+ chatbot_root: Te,
866
+ full_screen: Ne,
867
+ chatbot_container: Ee,
868
+ screen_keyboard_open: Le
719
869
  };
720
- function ve(e) {
870
+ function ke(e) {
871
+ const { children: t } = e, o = M(null);
872
+ Et(o), Nt();
873
+ const [, n] = yt() ?? [], r = Tt();
874
+ return /* @__PURE__ */ s("div", { className: I.full_screen, children: /* @__PURE__ */ s(
875
+ "div",
876
+ {
877
+ ref: o,
878
+ className: T(
879
+ I.chatbot_container,
880
+ r && I.screen_keyboard_open
881
+ ),
882
+ style: r ? { height: n } : void 0,
883
+ children: t
884
+ }
885
+ ) });
886
+ }
887
+ function Me(e) {
888
+ const { fullScreen: t, children: o } = e, n = M(null);
889
+ Lt(n);
890
+ const r = z();
891
+ return /* @__PURE__ */ s("div", { ref: n, className: I.chatbot_root, children: t ? /* @__PURE__ */ s(ke, { children: o }) : /* @__PURE__ */ s("div", { className: I.chatbot_container, style: r == null ? void 0 : r.chatbot, children: o }) });
892
+ }
893
+ function He(e) {
721
894
  const {
722
895
  title: t,
723
896
  theme: o,
724
897
  config: n,
725
- customChannelId: s,
898
+ customChannelId: r,
726
899
  initMessages: c,
727
900
  debugMode: i = !1,
728
901
  fullScreen: a = !1,
729
- avatar: _,
730
- botTypingPlaceholder: f,
731
- onReset: v,
732
- onClose: b
902
+ avatar: l,
903
+ botTypingPlaceholder: d,
904
+ onReset: h,
905
+ onClose: f
733
906
  } = e;
734
- return /* @__PURE__ */ r(mt, { fullScreen: a, theme: o, children: /* @__PURE__ */ m(
735
- pt,
907
+ return /* @__PURE__ */ s(pt, { theme: o, children: /* @__PURE__ */ s(
908
+ Mt,
736
909
  {
737
- className: w(
738
- et.chatbot_root,
739
- a && et.chatbot_root__fullScreen
740
- ),
741
- avatar: _,
910
+ avatar: l,
742
911
  config: n,
743
- customChannelId: s,
912
+ customChannelId: r,
744
913
  initMessages: c,
745
- botTypingPlaceholder: f,
914
+ botTypingPlaceholder: d,
746
915
  options: { showDebugMessage: i },
747
- children: [
748
- /* @__PURE__ */ r(Mt, { title: t, onReset: v, onClose: b }),
749
- /* @__PURE__ */ r(re, {}),
750
- /* @__PURE__ */ r(me, {})
751
- ]
916
+ children: /* @__PURE__ */ p(Me, { fullScreen: a, children: [
917
+ /* @__PURE__ */ s(Ot, { title: t, onReset: h, onClose: f }),
918
+ /* @__PURE__ */ s(he, {}),
919
+ /* @__PURE__ */ s(ye, {})
920
+ ] })
752
921
  }
753
922
  ) });
754
923
  }
755
924
  export {
756
- ve as Chatbot,
757
- gt as useAsgardServiceClient,
758
- bt as useChannel,
759
- ft as useDebounce
925
+ He as Chatbot,
926
+ vt as useAsgardServiceClient,
927
+ Ct as useChannel,
928
+ wt as useDebounce,
929
+ Tt as useIsOnScreenKeyboardOpen,
930
+ Nt as useOnScreenKeyboardScrollFix,
931
+ Et as usePreventOverScrolling,
932
+ kt as useResizeObserver,
933
+ Lt as useUpdateVh,
934
+ yt as useViewportSize
760
935
  };