[mirotalk] - improve emoji picker, update dep

This commit is contained in:
Miroslav Pejic
2025-08-29 13:58:53 +02:00
parent 3da228ada1
commit 1b80620c17
5 changed files with 85 additions and 48 deletions
+1 -1
View File
@@ -45,7 +45,7 @@ dependencies: {
* @license For commercial use or closed source, contact us at license.mirotalk@gmail.com or purchase directly from CodeCanyon
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
* @version 1.5.68
* @version 1.5.69
*
*/
+41 -41
View File
@@ -1,17 +1,17 @@
{
"name": "mirotalk",
"version": "1.5.68",
"version": "1.5.69",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mirotalk",
"version": "1.5.68",
"version": "1.5.69",
"license": "AGPL-3.0",
"dependencies": {
"@mattermost/client": "10.10.0",
"@ngrok/ngrok": "1.5.2",
"@sentry/node": "^10.5.0",
"@sentry/node": "^10.8.0",
"axios": "^1.11.0",
"chokidar": "^4.0.3",
"colors": "^1.4.0",
@@ -29,7 +29,7 @@
"jsdom": "^26.1.0",
"jsonwebtoken": "^9.0.2",
"nodemailer": "^7.0.5",
"openai": "^5.15.0",
"openai": "^5.16.0",
"qs": "^6.14.0",
"socket.io": "^4.8.1",
"swagger-ui-express": "^5.0.1",
@@ -561,9 +561,9 @@
}
},
"node_modules/@opentelemetry/instrumentation-dataloader": {
"version": "0.21.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.21.0.tgz",
"integrity": "sha512-Xu4CZ1bfhdkV3G6iVHFgKTgHx8GbKSqrTU01kcIJRGHpowVnyOPEv1CW5ow+9GU2X4Eki8zoNuVUenFc3RluxQ==",
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-dataloader/-/instrumentation-dataloader-0.21.1.tgz",
"integrity": "sha512-hNAm/bwGawLM8VDjKR0ZUDJ/D/qKR3s6lA5NV+btNaPVm2acqhPcT47l2uCVi+70lng2mywfQncor9v8/ykuyw==",
"license": "Apache-2.0",
"dependencies": {
"@opentelemetry/instrumentation": "^0.203.0"
@@ -691,9 +691,9 @@
}
},
"node_modules/@opentelemetry/instrumentation-kafkajs": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.12.0.tgz",
"integrity": "sha512-bIe4aSAAxytp88nzBstgr6M7ZiEpW6/D1/SuKXdxxuprf18taVvFL2H5BDNGZ7A14K27haHqzYqtCTqFXHZOYg==",
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-kafkajs/-/instrumentation-kafkajs-0.13.0.tgz",
"integrity": "sha512-FPQyJsREOaGH64hcxlzTsIEQC4DYANgTwHjiB7z9lldmvua1LRMVn3/FfBlzXoqF179B0VGYviz6rn75E9wsDw==",
"license": "Apache-2.0",
"dependencies": {
"@opentelemetry/instrumentation": "^0.203.0",
@@ -805,9 +805,9 @@
}
},
"node_modules/@opentelemetry/instrumentation-mysql2": {
"version": "0.49.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.49.0.tgz",
"integrity": "sha512-dCub9wc02mkJWNyHdVEZ7dvRzy295SmNJa+LrAJY2a/+tIiVBQqEAajFzKwp9zegVVnel9L+WORu34rGLQDzxA==",
"version": "0.50.0",
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation-mysql2/-/instrumentation-mysql2-0.50.0.tgz",
"integrity": "sha512-PoOMpmq73rOIE3nlTNLf3B1SyNYGsp7QXHYKmeTZZnJ2Ou7/fdURuOhWOI0e6QZ5gSem18IR1sJi6GOULBQJ9g==",
"license": "Apache-2.0",
"dependencies": {
"@opentelemetry/instrumentation": "^0.203.0",
@@ -978,9 +978,9 @@
}
},
"node_modules/@prisma/instrumentation": {
"version": "6.13.0",
"resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-6.13.0.tgz",
"integrity": "sha512-b97b0sBycGh89RQcqobSgjGl3jwPaC5cQIOFod6EX1v0zIxlXPmL3ckSXxoHpy+Js0QV/tgCzFvqicMJCtezBA==",
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/@prisma/instrumentation/-/instrumentation-6.14.0.tgz",
"integrity": "sha512-Po/Hry5bAeunRDq0yAQueKookW3glpP+qjjvvyOfm6dI2KG5/Y6Bgg3ahyWd7B0u2E+Wf9xRk2rtdda7ySgK1A==",
"license": "Apache-2.0",
"dependencies": {
"@opentelemetry/instrumentation": "^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0"
@@ -1029,18 +1029,18 @@
"license": "Apache-2.0"
},
"node_modules/@sentry/core": {
"version": "10.5.0",
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.5.0.tgz",
"integrity": "sha512-jTJ8NhZSKB2yj3QTVRXfCCngQzAOLThQUxCl9A7Mv+XF10tP7xbH/88MVQ5WiOr2IzcmrB9r2nmUe36BnMlLjA==",
"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.5.0",
"resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.5.0.tgz",
"integrity": "sha512-GqTkOc7tkWqRTKNjipysElh/bzIkhfLsvNGwH6+zel5kU15IdOCFtAqIri85ZLo9vbaIVtjQELXOzfo/5MMAFQ==",
"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",
@@ -1049,7 +1049,7 @@
"@opentelemetry/instrumentation": "^0.203.0",
"@opentelemetry/instrumentation-amqplib": "0.50.0",
"@opentelemetry/instrumentation-connect": "0.47.0",
"@opentelemetry/instrumentation-dataloader": "0.21.0",
"@opentelemetry/instrumentation-dataloader": "0.21.1",
"@opentelemetry/instrumentation-express": "0.52.0",
"@opentelemetry/instrumentation-fs": "0.23.0",
"@opentelemetry/instrumentation-generic-pool": "0.47.0",
@@ -1057,14 +1057,14 @@
"@opentelemetry/instrumentation-hapi": "0.50.0",
"@opentelemetry/instrumentation-http": "0.203.0",
"@opentelemetry/instrumentation-ioredis": "0.51.0",
"@opentelemetry/instrumentation-kafkajs": "0.12.0",
"@opentelemetry/instrumentation-kafkajs": "0.13.0",
"@opentelemetry/instrumentation-knex": "0.48.0",
"@opentelemetry/instrumentation-koa": "0.51.0",
"@opentelemetry/instrumentation-lru-memoizer": "0.48.0",
"@opentelemetry/instrumentation-mongodb": "0.56.0",
"@opentelemetry/instrumentation-mongoose": "0.50.0",
"@opentelemetry/instrumentation-mysql": "0.49.0",
"@opentelemetry/instrumentation-mysql2": "0.49.0",
"@opentelemetry/instrumentation-mysql2": "0.50.0",
"@opentelemetry/instrumentation-pg": "0.55.0",
"@opentelemetry/instrumentation-redis": "0.51.0",
"@opentelemetry/instrumentation-tedious": "0.22.0",
@@ -1072,10 +1072,10 @@
"@opentelemetry/resources": "^2.0.0",
"@opentelemetry/sdk-trace-base": "^2.0.0",
"@opentelemetry/semantic-conventions": "^1.34.0",
"@prisma/instrumentation": "6.13.0",
"@sentry/core": "10.5.0",
"@sentry/node-core": "10.5.0",
"@sentry/opentelemetry": "10.5.0",
"@prisma/instrumentation": "6.14.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"
},
@@ -1084,13 +1084,13 @@
}
},
"node_modules/@sentry/node-core": {
"version": "10.5.0",
"resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.5.0.tgz",
"integrity": "sha512-VC4FCKMvvbUT32apTE0exfI/WigqKskzQA+VdFz61Y+T7mTCADngNrOjG3ilVYPBU7R9KEEziEd/oKgencqkmQ==",
"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.5.0",
"@sentry/opentelemetry": "10.5.0",
"@sentry/core": "10.8.0",
"@sentry/opentelemetry": "10.8.0",
"import-in-the-middle": "^1.14.2"
},
"engines": {
@@ -1107,12 +1107,12 @@
}
},
"node_modules/@sentry/opentelemetry": {
"version": "10.5.0",
"resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.5.0.tgz",
"integrity": "sha512-/Qva5vngtuh79YUUBA8kbbrD6w/A+u1vy1jnLoPMKDxWTfNPqT4tCiOOmWYotnITaE3QO0UtXK/j7LMX8FhtUA==",
"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.5.0"
"@sentry/core": "10.8.0"
},
"engines": {
"node": ">=18"
@@ -4045,9 +4045,9 @@
}
},
"node_modules/openai": {
"version": "5.15.0",
"resolved": "https://registry.npmjs.org/openai/-/openai-5.15.0.tgz",
"integrity": "sha512-kcUdws8K/A8m02I+IqFBwO51gS+87GP89yWEufGbzEi8anBz4FB/bti2QxaJdGwwY4mwJGzx85XO7TuL/Tpu1w==",
"version": "5.16.0",
"resolved": "https://registry.npmjs.org/openai/-/openai-5.16.0.tgz",
"integrity": "sha512-hoEH8ZNvg1HXjU9mp88L/ZH8O082Z8r6FHCXGiWAzVRrEv443aI57qhch4snu07yQydj+AUAWLenAiBXhu89Tw==",
"license": "Apache-2.0",
"bin": {
"openai": "bin/cli"
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "mirotalk",
"version": "1.5.68",
"version": "1.5.69",
"description": "A free WebRTC browser-based video call",
"main": "server.js",
"scripts": {
@@ -43,7 +43,7 @@
"dependencies": {
"@mattermost/client": "10.10.0",
"@ngrok/ngrok": "1.5.2",
"@sentry/node": "^10.5.0",
"@sentry/node": "^10.8.0",
"axios": "^1.11.0",
"chokidar": "^4.0.3",
"colors": "^1.4.0",
@@ -61,7 +61,7 @@
"jsonwebtoken": "^9.0.2",
"js-yaml": "^4.1.0",
"nodemailer": "^7.0.5",
"openai": "^5.15.0",
"openai": "^5.16.0",
"qs": "^6.14.0",
"socket.io": "^4.8.1",
"swagger-ui-express": "^5.0.1",
+1 -1
View File
@@ -75,7 +75,7 @@ let brand = {
},
about: {
imageUrl: '../images/mirotalk-logo.gif',
title: 'WebRTC P2P v1.5.68',
title: 'WebRTC P2P v1.5.69',
html: `
<button
id="support-button"
+39 -2
View File
@@ -15,7 +15,7 @@
* @license For commercial use or closed source, contact us at license.mirotalk@gmail.com or purchase directly from CodeCanyon
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
* @version 1.5.68
* @version 1.5.69
*
*/
@@ -5166,6 +5166,14 @@ function setChatEmojiBtn() {
};
const emojiPicker = new EmojiMart.Picker(pickerOptions);
msgerEmojiPicker.appendChild(emojiPicker);
handleClickOutside(emojiPicker, msgerEmojiBtn, () => {
if (isChatEmojiVisible) {
elemDisplay(msgerEmojiPicker, false);
setColor(msgerEmojiBtn, '#FFFFFF');
isChatEmojiVisible = false;
}
});
}
/**
@@ -6090,6 +6098,12 @@ function handleUsernameEmojiPicker() {
getId('usernameInput').value += data.native;
toggleUsernameEmoji();
}
handleClickOutside(emojiUsernamePicker, initUsernameEmojiButton, () => {
if (usernameEmoji && !usernameEmoji.classList.contains('hidden')) {
usernameEmoji.classList.add('hidden');
}
});
}
/**
@@ -11339,7 +11353,7 @@ function showAbout() {
Swal.fire({
background: swBg,
position: 'center',
title: brand.about?.title && brand.about.title.trim() !== '' ? brand.about.title : 'WebRTC P2P v1.5.68',
title: brand.about?.title && brand.about.title.trim() !== '' ? brand.about.title : 'WebRTC P2P v1.5.69',
imageUrl: brand.about?.imageUrl && brand.about.imageUrl.trim() !== '' ? brand.about.imageUrl : images.about,
customClass: { image: 'img-about' },
html: `
@@ -11907,6 +11921,29 @@ function disable(elem, disabled) {
elem.disabled = disabled;
}
/**
* Handle click outside of an element
* @param {object} targetElement
* @param {object} triggerElement
* @param {function} callback
* @param {number} minWidth
*/
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();
});
}
/**
* Sleep in ms
* @param {integer} ms milleseconds