[mirotalk] - refactor whiteboard, update dep

This commit is contained in:
Miroslav Pejic
2025-12-13 13:56:25 +01:00
parent 97968f0af3
commit faca237e24
7 changed files with 125 additions and 119 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
# ====================================================
# MiroTalk P2P v.1.6.76 - Environment Configuration
# MiroTalk P2P v.1.6.77 - Environment Configuration
# ====================================================
# App environment
+1 -1
View File
@@ -2,7 +2,7 @@
/**
* ==============================================
* MiroTalk P2P v.1.6.76 - Configuration File
* MiroTalk P2P v.1.6.77 - Configuration File
* ==============================================
*
* Branding and customizations require a license:
+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.6.76
* @version 1.6.77
*
*/
+69 -59
View File
@@ -1,16 +1,16 @@
{
"name": "mirotalk",
"version": "1.6.76",
"version": "1.6.77",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mirotalk",
"version": "1.6.76",
"version": "1.6.77",
"license": "AGPL-3.0",
"dependencies": {
"@mattermost/client": "11.1.0",
"@ngrok/ngrok": "1.6.0",
"@ngrok/ngrok": "1.6.1",
"@sentry/node": "^10.30.0",
"axios": "^1.13.2",
"chokidar": "^5.0.0",
@@ -226,6 +226,7 @@
}
],
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
},
@@ -270,6 +271,7 @@
}
],
"license": "MIT",
"peer": true,
"engines": {
"node": ">=18"
}
@@ -338,33 +340,33 @@
}
},
"node_modules/@ngrok/ngrok": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok/-/ngrok-1.6.0.tgz",
"integrity": "sha512-TWC6nh4Kl16HjhG/bVhpYNP5UIyJc9oZetCrnO4r5+gq95eIxZKoLXzuAyC0gF/J+NEY3c1euFAET5Sn9wOWaw==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok/-/ngrok-1.6.1.tgz",
"integrity": "sha512-VFNXErZkehAfw5JLdb4FhSsQug0QmCZSJu2uV8BIMipl78ZEi9U+iLWHDFokYHzC/7FjXOgXW+IXctxI4vys1g==",
"license": "(MIT OR Apache-2.0)",
"engines": {
"node": ">= 10"
},
"optionalDependencies": {
"@ngrok/ngrok-android-arm64": "1.6.0",
"@ngrok/ngrok-darwin-arm64": "1.6.0",
"@ngrok/ngrok-darwin-universal": "1.6.0",
"@ngrok/ngrok-darwin-x64": "1.6.0",
"@ngrok/ngrok-freebsd-x64": "1.6.0",
"@ngrok/ngrok-linux-arm-gnueabihf": "1.6.0",
"@ngrok/ngrok-linux-arm64-gnu": "1.6.0",
"@ngrok/ngrok-linux-arm64-musl": "1.6.0",
"@ngrok/ngrok-linux-x64-gnu": "1.6.0",
"@ngrok/ngrok-linux-x64-musl": "1.6.0",
"@ngrok/ngrok-win32-arm64-msvc": "1.6.0",
"@ngrok/ngrok-win32-ia32-msvc": "1.6.0",
"@ngrok/ngrok-win32-x64-msvc": "1.6.0"
"@ngrok/ngrok-android-arm64": "1.6.1",
"@ngrok/ngrok-darwin-arm64": "1.6.1",
"@ngrok/ngrok-darwin-universal": "1.6.1",
"@ngrok/ngrok-darwin-x64": "1.6.1",
"@ngrok/ngrok-freebsd-x64": "1.6.1",
"@ngrok/ngrok-linux-arm-gnueabihf": "1.6.1",
"@ngrok/ngrok-linux-arm64-gnu": "1.6.1",
"@ngrok/ngrok-linux-arm64-musl": "1.6.1",
"@ngrok/ngrok-linux-x64-gnu": "1.6.1",
"@ngrok/ngrok-linux-x64-musl": "1.6.1",
"@ngrok/ngrok-win32-arm64-msvc": "1.6.1",
"@ngrok/ngrok-win32-ia32-msvc": "1.6.1",
"@ngrok/ngrok-win32-x64-msvc": "1.6.1"
}
},
"node_modules/@ngrok/ngrok-android-arm64": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-android-arm64/-/ngrok-android-arm64-1.6.0.tgz",
"integrity": "sha512-gOfVVjYq7ruPMgH108j99uaBUkwD1DxDpnk+RufQHzxRKL72MZad7QfaRwc1v8iRMyOh3EKYYvU2y8HSXDbSkA==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-android-arm64/-/ngrok-android-arm64-1.6.1.tgz",
"integrity": "sha512-s9WOaXfXFKNQ+f55Y1FMd0cQLjWQ+gdZR6pFVDtuwkFVc3AkkbVepYXzXpUZ4CfBOXl13Y5o3r8PFNgSiFSwpw==",
"cpu": [
"arm64"
],
@@ -378,9 +380,9 @@
}
},
"node_modules/@ngrok/ngrok-darwin-arm64": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-arm64/-/ngrok-darwin-arm64-1.6.0.tgz",
"integrity": "sha512-YdKlEkz0PHHnoy2UlEH2XMrupetmT6K6bLrF+MFWrKYKpIbOuGV4HcVioh1iu0NTmn7xJwrAbo/Mwx2E95/qdg==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-arm64/-/ngrok-darwin-arm64-1.6.1.tgz",
"integrity": "sha512-NKxjzd1JAhi1gtznvrfSmlMXhc6gboVMxpofOQaPzy+mYUn/5+w+wqV0AyehL303EM4jj5BG6G3JNZ+d4jUVcg==",
"cpu": [
"arm64"
],
@@ -394,9 +396,9 @@
}
},
"node_modules/@ngrok/ngrok-darwin-universal": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-universal/-/ngrok-darwin-universal-1.6.0.tgz",
"integrity": "sha512-yiUCkg10+vUKgvkD2rAZHlzvZmINUNF7mna7iL+ydh4pOx6jamSwDQ2QRseVAyxC9eZVy/rKFYLVnz2Ci+0D9w==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-universal/-/ngrok-darwin-universal-1.6.1.tgz",
"integrity": "sha512-R5f/B7sdPGfmFr1pwAT0nt9SW0R9tkg3uh+70c9J+iNzI89Ff1pgSIK4MdWcqJIJdSvzejgZBgYtGun+pzPClA==",
"license": "MIT",
"optional": true,
"os": [
@@ -407,9 +409,9 @@
}
},
"node_modules/@ngrok/ngrok-darwin-x64": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-x64/-/ngrok-darwin-x64-1.6.0.tgz",
"integrity": "sha512-a6LbwODDDCRpriILe+1lq+zuIjGbj+pR1A0KThTP8riVTQ538DMqR09kv5Oz7ZqcclS/IK+3ZLKkxHuPX9ob3g==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-darwin-x64/-/ngrok-darwin-x64-1.6.1.tgz",
"integrity": "sha512-6btheHdzIBU0BShEqyiF4En5EPpXQ/zMqdfUgOen1RB1EOMgVqA3UKhTry1BlsKgBbFlhnA3ills0MGPxGHo+A==",
"cpu": [
"x64"
],
@@ -423,9 +425,9 @@
}
},
"node_modules/@ngrok/ngrok-freebsd-x64": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-freebsd-x64/-/ngrok-freebsd-x64-1.6.0.tgz",
"integrity": "sha512-t77ayWr0zPrW75DstzvoE6Hwj7h1mpQSFKQ3I0B3iC9o7XZhcNkwFpX8QLbmQNkeHxz5UhlBtzOYPdzDJY+3uw==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-freebsd-x64/-/ngrok-freebsd-x64-1.6.1.tgz",
"integrity": "sha512-WFJQxM8bAdOyFZvcH+WJuO+/vUpswJ8pQMHDHFvkyTok4MYY7IntkP1HY3rw5zlsNz7OnBbx4ngDDEyAKLIiZA==",
"cpu": [
"x64"
],
@@ -439,9 +441,9 @@
}
},
"node_modules/@ngrok/ngrok-linux-arm-gnueabihf": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm-gnueabihf/-/ngrok-linux-arm-gnueabihf-1.6.0.tgz",
"integrity": "sha512-NBCJnPAbl44Ua3dpO+kOkyz4cGGLu2FiDcEHBES7OARiSscoui+DyNPLe5auZFjag5/0B3ZNiDgCcdRBAi+KNQ==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm-gnueabihf/-/ngrok-linux-arm-gnueabihf-1.6.1.tgz",
"integrity": "sha512-iTH/g1ZGdmb1v8qPfRmgutt1mjcxxeBVpl3Eb1+LVjXC5VqNYN3QgZsl93XDU6YTQEnowgB8NunGnCxg6r4V+g==",
"cpu": [
"arm"
],
@@ -455,9 +457,9 @@
}
},
"node_modules/@ngrok/ngrok-linux-arm64-gnu": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-gnu/-/ngrok-linux-arm64-gnu-1.6.0.tgz",
"integrity": "sha512-i65WIaeImO2/oyTfwUAVW1j/poLMzX/PAYsDRLXOac6/1DV6kIQX1kmr+CEs6NtmKgD76QiApbqtksd9MDlncg==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-gnu/-/ngrok-linux-arm64-gnu-1.6.1.tgz",
"integrity": "sha512-a4LRMFbn5nGwP1n8w54Td9OPmTgYz62IaUwgHzcnv8mzXq8YqR7bwjRtcASmLpqRRv2XM+E1bO5z2qtQEzT0qg==",
"cpu": [
"arm64"
],
@@ -471,9 +473,9 @@
}
},
"node_modules/@ngrok/ngrok-linux-arm64-musl": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-musl/-/ngrok-linux-arm64-musl-1.6.0.tgz",
"integrity": "sha512-7osqE43Pl6HiTeLZSEnSTtgbNQ1zqYovYjZ7lGgeKJHlgWXE6RvE7qhdjDw17ebUuT0IS8JPGZFnlyF6J0UKPQ==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-arm64-musl/-/ngrok-linux-arm64-musl-1.6.1.tgz",
"integrity": "sha512-KMj0SN9haYfMKTuIufDQ4GkMwIB07anVsj4PZoBuy61CW45YgeLzU6XbqYF1bUwfSeHiTvz7MUZT1FDDQxJsKg==",
"cpu": [
"arm64"
],
@@ -487,9 +489,9 @@
}
},
"node_modules/@ngrok/ngrok-linux-x64-gnu": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-gnu/-/ngrok-linux-x64-gnu-1.6.0.tgz",
"integrity": "sha512-jP3enLStnTGTKLBXqctVt3wIVvGLP/BkLKYuXwrU1EqchtvDcsAhpspeUeX23SAtLXUgbX9vN1B6IvsAxWcyxw==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-gnu/-/ngrok-linux-x64-gnu-1.6.1.tgz",
"integrity": "sha512-mjPC+XJazBuwXPD1VxbqrUKMigS7yJuqFq3waI9QjtiEUAVXk3lbouGfkR2UPXZ+soVhyh3amlthYGm/p3rzKA==",
"cpu": [
"x64"
],
@@ -503,9 +505,9 @@
}
},
"node_modules/@ngrok/ngrok-linux-x64-musl": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-musl/-/ngrok-linux-x64-musl-1.6.0.tgz",
"integrity": "sha512-hrBrXCofgmY9pc36N0nfDS+bfomu5hOqt0N5IQkL4n0UaQcl48tKddIex2eR+mU3QBYh6p1XKxAwyAVjwplD2w==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-linux-x64-musl/-/ngrok-linux-x64-musl-1.6.1.tgz",
"integrity": "sha512-n4GxqkqvTJp0mkFz2Qr4JTnJ//vIZa7wRQAWOL9P05zDFqiiBd3qHG5aVl6yBlN49lWMcZ1saI7A4OYyLOANlQ==",
"cpu": [
"x64"
],
@@ -519,9 +521,9 @@
}
},
"node_modules/@ngrok/ngrok-win32-arm64-msvc": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-arm64-msvc/-/ngrok-win32-arm64-msvc-1.6.0.tgz",
"integrity": "sha512-EXJXFaXh/cNRaTqs02EmysILtcSImFWwC98mjG6PU5MEG+gqNz8AddnqFytY0RRxkR9SxwnC+7QAV3qYOSU6kA==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-arm64-msvc/-/ngrok-win32-arm64-msvc-1.6.1.tgz",
"integrity": "sha512-9yR4ztXjVkzu6BwKxCNz7xXE4JKs1evF3+MFzy9aJvn7x0WBTj3I6pN8NQ8mUCsx817mjhgXrSnuWG3DUz4xTQ==",
"cpu": [
"arm64"
],
@@ -535,9 +537,9 @@
}
},
"node_modules/@ngrok/ngrok-win32-ia32-msvc": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-ia32-msvc/-/ngrok-win32-ia32-msvc-1.6.0.tgz",
"integrity": "sha512-R+5WB6ONT4ynHFusxRw8kbXx2SBYftl6XUiNQNmwwCdwdNO7fPzdwhbmbzgfCEjQrYQrXD1vs5J+zJJeSaAicw==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-ia32-msvc/-/ngrok-win32-ia32-msvc-1.6.1.tgz",
"integrity": "sha512-BpXjR6+Y6/gydEpdT5DBAyr7LBdW4KvtZ+5N2l4UTnH+j4yHyhQ0PZOKSOxLJToDobJcCRVQQuNn6Xdj7yVysw==",
"cpu": [
"ia32"
],
@@ -551,9 +553,9 @@
}
},
"node_modules/@ngrok/ngrok-win32-x64-msvc": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-x64-msvc/-/ngrok-win32-x64-msvc-1.6.0.tgz",
"integrity": "sha512-4QViW0GSPsjmghYPExO0Jt9DtIybK23MXPP0BltOuoFP0iyA15vb03QXAI4223zlSLWSWYnOx+qnCuzV1qT0lQ==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngrok/ngrok-win32-x64-msvc/-/ngrok-win32-x64-msvc-1.6.1.tgz",
"integrity": "sha512-zk4vA4JvRh7srIM3s9dDKFeaa9pjpEgVGku4+rZFI83o5ZvkQ1csRV+2nJIOKs5+hWVm0bIij2JLH+WvWcmPZQ==",
"cpu": [
"x64"
],
@@ -571,6 +573,7 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
"integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
"license": "Apache-2.0",
"peer": true,
"engines": {
"node": ">=8.0.0"
}
@@ -592,6 +595,7 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.2.0.tgz",
"integrity": "sha512-qRkLWiUEZNAmYapZ7KGS5C4OmBLcP/H2foXeOEaowYCR0wi89fHejrfYfbuLVCMLp/dWZXKvQusdbUEZjERfwQ==",
"license": "Apache-2.0",
"peer": true,
"engines": {
"node": "^18.19.0 || >=20.6.0"
},
@@ -604,6 +608,7 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz",
"integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@opentelemetry/semantic-conventions": "^1.29.0"
},
@@ -619,6 +624,7 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.208.0.tgz",
"integrity": "sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@opentelemetry/api-logs": "0.208.0",
"import-in-the-middle": "^2.0.0",
@@ -1006,6 +1012,7 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz",
"integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@opentelemetry/core": "2.2.0",
"@opentelemetry/semantic-conventions": "^1.29.0"
@@ -1022,6 +1029,7 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz",
"integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"@opentelemetry/core": "2.2.0",
"@opentelemetry/resources": "2.2.0",
@@ -1039,6 +1047,7 @@
"resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz",
"integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==",
"license": "Apache-2.0",
"peer": true,
"engines": {
"node": ">=14"
}
@@ -1423,6 +1432,7 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
"peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -2733,6 +2743,7 @@
"resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
"integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
"license": "MIT",
"peer": true,
"dependencies": {
"accepts": "^2.0.0",
"body-parser": "^2.2.1",
@@ -4695,7 +4706,6 @@
}
],
"license": "MIT",
"peer": true,
"bin": {
"nanoid": "bin/nanoid.cjs"
},
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "mirotalk",
"version": "1.6.76",
"version": "1.6.77",
"description": "A free WebRTC browser-based video call",
"main": "server.js",
"scripts": {
@@ -42,7 +42,7 @@
"homepage": "https://github.com/miroslavpejic85/mirotalk",
"dependencies": {
"@mattermost/client": "11.1.0",
"@ngrok/ngrok": "1.6.0",
"@ngrok/ngrok": "1.6.1",
"@sentry/node": "^10.30.0",
"axios": "^1.13.2",
"chokidar": "^5.0.0",
+1 -1
View File
@@ -77,7 +77,7 @@ let brand = {
},
about: {
imageUrl: '../images/mirotalk-logo.gif',
title: 'WebRTC P2P v1.6.76',
title: 'WebRTC P2P v1.6.77',
html: `
<button
id="support-button"
+50 -54
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.6.76
* @version 1.6.77
*
*/
@@ -668,7 +668,9 @@ let wbIsLock = false;
let wbIsDrawing = false;
let wbIsOpen = false;
let wbIsRedoing = false;
let wbIsObject = false;
let wbIsEraser = false;
let wbIsPencil = false;
let wbIsVanishing = false;
let wbIsBgTransparent = false;
let wbPop = [];
@@ -5937,17 +5939,18 @@ function setMyWhiteboardBtn() {
handleWhiteboardToggle();
});
whiteboardPencilBtn.addEventListener('click', (e) => {
whiteboardIsDrawingMode(true);
whiteboardResetAllMode();
whiteboardIsPencilMode(true);
});
whiteboardObjectBtn.addEventListener('click', (e) => {
whiteboardIsEraser(false);
whiteboardIsVanishingMode(false);
whiteboardIsDrawingMode(false);
whiteboardResetAllMode();
whiteboardIsObjectMode(true);
});
whiteboardStickyNoteBtn.addEventListener('click', (e) => {
whiteboardAddObj('stickyNote');
});
whiteboardVanishingBtn.addEventListener('click', (e) => {
whiteboardResetAllMode();
whiteboardIsVanishingMode(true);
});
whiteboardUndoBtn.addEventListener('click', (e) => {
@@ -5989,7 +5992,8 @@ function setMyWhiteboardBtn() {
whiteboardAddObj('circle');
});
whiteboardEraserBtn.addEventListener('click', (e) => {
whiteboardIsEraser(true);
whiteboardResetAllMode();
whiteboardIsEraserMode(true);
});
whiteboardCleanBtn.addEventListener('click', (e) => {
confirmCleanBoard();
@@ -6005,7 +6009,8 @@ function setMyWhiteboardBtn() {
});
wbDrawingColorEl.addEventListener('change', (e) => {
wbCanvas.freeDrawingBrush.color = wbDrawingColorEl.value;
whiteboardIsDrawingMode(true);
whiteboardResetAllMode();
whiteboardIsPencilMode(true);
});
wbBackgroundColorEl.addEventListener('change', (e) => {
setWhiteboardBgColor(wbBackgroundColorEl.value);
@@ -11320,7 +11325,7 @@ function setupWhiteboardCanvas() {
wbCanvas = new fabric.Canvas('wbCanvas');
wbCanvas.freeDrawingBrush.color = '#FFFFFF';
wbCanvas.freeDrawingBrush.width = 3;
whiteboardIsDrawingMode(true);
whiteboardIsPencilMode(true);
}
/**
@@ -11405,62 +11410,48 @@ function setWhiteboardBgColor(color) {
}
/**
* Whiteboard: drawing mode
* @param {boolean} status of drawing mode
* Reset all whiteboard mode
*/
function whiteboardIsDrawingMode(status) {
wbCanvas.isDrawingMode = status;
if (status) {
setColor(whiteboardPencilBtn, 'green');
setColor(whiteboardVanishingBtn, 'white');
setColor(whiteboardObjectBtn, 'white');
setColor(whiteboardEraserBtn, 'white');
wbIsEraser = false;
wbIsVanishing = false;
} else {
setColor(whiteboardPencilBtn, 'white');
setColor(whiteboardVanishingBtn, 'white');
setColor(whiteboardObjectBtn, 'green');
}
function whiteboardResetAllMode() {
whiteboardIsPencilMode(false);
whiteboardIsVanishingMode(false);
whiteboardIsObjectMode(false);
whiteboardIsEraserMode(false);
}
/**
* Whiteboard: vanishing mode
* @param {boolean} status if vanishing mode on
* Set whiteboard Pencil mode
*/
function whiteboardIsPencilMode(status) {
wbCanvas.isDrawingMode = status;
wbIsPencil = status;
setColor(whiteboardPencilBtn, wbIsPencil ? 'green' : 'white');
}
/**
* Set whiteboard Vanishing mode
*/
function whiteboardIsVanishingMode(status) {
wbCanvas.isDrawingMode = status;
wbIsVanishing = status;
if (status) {
setColor(whiteboardVanishingBtn, 'green');
setColor(whiteboardPencilBtn, 'white');
setColor(whiteboardObjectBtn, 'white');
setColor(whiteboardEraserBtn, 'white');
wbIsEraser = false;
} else {
setColor(whiteboardVanishingBtn, 'white');
wbCanvas.isDrawingMode = false;
setColor(whiteboardObjectBtn, 'green');
}
wbCanvas.freeDrawingBrush.color = wbIsVanishing ? 'yellow' : wbDrawingColorEl.value;
setColor(whiteboardVanishingBtn, wbIsVanishing ? 'green' : 'white');
}
/**
* Whiteboard: eraser
* @param {boolean} status if eraser on
* Set whiteboard Object mode
*/
function whiteboardIsEraser(status) {
if (status) {
wbCanvas.isDrawingMode = false;
wbIsVanishing = false;
setColor(whiteboardPencilBtn, 'white');
setColor(whiteboardVanishingBtn, 'white');
setColor(whiteboardObjectBtn, 'white');
setColor(whiteboardEraserBtn, 'green');
} else {
setColor(whiteboardEraserBtn, 'white');
setColor(whiteboardObjectBtn, 'green');
}
function whiteboardIsObjectMode(status) {
wbIsObject = status;
setColor(whiteboardObjectBtn, status ? 'green' : 'white');
}
/**
* Set whiteboard Eraser mode
*/
function whiteboardIsEraserMode(status) {
wbIsEraser = status;
setColor(whiteboardEraserBtn, wbIsEraser ? 'green' : 'white');
}
/**
@@ -11477,6 +11468,8 @@ function setColor(elem, color) {
* @param {string} type of object to add
*/
function whiteboardAddObj(type) {
wbCanvas.freeDrawingBrush.color = wbDrawingColorEl.value;
switch (type) {
case 'imgUrl':
Swal.fire({
@@ -11844,7 +11837,8 @@ async function renderPdfToCanvas(wbCanvasPdf) {
reader.onload = async function (event) {
wbCanvas.requestRenderAll();
await pdfToImage(event.target.result, wbCanvas);
whiteboardIsDrawingMode(false);
whiteboardResetAllMode();
whiteboardIsObjectMode(false);
wbCanvasToJson();
};
reader.readAsDataURL(wbCanvasPdf);
@@ -11934,7 +11928,8 @@ async function pdfToImage(pdfData, canvas) {
function addWbCanvasObj(obj) {
if (obj) {
wbCanvas.add(obj).setActiveObject(obj);
whiteboardIsDrawingMode(false);
whiteboardResetAllMode();
whiteboardIsObjectMode(true);
wbCanvasToJson();
} else {
console.error('Invalid input. Expected an obj of canvas elements');
@@ -12397,6 +12392,7 @@ function setupWhiteboardShortcuts() {
event.preventDefault();
break;
case 'KeyV': // Vanishing Pen
whiteboardResetAllMode();
whiteboardIsVanishingMode(!wbIsVanishing);
event.preventDefault();
break;
@@ -13231,7 +13227,7 @@ function showAbout() {
Swal.fire({
background: swBg,
position: 'center',
title: brand.about?.title && brand.about.title.trim() !== '' ? brand.about.title : 'WebRTC P2P v1.6.76',
title: brand.about?.title && brand.about.title.trim() !== '' ? brand.about.title : 'WebRTC P2P v1.6.77',
imageUrl: brand.about?.imageUrl && brand.about.imageUrl.trim() !== '' ? brand.about.imageUrl : images.about,
customClass: { image: 'img-about' },
html: `