diff --git a/src-ui/package-lock.json b/src-ui/package-lock.json
index 274117558..fea8403a4 100644
--- a/src-ui/package-lock.json
+++ b/src-ui/package-lock.json
@@ -42,7 +42,7 @@
         "codelyzer": "^6.0.2",
         "concurrently": "7.4.0",
         "jest": "28.1.3",
-        "jest-environment-jsdom": "^29.1.2",
+        "jest-environment-jsdom": "^29.2.2",
         "jest-preset-angular": "^12.2.2",
         "ts-node": "~10.9.1",
         "tslint": "~6.1.3",
@@ -10217,51 +10217,59 @@
       }
     },
     "node_modules/jest-environment-jsdom": {
-      "version": "29.1.2",
-      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.1.2.tgz",
-      "integrity": "sha512-D+XNIKia5+uDjSMwL/G1l6N9MCb7LymKI8FpcLo7kkISjc/Sa9w+dXXEa7u1Wijo3f8sVLqfxdGqYtRhmca+Xw==",
+      "version": "29.2.2",
+      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.2.2.tgz",
+      "integrity": "sha512-5mNtTcky1+RYv9kxkwMwt7fkzyX4EJUarV7iI+NQLigpV4Hz4sgfOdP4kOpCHXbkRWErV7tgXoXLm2CKtucr+A==",
       "dev": true,
       "dependencies": {
-        "@jest/environment": "^29.1.2",
-        "@jest/fake-timers": "^29.1.2",
-        "@jest/types": "^29.1.2",
+        "@jest/environment": "^29.2.2",
+        "@jest/fake-timers": "^29.2.2",
+        "@jest/types": "^29.2.1",
         "@types/jsdom": "^20.0.0",
         "@types/node": "*",
-        "jest-mock": "^29.1.2",
-        "jest-util": "^29.1.2",
+        "jest-mock": "^29.2.2",
+        "jest-util": "^29.2.1",
         "jsdom": "^20.0.0"
       },
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "canvas": "^2.5.0"
+      },
+      "peerDependenciesMeta": {
+        "canvas": {
+          "optional": true
+        }
       }
     },
     "node_modules/jest-environment-jsdom/node_modules/@jest/environment": {
-      "version": "29.1.2",
-      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.1.2.tgz",
-      "integrity": "sha512-rG7xZ2UeOfvOVzoLIJ0ZmvPl4tBEQ2n73CZJSlzUjPw4or1oSWC0s0Rk0ZX+pIBJ04aVr6hLWFn1DFtrnf8MhQ==",
+      "version": "29.2.2",
+      "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.2.2.tgz",
+      "integrity": "sha512-OWn+Vhu0I1yxuGBJEFFekMYc8aGBGrY4rt47SOh/IFaI+D7ZHCk7pKRiSoZ2/Ml7b0Ony3ydmEHRx/tEOC7H1A==",
       "dev": true,
       "dependencies": {
-        "@jest/fake-timers": "^29.1.2",
-        "@jest/types": "^29.1.2",
+        "@jest/fake-timers": "^29.2.2",
+        "@jest/types": "^29.2.1",
         "@types/node": "*",
-        "jest-mock": "^29.1.2"
+        "jest-mock": "^29.2.2"
       },
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
     "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": {
-      "version": "29.1.2",
-      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.1.2.tgz",
-      "integrity": "sha512-GppaEqS+QQYegedxVMpCe2xCXxxeYwQ7RsNx55zc8f+1q1qevkZGKequfTASI7ejmg9WwI+SJCrHe9X11bLL9Q==",
+      "version": "29.2.2",
+      "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.2.2.tgz",
+      "integrity": "sha512-nqaW3y2aSyZDl7zQ7t1XogsxeavNpH6kkdq+EpXncIDvAkjvFD7hmhcIs1nWloengEWUoWqkqSA6MSbf9w6DgA==",
       "dev": true,
       "dependencies": {
-        "@jest/types": "^29.1.2",
+        "@jest/types": "^29.2.1",
         "@sinonjs/fake-timers": "^9.1.2",
         "@types/node": "*",
-        "jest-message-util": "^29.1.2",
-        "jest-mock": "^29.1.2",
-        "jest-util": "^29.1.2"
+        "jest-message-util": "^29.2.1",
+        "jest-mock": "^29.2.2",
+        "jest-util": "^29.2.1"
       },
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
@@ -10280,9 +10288,9 @@
       }
     },
     "node_modules/jest-environment-jsdom/node_modules/@jest/types": {
-      "version": "29.1.2",
-      "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.1.2.tgz",
-      "integrity": "sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg==",
+      "version": "29.2.1",
+      "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.2.1.tgz",
+      "integrity": "sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==",
       "dev": true,
       "dependencies": {
         "@jest/schemas": "^29.0.0",
@@ -10355,18 +10363,18 @@
       }
     },
     "node_modules/jest-environment-jsdom/node_modules/jest-message-util": {
-      "version": "29.1.2",
-      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.1.2.tgz",
-      "integrity": "sha512-9oJ2Os+Qh6IlxLpmvshVbGUiSkZVc2FK+uGOm6tghafnB2RyjKAxMZhtxThRMxfX1J1SOMhTn9oK3/MutRWQJQ==",
+      "version": "29.2.1",
+      "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.2.1.tgz",
+      "integrity": "sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw==",
       "dev": true,
       "dependencies": {
         "@babel/code-frame": "^7.12.13",
-        "@jest/types": "^29.1.2",
+        "@jest/types": "^29.2.1",
         "@types/stack-utils": "^2.0.0",
         "chalk": "^4.0.0",
         "graceful-fs": "^4.2.9",
         "micromatch": "^4.0.4",
-        "pretty-format": "^29.1.2",
+        "pretty-format": "^29.2.1",
         "slash": "^3.0.0",
         "stack-utils": "^2.0.3"
       },
@@ -10375,26 +10383,26 @@
       }
     },
     "node_modules/jest-environment-jsdom/node_modules/jest-mock": {
-      "version": "29.1.2",
-      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.1.2.tgz",
-      "integrity": "sha512-PFDAdjjWbjPUtQPkQufvniXIS3N9Tv7tbibePEjIIprzjgo0qQlyUiVMrT4vL8FaSJo1QXifQUOuPH3HQC/aMA==",
+      "version": "29.2.2",
+      "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.2.2.tgz",
+      "integrity": "sha512-1leySQxNAnivvbcx0sCB37itu8f4OX2S/+gxLAV4Z62shT4r4dTG9tACDywUAEZoLSr36aYUTsVp3WKwWt4PMQ==",
       "dev": true,
       "dependencies": {
-        "@jest/types": "^29.1.2",
+        "@jest/types": "^29.2.1",
         "@types/node": "*",
-        "jest-util": "^29.1.2"
+        "jest-util": "^29.2.1"
       },
       "engines": {
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
     "node_modules/jest-environment-jsdom/node_modules/jest-util": {
-      "version": "29.1.2",
-      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.1.2.tgz",
-      "integrity": "sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ==",
+      "version": "29.2.1",
+      "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.1.tgz",
+      "integrity": "sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g==",
       "dev": true,
       "dependencies": {
-        "@jest/types": "^29.1.2",
+        "@jest/types": "^29.2.1",
         "@types/node": "*",
         "chalk": "^4.0.0",
         "ci-info": "^3.2.0",
@@ -10406,9 +10414,9 @@
       }
     },
     "node_modules/jest-environment-jsdom/node_modules/pretty-format": {
-      "version": "29.1.2",
-      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz",
-      "integrity": "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==",
+      "version": "29.2.1",
+      "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz",
+      "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==",
       "dev": true,
       "dependencies": {
         "@jest/schemas": "^29.0.0",
@@ -25146,45 +25154,45 @@
       }
     },
     "jest-environment-jsdom": {
-      "version": "29.1.2",
-      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.1.2.tgz",
-      "integrity": "sha512-D+XNIKia5+uDjSMwL/G1l6N9MCb7LymKI8FpcLo7kkISjc/Sa9w+dXXEa7u1Wijo3f8sVLqfxdGqYtRhmca+Xw==",
+      "version": "29.2.2",
+      "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.2.2.tgz",
+      "integrity": "sha512-5mNtTcky1+RYv9kxkwMwt7fkzyX4EJUarV7iI+NQLigpV4Hz4sgfOdP4kOpCHXbkRWErV7tgXoXLm2CKtucr+A==",
       "dev": true,
       "requires": {
-        "@jest/environment": "^29.1.2",
-        "@jest/fake-timers": "^29.1.2",
-        "@jest/types": "^29.1.2",
+        "@jest/environment": "^29.2.2",
+        "@jest/fake-timers": "^29.2.2",
+        "@jest/types": "^29.2.1",
         "@types/jsdom": "^20.0.0",
         "@types/node": "*",
-        "jest-mock": "^29.1.2",
-        "jest-util": "^29.1.2",
+        "jest-mock": "^29.2.2",
+        "jest-util": "^29.2.1",
         "jsdom": "^20.0.0"
       },
       "dependencies": {
         "@jest/environment": {
-          "version": "29.1.2",
-          "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.1.2.tgz",
-          "integrity": "sha512-rG7xZ2UeOfvOVzoLIJ0ZmvPl4tBEQ2n73CZJSlzUjPw4or1oSWC0s0Rk0ZX+pIBJ04aVr6hLWFn1DFtrnf8MhQ==",
+          "version": "29.2.2",
+          "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.2.2.tgz",
+          "integrity": "sha512-OWn+Vhu0I1yxuGBJEFFekMYc8aGBGrY4rt47SOh/IFaI+D7ZHCk7pKRiSoZ2/Ml7b0Ony3ydmEHRx/tEOC7H1A==",
           "dev": true,
           "requires": {
-            "@jest/fake-timers": "^29.1.2",
-            "@jest/types": "^29.1.2",
+            "@jest/fake-timers": "^29.2.2",
+            "@jest/types": "^29.2.1",
             "@types/node": "*",
-            "jest-mock": "^29.1.2"
+            "jest-mock": "^29.2.2"
           }
         },
         "@jest/fake-timers": {
-          "version": "29.1.2",
-          "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.1.2.tgz",
-          "integrity": "sha512-GppaEqS+QQYegedxVMpCe2xCXxxeYwQ7RsNx55zc8f+1q1qevkZGKequfTASI7ejmg9WwI+SJCrHe9X11bLL9Q==",
+          "version": "29.2.2",
+          "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.2.2.tgz",
+          "integrity": "sha512-nqaW3y2aSyZDl7zQ7t1XogsxeavNpH6kkdq+EpXncIDvAkjvFD7hmhcIs1nWloengEWUoWqkqSA6MSbf9w6DgA==",
           "dev": true,
           "requires": {
-            "@jest/types": "^29.1.2",
+            "@jest/types": "^29.2.1",
             "@sinonjs/fake-timers": "^9.1.2",
             "@types/node": "*",
-            "jest-message-util": "^29.1.2",
-            "jest-mock": "^29.1.2",
-            "jest-util": "^29.1.2"
+            "jest-message-util": "^29.2.1",
+            "jest-mock": "^29.2.2",
+            "jest-util": "^29.2.1"
           }
         },
         "@jest/schemas": {
@@ -25197,9 +25205,9 @@
           }
         },
         "@jest/types": {
-          "version": "29.1.2",
-          "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.1.2.tgz",
-          "integrity": "sha512-DcXGtoTykQB5jiwCmVr8H4vdg2OJhQex3qPkG+ISyDO7xQXbt/4R6dowcRyPemRnkH7JoHvZuxPBdlq+9JxFCg==",
+          "version": "29.2.1",
+          "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.2.1.tgz",
+          "integrity": "sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==",
           "dev": true,
           "requires": {
             "@jest/schemas": "^29.0.0",
@@ -25251,40 +25259,40 @@
           "dev": true
         },
         "jest-message-util": {
-          "version": "29.1.2",
-          "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.1.2.tgz",
-          "integrity": "sha512-9oJ2Os+Qh6IlxLpmvshVbGUiSkZVc2FK+uGOm6tghafnB2RyjKAxMZhtxThRMxfX1J1SOMhTn9oK3/MutRWQJQ==",
+          "version": "29.2.1",
+          "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.2.1.tgz",
+          "integrity": "sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw==",
           "dev": true,
           "requires": {
             "@babel/code-frame": "^7.12.13",
-            "@jest/types": "^29.1.2",
+            "@jest/types": "^29.2.1",
             "@types/stack-utils": "^2.0.0",
             "chalk": "^4.0.0",
             "graceful-fs": "^4.2.9",
             "micromatch": "^4.0.4",
-            "pretty-format": "^29.1.2",
+            "pretty-format": "^29.2.1",
             "slash": "^3.0.0",
             "stack-utils": "^2.0.3"
           }
         },
         "jest-mock": {
-          "version": "29.1.2",
-          "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.1.2.tgz",
-          "integrity": "sha512-PFDAdjjWbjPUtQPkQufvniXIS3N9Tv7tbibePEjIIprzjgo0qQlyUiVMrT4vL8FaSJo1QXifQUOuPH3HQC/aMA==",
+          "version": "29.2.2",
+          "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.2.2.tgz",
+          "integrity": "sha512-1leySQxNAnivvbcx0sCB37itu8f4OX2S/+gxLAV4Z62shT4r4dTG9tACDywUAEZoLSr36aYUTsVp3WKwWt4PMQ==",
           "dev": true,
           "requires": {
-            "@jest/types": "^29.1.2",
+            "@jest/types": "^29.2.1",
             "@types/node": "*",
-            "jest-util": "^29.1.2"
+            "jest-util": "^29.2.1"
           }
         },
         "jest-util": {
-          "version": "29.1.2",
-          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.1.2.tgz",
-          "integrity": "sha512-vPCk9F353i0Ymx3WQq3+a4lZ07NXu9Ca8wya6o4Fe4/aO1e1awMMprZ3woPFpKwghEOW+UXgd15vVotuNN9ONQ==",
+          "version": "29.2.1",
+          "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.2.1.tgz",
+          "integrity": "sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g==",
           "dev": true,
           "requires": {
-            "@jest/types": "^29.1.2",
+            "@jest/types": "^29.2.1",
             "@types/node": "*",
             "chalk": "^4.0.0",
             "ci-info": "^3.2.0",
@@ -25293,9 +25301,9 @@
           }
         },
         "pretty-format": {
-          "version": "29.1.2",
-          "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.1.2.tgz",
-          "integrity": "sha512-CGJ6VVGXVRP2o2Dorl4mAwwvDWT25luIsYhkyVQW32E4nL+TgW939J7LlKT/npq5Cpq6j3s+sy+13yk7xYpBmg==",
+          "version": "29.2.1",
+          "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.2.1.tgz",
+          "integrity": "sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==",
           "dev": true,
           "requires": {
             "@jest/schemas": "^29.0.0",
diff --git a/src-ui/package.json b/src-ui/package.json
index 02afd7e79..0d460ebf8 100644
--- a/src-ui/package.json
+++ b/src-ui/package.json
@@ -47,7 +47,7 @@
     "codelyzer": "^6.0.2",
     "concurrently": "7.4.0",
     "jest": "28.1.3",
-    "jest-environment-jsdom": "^29.1.2",
+    "jest-environment-jsdom": "^29.2.2",
     "jest-preset-angular": "^12.2.2",
     "ts-node": "~10.9.1",
     "tslint": "~6.1.3",