[mirotalksfu] - improve chat emoji picker, update dep

هذا الالتزام موجود في:
Miroslav Pejic
2025-08-29 13:04:33 +02:00
الأصل 49df42e19c
التزام be7a55ec85
6 ملفات معدلة مع 68 إضافات و43 حذوفات

عرض الملف

@@ -64,7 +64,7 @@ dev dependencies: {
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
* @version 1.9.50
* @version 1.9.51
*
*/

68
package-lock.json مولّد
عرض الملف

@@ -1,19 +1,19 @@
{
"name": "mirotalksfu",
"version": "1.9.50",
"version": "1.9.51",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mirotalksfu",
"version": "1.9.50",
"version": "1.9.51",
"license": "AGPL-3.0",
"dependencies": {
"@aws-sdk/client-s3": "^3.876.0",
"@aws-sdk/lib-storage": "^3.876.0",
"@aws-sdk/client-s3": "^3.878.0",
"@aws-sdk/lib-storage": "^3.878.0",
"@mattermost/client": "10.10.0",
"@ngrok/ngrok": "1.5.2",
"@sentry/node": "^10.7.0",
"@sentry/node": "^10.8.0",
"async-mutex": "^0.5.0",
"axios": "^1.11.0",
"chokidar": "^4.0.3",
@@ -297,9 +297,9 @@
}
},
"node_modules/@aws-sdk/client-s3": {
"version": "3.876.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.876.0.tgz",
"integrity": "sha512-rrdrB0IlHfRaY+qxo87iSPJJxjCZ2WIV0wKi0EWz02yBpq17c0o6Vzc8f1+ksR+IZGkGttQnD2j4UpItMdLSKg==",
"version": "3.878.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.878.0.tgz",
"integrity": "sha512-hcHAX56qN5o7fYCxNsKNu+7AMgEmJN1EoUVBr4dDtqP6HebUuRF+XaF1iHNEDZC7Ucd/eimJZquxVDQFb9IMZA==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha1-browser": "5.2.0",
@@ -309,7 +309,7 @@
"@aws-sdk/credential-provider-node": "3.876.0",
"@aws-sdk/middleware-bucket-endpoint": "3.873.0",
"@aws-sdk/middleware-expect-continue": "3.873.0",
"@aws-sdk/middleware-flexible-checksums": "3.876.0",
"@aws-sdk/middleware-flexible-checksums": "3.878.0",
"@aws-sdk/middleware-host-header": "3.873.0",
"@aws-sdk/middleware-location-constraint": "3.873.0",
"@aws-sdk/middleware-logger": "3.876.0",
@@ -591,9 +591,9 @@
}
},
"node_modules/@aws-sdk/lib-storage": {
"version": "3.876.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.876.0.tgz",
"integrity": "sha512-6wydbk8enmPQmj8I0NvRhDcq3J5GhY72RBwQKyShQdD8q6xLEbSnJAudTKSmsVzfjnL8hA/cP/dBY+6T6RvlYQ==",
"version": "3.878.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.878.0.tgz",
"integrity": "sha512-42hTI7MGMmc+Os2WKsH1qBOI5kycR4okTxcRL/qcnr6zIohg6iXvbCHboh3gojB6izxsezNODxPbMiw2XORtOQ==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/abort-controller": "^4.0.5",
@@ -608,7 +608,7 @@
"node": ">=18.0.0"
},
"peerDependencies": {
"@aws-sdk/client-s3": "^3.876.0"
"@aws-sdk/client-s3": "^3.878.0"
}
},
"node_modules/@aws-sdk/lib-storage/node_modules/buffer": {
@@ -655,9 +655,9 @@
}
},
"node_modules/@aws-sdk/middleware-flexible-checksums": {
"version": "3.876.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.876.0.tgz",
"integrity": "sha512-Xfb9/XP0WcQq/yJxUubfzMUF0AYSX10UUIRbCJog0/lnDNocEiGEIaarwuQzoxb9QW9TQ1l5dDc/5bOMa1YVGw==",
"version": "3.878.0",
"resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.878.0.tgz",
"integrity": "sha512-EQiA7CML75UWoDH7+9NTIX8+U6mA9ZaLv0a8AoCbem+mqPXRHnOnALc76IRTyKpQNhKkBb/kiItXAl6OcrOGZQ==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/crc32": "5.2.0",
@@ -3725,18 +3725,18 @@
"license": "Apache-2.0"
},
"node_modules/@sentry/core": {
"version": "10.7.0",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.7.0.tgz",
"integrity": "sha512-y1Ni71O6TqeSi2Ug78StkVLHnybHZVYhnbYtj2w4g89XnQcqo4GUeR8dQRQBJpCX98UrHw22OAE8BXtKb03yXw==",
"version": "10.8.0",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.8.0.tgz",
"integrity": "sha512-scYzM/UOItu4PjEq6CpHLdArpXjIS0laHYxE4YjkIbYIH6VMcXGQbD/FSBClsnCr1wXRnlXfXBzj0hrQAFyw+Q==",
"license": "MIT",
"engines": {
"node": ">=18"
}
},
"node_modules/@sentry/node": {
"version": "10.7.0",
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.7.0.tgz",
"integrity": "sha512-VtUFyf8avWUqN5RRTTmcU8aGdyNUGHzz/f+3n86BR5gBL3lziKOajyc0VClfc80VLsih+PWQ/5FrIHl+S1S1YQ==",
"version": "10.8.0",
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.8.0.tgz",
"integrity": "sha512-1TtCjxzn4SxoGw+ulLK+jF/v9NaZfP0yCclQIqfvWNDjMf2F+SbZL1UnXx4L184FGlNpRQnJBDrBe88gxnMX0A==",
"license": "MIT",
"dependencies": {
"@opentelemetry/api": "^1.9.0",
@@ -3769,9 +3769,9 @@
"@opentelemetry/sdk-trace-base": "^2.0.0",
"@opentelemetry/semantic-conventions": "^1.34.0",
"@prisma/instrumentation": "6.14.0",
"@sentry/core": "10.7.0",
"@sentry/node-core": "10.7.0",
"@sentry/opentelemetry": "10.7.0",
"@sentry/core": "10.8.0",
"@sentry/node-core": "10.8.0",
"@sentry/opentelemetry": "10.8.0",
"import-in-the-middle": "^1.14.2",
"minimatch": "^9.0.0"
},
@@ -3780,13 +3780,13 @@
}
},
"node_modules/@sentry/node-core": {
"version": "10.7.0",
"resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.7.0.tgz",
"integrity": "sha512-iafuG3Fp0pleuk1WaL4UW7wpT6C86pMEQBZ7ARZ7UHc9ujRi/dewKFi0Stu0SxJm6PZ706VZ8Igz9xpvQ0aEEg==",
"version": "10.8.0",
"resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.8.0.tgz",
"integrity": "sha512-KCFy5Otq6KTXge8hBKMgU13EDRFkO4gNwSyZGXub8a7KHYFtoUgpRkborR59SWxeJmC6aEYTyh0PyOoWZJbHUQ==",
"license": "MIT",
"dependencies": {
"@sentry/core": "10.7.0",
"@sentry/opentelemetry": "10.7.0",
"@sentry/core": "10.8.0",
"@sentry/opentelemetry": "10.8.0",
"import-in-the-middle": "^1.14.2"
},
"engines": {
@@ -3803,12 +3803,12 @@
}
},
"node_modules/@sentry/opentelemetry": {
"version": "10.7.0",
"resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.7.0.tgz",
"integrity": "sha512-8SrRZyERDfCYYett6dklGe+qWMDZSytKPIZpS0nDb0IqZGC02ZVIhRISbBTy4Gctowu/gMK9XaOXfBNN0pI1sg==",
"version": "10.8.0",
"resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.8.0.tgz",
"integrity": "sha512-62R/RPwTYVaiZ5lVcxcjHCAGwgCyfn8Q3kaQld8/LPm8FRizZeUJmmtrI80KaYCvPJhSB/Pvfma4X3w+aN5Q3A==",
"license": "MIT",
"dependencies": {
"@sentry/core": "10.7.0"
"@sentry/core": "10.8.0"
},
"engines": {
"node": ">=18"

عرض الملف

@@ -1,6 +1,6 @@
{
"name": "mirotalksfu",
"version": "1.9.50",
"version": "1.9.51",
"description": "WebRTC SFU browser-based video calls",
"main": "Server.js",
"scripts": {
@@ -57,11 +57,11 @@
"node": ">=18"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.876.0",
"@aws-sdk/lib-storage": "^3.876.0",
"@aws-sdk/client-s3": "^3.878.0",
"@aws-sdk/lib-storage": "^3.878.0",
"@mattermost/client": "10.10.0",
"@ngrok/ngrok": "1.5.2",
"@sentry/node": "^10.7.0",
"@sentry/node": "^10.8.0",
"async-mutex": "^0.5.0",
"axios": "^1.11.0",
"chokidar": "^4.0.3",

عرض الملف

@@ -78,7 +78,7 @@ let BRAND = {
},
about: {
imageUrl: '../images/mirotalk-logo.gif',
title: '<strong>WebRTC SFU v1.9.50</strong>',
title: '<strong>WebRTC SFU v1.9.51</strong>',
html: `
<button
id="support-button"

عرض الملف

@@ -11,7 +11,7 @@ if (location.href.substr(0, 5) !== 'https') location.href = 'https' + location.h
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
* @version 1.9.50
* @version 1.9.51
*
*/
@@ -3245,6 +3245,15 @@ function handleUsernameEmojiPicker() {
getId('usernameInput').value += data.native;
toggleUsernameEmoji();
}
const chatEmojiButton = getId('chatEmojiButton');
const chatEmoji = getId('chatEmoji');
handleClickOutside(emojiUsernamePicker, chatEmojiButton, () => {
if (chatEmoji && chatEmoji.classList.contains('show')) {
chatEmoji.classList.remove('show');
chatEmojiButton.style.color = '#FFFFFF';
}
});
}
function handleChatEmojiPicker() {
@@ -3920,6 +3929,22 @@ function isHtml(str) {
return false;
}
function handleClickOutside(targetElement, triggerElement, callback, minWidth = 0) {
document.addEventListener('click', (e) => {
if (minWidth && window.innerWidth > minWidth) return;
let el = e.target;
let shouldExclude = false;
while (el) {
if (el instanceof HTMLElement && (el === targetElement || el === triggerElement)) {
shouldExclude = true;
break;
}
el = el.parentElement;
}
if (!shouldExclude) callback();
});
}
function getId(id) {
return document.getElementById(id);
}
@@ -5548,7 +5573,7 @@ function showAbout() {
position: 'center',
imageUrl: BRAND.about?.imageUrl && BRAND.about.imageUrl.trim() !== '' ? BRAND.about.imageUrl : image.about,
customClass: { image: 'img-about' },
title: BRAND.about?.title && BRAND.about.title.trim() !== '' ? BRAND.about.title : 'WebRTC SFU v1.9.50',
title: BRAND.about?.title && BRAND.about.title.trim() !== '' ? BRAND.about.title : 'WebRTC SFU v1.9.51',
html: `
<br />
<div id="about">

عرض الملف

@@ -9,7 +9,7 @@
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
* @version 1.9.50
* @version 1.9.51
*
*/