@mobilon-dev/chotto 0.3.89 → 0.3.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chotto.css +1 -1
- package/dist/components/2_chatinput_elements/ButtonEmojiPicker/ButtonEmojiPicker.vue.js +2 -2
- package/dist/components/2_chatinput_elements/ButtonEmojiPicker/ButtonEmojiPicker.vue2.js +41 -33
- package/dist/components/2_chatinput_elements/FileUploader/FileUploader.vue.js +3 -3
- package/dist/components/2_chatinput_elements/FileUploader/FileUploader.vue2.js +87 -103
- package/dist/components/2_chatlist_elements/ChatItem/ChatItem.vue.js +1 -1
- package/dist/components/2_chatlist_elements/ChatItem/ChatItem.vue2.js +171 -152
- package/dist/components/2_elements/AudioRecorder/AudioRecorder.vue.js +2 -2
- package/dist/components/2_elements/AudioRecorder/AudioRecorder.vue2.js +52 -79
- package/dist/components/2_elements/VideoRecorder/VideoRecorder.vue.js +2 -2
- package/dist/components/2_elements/VideoRecorder/VideoRecorder.vue2.js +35 -64
- package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue.js +2 -2
- package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue2.js +4 -0
- package/dist/components/2_feed_elements/CallMessage/CallMessage.vue.js +3 -3
- package/dist/components/2_feed_elements/CallMessage/CallMessage.vue2.js +4 -0
- package/dist/components/2_feed_elements/FileMessage/FileMessage.vue.js +3 -3
- package/dist/components/2_feed_elements/FileMessage/FileMessage.vue2.js +33 -29
- package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue.js +2 -2
- package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue2.js +62 -58
- package/dist/components/2_feed_elements/MissedCallMessage/MissedCallMessage.vue.js +1 -1
- package/dist/components/2_feed_elements/MissedCallMessage/MissedCallMessage.vue2.js +27 -23
- package/dist/components/2_feed_elements/TextMessage/TextMessage.vue.js +2 -2
- package/dist/components/2_feed_elements/TextMessage/TextMessage.vue2.js +49 -41
- package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue.js +1 -1
- package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue2.js +105 -101
- package/dist/components/3_compounds/ChatInput/ChatInput.vue.js +2 -2
- package/dist/components/3_compounds/ChatInput/ChatInput.vue2.js +223 -149
- package/dist/components/3_compounds/ChatList/composables/useChatListFilter.js +18 -13
- package/dist/functions/renderAppleEmojis.js +127 -70
- package/dist/hooks/uploadFile/generatePreview.js +23 -11
- package/dist/hooks/useMessageDraft.js +61 -32
- package/dist/index.js +113 -112
- package/dist/themes/dark.css +1 -1
- package/dist/themes/default.css +1 -1
- package/dist/themes/glass.css +1 -1
- package/dist/themes/green.css +1 -1
- package/dist/themes/mobilon1.css +1 -1
- package/dist/types/apps/data/messages.d.ts +52 -0
- package/dist/types/components/2_blocks/CommunicationPanel/CommunicationPanel.vue.d.ts +2 -2
- package/dist/types/components/2_blocks/CommunicationPanel/stories/CommunicationPanel.stories.d.ts +2 -2
- package/dist/types/components/2_chatinput_elements/ButtonEmojiPicker/ButtonEmojiPicker.vue.d.ts +15 -0
- package/dist/types/components/2_feed_elements/AudioMessage/styles/types.d.ts +34 -0
- package/dist/types/components/2_feed_elements/CallMessage/styles/types.d.ts +26 -0
- package/dist/types/components/2_feed_elements/FileMessage/styles/types.d.ts +30 -0
- package/dist/types/components/2_feed_elements/ImageMessage/styles/types.d.ts +34 -0
- package/dist/types/components/2_feed_elements/StickerMessage/styles/types.d.ts +4 -0
- package/dist/types/components/2_feed_elements/TextMessage/styles/types.d.ts +38 -2
- package/dist/types/components/2_feed_elements/TypingMessage/styles/types.d.ts +2 -0
- package/dist/types/components/2_feed_elements/VideoMessage/styles/types.d.ts +34 -0
- package/dist/types/components/3_compounds/ChatInput/ChatInput.vue.d.ts +3 -3
- package/dist/types/components/3_compounds/ChatInput/styles/types.d.ts +2 -0
- package/dist/types/components/3_compounds/Feed/composables/useFeedReply.d.ts +1 -27
- package/dist/types/functions/renderAppleEmojis.d.ts +17 -2
- package/dist/types/hooks/uploadFile/generatePreview.d.ts +2 -0
- package/dist/types/hooks/uploadFile/uploadFile.d.ts +9 -17
- package/dist/types/hooks/useMessageDraft.d.ts +27 -29
- package/package.json +1 -1
|
@@ -1,96 +1,153 @@
|
|
|
1
|
-
const
|
|
2
|
-
function
|
|
3
|
-
const n =
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
const g = "https://cdn.jsdelivr.net/npm/emoji-datasource-apple@6.0.1/img/apple/64", l = new RegExp("(?:\\p{Regional_Indicator}{2})|(?:[#*0-9]\\uFE0F?\\u20E3)|(?:\\p{Extended_Pictographic}(?:\\uFE0F|\\uFE0E)?(?:\\p{Emoji_Modifier})?(?:\\u200D(?:\\p{Extended_Pictographic}|\\p{Emoji_Modifier_Base})(?:\\uFE0F|\\uFE0E)?(?:\\p{Emoji_Modifier})?)*)", "gu"), I = "position:relative;display:inline-block;vertical-align:baseline;", T = "visibility:hidden;", _ = "position:absolute;left:0;top:0;width:100%;height:100%;object-fit:contain;pointer-events:none;display:block;margin:0;", b = Intl.Segmenter, p = typeof Intl < "u" && b ? new b(void 0, { granularity: "grapheme" }) : null;
|
|
2
|
+
function v(t, e, r = "nearest") {
|
|
3
|
+
const n = t.length;
|
|
4
|
+
if (e <= 0) return 0;
|
|
5
|
+
if (e >= n) return n;
|
|
6
|
+
if (p) {
|
|
7
|
+
let s = 0;
|
|
8
|
+
for (const { index: a } of p.segment(t)) {
|
|
9
|
+
if (a === e) return e;
|
|
10
|
+
if (a > e)
|
|
11
|
+
return r === "before" ? s : r === "after" ? a : e - s <= a - e ? s : a;
|
|
12
|
+
s = a;
|
|
13
|
+
}
|
|
14
|
+
return n;
|
|
15
|
+
}
|
|
16
|
+
const o = t.charCodeAt(e);
|
|
17
|
+
return o >= 56320 && o <= 57343 ? r === "after" ? Math.min(n, e + 1) : e - 1 : e;
|
|
18
|
+
}
|
|
19
|
+
function C(t, e) {
|
|
20
|
+
if (e >= t.length) return t.length;
|
|
21
|
+
if (p) {
|
|
22
|
+
for (const { index: n } of p.segment(t))
|
|
23
|
+
if (n > e) return n;
|
|
24
|
+
return t.length;
|
|
25
|
+
}
|
|
26
|
+
const r = t.codePointAt(e);
|
|
27
|
+
return e + (r !== void 0 && r > 65535 ? 2 : 1);
|
|
28
|
+
}
|
|
29
|
+
function j(t, e) {
|
|
30
|
+
if (e <= 0) return 0;
|
|
31
|
+
if (p) {
|
|
32
|
+
let n = 0;
|
|
33
|
+
for (const { index: o } of p.segment(t)) {
|
|
34
|
+
if (o >= e) return n;
|
|
35
|
+
n = o;
|
|
36
|
+
}
|
|
37
|
+
return n;
|
|
38
|
+
}
|
|
39
|
+
const r = t.charCodeAt(e - 1);
|
|
40
|
+
return r >= 56320 && r <= 57343 ? e - 2 : e - 1;
|
|
41
|
+
}
|
|
42
|
+
function d(t, e) {
|
|
43
|
+
const r = [];
|
|
44
|
+
for (const n of t) {
|
|
45
|
+
const o = n.codePointAt(0);
|
|
46
|
+
o !== void 0 && (e != null && e.stripVariationSelectors && (o === 65039 || o === 65038) || r.push(o.toString(16)));
|
|
7
47
|
}
|
|
8
|
-
return
|
|
48
|
+
return r.join("-");
|
|
9
49
|
}
|
|
10
|
-
function
|
|
11
|
-
return `${
|
|
50
|
+
function $(t) {
|
|
51
|
+
return `${g}/${d(t)}.png`;
|
|
12
52
|
}
|
|
13
|
-
function
|
|
14
|
-
const
|
|
15
|
-
if (
|
|
16
|
-
return `${
|
|
17
|
-
if (!/[\uFE0E\uFE0F]/.test(
|
|
18
|
-
const
|
|
19
|
-
if (
|
|
20
|
-
return `${
|
|
53
|
+
function A(t) {
|
|
54
|
+
const e = d(t), r = d(t, { stripVariationSelectors: !0 });
|
|
55
|
+
if (e !== r)
|
|
56
|
+
return `${g}/${r}.png`;
|
|
57
|
+
if (!/[\uFE0E\uFE0F]/.test(t)) {
|
|
58
|
+
const n = d(`${t}️`);
|
|
59
|
+
if (n !== e)
|
|
60
|
+
return `${g}/${n}.png`;
|
|
21
61
|
}
|
|
22
62
|
return null;
|
|
23
63
|
}
|
|
24
|
-
function
|
|
25
|
-
const
|
|
26
|
-
|
|
64
|
+
function k(t, e) {
|
|
65
|
+
const r = A(e);
|
|
66
|
+
r && t.addEventListener(
|
|
27
67
|
"error",
|
|
28
68
|
() => {
|
|
29
|
-
|
|
69
|
+
t.src !== r && (t.src = r);
|
|
30
70
|
},
|
|
31
71
|
{ once: !0 }
|
|
32
72
|
);
|
|
33
73
|
}
|
|
34
|
-
function
|
|
35
|
-
const
|
|
36
|
-
if (!
|
|
37
|
-
const
|
|
38
|
-
return `<img class="chotto-emoji" src="${
|
|
74
|
+
function M(t) {
|
|
75
|
+
const e = d(t);
|
|
76
|
+
if (!e) return E(t);
|
|
77
|
+
const r = `${g}/${e}.png`, n = A(t), o = n ? ` data-fallback="${h(n)}" onerror="if(this.dataset.fallback&&this.src!==this.dataset.fallback){this.onerror=null;this.src=this.dataset.fallback}"` : "";
|
|
78
|
+
return `<span class="chotto-emoji-slot" style="${I}"><span class="chotto-emoji-metric" style="${T}">${E(t)}</span><img class="chotto-emoji" src="${h(r)}" alt="${h(t)}" draggable="false" style="${_}"${o} /></span>`;
|
|
79
|
+
}
|
|
80
|
+
function N(t) {
|
|
81
|
+
const e = document.createElement("span");
|
|
82
|
+
e.className = "chotto-emoji-slot", e.setAttribute("style", I);
|
|
83
|
+
const r = document.createElement("span");
|
|
84
|
+
r.className = "chotto-emoji-metric", r.setAttribute("style", T), r.textContent = t;
|
|
85
|
+
const n = document.createElement("img");
|
|
86
|
+
return n.className = "chotto-emoji", n.src = $(t), n.alt = t, n.draggable = !1, n.setAttribute("style", _), k(n, t), e.append(r, n), e;
|
|
87
|
+
}
|
|
88
|
+
function h(t) {
|
|
89
|
+
return t.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
|
|
39
90
|
}
|
|
40
|
-
function E(
|
|
41
|
-
return
|
|
91
|
+
function E(t) {
|
|
92
|
+
return t.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
42
93
|
}
|
|
43
|
-
function
|
|
44
|
-
return
|
|
94
|
+
function m(t) {
|
|
95
|
+
return t ? E(t).replace(l, (e) => M(e)) : "";
|
|
45
96
|
}
|
|
46
|
-
function
|
|
47
|
-
|
|
97
|
+
function y(t, e) {
|
|
98
|
+
if (!t) return "";
|
|
99
|
+
const r = e ? Math.max(0, Math.min(e.start, e.end)) : -1, n = e ? Math.min(t.length, Math.max(e.start, e.end)) : -1;
|
|
100
|
+
return r < 0 || r === n ? m(t) : m(t.slice(0, r)) + `<span class="chat-input__emoji-selection" style="background-color: var(--chotto-chatinput-selection-bg, rgba(51, 133, 255, 0.35)); border-radius: 2px; box-decoration-break: clone; -webkit-box-decoration-break: clone;">${m(t.slice(r, n))}</span>` + m(t.slice(n));
|
|
48
101
|
}
|
|
49
|
-
function
|
|
50
|
-
return
|
|
102
|
+
function S(t) {
|
|
103
|
+
return t ? (l.lastIndex = 0, l.test(t)) : !1;
|
|
51
104
|
}
|
|
52
|
-
function
|
|
53
|
-
var
|
|
54
|
-
if (!
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
acceptNode: (
|
|
59
|
-
let
|
|
60
|
-
for (;
|
|
61
|
-
const
|
|
62
|
-
if (
|
|
105
|
+
function L(t) {
|
|
106
|
+
var s;
|
|
107
|
+
if (!t || typeof document > "u") return t;
|
|
108
|
+
const e = document.createElement("div");
|
|
109
|
+
e.innerHTML = t;
|
|
110
|
+
const r = document.createTreeWalker(e, NodeFilter.SHOW_TEXT, {
|
|
111
|
+
acceptNode: (a) => {
|
|
112
|
+
let c = a.parentNode;
|
|
113
|
+
for (; c && c !== e; ) {
|
|
114
|
+
const i = c.nodeName;
|
|
115
|
+
if (i === "SCRIPT" || i === "STYLE" || i === "TEXTAREA")
|
|
63
116
|
return NodeFilter.FILTER_REJECT;
|
|
64
|
-
|
|
117
|
+
c = c.parentNode;
|
|
65
118
|
}
|
|
66
119
|
return NodeFilter.FILTER_ACCEPT;
|
|
67
120
|
}
|
|
68
|
-
}),
|
|
69
|
-
let
|
|
70
|
-
for (;
|
|
71
|
-
|
|
72
|
-
for (const
|
|
73
|
-
const
|
|
74
|
-
if (
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
let
|
|
78
|
-
for (;
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
|
|
121
|
+
}), n = [];
|
|
122
|
+
let o;
|
|
123
|
+
for (; o = r.nextNode(); )
|
|
124
|
+
n.push(o);
|
|
125
|
+
for (const a of n.reverse()) {
|
|
126
|
+
const c = a.textContent || "";
|
|
127
|
+
if (l.lastIndex = 0, !l.test(c)) continue;
|
|
128
|
+
l.lastIndex = 0;
|
|
129
|
+
const i = document.createDocumentFragment();
|
|
130
|
+
let f = 0, u;
|
|
131
|
+
for (; u = l.exec(c); ) {
|
|
132
|
+
u.index > f && i.appendChild(document.createTextNode(c.slice(f, u.index)));
|
|
133
|
+
const F = N(u[0]);
|
|
134
|
+
i.appendChild(F), f = u.index + u[0].length;
|
|
82
135
|
}
|
|
83
|
-
|
|
136
|
+
f < c.length && i.appendChild(document.createTextNode(c.slice(f))), (s = a.parentNode) == null || s.replaceChild(i, a);
|
|
84
137
|
}
|
|
85
|
-
return
|
|
138
|
+
return e.innerHTML;
|
|
86
139
|
}
|
|
87
140
|
export {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
141
|
+
g as APPLE_EMOJI_CDN,
|
|
142
|
+
M as createAppleEmojiImgHtml,
|
|
143
|
+
N as createAppleEmojiSlotElement,
|
|
144
|
+
d as emojiToAppleCode,
|
|
145
|
+
A as getAppleEmojiFallbackUrl,
|
|
146
|
+
$ as getAppleEmojiUrl,
|
|
147
|
+
C as nextGraphemeIndex,
|
|
148
|
+
j as previousGraphemeIndex,
|
|
149
|
+
L as replaceEmojisInHtml,
|
|
150
|
+
v as snapIndexToGrapheme,
|
|
151
|
+
S as textContainsEmoji,
|
|
152
|
+
y as textToAppleEmojiHtml
|
|
96
153
|
};
|
|
@@ -1,20 +1,32 @@
|
|
|
1
|
-
import { ref as
|
|
1
|
+
import { ref as s } from "vue";
|
|
2
2
|
import { getTypeFileByMime as n } from "./getTypeFileByMime.js";
|
|
3
|
-
const m = (
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
let
|
|
8
|
-
for (;
|
|
9
|
-
|
|
3
|
+
const m = (i) => {
|
|
4
|
+
const e = n(i.type), t = s(!1), u = s(!1), a = s(!1), o = s("");
|
|
5
|
+
e === "image" ? t.value = !0 : e === "video" ? u.value = !0 : e === "audio" && (a.value = !0), t.value || u.value || a.value ? o.value = URL.createObjectURL(i) : o.value = "";
|
|
6
|
+
const f = ["б", "Кб", "Мб", "Гб"];
|
|
7
|
+
let l = i.size, r = 0;
|
|
8
|
+
for (; l > 1024; )
|
|
9
|
+
l = l / 1024, r++;
|
|
10
10
|
return {
|
|
11
11
|
isImage: t.value,
|
|
12
|
-
isVideo:
|
|
13
|
-
isAudio:
|
|
12
|
+
isVideo: u.value,
|
|
13
|
+
isAudio: a.value,
|
|
14
14
|
previewUrl: o.value,
|
|
15
|
-
fileSize:
|
|
15
|
+
fileSize: l.toFixed(2) + f[r]
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
|
+
function c(i, e) {
|
|
19
|
+
if (e)
|
|
20
|
+
return {
|
|
21
|
+
previewUrl: e.previewUrl,
|
|
22
|
+
isImage: e.isImage,
|
|
23
|
+
isVideo: e.isVideo,
|
|
24
|
+
isAudio: e.isAudio,
|
|
25
|
+
fileName: i,
|
|
26
|
+
fileSize: e.fileSize
|
|
27
|
+
};
|
|
28
|
+
}
|
|
18
29
|
export {
|
|
30
|
+
c as buildFilePreview,
|
|
19
31
|
m as generatePreview
|
|
20
32
|
};
|
|
@@ -1,67 +1,96 @@
|
|
|
1
|
-
import { ref as
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ref as h, getCurrentInstance as x, inject as R, computed as S, unref as I, watch as D } from "vue";
|
|
2
|
+
const r = h([]);
|
|
3
|
+
function E(n) {
|
|
4
|
+
return {
|
|
5
5
|
id: n,
|
|
6
6
|
text: "",
|
|
7
7
|
file: void 0,
|
|
8
8
|
forceSend: !1,
|
|
9
9
|
isRecording: !1
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
function f(n) {
|
|
13
|
+
const i = r.value.find((a) => a.id === n);
|
|
14
|
+
if (i) return i;
|
|
15
|
+
const s = E(n);
|
|
16
|
+
return r.value.push(s), s;
|
|
17
|
+
}
|
|
18
|
+
function F(n, i) {
|
|
19
|
+
if (typeof document > "u") return;
|
|
20
|
+
const s = document.getElementById("chat-input-reply-line-" + n);
|
|
21
|
+
s && (s.style.display = i.reply || i.edit ? "inherit" : "none");
|
|
22
|
+
}
|
|
23
|
+
const j = (n) => {
|
|
24
|
+
const i = x() ? R("selectedChat", void 0) : void 0, s = S(() => {
|
|
25
|
+
const e = i ? I(i) : void 0, t = e == null ? void 0 : e.chatId;
|
|
26
|
+
return t == null || t === "" ? n : `${n}:${t}`;
|
|
27
|
+
});
|
|
28
|
+
D(
|
|
29
|
+
s,
|
|
30
|
+
(e, t) => {
|
|
31
|
+
const d = f(e);
|
|
32
|
+
t !== void 0 && t !== e && F(n, d);
|
|
33
|
+
},
|
|
34
|
+
{ immediate: !0 }
|
|
35
|
+
);
|
|
36
|
+
const a = () => {
|
|
37
|
+
const e = s.value, t = r.value.findIndex((d) => d.id === e);
|
|
38
|
+
return t !== -1 ? t : (f(e), r.value.findIndex((d) => d.id === e));
|
|
39
|
+
}, u = () => {
|
|
40
|
+
const e = c();
|
|
41
|
+
r.value[a()] = {
|
|
42
|
+
id: e.id,
|
|
14
43
|
text: "",
|
|
15
44
|
file: void 0,
|
|
16
45
|
reply: void 0,
|
|
17
46
|
edit: void 0,
|
|
18
47
|
forceSend: !1,
|
|
19
|
-
isRecording:
|
|
48
|
+
isRecording: e.isRecording
|
|
20
49
|
};
|
|
21
50
|
}, o = (e) => {
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
...
|
|
51
|
+
const t = c();
|
|
52
|
+
r.value[a()] = {
|
|
53
|
+
...t,
|
|
25
54
|
forceSend: !1,
|
|
26
55
|
...e,
|
|
27
|
-
id:
|
|
56
|
+
id: t.id
|
|
28
57
|
};
|
|
29
|
-
},
|
|
58
|
+
}, l = (e) => {
|
|
30
59
|
o({ text: e });
|
|
31
|
-
},
|
|
60
|
+
}, g = (e) => {
|
|
32
61
|
o({ file: e });
|
|
33
|
-
},
|
|
62
|
+
}, v = () => {
|
|
34
63
|
o({ file: void 0 });
|
|
35
|
-
},
|
|
64
|
+
}, p = (e) => {
|
|
36
65
|
o({ reply: e, edit: void 0 });
|
|
37
|
-
},
|
|
66
|
+
}, y = () => {
|
|
38
67
|
o({ reply: void 0 });
|
|
39
68
|
}, M = (e) => {
|
|
40
69
|
o({ edit: e, reply: void 0 });
|
|
41
|
-
},
|
|
70
|
+
}, m = () => {
|
|
42
71
|
o({ edit: void 0 });
|
|
43
72
|
};
|
|
44
|
-
function
|
|
45
|
-
return s.value
|
|
73
|
+
function c() {
|
|
74
|
+
return f(s.value);
|
|
46
75
|
}
|
|
47
76
|
return {
|
|
48
|
-
getMessage:
|
|
49
|
-
resetMessage:
|
|
50
|
-
setMessageFile:
|
|
51
|
-
resetMessageFile:
|
|
52
|
-
setMessageText:
|
|
53
|
-
setReply:
|
|
54
|
-
resetReply:
|
|
77
|
+
getMessage: c,
|
|
78
|
+
resetMessage: u,
|
|
79
|
+
setMessageFile: g,
|
|
80
|
+
resetMessageFile: v,
|
|
81
|
+
setMessageText: l,
|
|
82
|
+
setReply: p,
|
|
83
|
+
resetReply: y,
|
|
55
84
|
setEdit: M,
|
|
56
|
-
resetEdit:
|
|
85
|
+
resetEdit: m,
|
|
57
86
|
setForceSendMessage: (e) => {
|
|
58
|
-
|
|
87
|
+
c().forceSend = e;
|
|
59
88
|
},
|
|
60
89
|
setRecordingMessage: (e) => {
|
|
61
|
-
|
|
90
|
+
c().isRecording = e;
|
|
62
91
|
}
|
|
63
92
|
};
|
|
64
93
|
};
|
|
65
94
|
export {
|
|
66
|
-
|
|
95
|
+
j as useMessageDraft
|
|
67
96
|
};
|