@mobilon-dev/chotto 0.3.42 → 0.3.43
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_feed_elements/FileMessage/FileMessage.vue.js +3 -3
- package/dist/components/2_feed_elements/FileMessage/FileMessage.vue2.js +99 -89
- package/dist/components/2_feed_elements/MessageSmsInvite/MessageSmsInvite.vue.js +7 -0
- package/dist/components/2_feed_elements/MessageSmsInvite/MessageSmsInvite.vue2.js +64 -0
- package/dist/components/2_feed_elements/TextMessage/TextMessage.vue.js +1 -1
- package/dist/components/2_feed_elements/TextMessage/TextMessage.vue2.js +74 -64
- package/dist/components/3_compounds/Feed/Feed.vue.js +2 -2
- package/dist/components/3_compounds/Feed/Feed.vue2.js +134 -128
- package/dist/locale/en.js +2 -1
- package/dist/locale/ru.js +2 -1
- 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 +135 -7
- package/dist/types/components/2_feed_elements/FileMessage/FileMessage.vue.d.ts +2 -0
- package/dist/types/components/2_feed_elements/FileMessage/styles/types.d.ts +2 -0
- package/dist/types/components/2_feed_elements/MessageSmsInvite/MessageSmsInvite.vue.d.ts +11 -0
- package/dist/types/components/2_feed_elements/MessageSmsInvite/styles/types.d.ts +49 -0
- package/dist/types/components/2_feed_elements/TextMessage/TextMessage.vue.d.ts +2 -0
- package/dist/types/components/2_feed_elements/types/messages.d.ts +12 -0
- package/dist/types/components/3_compounds/Feed/Feed.vue.d.ts +4 -2
- package/dist/types/hooks/validators/messages/types.d.ts +1 -0
- package/dist/types/locale/en.d.ts +1 -0
- package/dist/types/locale/ru.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import o from "./FileMessage.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import
|
|
4
|
-
const s = /* @__PURE__ */ o
|
|
3
|
+
import a from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const s = /* @__PURE__ */ a(o, [["__scopeId", "data-v-2f66aab8"]]);
|
|
5
5
|
export {
|
|
6
6
|
s as default
|
|
7
7
|
};
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
1
|
+
import { defineComponent as z, computed as y, createElementBlock as r, openBlock as o, unref as s, normalizeStyle as k, normalizeClass as u, createCommentVNode as l, createElementVNode as n, createVNode as d, withCtx as T, createTextVNode as p, toDisplayString as f, createBlock as b, withModifiers as W, Transition as G } from "vue";
|
|
2
|
+
import J from "../../1_atoms/ContextMenu/ContextMenu.vue.js";
|
|
3
|
+
import K from "../../1_atoms/LinkPreview/LinkPreview.vue.js";
|
|
4
|
+
import Q from "../../1_atoms/EmbedPreview/EmbedPreview.vue.js";
|
|
5
|
+
import X from "../BaseReplyMessage/BaseReplyMessage.vue.js";
|
|
6
|
+
import Y from "../MessageReactions/MessageReactions.vue.js";
|
|
7
|
+
import Z from "../MessageStatusIndicator/MessageStatusIndicator.vue.js";
|
|
8
|
+
import _ from "../MessageSmsInvite/MessageSmsInvite.vue.js";
|
|
9
|
+
import ee from "../../1_atoms/Tooltip/Tooltip.vue.js";
|
|
10
|
+
import { useMessageActions as se } from "../../../hooks/messages/useMessageActions.js";
|
|
11
|
+
import { useMessageLinks as te } from "../../../hooks/messages/useMessageLinks.js";
|
|
12
|
+
import { useChannelAccentColor as ae } from "../../../hooks/messages/useChannelAccentColor.js";
|
|
13
|
+
import { useSubtextTooltip as ie } from "../../../hooks/messages/useSubtextTooltip.js";
|
|
14
|
+
import { getStatus as ne, getStatusTitle as oe } from "../../../functions/getStatusMessage.js";
|
|
15
|
+
import { getMessageClass as le } from "../../../functions/getMessageClass.js";
|
|
16
|
+
import { createReactionHandlers as me } from "../../../functions/createReactionHandlers.js";
|
|
16
17
|
import "../../../functions/parseMarkdown.js";
|
|
17
|
-
const
|
|
18
|
+
const re = ["messageId"], ge = ["src"], ce = {
|
|
18
19
|
key: 1,
|
|
19
20
|
class: "file-message__subtext"
|
|
20
|
-
},
|
|
21
|
+
}, ue = ["href"], de = { class: "file-message__filename-text" }, fe = {
|
|
21
22
|
key: 1,
|
|
22
23
|
class: "file-message__text-container"
|
|
23
|
-
},
|
|
24
|
+
}, be = ["innerHTML"], we = { class: "file-message__info-container" }, ve = { class: "file-message__time" }, Ve = /* @__PURE__ */ z({
|
|
24
25
|
__name: "FileMessage",
|
|
25
26
|
props: {
|
|
26
27
|
message: {
|
|
@@ -45,50 +46,53 @@ const oe = ["messageId"], le = ["src"], me = {
|
|
|
45
46
|
default: () => ({})
|
|
46
47
|
}
|
|
47
48
|
},
|
|
48
|
-
emits: ["action", "reply"],
|
|
49
|
+
emits: ["action", "reply", "sms-invite"],
|
|
49
50
|
setup(e, { emit: I }) {
|
|
50
|
-
const
|
|
51
|
-
isOpenMenu:
|
|
52
|
-
buttonMenuVisible:
|
|
53
|
-
showMenu:
|
|
54
|
-
hideMenu:
|
|
55
|
-
clickAction:
|
|
56
|
-
viewsAction:
|
|
57
|
-
handleClickReplied:
|
|
58
|
-
} =
|
|
59
|
-
y(() =>
|
|
51
|
+
const a = e, w = I, { linkedHtml: L, inNewWindow: h } = te(() => a.message.text), {
|
|
52
|
+
isOpenMenu: v,
|
|
53
|
+
buttonMenuVisible: A,
|
|
54
|
+
showMenu: R,
|
|
55
|
+
hideMenu: C,
|
|
56
|
+
clickAction: E,
|
|
57
|
+
viewsAction: x,
|
|
58
|
+
handleClickReplied: F
|
|
59
|
+
} = se(a.message, w), B = y(() => ne(a.message.status)), O = y(() => oe(a.message.status, a.message.statusMsg)), { bubbleStyle: U, messageChannelId: V } = ae(
|
|
60
|
+
y(() => a.message),
|
|
60
61
|
{ cssVariable: "--chotto-filemessage-right-bg", position: "right" }
|
|
61
62
|
);
|
|
62
|
-
function
|
|
63
|
-
return
|
|
63
|
+
function S(m) {
|
|
64
|
+
return le(m.position, "file-message");
|
|
64
65
|
}
|
|
65
|
-
const { onToggleReaction:
|
|
66
|
-
if (
|
|
66
|
+
const { onToggleReaction: H, onAddReaction: N, onRemoveReaction: P } = me(w), $ = async () => {
|
|
67
|
+
if (a.message.url)
|
|
67
68
|
try {
|
|
68
|
-
const m = new URL(
|
|
69
|
+
const m = new URL(a.message.url, window.location.href);
|
|
69
70
|
if (m.origin === window.location.origin) {
|
|
70
71
|
const c = document.createElement("a");
|
|
71
|
-
c.href = m.toString(), c.download =
|
|
72
|
+
c.href = m.toString(), c.download = a.message.filename || `file-${a.message.messageId}`, document.body.appendChild(c), c.click(), document.body.removeChild(c);
|
|
72
73
|
return;
|
|
73
74
|
}
|
|
74
|
-
const
|
|
75
|
-
if (!
|
|
76
|
-
throw new Error(`HTTP error! status: ${
|
|
77
|
-
const
|
|
78
|
-
g.href = M, g.download =
|
|
75
|
+
const i = await fetch(a.message.url);
|
|
76
|
+
if (!i.ok)
|
|
77
|
+
throw new Error(`HTTP error! status: ${i.status}`);
|
|
78
|
+
const q = await i.blob(), M = window.URL.createObjectURL(q), g = document.createElement("a");
|
|
79
|
+
g.href = M, g.download = a.message.filename || `file-${a.message.messageId}`, document.body.appendChild(g), g.click(), document.body.removeChild(g), window.URL.revokeObjectURL(M);
|
|
79
80
|
} catch (m) {
|
|
80
|
-
console.error("Ошибка при скачивании файла:", m), window.open(
|
|
81
|
+
console.error("Ошибка при скачивании файла:", m), window.open(a.message.url, "_blank");
|
|
81
82
|
}
|
|
82
|
-
},
|
|
83
|
-
|
|
83
|
+
}, j = ie(() => a.message, () => a.subtextTooltipData);
|
|
84
|
+
function D() {
|
|
85
|
+
w("sms-invite", a.message);
|
|
86
|
+
}
|
|
87
|
+
return (m, t) => (o(), r("div", {
|
|
84
88
|
class: u(["file-message", [
|
|
85
|
-
|
|
89
|
+
S(e.message),
|
|
86
90
|
e.applyStyle(e.message)
|
|
87
91
|
]]),
|
|
88
92
|
messageId: e.message.messageId,
|
|
89
|
-
style: k(
|
|
90
|
-
onMouseleave:
|
|
91
|
-
(...
|
|
93
|
+
style: k(s(U)),
|
|
94
|
+
onMouseleave: t[4] || (t[4] = //@ts-ignore
|
|
95
|
+
(...i) => s(C) && s(C)(...i))
|
|
92
96
|
}, [
|
|
93
97
|
e.message.avatar && e.isFirstInSeries ? (o(), r("img", {
|
|
94
98
|
key: 0,
|
|
@@ -97,15 +101,15 @@ const oe = ["messageId"], le = ["src"], me = {
|
|
|
97
101
|
height: "32",
|
|
98
102
|
width: "32",
|
|
99
103
|
style: k({ gridRow: e.message.subText ? "2" : "1" })
|
|
100
|
-
}, null, 12,
|
|
101
|
-
e.message.subText && e.isFirstInSeries ? (o(), r("p",
|
|
102
|
-
d(
|
|
103
|
-
text:
|
|
104
|
+
}, null, 12, ge)) : l("", !0),
|
|
105
|
+
e.message.subText && e.isFirstInSeries ? (o(), r("p", ce, [
|
|
106
|
+
d(ee, {
|
|
107
|
+
text: s(j),
|
|
104
108
|
position: e.message.position === "left" ? "right" : "left",
|
|
105
109
|
offset: 8
|
|
106
110
|
}, {
|
|
107
|
-
default:
|
|
108
|
-
|
|
111
|
+
default: T(() => [
|
|
112
|
+
p(f(e.message.subText), 1)
|
|
109
113
|
]),
|
|
110
114
|
_: 1
|
|
111
115
|
}, 8, ["text", "position"])
|
|
@@ -113,92 +117,98 @@ const oe = ["messageId"], le = ["src"], me = {
|
|
|
113
117
|
n("div", {
|
|
114
118
|
class: u(["file-message__content", { "is-first": e.isFirstInSeries, "with-avatar-indent": !e.isFirstInSeries && e.message.avatar }]),
|
|
115
119
|
style: k({ gridRow: e.message.subText ? "2" : "1" }),
|
|
116
|
-
onMouseenter:
|
|
117
|
-
(...
|
|
120
|
+
onMouseenter: t[3] || (t[3] = //@ts-ignore
|
|
121
|
+
(...i) => s(R) && s(R)(...i))
|
|
118
122
|
}, [
|
|
119
|
-
e.message.reply ? (o(), b(
|
|
123
|
+
e.message.reply ? (o(), b(X, {
|
|
120
124
|
key: 0,
|
|
121
125
|
message: e.message.reply,
|
|
122
126
|
class: u(e.message.position),
|
|
123
|
-
onReply:
|
|
127
|
+
onReply: s(F)
|
|
124
128
|
}, null, 8, ["message", "class", "onReply"])) : l("", !0),
|
|
125
129
|
n("a", {
|
|
126
130
|
class: "file-message__link",
|
|
127
131
|
href: e.message.url,
|
|
128
|
-
onClick:
|
|
132
|
+
onClick: W($, ["prevent"])
|
|
129
133
|
}, [
|
|
130
|
-
|
|
131
|
-
n("p",
|
|
132
|
-
|
|
134
|
+
t[5] || (t[5] = n("span", { class: "pi pi-file" }, null, -1)),
|
|
135
|
+
n("p", de, f(e.message.filename), 1),
|
|
136
|
+
t[6] || (t[6] = n("div", { class: "file-message__download-button" }, [
|
|
133
137
|
n("span", { class: "pi pi-download" })
|
|
134
138
|
], -1))
|
|
135
|
-
], 8,
|
|
136
|
-
e.message.text ? (o(), r("div",
|
|
139
|
+
], 8, ue),
|
|
140
|
+
e.message.text ? (o(), r("div", fe, [
|
|
137
141
|
n("p", {
|
|
138
|
-
onClick:
|
|
139
|
-
(...
|
|
140
|
-
innerHTML:
|
|
141
|
-
}, null, 8,
|
|
142
|
+
onClick: t[0] || (t[0] = //@ts-ignore
|
|
143
|
+
(...i) => s(h) && s(h)(...i)),
|
|
144
|
+
innerHTML: s(L)
|
|
145
|
+
}, null, 8, be)
|
|
142
146
|
])) : l("", !0),
|
|
143
|
-
e.message.linkPreview ? (o(), b(
|
|
147
|
+
e.message.linkPreview ? (o(), b(K, {
|
|
144
148
|
key: 2,
|
|
145
149
|
class: u(e.message.position),
|
|
146
150
|
"link-preview": e.message.linkPreview
|
|
147
151
|
}, null, 8, ["class", "link-preview"])) : l("", !0),
|
|
148
|
-
e.message.embed ? (o(), b(
|
|
152
|
+
e.message.embed ? (o(), b(Q, {
|
|
149
153
|
key: 3,
|
|
150
154
|
class: u(e.message.position),
|
|
151
155
|
embed: e.message.embed
|
|
152
156
|
}, null, 8, ["class", "embed"])) : l("", !0),
|
|
153
|
-
d(
|
|
157
|
+
d(Y, {
|
|
154
158
|
reactions: e.message.reactions,
|
|
155
159
|
"message-id": e.message.messageId,
|
|
156
160
|
enabled: e.reactionsEnabled,
|
|
157
|
-
onToggleReaction:
|
|
158
|
-
onAddReaction:
|
|
159
|
-
onRemoveReaction:
|
|
161
|
+
onToggleReaction: s(H),
|
|
162
|
+
onAddReaction: s(N),
|
|
163
|
+
onRemoveReaction: s(P)
|
|
160
164
|
}, null, 8, ["reactions", "message-id", "enabled", "onToggleReaction", "onAddReaction", "onRemoveReaction"]),
|
|
161
|
-
n("div",
|
|
165
|
+
n("div", we, [
|
|
162
166
|
e.message.views ? (o(), r("div", {
|
|
163
167
|
key: 0,
|
|
164
168
|
class: "file-message__views",
|
|
165
|
-
onClick:
|
|
166
|
-
(...
|
|
169
|
+
onClick: t[1] || (t[1] = //@ts-ignore
|
|
170
|
+
(...i) => s(x) && s(x)(...i))
|
|
167
171
|
}, [
|
|
168
|
-
|
|
172
|
+
t[7] || (t[7] = n("span", { class: "pi pi-eye" }, null, -1)),
|
|
169
173
|
n("p", null, f(e.message.views), 1)
|
|
170
174
|
])) : l("", !0),
|
|
171
|
-
n("span",
|
|
172
|
-
d(
|
|
175
|
+
n("span", ve, f(e.message.time), 1),
|
|
176
|
+
d(Z, {
|
|
173
177
|
"base-class": "file-message",
|
|
174
|
-
"message-class":
|
|
178
|
+
"message-class": S(e.message),
|
|
175
179
|
"message-status": e.message.status,
|
|
176
180
|
"status-class": B.value,
|
|
177
181
|
"status-title": O.value
|
|
178
182
|
}, null, 8, ["message-class", "message-status", "status-class", "status-title"])
|
|
179
183
|
]),
|
|
180
|
-
|
|
184
|
+
d(_, {
|
|
185
|
+
status: e.message.status,
|
|
186
|
+
"has-messenger-account": e.message.hasMessengerAccount,
|
|
187
|
+
channel: s(V),
|
|
188
|
+
onSmsInvite: D
|
|
189
|
+
}, null, 8, ["status", "has-messenger-account", "channel"]),
|
|
190
|
+
s(A) && e.message.actions ? (o(), r("button", {
|
|
181
191
|
key: 4,
|
|
182
192
|
class: "file-message__menu-button",
|
|
183
|
-
onClick:
|
|
184
|
-
}, [...
|
|
193
|
+
onClick: t[2] || (t[2] = (i) => v.value = !s(v))
|
|
194
|
+
}, [...t[8] || (t[8] = [
|
|
185
195
|
n("span", { class: "pi pi-ellipsis-h" }, null, -1)
|
|
186
196
|
])])) : l("", !0),
|
|
187
|
-
d(
|
|
188
|
-
default:
|
|
189
|
-
|
|
197
|
+
d(G, null, {
|
|
198
|
+
default: T(() => [
|
|
199
|
+
s(v) && e.message.actions ? (o(), b(J, {
|
|
190
200
|
key: 0,
|
|
191
201
|
class: "file-message__context-menu",
|
|
192
202
|
actions: e.message.actions,
|
|
193
|
-
onClick:
|
|
203
|
+
onClick: s(E)
|
|
194
204
|
}, null, 8, ["actions", "onClick"])) : l("", !0)
|
|
195
205
|
]),
|
|
196
206
|
_: 1
|
|
197
207
|
})
|
|
198
208
|
], 38)
|
|
199
|
-
], 46,
|
|
209
|
+
], 46, re));
|
|
200
210
|
}
|
|
201
211
|
});
|
|
202
212
|
export {
|
|
203
|
-
|
|
213
|
+
Ve as default
|
|
204
214
|
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { defineComponent as _, inject as m, computed as p, createElementBlock as b, createCommentVNode as C, openBlock as M, createElementVNode as k, toDisplayString as D, unref as A } from "vue";
|
|
2
|
+
import { useLocale as T } from "../../../locale/useLocale.js";
|
|
3
|
+
import { useMessageDraft as $ } from "../../../hooks/useMessageDraft.js";
|
|
4
|
+
import "../../../hooks/useSearchModel.js";
|
|
5
|
+
import "../../../hooks/useTheme.js";
|
|
6
|
+
/* empty css */
|
|
7
|
+
/* empty css */
|
|
8
|
+
import "../../../node_modules/linkifyjs/dist/linkify.js";
|
|
9
|
+
import "../../../functions/parseMarkdown.js";
|
|
10
|
+
const I = ["data-channel-type"], j = { class: "message-sms-invite__text" }, F = /* @__PURE__ */ _({
|
|
11
|
+
__name: "MessageSmsInvite",
|
|
12
|
+
props: {
|
|
13
|
+
status: {},
|
|
14
|
+
hasMessengerAccount: { type: Boolean },
|
|
15
|
+
channel: {}
|
|
16
|
+
},
|
|
17
|
+
emits: ["sms-invite"],
|
|
18
|
+
setup(h, { emit: f }) {
|
|
19
|
+
const i = h, d = f, { t: v } = T(), g = m("chatAppId"), c = m("selectedChat"), { setMessageText: r } = $(g || ""), x = p(() => i.status === "error" && i.hasMessengerAccount === !1), s = p(() => {
|
|
20
|
+
var a;
|
|
21
|
+
const n = ((a = i.channel) == null ? void 0 : a.toLowerCase()) ?? "";
|
|
22
|
+
return n.includes("whatsapp") || n.includes("waba") ? "whatsapp" : n.includes("max") ? "max" : "telegram";
|
|
23
|
+
}), u = p(() => {
|
|
24
|
+
const n = c && c.value ? c.value : null;
|
|
25
|
+
if (!n || !n.contact || !n.contact.attributes) return null;
|
|
26
|
+
const a = n.contact.attributes, l = (e) => {
|
|
27
|
+
if (!e) return null;
|
|
28
|
+
if (typeof e == "string")
|
|
29
|
+
return e.startsWith("+") ? e : `+${e}`;
|
|
30
|
+
if (typeof e == "object") {
|
|
31
|
+
const t = e;
|
|
32
|
+
if (t.phone)
|
|
33
|
+
return t.phone.startsWith("+") ? t.phone : `+${t.phone}`;
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
};
|
|
37
|
+
let o = null;
|
|
38
|
+
if (s.value === "whatsapp") {
|
|
39
|
+
const e = a.find((t) => t.type === "whatsapp" || t.type === "waba");
|
|
40
|
+
o = l((e == null ? void 0 : e.data) ?? (e == null ? void 0 : e.value));
|
|
41
|
+
} else if (s.value === "telegram") {
|
|
42
|
+
const e = a.find((t) => t.type === "telegram");
|
|
43
|
+
o = l((e == null ? void 0 : e.data) ?? (e == null ? void 0 : e.value));
|
|
44
|
+
} else if (s.value === "max") {
|
|
45
|
+
const e = a.find((t) => t.type === "max");
|
|
46
|
+
o = l((e == null ? void 0 : e.data) ?? (e == null ? void 0 : e.value));
|
|
47
|
+
}
|
|
48
|
+
return o ? s.value === "whatsapp" ? `Перейдите в WhatsApp https://wa.me/+${o.replace("+", "")}, чтобы продолжить общение` : s.value === "telegram" ? `Перейдите в Telegram https://t.me/+${o.replace("+", "")}, чтобы продолжить общение` : s.value === "max" ? `Перейдите в Max https://max.ru/ и найдите нас по номеру ${o}, чтобы продолжить общение` : null : null;
|
|
49
|
+
}), y = () => {
|
|
50
|
+
u.value && r && r(u.value), d("sms-invite");
|
|
51
|
+
};
|
|
52
|
+
return (n, a) => x.value ? (M(), b("div", {
|
|
53
|
+
key: 0,
|
|
54
|
+
class: "message-sms-invite",
|
|
55
|
+
"data-channel-type": s.value,
|
|
56
|
+
onClick: y
|
|
57
|
+
}, [
|
|
58
|
+
k("span", j, D(A(v)("component.TextMessage.sendSmsInvite")), 1)
|
|
59
|
+
], 8, I)) : C("", !0);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
export {
|
|
63
|
+
F as default
|
|
64
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import o from "./TextMessage.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import t from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const a = /* @__PURE__ */ t(o, [["__scopeId", "data-v-
|
|
4
|
+
const a = /* @__PURE__ */ t(o, [["__scopeId", "data-v-d7760eb4"]]);
|
|
5
5
|
export {
|
|
6
6
|
a as default
|
|
7
7
|
};
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
1
|
+
import { defineComponent as O, computed as f, createElementBlock as l, openBlock as a, unref as s, normalizeStyle as S, normalizeClass as g, createCommentVNode as i, createElementVNode as m, createVNode as u, withCtx as w, createTextVNode as j, toDisplayString as v, createBlock as c, Transition as q } from "vue";
|
|
2
|
+
import z from "../../1_atoms/ContextMenu/ContextMenu.vue.js";
|
|
3
|
+
import $ from "../../1_atoms/LinkPreview/LinkPreview.vue.js";
|
|
4
|
+
import W from "../../1_atoms/EmbedPreview/EmbedPreview.vue.js";
|
|
5
|
+
import G from "../BaseReplyMessage/BaseReplyMessage.vue.js";
|
|
6
|
+
import J from "../MessageReactions/MessageReactions.vue.js";
|
|
7
|
+
import K from "../MessageStatusIndicator/MessageStatusIndicator.vue.js";
|
|
8
|
+
import Q from "../MessageSmsInvite/MessageSmsInvite.vue.js";
|
|
9
|
+
import U from "../../1_atoms/Tooltip/Tooltip.vue.js";
|
|
10
|
+
import { useMessageActions as X } from "../../../hooks/messages/useMessageActions.js";
|
|
11
|
+
import { useMessageLinks as Y } from "../../../hooks/messages/useMessageLinks.js";
|
|
12
|
+
import { useChannelAccentColor as Z } from "../../../hooks/messages/useChannelAccentColor.js";
|
|
13
|
+
import { useSubtextTooltip as p } from "../../../hooks/messages/useSubtextTooltip.js";
|
|
14
|
+
import { getStatus as _, getStatusTitle as ee } from "../../../functions/getStatusMessage.js";
|
|
15
|
+
import { getMessageClass as se } from "../../../functions/getMessageClass.js";
|
|
16
|
+
import { createReactionHandlers as te } from "../../../functions/createReactionHandlers.js";
|
|
16
17
|
import "../../../functions/parseMarkdown.js";
|
|
17
|
-
const
|
|
18
|
+
const ae = ["messageId"], ne = ["src"], ie = {
|
|
18
19
|
key: 1,
|
|
19
20
|
class: "text-message__subtext"
|
|
20
|
-
},
|
|
21
|
+
}, oe = ["innerHTML"], le = { class: "text-message__info-container" }, me = {
|
|
21
22
|
key: 1,
|
|
22
23
|
class: "text-message__time"
|
|
23
|
-
},
|
|
24
|
+
}, Ce = /* @__PURE__ */ O({
|
|
24
25
|
__name: "TextMessage",
|
|
25
26
|
props: {
|
|
26
27
|
message: {
|
|
@@ -45,33 +46,36 @@ const ee = ["messageId"], se = ["src"], te = {
|
|
|
45
46
|
default: () => ({})
|
|
46
47
|
}
|
|
47
48
|
},
|
|
48
|
-
emits: ["action", "reply"],
|
|
49
|
-
setup(e, { emit:
|
|
50
|
-
const n = e,
|
|
51
|
-
isOpenMenu:
|
|
52
|
-
buttonMenuVisible:
|
|
53
|
-
showMenu:
|
|
54
|
-
hideMenu:
|
|
55
|
-
clickAction:
|
|
49
|
+
emits: ["action", "reply", "sms-invite"],
|
|
50
|
+
setup(e, { emit: T }) {
|
|
51
|
+
const n = e, r = T, { linkedHtml: h, inNewWindow: x } = Y(() => n.message.text), {
|
|
52
|
+
isOpenMenu: d,
|
|
53
|
+
buttonMenuVisible: C,
|
|
54
|
+
showMenu: y,
|
|
55
|
+
hideMenu: b,
|
|
56
|
+
clickAction: I,
|
|
56
57
|
viewsAction: k,
|
|
57
58
|
handleClickReplied: A
|
|
58
|
-
} =
|
|
59
|
-
|
|
59
|
+
} = X(n.message, r), B = f(() => _(n.message.status)), F = f(() => ee(n.message.status, n.message.statusMsg)), { bubbleStyle: V, messageChannelId: E } = Z(
|
|
60
|
+
f(() => n.message),
|
|
60
61
|
{ cssVariable: "--chotto-textmessage-right-bg", position: "right" }
|
|
61
62
|
);
|
|
62
|
-
function R(
|
|
63
|
-
return
|
|
63
|
+
function R(M) {
|
|
64
|
+
return se(M.position, "text-message");
|
|
64
65
|
}
|
|
65
|
-
const { onToggleReaction:
|
|
66
|
-
|
|
66
|
+
const { onToggleReaction: N, onAddReaction: H, onRemoveReaction: L } = te(r), P = p(() => n.message, () => n.subtextTooltipData);
|
|
67
|
+
function D() {
|
|
68
|
+
r("sms-invite", n.message);
|
|
69
|
+
}
|
|
70
|
+
return (M, t) => (a(), l("div", {
|
|
67
71
|
class: g(["text-message", [
|
|
68
72
|
R(e.message),
|
|
69
73
|
e.applyStyle(e.message)
|
|
70
74
|
]]),
|
|
71
75
|
messageId: e.message.messageId,
|
|
72
|
-
style:
|
|
76
|
+
style: S(s(V)),
|
|
73
77
|
onMouseleave: t[4] || (t[4] = //@ts-ignore
|
|
74
|
-
(...o) => s(
|
|
78
|
+
(...o) => s(b) && s(b)(...o))
|
|
75
79
|
}, [
|
|
76
80
|
e.message.avatar && e.isFirstInSeries ? (a(), l("img", {
|
|
77
81
|
key: 0,
|
|
@@ -79,16 +83,16 @@ const ee = ["messageId"], se = ["src"], te = {
|
|
|
79
83
|
src: e.message.avatar,
|
|
80
84
|
height: "32",
|
|
81
85
|
width: "32",
|
|
82
|
-
style:
|
|
83
|
-
}, null, 12,
|
|
84
|
-
e.message.subText && e.isFirstInSeries ? (a(), l("p",
|
|
85
|
-
u(
|
|
86
|
-
text: s(
|
|
86
|
+
style: S({ gridRow: e.message.subText && e.isFirstInSeries ? "2" : "1" })
|
|
87
|
+
}, null, 12, ne)) : i("", !0),
|
|
88
|
+
e.message.subText && e.isFirstInSeries ? (a(), l("p", ie, [
|
|
89
|
+
u(U, {
|
|
90
|
+
text: s(P),
|
|
87
91
|
position: e.message.position === "left" ? "right" : "left",
|
|
88
92
|
offset: 8
|
|
89
93
|
}, {
|
|
90
|
-
default:
|
|
91
|
-
|
|
94
|
+
default: w(() => [
|
|
95
|
+
j(v(e.message.subText), 1)
|
|
92
96
|
]),
|
|
93
97
|
_: 1
|
|
94
98
|
}, 8, ["text", "position"])
|
|
@@ -96,9 +100,9 @@ const ee = ["messageId"], se = ["src"], te = {
|
|
|
96
100
|
m("div", {
|
|
97
101
|
class: g(["text-message__content", { "is-first": e.isFirstInSeries, "with-avatar-indent": !e.isFirstInSeries && e.message.avatar }]),
|
|
98
102
|
onMouseenter: t[3] || (t[3] = //@ts-ignore
|
|
99
|
-
(...o) => s(
|
|
103
|
+
(...o) => s(y) && s(y)(...o))
|
|
100
104
|
}, [
|
|
101
|
-
e.message.reply ? (a(),
|
|
105
|
+
e.message.reply ? (a(), c(G, {
|
|
102
106
|
key: 0,
|
|
103
107
|
class: g(e.message.position),
|
|
104
108
|
message: e.message.reply,
|
|
@@ -107,28 +111,28 @@ const ee = ["messageId"], se = ["src"], te = {
|
|
|
107
111
|
m("p", {
|
|
108
112
|
class: "text-message__text",
|
|
109
113
|
onClick: t[0] || (t[0] = //@ts-ignore
|
|
110
|
-
(...o) => s(
|
|
111
|
-
innerHTML: s(
|
|
112
|
-
}, null, 8,
|
|
113
|
-
e.message.linkPreview ? (a(),
|
|
114
|
+
(...o) => s(x) && s(x)(...o)),
|
|
115
|
+
innerHTML: s(h)
|
|
116
|
+
}, null, 8, oe),
|
|
117
|
+
e.message.linkPreview ? (a(), c($, {
|
|
114
118
|
key: 1,
|
|
115
119
|
class: g(e.message.position),
|
|
116
120
|
"link-preview": e.message.linkPreview
|
|
117
121
|
}, null, 8, ["class", "link-preview"])) : i("", !0),
|
|
118
|
-
e.message.embed ? (a(),
|
|
122
|
+
e.message.embed ? (a(), c(W, {
|
|
119
123
|
key: 2,
|
|
120
124
|
class: g(e.message.position),
|
|
121
125
|
embed: e.message.embed
|
|
122
126
|
}, null, 8, ["class", "embed"])) : i("", !0),
|
|
123
|
-
u(
|
|
127
|
+
u(J, {
|
|
124
128
|
reactions: e.message.reactions,
|
|
125
129
|
"message-id": e.message.messageId,
|
|
126
130
|
enabled: e.reactionsEnabled,
|
|
127
|
-
onToggleReaction: s(
|
|
128
|
-
onAddReaction: s(
|
|
129
|
-
onRemoveReaction: s(
|
|
131
|
+
onToggleReaction: s(N),
|
|
132
|
+
onAddReaction: s(H),
|
|
133
|
+
onRemoveReaction: s(L)
|
|
130
134
|
}, null, 8, ["reactions", "message-id", "enabled", "onToggleReaction", "onAddReaction", "onRemoveReaction"]),
|
|
131
|
-
m("div",
|
|
135
|
+
m("div", le, [
|
|
132
136
|
e.message.views ? (a(), l("div", {
|
|
133
137
|
key: 0,
|
|
134
138
|
class: "text-message__views",
|
|
@@ -136,10 +140,10 @@ const ee = ["messageId"], se = ["src"], te = {
|
|
|
136
140
|
(...o) => s(k) && s(k)(...o))
|
|
137
141
|
}, [
|
|
138
142
|
t[5] || (t[5] = m("span", { class: "pi pi-eye" }, null, -1)),
|
|
139
|
-
m("p", null,
|
|
143
|
+
m("p", null, v(e.message.views), 1)
|
|
140
144
|
])) : i("", !0),
|
|
141
|
-
e.message.time ? (a(), l("span",
|
|
142
|
-
u(
|
|
145
|
+
e.message.time ? (a(), l("span", me, v(e.message.time), 1)) : i("", !0),
|
|
146
|
+
u(K, {
|
|
143
147
|
"base-class": "text-message",
|
|
144
148
|
"message-class": R(e.message),
|
|
145
149
|
"message-status": e.message.status,
|
|
@@ -147,28 +151,34 @@ const ee = ["messageId"], se = ["src"], te = {
|
|
|
147
151
|
"status-title": F.value
|
|
148
152
|
}, null, 8, ["message-class", "message-status", "status-class", "status-title"])
|
|
149
153
|
]),
|
|
150
|
-
|
|
154
|
+
u(Q, {
|
|
155
|
+
status: e.message.status,
|
|
156
|
+
"has-messenger-account": e.message.hasMessengerAccount,
|
|
157
|
+
channel: s(E),
|
|
158
|
+
onSmsInvite: D
|
|
159
|
+
}, null, 8, ["status", "has-messenger-account", "channel"]),
|
|
160
|
+
s(C) && e.message.actions ? (a(), l("button", {
|
|
151
161
|
key: 3,
|
|
152
162
|
class: "text-message__menu-button",
|
|
153
|
-
onClick: t[2] || (t[2] = (o) =>
|
|
163
|
+
onClick: t[2] || (t[2] = (o) => d.value = !s(d))
|
|
154
164
|
}, [...t[6] || (t[6] = [
|
|
155
165
|
m("span", { class: "pi pi-ellipsis-h" }, null, -1)
|
|
156
166
|
])])) : i("", !0),
|
|
157
|
-
u(
|
|
158
|
-
default:
|
|
159
|
-
s(
|
|
167
|
+
u(q, null, {
|
|
168
|
+
default: w(() => [
|
|
169
|
+
s(d) && e.message.actions ? (a(), c(z, {
|
|
160
170
|
key: 0,
|
|
161
171
|
class: "text-message__context-menu",
|
|
162
172
|
actions: e.message.actions,
|
|
163
|
-
onClick: s(
|
|
173
|
+
onClick: s(I)
|
|
164
174
|
}, null, 8, ["actions", "onClick"])) : i("", !0)
|
|
165
175
|
]),
|
|
166
176
|
_: 1
|
|
167
177
|
})
|
|
168
178
|
], 34)
|
|
169
|
-
], 46,
|
|
179
|
+
], 46, ae));
|
|
170
180
|
}
|
|
171
181
|
});
|
|
172
182
|
export {
|
|
173
|
-
|
|
183
|
+
Ce as default
|
|
174
184
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import o from "./Feed.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import t from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const
|
|
4
|
+
const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-05a59365"]]);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
m as default
|
|
7
7
|
};
|