@opentiny/tiny-robot 0.3.0-rc.0 → 0.3.0-rc.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.
@@ -1,36 +1,36 @@
1
- import { ref as M, watch as ne, reactive as ot, computed as B, defineComponent as Se, createElementBlock as I, openBlock as b, createCommentVNode as N, normalizeStyle as Ve, createBlock as Y, unref as C, withCtx as he, createElementVNode as U, createVNode as Z, normalizeClass as oe, toDisplayString as ue, useAttrs as st, resolveComponent as at, mergeProps as _e, Fragment as ye, renderList as we, mergeModels as lt, useModel as rt, onMounted as it, onUnmounted as ut, nextTick as te, Transition as We, withModifiers as ct, useSlots as dt, renderSlot as ie, isRef as ft, createTextVNode as je } from "vue";
2
- import { TinyTooltip as Fe, TinyInput as pt } from "@opentiny/vue";
3
- import { d as ht } from "../index2.js";
4
- import { IconUpload as yt, IconVoice as vt, IconLoadingSpeech as gt, IconClose as mt, IconSend as bt, IconStop as _t, IconAssociate as wt } from "@opentiny/tiny-robot-svgs";
5
- import { _ as Ce } from "../_plugin-vue_export-helper.js";
6
- import { t as St } from "../utils.js";
7
- function Ct(l, c) {
8
- const s = M(l.modelValue || l.defaultValue || ""), i = M(null);
9
- ne(
1
+ import { ref as K, watch as te, reactive as nt, computed as D, defineComponent as we, createElementBlock as I, openBlock as b, createCommentVNode as W, normalizeStyle as je, createBlock as Q, unref as C, withCtx as pe, createElementVNode as U, createVNode as X, normalizeClass as ne, toDisplayString as ie, useAttrs as ot, resolveComponent as st, mergeProps as be, Fragment as he, renderList as _e, mergeModels as at, useModel as lt, onMounted as rt, onUnmounted as it, nextTick as ee, Transition as Pe, withModifiers as ut, useSlots as ct, renderSlot as re, isRef as dt, createTextVNode as ze } from "vue";
2
+ import { TinyTooltip as Me, TinyInput as ft } from "@opentiny/vue";
3
+ import { d as pt } from "../index2.js";
4
+ import { IconUpload as ht, IconVoice as vt, IconLoadingSpeech as yt, IconClose as gt, IconSend as mt, IconStop as bt, IconAssociate as _t } from "@opentiny/tiny-robot-svgs";
5
+ import { _ as Se } from "../_plugin-vue_export-helper.js";
6
+ import { t as wt } from "../utils.js";
7
+ function St(l, c) {
8
+ const s = K(l.modelValue || l.defaultValue || ""), u = K(null);
9
+ te(
10
10
  () => l.modelValue,
11
11
  (h) => {
12
12
  h !== void 0 && h !== s.value && (s.value = h);
13
13
  }
14
- ), ne(
14
+ ), te(
15
15
  () => s.value,
16
16
  (h) => {
17
17
  c("update:modelValue", h);
18
18
  }
19
19
  );
20
- const v = (h) => {
20
+ const y = (h) => {
21
21
  s.value = h, c("update:modelValue", h);
22
22
  }, S = (h) => {
23
23
  h == null || h.preventDefault();
24
- const w = s.value;
25
- !l.disabled && !l.loading && w.trim() && c("submit", w);
24
+ const _ = s.value;
25
+ !l.disabled && !l.loading && _.trim() && c("submit", _);
26
26
  }, a = () => {
27
27
  s.value = "", c("update:modelValue", ""), c("clear");
28
- }, d = M(!1);
28
+ }, d = K(!1);
29
29
  return {
30
30
  inputValue: s,
31
- inputWrapper: i,
31
+ inputWrapper: u,
32
32
  isComposing: d,
33
- handleChange: v,
33
+ handleChange: y,
34
34
  handleSubmit: S,
35
35
  handleClear: a,
36
36
  clearInput: () => {
@@ -38,12 +38,12 @@ function Ct(l, c) {
38
38
  }
39
39
  };
40
40
  }
41
- function xt(l, c, s, i, v, S, a, d, x, h, w, y, K, W, F, P) {
41
+ function Ct(l, c, s, u, y, S, a, d, x, h, _, v, A, P, M, F) {
42
42
  const T = () => {
43
- y.value && (F != null && F.value && (P == null || P()), c("submit", s.value.trim()));
44
- }, g = (p, Q) => {
43
+ v.value && (M != null && M.value && (F == null || F()), c("submit", s.value.trim()));
44
+ }, g = (p, Z) => {
45
45
  if (!(p.key === "Enter")) return !1;
46
- switch (Q) {
46
+ switch (Z) {
47
47
  case "enter":
48
48
  return !p.shiftKey && !p.ctrlKey && !p.metaKey;
49
49
  case "ctrlEnter":
@@ -56,13 +56,13 @@ function xt(l, c, s, i, v, S, a, d, x, h, w, y, K, W, F, P) {
56
56
  };
57
57
  return {
58
58
  handleKeyPress: (p) => {
59
- if (i.value) return;
60
- if (p.key === "Enter" && p.shiftKey && (K == null ? void 0 : K.value) === "single" && W) {
61
- p.preventDefault(), W();
62
- const E = p.target, q = E.selectionStart, ee = s.value;
63
- s.value = ee.substring(0, q) + `
64
- ` + ee.substring(q), setTimeout(() => {
65
- E.selectionStart = E.selectionEnd = q + 1;
59
+ if (u.value) return;
60
+ if (p.key === "Enter" && p.shiftKey && (A == null ? void 0 : A.value) === "single" && P) {
61
+ p.preventDefault(), P();
62
+ const B = p.target, q = B.selectionStart, Y = s.value;
63
+ s.value = Y.substring(0, q) + `
64
+ ` + Y.substring(q), setTimeout(() => {
65
+ B.selectionStart = B.selectionEnd = q + 1;
66
66
  }, 0);
67
67
  return;
68
68
  }
@@ -85,16 +85,16 @@ function xt(l, c, s, i, v, S, a, d, x, h, w, y, K, W, F, P) {
85
85
  }
86
86
  }
87
87
  if (p.key === "Escape") {
88
- S.value ? (x(), p.preventDefault()) : v.isRecording && (w(), p.preventDefault()), c("escape-press");
88
+ S.value ? (x(), p.preventDefault()) : y.isRecording && (_(), p.preventDefault()), c("escape-press");
89
89
  return;
90
90
  }
91
- g(p, l.submitType) && (p.preventDefault(), y.value && T());
91
+ g(p, l.submitType) && (p.preventDefault(), v.value && T());
92
92
  },
93
93
  triggerSubmit: T
94
94
  };
95
95
  }
96
- function kt(l) {
97
- const c = ot({
96
+ function xt(l) {
97
+ const c = nt({
98
98
  isRecording: !1,
99
99
  isSupported: typeof window < "u" && "webkitSpeechRecognition" in window || "SpeechRecognition" in window,
100
100
  error: void 0
@@ -107,13 +107,13 @@ function kt(l) {
107
107
  c.isRecording = !1, (a = l.onEnd) == null || a.call(l);
108
108
  }, s.onresult = (a) => {
109
109
  var x, h;
110
- const d = Array.from(a.results).map((w) => w[0].transcript).join("");
110
+ const d = Array.from(a.results).map((_) => _[0].transcript).join("");
111
111
  a.results[0].isFinal ? (x = l.onFinal) == null || x.call(l, d) : (h = l.onInterim) == null || h.call(l, d);
112
112
  }, s.onerror = (a) => {
113
113
  var d;
114
114
  c.error = new Error(a.error), c.isRecording = !1, (d = l.onError) == null || d.call(l, c.error);
115
115
  });
116
- const i = () => {
116
+ const u = () => {
117
117
  var a;
118
118
  if (!s) {
119
119
  const d = new Error("浏览器不支持语音识别");
@@ -139,7 +139,7 @@ function kt(l) {
139
139
  } catch (d) {
140
140
  S(d);
141
141
  }
142
- }, v = () => {
142
+ }, y = () => {
143
143
  if (s && c.isRecording)
144
144
  try {
145
145
  s.stop();
@@ -152,76 +152,76 @@ function kt(l) {
152
152
  };
153
153
  return {
154
154
  speechState: c,
155
- start: i,
156
- stop: v
155
+ start: u,
156
+ stop: y
157
157
  };
158
158
  }
159
- function It(l, c, s, i, v, S) {
160
- const a = M(!1), d = M(-1), x = M(-1), h = M(null), w = M(""), y = M(!1), K = B(() => {
161
- var j, J;
162
- if (!((j = l.value) != null && j.length)) return "";
159
+ function kt(l, c, s, u, y, S) {
160
+ const a = K(!1), d = K(-1), x = K(-1), h = K(null), _ = K(""), v = K(!1), A = D(() => {
161
+ var G, j;
162
+ if (!((G = l.value) != null && G.length)) return "";
163
163
  const k = h.value === "mouse" ? x.value : d.value;
164
- return ((J = l.value[k]) == null ? void 0 : J.content) || "";
165
- }), W = (k) => {
166
- w.value = k, y.value = !0;
167
- }, F = () => {
168
- w.value = "", y.value = !1;
169
- }, P = (k) => {
170
- const j = k || K.value;
171
- if (!j || !c.value) {
172
- F();
164
+ return ((j = l.value[k]) == null ? void 0 : j.content) || "";
165
+ }), P = (k) => {
166
+ _.value = k, v.value = !0;
167
+ }, M = () => {
168
+ _.value = "", v.value = !1;
169
+ }, F = (k) => {
170
+ const G = k || A.value;
171
+ if (!G || !c.value) {
172
+ M();
173
173
  return;
174
174
  }
175
- const J = j.substring(c.value.length);
176
- j.toLowerCase().startsWith(c.value.toLowerCase()) && J ? W(J) : F();
175
+ const j = G.substring(c.value.length);
176
+ G.toLowerCase().startsWith(c.value.toLowerCase()) && j ? P(j) : M();
177
177
  }, T = () => {
178
178
  d.value = -1, x.value = -1, h.value = null;
179
179
  }, g = () => {
180
- a.value = !0, P();
181
- }, O = () => {
182
- a.value = !1, T(), F();
183
- }, p = B(() => {
184
- var k;
185
- return s.value ? !0 : !!(c.value && ((k = l.value) == null ? void 0 : k.length) > 0 && !i.value);
186
- }), Q = (k) => {
187
- O(), c.value = k, v(k), S(k);
180
+ a.value = !0, F();
188
181
  }, E = () => {
189
- K.value && Q(K.value);
182
+ a.value = !1, T(), M();
183
+ }, p = D(() => {
184
+ var k;
185
+ return s.value ? !0 : !!(c.value && ((k = l.value) == null ? void 0 : k.length) > 0 && !u.value);
186
+ }), Z = (k) => {
187
+ E(), c.value = k, y(k), S(k);
188
+ }, B = () => {
189
+ A.value && Z(A.value);
190
190
  }, q = (k) => {
191
- !a.value || !l.value || (h.value = "keyboard", d.value === -1 ? d.value = k === "down" ? 0 : l.value.length - 1 : k === "down" ? d.value = (d.value + 1) % l.value.length : d.value = (d.value - 1 + l.value.length) % l.value.length, P());
192
- }, ee = (k) => {
193
- l.value && (h.value = "mouse", x.value = k, P());
194
- }, H = () => {
195
- l.value && (x.value = -1, d.value !== -1 ? h.value = "keyboard" : h.value = null, P());
191
+ !a.value || !l.value || (h.value = "keyboard", d.value === -1 ? d.value = k === "down" ? 0 : l.value.length - 1 : k === "down" ? d.value = (d.value + 1) % l.value.length : d.value = (d.value - 1 + l.value.length) % l.value.length, F());
192
+ }, Y = (k) => {
193
+ l.value && (h.value = "mouse", x.value = k, F());
194
+ }, N = () => {
195
+ l.value && (x.value = -1, d.value !== -1 ? h.value = "keyboard" : h.value = null, F());
196
196
  };
197
- return ne(p, (k) => {
198
- k ? a.value || g() : a.value && O();
197
+ return te(p, (k) => {
198
+ k ? a.value || g() : a.value && E();
199
199
  }), {
200
200
  // 弹窗控制
201
201
  isPopupVisible: a,
202
202
  openPopup: g,
203
- closePopup: O,
203
+ closePopup: E,
204
204
  // 自动完成占位符
205
- autoCompleteText: w,
206
- showTabIndicator: y,
207
- syncAutoComplete: P,
205
+ autoCompleteText: _,
206
+ showTabIndicator: v,
207
+ syncAutoComplete: F,
208
208
  // 选中控制层
209
- activeSuggestion: K,
209
+ activeSuggestion: A,
210
210
  activeKeyboardIndex: d,
211
211
  activeMouseIndex: x,
212
212
  // 交互处理
213
213
  navigateWithKeyboard: q,
214
- handleMouseEnter: ee,
215
- handleMouseLeave: H,
214
+ handleMouseEnter: Y,
215
+ handleMouseLeave: N,
216
216
  // 业务操作
217
- applySuggestion: Q,
218
- confirmSelection: E
217
+ applySuggestion: Z,
218
+ confirmSelection: B
219
219
  };
220
220
  }
221
- const Tt = { class: "action-buttons" }, Rt = { class: "action-buttons__submit-content" }, Ot = {
221
+ const It = { class: "action-buttons" }, Tt = { class: "action-buttons__submit-content" }, Rt = {
222
222
  key: 0,
223
223
  class: "action-buttons__cancel-text"
224
- }, Et = /* @__PURE__ */ Se({
224
+ }, Ot = /* @__PURE__ */ we({
225
225
  __name: "ActionButtons",
226
226
  props: {
227
227
  loading: { type: Boolean, default: !1 },
@@ -242,143 +242,143 @@ const Tt = { class: "action-buttons" }, Rt = { class: "action-buttons__submit-co
242
242
  },
243
243
  emits: ["clear", "toggle-speech", "submit", "cancel", "trigger-select"],
244
244
  setup(l, { emit: c }) {
245
- const s = l, i = c, v = B(() => {
246
- var O, p;
247
- const g = (p = (O = s.buttonGroup) == null ? void 0 : O.file) == null ? void 0 : p.tooltips;
245
+ const s = l, u = c, y = D(() => {
246
+ var E, p;
247
+ const g = (p = (E = s.buttonGroup) == null ? void 0 : E.file) == null ? void 0 : p.tooltips;
248
248
  if (typeof g == "string" && g)
249
249
  return () => g;
250
250
  if (typeof g == "function")
251
251
  return g;
252
- }), S = B(() => {
253
- var O, p;
254
- const g = (p = (O = s.buttonGroup) == null ? void 0 : O.submit) == null ? void 0 : p.tooltips;
252
+ }), S = D(() => {
253
+ var E, p;
254
+ const g = (p = (E = s.buttonGroup) == null ? void 0 : E.submit) == null ? void 0 : p.tooltips;
255
255
  if (typeof g == "string" && g)
256
256
  return () => g;
257
257
  if (typeof g == "function")
258
258
  return g;
259
- }), a = B(() => s.allowSpeech), d = B(() => s.speechStatus.isRecording), x = B(() => s.disabled), h = B(() => {
260
- var g, O;
261
- return x.value || s.isOverLimit || ((O = (g = s.buttonGroup) == null ? void 0 : g.submit) == null ? void 0 : O.disabled);
262
- }), w = B(() => s.allowFiles || s.allowSpeech || s.showClear), y = () => {
263
- x.value || i("clear");
264
- }, K = () => {
259
+ }), a = D(() => s.allowSpeech), d = D(() => s.speechStatus.isRecording), x = D(() => s.disabled), h = D(() => {
260
+ var g, E;
261
+ return x.value || s.isOverLimit || ((E = (g = s.buttonGroup) == null ? void 0 : g.submit) == null ? void 0 : E.disabled);
262
+ }), _ = D(() => s.allowFiles || s.allowSpeech || s.showClear), v = () => {
263
+ x.value || u("clear");
264
+ }, A = () => {
265
265
  if (!x.value) {
266
266
  const g = !s.speechStatus.isRecording;
267
- i("toggle-speech", g);
267
+ u("toggle-speech", g);
268
268
  }
269
- }, W = () => {
270
- h.value || i("submit");
271
- }, F = () => {
272
- x.value || i("cancel");
273
- }, P = B(() => {
274
- var g, O;
275
- return x.value || ((O = (g = s.buttonGroup) == null ? void 0 : g.file) == null ? void 0 : O.disabled);
269
+ }, P = () => {
270
+ h.value || u("submit");
271
+ }, M = () => {
272
+ x.value || u("cancel");
273
+ }, F = D(() => {
274
+ var g, E;
275
+ return x.value || ((E = (g = s.buttonGroup) == null ? void 0 : g.file) == null ? void 0 : E.disabled);
276
276
  }), T = () => {
277
- P.value || i("trigger-select");
277
+ F.value || u("trigger-select");
278
278
  };
279
- return (g, O) => (b(), I("div", Tt, [
280
- w.value ? (b(), I("div", {
279
+ return (g, E) => (b(), I("div", It, [
280
+ _.value ? (b(), I("div", {
281
281
  key: 0,
282
282
  class: "action-buttons__utility",
283
- style: Ve({ "padding-right": g.hasContent || g.loading ? "0" : "6px" })
283
+ style: je({ "padding-right": g.hasContent || g.loading ? "0" : "6px" })
284
284
  }, [
285
- g.allowFiles && !g.loading ? (b(), Y(C(Fe), {
285
+ g.allowFiles && !g.loading ? (b(), Q(C(Me), {
286
286
  key: 0,
287
287
  effect: "light",
288
288
  placement: "top",
289
- "render-content": v.value,
289
+ "render-content": y.value,
290
290
  "visible-arrow": !1
291
291
  }, {
292
- default: he(() => [
292
+ default: pe(() => [
293
293
  U("div", {
294
294
  class: "action-buttons__button",
295
295
  onClick: T
296
296
  }, [
297
- Z(C(yt), {
298
- class: oe(["action-buttons__icon", "action-buttons__icon--upload", { "is-disabled": P.value }]),
297
+ X(C(ht), {
298
+ class: ne(["action-buttons__icon", "action-buttons__icon--upload", { "is-disabled": F.value }]),
299
299
  alt: "上传文件"
300
300
  }, null, 8, ["class"])
301
301
  ])
302
302
  ]),
303
303
  _: 1
304
- }, 8, ["render-content"])) : N("", !0),
304
+ }, 8, ["render-content"])) : W("", !0),
305
305
  a.value && !g.loading ? (b(), I("div", {
306
306
  key: 1,
307
- class: oe(["action-buttons__button", { "is-recording": d.value }]),
308
- onClick: K
307
+ class: ne(["action-buttons__button", { "is-recording": d.value }]),
308
+ onClick: A
309
309
  }, [
310
- d.value ? (b(), Y(C(gt), {
310
+ d.value ? (b(), Q(C(yt), {
311
311
  key: 1,
312
312
  class: "action-buttons__icon action-buttons__icon--recording",
313
313
  alt: "语音中"
314
- })) : (b(), Y(C(vt), {
314
+ })) : (b(), Q(C(vt), {
315
315
  key: 0,
316
316
  class: "action-buttons__icon",
317
317
  alt: "录音"
318
318
  }))
319
- ], 2)) : N("", !0),
320
- g.showClear ? (b(), Y(C(Fe), {
319
+ ], 2)) : W("", !0),
320
+ g.showClear ? (b(), Q(C(Me), {
321
321
  key: 2,
322
322
  content: "清空内容",
323
323
  placement: "top"
324
324
  }, {
325
- default: he(() => [
325
+ default: pe(() => [
326
326
  U("div", {
327
327
  class: "action-buttons__button",
328
- onClick: y
328
+ onClick: v
329
329
  }, [
330
- Z(C(mt), { class: "action-buttons__icon action-buttons__icon--clear" })
330
+ X(C(gt), { class: "action-buttons__icon action-buttons__icon--clear" })
331
331
  ])
332
332
  ]),
333
333
  _: 1
334
- })) : N("", !0)
335
- ], 4)) : N("", !0),
334
+ })) : W("", !0)
335
+ ], 4)) : W("", !0),
336
336
  g.hasContent || g.loading ? (b(), I("div", {
337
337
  key: 1,
338
338
  class: "action-buttons__button action-buttons__submit",
339
- onClick: O[0] || (O[0] = (p) => g.loading ? F() : W())
339
+ onClick: E[0] || (E[0] = (p) => g.loading ? M() : P())
340
340
  }, [
341
- U("div", Rt, [
341
+ U("div", Tt, [
342
342
  g.loading ? (b(), I("div", {
343
343
  key: 1,
344
- class: oe(["action-buttons__cancel", { "action-buttons__cancel--icon-only": !g.stopText }])
344
+ class: ne(["action-buttons__cancel", { "action-buttons__cancel--icon-only": !g.stopText }])
345
345
  }, [
346
- Z(C(_t), {
346
+ X(C(bt), {
347
347
  class: "action-buttons__icon action-buttons__icon--cancel",
348
348
  alt: "停止"
349
349
  }),
350
- g.stopText ? (b(), I("span", Ot, ue(g.stopText), 1)) : N("", !0)
351
- ], 2)) : (b(), Y(C(Fe), {
350
+ g.stopText ? (b(), I("span", Rt, ie(g.stopText), 1)) : W("", !0)
351
+ ], 2)) : (b(), Q(C(Me), {
352
352
  key: 0,
353
353
  effect: "light",
354
354
  placement: "top",
355
355
  "render-content": S.value,
356
356
  "visible-arrow": !1
357
357
  }, {
358
- default: he(() => [
359
- Z(C(bt), {
360
- class: oe(["action-buttons__icon", "action-buttons__icon--send", { "is-disabled": h.value }]),
358
+ default: pe(() => [
359
+ X(C(mt), {
360
+ class: ne(["action-buttons__icon", "action-buttons__icon--send", { "is-disabled": h.value }]),
361
361
  alt: "发送"
362
362
  }, null, 8, ["class"])
363
363
  ]),
364
364
  _: 1
365
365
  }, 8, ["render-content"]))
366
366
  ])
367
- ])) : N("", !0)
367
+ ])) : W("", !0)
368
368
  ]));
369
369
  }
370
- }), Je = /* @__PURE__ */ Ce(Et, [["__scopeId", "data-v-ee42294d"]]);
371
- function $t(l, c = {}) {
372
- let s = [], i = [], v = l;
373
- return { commit: (w) => {
374
- var y;
375
- s.push(v), v = w, i.length && ((y = c.onRemoveHistory) == null || y.call(c, i)), i = [];
376
- }, undo: () => s.length ? (i.push(v), v = s.pop(), v) : null, redo: () => i.length ? (s.push(v), v = i.pop(), v) : null, clear: () => {
377
- var w, y;
378
- s.length && ((w = c.onRemoveHistory) == null || w.call(c, s)), i.length && ((y = c.onRemoveHistory) == null || y.call(c, i)), s = [], i = [];
379
- }, get: () => v };
370
+ }), Ge = /* @__PURE__ */ Se(Ot, [["__scopeId", "data-v-ee42294d"]]);
371
+ function Et(l, c = {}) {
372
+ let s = [], u = [], y = l;
373
+ return { commit: (_) => {
374
+ var v;
375
+ s.push(y), y = _, u.length && ((v = c.onRemoveHistory) == null || v.call(c, u)), u = [];
376
+ }, undo: () => s.length ? (u.push(y), y = s.pop(), y) : null, redo: () => u.length ? (s.push(y), y = u.pop(), y) : null, clear: () => {
377
+ var _, v;
378
+ s.length && ((_ = c.onRemoveHistory) == null || _.call(c, s)), u.length && ((v = c.onRemoveHistory) == null || v.call(c, u)), s = [], u = [];
379
+ }, get: () => y };
380
380
  }
381
- const Lt = ["data-id", "data-type"], Bt = ["data-id", "data-type"], Dt = /* @__PURE__ */ Se({
381
+ const $t = ["data-id", "data-type"], Bt = ["data-id", "data-type"], Lt = /* @__PURE__ */ we({
382
382
  inheritAttrs: !1,
383
383
  __name: "Block",
384
384
  props: {
@@ -389,62 +389,62 @@ const Lt = ["data-id", "data-type"], Bt = ["data-id", "data-type"], Dt = /* @__P
389
389
  asChild: { type: Boolean }
390
390
  },
391
391
  setup(l) {
392
- const c = l, s = st();
393
- return (i, v) => {
394
- const S = at("Block", !0);
395
- return c.type !== "block" ? (b(), I("span", _e({
392
+ const c = l, s = ot();
393
+ return (u, y) => {
394
+ const S = st("Block", !0);
395
+ return c.type !== "block" ? (b(), I("span", be({
396
396
  key: 0,
397
397
  "data-id": c.id,
398
398
  "data-type": c.type
399
- }, C(s)), ue(c.content), 17, Lt)) : (b(), I(ye, { key: 1 }, [
400
- c.asChild ? (b(!0), I(ye, { key: 0 }, we(c.content, (a) => (b(), Y(S, _e({
399
+ }, C(s)), ie(c.content), 17, $t)) : (b(), I(he, { key: 1 }, [
400
+ c.asChild ? (b(!0), I(he, { key: 0 }, _e(c.content, (a) => (b(), Q(S, be({
401
401
  key: `${a.id}-${a.type}`
402
- }, { ref_for: !0 }, a), null, 16))), 128)) : (b(), I("span", _e({
402
+ }, { ref_for: !0 }, a), null, 16))), 128)) : (b(), I("span", be({
403
403
  key: 1,
404
404
  "data-id": c.id,
405
405
  "data-type": c.type
406
406
  }, C(s)), [
407
- (b(!0), I(ye, null, we(c.content, (a) => (b(), Y(S, _e({
407
+ (b(!0), I(he, null, _e(c.content, (a) => (b(), Q(S, be({
408
408
  key: `${a.id}-${a.type}`
409
409
  }, { ref_for: !0 }, a), null, 16))), 128))
410
410
  ], 16, Bt))
411
411
  ], 64));
412
412
  };
413
413
  }
414
- }), At = /* @__PURE__ */ Ce(Dt, [["__scopeId", "data-v-13862606"]]), Kt = { class: "editor-container" }, Pe = "​", Mt = /* @__PURE__ */ Se({
414
+ }), Dt = /* @__PURE__ */ Se(Lt, [["__scopeId", "data-v-13862606"]]), At = { class: "editor-container" }, Fe = "​", Kt = /* @__PURE__ */ we({
415
415
  __name: "TemplateEditor",
416
416
  props: {
417
417
  modelValue: { default: () => [] },
418
418
  modelModifiers: {}
419
419
  },
420
- emits: /* @__PURE__ */ lt(["submit"], ["update:modelValue"]),
420
+ emits: /* @__PURE__ */ at(["submit"], ["update:modelValue"]),
421
421
  setup(l, { expose: c, emit: s }) {
422
- const i = typeof window.ShadowRoot.prototype.getSelection == "function", v = typeof window.Selection.prototype.getComposedRanges == "function";
422
+ const u = typeof window.ShadowRoot.prototype.getSelection == "function", y = typeof window.Selection.prototype.getComposedRanges == "function";
423
423
  function S() {
424
424
  const e = navigator.userAgent;
425
425
  return e.includes("Safari") && !e.includes("Chrome") && !e.includes("Chromium") && !e.includes("CriOS");
426
426
  }
427
- const a = S(), d = () => Math.random().toString(36).substring(2, 15), x = Pe, h = Pe, w = Pe, y = rt(l, "modelValue"), K = s, W = M(0), F = (e) => e.map((t) => ({
428
- id: t.id || d(),
429
- ...t.type === "template" ? { ...t, prefix: h, suffix: w } : t
430
- })), P = (e) => e.map((t) => ({ id: t.id, type: t.type, content: t.content })), T = M(F(y.value || [])), g = (e) => {
427
+ const a = S(), d = () => Math.random().toString(36).substring(2, 15), x = Fe, h = Fe, _ = Fe, v = lt(l, "modelValue"), A = s, P = K(0), M = (e) => e.map((n) => ({
428
+ id: n.id || d(),
429
+ ...n.type === "template" ? { ...n, prefix: h, suffix: _ } : n
430
+ })), F = (e) => e.map((n) => ({ id: n.id, type: n.type, content: n.content })), T = K(M(v.value || [])), g = (e) => {
431
431
  T.value = e;
432
- }, O = B(() => {
433
- const e = [], t = [], n = T.value;
434
- if (n.length >= 2) {
435
- const r = n[0], f = n[1];
432
+ }, E = D(() => {
433
+ const e = [], n = [], o = T.value;
434
+ if (o.length >= 2) {
435
+ const r = o[0], f = o[1];
436
436
  r.type === "text" && r.content.length === 0 && f.type === "template" && e.push({ ...r, content: x });
437
- const _ = n[n.length - 1], $ = n[n.length - 2];
438
- _.type === "text" && _.content.length === 0 && $.type === "template" && t.push({ ..._, content: x });
437
+ const w = o[o.length - 1], L = o[o.length - 2];
438
+ w.type === "text" && w.content.length === 0 && L.type === "template" && n.push({ ...w, content: x });
439
439
  }
440
- n.length > 0 && n[0].type === "template" && e.push({ type: "text", content: x, id: d() }), n.length > 0 && n[n.length - 1].type === "template" && t.push({ type: "text", content: x, id: d() });
441
- const u = new RegExp(x, "g");
442
- return n.length > 0 && (n[0].content !== x && (n[0].content = n[0].content.replace(u, "")), n[n.length - 1].content !== x && (n[n.length - 1].content = n[n.length - 1].content.replace(u, ""))), e.concat(n).concat(t);
443
- }), p = B(() => T.value.map((e) => e.type === "template" ? [
440
+ o.length > 0 && o[0].type === "template" && e.push({ type: "text", content: x, id: d() }), o.length > 0 && o[o.length - 1].type === "template" && n.push({ type: "text", content: x, id: d() });
441
+ const i = new RegExp(x, "g");
442
+ return o.length > 0 && (o[0].content !== x && (o[0].content = o[0].content.replace(i, "")), o[o.length - 1].content !== x && (o[o.length - 1].content = o[o.length - 1].content.replace(i, ""))), e.concat(o).concat(n);
443
+ }), p = D(() => T.value.map((e) => e.type === "template" ? [
444
444
  { id: e.id, type: "prefix", content: e.prefix },
445
445
  { id: e.id, type: "template", content: e.content },
446
446
  { id: e.id, type: "suffix", content: e.suffix }
447
- ] : [e]).flat()), Q = B(() => O.value.map((e) => e.type === "text" ? e : a ? {
447
+ ] : [e]).flat()), Z = D(() => E.value.map((e) => e.type === "text" ? e : a ? {
448
448
  id: e.id,
449
449
  type: "block",
450
450
  asChild: !0,
@@ -474,90 +474,90 @@ const Lt = ["data-id", "data-type"], Bt = ["data-id", "data-type"], Dt = /* @__P
474
474
  },
475
475
  { id: e.id, type: "suffix", content: e.suffix }
476
476
  ]
477
- })), E = M(null), q = (e) => {
478
- const t = Date.now(), n = JSON.stringify(e);
479
- return `${t}:${n}`;
480
- }, ee = (e) => {
481
- const t = parseInt(e.slice(0, 13)), n = JSON.parse(e.slice(14));
477
+ })), B = K(null), q = (e) => {
478
+ const n = Date.now(), o = JSON.stringify(e);
479
+ return `${n}:${o}`;
480
+ }, Y = (e) => {
481
+ const n = parseInt(e.slice(0, 13)), o = JSON.parse(e.slice(14));
482
482
  return {
483
- timestamp: t,
484
- data: n
483
+ timestamp: n,
484
+ data: o
485
485
  };
486
- }, H = /* @__PURE__ */ new Map(), k = $t(q(T.value), {
486
+ }, N = /* @__PURE__ */ new Map(), k = Et(q(T.value), {
487
487
  onRemoveHistory: (e) => {
488
- for (const t of e)
489
- H.delete(t);
488
+ for (const n of e)
489
+ N.delete(n);
490
490
  }
491
491
  });
492
- ne(
493
- () => y.value,
492
+ te(
493
+ () => v.value,
494
494
  (e) => {
495
- const t = F(e || []);
496
- if (JSON.stringify(t) !== JSON.stringify(T.value)) {
497
- if (E.value) {
498
- const u = le(E.value);
499
- u && H.set(k.get(), X(u));
495
+ const n = M(e || []);
496
+ if (JSON.stringify(n) !== JSON.stringify(T.value)) {
497
+ if (B.value) {
498
+ const i = ae(B.value);
499
+ i && N.set(k.get(), J(i));
500
500
  }
501
- g(t), k.commit(q(T.value));
501
+ g(n), k.commit(q(T.value));
502
502
  }
503
503
  },
504
504
  { deep: !0 }
505
505
  );
506
- const j = (e, t = document.body) => t.contains(e) ? e instanceof HTMLElement && e.dataset.id ? e : e.parentElement ? j(e.parentElement, t) : null : null, J = (e) => e === E.value, le = (e) => {
507
- const t = window.getSelection();
508
- if (!t)
506
+ const G = (e, n = document.body) => n.contains(e) ? e instanceof HTMLElement && e.dataset.id ? e : e.parentElement ? G(e.parentElement, n) : null : null, j = (e) => e === B.value, ae = (e) => {
507
+ const n = window.getSelection();
508
+ if (!n)
509
509
  return null;
510
- const n = t.rangeCount > 0 ? t.getRangeAt(0) : null, u = e.getRootNode();
511
- if (!(u instanceof ShadowRoot))
512
- return n;
513
- if (v) {
514
- const r = t.getComposedRanges(a ? u : { shadowRoots: [u] });
510
+ const o = n.rangeCount > 0 ? n.getRangeAt(0) : null, i = e.getRootNode();
511
+ if (!(i instanceof ShadowRoot))
512
+ return o;
513
+ if (y) {
514
+ const r = n.getComposedRanges(a ? i : { shadowRoots: [i] });
515
515
  return (r == null ? void 0 : r[0]) ?? null;
516
516
  }
517
- if (i) {
518
- const r = u.getSelection();
517
+ if (u) {
518
+ const r = i.getSelection();
519
519
  return r.rangeCount > 0 ? r.getRangeAt(0) : null;
520
520
  }
521
- return n;
522
- }, V = (e, t) => {
523
- var u;
521
+ return o;
522
+ }, V = (e, n) => {
523
+ var i;
524
524
  if (!e.firstChild || e.firstChild.nodeType !== Node.TEXT_NODE)
525
525
  return { node: e, offset: 0 };
526
- const n = ((u = e.firstChild.textContent) == null ? void 0 : u.length) ?? 0;
527
- return { node: e.firstChild, offset: Math.min(t, n) };
528
- }, z = (e, t, n, u) => {
526
+ const o = ((i = e.firstChild.textContent) == null ? void 0 : i.length) ?? 0;
527
+ return { node: e.firstChild, offset: Math.min(n, o) };
528
+ }, z = (e, n, o, i) => {
529
529
  const r = window.getSelection();
530
530
  if (!r)
531
531
  return;
532
- const { node: f, offset: _ } = V(e, t);
533
- if (!n) {
534
- r.setBaseAndExtent(f, _, f, _);
532
+ const { node: f, offset: w } = V(e, n);
533
+ if (!o) {
534
+ r.setBaseAndExtent(f, w, f, w);
535
535
  return;
536
536
  }
537
- const { node: $, offset: G } = V(n, u ?? 0);
538
- r.setBaseAndExtent(f, _, $, G);
539
- }, ve = (e, t) => {
540
- const n = d(), u = { id: n, type: "text", content: e };
541
- if (t) {
542
- const r = T.value.findIndex((f) => f.id === t);
537
+ const { node: L, offset: H } = V(o, i ?? 0);
538
+ r.setBaseAndExtent(f, w, L, H);
539
+ }, ve = (e, n) => {
540
+ const o = d(), i = { id: o, type: "text", content: e };
541
+ if (n) {
542
+ const r = T.value.findIndex((f) => f.id === n);
543
543
  r !== -1 ? (g(
544
- T.value.slice(0, r + 1).concat(u).concat(T.value.slice(r + 1))
545
- ), k.commit(q(T.value))) : console.warn(`can not find item with id: ${t}`);
544
+ T.value.slice(0, r + 1).concat(i).concat(T.value.slice(r + 1))
545
+ ), k.commit(q(T.value))) : console.warn(`can not find item with id: ${n}`);
546
546
  } else
547
- g([u].concat(T.value)), k.commit(q(T.value));
548
- te(() => {
547
+ g([i].concat(T.value)), k.commit(q(T.value));
548
+ ee(() => {
549
549
  var f;
550
- const r = (f = E.value) == null ? void 0 : f.querySelector(`[data-id="${n}"][data-type="text"]`);
550
+ const r = (f = B.value) == null ? void 0 : f.querySelector(`[data-id="${o}"][data-type="text"]`);
551
551
  r && z(r, e.length);
552
- }), y.value = P(T.value);
553
- }, se = M({
552
+ }), v.value = F(T.value);
553
+ }, oe = K({
554
554
  hasStarted: !1,
555
555
  range: null
556
- }), xe = (e) => {
557
- var $;
558
- const t = e;
556
+ }), Ce = (e) => {
557
+ var L;
558
+ const n = e;
559
559
  e.preventDefault();
560
- const { inputType: n } = t, u = (t.data || (($ = t.dataTransfer) == null ? void 0 : $.getData("text/plain")) || "").replace(h, "").replace(w, ""), r = t.getTargetRanges()[0];
560
+ const { inputType: o } = n, i = (n.data || ((L = n.dataTransfer) == null ? void 0 : L.getData("text/plain")) || "").replace(h, "").replace(_, ""), r = n.getTargetRanges()[0];
561
561
  if (!r) {
562
562
  console.warn("range is null", r);
563
563
  return;
@@ -573,113 +573,113 @@ const Lt = ["data-id", "data-type"], Bt = ["data-id", "data-type"], Dt = /* @__P
573
573
  "deleteSoftLineBackward",
574
574
  "deleteSoftLineForward",
575
575
  "deleteByCut"
576
- ], _ = le(E.value);
577
- if (f.includes(n)) {
578
- if (u && J(r.startContainer) && J(r.endContainer)) {
579
- _ && H.set(k.get(), X(_)), ve(u);
576
+ ], w = ae(B.value);
577
+ if (f.includes(o)) {
578
+ if (i && j(r.startContainer) && j(r.endContainer)) {
579
+ w && N.set(k.get(), J(w)), ve(i);
580
580
  return;
581
581
  }
582
- const G = X(r);
583
- G.startId && G.endId ? (_ && H.set(k.get(), X(_)), ce(G, n, u)) : console.warn("range is not valid, range:", G);
584
- } else n === "insertCompositionText" && se.value.hasStarted && (se.value = { hasStarted: !1, range: X(r) });
585
- }, X = (e) => {
586
- const t = j(e.startContainer, E.value), n = j(e.endContainer, E.value);
582
+ const H = J(r);
583
+ H.startId && H.endId ? (w && N.set(k.get(), J(w)), ue(H, o, i)) : console.warn("range is not valid, range:", H);
584
+ } else o === "insertCompositionText" && oe.value.hasStarted && (oe.value = { hasStarted: !1, range: J(r) });
585
+ }, J = (e) => {
586
+ const n = G(e.startContainer, B.value), o = G(e.endContainer, B.value);
587
587
  return {
588
588
  collapsed: e.collapsed,
589
589
  endContainer: e.endContainer,
590
- endId: n == null ? void 0 : n.dataset.id,
591
- endEl: n,
590
+ endId: o == null ? void 0 : o.dataset.id,
591
+ endEl: o,
592
592
  endOffset: e.endOffset,
593
- endType: n == null ? void 0 : n.dataset.type,
593
+ endType: o == null ? void 0 : o.dataset.type,
594
594
  startContainer: e.startContainer,
595
- startId: t == null ? void 0 : t.dataset.id,
596
- startEl: t,
595
+ startId: n == null ? void 0 : n.dataset.id,
596
+ startEl: n,
597
597
  startOffset: e.startOffset,
598
- startType: t == null ? void 0 : t.dataset.type
598
+ startType: n == null ? void 0 : n.dataset.type
599
599
  };
600
- }, ke = (e, t, n, u) => e.slice(0, n) + t + e.slice(u), ce = (e, t, n) => {
601
- const u = Be(e);
602
- if (!Array.isArray(u) || u.length === 0)
600
+ }, xe = (e, n, o, i) => e.slice(0, o) + n + e.slice(i), ue = (e, n, o) => {
601
+ const i = Be(e);
602
+ if (!Array.isArray(i) || i.length === 0)
603
603
  return;
604
- const r = De(u, e, t, n);
605
- if (r.some((R) => R.tag === "new")) {
606
- const { afterId: R, content: L } = r[0];
607
- ve(L, R);
604
+ const r = Le(i, e, n, o);
605
+ if (r.some((O) => O.tag === "new")) {
606
+ const { afterId: O, content: $ } = r[0];
607
+ ve($, O);
608
608
  return;
609
609
  }
610
- const f = r, _ = [];
611
- for (const [R, L] of f.entries()) {
612
- const D = T.value.find((m) => m.id === L.id), o = R === 0 ? n : "";
613
- D ? D.type === "text" ? D.content = ke(D.content, o, L.startOffset, L.endOffset) : D.type === "template" ? L.type === "prefix" || L.type === "suffix" ? L.startOffset === 0 && L.endOffset === 1 && o.length === 0 ? D[L.type] = "" : console.warn(`${L.type} can not be inserted text. it only can be deleted`, L) : L.startOffset < 0 || L.endOffset > D.content.length ? _.push(D.id) : D.content = ke(D.content, o, L.startOffset, L.endOffset) : console.warn("dataItem.type is not text or template", D) : console.warn("can not find dataItem", L);
610
+ const f = r, w = [];
611
+ for (const [O, $] of f.entries()) {
612
+ const t = T.value.find((R) => R.id === $.id), m = O === 0 ? o : "";
613
+ t ? t.type === "text" ? t.content = xe(t.content, m, $.startOffset, $.endOffset) : t.type === "template" ? $.type === "prefix" || $.type === "suffix" ? $.startOffset === 0 && $.endOffset === 1 && m.length === 0 ? t[$.type] = "" : console.warn(`${$.type} can not be inserted text. it only can be deleted`, $) : $.startOffset < 0 || $.endOffset > t.content.length ? w.push(t.id) : t.content = xe(t.content, m, $.startOffset, $.endOffset) : console.warn("dataItem.type is not text or template", t) : console.warn("can not find dataItem", $);
614
614
  }
615
- let $ = T.value.filter((R) => !_.includes(R.id));
616
- $ = $.filter((R) => !(R.type === "template" && [R.prefix, R.suffix, R.content].join("").length === 0));
617
- const G = /* @__PURE__ */ new Set();
618
- $.forEach((R, L, D) => {
619
- if (D.length >= 2) {
620
- if (L === 0 || L === 1) {
621
- const o = D[0], m = D[1];
622
- if (o.type === "text" && o.content.length === 0 && m.type === "template")
615
+ let L = T.value.filter((O) => !w.includes(O.id));
616
+ L = L.filter((O) => !(O.type === "template" && [O.prefix, O.suffix, O.content].join("").length === 0));
617
+ const H = /* @__PURE__ */ new Set();
618
+ L.forEach((O, $, t) => {
619
+ if (t.length >= 2) {
620
+ if ($ === 0 || $ === 1) {
621
+ const m = t[0], R = t[1];
622
+ if (m.type === "text" && m.content.length === 0 && R.type === "template")
623
623
  return;
624
624
  }
625
- if (L === D.length - 2 || L === D.length - 1) {
626
- const o = D[D.length - 1], m = D[D.length - 2];
627
- if (o.type === "text" && o.content.length === 0 && m.type === "template")
625
+ if ($ === t.length - 2 || $ === t.length - 1) {
626
+ const m = t[t.length - 1], R = t[t.length - 2];
627
+ if (m.type === "text" && m.content.length === 0 && R.type === "template")
628
628
  return;
629
629
  }
630
630
  }
631
- R.type === "text" && R.content.length === 0 && G.add(R.id);
632
- }), $ = $.filter((R) => !G.has(R.id));
633
- for (const R of $.filter((L) => L.type === "template"))
634
- R.prefix.length === 0 && (R.prefix = h), R.suffix.length === 0 && (R.suffix = w);
635
- g($), k.commit(q(T.value)), f.length > 0 && ge(f, n), y.value = P(T.value);
636
- }, ge = (e, t) => {
637
- const n = e[0], u = `[data-id="${n.id}"][data-type="${n.type}"]`, r = e.slice(1).map((f) => `[data-id="${f.id}"][data-type="${f.type}"]`);
638
- te(() => {
639
- var _, $;
640
- const f = (_ = E.value) == null ? void 0 : _.querySelector(u);
631
+ O.type === "text" && O.content.length === 0 && H.add(O.id);
632
+ }), L = L.filter((O) => !H.has(O.id));
633
+ for (const O of L.filter(($) => $.type === "template"))
634
+ O.prefix.length === 0 && (O.prefix = h), O.suffix.length === 0 && (O.suffix = _);
635
+ g(L), k.commit(q(T.value)), f.length > 0 && ye(f, o), v.value = F(T.value);
636
+ }, ye = (e, n) => {
637
+ const o = e[0], i = `[data-id="${o.id}"][data-type="${o.type}"]`, r = e.slice(1).map((f) => `[data-id="${f.id}"][data-type="${f.type}"]`);
638
+ ee(() => {
639
+ var w, L;
640
+ const f = (w = B.value) == null ? void 0 : w.querySelector(i);
641
641
  if (f)
642
- z(f, n.startOffset + t.length);
643
- else if (t.length === 0)
644
- for (const G of r) {
645
- const R = ($ = E.value) == null ? void 0 : $.querySelector(G);
646
- if (R) {
647
- z(R, 0);
642
+ z(f, o.startOffset + n.length);
643
+ else if (n.length === 0)
644
+ for (const H of r) {
645
+ const O = (L = B.value) == null ? void 0 : L.querySelector(H);
646
+ if (O) {
647
+ z(O, 0);
648
648
  break;
649
649
  }
650
650
  }
651
651
  else
652
- console.warn(`can not find el with selector: ${u}`);
652
+ console.warn(`can not find el with selector: ${i}`);
653
653
  });
654
654
  }, Be = (e) => {
655
- const t = p.value.findIndex((_) => _.id === e.startId && _.type === e.startType), n = p.value.findIndex((_) => _.id === e.endId && _.type === e.endType);
656
- if (t === -1 || n === -1 || t > n)
655
+ const n = p.value.findIndex((w) => w.id === e.startId && w.type === e.startType), o = p.value.findIndex((w) => w.id === e.endId && w.type === e.endType);
656
+ if (n === -1 || o === -1 || n > o)
657
657
  return console.warn("startIndex or endIndex is -1, or startIndex > endIndex. ", { range: e }), null;
658
- const u = p.value[t], r = p.value[n];
659
- if (t === n)
658
+ const i = p.value[n], r = p.value[o];
659
+ if (n === o)
660
660
  return [
661
661
  {
662
- id: u.id,
663
- type: u.type,
662
+ id: i.id,
663
+ type: i.type,
664
664
  startOffset: e.startOffset,
665
665
  endOffset: e.endOffset
666
666
  }
667
667
  ];
668
668
  const f = [
669
669
  {
670
- id: u.id,
671
- type: u.type,
670
+ id: i.id,
671
+ type: i.type,
672
672
  startOffset: e.startOffset,
673
- endOffset: u.content.length
673
+ endOffset: i.content.length
674
674
  }
675
675
  ];
676
- for (let _ = t + 1; _ < n; _++) {
677
- const $ = p.value[_];
676
+ for (let w = n + 1; w < o; w++) {
677
+ const L = p.value[w];
678
678
  f.push({
679
- id: $.id,
680
- type: $.type,
679
+ id: L.id,
680
+ type: L.type,
681
681
  startOffset: 0,
682
- endOffset: $.content.length
682
+ endOffset: L.content.length
683
683
  });
684
684
  }
685
685
  return f.push({
@@ -688,163 +688,163 @@ const Lt = ["data-id", "data-type"], Bt = ["data-id", "data-type"], Dt = /* @__P
688
688
  startOffset: 0,
689
689
  endOffset: e.endOffset
690
690
  }), f;
691
- }, De = (e, t, n, u) => {
691
+ }, Le = (e, n, o, i) => {
692
692
  const r = e[0];
693
693
  if (r.type !== "prefix" && r.type !== "suffix")
694
694
  return e;
695
695
  if (e.length === 1) {
696
- if (t.collapsed)
697
- if (t.startOffset === 0) {
698
- const f = ae(r, u);
696
+ if (n.collapsed)
697
+ if (n.startOffset === 0) {
698
+ const f = se(r, i);
699
699
  return f ? [f] : [];
700
700
  } else {
701
- const f = de(r, u);
701
+ const f = ce(r, i);
702
702
  return f ? [f] : [];
703
703
  }
704
- if (n.startsWith("insert"))
704
+ if (o.startsWith("insert"))
705
705
  if (a) {
706
- const f = ae(r, u);
706
+ const f = se(r, i);
707
707
  return f ? [f] : [];
708
708
  } else {
709
- const f = de(r, u);
709
+ const f = ce(r, i);
710
710
  return f ? [f] : [];
711
711
  }
712
- if (n.startsWith("delete")) {
713
- if (n.includes("Backward")) {
714
- const f = ae(r, u, 1);
712
+ if (o.startsWith("delete")) {
713
+ if (o.includes("Backward")) {
714
+ const f = se(r, i, 1);
715
715
  return f ? [f] : [];
716
- } else if (n.includes("Forward")) {
717
- const f = de(r, u, 1);
716
+ } else if (o.includes("Forward")) {
717
+ const f = ce(r, i, 1);
718
718
  return f ? [f] : [];
719
719
  }
720
720
  }
721
721
  }
722
- return u.length > 0 ? e.slice(1) : e;
723
- }, ae = (e, t, n = 0) => {
724
- const u = p.value.findIndex((r) => r.id === e.id && r.type === e.type);
725
- if (u > 0) {
726
- const r = p.value[u - 1], { id: f, type: _, content: $ } = r;
727
- if (_ === "text" || _ === "template")
722
+ return i.length > 0 ? e.slice(1) : e;
723
+ }, se = (e, n, o = 0) => {
724
+ const i = p.value.findIndex((r) => r.id === e.id && r.type === e.type);
725
+ if (i > 0) {
726
+ const r = p.value[i - 1], { id: f, type: w, content: L } = r;
727
+ if (w === "text" || w === "template")
728
728
  return {
729
729
  id: f,
730
- type: _,
731
- startOffset: $.length - n,
732
- endOffset: $.length
730
+ type: w,
731
+ startOffset: L.length - o,
732
+ endOffset: L.length
733
733
  };
734
- if (t.length > 0)
735
- return { tag: "new", afterId: f, type: "text", content: t };
736
- if (console.warn("the previous item is not text or template", { current: e, previous: r }), n === 1)
734
+ if (n.length > 0)
735
+ return { tag: "new", afterId: f, type: "text", content: n };
736
+ if (console.warn("the previous item is not text or template", { current: e, previous: r }), o === 1)
737
737
  return { ...e, endOffset: e.startOffset };
738
- } else return t.length > 0 ? { tag: "new", type: "text", content: t } : (console.warn("the previous item of current is not found", { current: e }), null);
738
+ } else return n.length > 0 ? { tag: "new", type: "text", content: n } : (console.warn("the previous item of current is not found", { current: e }), null);
739
739
  return e;
740
- }, de = (e, t, n = 0) => {
741
- const u = p.value.findIndex((r) => r.id === e.id && r.type === e.type);
742
- if (u < p.value.length - 1) {
743
- const r = p.value[u + 1], { id: f, type: _ } = r;
744
- if (_ === "text" || _ === "template")
740
+ }, ce = (e, n, o = 0) => {
741
+ const i = p.value.findIndex((r) => r.id === e.id && r.type === e.type);
742
+ if (i < p.value.length - 1) {
743
+ const r = p.value[i + 1], { id: f, type: w } = r;
744
+ if (w === "text" || w === "template")
745
745
  return {
746
746
  id: f,
747
- type: _,
747
+ type: w,
748
748
  startOffset: 0,
749
- endOffset: 0 + n
749
+ endOffset: 0 + o
750
750
  };
751
- if (t.length > 0)
752
- return { tag: "new", afterId: e.id, type: "text", content: t };
753
- if (console.warn("the next item is not text or template", { current: e, next: r }), n === 1)
751
+ if (n.length > 0)
752
+ return { tag: "new", afterId: e.id, type: "text", content: n };
753
+ if (console.warn("the next item is not text or template", { current: e, next: r }), o === 1)
754
754
  return { ...e, startOffset: e.endOffset };
755
- } else return t.length > 0 ? { tag: "new", afterId: e.id, type: "text", content: t } : (console.warn("the next item of current is not found", { current: e }), null);
755
+ } else return n.length > 0 ? { tag: "new", afterId: e.id, type: "text", content: n } : (console.warn("the next item of current is not found", { current: e }), null);
756
756
  return e;
757
- }, Ie = () => {
758
- se.value = { hasStarted: !0, range: null };
759
- }, me = (e) => {
760
- const t = se.value.range;
761
- t ? (e.data && J(t.startContainer) && J(t.endContainer) ? (H.set(k.get(), X(t)), ve(e.data)) : t.startId && t.endId ? (H.set(k.get(), X(t)), ce(t, "insertCompositionText", e.data)) : console.warn("range is not valid, range:", t), W.value++) : console.warn("range is null, compositionEnd:", e), se.value = { hasStarted: !1, range: null };
762
- }, fe = (() => {
757
+ }, ke = () => {
758
+ oe.value = { hasStarted: !0, range: null };
759
+ }, ge = (e) => {
760
+ const n = oe.value.range;
761
+ n ? (e.data && j(n.startContainer) && j(n.endContainer) ? (N.set(k.get(), J(n)), ve(e.data)) : n.startId && n.endId ? (N.set(k.get(), J(n)), ue(n, "insertCompositionText", e.data)) : console.warn("range is not valid, range:", n), P.value++) : console.warn("range is null, compositionEnd:", e), oe.value = { hasStarted: !1, range: null };
762
+ }, de = (() => {
763
763
  const e = navigator.userAgent.toLowerCase();
764
764
  return /macintosh|mac os x|iphone|ipad|ipod/.test(e);
765
- })(), pe = (e) => {
766
- const t = fe && e.metaKey && !e.shiftKey && e.key.toLowerCase() === "z" || // Cmd+Z
767
- !fe && e.ctrlKey && !e.shiftKey && e.key.toLowerCase() === "z", n = fe && e.metaKey && e.shiftKey && e.key.toLowerCase() === "z" || // Cmd+Shift+z
768
- !fe && e.ctrlKey && (e.key.toLowerCase() === "y" || e.shiftKey && e.key.toLowerCase() === "z"), u = e.key.toLowerCase() === "enter";
769
- if (t) {
765
+ })(), fe = (e) => {
766
+ const n = de && e.metaKey && !e.shiftKey && e.key.toLowerCase() === "z" || // Cmd+Z
767
+ !de && e.ctrlKey && !e.shiftKey && e.key.toLowerCase() === "z", o = de && e.metaKey && e.shiftKey && e.key.toLowerCase() === "z" || // Cmd+Shift+z
768
+ !de && e.ctrlKey && (e.key.toLowerCase() === "y" || e.shiftKey && e.key.toLowerCase() === "z"), i = e.key.toLowerCase() === "enter";
769
+ if (n) {
770
770
  e.preventDefault();
771
- const r = le(E.value);
772
- r && H.set(k.get(), X(r));
771
+ const r = ae(B.value);
772
+ r && N.set(k.get(), J(r));
773
773
  const f = k.undo();
774
- f && Te(f);
774
+ f && Ie(f);
775
775
  }
776
- if (n) {
776
+ if (o) {
777
777
  e.preventDefault();
778
778
  const r = k.redo();
779
- r && Te(r);
779
+ r && Ie(r);
780
780
  }
781
- u && (e.preventDefault(), K("submit"));
782
- }, Te = (e) => {
783
- const { data: t } = ee(e);
784
- if (g(t), H.has(e)) {
785
- const n = H.get(e);
786
- te(() => {
787
- const u = E.value.querySelector(`[data-id="${n.startId}"][data-type="${n.startType}"]`), r = E.value.querySelector(`[data-id="${n.endId}"][data-type="${n.endType}"]`);
788
- u && z(u, n.startOffset, r, n.endOffset);
781
+ i && (e.preventDefault(), A("submit"));
782
+ }, Ie = (e) => {
783
+ const { data: n } = Y(e);
784
+ if (g(n), N.has(e)) {
785
+ const o = N.get(e);
786
+ ee(() => {
787
+ const i = B.value.querySelector(`[data-id="${o.startId}"][data-type="${o.startType}"]`), r = B.value.querySelector(`[data-id="${o.endId}"][data-type="${o.endType}"]`);
788
+ i && z(i, o.startOffset, r, o.endOffset);
789
789
  });
790
790
  }
791
- y.value = P(T.value);
792
- }, Re = (e, t) => {
791
+ v.value = F(T.value);
792
+ }, Te = (e, n) => {
793
793
  var r, f;
794
- const n = (r = E.value) == null ? void 0 : r.querySelector(`[data-id="${e}"][data-type="${t}"]`);
795
- if (!n) return;
796
- const u = ((f = n.textContent) == null ? void 0 : f.length) || 0;
797
- z(n, u);
798
- }, Ae = () => {
799
- E.value && te(() => {
800
- const e = T.value, t = e.find((u) => u.type === "template");
801
- t && Re(t.id, "template"), e.every((u) => u.type === "text") && e.length === 1 && Re(e[0].id, "text");
794
+ const o = (r = B.value) == null ? void 0 : r.querySelector(`[data-id="${e}"][data-type="${n}"]`);
795
+ if (!o) return;
796
+ const i = ((f = o.textContent) == null ? void 0 : f.length) || 0;
797
+ z(o, i);
798
+ }, De = () => {
799
+ B.value && ee(() => {
800
+ const e = T.value, n = e.find((i) => i.type === "template");
801
+ n && Te(n.id, "template"), e.every((i) => i.type === "text") && e.length === 1 && Te(e[0].id, "text");
802
802
  });
803
- }, Ke = () => {
804
- k.clear(), H.clear();
805
- }, Oe = () => {
806
- if (!E.value || se.value.range)
803
+ }, Ae = () => {
804
+ k.clear(), N.clear();
805
+ }, Re = () => {
806
+ if (!B.value || oe.value.range)
807
807
  return;
808
- const e = le(E.value);
809
- if (e != null && e.collapsed && O.value.length > 0) {
810
- const t = X(e), n = O.value[0];
811
- if (t.startEl && t.startId === n.id && t.startOffset === 0 && n.content === x && n.type === "text") {
812
- z(t.startEl, 1);
808
+ const e = ae(B.value);
809
+ if (e != null && e.collapsed && E.value.length > 0) {
810
+ const n = J(e), o = E.value[0];
811
+ if (n.startEl && n.startId === o.id && n.startOffset === 0 && o.content === x && o.type === "text") {
812
+ z(n.startEl, 1);
813
813
  return;
814
814
  }
815
- const u = O.value[O.value.length - 1];
816
- if (t.endEl && t.endId === u.id && t.endOffset === 1 && u.content === x && u.type === "text") {
817
- z(t.endEl, 0);
815
+ const i = E.value[E.value.length - 1];
816
+ if (n.endEl && n.endId === i.id && n.endOffset === 1 && i.content === x && i.type === "text") {
817
+ z(n.endEl, 0);
818
818
  return;
819
819
  }
820
820
  }
821
821
  };
822
- return it(() => {
823
- document.addEventListener("selectionchange", Oe);
824
- }), ut(() => {
825
- document.removeEventListener("selectionchange", Oe);
822
+ return rt(() => {
823
+ document.addEventListener("selectionchange", Re);
824
+ }), it(() => {
825
+ document.removeEventListener("selectionchange", Re);
826
826
  }), c({
827
- clearHistory: Ke,
828
- activateFirstField: Ae
829
- }), (e, t) => (b(), I("div", Kt, [
827
+ clearHistory: Ae,
828
+ activateFirstField: De
829
+ }), (e, n) => (b(), I("div", At, [
830
830
  (b(), I("div", {
831
831
  contenteditable: "true",
832
832
  ref_key: "editorRef",
833
- ref: E,
834
- key: W.value,
833
+ ref: B,
834
+ key: P.value,
835
835
  class: "editor",
836
- onBeforeinput: xe,
837
- onCompositionstart: Ie,
838
- onCompositionend: me,
839
- onKeydown: pe
836
+ onBeforeinput: Ce,
837
+ onCompositionstart: ke,
838
+ onCompositionend: ge,
839
+ onKeydown: fe
840
840
  }, [
841
- (b(!0), I(ye, null, we(Q.value, (n) => (b(), Y(At, _e({
842
- key: `${n.id}-${n.type}`
843
- }, { ref_for: !0 }, n), null, 16))), 128))
841
+ (b(!0), I(he, null, _e(Z.value, (o) => (b(), Q(Dt, be({
842
+ key: `${o.id}-${o.type}`
843
+ }, { ref_for: !0 }, o), null, 16))), 128))
844
844
  ], 32))
845
845
  ]));
846
846
  }
847
- }), Ft = /* @__PURE__ */ Ce(Mt, [["__scopeId", "data-v-5fda773e"]]), Xe = (l, c) => {
847
+ }), Mt = /* @__PURE__ */ Se(Kt, [["__scopeId", "data-v-5fda773e"]]), Je = (l, c) => {
848
848
  if (!c.length)
849
849
  return [{ text: l, isMatch: !1 }];
850
850
  const s = [];
@@ -853,43 +853,43 @@ const Lt = ["data-id", "data-type"], Bt = ["data-id", "data-type"], Dt = /* @__P
853
853
  let d = 0;
854
854
  const x = l.toLowerCase(), h = a.toLowerCase();
855
855
  for (; ; ) {
856
- const w = x.indexOf(h, d);
857
- if (w === -1) break;
856
+ const _ = x.indexOf(h, d);
857
+ if (_ === -1) break;
858
858
  s.push({
859
- start: w,
860
- end: w + a.length
861
- }), d = w + 1;
859
+ start: _,
860
+ end: _ + a.length
861
+ }), d = _ + 1;
862
862
  }
863
863
  }
864
864
  if (s.length === 0)
865
865
  return [{ text: l, isMatch: !1 }];
866
866
  s.sort((a, d) => a.start - d.start);
867
- const i = [];
867
+ const u = [];
868
868
  for (const a of s)
869
- if (i.length === 0)
870
- i.push(a);
869
+ if (u.length === 0)
870
+ u.push(a);
871
871
  else {
872
- const d = i[i.length - 1];
873
- a.start <= d.end ? d.end = Math.max(d.end, a.end) : i.push(a);
872
+ const d = u[u.length - 1];
873
+ a.start <= d.end ? d.end = Math.max(d.end, a.end) : u.push(a);
874
874
  }
875
- const v = [];
875
+ const y = [];
876
876
  let S = 0;
877
- for (const a of i)
878
- S < a.start && v.push({
877
+ for (const a of u)
878
+ S < a.start && y.push({
879
879
  text: l.substring(S, a.start),
880
880
  isMatch: !1
881
- }), v.push({
881
+ }), y.push({
882
882
  text: l.substring(a.start, a.end),
883
883
  isMatch: !0
884
884
  }), S = a.end;
885
- return S < l.length && v.push({
885
+ return S < l.length && y.push({
886
886
  text: l.substring(S),
887
887
  isMatch: !1
888
- }), v;
889
- }, Pt = (l, c) => !c || !l ? [{ text: l, isMatch: !1 }] : Xe(l, [c]), Wt = (l, c) => {
890
- const { content: s, highlights: i } = l;
891
- return typeof i == "function" ? i(s, c) : Array.isArray(i) ? Xe(s, i) : Pt(s, c);
892
- }, Vt = ["onMouseenter", "onMousedown"], Nt = { class: "suggestion-list__text" }, Ht = /* @__PURE__ */ Se({
888
+ }), y;
889
+ }, Ft = (l, c) => !c || !l ? [{ text: l, isMatch: !1 }] : Je(l, [c]), Pt = (l, c) => {
890
+ const { content: s, highlights: u } = l;
891
+ return typeof u == "function" ? u(s, c) : Array.isArray(u) ? Je(s, u) : Ft(s, c);
892
+ }, Vt = ["onMouseenter", "onMousedown"], Wt = { class: "suggestion-list__text" }, Nt = /* @__PURE__ */ we({
893
893
  __name: "SuggestionList",
894
894
  props: {
895
895
  show: { type: Boolean },
@@ -901,81 +901,84 @@ const Lt = ["data-id", "data-type"], Bt = ["data-id", "data-type"], Dt = /* @__P
901
901
  },
902
902
  emits: ["select", "mouse-enter", "mouse-leave"],
903
903
  setup(l, { emit: c }) {
904
- const s = l, i = c, v = M(null), S = (h) => h === s.activeKeyboardIndex || h === s.activeMouseIndex, a = (h) => {
905
- i("mouse-enter", h);
904
+ const s = l, u = c, y = K(null), S = (h) => h === s.activeKeyboardIndex || h === s.activeMouseIndex, a = (h) => {
905
+ u("mouse-enter", h);
906
906
  }, d = () => {
907
- i("mouse-leave");
907
+ u("mouse-leave");
908
908
  }, x = (h) => {
909
- i("select", h);
909
+ u("select", h);
910
910
  };
911
- return ne(
911
+ return te(
912
912
  () => s.activeKeyboardIndex,
913
913
  (h) => {
914
- if (h !== -1 && v.value) {
915
- const w = v.value.children[h];
916
- w && w.scrollIntoView({ block: "nearest" });
914
+ if (h !== -1 && y.value) {
915
+ const _ = y.value.children[h];
916
+ _ && _.scrollIntoView({ block: "nearest" });
917
917
  }
918
918
  }
919
- ), (h, w) => (b(), Y(We, { name: "tiny-sender-slide-up" }, {
920
- default: he(() => [
919
+ ), (h, _) => (b(), Q(Pe, { name: "tiny-sender-slide-up" }, {
920
+ default: pe(() => [
921
921
  s.show && s.suggestions.length ? (b(), I("div", {
922
922
  key: 0,
923
923
  ref_key: "suggestionsListRef",
924
- ref: v,
924
+ ref: y,
925
925
  class: "suggestion-list",
926
- style: Ve(s.popupStyle)
926
+ style: je(s.popupStyle)
927
927
  }, [
928
- (b(!0), I(ye, null, we(s.suggestions, (y, K) => (b(), I("div", {
929
- key: K,
930
- class: oe(["suggestion-list__item", { highlighted: S(K) }]),
931
- onMouseenter: (W) => a(K),
928
+ (b(!0), I(he, null, _e(s.suggestions, (v, A) => (b(), I("div", {
929
+ key: A,
930
+ class: ne(["suggestion-list__item", { highlighted: S(A) }]),
931
+ onMouseenter: (P) => a(A),
932
932
  onMouseleave: d,
933
- onMousedown: ct((W) => x(y.content), ["prevent"])
933
+ onMousedown: ut((P) => x(v.content), ["prevent"])
934
934
  }, [
935
- Z(C(wt), { class: "suggestion-list__icon" }),
936
- U("span", Nt, [
937
- (b(!0), I(ye, null, we(C(Wt)(y, s.inputValue), (W, F) => (b(), I("span", {
938
- key: F,
939
- class: oe({
940
- "suggestion-list__text--match": W.isMatch,
941
- "suggestion-list__text--normal": !W.isMatch
935
+ X(C(_t), { class: "suggestion-list__icon" }),
936
+ U("span", Wt, [
937
+ (b(!0), I(he, null, _e(C(Pt)(v, s.inputValue), (P, M) => (b(), I("span", {
938
+ key: M,
939
+ class: ne({
940
+ "suggestion-list__text--match": P.isMatch,
941
+ "suggestion-list__text--normal": !P.isMatch
942
942
  })
943
- }, ue(W.text), 3))), 128))
943
+ }, ie(P.text), 3))), 128))
944
944
  ])
945
945
  ], 42, Vt))), 128))
946
- ], 4)) : N("", !0)
946
+ ], 4)) : W("", !0)
947
947
  ]),
948
948
  _: 1
949
949
  }));
950
950
  }
951
- }), Ut = /* @__PURE__ */ Ce(Ht, [["__scopeId", "data-v-e0ec9fe3"]]), qt = ["data-theme"], zt = { class: "tiny-sender__container" }, Gt = {
951
+ }), Ht = /* @__PURE__ */ Se(Nt, [["__scopeId", "data-v-e0ec9fe3"]]), Ut = ["data-theme"], qt = { class: "tiny-sender__container" }, zt = {
952
952
  key: 0,
953
953
  class: "tiny-sender__header-slot"
954
- }, jt = {
954
+ }, Gt = {
955
955
  key: 0,
956
956
  class: "tiny-sender__prefix-slot"
957
- }, Jt = { class: "tiny-sender__content-area" }, Xt = {
957
+ }, jt = { class: "tiny-sender__content-area" }, Jt = {
958
958
  key: 0,
959
959
  class: "tiny-sender__decorative-content"
960
- }, Zt = {
960
+ }, Xt = {
961
961
  key: 2,
962
962
  class: "tiny-sender__input-field-wrapper"
963
- }, Qt = {
963
+ }, Zt = {
964
964
  key: 0,
965
965
  class: "tiny-sender__completion-placeholder"
966
- }, Yt = { class: "user-input-mirror" }, en = {
966
+ }, Qt = { class: "user-input-mirror" }, Yt = {
967
967
  key: 0,
968
968
  class: "tiny-sender__tab-hint"
969
- }, tn = {
969
+ }, en = {
970
970
  key: 1,
971
971
  class: "tiny-sender__actions-slot"
972
+ }, tn = {
973
+ key: 0,
974
+ class: "tiny-sender__footer-slot tiny-sender__bottom-row"
972
975
  }, nn = { class: "tiny-sender__footer-left" }, on = { class: "tiny-sender__footer-right" }, sn = { class: "real-word-length" }, an = {
973
976
  key: 1,
974
977
  class: "tiny-sender__toolbar"
975
978
  }, ln = { class: "tiny-sender__buttons-container" }, rn = {
976
979
  key: 1,
977
980
  class: "tiny-sender__footer-slot"
978
- }, un = /* @__PURE__ */ Se({
981
+ }, un = /* @__PURE__ */ we({
979
982
  __name: "index",
980
983
  props: {
981
984
  autofocus: { type: Boolean, default: !1 },
@@ -1002,358 +1005,348 @@ const Lt = ["data-id", "data-type"], Bt = ["data-id", "data-type"], Dt = /* @__P
1002
1005
  },
1003
1006
  emits: ["update:modelValue", "update:templateData", "submit", "clear", "speech-start", "speech-end", "speech-interim", "speech-error", "suggestion-select", "focus", "blur", "escape-press", "cancel", "reset-template", "files-selected"],
1004
1007
  setup(l, { expose: c, emit: s }) {
1005
- var D;
1006
- const i = l, v = s, S = M(null), a = M(null), d = M(null), x = M(null), h = M(null), w = B(() => i.templateData && i.templateData.length > 0), { inputValue: y, isComposing: K, clearInput: W } = Ct(i, v), F = B(() => !!y.value.trim()), P = B(() => {
1007
- var o, m;
1008
- return !(i.disabled || i.loading || !F.value || be.value || (m = (o = i.buttonGroup) == null ? void 0 : o.submit) != null && m.disabled);
1008
+ var $;
1009
+ const u = l, y = s, S = K(null), a = K(null), d = K(null), x = K(null), h = K(null), _ = D(() => u.templateData && u.templateData.length > 0), { inputValue: v, isComposing: A, clearInput: P } = St(u, y), M = D(() => !!v.value.trim()), F = D(() => {
1010
+ var t, m;
1011
+ return !(u.disabled || u.loading || !M.value || me.value || (m = (t = u.buttonGroup) == null ? void 0 : t.submit) != null && m.disabled);
1009
1012
  }), {
1010
1013
  isPopupVisible: T,
1011
1014
  activeSuggestion: g,
1012
- activeKeyboardIndex: O,
1015
+ activeKeyboardIndex: E,
1013
1016
  activeMouseIndex: p,
1014
- autoCompleteText: Q,
1015
- showTabIndicator: E,
1017
+ autoCompleteText: Z,
1018
+ showTabIndicator: B,
1016
1019
  syncAutoComplete: q,
1017
- closePopup: ee,
1018
- applySuggestion: H,
1020
+ closePopup: Y,
1021
+ applySuggestion: N,
1019
1022
  confirmSelection: k,
1020
- navigateWithKeyboard: j,
1021
- handleMouseEnter: J,
1022
- handleMouseLeave: le
1023
- } = It(
1024
- B(() => i.suggestions),
1025
- y,
1026
- K,
1027
- w,
1028
- (o) => v("update:modelValue", o),
1029
- (o) => v("suggestion-select", o)
1030
- ), V = M(i.mode), z = M(!1), ve = () => {
1031
- V.value === "single" && (V.value = "multiple", te(() => {
1023
+ navigateWithKeyboard: G,
1024
+ handleMouseEnter: j,
1025
+ handleMouseLeave: ae
1026
+ } = kt(
1027
+ D(() => u.suggestions),
1028
+ v,
1029
+ A,
1030
+ _,
1031
+ (t) => y("update:modelValue", t),
1032
+ (t) => y("suggestion-select", t)
1033
+ ), V = K(u.mode), z = K(!1), ve = () => {
1034
+ V.value === "single" && (V.value = "multiple", ee(() => {
1032
1035
  setTimeout(() => {
1033
- const o = document.querySelector(".tiny-textarea__inner");
1034
- if (o) {
1035
- o.style.whiteSpace = "pre-wrap";
1036
- const m = y.value.length;
1037
- o.focus(), o.setSelectionRange(m, m);
1036
+ const t = document.querySelector(".tiny-textarea__inner");
1037
+ if (t) {
1038
+ t.style.whiteSpace = "pre-wrap";
1039
+ const m = v.value.length;
1040
+ t.focus(), t.setSelectionRange(m, m);
1038
1041
  }
1039
1042
  }, 50);
1040
1043
  }));
1041
- }, se = (o, m) => {
1042
- const A = document.createElement("span");
1043
- A.style.visibility = "hidden", A.style.position = "absolute", A.style.whiteSpace = "nowrap", A.style.font = m, A.textContent = o, document.body.appendChild(A);
1044
- const re = A.offsetWidth;
1045
- return document.body.removeChild(A), re;
1046
- }, xe = () => {
1047
- var Ee, Ue, qe;
1048
- if (i.mode !== "single" || !S.value || z.value || !a.value || !x.value) return;
1049
- const o = a.value.querySelector(".tiny-sender__content-area");
1050
- if (!o) return;
1051
- const m = ((Ue = (Ee = S.value) == null ? void 0 : Ee.querySelector) == null ? void 0 : Ue.call(Ee, ".tiny-input__inner")) || o.querySelector(".tiny-input__inner"), A = h.value || a.value.querySelector(".tiny-sender__buttons-container");
1044
+ }, oe = (t, m) => {
1045
+ const R = document.createElement("span");
1046
+ R.style.visibility = "hidden", R.style.position = "absolute", R.style.whiteSpace = "nowrap", R.style.font = m, R.textContent = t, document.body.appendChild(R);
1047
+ const le = R.offsetWidth;
1048
+ return document.body.removeChild(R), le;
1049
+ }, Ce = () => {
1050
+ var Oe, Ne, He;
1051
+ if (u.mode !== "single" || !S.value || z.value || !a.value || !x.value) return;
1052
+ const t = a.value.querySelector(".tiny-sender__content-area");
1053
+ if (!t) return;
1054
+ const m = ((Ne = (Oe = S.value) == null ? void 0 : Oe.querySelector) == null ? void 0 : Ne.call(Oe, ".tiny-input__inner")) || t.querySelector(".tiny-input__inner"), R = h.value || a.value.querySelector(".tiny-sender__buttons-container");
1052
1055
  if (!m) {
1053
1056
  console.warn("Cannot find input element for overflow check");
1054
1057
  return;
1055
1058
  }
1056
- const re = m.getBoundingClientRect(), Me = A == null ? void 0 : A.getBoundingClientRect();
1057
- if (re.width === 0) {
1058
- setTimeout(() => xe(), 50);
1059
+ const le = m.getBoundingClientRect(), Ke = R == null ? void 0 : R.getBoundingClientRect();
1060
+ if (le.width === 0) {
1061
+ setTimeout(() => Ce(), 50);
1059
1062
  return;
1060
1063
  }
1061
- const Ze = window.getComputedStyle(m).font, Qe = se(y.value, Ze), Ne = (qe = a.value) == null ? void 0 : qe.classList.contains("tr-sender-compact"), Ye = Ne ? 12 : 20, et = re.width, tt = (Me == null ? void 0 : Me.width) || 0, He = et - tt - Ye, nt = Ne ? 50 : 80;
1062
- Qe > He && He > nt && V.value === "single" && (z.value = !0, V.value = "multiple", te(() => {
1064
+ const Xe = window.getComputedStyle(m).font, Ze = oe(v.value, Xe), Ve = (He = a.value) == null ? void 0 : He.classList.contains("tr-sender-compact"), Qe = Ve ? 12 : 20, Ye = le.width, et = (Ke == null ? void 0 : Ke.width) || 0, We = Ye - et - Qe, tt = Ve ? 50 : 80;
1065
+ Ze > We && We > tt && V.value === "single" && (z.value = !0, V.value = "multiple", ee(() => {
1063
1066
  S.value ? setTimeout(() => {
1064
- var ze;
1065
- const $e = (ze = a.value) == null ? void 0 : ze.querySelector(".tiny-textarea__inner");
1066
- if ($e) {
1067
- $e.style.whiteSpace = "pre-wrap";
1068
- const Ge = y.value.length;
1069
- $e.focus(), $e.setSelectionRange(Ge, Ge);
1067
+ var Ue;
1068
+ const Ee = (Ue = a.value) == null ? void 0 : Ue.querySelector(".tiny-textarea__inner");
1069
+ if (Ee) {
1070
+ Ee.style.whiteSpace = "pre-wrap";
1071
+ const qe = v.value.length;
1072
+ Ee.focus(), Ee.setSelectionRange(qe, qe);
1070
1073
  }
1071
1074
  z.value = !1;
1072
1075
  }, 300) : z.value = !1;
1073
1076
  }));
1074
- }, X = () => {
1075
- if (w.value && d.value)
1076
- _();
1077
+ }, J = () => {
1078
+ if (_.value && d.value)
1079
+ f();
1077
1080
  else if (S.value)
1078
1081
  S.value.focus();
1079
1082
  else {
1080
- const o = document.querySelector(".tiny-input__inner");
1081
- o == null || o.focus();
1083
+ const t = document.querySelector(".tiny-input__inner");
1084
+ t == null || t.focus();
1082
1085
  }
1083
- }, ke = () => {
1086
+ }, xe = () => {
1084
1087
  if (S.value)
1085
1088
  S.value.blur();
1086
1089
  else {
1087
- const o = document.querySelector(".tiny-input__inner");
1088
- o == null || o.blur();
1090
+ const t = document.querySelector(".tiny-input__inner");
1091
+ t == null || t.blur();
1089
1092
  }
1090
- }, ce = () => {
1091
- var o;
1092
- v("update:templateData", []), (o = d.value) == null || o.clearHistory(), te(() => {
1093
- y.value === "" && (V.value = i.mode || "single"), setTimeout(() => {
1094
- X();
1093
+ }, ue = () => {
1094
+ var t;
1095
+ y("update:templateData", []), (t = d.value) == null || t.clearHistory(), ee(() => {
1096
+ v.value === "" && (V.value = u.mode || "single"), setTimeout(() => {
1097
+ J();
1095
1098
  }, 50);
1096
1099
  });
1097
- }, ge = () => {
1098
- var o;
1099
- W(), w.value ? ce() : (o = a.value) == null || o.focus(), te(() => {
1100
- y.value === "" && (V.value = i.mode || "single");
1100
+ }, ye = () => {
1101
+ var t;
1102
+ P(), _.value ? ue() : (t = a.value) == null || t.focus(), ee(() => {
1103
+ v.value === "" && (V.value = u.mode || "single");
1101
1104
  });
1102
- }, Be = (o) => {
1103
- const m = (re) => re.type === "text" && re.content === "​";
1104
- if (o.length === 0 || o.every(m)) {
1105
- ce();
1105
+ }, Be = (t) => {
1106
+ const m = (le) => le.type === "text" && le.content === "​";
1107
+ if (t.length === 0 || t.every(m)) {
1108
+ ue();
1106
1109
  return;
1107
1110
  }
1108
- v("update:templateData", o);
1111
+ y("update:templateData", t);
1109
1112
  };
1110
- ne(
1111
- () => i.templateData,
1113
+ te(
1114
+ () => u.templateData,
1112
1115
  () => {
1113
- y.value = i.templateData.map((o) => o.content).join("");
1116
+ v.value = u.templateData.map((t) => t.content).join("");
1114
1117
  },
1115
1118
  { deep: !0 }
1116
1119
  );
1117
- const De = B(() => {
1118
- const o = typeof i.speech == "object" ? i.speech : {};
1120
+ const Le = D(() => {
1121
+ const t = typeof u.speech == "object" ? u.speech : {};
1119
1122
  return {
1120
- ...o,
1121
- onStart: () => v("speech-start"),
1122
- onEnd: (m) => v("speech-end", m),
1123
- onInterim: (m) => v("speech-interim", m),
1123
+ ...t,
1124
+ onStart: () => y("speech-start"),
1125
+ onEnd: (m) => y("speech-end", m),
1126
+ onInterim: (m) => y("speech-interim", m),
1124
1127
  onFinal: (m) => {
1125
- if (o.autoReplace)
1126
- y.value = m;
1128
+ if (t.autoReplace)
1129
+ v.value = m;
1127
1130
  else {
1128
- const A = y.value;
1129
- A && m && !A.endsWith(" ") && !m.startsWith(" ") && A.length > 0 ? y.value = A + " " + m : y.value = A + m;
1131
+ const R = v.value;
1132
+ R && m && !R.endsWith(" ") && !m.startsWith(" ") && R.length > 0 ? v.value = R + " " + m : v.value = R + m;
1130
1133
  }
1131
- v("speech-end", m);
1134
+ y("speech-end", m);
1132
1135
  },
1133
1136
  onError: (m) => {
1134
- v("speech-error", m);
1137
+ y("speech-error", m);
1135
1138
  }
1136
1139
  };
1137
- }), { speechState: ae, start: de, stop: Ie } = kt(De.value), me = () => {
1138
- ae.isRecording ? Ie() : de();
1139
- }, be = B(() => i.maxLength !== 1 / 0 && y.value.length > i.maxLength), { handleKeyPress: fe, triggerSubmit: pe } = xt(
1140
- i,
1141
- v,
1140
+ }), { speechState: se, start: ce, stop: ke } = xt(Le.value), ge = () => {
1141
+ se.isRecording ? ke() : ce();
1142
+ }, me = D(() => u.maxLength !== 1 / 0 && v.value.length > u.maxLength), { handleKeyPress: de, triggerSubmit: fe } = Ct(
1143
+ u,
1142
1144
  y,
1143
- K,
1144
- ae,
1145
+ v,
1146
+ A,
1147
+ se,
1145
1148
  T,
1146
1149
  g,
1147
1150
  k,
1148
- ee,
1149
- j,
1150
- me,
1151
- P,
1151
+ Y,
1152
+ G,
1153
+ ge,
1154
+ F,
1152
1155
  V,
1153
1156
  ve,
1154
- w,
1155
- ce
1156
- ), Te = (o) => {
1157
- v("focus", o), y.value && !w.value && (T.value = !0);
1158
- }, Re = (o) => {
1159
- v("blur", o), ee();
1160
- }, Ae = B(() => V.value === "multiple" ? "textarea" : "text"), Ke = B(
1161
- () => ({
1162
- display: "flex",
1163
- justifyContent: i.showWordLimit && i.maxLength !== 1 / 0 ? "space-between" : "flex-end",
1164
- alignItems: "center"
1165
- })
1166
- ), Oe = dt(), e = B(() => !!Oe.decorativeContent), t = B(() => i.disabled || e.value), n = B(() => i.loading), u = B(() => ({
1167
- "is-disabled": t.value,
1157
+ _,
1158
+ ue
1159
+ ), Ie = (t) => {
1160
+ y("focus", t), v.value && !_.value && (T.value = !0);
1161
+ }, Te = (t) => {
1162
+ y("blur", t), Y();
1163
+ }, De = D(() => V.value === "multiple" ? "textarea" : "text"), Ae = ct(), Re = D(() => !!Ae.decorativeContent), e = D(() => u.disabled || Re.value), n = D(() => u.loading), o = D(() => ({
1164
+ "is-disabled": e.value,
1168
1165
  "is-loading": n.value,
1169
1166
  "is-auto-switching": z.value
1170
- })), r = B(() => ({
1171
- width: St(i.suggestionPopupWidth),
1167
+ })), i = D(() => ({
1168
+ width: wt(u.suggestionPopupWidth),
1172
1169
  maxWidth: "100%"
1173
1170
  // 确保不超出父容器宽度
1174
- })), f = () => {
1175
- K.value = !1;
1171
+ })), r = () => {
1172
+ A.value = !1;
1176
1173
  };
1177
- ne(y, () => {
1178
- te(xe), y.value === "" && i.mode === "single" && (V.value = "single"), q();
1179
- }), ne(
1180
- () => w.value,
1181
- (o) => {
1182
- o && (V.value = "multiple");
1174
+ te(v, () => {
1175
+ ee(Ce), v.value === "" && u.mode === "single" && (V.value = "single"), q();
1176
+ }), te(
1177
+ () => _.value,
1178
+ (t) => {
1179
+ t && (V.value = "multiple");
1183
1180
  }
1184
1181
  );
1185
- const _ = () => {
1182
+ const f = () => {
1186
1183
  d.value && d.value.activateFirstField();
1187
- }, { accept: $ = "*", multiple: G = !0 } = ((D = i.buttonGroup) == null ? void 0 : D.file) || {}, { open: R, files: L } = ht({ accept: $, multiple: G });
1188
- return ne(L, (o) => {
1189
- o && o.length > 0 && v("files-selected", Array.from(o));
1184
+ }, { accept: w = "*", multiple: L = !0 } = (($ = u.buttonGroup) == null ? void 0 : $.file) || {}, { open: H, files: O } = pt({ accept: w, multiple: L });
1185
+ return te(O, (t) => {
1186
+ t && t.length > 0 && y("files-selected", Array.from(t));
1190
1187
  }), c({
1191
- focus: X,
1192
- blur: ke,
1193
- clear: ge,
1194
- submit: pe,
1195
- startSpeech: de,
1196
- stopSpeech: Ie,
1197
- activateTemplateFirstField: _
1198
- }), (o, m) => (b(), I("div", {
1188
+ focus: J,
1189
+ blur: xe,
1190
+ clear: ye,
1191
+ submit: fe,
1192
+ startSpeech: ce,
1193
+ stopSpeech: ke,
1194
+ activateTemplateFirstField: f
1195
+ }), (t, m) => (b(), I("div", {
1199
1196
  ref_key: "senderRef",
1200
1197
  ref: a,
1201
- class: oe(["tiny-sender", [u.value, `theme-${o.theme}`, `mode-${V.value}`]]),
1202
- "data-theme": o.theme
1198
+ class: ne(["tiny-sender", [o.value, `theme-${t.theme}`, `mode-${V.value}`]]),
1199
+ "data-theme": t.theme
1203
1200
  }, [
1204
- U("div", zt, [
1201
+ U("div", qt, [
1205
1202
  U("div", {
1206
1203
  class: "tiny-sender__input-wrapper",
1207
1204
  ref_key: "inputWrapperRef",
1208
1205
  ref: x
1209
1206
  }, [
1210
- Z(We, { name: "tiny-sender-slide-down" }, {
1211
- default: he(() => [
1212
- o.$slots.header ? (b(), I("div", Gt, [
1213
- ie(o.$slots, "header", {}, void 0, !0)
1214
- ])) : N("", !0)
1207
+ X(Pe, { name: "tiny-sender-slide-down" }, {
1208
+ default: pe(() => [
1209
+ t.$slots.header ? (b(), I("div", zt, [
1210
+ re(t.$slots, "header", {}, void 0, !0)
1211
+ ])) : W("", !0)
1215
1212
  ]),
1216
1213
  _: 3
1217
1214
  }),
1218
1215
  U("div", {
1219
- class: oe(["tiny-sender__input-row", { "has-prefix": o.$slots.prefix, "has-header": o.$slots.header }])
1216
+ class: ne(["tiny-sender__input-row", { "has-prefix": t.$slots.prefix, "has-header": t.$slots.header }])
1220
1217
  }, [
1221
- o.$slots.prefix ? (b(), I("div", jt, [
1222
- ie(o.$slots, "prefix", {}, void 0, !0)
1223
- ])) : N("", !0),
1224
- U("div", Jt, [
1225
- o.$slots.decorativeContent ? (b(), I("div", Xt, [
1226
- ie(o.$slots, "decorativeContent", {}, void 0, !0)
1227
- ])) : N("", !0),
1228
- w.value ? (b(), Y(Ft, {
1218
+ t.$slots.prefix ? (b(), I("div", Gt, [
1219
+ re(t.$slots, "prefix", {}, void 0, !0)
1220
+ ])) : W("", !0),
1221
+ U("div", jt, [
1222
+ t.$slots.decorativeContent ? (b(), I("div", Jt, [
1223
+ re(t.$slots, "decorativeContent", {}, void 0, !0)
1224
+ ])) : W("", !0),
1225
+ _.value ? (b(), Q(Mt, {
1229
1226
  key: 1,
1230
1227
  ref_key: "templateEditorRef",
1231
1228
  ref: d,
1232
- "model-value": i.templateData,
1229
+ "model-value": u.templateData,
1233
1230
  "onUpdate:modelValue": Be,
1234
- onSubmit: C(pe)
1235
- }, null, 8, ["model-value", "onSubmit"])) : (b(), I("div", Zt, [
1236
- Z(C(pt), {
1231
+ onSubmit: C(fe)
1232
+ }, null, 8, ["model-value", "onSubmit"])) : (b(), I("div", Xt, [
1233
+ X(C(ft), {
1237
1234
  ref_key: "inputRef",
1238
1235
  ref: S,
1239
- autosize: o.autoSize,
1240
- type: Ae.value,
1236
+ autosize: t.autoSize,
1237
+ type: De.value,
1241
1238
  resize: "none",
1242
- modelValue: C(y),
1243
- "onUpdate:modelValue": m[0] || (m[0] = (A) => ft(y) ? y.value = A : null),
1244
- disabled: t.value,
1245
- placeholder: o.placeholder,
1246
- autofocus: o.autofocus,
1247
- onKeydown: C(fe),
1248
- onCompositionstart: m[1] || (m[1] = (A) => K.value = !0),
1249
- onCompositionend: f,
1250
- onFocus: Te,
1251
- onBlur: Re
1239
+ modelValue: C(v),
1240
+ "onUpdate:modelValue": m[0] || (m[0] = (R) => dt(v) ? v.value = R : null),
1241
+ disabled: e.value,
1242
+ placeholder: t.placeholder,
1243
+ autofocus: t.autofocus,
1244
+ onKeydown: C(de),
1245
+ onCompositionstart: m[1] || (m[1] = (R) => A.value = !0),
1246
+ onCompositionend: r,
1247
+ onFocus: Ie,
1248
+ onBlur: Te
1252
1249
  }, null, 8, ["autosize", "type", "modelValue", "disabled", "placeholder", "autofocus", "onKeydown"]),
1253
- C(Q) && !C(K) ? (b(), I("div", Qt, [
1254
- U("span", Yt, ue(C(y)), 1),
1255
- je(ue(C(Q)) + " ", 1),
1256
- C(E) ? (b(), I("div", en, "TAB")) : N("", !0)
1257
- ])) : N("", !0)
1250
+ C(Z) && !C(A) ? (b(), I("div", Zt, [
1251
+ U("span", Qt, ie(C(v)), 1),
1252
+ ze(ie(C(Z)) + " ", 1),
1253
+ C(B) ? (b(), I("div", Yt, "TAB")) : W("", !0)
1254
+ ])) : W("", !0)
1258
1255
  ]))
1259
1256
  ]),
1260
- V.value === "single" ? (b(), I("div", tn, [
1257
+ V.value === "single" ? (b(), I("div", en, [
1261
1258
  U("div", {
1262
1259
  class: "tiny-sender__buttons-container",
1263
1260
  ref_key: "buttonsContainerRef",
1264
1261
  ref: h
1265
1262
  }, [
1266
- ie(o.$slots, "actions", {}, void 0, !0),
1267
- Z(Je, {
1268
- "allow-speech": o.allowSpeech,
1269
- "allow-files": o.allowFiles,
1270
- loading: o.loading,
1271
- disabled: t.value,
1272
- "show-clear": o.clearable,
1273
- "has-content": F.value,
1274
- "speech-status": C(ae),
1275
- "button-group": o.buttonGroup,
1276
- "submit-type": o.submitType,
1277
- "is-over-limit": be.value,
1278
- "stop-text": o.stopText,
1279
- onClear: ge,
1280
- onToggleSpeech: me,
1281
- onSubmit: C(pe),
1282
- onCancel: m[2] || (m[2] = (A) => o.$emit("cancel")),
1283
- onTriggerSelect: C(R)
1263
+ re(t.$slots, "actions", {}, void 0, !0),
1264
+ X(Ge, {
1265
+ "allow-speech": t.allowSpeech,
1266
+ "allow-files": t.allowFiles,
1267
+ loading: t.loading,
1268
+ disabled: e.value,
1269
+ "show-clear": t.clearable,
1270
+ "has-content": M.value,
1271
+ "speech-status": C(se),
1272
+ "button-group": t.buttonGroup,
1273
+ "submit-type": t.submitType,
1274
+ "is-over-limit": me.value,
1275
+ "stop-text": t.stopText,
1276
+ onClear: ye,
1277
+ onToggleSpeech: ge,
1278
+ onSubmit: C(fe),
1279
+ onCancel: m[2] || (m[2] = (R) => t.$emit("cancel")),
1280
+ onTriggerSelect: C(H)
1284
1281
  }, null, 8, ["allow-speech", "allow-files", "loading", "disabled", "show-clear", "has-content", "speech-status", "button-group", "submit-type", "is-over-limit", "stop-text", "onSubmit", "onTriggerSelect"])
1285
1282
  ], 512)
1286
- ])) : N("", !0)
1283
+ ])) : W("", !0)
1287
1284
  ], 2),
1288
- Z(We, { name: "tiny-sender-slide-up" }, {
1289
- default: he(() => [
1290
- V.value === "multiple" ? (b(), I("div", {
1291
- key: 0,
1292
- style: Ve(Ke.value),
1293
- class: "tiny-sender__footer-slot tiny-sender__bottom-row"
1294
- }, [
1285
+ X(Pe, { name: "tiny-sender-slide-up" }, {
1286
+ default: pe(() => [
1287
+ V.value === "multiple" ? (b(), I("div", tn, [
1295
1288
  U("div", nn, [
1296
- ie(o.$slots, "footer-left", {}, void 0, !0)
1289
+ re(t.$slots, "footer-left", {}, void 0, !0)
1297
1290
  ]),
1298
1291
  U("div", on, [
1299
- ie(o.$slots, "footer-right", {}, void 0, !0),
1300
- o.showWordLimit && o.maxLength !== 1 / 0 ? (b(), I("div", {
1292
+ re(t.$slots, "footer-right", {}, void 0, !0),
1293
+ t.showWordLimit && t.maxLength !== 1 / 0 ? (b(), I("div", {
1301
1294
  key: 0,
1302
- class: oe(["tiny-sender__word-limit", { "is-over-limit": be.value }])
1295
+ class: ne(["tiny-sender__word-limit", { "is-over-limit": me.value }])
1303
1296
  }, [
1304
- U("span", sn, ue(C(y).length), 1),
1305
- je("/" + ue(o.maxLength), 1)
1306
- ], 2)) : N("", !0),
1297
+ U("span", sn, ie(C(v).length), 1),
1298
+ ze("/" + ie(t.maxLength), 1)
1299
+ ], 2)) : W("", !0),
1307
1300
  V.value === "multiple" ? (b(), I("div", an, [
1308
1301
  U("div", ln, [
1309
- Z(Je, {
1310
- "allow-speech": o.allowSpeech,
1311
- "allow-files": o.allowFiles,
1312
- loading: o.loading,
1313
- disabled: t.value,
1314
- "show-clear": o.clearable,
1315
- "has-content": F.value,
1316
- "speech-status": C(ae),
1317
- "button-group": o.buttonGroup,
1318
- "submit-type": o.submitType,
1319
- "is-over-limit": be.value,
1320
- "stop-text": o.stopText,
1321
- onClear: ge,
1322
- onToggleSpeech: me,
1323
- onSubmit: C(pe),
1324
- onCancel: m[3] || (m[3] = (A) => o.$emit("cancel")),
1325
- onTriggerSelect: C(R)
1302
+ X(Ge, {
1303
+ "allow-speech": t.allowSpeech,
1304
+ "allow-files": t.allowFiles,
1305
+ loading: t.loading,
1306
+ disabled: e.value,
1307
+ "show-clear": t.clearable,
1308
+ "has-content": M.value,
1309
+ "speech-status": C(se),
1310
+ "button-group": t.buttonGroup,
1311
+ "submit-type": t.submitType,
1312
+ "is-over-limit": me.value,
1313
+ "stop-text": t.stopText,
1314
+ onClear: ye,
1315
+ onToggleSpeech: ge,
1316
+ onSubmit: C(fe),
1317
+ onCancel: m[3] || (m[3] = (R) => t.$emit("cancel")),
1318
+ onTriggerSelect: C(H)
1326
1319
  }, null, 8, ["allow-speech", "allow-files", "loading", "disabled", "show-clear", "has-content", "speech-status", "button-group", "submit-type", "is-over-limit", "stop-text", "onSubmit", "onTriggerSelect"])
1327
1320
  ])
1328
- ])) : N("", !0)
1321
+ ])) : W("", !0)
1329
1322
  ])
1330
- ], 4)) : o.$slots.footer ? (b(), I("div", rn, [
1331
- ie(o.$slots, "footer", {}, void 0, !0)
1332
- ])) : N("", !0)
1323
+ ])) : t.$slots.footer ? (b(), I("div", rn, [
1324
+ re(t.$slots, "footer", {}, void 0, !0)
1325
+ ])) : W("", !0)
1333
1326
  ]),
1334
1327
  _: 3
1335
1328
  })
1336
1329
  ], 512)
1337
1330
  ]),
1338
- Z(Ut, {
1331
+ X(Ht, {
1339
1332
  show: C(T),
1340
- suggestions: o.suggestions,
1341
- "popup-style": r.value,
1342
- "active-keyboard-index": C(O),
1333
+ suggestions: t.suggestions,
1334
+ "popup-style": i.value,
1335
+ "active-keyboard-index": C(E),
1343
1336
  "active-mouse-index": C(p),
1344
- "input-value": C(y),
1345
- onSelect: C(H),
1346
- onMouseEnter: C(J),
1347
- onMouseLeave: C(le)
1337
+ "input-value": C(v),
1338
+ onSelect: C(N),
1339
+ onMouseEnter: C(j),
1340
+ onMouseLeave: C(ae)
1348
1341
  }, null, 8, ["show", "suggestions", "popup-style", "active-keyboard-index", "active-mouse-index", "input-value", "onSelect", "onMouseEnter", "onMouseLeave"])
1349
- ], 10, qt));
1342
+ ], 10, Ut));
1350
1343
  }
1351
- }), Le = /* @__PURE__ */ Ce(un, [["__scopeId", "data-v-520fdb31"]]);
1352
- Le.name = "TrSender";
1344
+ }), $e = /* @__PURE__ */ Se(un, [["__scopeId", "data-v-5c7b4856"]]);
1345
+ $e.name = "TrSender";
1353
1346
  const cn = function(l) {
1354
- l.component(Le.name, Le);
1347
+ l.component($e.name, $e);
1355
1348
  };
1356
- Le.install = cn;
1349
+ $e.install = cn;
1357
1350
  export {
1358
- Le as default
1351
+ $e as default
1359
1352
  };