@phonghq/go-chat 1.0.55 → 1.0.57
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/assets/icons/call/IconClock.vue.d.ts +2 -0
- package/dist/assets/icons/call/IconClock.vue.js +22 -0
- package/dist/chat/App.vue.js +24 -7
- package/dist/chat/page/home/ChatList.vue.d.ts +4 -0
- package/dist/chat/page/home/ChatList.vue.js +12 -5
- package/dist/chat/page/home/ChatMessage.vue.d.ts +1 -0
- package/dist/chat/page/home/ChatMessage.vue.js +27 -7
- package/dist/chat/page/home/ChatMessageItem.vue.js +31 -16
- package/dist/chat/page/home/DropZone.vue.d.ts +13 -0
- package/dist/chat/page/home/DropZone.vue.js +130 -0
- package/dist/chat/page/home/Home.vue.d.ts +1 -0
- package/dist/chat/page/home/Home.vue.js +71 -20
- package/dist/chat/page/home/HomeHeader.vue.js +7 -5
- package/dist/chat/page/home/InputChat.vue.js +139 -70
- package/dist/chat/page/home/PhoneNumpad.vue.js +2 -0
- package/dist/components/chat/call/Calling.vue.js +76 -70
- package/dist/components/chat/call/TimeLeft.vue.d.ts +5 -0
- package/dist/components/chat/call/TimeLeft.vue.js +59 -0
- package/dist/composable/useInitData.js +2 -2
- package/dist/composable/useListConversations.d.ts +2 -0
- package/dist/composable/useListConversations.js +50 -11
- package/dist/composable/usePlivo.d.ts +1 -0
- package/dist/composable/usePlivo.js +31 -9
- package/dist/constant/mqtt.d.ts +1 -0
- package/dist/constant/mqtt.js +2 -0
- package/dist/go-chat.es.js +40714 -40469
- package/dist/go-chat.umd.js +23 -23
- package/dist/plugins/mqtt.js +5 -7
- package/dist/style.css +1 -1
- package/dist/types/chat/auth.d.ts +0 -1
- package/dist/types/chat/call.d.ts +1 -0
- package/dist/types/chat/call.js +1 -0
- package/dist/types/chat/global.d.ts +1 -0
- package/dist/types/message.d.ts +1 -0
- package/dist/utils/chat/store/auth.d.ts +0 -2
- package/dist/utils/chat/store/auth.js +7 -7
- package/dist/utils/chat/store/conversation.js +1 -1
- package/dist/utils/chat/store/message.d.ts +4 -0
- package/dist/utils/chat/store/message.js +4 -0
- package/dist/views/home/phone-numpad/PhoneNumpad.vue.js +3 -0
- package/package.json +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="C:/phonghq/go-chat-v2/node_modules/.vue-global-types/vue_3.5_0.d.ts" />
|
|
2
|
+
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
|
3
|
+
const __VLS_ctx = {};
|
|
4
|
+
let __VLS_elements;
|
|
5
|
+
let __VLS_components;
|
|
6
|
+
let __VLS_directives;
|
|
7
|
+
__VLS_asFunctionalElement(__VLS_elements.svg, __VLS_elements.svg)({
|
|
8
|
+
width: "24",
|
|
9
|
+
height: "24",
|
|
10
|
+
viewBox: "0 0 24 24",
|
|
11
|
+
fill: "none",
|
|
12
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
13
|
+
});
|
|
14
|
+
__VLS_asFunctionalElement(__VLS_elements.path)({
|
|
15
|
+
d: "M12 7V12H15M21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12Z",
|
|
16
|
+
stroke: "currentColor",
|
|
17
|
+
'stroke-width': "2",
|
|
18
|
+
'stroke-linecap': "round",
|
|
19
|
+
'stroke-linejoin': "round",
|
|
20
|
+
});
|
|
21
|
+
const __VLS_export = (await import('vue')).defineComponent({});
|
|
22
|
+
export default {};
|
package/dist/chat/App.vue.js
CHANGED
|
@@ -55,9 +55,9 @@ const routerMobileConfig = computed(() => [
|
|
|
55
55
|
: () => {
|
|
56
56
|
logout();
|
|
57
57
|
},
|
|
58
|
-
backTitle: '
|
|
58
|
+
backTitle: 'logo',
|
|
59
59
|
subTitle: dataProfile.value?.user_type == 'tenant'
|
|
60
|
-
? phoneNumberFormat(dataProfile.value?.
|
|
60
|
+
? phoneNumberFormat(dataProfile.value?.phone ?? '')
|
|
61
61
|
: ''
|
|
62
62
|
},
|
|
63
63
|
{
|
|
@@ -171,10 +171,11 @@ const handleCall = (user) => {
|
|
|
171
171
|
else {
|
|
172
172
|
emit('call', user);
|
|
173
173
|
}
|
|
174
|
+
handleReadMessage();
|
|
174
175
|
};
|
|
175
176
|
const handleInitPage = async () => {
|
|
176
177
|
const init_data = await initPage({ props: props, responsive: responsiveRender.value });
|
|
177
|
-
if (!dataProfile.value?.
|
|
178
|
+
if (!dataProfile.value?.phone && dataProfile.value?.user_type == 'tenant') {
|
|
178
179
|
emit('error:noPhoneTenant');
|
|
179
180
|
routerPush(PAGE.NOT_TENANT_PHONE);
|
|
180
181
|
}
|
|
@@ -193,6 +194,9 @@ const handleCloseBtn = () => {
|
|
|
193
194
|
emit('close');
|
|
194
195
|
phoneNumpadRef.value?.closePhoneNumpad();
|
|
195
196
|
};
|
|
197
|
+
const backToHome = () => {
|
|
198
|
+
phoneNumpadRef.value?.closePhoneNumpad();
|
|
199
|
+
};
|
|
196
200
|
let __VLS_exposed;
|
|
197
201
|
defineExpose({
|
|
198
202
|
get unreadCount() {
|
|
@@ -213,6 +217,7 @@ defineExpose({
|
|
|
213
217
|
endCall: () => callingRef.value?.endCall(),
|
|
214
218
|
openSettings,
|
|
215
219
|
initData: (data) => handleExposeInit(data),
|
|
220
|
+
backToHome,
|
|
216
221
|
});
|
|
217
222
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
|
218
223
|
const __VLS_defaults = {
|
|
@@ -438,9 +443,20 @@ else {
|
|
|
438
443
|
__VLS_asFunctionalElement(__VLS_elements.p, __VLS_elements.p)({
|
|
439
444
|
...{ class: "text-xl font-semibold text-left text-chat-haze-900" },
|
|
440
445
|
});
|
|
441
|
-
(__VLS_ctx.currentPageConfig.backTitle
|
|
442
|
-
|
|
443
|
-
|
|
446
|
+
if (__VLS_ctx.currentPageConfig.backTitle != 'logo') {
|
|
447
|
+
// @ts-ignore
|
|
448
|
+
[currentPageConfig,];
|
|
449
|
+
__VLS_asFunctionalElement(__VLS_elements.span, __VLS_elements.span)({});
|
|
450
|
+
(__VLS_ctx.currentPageConfig.backTitle ?? '');
|
|
451
|
+
// @ts-ignore
|
|
452
|
+
[currentPageConfig,];
|
|
453
|
+
}
|
|
454
|
+
else {
|
|
455
|
+
__VLS_asFunctionalElement(__VLS_elements.img)({
|
|
456
|
+
...{ class: "h-7" },
|
|
457
|
+
src: "@/assets/images/logo-1.png",
|
|
458
|
+
});
|
|
459
|
+
}
|
|
444
460
|
__VLS_asFunctionalElement(__VLS_elements.p, __VLS_elements.p)({
|
|
445
461
|
...{ class: "text-sm font-medium text-chat-haze-900" },
|
|
446
462
|
});
|
|
@@ -460,7 +476,7 @@ else {
|
|
|
460
476
|
__VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
|
|
461
477
|
...{ class: "font-medium text-gray-700" },
|
|
462
478
|
});
|
|
463
|
-
(__VLS_ctx.phoneNumberFormat(__VLS_ctx.dataProfile?.
|
|
479
|
+
(__VLS_ctx.phoneNumberFormat(__VLS_ctx.dataProfile?.phone ?? '') ?? '');
|
|
464
480
|
// @ts-ignore
|
|
465
481
|
[dataProfile, phoneNumberFormat,];
|
|
466
482
|
}
|
|
@@ -884,6 +900,7 @@ else {
|
|
|
884
900
|
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
|
885
901
|
/** @type {__VLS_StyleScopedClasses['text-left']} */ ;
|
|
886
902
|
/** @type {__VLS_StyleScopedClasses['text-chat-haze-900']} */ ;
|
|
903
|
+
/** @type {__VLS_StyleScopedClasses['h-7']} */ ;
|
|
887
904
|
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
|
888
905
|
/** @type {__VLS_StyleScopedClasses['font-medium']} */ ;
|
|
889
906
|
/** @type {__VLS_StyleScopedClasses['text-chat-haze-900']} */ ;
|
|
@@ -81,6 +81,10 @@ declare const _default: import("vue").DefineComponent<__VLS_PublicProps, {
|
|
|
81
81
|
conversation_id?: any;
|
|
82
82
|
is_unknown?: string | undefined;
|
|
83
83
|
} | undefined) => Promise<void>;
|
|
84
|
+
handleTabChange: (tab: any, option?: {
|
|
85
|
+
hideCheckHasReceiveId?: boolean | undefined;
|
|
86
|
+
hideLoading?: boolean | undefined;
|
|
87
|
+
} | undefined) => Promise<void>;
|
|
84
88
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
85
89
|
"update:receiverId": (value: any) => any;
|
|
86
90
|
} & {
|
|
@@ -73,7 +73,7 @@ const getData = async (data, option) => {
|
|
|
73
73
|
const tab_value = option?.tab ?? activeTabs.value;
|
|
74
74
|
if (!option?.hideLoading)
|
|
75
75
|
isLoadingSearch.value = true;
|
|
76
|
-
if (option?.reset) {
|
|
76
|
+
if (option?.reset && !data?.search) {
|
|
77
77
|
let cache = false;
|
|
78
78
|
if (tab_value == TAB_VALUE.ALL) {
|
|
79
79
|
cache = getDataCacheAll();
|
|
@@ -112,7 +112,8 @@ const getAllList = async (tab_value) => {
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
else if (tab_value == TAB_VALUE.UNKNOWN) {
|
|
115
|
-
while (paramsUnknown.value.page < pageCountUnknown.value &&
|
|
115
|
+
while (paramsUnknown.value.page < pageCountUnknown.value &&
|
|
116
|
+
!scrollEventRef.value?.canScroll()) {
|
|
116
117
|
let page = paramsUnknown.value.page + 1;
|
|
117
118
|
await getData({ page }, { tab: tab_value });
|
|
118
119
|
}
|
|
@@ -153,6 +154,7 @@ const handleScroll = useDebounce(async () => {
|
|
|
153
154
|
}
|
|
154
155
|
}, 200);
|
|
155
156
|
const selectUser = (user) => {
|
|
157
|
+
handleReadMessage();
|
|
156
158
|
emit('selectReceiver', user);
|
|
157
159
|
};
|
|
158
160
|
const handleReadMessage = () => {
|
|
@@ -204,7 +206,8 @@ const __VLS_exposed = {
|
|
|
204
206
|
listConversationsAll,
|
|
205
207
|
listConversationsUnknown,
|
|
206
208
|
getCurrentConversation,
|
|
207
|
-
initData
|
|
209
|
+
initData,
|
|
210
|
+
handleTabChange
|
|
208
211
|
};
|
|
209
212
|
defineExpose(__VLS_exposed);
|
|
210
213
|
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
|
@@ -303,14 +306,18 @@ const __VLS_18 = __VLS_asFunctionalComponent(ScrollEvent, new ScrollEvent({
|
|
|
303
306
|
...{ 'onGetDataBottom': {} },
|
|
304
307
|
ref: "scrollEventRef",
|
|
305
308
|
...{ class: "h-full overflow-auto" },
|
|
306
|
-
disabled: (__VLS_ctx.activeTabs == __VLS_ctx.TAB_VALUE.ALL
|
|
309
|
+
disabled: (__VLS_ctx.activeTabs == __VLS_ctx.TAB_VALUE.ALL
|
|
310
|
+
? __VLS_ctx.paramsAll.page >= __VLS_ctx.pageCountAll
|
|
311
|
+
: __VLS_ctx.paramsUnknown.page >= __VLS_ctx.pageCountUnknown),
|
|
307
312
|
bottom: true,
|
|
308
313
|
}));
|
|
309
314
|
const __VLS_19 = __VLS_18({
|
|
310
315
|
...{ 'onGetDataBottom': {} },
|
|
311
316
|
ref: "scrollEventRef",
|
|
312
317
|
...{ class: "h-full overflow-auto" },
|
|
313
|
-
disabled: (__VLS_ctx.activeTabs == __VLS_ctx.TAB_VALUE.ALL
|
|
318
|
+
disabled: (__VLS_ctx.activeTabs == __VLS_ctx.TAB_VALUE.ALL
|
|
319
|
+
? __VLS_ctx.paramsAll.page >= __VLS_ctx.pageCountAll
|
|
320
|
+
: __VLS_ctx.paramsUnknown.page >= __VLS_ctx.pageCountUnknown),
|
|
314
321
|
bottom: true,
|
|
315
322
|
}, ...__VLS_functionalComponentArgsRest(__VLS_18));
|
|
316
323
|
let __VLS_21;
|
|
@@ -113,12 +113,30 @@ if (__VLS_ctx.showNewCustomer) {
|
|
|
113
113
|
__VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
|
|
114
114
|
...{ class: "chat-padding-page" },
|
|
115
115
|
});
|
|
116
|
+
const __VLS_13 = {}.TransitionGroup;
|
|
117
|
+
/** @type {[typeof __VLS_components.TransitionGroup, typeof __VLS_components.transitionGroup, typeof __VLS_components.TransitionGroup, typeof __VLS_components.transitionGroup, ]} */ ;
|
|
118
|
+
// @ts-ignore
|
|
119
|
+
TransitionGroup;
|
|
120
|
+
// @ts-ignore
|
|
121
|
+
const __VLS_14 = __VLS_asFunctionalComponent(__VLS_13, new __VLS_13({
|
|
122
|
+
name: (__VLS_ctx.isLoading ? '' : 'message'),
|
|
123
|
+
tag: "div",
|
|
124
|
+
...{ class: "chat-list" },
|
|
125
|
+
}));
|
|
126
|
+
const __VLS_15 = __VLS_14({
|
|
127
|
+
name: (__VLS_ctx.isLoading ? '' : 'message'),
|
|
128
|
+
tag: "div",
|
|
129
|
+
...{ class: "chat-list" },
|
|
130
|
+
}, ...__VLS_functionalComponentArgsRest(__VLS_14));
|
|
131
|
+
const { default: __VLS_17 } = __VLS_16.slots;
|
|
132
|
+
// @ts-ignore
|
|
133
|
+
[isLoading,];
|
|
116
134
|
for (const [item, index] of __VLS_getVForSourceType((__VLS_ctx.message))) {
|
|
117
135
|
// @ts-ignore
|
|
118
136
|
[message,];
|
|
119
137
|
/** @type {[typeof ChatMessageItem, ]} */ ;
|
|
120
138
|
// @ts-ignore
|
|
121
|
-
const
|
|
139
|
+
const __VLS_18 = __VLS_asFunctionalComponent(ChatMessageItem, new ChatMessageItem({
|
|
122
140
|
...{ 'onCallAgain': {} },
|
|
123
141
|
message: (item),
|
|
124
142
|
index: (index),
|
|
@@ -131,7 +149,7 @@ for (const [item, index] of __VLS_getVForSourceType((__VLS_ctx.message))) {
|
|
|
131
149
|
isChatFinished: (__VLS_ctx.isChatFinished(index)),
|
|
132
150
|
isChatStart: (__VLS_ctx.isChatStart(index)),
|
|
133
151
|
}));
|
|
134
|
-
const
|
|
152
|
+
const __VLS_19 = __VLS_18({
|
|
135
153
|
...{ 'onCallAgain': {} },
|
|
136
154
|
message: (item),
|
|
137
155
|
index: (index),
|
|
@@ -143,17 +161,18 @@ for (const [item, index] of __VLS_getVForSourceType((__VLS_ctx.message))) {
|
|
|
143
161
|
isEndMessage: (__VLS_ctx.isEndMessage(index)),
|
|
144
162
|
isChatFinished: (__VLS_ctx.isChatFinished(index)),
|
|
145
163
|
isChatStart: (__VLS_ctx.isChatStart(index)),
|
|
146
|
-
}, ...__VLS_functionalComponentArgsRest(
|
|
147
|
-
let
|
|
148
|
-
let
|
|
149
|
-
const
|
|
164
|
+
}, ...__VLS_functionalComponentArgsRest(__VLS_18));
|
|
165
|
+
let __VLS_21;
|
|
166
|
+
let __VLS_22;
|
|
167
|
+
const __VLS_23 = ({ callAgain: {} },
|
|
150
168
|
{ onCallAgain: (...[$event]) => {
|
|
151
169
|
__VLS_ctx.emit('callBack');
|
|
152
170
|
// @ts-ignore
|
|
153
171
|
[data, message, responsive, dataProfile, shouldShowAvatar, isEndMessage, isChatFinished, isChatStart, emit,];
|
|
154
172
|
} });
|
|
155
|
-
var
|
|
173
|
+
var __VLS_20;
|
|
156
174
|
}
|
|
175
|
+
var __VLS_16;
|
|
157
176
|
var __VLS_2;
|
|
158
177
|
/** @type {__VLS_StyleScopedClasses['relative']} */ ;
|
|
159
178
|
/** @type {__VLS_StyleScopedClasses['overflow-hidden']} */ ;
|
|
@@ -167,6 +186,7 @@ var __VLS_2;
|
|
|
167
186
|
/** @type {__VLS_StyleScopedClasses['chat-padding-page']} */ ;
|
|
168
187
|
/** @type {__VLS_StyleScopedClasses['h-full']} */ ;
|
|
169
188
|
/** @type {__VLS_StyleScopedClasses['chat-padding-page']} */ ;
|
|
189
|
+
/** @type {__VLS_StyleScopedClasses['chat-list']} */ ;
|
|
170
190
|
// @ts-ignore
|
|
171
191
|
var __VLS_7 = __VLS_6;
|
|
172
192
|
const __VLS_export = (await import('vue')).defineComponent({
|
|
@@ -26,15 +26,17 @@ const callTitle = computed(() => {
|
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
else {
|
|
29
|
-
if (props.message?.call_status == PLIVO_CALL_STATUS.
|
|
29
|
+
if (props.message?.call_status == PLIVO_CALL_STATUS.BUSY ||
|
|
30
|
+
props.message?.call_status == PLIVO_CALL_STATUS.CANCEL) {
|
|
31
|
+
return 'Call canceled';
|
|
32
|
+
}
|
|
33
|
+
else if (props.message?.call_status == PLIVO_CALL_STATUS.CONNECT_FAILED ||
|
|
30
34
|
props.message?.call_status == PLIVO_CALL_STATUS.TIME_OUT ||
|
|
31
|
-
props.message?.call_status == PLIVO_CALL_STATUS.
|
|
32
|
-
props.message?.call_status == PLIVO_CALL_STATUS.NO_ANSWER ||
|
|
33
|
-
props.message?.call_status == PLIVO_CALL_STATUS.BUSY) {
|
|
35
|
+
props.message?.call_status == PLIVO_CALL_STATUS.NO_ANSWER) {
|
|
34
36
|
return 'Call missed';
|
|
35
37
|
}
|
|
36
38
|
else if (props.message?.call_status == PLIVO_CALL_STATUS.CALL_END) {
|
|
37
|
-
return '
|
|
39
|
+
return 'Incoming audio call';
|
|
38
40
|
}
|
|
39
41
|
}
|
|
40
42
|
return '';
|
|
@@ -88,7 +90,7 @@ let __VLS_elements;
|
|
|
88
90
|
let __VLS_components;
|
|
89
91
|
let __VLS_directives;
|
|
90
92
|
__VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
|
|
91
|
-
...{ class: "flex items-end mt-1" },
|
|
93
|
+
...{ class: "flex items-end mt-1 relative" },
|
|
92
94
|
...{ class: ({
|
|
93
95
|
'mt-2': __VLS_ctx.shouldShowAvatar,
|
|
94
96
|
'flex-col justify-end pl-[60px]': __VLS_ctx.isMyMessage,
|
|
@@ -106,26 +108,36 @@ if (__VLS_ctx.message.state != __VLS_ctx.MessageState.Sending || __VLS_ctx.isMyM
|
|
|
106
108
|
if (__VLS_ctx.shouldShowAvatar) {
|
|
107
109
|
// @ts-ignore
|
|
108
110
|
[shouldShowAvatar,];
|
|
111
|
+
__VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
|
|
112
|
+
...{ class: "" },
|
|
113
|
+
...{ class: (__VLS_ctx.responsive == 'mobile' ? 'w-8' : 'w-12') },
|
|
114
|
+
});
|
|
115
|
+
// @ts-ignore
|
|
116
|
+
[responsive,];
|
|
109
117
|
/** @type {[typeof Avatar, ]} */ ;
|
|
110
118
|
// @ts-ignore
|
|
111
119
|
const __VLS_0 = __VLS_asFunctionalComponent(Avatar, new Avatar({
|
|
112
|
-
...{ class: "shrink-0" },
|
|
120
|
+
...{ class: "shrink-0 absolute top-0" },
|
|
113
121
|
src: (__VLS_ctx.data?.avatar ?? ''),
|
|
114
122
|
color: (__VLS_ctx.data?.color),
|
|
115
123
|
name: (__VLS_ctx.data?.username),
|
|
116
124
|
size: (__VLS_ctx.responsive == 'mobile' ? 'sm' : 'md'),
|
|
117
|
-
...{ class: ({
|
|
125
|
+
...{ class: ({
|
|
126
|
+
'translate-y-[-2px]': __VLS_ctx.responsive == 'mobile',
|
|
127
|
+
}) },
|
|
118
128
|
}));
|
|
119
129
|
const __VLS_1 = __VLS_0({
|
|
120
|
-
...{ class: "shrink-0" },
|
|
130
|
+
...{ class: "shrink-0 absolute top-0" },
|
|
121
131
|
src: (__VLS_ctx.data?.avatar ?? ''),
|
|
122
132
|
color: (__VLS_ctx.data?.color),
|
|
123
133
|
name: (__VLS_ctx.data?.username),
|
|
124
134
|
size: (__VLS_ctx.responsive == 'mobile' ? 'sm' : 'md'),
|
|
125
|
-
...{ class: ({
|
|
135
|
+
...{ class: ({
|
|
136
|
+
'translate-y-[-2px]': __VLS_ctx.responsive == 'mobile',
|
|
137
|
+
}) },
|
|
126
138
|
}, ...__VLS_functionalComponentArgsRest(__VLS_0));
|
|
127
139
|
// @ts-ignore
|
|
128
|
-
[
|
|
140
|
+
[responsive, responsive, data, data, data,];
|
|
129
141
|
}
|
|
130
142
|
else {
|
|
131
143
|
__VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
|
|
@@ -150,7 +162,7 @@ if (__VLS_ctx.message.state != __VLS_ctx.MessageState.Sending || __VLS_ctx.isMyM
|
|
|
150
162
|
'ml-auto': __VLS_ctx.isMyMessage,
|
|
151
163
|
'mr-auto': !__VLS_ctx.isMyMessage,
|
|
152
164
|
'max-w-[280px]': __VLS_ctx.responsive == 'mobile',
|
|
153
|
-
'max-w-[480px]': __VLS_ctx.responsive !== 'mobile'
|
|
165
|
+
'max-w-[480px]': __VLS_ctx.responsive !== 'mobile'
|
|
154
166
|
}) },
|
|
155
167
|
});
|
|
156
168
|
// @ts-ignore
|
|
@@ -222,7 +234,7 @@ if (__VLS_ctx.message.state != __VLS_ctx.MessageState.Sending || __VLS_ctx.isMyM
|
|
|
222
234
|
[message,];
|
|
223
235
|
__VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({});
|
|
224
236
|
__VLS_asFunctionalElement(__VLS_elements.div)({
|
|
225
|
-
...{ style: ({ wordBreak: 'break-word' }) },
|
|
237
|
+
...{ style: ({ wordBreak: 'break-word', whiteSpace: 'pre-line' }) },
|
|
226
238
|
});
|
|
227
239
|
__VLS_asFunctionalDirective(__VLS_directives.vHtml)(null, { ...__VLS_directiveBindingRestFields, value: (__VLS_ctx.message.message) }, null, null);
|
|
228
240
|
// @ts-ignore
|
|
@@ -264,7 +276,7 @@ if (__VLS_ctx.message.state != __VLS_ctx.MessageState.Sending || __VLS_ctx.isMyM
|
|
|
264
276
|
// @ts-ignore
|
|
265
277
|
[message, message, MessageState, isLastMessage, getMessageStateText,];
|
|
266
278
|
__VLS_asFunctionalElement(__VLS_elements.span, __VLS_elements.span)({
|
|
267
|
-
...{ class: "text-chat-haze-
|
|
279
|
+
...{ class: "text-chat-haze-400 text-xs mt-1" },
|
|
268
280
|
...{ class: ({ '!text-chat-error': __VLS_ctx.message.state == __VLS_ctx.MessageState.Failed }) },
|
|
269
281
|
});
|
|
270
282
|
// @ts-ignore
|
|
@@ -275,17 +287,20 @@ if (__VLS_ctx.message.state != __VLS_ctx.MessageState.Sending || __VLS_ctx.isMyM
|
|
|
275
287
|
}
|
|
276
288
|
}
|
|
277
289
|
}
|
|
290
|
+
/** @type {__VLS_StyleScopedClasses['']} */ ;
|
|
278
291
|
/** @type {__VLS_StyleScopedClasses['flex']} */ ;
|
|
279
292
|
/** @type {__VLS_StyleScopedClasses['items-end']} */ ;
|
|
280
293
|
/** @type {__VLS_StyleScopedClasses['mt-1']} */ ;
|
|
294
|
+
/** @type {__VLS_StyleScopedClasses['relative']} */ ;
|
|
281
295
|
/** @type {__VLS_StyleScopedClasses['mt-2']} */ ;
|
|
282
296
|
/** @type {__VLS_StyleScopedClasses['flex-col']} */ ;
|
|
283
297
|
/** @type {__VLS_StyleScopedClasses['justify-end']} */ ;
|
|
284
298
|
/** @type {__VLS_StyleScopedClasses['pl-[60px]']} */ ;
|
|
285
299
|
/** @type {__VLS_StyleScopedClasses['gap-2']} */ ;
|
|
286
300
|
/** @type {__VLS_StyleScopedClasses['shrink-0']} */ ;
|
|
301
|
+
/** @type {__VLS_StyleScopedClasses['absolute']} */ ;
|
|
302
|
+
/** @type {__VLS_StyleScopedClasses['top-0']} */ ;
|
|
287
303
|
/** @type {__VLS_StyleScopedClasses['translate-y-[-2px]']} */ ;
|
|
288
|
-
/** @type {__VLS_StyleScopedClasses['!-translate-y-[26px]']} */ ;
|
|
289
304
|
/** @type {__VLS_StyleScopedClasses['shrink-0']} */ ;
|
|
290
305
|
/** @type {__VLS_StyleScopedClasses['px-3']} */ ;
|
|
291
306
|
/** @type {__VLS_StyleScopedClasses['py-2']} */ ;
|
|
@@ -331,7 +346,7 @@ if (__VLS_ctx.message.state != __VLS_ctx.MessageState.Sending || __VLS_ctx.isMyM
|
|
|
331
346
|
/** @type {__VLS_StyleScopedClasses['font-semibold']} */ ;
|
|
332
347
|
/** @type {__VLS_StyleScopedClasses['text-sm']} */ ;
|
|
333
348
|
/** @type {__VLS_StyleScopedClasses['mt-1']} */ ;
|
|
334
|
-
/** @type {__VLS_StyleScopedClasses['text-chat-haze-
|
|
349
|
+
/** @type {__VLS_StyleScopedClasses['text-chat-haze-400']} */ ;
|
|
335
350
|
/** @type {__VLS_StyleScopedClasses['text-xs']} */ ;
|
|
336
351
|
/** @type {__VLS_StyleScopedClasses['mt-1']} */ ;
|
|
337
352
|
/** @type {__VLS_StyleScopedClasses['!text-chat-error']} */ ;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import 'vue3-emoji-picker/css';
|
|
2
|
+
type __VLS_ModelProps = {
|
|
3
|
+
'file'?: Blob | null;
|
|
4
|
+
'link'?: string;
|
|
5
|
+
};
|
|
6
|
+
declare const _default: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
7
|
+
"update:file": (value: Blob | null | undefined) => any;
|
|
8
|
+
"update:link": (value: string | undefined) => any;
|
|
9
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
|
|
10
|
+
"onUpdate:file"?: ((value: Blob | null | undefined) => any) | undefined;
|
|
11
|
+
"onUpdate:link"?: ((value: string | undefined) => any) | undefined;
|
|
12
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/// <reference types="C:/phonghq/go-chat-v2/node_modules/.vue-global-types/vue_3.5_0.d.ts" />
|
|
2
|
+
import 'vue3-emoji-picker/css';
|
|
3
|
+
import { ref, onMounted, onUnmounted } from 'vue';
|
|
4
|
+
// type Props = {
|
|
5
|
+
// data: IResUser | null
|
|
6
|
+
// responsive: PAGE_RESPONSIVE
|
|
7
|
+
// }
|
|
8
|
+
// const props = withDefaults(defineProps<Props>(), {})
|
|
9
|
+
// const emit = defineEmits<{
|
|
10
|
+
// (e: 'sendMessage', val: IResMessage): void
|
|
11
|
+
// (e: 'focus'): void
|
|
12
|
+
// }>()
|
|
13
|
+
const ChatModeOptions = [
|
|
14
|
+
{ value: '0', label: 'Go Chat' },
|
|
15
|
+
{ value: '1', label: 'Go sms' }
|
|
16
|
+
];
|
|
17
|
+
const dropFile = defineModel('file');
|
|
18
|
+
const dropFileLink = defineModel('link');
|
|
19
|
+
let dragCounter = 0;
|
|
20
|
+
onMounted(() => {
|
|
21
|
+
window.addEventListener('dragenter', onWindowDragEnter);
|
|
22
|
+
window.addEventListener('dragleave', onWindowDragLeave);
|
|
23
|
+
window.addEventListener('drop', onWindowDrop);
|
|
24
|
+
window.addEventListener('dragover', onWindowDragOver);
|
|
25
|
+
});
|
|
26
|
+
onUnmounted(() => {
|
|
27
|
+
window.removeEventListener('dragenter', onWindowDragEnter);
|
|
28
|
+
window.removeEventListener('dragleave', onWindowDragLeave);
|
|
29
|
+
window.removeEventListener('drop', onWindowDrop);
|
|
30
|
+
window.removeEventListener('dragover', onWindowDragOver);
|
|
31
|
+
});
|
|
32
|
+
const mode = ref('0');
|
|
33
|
+
const isHover = ref(false);
|
|
34
|
+
const showDropzone = ref(false);
|
|
35
|
+
const onWindowDragEnter = (e) => {
|
|
36
|
+
if (!e.dataTransfer?.types.includes('Files'))
|
|
37
|
+
return;
|
|
38
|
+
dragCounter++;
|
|
39
|
+
showDropzone.value = true;
|
|
40
|
+
};
|
|
41
|
+
const onWindowDragLeave = () => {
|
|
42
|
+
dragCounter--;
|
|
43
|
+
if (dragCounter === 0) {
|
|
44
|
+
showDropzone.value = false;
|
|
45
|
+
isHover.value = false;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const isFileDrag = (e) => {
|
|
49
|
+
return e.dataTransfer?.types.includes('Files');
|
|
50
|
+
};
|
|
51
|
+
const onWindowDragOver = (e) => {
|
|
52
|
+
if (!isFileDrag(e))
|
|
53
|
+
return;
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
};
|
|
56
|
+
const onWindowDrop = (e) => {
|
|
57
|
+
if (!isFileDrag(e))
|
|
58
|
+
return;
|
|
59
|
+
e.preventDefault();
|
|
60
|
+
dragCounter = 0;
|
|
61
|
+
showDropzone.value = false;
|
|
62
|
+
isHover.value = false;
|
|
63
|
+
};
|
|
64
|
+
const onDrop = (e) => {
|
|
65
|
+
isHover.value = false;
|
|
66
|
+
const files = e.dataTransfer?.files;
|
|
67
|
+
if (files)
|
|
68
|
+
handleFiles(files);
|
|
69
|
+
};
|
|
70
|
+
const handleFiles = (files) => {
|
|
71
|
+
if (files.length) {
|
|
72
|
+
const file_path = URL.createObjectURL(files[0]);
|
|
73
|
+
dropFile.value = files[0];
|
|
74
|
+
dropFileLink.value = file_path;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
debugger; /* PartiallyEnd: #3632/scriptSetup.vue */
|
|
78
|
+
const __VLS_modelEmit = defineEmits();
|
|
79
|
+
const __VLS_ctx = {
|
|
80
|
+
...{},
|
|
81
|
+
...{},
|
|
82
|
+
...{},
|
|
83
|
+
...{},
|
|
84
|
+
...{},
|
|
85
|
+
};
|
|
86
|
+
let __VLS_elements;
|
|
87
|
+
let __VLS_components;
|
|
88
|
+
let __VLS_directives;
|
|
89
|
+
if (__VLS_ctx.showDropzone) {
|
|
90
|
+
// @ts-ignore
|
|
91
|
+
[showDropzone,];
|
|
92
|
+
__VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
|
|
93
|
+
...{ onDragover: (...[$event]) => {
|
|
94
|
+
if (!(__VLS_ctx.showDropzone))
|
|
95
|
+
return;
|
|
96
|
+
__VLS_ctx.isHover = true;
|
|
97
|
+
// @ts-ignore
|
|
98
|
+
[isHover,];
|
|
99
|
+
} },
|
|
100
|
+
...{ onDragleave: (...[$event]) => {
|
|
101
|
+
if (!(__VLS_ctx.showDropzone))
|
|
102
|
+
return;
|
|
103
|
+
__VLS_ctx.isHover = false;
|
|
104
|
+
// @ts-ignore
|
|
105
|
+
[isHover,];
|
|
106
|
+
} },
|
|
107
|
+
...{ onDrop: (__VLS_ctx.onDrop) },
|
|
108
|
+
...{ class: "dropzone" },
|
|
109
|
+
...{ class: ({ hover: __VLS_ctx.isHover }) },
|
|
110
|
+
});
|
|
111
|
+
// @ts-ignore
|
|
112
|
+
[isHover, onDrop,];
|
|
113
|
+
__VLS_asFunctionalElement(__VLS_elements.div, __VLS_elements.div)({
|
|
114
|
+
...{ class: "dropzone_border" },
|
|
115
|
+
});
|
|
116
|
+
__VLS_asFunctionalElement(__VLS_elements.p, __VLS_elements.p)({
|
|
117
|
+
...{ class: "text-chat-haze-500 text-xl font-medium" },
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/** @type {__VLS_StyleScopedClasses['dropzone']} */ ;
|
|
121
|
+
/** @type {__VLS_StyleScopedClasses['hover']} */ ;
|
|
122
|
+
/** @type {__VLS_StyleScopedClasses['dropzone_border']} */ ;
|
|
123
|
+
/** @type {__VLS_StyleScopedClasses['text-chat-haze-500']} */ ;
|
|
124
|
+
/** @type {__VLS_StyleScopedClasses['text-xl']} */ ;
|
|
125
|
+
/** @type {__VLS_StyleScopedClasses['font-medium']} */ ;
|
|
126
|
+
const __VLS_export = (await import('vue')).defineComponent({
|
|
127
|
+
__typeEmits: {},
|
|
128
|
+
__typeProps: {},
|
|
129
|
+
});
|
|
130
|
+
export default {};
|
|
@@ -10,6 +10,7 @@ declare const _default: import("vue").DefineComponent<Props, {
|
|
|
10
10
|
getData: (data?: any) => Promise<void>;
|
|
11
11
|
handleGetMessage: (option?: {
|
|
12
12
|
resetList?: boolean | undefined;
|
|
13
|
+
is_mqtt?: boolean | undefined;
|
|
13
14
|
} | undefined) => Promise<void>;
|
|
14
15
|
infoUser: import("vue").ShallowRef<IResUser | null>;
|
|
15
16
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|