vue-parley 4.2.0 → 4.3.0
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/chat.css +57 -35
- package/dist/chunks/{Call-D48LfnDv.cjs → Call-CDT92h1x.cjs} +62 -57
- package/dist/chunks/Call-CDT92h1x.cjs.map +1 -0
- package/dist/chunks/{Call-7lGaUPcp.mjs → Call-jiZGoCtR.mjs} +62 -57
- package/dist/chunks/Call-jiZGoCtR.mjs.map +1 -0
- package/dist/chunks/{index-C8N5eSUe.mjs → index-CHFzAdVI.mjs} +150 -145
- package/dist/chunks/index-CHFzAdVI.mjs.map +1 -0
- package/dist/chunks/{index-DrcpfLUy.cjs → index-efTNVoBF.cjs} +131 -126
- package/dist/chunks/index-efTNVoBF.cjs.map +1 -0
- package/dist/chunks/{session-B8Q7eiUV.mjs → session-CN61aKfb.mjs} +3 -2
- package/dist/chunks/{session-BwgUu6F3.cjs.map → session-CN61aKfb.mjs.map} +1 -1
- package/dist/chunks/{session-BwgUu6F3.cjs → session-DLxWccUj.cjs} +3 -2
- package/dist/chunks/{session-B8Q7eiUV.mjs.map → session-DLxWccUj.cjs.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +19 -19
- package/dist/types/app/components/ChatPage.vue.d.ts.map +1 -1
- package/dist/types/app/components/call/Call.vue.d.ts.map +1 -1
- package/dist/types/app/components/chat/ChatBubble.vue.d.ts.map +1 -1
- package/dist/types/app/components/chat/ChatInput.vue.d.ts.map +1 -1
- package/dist/types/app/components/chat/ChatMessages.vue.d.ts.map +1 -1
- package/dist/types/app/components/chat/ChatPageBar.vue.d.ts.map +1 -1
- package/dist/types/app/components/chat/ChatProfileOverview.vue.d.ts +5 -1
- package/dist/types/app/components/chat/ChatProfileOverview.vue.d.ts.map +1 -1
- package/dist/types/app/components/chat/ChatView.vue.d.ts.map +1 -1
- package/dist/types/app/components/chat/chat-bubbles/BubbleOptions.vue.d.ts.map +1 -1
- package/dist/types/app/components/chat/chat-bubbles/MediaViewer.vue.d.ts.map +1 -1
- package/dist/types/app/components/chat/chat-input/InputAttachement.vue.d.ts.map +1 -1
- package/dist/types/app/components/chat/contact/ChatList.vue.d.ts.map +1 -1
- package/dist/types/app/components/chat/messages/FloatingDateHeader.vue.d.ts +0 -1
- package/dist/types/app/components/chat/messages/FloatingDateHeader.vue.d.ts.map +1 -1
- package/dist/types/app/components/general/ResponsiveDialog.vue.d.ts.map +1 -1
- package/dist/types/app/composables/call/session.d.ts +2 -0
- package/dist/types/app/composables/call/session.d.ts.map +1 -1
- package/dist/types/app/composables/useFlippedVirtualScroll.d.ts +0 -1
- package/dist/types/app/composables/useFlippedVirtualScroll.d.ts.map +1 -1
- package/dist/types/app/stores/callStore.d.ts +9 -3
- package/dist/types/app/stores/callStore.d.ts.map +1 -1
- package/dist/types/i18n/locales/index.d.ts +10 -0
- package/dist/types/i18n/locales/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/Call-7lGaUPcp.mjs.map +0 -1
- package/dist/chunks/Call-D48LfnDv.cjs.map +0 -1
- package/dist/chunks/index-C8N5eSUe.mjs.map +0 -1
- package/dist/chunks/index-DrcpfLUy.cjs.map +0 -1
|
@@ -191,7 +191,7 @@ const general$2 = { "themes": { "light": "Light", "dark": "Dark" }, "all": "All"
|
|
|
191
191
|
const generalEn = {
|
|
192
192
|
general: general$2
|
|
193
193
|
};
|
|
194
|
-
const chat$2 = { "title": "Messages", "filters": { "active": "Active", "ended": "Ended", "online": "Online" }, "info": { "nationalCode": "National code", "phoneNumber": "Phone number", "age": "Age", "ageDisplay": "{year} years", "files": "Files", "media": "Images" }, "lastSeen": "Last seen {time}", "nationalId": "National code", "age": "Age", "ageText": "{years} years", "attachements": "Attachments", "options": { "end": "End", "voiceCall": "Call", "videoCall": "Video" }, "attachementTypes": { "image": "Photo", "file": "File", "voice": "Voice message", "video": "Video", "request": "Request" }, "messageOptions": { "edit": "Edit message", "delete": "Delete message", "copy": "Copy", "select": "Select", "reply": "Reply", "deselect": "Deselect" }, "barOptions": { "endChat": "End conversation", "deleteMessages": "Delete messages" }, "placeholder": "Write...", "chatLocked": "Conversation ended", "noConversationSelected": "No conversation selected yet", "noMessages": "No messages exchanged", "swipeToCancel": "Swipe to cancel", "cancel": "Cancel", "online": "Online", "file": { "calculating": "Calculating", "attachMedia": "Photo or video", "attachFile": "File", "sendImage": "Send image", "sendImages": "Send images", "sendFile": "Send file", "cancel": "Cancel" }, "permissions": { "permissionTitle": "Camera and microphone access", "description": "To join video calls or send voice messages, we need access to your camera and microphone.", "allow": "Allow access", "notNow": "Not now", "retry": "Try again", "mic": { "title": "Microphone access", "description": "We need microphone access to send voice messages and place video calls." }, "cam": { "title": "Camera access", "description": "We need camera access to send video messages and place video calls." }, "micError": { "title": "Your microphone is disabled", "description": "We need microphone permission to send voice messages or place calls." }, "camError": { "title": "Camera access error", "description": "We need camera permission to send video messages or place video calls." }, "screen": { "title": "Screen access", "description": "After tapping confirm, please select the screen or tab you want to share." }, "screenError": { "title": "Screen access error", "description": "Screen capture permission was denied. We need screen access permission to share your screen." } }, "you": "You", "copiedMessage": "Message copied to clipboard.", "editFailed": "Could not edit the message. Please try again.", "deleteFailed": "Could not delete the message. Please try again.", "unreadMessages": "Unread.", "caption": "Caption", "send": "Send", "delete": { "title": "Delete message", "singleMessage": "Are you sure you want to delete this message?", "multipleMessages": "Are you sure you want to delete {count} messages?", "confirm": "Delete", "requestTitle": "Cancel request", "request": "Are you sure you want to cancel this request?" }, "call": { "title": "Call", "you": "You", "deviceDoesntSupport": "Your device does not support this feature.", "errors": { "noMicDevice": "No microphone device detected", "noCameraDevice": "No camera device detected", "cameraDenied": "Camera access denied", "micDenied": "Microphone access denied", "noMicFound": "No microphone found", "micAccessError": "Error accessing microphone", "noCameraFound": "No camera found", "cameraAccessError": "Error accessing camera", "mediaInitError": "Error initializing media devices", "screenShareMobileUnsupported": "Screen sharing is not supported on mobile devices", "screenShareBrowserUnsupported": "Screen sharing is not supported in this browser", "screenShareDenied": "Screen sharing permission denied", "screenAccessError": "Unable to access screen", "screenShareMobileMaybeUnavailable": "Screen sharing may not be available on mobile devices", "screenShareStartFailed": "Failed to start screen sharing", "cameraUnavailable": "Camera not available", "flashlightToggleFailed": "Failed to toggle flashlight" }, "controls": { "endCall": "End call", "minimize": "Minimize", "maximize": "Return to call", "mute": "Mute", "unmute": "Unmute", "cameraOff": "Turn camera off", "cameraOn": "Turn camera on", "shareScreen": "Share screen", "stopSharing": "Stop sharing", "fullscreen": "Full screen", "exitFullscreen": "Exit full screen", "flashlight": "Flashlight", "cameras": "Available cameras", "chooseCamera": "Choose camera", "pauseVideo": "Pause video", "playVideo": "Play video", "nextParticipant": "Show next participant" } }, "board": { "title": "Board", "selectColor": "Select color", "page": "Page {page}", "addPage": "New page", "confirm": "Confirm", "savedSuccessfully": "Image saved successfully." } };
|
|
194
|
+
const chat$2 = { "title": "Messages", "filters": { "active": "Active", "ended": "Ended", "online": "Online" }, "info": { "nationalCode": "National code", "phoneNumber": "Phone number", "age": "Age", "ageDisplay": "{year} years", "files": "Files", "media": "Images" }, "lastSeen": "Last seen {time}", "nationalId": "National code", "age": "Age", "ageText": "{years} years", "attachements": "Attachments", "options": { "end": "End", "voiceCall": "Call", "videoCall": "Video" }, "attachementTypes": { "image": "Photo", "file": "File", "voice": "Voice message", "video": "Video", "request": "Request" }, "messageOptions": { "edit": "Edit message", "delete": "Delete message", "copy": "Copy", "select": "Select", "reply": "Reply", "deselect": "Deselect" }, "barOptions": { "endChat": "End conversation", "deleteMessages": "Delete messages" }, "placeholder": "Write...", "chatLocked": "Conversation ended", "noConversationSelected": "No conversation selected yet", "noMessages": "No messages exchanged", "swipeToCancel": "Swipe to cancel", "cancel": "Cancel", "online": "Online", "file": { "calculating": "Calculating", "attachMedia": "Photo or video", "attachFile": "File", "sendImage": "Send image", "sendImages": "Send images", "sendFile": "Send file", "cancel": "Cancel" }, "permissions": { "permissionTitle": "Camera and microphone access", "description": "To join video calls or send voice messages, we need access to your camera and microphone.", "allow": "Allow access", "notNow": "Not now", "retry": "Try again", "mic": { "title": "Microphone access", "description": "We need microphone access to send voice messages and place video calls." }, "cam": { "title": "Camera access", "description": "We need camera access to send video messages and place video calls." }, "micError": { "title": "Your microphone is disabled", "description": "We need microphone permission to send voice messages or place calls." }, "camError": { "title": "Camera access error", "description": "We need camera permission to send video messages or place video calls." }, "screen": { "title": "Screen access", "description": "After tapping confirm, please select the screen or tab you want to share." }, "screenError": { "title": "Screen access error", "description": "Screen capture permission was denied. We need screen access permission to share your screen." } }, "you": "You", "copiedMessage": "Message copied to clipboard.", "editFailed": "Could not edit the message. Please try again.", "deleteFailed": "Could not delete the message. Please try again.", "unreadMessages": "Unread.", "caption": "Caption", "send": "Send", "delete": { "title": "Delete message", "singleMessage": "Are you sure you want to delete this message?", "multipleMessages": "Are you sure you want to delete {count} messages?", "confirm": "Delete", "requestTitle": "Cancel request", "request": "Are you sure you want to cancel this request?" }, "call": { "title": "Call", "you": "You", "active": "Call active", "participants": "{count} participant | {count} participants", "yourPresentation": "Your presentation", "presentationOf": "Presented by {name}", "cameraIsOff": "Camera is off", "deviceDoesntSupport": "Your device does not support this feature.", "errors": { "noMicDevice": "No microphone device detected", "noCameraDevice": "No camera device detected", "cameraDenied": "Camera access denied", "micDenied": "Microphone access denied", "noMicFound": "No microphone found", "micAccessError": "Error accessing microphone", "noCameraFound": "No camera found", "cameraAccessError": "Error accessing camera", "mediaInitError": "Error initializing media devices", "screenShareMobileUnsupported": "Screen sharing is not supported on mobile devices", "screenShareBrowserUnsupported": "Screen sharing is not supported in this browser", "screenShareDenied": "Screen sharing permission denied", "screenAccessError": "Unable to access screen", "screenShareMobileMaybeUnavailable": "Screen sharing may not be available on mobile devices", "screenShareStartFailed": "Failed to start screen sharing", "cameraUnavailable": "Camera not available", "flashlightToggleFailed": "Failed to toggle flashlight" }, "controls": { "endCall": "End call", "minimize": "Minimize", "maximize": "Return to call", "mute": "Mute", "unmute": "Unmute", "cameraOff": "Turn camera off", "cameraOn": "Turn camera on", "shareScreen": "Share screen", "stopSharing": "Stop sharing", "fullscreen": "Full screen", "exitFullscreen": "Exit full screen", "flashlight": "Flashlight", "cameras": "Available cameras", "chooseCamera": "Choose camera", "pauseVideo": "Pause video", "playVideo": "Play video", "nextParticipant": "Show next participant" } }, "board": { "title": "Board", "selectColor": "Select color", "page": "Page {page}", "addPage": "New page", "confirm": "Confirm", "savedSuccessfully": "Image saved successfully." } };
|
|
195
195
|
const chatEn = {
|
|
196
196
|
chat: chat$2
|
|
197
197
|
};
|
|
@@ -199,7 +199,7 @@ const general$1 = { "themes": { "light": "روشن", "dark": "تاریک" }, "al
|
|
|
199
199
|
const generalFa = {
|
|
200
200
|
general: general$1
|
|
201
201
|
};
|
|
202
|
-
const chat$1 = { "title": "پیام ها", "filters": { "active": "فعال", "ended": "خاتمه یافته", "online": "آنلاین ها" }, "info": { "nationalCode": "کد ملی", "phoneNumber": "شماره تماس", "age": "سن", "ageDisplay": "{year} سال", "files": "فایل ها", "media": "تصاویر" }, "lastSeen": "آخرین بازدید {time}", "nationalId": "کد ملی", "age": "سن", "ageText": "{years} سال", "attachements": "پیوست ها", "options": { "end": "خاتمه", "voiceCall": "تماس", "videoCall": "تصویری" }, "attachementTypes": { "image": "عکس", "file": "فایل", "voice": "پیام صوتی", "video": "ویدیو", "request": "درخواست" }, "messageOptions": { "edit": "ویرایش پیام", "delete": "حذف پیام", "copy": "کپی", "select": "انتخاب", "reply": "پاسخ", "deselect": "لغو انتخاب" }, "barOptions": { "endChat": "خاتمه مکالمه", "deleteMessages": "حذف پیام ها" }, "placeholder": "بنویسید ...", "chatLocked": "گفتگو تمام شده", "noConversationSelected": "هنوز مکالمه ای انتخاب نشده", "noMessages": "هیچ پیامی تبادل نشده", "swipeToCancel": "برای لغو بکشید", "cancel": "لغو", "online": "آنلاین", "file": { "calculating": "در حال محاسبه", "attachMedia": "عکس یا ویدیو", "attachFile": "فایل", "sendImage": "ارسال تصویر", "sendImages": "ارسال تصاویر", "sendFile": "ارسال فایل", "cancel": "انصراف" }, "permissions": { "permissionTitle": "دسترسی دوربین و میکروفون", "description": " برای اینکه بتونی توی تماسهای تصویری شرکت کنی یا پیام صوتی بفرستی، نیاز داریم به دوربین و میکروفونت دسترسی داشته باشیم.", "allow": "تایید دسترسی", "notNow": "الان نه", "retry": "تلاش مجدد", "mic": { "title": "دسترسی میکروفون", "description": "برای ارسال پیام صوتی و برقراری تماس تصویری به دسترسی میکروفون شما نیاز داریم." }, "cam": { "title": "دسترسی دوربین", "description": "برای ارسال پیام ویدیویی و برقراری تماس تصویری به دسترسی دوربین شما نیاز داریم." }, "micError": { "title": "میکروفون شما غیرفعال است", "description": "برای ارسال پیام صوتی یا تماس، نیاز به تایید دسترسی میکروفون داریم." }, "camError": { "title": "خطای دسترسی به دوربین", "description": "برای ارسال پیام و تماس ویدیویی نیاز به تایید دسترسی دوربین داریم." }, "screen": { "title": "دسترسی به صفحه", "description": "بعد از زدن دکمه تایید لطفا صفحه یا زبانه انتخابی خویش را برای به اشتراک گذاری انتخاب نمایید." }, "screenError": { "title": "خطا در دسترسی به صفحه", "description": "دسترسی به تصویر صفحه با خطا مواجه شد. برای اشتراک گذاری تصویر صفحه شما نیازمند تایید دسترسی به صفحه هستیم." } }, "you": "شما", "copiedMessage": "پیام با موفقیت به کلیپ بورد الصاق شد.", "editFailed": "ویرایش پیام انجام نشد. دوباره تلاش کنید.", "deleteFailed": "حذف پیام انجام نشد. دوباره تلاش کنید.", "unreadMessages": "خوانده نشده.", "caption": "کپشن", "send": "ارسال", "delete": { "title": "حذف پیام", "singleMessage": "آیا از حذف پیام اطمینان دارید ؟", "multipleMessages": "آیا از حذف {count} پیام اطمینان دارید؟", "confirm": "حذف", "requestTitle": "لغو درخواست", "request": "آیا از لغو درخواست خود اطمینان دارید ؟" }, "call": { "title": "تماس", "you": "شما", "deviceDoesntSupport": "دستگاه شما از این قابلیت پشتیبانی نمیکند.", "errors": { "noMicDevice": "میکروفونی شناسایی نشد", "noCameraDevice": "دوربینی شناسایی نشد", "cameraDenied": "دسترسی به دوربین رد شد", "micDenied": "دسترسی به میکروفون رد شد", "noMicFound": "میکروفونی یافت نشد", "micAccessError": "خطا در دسترسی به میکروفون", "noCameraFound": "دوربینی یافت نشد", "cameraAccessError": "خطا در دسترسی به دوربین", "mediaInitError": "خطا در راهاندازی دستگاههای رسانهای", "screenShareMobileUnsupported": "اشتراکگذاری صفحه در دستگاههای موبایل پشتیبانی نمیشود", "screenShareBrowserUnsupported": "اشتراکگذاری صفحه در این مرورگر پشتیبانی نمیشود", "screenShareDenied": "دسترسی به اشتراکگذاری صفحه رد شد", "screenAccessError": "امکان دسترسی به صفحه وجود ندارد", "screenShareMobileMaybeUnavailable": "ممکن است اشتراکگذاری صفحه در دستگاههای موبایل در دسترس نباشد", "screenShareStartFailed": "راهاندازی اشتراکگذاری صفحه ناموفق بود", "cameraUnavailable": "دوربین در دسترس نیست", "flashlightToggleFailed": "تغییر حالت چراغ قوه ناموفق بود" }, "controls": { "endCall": "پایان تماس", "minimize": "کوچک کردن", "maximize": "بازگشت به تماس", "mute": "قطع میکروفون", "unmute": "وصل میکروفون", "cameraOff": "خاموش کردن دوربین", "cameraOn": "روشن کردن دوربین", "shareScreen": "اشتراکگذاری صفحه", "stopSharing": "توقف اشتراکگذاری", "fullscreen": "تمام صفحه", "exitFullscreen": "خروج از تمام صفحه", "flashlight": "چراغقوه", "cameras": "دوربینهای موجود", "chooseCamera": "انتخاب دوربین", "pauseVideo": "توقف ویدیو", "playVideo": "پخش ویدیو", "nextParticipant": "نمایش شرکتکننده بعدی" } }, "board": { "title": "تخته", "selectColor": "انتخاب رنگ", "page": "صفحه {page}", "addPage": "صفحه جدید", "confirm": "تایید", "savedSuccessfully": "تصویر با موفقیت ذخیره سازی شد." } };
|
|
202
|
+
const chat$1 = { "title": "پیام ها", "filters": { "active": "فعال", "ended": "خاتمه یافته", "online": "آنلاین ها" }, "info": { "nationalCode": "کد ملی", "phoneNumber": "شماره تماس", "age": "سن", "ageDisplay": "{year} سال", "files": "فایل ها", "media": "تصاویر" }, "lastSeen": "آخرین بازدید {time}", "nationalId": "کد ملی", "age": "سن", "ageText": "{years} سال", "attachements": "پیوست ها", "options": { "end": "خاتمه", "voiceCall": "تماس", "videoCall": "تصویری" }, "attachementTypes": { "image": "عکس", "file": "فایل", "voice": "پیام صوتی", "video": "ویدیو", "request": "درخواست" }, "messageOptions": { "edit": "ویرایش پیام", "delete": "حذف پیام", "copy": "کپی", "select": "انتخاب", "reply": "پاسخ", "deselect": "لغو انتخاب" }, "barOptions": { "endChat": "خاتمه مکالمه", "deleteMessages": "حذف پیام ها" }, "placeholder": "بنویسید ...", "chatLocked": "گفتگو تمام شده", "noConversationSelected": "هنوز مکالمه ای انتخاب نشده", "noMessages": "هیچ پیامی تبادل نشده", "swipeToCancel": "برای لغو بکشید", "cancel": "لغو", "online": "آنلاین", "file": { "calculating": "در حال محاسبه", "attachMedia": "عکس یا ویدیو", "attachFile": "فایل", "sendImage": "ارسال تصویر", "sendImages": "ارسال تصاویر", "sendFile": "ارسال فایل", "cancel": "انصراف" }, "permissions": { "permissionTitle": "دسترسی دوربین و میکروفون", "description": " برای اینکه بتونی توی تماسهای تصویری شرکت کنی یا پیام صوتی بفرستی، نیاز داریم به دوربین و میکروفونت دسترسی داشته باشیم.", "allow": "تایید دسترسی", "notNow": "الان نه", "retry": "تلاش مجدد", "mic": { "title": "دسترسی میکروفون", "description": "برای ارسال پیام صوتی و برقراری تماس تصویری به دسترسی میکروفون شما نیاز داریم." }, "cam": { "title": "دسترسی دوربین", "description": "برای ارسال پیام ویدیویی و برقراری تماس تصویری به دسترسی دوربین شما نیاز داریم." }, "micError": { "title": "میکروفون شما غیرفعال است", "description": "برای ارسال پیام صوتی یا تماس، نیاز به تایید دسترسی میکروفون داریم." }, "camError": { "title": "خطای دسترسی به دوربین", "description": "برای ارسال پیام و تماس ویدیویی نیاز به تایید دسترسی دوربین داریم." }, "screen": { "title": "دسترسی به صفحه", "description": "بعد از زدن دکمه تایید لطفا صفحه یا زبانه انتخابی خویش را برای به اشتراک گذاری انتخاب نمایید." }, "screenError": { "title": "خطا در دسترسی به صفحه", "description": "دسترسی به تصویر صفحه با خطا مواجه شد. برای اشتراک گذاری تصویر صفحه شما نیازمند تایید دسترسی به صفحه هستیم." } }, "you": "شما", "copiedMessage": "پیام با موفقیت به کلیپ بورد الصاق شد.", "editFailed": "ویرایش پیام انجام نشد. دوباره تلاش کنید.", "deleteFailed": "حذف پیام انجام نشد. دوباره تلاش کنید.", "unreadMessages": "خوانده نشده.", "caption": "کپشن", "send": "ارسال", "delete": { "title": "حذف پیام", "singleMessage": "آیا از حذف پیام اطمینان دارید ؟", "multipleMessages": "آیا از حذف {count} پیام اطمینان دارید؟", "confirm": "حذف", "requestTitle": "لغو درخواست", "request": "آیا از لغو درخواست خود اطمینان دارید ؟" }, "call": { "title": "تماس", "you": "شما", "active": "تماس برقرار است", "participants": "{count} شرکتکننده", "yourPresentation": "ارائه شما", "presentationOf": "ارائه {name}", "cameraIsOff": "دوربین خاموش است", "deviceDoesntSupport": "دستگاه شما از این قابلیت پشتیبانی نمیکند.", "errors": { "noMicDevice": "میکروفونی شناسایی نشد", "noCameraDevice": "دوربینی شناسایی نشد", "cameraDenied": "دسترسی به دوربین رد شد", "micDenied": "دسترسی به میکروفون رد شد", "noMicFound": "میکروفونی یافت نشد", "micAccessError": "خطا در دسترسی به میکروفون", "noCameraFound": "دوربینی یافت نشد", "cameraAccessError": "خطا در دسترسی به دوربین", "mediaInitError": "خطا در راهاندازی دستگاههای رسانهای", "screenShareMobileUnsupported": "اشتراکگذاری صفحه در دستگاههای موبایل پشتیبانی نمیشود", "screenShareBrowserUnsupported": "اشتراکگذاری صفحه در این مرورگر پشتیبانی نمیشود", "screenShareDenied": "دسترسی به اشتراکگذاری صفحه رد شد", "screenAccessError": "امکان دسترسی به صفحه وجود ندارد", "screenShareMobileMaybeUnavailable": "ممکن است اشتراکگذاری صفحه در دستگاههای موبایل در دسترس نباشد", "screenShareStartFailed": "راهاندازی اشتراکگذاری صفحه ناموفق بود", "cameraUnavailable": "دوربین در دسترس نیست", "flashlightToggleFailed": "تغییر حالت چراغ قوه ناموفق بود" }, "controls": { "endCall": "پایان تماس", "minimize": "کوچک کردن", "maximize": "بازگشت به تماس", "mute": "قطع میکروفون", "unmute": "وصل میکروفون", "cameraOff": "خاموش کردن دوربین", "cameraOn": "روشن کردن دوربین", "shareScreen": "اشتراکگذاری صفحه", "stopSharing": "توقف اشتراکگذاری", "fullscreen": "تمام صفحه", "exitFullscreen": "خروج از تمام صفحه", "flashlight": "چراغقوه", "cameras": "دوربینهای موجود", "chooseCamera": "انتخاب دوربین", "pauseVideo": "توقف ویدیو", "playVideo": "پخش ویدیو", "nextParticipant": "نمایش شرکتکننده بعدی" } }, "board": { "title": "تخته", "selectColor": "انتخاب رنگ", "page": "صفحه {page}", "addPage": "صفحه جدید", "confirm": "تایید", "savedSuccessfully": "تصویر با موفقیت ذخیره سازی شد." } };
|
|
203
203
|
const chatFa = {
|
|
204
204
|
chat: chat$1
|
|
205
205
|
};
|
|
@@ -575,7 +575,7 @@ const useCallStore = pinia.defineStore("call-modal", () => {
|
|
|
575
575
|
);
|
|
576
576
|
}, 1e3);
|
|
577
577
|
};
|
|
578
|
-
const startCall = (id) => {
|
|
578
|
+
const startCall = (id, { video = true } = {}) => {
|
|
579
579
|
if (isActive.value) {
|
|
580
580
|
isMinimized.value = false;
|
|
581
581
|
return;
|
|
@@ -591,7 +591,7 @@ const useCallStore = pinia.defineStore("call-modal", () => {
|
|
|
591
591
|
channelId.value = id;
|
|
592
592
|
isActive.value = true;
|
|
593
593
|
isMinimized.value = false;
|
|
594
|
-
void Promise.resolve().then(() => require("./session-
|
|
594
|
+
void Promise.resolve().then(() => require("./session-DLxWccUj.cjs")).then(({ createCallSession }) => {
|
|
595
595
|
if (current !== attempt) return;
|
|
596
596
|
const call = createCallSession({
|
|
597
597
|
handlers: callHandlers,
|
|
@@ -601,7 +601,8 @@ const useCallStore = pinia.defineStore("call-modal", () => {
|
|
|
601
601
|
name: () => profileStore.userName ?? "",
|
|
602
602
|
avatar: () => profileStore.userAvatar
|
|
603
603
|
},
|
|
604
|
-
notify: (key) => openToast(t(key), "error")
|
|
604
|
+
notify: (key) => openToast(t(key), "error"),
|
|
605
|
+
video
|
|
605
606
|
});
|
|
606
607
|
session.value = vue.markRaw(call);
|
|
607
608
|
void call.start();
|
|
@@ -1803,7 +1804,7 @@ const _hoisted_6$b = {
|
|
|
1803
1804
|
};
|
|
1804
1805
|
const _hoisted_7$a = { class: "text-chat-muted text-[11px]" };
|
|
1805
1806
|
const _hoisted_8$5 = { class: "w-full flex items-center justify-between mt-0.5" };
|
|
1806
|
-
const _hoisted_9$
|
|
1807
|
+
const _hoisted_9$3 = { class: "flex items-center gap-x-1.5 flex-1 overflow-hidden" };
|
|
1807
1808
|
const _hoisted_10$3 = {
|
|
1808
1809
|
key: 0,
|
|
1809
1810
|
class: "max-w-full truncate text-body-sm flex items-center gap-x-1"
|
|
@@ -1930,7 +1931,7 @@ const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
|
|
|
1930
1931
|
])) : vue.createCommentVNode("", true)
|
|
1931
1932
|
]),
|
|
1932
1933
|
vue.createElementVNode("div", _hoisted_8$5, [
|
|
1933
|
-
vue.createElementVNode("div", _hoisted_9$
|
|
1934
|
+
vue.createElementVNode("div", _hoisted_9$3, [
|
|
1934
1935
|
draft2.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$3, [
|
|
1935
1936
|
vue.createElementVNode("span", _hoisted_11$3, vue.toDisplayString(vue.unref(t)("draft")) + ":", 1),
|
|
1936
1937
|
vue.createVNode(_sfc_main$J, {
|
|
@@ -2092,7 +2093,7 @@ const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
|
|
|
2092
2093
|
};
|
|
2093
2094
|
}
|
|
2094
2095
|
});
|
|
2095
|
-
const _hoisted_1$x =
|
|
2096
|
+
const _hoisted_1$x = ["dir"];
|
|
2096
2097
|
const _hoisted_2$u = { class: "flex w-full flex-1 flex-col overflow-hidden" };
|
|
2097
2098
|
const _hoisted_3$n = { class: "flex w-full shrink-0 items-center gap-x-2 px-5 py-2" };
|
|
2098
2099
|
const _hoisted_4$l = {
|
|
@@ -2107,6 +2108,7 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
|
|
|
2107
2108
|
__name: "ChatList",
|
|
2108
2109
|
setup(__props) {
|
|
2109
2110
|
const { t } = useLocalI18n(chatList);
|
|
2111
|
+
const { dir } = useDirection();
|
|
2110
2112
|
const chatStore = useChatStore();
|
|
2111
2113
|
const activeFilter = vue.ref("");
|
|
2112
2114
|
const searchText = vue.ref("");
|
|
@@ -2151,7 +2153,10 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
|
|
|
2151
2153
|
});
|
|
2152
2154
|
return (_ctx, _cache) => {
|
|
2153
2155
|
const _component_BVirtualVerticalList = _sfc_main$L;
|
|
2154
|
-
return vue.openBlock(), vue.createElementBlock("div",
|
|
2156
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
2157
|
+
dir: vue.unref(dir),
|
|
2158
|
+
class: "vue-chat flex h-full w-full flex-col overflow-hidden border border-chat-outline-variant bg-chat-background"
|
|
2159
|
+
}, [
|
|
2155
2160
|
vue.createVNode(_sfc_main$E, {
|
|
2156
2161
|
modelValue: searchText.value,
|
|
2157
2162
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchText.value = $event),
|
|
@@ -2199,7 +2204,7 @@ const _sfc_main$D = /* @__PURE__ */ vue.defineComponent({
|
|
|
2199
2204
|
}, null, 8, ["image-path", "title"])
|
|
2200
2205
|
]))
|
|
2201
2206
|
])
|
|
2202
|
-
]);
|
|
2207
|
+
], 8, _hoisted_1$x);
|
|
2203
2208
|
};
|
|
2204
2209
|
}
|
|
2205
2210
|
});
|
|
@@ -2289,6 +2294,7 @@ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
|
|
|
2289
2294
|
const visible = vue.useModel(__props, "visible");
|
|
2290
2295
|
const slotNames = Object.keys(vue.useSlots());
|
|
2291
2296
|
const isSheet = core.useMediaQuery("(max-width: 767.98px)");
|
|
2297
|
+
const { dir } = useDirection();
|
|
2292
2298
|
return (_ctx, _cache) => {
|
|
2293
2299
|
return vue.openBlock(), vue.createBlock(vue.unref(Dialog), vue.mergeProps({
|
|
2294
2300
|
visible: visible.value,
|
|
@@ -2297,7 +2303,8 @@ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
|
|
|
2297
2303
|
position: vue.unref(isSheet) ? "bottom" : "center",
|
|
2298
2304
|
draggable: false,
|
|
2299
2305
|
style: { width: __props.width },
|
|
2300
|
-
breakpoints: { "767.98px": "100vw" }
|
|
2306
|
+
breakpoints: { "767.98px": "100vw" },
|
|
2307
|
+
dir: vue.unref(dir)
|
|
2301
2308
|
}, _ctx.$attrs, {
|
|
2302
2309
|
class: ["vue-chat", vue.unref(isSheet) && "m-0! rounded-b-none!"]
|
|
2303
2310
|
}), vue.createSlots({ _: 2 }, [
|
|
@@ -2309,7 +2316,7 @@ const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
|
|
|
2309
2316
|
])
|
|
2310
2317
|
};
|
|
2311
2318
|
})
|
|
2312
|
-
]), 1040, ["visible", "position", "style", "class"]);
|
|
2319
|
+
]), 1040, ["visible", "position", "style", "dir", "class"]);
|
|
2313
2320
|
};
|
|
2314
2321
|
}
|
|
2315
2322
|
});
|
|
@@ -2597,15 +2604,15 @@ const _hoisted_5$e = { class: "h-29 w-full" };
|
|
|
2597
2604
|
const _hoisted_6$9 = { class: "p-1" };
|
|
2598
2605
|
const _hoisted_7$8 = { class: "flex w-full -translate-y-1/2 items-center justify-center absolute z-20" };
|
|
2599
2606
|
const _hoisted_8$4 = { class: "h-25 w-25 overflow-hidden rounded-full" };
|
|
2600
|
-
const _hoisted_9$
|
|
2607
|
+
const _hoisted_9$2 = { class: "flex w-full shrink-0 flex-col items-center justify-center gap-y-2 select-none mt-2" };
|
|
2601
2608
|
const _hoisted_10$2 = { class: "text-title-md text-chat-on-background" };
|
|
2602
2609
|
const _hoisted_11$2 = { class: "w-full shrink-0 px-6" };
|
|
2603
2610
|
const _hoisted_12$2 = { class: "flex w-full items-center justify-center gap-x-2 py-4" };
|
|
2604
2611
|
const _hoisted_13$2 = { class: "flex w-full flex-col gap-y-4 py-4" };
|
|
2605
2612
|
const _hoisted_14$2 = { class: "text-body-sm text-chat-muted" };
|
|
2606
2613
|
const _hoisted_15$1 = { class: "text-body-md text-chat-on-background" };
|
|
2607
|
-
const _hoisted_16
|
|
2608
|
-
const _hoisted_17
|
|
2614
|
+
const _hoisted_16 = { class: "flex min-h-0 w-full flex-1 flex-col select-none" };
|
|
2615
|
+
const _hoisted_17 = {
|
|
2609
2616
|
key: 0,
|
|
2610
2617
|
class: "flex h-full w-full min-h-0 flex-col gap-y-1"
|
|
2611
2618
|
};
|
|
@@ -2634,8 +2641,10 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
|
|
|
2634
2641
|
props: {
|
|
2635
2642
|
profile: { default: null }
|
|
2636
2643
|
},
|
|
2637
|
-
|
|
2644
|
+
emits: ["end"],
|
|
2645
|
+
setup(__props, { emit: __emit }) {
|
|
2638
2646
|
const props = __props;
|
|
2647
|
+
const emit = __emit;
|
|
2639
2648
|
const { getYearsPassed } = useDate();
|
|
2640
2649
|
const callStore = useCallStore();
|
|
2641
2650
|
const chatStore = useChatStore();
|
|
@@ -2682,7 +2691,7 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
|
|
|
2682
2691
|
{
|
|
2683
2692
|
title: t("options.end"),
|
|
2684
2693
|
icon: "PhX",
|
|
2685
|
-
active: localProfile.value ? localProfile.value.isActive : false,
|
|
2694
|
+
active: localProfile.value ? localProfile.value.isActive && chatStore.canEndConversation : false,
|
|
2686
2695
|
key: "end",
|
|
2687
2696
|
color: "error"
|
|
2688
2697
|
},
|
|
@@ -2769,11 +2778,14 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
|
|
|
2769
2778
|
if (!action.active) return;
|
|
2770
2779
|
switch (action.key) {
|
|
2771
2780
|
case "end":
|
|
2781
|
+
emit("end");
|
|
2772
2782
|
break;
|
|
2773
2783
|
case "voice-call":
|
|
2774
2784
|
case "video-call":
|
|
2775
2785
|
if (chatStore.activeConversationId && props.profile) {
|
|
2776
|
-
callStore.startCall(chatStore.activeConversationId
|
|
2786
|
+
callStore.startCall(chatStore.activeConversationId, {
|
|
2787
|
+
video: action.key === "video-call"
|
|
2788
|
+
});
|
|
2777
2789
|
}
|
|
2778
2790
|
break;
|
|
2779
2791
|
}
|
|
@@ -2831,7 +2843,7 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
|
|
|
2831
2843
|
]),
|
|
2832
2844
|
_cache[1] || (_cache[1] = vue.createElementVNode("div", { class: "h-12.5 w-full" }, null, -1))
|
|
2833
2845
|
]),
|
|
2834
|
-
vue.createElementVNode("div", _hoisted_9$
|
|
2846
|
+
vue.createElementVNode("div", _hoisted_9$2, [
|
|
2835
2847
|
vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_10$2, [
|
|
2836
2848
|
vue.createTextVNode(vue.toDisplayString((_a = localProfile.value) == null ? void 0 : _a.name), 1)
|
|
2837
2849
|
])), [
|
|
@@ -2891,8 +2903,8 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
|
|
|
2891
2903
|
}), 128))
|
|
2892
2904
|
])
|
|
2893
2905
|
]),
|
|
2894
|
-
vue.createElementVNode("div", _hoisted_16
|
|
2895
|
-
!shouldShowTabs.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_17
|
|
2906
|
+
vue.createElementVNode("div", _hoisted_16, [
|
|
2907
|
+
!shouldShowTabs.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_17, [
|
|
2896
2908
|
fileAttachements.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_18, [
|
|
2897
2909
|
vue.createElementVNode("div", _hoisted_19, vue.toDisplayString(vue.unref(t)("info.files")), 1),
|
|
2898
2910
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(fileAttachements.value, (file2, index) => {
|
|
@@ -3697,6 +3709,7 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
|
|
|
3697
3709
|
"onUpdate:activeIndex": _cache[4] || (_cache[4] = ($event) => activeIndex.value = $event),
|
|
3698
3710
|
value: __props.items,
|
|
3699
3711
|
"full-screen": "",
|
|
3712
|
+
dir: vue.unref(dir),
|
|
3700
3713
|
"show-thumbnails": hasMany.value,
|
|
3701
3714
|
"show-item-navigators": hasMany.value,
|
|
3702
3715
|
"num-visible": __props.items.length,
|
|
@@ -3773,7 +3786,7 @@ const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
|
|
|
3773
3786
|
}, null, 8, ["item", "class"])
|
|
3774
3787
|
]),
|
|
3775
3788
|
_: 1
|
|
3776
|
-
}, 8, ["visible", "active-index", "value", "show-thumbnails", "show-item-navigators", "num-visible", "pt"]);
|
|
3789
|
+
}, 8, ["visible", "active-index", "value", "dir", "show-thumbnails", "show-item-navigators", "num-visible", "pt"]);
|
|
3777
3790
|
};
|
|
3778
3791
|
}
|
|
3779
3792
|
});
|
|
@@ -3795,7 +3808,7 @@ const _hoisted_8$3 = {
|
|
|
3795
3808
|
"data-testid": "message-reader",
|
|
3796
3809
|
class: "flex select-none items-center gap-x-2.5 px-2 py-1.5"
|
|
3797
3810
|
};
|
|
3798
|
-
const _hoisted_9$
|
|
3811
|
+
const _hoisted_9$1 = { class: "size-8 shrink-0" };
|
|
3799
3812
|
const _hoisted_10$1 = { class: "flex min-w-0 flex-1 flex-col" };
|
|
3800
3813
|
const _hoisted_11$1 = { class: "truncate text-label-md text-chat-on-background" };
|
|
3801
3814
|
const _hoisted_12$1 = {
|
|
@@ -3815,6 +3828,7 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
3815
3828
|
setup(__props, { expose: __expose }) {
|
|
3816
3829
|
const props = __props;
|
|
3817
3830
|
const { t } = useLocalI18n(bubbleOptions);
|
|
3831
|
+
const { dir } = useDirection();
|
|
3818
3832
|
const { formatDateShort, formatTime } = useDate();
|
|
3819
3833
|
const messagesStore = useMessagesStore();
|
|
3820
3834
|
const menu = vue.ref(null);
|
|
@@ -3969,6 +3983,7 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
3969
3983
|
ref: menu,
|
|
3970
3984
|
model: items.value,
|
|
3971
3985
|
pt,
|
|
3986
|
+
dir: vue.unref(dir),
|
|
3972
3987
|
class: "vue-chat",
|
|
3973
3988
|
onHide: onMenuClosed
|
|
3974
3989
|
}, {
|
|
@@ -4029,7 +4044,7 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
4029
4044
|
})
|
|
4030
4045
|
], 64))
|
|
4031
4046
|
], 16)) : item.reader ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$3, [
|
|
4032
|
-
vue.createElementVNode("span", _hoisted_9$
|
|
4047
|
+
vue.createElementVNode("span", _hoisted_9$1, [
|
|
4033
4048
|
vue.createVNode(_sfc_main$I, {
|
|
4034
4049
|
contact: readerAvatar(item.reader),
|
|
4035
4050
|
"show-online": false
|
|
@@ -4058,7 +4073,7 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
|
|
|
4058
4073
|
], 16))
|
|
4059
4074
|
]),
|
|
4060
4075
|
_: 1
|
|
4061
|
-
}, 8, ["model"]);
|
|
4076
|
+
}, 8, ["model", "dir"]);
|
|
4062
4077
|
};
|
|
4063
4078
|
}
|
|
4064
4079
|
});
|
|
@@ -5095,21 +5110,20 @@ const _hoisted_2$b = {
|
|
|
5095
5110
|
class: "py-3 w-full flex justify-center"
|
|
5096
5111
|
};
|
|
5097
5112
|
const _hoisted_3$8 = { class: "select-none md:select-auto w-full" };
|
|
5098
|
-
const _hoisted_4$8 = { class: "flex
|
|
5099
|
-
const _hoisted_5$5 = {
|
|
5100
|
-
const _hoisted_6$4 = {
|
|
5113
|
+
const _hoisted_4$8 = { class: "flex-1 min-w-0" };
|
|
5114
|
+
const _hoisted_5$5 = {
|
|
5101
5115
|
key: 1,
|
|
5102
5116
|
class: "max-w-full wrap-break-word px-2.5 py-1.5"
|
|
5103
5117
|
};
|
|
5104
|
-
const
|
|
5118
|
+
const _hoisted_6$4 = {
|
|
5105
5119
|
key: 5,
|
|
5106
5120
|
class: "flex justify-end px-2 pb-1"
|
|
5107
5121
|
};
|
|
5108
|
-
const
|
|
5122
|
+
const _hoisted_7$3 = {
|
|
5109
5123
|
key: 1,
|
|
5110
5124
|
class: "relative"
|
|
5111
5125
|
};
|
|
5112
|
-
const
|
|
5126
|
+
const _hoisted_8$2 = {
|
|
5113
5127
|
key: 0,
|
|
5114
5128
|
class: "size-8 shrink-0"
|
|
5115
5129
|
};
|
|
@@ -5155,12 +5169,15 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
5155
5169
|
const groupedWithNext = vue.computed(
|
|
5156
5170
|
() => sameGroup(props.message, props.message.nextMessage)
|
|
5157
5171
|
);
|
|
5172
|
+
const sideClass = vue.computed(
|
|
5173
|
+
() => isMine.value ? "justify-end rtl:justify-start" : "justify-start rtl:justify-end"
|
|
5174
|
+
);
|
|
5158
5175
|
const roundingClasses = vue.computed(() => {
|
|
5159
5176
|
const prev = groupedWithPrev.value;
|
|
5160
5177
|
const next = groupedWithNext.value;
|
|
5161
5178
|
if (isMine.value)
|
|
5162
|
-
return [prev && "rounded-
|
|
5163
|
-
return [prev && "rounded-
|
|
5179
|
+
return [prev && "rounded-tr-md", next ? "rounded-br-md" : "rounded-br-xs"];
|
|
5180
|
+
return [prev && "rounded-tl-md", next ? "rounded-bl-md" : "rounded-bl-xs"];
|
|
5164
5181
|
});
|
|
5165
5182
|
const uploadData = vue.computed(
|
|
5166
5183
|
() => messagesStore.uploadProgress.get(props.message.id)
|
|
@@ -5226,15 +5243,17 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
5226
5243
|
}, null, 8, ["message", "contact"])
|
|
5227
5244
|
])) : (vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
|
|
5228
5245
|
key: 2,
|
|
5229
|
-
class: ["flex items-center flex-1 min-w-0 relative",
|
|
5246
|
+
class: ["flex items-center flex-1 min-w-0 relative", sideClass.value],
|
|
5230
5247
|
onClick: handleLeftClick
|
|
5231
5248
|
}, vue.toHandlers(vue.unref(longPress), true)), [
|
|
5232
5249
|
vue.createElementVNode("div", _hoisted_3$8, [
|
|
5233
5250
|
vue.createElementVNode("div", {
|
|
5234
|
-
class: vue.normalizeClass(["w-full flex items-center",
|
|
5251
|
+
class: vue.normalizeClass(["w-full flex items-center", sideClass.value])
|
|
5235
5252
|
}, [
|
|
5236
|
-
vue.createElementVNode("div",
|
|
5237
|
-
vue.
|
|
5253
|
+
vue.createElementVNode("div", {
|
|
5254
|
+
class: vue.normalizeClass(["flex max-w-4/5 items-end gap-x-2", { "flex-row-reverse rtl:flex-row": !isMine.value }])
|
|
5255
|
+
}, [
|
|
5256
|
+
vue.createElementVNode("div", _hoisted_4$8, [
|
|
5238
5257
|
isTextBased.value ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
5239
5258
|
key: 0,
|
|
5240
5259
|
class: vue.normalizeClass(["relative rounded-2xl p-1 shadow-xs", [
|
|
@@ -5250,7 +5269,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
5250
5269
|
"is-mine": isMine.value,
|
|
5251
5270
|
"current-user-id": currentUserId.value
|
|
5252
5271
|
}, null, 8, ["message", "contact", "is-mine", "current-user-id"])) : vue.createCommentVNode("", true),
|
|
5253
|
-
messageType.value === "text" ? (vue.openBlock(), vue.createElementBlock("p",
|
|
5272
|
+
messageType.value === "text" ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_5$5, [
|
|
5254
5273
|
vue.createVNode(_sfc_main$J, {
|
|
5255
5274
|
text: __props.message.text
|
|
5256
5275
|
}, null, 8, ["text"]),
|
|
@@ -5277,13 +5296,13 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
5277
5296
|
"message-id": __props.message.id,
|
|
5278
5297
|
"is-sent": __props.message.isSent
|
|
5279
5298
|
}, null, 8, ["url", "message-id", "is-sent"])) : vue.createCommentVNode("", true),
|
|
5280
|
-
messageType.value !== "text" ? (vue.openBlock(), vue.createElementBlock("div",
|
|
5299
|
+
messageType.value !== "text" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$4, [
|
|
5281
5300
|
vue.createVNode(_sfc_main$h, {
|
|
5282
5301
|
message: __props.message,
|
|
5283
5302
|
"is-mine": isMine.value
|
|
5284
5303
|
}, null, 8, ["message", "is-mine"])
|
|
5285
5304
|
])) : vue.createCommentVNode("", true)
|
|
5286
|
-
], 2)) : (vue.openBlock(), vue.createElementBlock("div",
|
|
5305
|
+
], 2)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$3, [
|
|
5287
5306
|
messageType.value === "image" || messageType.value === "multiImage" ? (vue.openBlock(), vue.createBlock(_sfc_main$l, {
|
|
5288
5307
|
key: 0,
|
|
5289
5308
|
items: media.value,
|
|
@@ -5307,14 +5326,14 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
5307
5326
|
message: __props.message
|
|
5308
5327
|
}, null, 8, ["message"])) : vue.createCommentVNode("", true)
|
|
5309
5328
|
]),
|
|
5310
|
-
!isMine.value ? (vue.openBlock(), vue.createElementBlock("div",
|
|
5329
|
+
!isMine.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$2, [
|
|
5311
5330
|
!groupedWithNext.value ? (vue.openBlock(), vue.createBlock(_sfc_main$I, {
|
|
5312
5331
|
key: 0,
|
|
5313
5332
|
contact: __props.contact,
|
|
5314
5333
|
"show-online": false
|
|
5315
5334
|
}, null, 8, ["contact"])) : vue.createCommentVNode("", true)
|
|
5316
5335
|
])) : vue.createCommentVNode("", true)
|
|
5317
|
-
])
|
|
5336
|
+
], 2)
|
|
5318
5337
|
], 2)
|
|
5319
5338
|
]),
|
|
5320
5339
|
viewerMounted.value && media.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$u, {
|
|
@@ -5401,19 +5420,18 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
|
|
|
5401
5420
|
__name: "FloatingDateHeader",
|
|
5402
5421
|
props: {
|
|
5403
5422
|
label: {},
|
|
5404
|
-
opacity: {}
|
|
5405
|
-
offset: { type: Boolean }
|
|
5423
|
+
opacity: {}
|
|
5406
5424
|
},
|
|
5407
5425
|
setup(__props) {
|
|
5408
5426
|
return (_ctx, _cache) => {
|
|
5409
5427
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
5410
|
-
class:
|
|
5428
|
+
class: "absolute top-4 left-0 right-0 z-20 flex justify-center pointer-events-none transition-opacity duration-200",
|
|
5411
5429
|
style: vue.normalizeStyle({ opacity: __props.opacity })
|
|
5412
5430
|
}, [
|
|
5413
5431
|
__props.label ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
|
|
5414
5432
|
vue.createElementVNode("div", _hoisted_2$9, vue.toDisplayString(__props.label), 1)
|
|
5415
5433
|
])) : vue.createCommentVNode("", true)
|
|
5416
|
-
],
|
|
5434
|
+
], 4);
|
|
5417
5435
|
};
|
|
5418
5436
|
}
|
|
5419
5437
|
});
|
|
@@ -5585,7 +5603,6 @@ function useChatMessageList(chatId) {
|
|
|
5585
5603
|
function useFlippedVirtualScroll(options2) {
|
|
5586
5604
|
const {
|
|
5587
5605
|
scrollContainer,
|
|
5588
|
-
hasCall,
|
|
5589
5606
|
isLoading,
|
|
5590
5607
|
isLocked,
|
|
5591
5608
|
onLoadMore
|
|
@@ -5626,7 +5643,7 @@ function useFlippedVirtualScroll(options2) {
|
|
|
5626
5643
|
}
|
|
5627
5644
|
const items = virtualizer.value.getVirtualItems();
|
|
5628
5645
|
if (items.length > 0) {
|
|
5629
|
-
const targetOffset =
|
|
5646
|
+
const targetOffset = 44;
|
|
5630
5647
|
const physicalTopOfViewport = el.scrollHeight - el.clientHeight - el.scrollTop;
|
|
5631
5648
|
const targetPhysicalTop = physicalTopOfViewport + targetOffset;
|
|
5632
5649
|
let closestIndex = items[0].index;
|
|
@@ -5693,10 +5710,7 @@ function useFlippedVirtualScroll(options2) {
|
|
|
5693
5710
|
}
|
|
5694
5711
|
};
|
|
5695
5712
|
}
|
|
5696
|
-
const _hoisted_1$9 =
|
|
5697
|
-
key: 0,
|
|
5698
|
-
class: "vue-chat relative w-full h-full overflow-hidden"
|
|
5699
|
-
};
|
|
5713
|
+
const _hoisted_1$9 = ["dir"];
|
|
5700
5714
|
const _hoisted_2$8 = { class: "w-full max-w-dvw overflow-x-hidden" };
|
|
5701
5715
|
const _hoisted_3$7 = ["data-index"];
|
|
5702
5716
|
const _hoisted_4$7 = { class: "w-full shrink-0 flip-vertical" };
|
|
@@ -5710,22 +5724,20 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
5710
5724
|
setup(__props) {
|
|
5711
5725
|
const modal = vue.ref(null);
|
|
5712
5726
|
const chatStore = useChatStore();
|
|
5713
|
-
const callStore = useCallStore();
|
|
5714
5727
|
const messagesStore = useMessagesStore();
|
|
5715
5728
|
const { t } = useLocalI18n(chatMessages, chat);
|
|
5729
|
+
const { dir } = useDirection();
|
|
5716
5730
|
const { openToast } = useAppToast();
|
|
5717
5731
|
const { formatDateShort } = useDate();
|
|
5718
5732
|
const profileStore = useProfileStore();
|
|
5719
5733
|
const currentUserId = vue.computed(() => profileStore.userId);
|
|
5720
5734
|
const chatId = vue.computed(() => chatStore.activeConversationId);
|
|
5721
|
-
const hasCall = vue.computed(() => callStore.isActive);
|
|
5722
5735
|
const lockScroll = vue.computed(() => messagesStore.isOptionMenuOpen);
|
|
5723
5736
|
const scrollContainer = vue.ref(null);
|
|
5724
5737
|
const selectedToDelete = vue.ref([]);
|
|
5725
5738
|
const msgList = useChatMessageList(chatId);
|
|
5726
5739
|
const scroll = useFlippedVirtualScroll({
|
|
5727
5740
|
scrollContainer,
|
|
5728
|
-
hasCall,
|
|
5729
5741
|
isLoading: msgList.isLoading,
|
|
5730
5742
|
isLocked: lockScroll,
|
|
5731
5743
|
onLoadMore: msgList.loadNextPage
|
|
@@ -5838,14 +5850,16 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
5838
5850
|
});
|
|
5839
5851
|
return (_ctx, _cache) => {
|
|
5840
5852
|
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
|
|
5841
|
-
__props.contact ? (vue.openBlock(), vue.createElementBlock("div",
|
|
5853
|
+
__props.contact ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
5854
|
+
key: 0,
|
|
5855
|
+
dir: vue.unref(dir),
|
|
5856
|
+
class: "vue-chat relative w-full h-full overflow-hidden"
|
|
5857
|
+
}, [
|
|
5842
5858
|
vue.createVNode(_sfc_main$d, {
|
|
5843
5859
|
label: floatingHeader.value,
|
|
5844
|
-
opacity: vue.unref(scroll).headerOpacity.value
|
|
5845
|
-
|
|
5846
|
-
}, null, 8, ["label", "opacity", "offset"]),
|
|
5860
|
+
opacity: vue.unref(scroll).headerOpacity.value
|
|
5861
|
+
}, null, 8, ["label", "opacity"]),
|
|
5847
5862
|
vue.createElementVNode("div", {
|
|
5848
|
-
dir: "rtl",
|
|
5849
5863
|
id: "list",
|
|
5850
5864
|
ref_key: "scrollContainer",
|
|
5851
5865
|
ref: scrollContainer,
|
|
@@ -5927,7 +5941,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
5927
5941
|
onClick: _cache[2] || (_cache[2] = ($event) => vue.unref(scroll).resetScroll())
|
|
5928
5942
|
}, null, 8, ["visible", "unseen"])
|
|
5929
5943
|
])
|
|
5930
|
-
])) : vue.createCommentVNode("", true),
|
|
5944
|
+
], 8, _hoisted_1$9)) : vue.createCommentVNode("", true),
|
|
5931
5945
|
vue.createVNode(_sfc_main$y, {
|
|
5932
5946
|
ref_key: "modal",
|
|
5933
5947
|
ref: modal,
|
|
@@ -5944,8 +5958,8 @@ const _export_sfc = (sfc, props) => {
|
|
|
5944
5958
|
}
|
|
5945
5959
|
return target;
|
|
5946
5960
|
};
|
|
5947
|
-
const ChatMessages = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-
|
|
5948
|
-
const _hoisted_1$8 =
|
|
5961
|
+
const ChatMessages = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-cb7cc93f"]]);
|
|
5962
|
+
const _hoisted_1$8 = ["dir"];
|
|
5949
5963
|
const _hoisted_2$7 = {
|
|
5950
5964
|
key: 0,
|
|
5951
5965
|
class: "relative z-50 flex h-16 w-full items-center justify-between gap-x-4 border-b border-b-chat-outline-variant bg-chat-background py-4 px-5 md:h-20"
|
|
@@ -5969,8 +5983,6 @@ const _hoisted_12 = { class: "h-full w-full" };
|
|
|
5969
5983
|
const _hoisted_13 = { class: "flex flex-col gap-y-1.5" };
|
|
5970
5984
|
const _hoisted_14 = { class: "h-4 w-32" };
|
|
5971
5985
|
const _hoisted_15 = { class: "h-3 w-20" };
|
|
5972
|
-
const _hoisted_16 = { class: "absolute bottom-0 z-20 h-0 w-full overflow-visible" };
|
|
5973
|
-
const _hoisted_17 = { class: "flex-1 select-none text-label-md text-white" };
|
|
5974
5986
|
const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
5975
5987
|
__name: "ChatPageBar",
|
|
5976
5988
|
props: {
|
|
@@ -5993,15 +6005,12 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
5993
6005
|
const messagesStore = useMessagesStore();
|
|
5994
6006
|
const { formatRelativeDate } = useDate();
|
|
5995
6007
|
const { t } = useLocalI18n(chatPageBar);
|
|
6008
|
+
const { dir } = useDirection();
|
|
5996
6009
|
const callStore = useCallStore();
|
|
5997
6010
|
const chatStore = useChatStore();
|
|
5998
6011
|
const currentConversationId = vue.computed(() => chatStore.activeConversationId);
|
|
5999
6012
|
const isSelectMode = vue.computed(() => messagesStore.isSelectMode);
|
|
6000
6013
|
const selectedChat = vue.computed(() => props.contact);
|
|
6001
|
-
const callData = vue.computed(() => ({
|
|
6002
|
-
show: callStore.isActive,
|
|
6003
|
-
duration: formatDuration$1(callStore.elapsedTime)
|
|
6004
|
-
}));
|
|
6005
6014
|
const openProfile = () => {
|
|
6006
6015
|
emit("open-profile");
|
|
6007
6016
|
};
|
|
@@ -6013,13 +6022,20 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
6013
6022
|
callStore.startCall(currentConversationId.value);
|
|
6014
6023
|
}
|
|
6015
6024
|
};
|
|
6016
|
-
const backToCall = () => {
|
|
6017
|
-
callStore.maximize();
|
|
6018
|
-
};
|
|
6019
6025
|
return (_ctx, _cache) => {
|
|
6020
6026
|
const _component_BIcon = _sfc_main$K;
|
|
6021
|
-
return vue.openBlock(), vue.createElementBlock("div",
|
|
6027
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
6028
|
+
dir: vue.unref(dir),
|
|
6029
|
+
class: "vue-chat relative z-20 w-full"
|
|
6030
|
+
}, [
|
|
6022
6031
|
selectedChat.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$7, [
|
|
6032
|
+
vue.createVNode(_sfc_main$F, {
|
|
6033
|
+
icon: "PhArrowLeft",
|
|
6034
|
+
"icon-class": "size-6 rtl:-scale-x-100",
|
|
6035
|
+
label: vue.unref(t)("actions.back"),
|
|
6036
|
+
class: "shrink-0 md:hidden!",
|
|
6037
|
+
onClick: goBack
|
|
6038
|
+
}, null, 8, ["label"]),
|
|
6023
6039
|
vue.createElementVNode("div", _hoisted_3$6, [
|
|
6024
6040
|
vue.createVNode(vue.unref(Button), {
|
|
6025
6041
|
text: "",
|
|
@@ -6074,6 +6090,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
6074
6090
|
ref: "optionsMenu",
|
|
6075
6091
|
model: menuItems.value,
|
|
6076
6092
|
popup: "",
|
|
6093
|
+
dir: vue.unref(dir),
|
|
6077
6094
|
class: "vue-chat"
|
|
6078
6095
|
}, {
|
|
6079
6096
|
itemicon: vue.withCtx(({ item }) => [
|
|
@@ -6083,18 +6100,11 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
6083
6100
|
}, null, 8, ["icon", "class"])
|
|
6084
6101
|
]),
|
|
6085
6102
|
_: 1
|
|
6086
|
-
}, 8, ["model"])
|
|
6103
|
+
}, 8, ["model", "dir"])
|
|
6087
6104
|
])
|
|
6088
6105
|
], 2)
|
|
6089
6106
|
])
|
|
6090
|
-
])
|
|
6091
|
-
vue.createVNode(_sfc_main$F, {
|
|
6092
|
-
icon: "PhArrowLeft",
|
|
6093
|
-
"icon-class": "size-6",
|
|
6094
|
-
label: vue.unref(t)("actions.back"),
|
|
6095
|
-
class: "md:hidden!",
|
|
6096
|
-
onClick: goBack
|
|
6097
|
-
}, null, 8, ["label"])
|
|
6107
|
+
])
|
|
6098
6108
|
])) : currentConversationId.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10, [
|
|
6099
6109
|
vue.createElementVNode("div", _hoisted_11, [
|
|
6100
6110
|
vue.withDirectives(vue.createElementVNode("div", _hoisted_12, null, 512), [
|
|
@@ -6109,30 +6119,8 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
6109
6119
|
[vue.unref(loadingDirective), true]
|
|
6110
6120
|
])
|
|
6111
6121
|
])
|
|
6112
|
-
])) : vue.createCommentVNode("", true)
|
|
6113
|
-
|
|
6114
|
-
vue.createElementVNode("div", {
|
|
6115
|
-
class: vue.normalizeClass(["flex w-full items-center overflow-hidden whitespace-nowrap bg-diamond-primary-secondary text-wrap px-2 transition-all duration-200 ease-in-out", [callData.value.show ? "h-11" : "h-0"]])
|
|
6116
|
-
}, [
|
|
6117
|
-
vue.createElementVNode("div", {
|
|
6118
|
-
class: vue.normalizeClass(["flex w-full items-center gap-x-3 transition-all duration-200 ease-in-out", [callData.value.show ? "opacity-100" : "opacity-0"]])
|
|
6119
|
-
}, [
|
|
6120
|
-
vue.createVNode(_component_BIcon, {
|
|
6121
|
-
icon: "PhPhoneCall",
|
|
6122
|
-
class: "h-5 w-5 shrink-0 fill-white"
|
|
6123
|
-
}),
|
|
6124
|
-
vue.createElementVNode("div", _hoisted_17, vue.toDisplayString(callData.value.duration), 1),
|
|
6125
|
-
vue.createVNode(_sfc_main$F, {
|
|
6126
|
-
icon: "PhFrameCorners",
|
|
6127
|
-
label: vue.unref(t)("actions.returnToCall"),
|
|
6128
|
-
size: "small",
|
|
6129
|
-
class: "shrink-0 text-white!",
|
|
6130
|
-
onClick: backToCall
|
|
6131
|
-
}, null, 8, ["label"])
|
|
6132
|
-
], 2)
|
|
6133
|
-
], 2)
|
|
6134
|
-
])
|
|
6135
|
-
]);
|
|
6122
|
+
])) : vue.createCommentVNode("", true)
|
|
6123
|
+
], 8, _hoisted_1$8);
|
|
6136
6124
|
};
|
|
6137
6125
|
}
|
|
6138
6126
|
});
|
|
@@ -6267,6 +6255,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
6267
6255
|
const props = __props;
|
|
6268
6256
|
const emit = __emit;
|
|
6269
6257
|
const { t } = useLocalI18n(inputAttachement);
|
|
6258
|
+
const { dir } = useDirection();
|
|
6270
6259
|
const { openToast } = useAppToast();
|
|
6271
6260
|
const menu = vue.ref(null);
|
|
6272
6261
|
const dialogOpen = vue.ref(false);
|
|
@@ -6380,6 +6369,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
6380
6369
|
ref: menu,
|
|
6381
6370
|
model: menuItems.value,
|
|
6382
6371
|
popup: "",
|
|
6372
|
+
dir: vue.unref(dir),
|
|
6383
6373
|
class: "vue-chat"
|
|
6384
6374
|
}, {
|
|
6385
6375
|
itemicon: vue.withCtx(({ item }) => [
|
|
@@ -6389,7 +6379,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
6389
6379
|
}, null, 8, ["icon"])
|
|
6390
6380
|
]),
|
|
6391
6381
|
_: 1
|
|
6392
|
-
}, 8, ["model"]),
|
|
6382
|
+
}, 8, ["model", "dir"]),
|
|
6393
6383
|
vue.createVNode(_sfc_main$C, {
|
|
6394
6384
|
visible: dialogOpen.value,
|
|
6395
6385
|
"onUpdate:visible": _cache[3] || (_cache[3] = ($event) => dialogOpen.value = $event),
|
|
@@ -7128,10 +7118,7 @@ function useInputDraft(editor, isEditing) {
|
|
|
7128
7118
|
});
|
|
7129
7119
|
return { restoreDraft };
|
|
7130
7120
|
}
|
|
7131
|
-
const _hoisted_1$2 =
|
|
7132
|
-
dir: "rtl",
|
|
7133
|
-
class: "vue-chat w-full relative"
|
|
7134
|
-
};
|
|
7121
|
+
const _hoisted_1$2 = ["dir"];
|
|
7135
7122
|
const _hoisted_2$2 = { class: "flex-1 flex items-end gap-x-5" };
|
|
7136
7123
|
const _hoisted_3$1 = { class: "min-h-11 flex items-center w-full" };
|
|
7137
7124
|
const _hoisted_4$1 = ["onKeydown", "data-placeholder"];
|
|
@@ -7146,6 +7133,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
7146
7133
|
setup(__props, { expose: __expose, emit: __emit }) {
|
|
7147
7134
|
const props = __props;
|
|
7148
7135
|
const { t } = useLocalI18n(chatInput, chat);
|
|
7136
|
+
const { dir } = useDirection();
|
|
7149
7137
|
const { requestWithPopup, checkMediaStatus } = useAppPermissions();
|
|
7150
7138
|
const messagesStore = useMessagesStore();
|
|
7151
7139
|
const chatStore = useChatStore();
|
|
@@ -7406,7 +7394,10 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
7406
7394
|
} });
|
|
7407
7395
|
return (_ctx, _cache) => {
|
|
7408
7396
|
const _component_BEmojiPicker = _sfc_main$9;
|
|
7409
|
-
return vue.openBlock(), vue.createElementBlock("div",
|
|
7397
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
7398
|
+
dir: vue.unref(dir),
|
|
7399
|
+
class: "vue-chat w-full relative"
|
|
7400
|
+
}, [
|
|
7410
7401
|
vue.createVNode(_sfc_main$6, {
|
|
7411
7402
|
ref: "videoDisplay",
|
|
7412
7403
|
stream: vue.unref(mediaStream),
|
|
@@ -7458,7 +7449,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
7458
7449
|
onMouseup: _cache[3] || (_cache[3] = //@ts-ignore
|
|
7459
7450
|
(...args) => vue.unref(editor).saveCursorPosition && vue.unref(editor).saveCursorPosition(...args)),
|
|
7460
7451
|
"data-placeholder": inputPlaceholder.value,
|
|
7461
|
-
class: "text-body-md text-on-surface outline-none flex-1 bg-transparent z-10 max-h-[144px] overflow-y-auto hide-scrollbar leading-6 py-1 cursor-text whitespace-pre-wrap break-words empty:before:content-[attr(data-placeholder)] empty:before:text-chat-muted pointer-events-auto"
|
|
7452
|
+
class: "text-body-md text-on-surface outline-none flex-1 bg-transparent z-10 [unicode-bidi:plaintext] max-h-[144px] overflow-y-auto hide-scrollbar leading-6 py-1 cursor-text whitespace-pre-wrap break-words empty:before:content-[attr(data-placeholder)] empty:before:text-chat-muted pointer-events-auto"
|
|
7462
7453
|
}, null, 40, _hoisted_4$1)
|
|
7463
7454
|
]),
|
|
7464
7455
|
vue.createElementVNode("div", _hoisted_5$1, [
|
|
@@ -7475,6 +7466,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
7475
7466
|
}, null, 8, ["label", "disabled"]),
|
|
7476
7467
|
vue.createVNode(vue.unref(Popover), {
|
|
7477
7468
|
ref: "emojiPopover",
|
|
7469
|
+
dir: vue.unref(dir),
|
|
7478
7470
|
class: "vue-chat"
|
|
7479
7471
|
}, {
|
|
7480
7472
|
default: vue.withCtx(() => [
|
|
@@ -7484,7 +7476,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
7484
7476
|
})) : vue.createCommentVNode("", true)
|
|
7485
7477
|
]),
|
|
7486
7478
|
_: 1
|
|
7487
|
-
},
|
|
7479
|
+
}, 8, ["dir"]),
|
|
7488
7480
|
vue.createVNode(_sfc_main$F, {
|
|
7489
7481
|
icon: "PhSmiley",
|
|
7490
7482
|
"icon-class": "size-6",
|
|
@@ -7523,11 +7515,11 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
7523
7515
|
onSelect: handleEmojiSelect
|
|
7524
7516
|
})) : vue.createCommentVNode("", true)
|
|
7525
7517
|
], 2)
|
|
7526
|
-
]);
|
|
7518
|
+
], 8, _hoisted_1$2);
|
|
7527
7519
|
};
|
|
7528
7520
|
}
|
|
7529
7521
|
});
|
|
7530
|
-
const _hoisted_1$1 =
|
|
7522
|
+
const _hoisted_1$1 = ["dir"];
|
|
7531
7523
|
const _hoisted_2$1 = { class: "flex h-full w-full" };
|
|
7532
7524
|
const _hoisted_3 = { class: "h-16 w-full bg-chat-background md:h-20" };
|
|
7533
7525
|
const _hoisted_4 = {
|
|
@@ -7549,6 +7541,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
7549
7541
|
setup(__props) {
|
|
7550
7542
|
const chatStore = useChatStore();
|
|
7551
7543
|
const { t } = useLocalI18n(chatView);
|
|
7544
|
+
const { dir } = useDirection();
|
|
7552
7545
|
const chatInput2 = vue.ref(null);
|
|
7553
7546
|
const chatId = vue.computed(() => chatStore.activeConversationId);
|
|
7554
7547
|
const isProfile = vue.computed(() => chatStore.profileViewOpen);
|
|
@@ -7611,9 +7604,15 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
7611
7604
|
return (_ctx, _cache) => {
|
|
7612
7605
|
var _a, _b;
|
|
7613
7606
|
const _component_BIcon = _sfc_main$K;
|
|
7614
|
-
return vue.openBlock(), vue.createElementBlock("div",
|
|
7607
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
7608
|
+
dir: vue.unref(dir),
|
|
7609
|
+
class: "vue-chat h-full w-full bg-chat-surface"
|
|
7610
|
+
}, [
|
|
7615
7611
|
vue.createElementVNode("div", _hoisted_2$1, [
|
|
7616
|
-
vue.createVNode(_sfc_main$z, {
|
|
7612
|
+
vue.createVNode(_sfc_main$z, {
|
|
7613
|
+
profile: selectedChat.value,
|
|
7614
|
+
onEnd: _cache[0] || (_cache[0] = ($event) => handleOption("end-chat"))
|
|
7615
|
+
}, null, 8, ["profile"]),
|
|
7617
7616
|
vue.withDirectives(vue.createElementVNode("div", {
|
|
7618
7617
|
class: vue.normalizeClass(["h-full flex-1 flex-col items-center justify-between", isProfile.value ? "hidden md:flex" : "flex"])
|
|
7619
7618
|
}, [
|
|
@@ -7679,13 +7678,14 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
7679
7678
|
vue.createVNode(vue.unref(Toast), {
|
|
7680
7679
|
group: vue.unref(TOAST_GROUP),
|
|
7681
7680
|
position: "bottom-center",
|
|
7681
|
+
dir: vue.unref(dir),
|
|
7682
7682
|
class: "vue-chat"
|
|
7683
|
-
}, null, 8, ["group"])
|
|
7684
|
-
]);
|
|
7683
|
+
}, null, 8, ["group", "dir"])
|
|
7684
|
+
], 8, _hoisted_1$1);
|
|
7685
7685
|
};
|
|
7686
7686
|
}
|
|
7687
7687
|
});
|
|
7688
|
-
const _hoisted_1 =
|
|
7688
|
+
const _hoisted_1 = ["dir"];
|
|
7689
7689
|
const _hoisted_2 = {
|
|
7690
7690
|
key: 1,
|
|
7691
7691
|
class: "w-full h-full flex items-center justify-center"
|
|
@@ -7696,16 +7696,20 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
7696
7696
|
renderCall: { type: Boolean, default: true }
|
|
7697
7697
|
},
|
|
7698
7698
|
setup(__props) {
|
|
7699
|
-
const Call2 = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./Call-
|
|
7699
|
+
const Call2 = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./Call-CDT92h1x.cjs")));
|
|
7700
7700
|
const props = __props;
|
|
7701
7701
|
const slots = vue.useSlots();
|
|
7702
7702
|
const chatStore = useChatStore();
|
|
7703
7703
|
const callStore = useCallStore();
|
|
7704
7704
|
const { t } = useLocalI18n(chatPage);
|
|
7705
|
+
const { dir } = useDirection();
|
|
7705
7706
|
const isInChat = vue.computed(() => chatStore.activeConversationId !== null);
|
|
7706
7707
|
return (_ctx, _cache) => {
|
|
7707
7708
|
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
|
|
7708
|
-
vue.createElementVNode("div",
|
|
7709
|
+
vue.createElementVNode("div", {
|
|
7710
|
+
dir: vue.unref(dir),
|
|
7711
|
+
class: "vue-chat flex w-full h-full max-h-full overflow-hidden font-chat-family text-chat-base text-chat-on-background bg-chat-background"
|
|
7712
|
+
}, [
|
|
7709
7713
|
vue.createElementVNode("div", {
|
|
7710
7714
|
class: vue.normalizeClass(["relative h-full flex-1", isInChat.value ? "block" : "hidden md:block"])
|
|
7711
7715
|
}, [
|
|
@@ -7745,7 +7749,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
7745
7749
|
}, [
|
|
7746
7750
|
vue.createVNode(_sfc_main$D)
|
|
7747
7751
|
], 2)
|
|
7748
|
-
]),
|
|
7752
|
+
], 8, _hoisted_1),
|
|
7749
7753
|
props.renderCall && vue.unref(callStore).session ? (vue.openBlock(), vue.createBlock(vue.unref(Call2), { key: 0 })) : vue.createCommentVNode("", true)
|
|
7750
7754
|
], 64);
|
|
7751
7755
|
};
|
|
@@ -7809,7 +7813,7 @@ function createChat(options2) {
|
|
|
7809
7813
|
}
|
|
7810
7814
|
};
|
|
7811
7815
|
}
|
|
7812
|
-
const Call = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./Call-
|
|
7816
|
+
const Call = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./Call-CDT92h1x.cjs")));
|
|
7813
7817
|
exports.Call = Call;
|
|
7814
7818
|
exports.CallMessageType = CallMessageType;
|
|
7815
7819
|
exports.ChatMessages = ChatMessages;
|
|
@@ -7826,6 +7830,7 @@ exports._sfc_main$8 = _sfc_main$2;
|
|
|
7826
7830
|
exports._sfc_main$9 = _sfc_main$D;
|
|
7827
7831
|
exports.chat = chat;
|
|
7828
7832
|
exports.createChat = createChat;
|
|
7833
|
+
exports.formatDuration = formatDuration$1;
|
|
7829
7834
|
exports.messageMedia = messageMedia;
|
|
7830
7835
|
exports.provideCallHandlers = provideCallHandlers;
|
|
7831
7836
|
exports.useCallStore = useCallStore;
|
|
@@ -7835,4 +7840,4 @@ exports.useLocalI18n = useLocalI18n;
|
|
|
7835
7840
|
exports.useMediaStore = useMediaStore;
|
|
7836
7841
|
exports.useMessagesStore = useMessagesStore;
|
|
7837
7842
|
exports.useProfileStore = useProfileStore;
|
|
7838
|
-
//# sourceMappingURL=index-
|
|
7843
|
+
//# sourceMappingURL=index-efTNVoBF.cjs.map
|