diff --git a/development/config/import.mjs b/development/config/import.mjs
index f6580e704dd6e7b5c13ed3fd72aa2df230263fdc..c4926dc59f8f08b6d07eb43bea8d88e4ed1df6a6 100644
--- a/development/config/import.mjs
+++ b/development/config/import.mjs
@@ -1,8 +1,8 @@
 export const projectRoot = "/home/vs/workspaces/oss/monster/monster";
 export const sourcePath = "/home/vs/workspaces/oss/monster/monster/source";
 export const developmentPath = "/home/vs/workspaces/oss/monster/monster/development";
-export const pnpxBin = "/nix/store/hd8c9fhdqv36nyh5zg4z32ccficlz9n8-pnpm-8.15.5/bin/pnpx";
-export const nodeBin = "/nix/store/k5inwzpp6a0295pd3nfckk9hq8wmifhz-nodejs-20.15.1/bin/node";
+export const pnpxBin = "/nix/store/2viji2z5i8ifq0ymhir2z8yyk1g29ddz-pnpm-8.15.5/bin/pnpx";
+export const nodeBin = "/nix/store/if6aqyl3sl0hz14a12mndj35swb1mcwi-nodejs-20.17.0/bin/node";
 export const license = "/**" + "\n" +
     " * Copyright © schukai GmbH and all contributing authors, {{copyRightYear}}. All rights reserved." + "\n" +
     " * Node module: @schukai/monster" + "\n" +
diff --git a/development/issues/closed/259.html b/development/issues/closed/259.html
new file mode 100644
index 0000000000000000000000000000000000000000..b2858cb007f60636b116fdb53b80672c1cc8a000
--- /dev/null
+++ b/development/issues/closed/259.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>copy control should close after leave div #259</title>
+    <script src="./259.mjs" type="module"></script>
+</head>
+<body>
+    <h1>copy control should close after leave div #259</h1>
+    <p></p>
+    <ul>
+        <li><a href="https://gitlab.schukai.com/oss/libraries/javascript/monster/-/issues/259">Issue #259</a></li>
+        <li><a href="/">Back to overview</a></li>
+    </ul>
+    <main>
+
+         
+        <monster-copy>
+           <span> das ist der text 1</span>
+        </monster-copy>
+        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>        <br>
+        <br>
+        <br>
+        <monster-copy>
+            das ist der text 2
+        </monster-copy>
+        
+
+    </main>
+</body>
+</html>
diff --git a/development/issues/closed/259.mjs b/development/issues/closed/259.mjs
new file mode 100644
index 0000000000000000000000000000000000000000..59eccb40d89838372e0c9b48ed3258e74e67562a
--- /dev/null
+++ b/development/issues/closed/259.mjs
@@ -0,0 +1,15 @@
+/**
+* @file development/issues/open/259.mjs
+* @url https://gitlab.schukai.com/oss/libraries/javascript/monster/-/issues/259
+* @description copy control should close after leave div
+* @issue 259
+*/
+
+import "../../../source/components/style/property.pcss";
+import "../../../source/components/style/link.pcss";
+import "../../../source/components/style/color.pcss";
+import "../../../source/components/style/theme.pcss";
+import "../../../source/components/style/normalize.pcss";
+import "../../../source/components/style/typography.pcss";
+import "../../../source/components/content/copy.mjs";
+
diff --git a/flake.lock b/flake.lock
index 0bc61a9356ced33ec95f18e07ab00e65a8873eb9..1a499d0e7aefad066e169f4fe49bacdb2a0e34d0 100644
--- a/flake.lock
+++ b/flake.lock
@@ -5,7 +5,9 @@
         "commonFlake": "commonFlake",
         "flake-utils": "flake-utils",
         "flakeUtils": "flakeUtils",
-        "nixpkgs": "nixpkgs_2",
+        "nixpkgs": [
+          "nixpkgs"
+        ],
         "nixpkgsUnstable": "nixpkgsUnstable",
         "versionFlake": "versionFlake"
       },
@@ -45,7 +47,9 @@
     },
     "commonFlake_2": {
       "inputs": {
-        "nixpkgs": "nixpkgs_4"
+        "nixpkgs": [
+          "nixpkgs"
+        ]
       },
       "locked": {
         "dir": "common",
@@ -148,22 +152,6 @@
       }
     },
     "nixpkgs_2": {
-      "locked": {
-        "lastModified": 1726447378,
-        "narHash": "sha256-2yV8nmYE1p9lfmLHhOCbYwQC/W8WYfGQABoGzJOb1JQ=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "086b448a5d54fd117f4dc2dee55c9f0ff461bdc1",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "nixos-24.05",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_3": {
       "locked": {
         "lastModified": 1704145853,
         "narHash": "sha256-G/1AMt9ibpeMlcxvD1vNaC8imGaK+g7zZ99e29BLgWw=",
@@ -178,28 +166,13 @@
         "type": "indirect"
       }
     },
-    "nixpkgs_4": {
-      "locked": {
-        "lastModified": 1714971268,
-        "narHash": "sha256-IKwMSwHj9+ec660l+I4tki/1NRoeGpyA2GdtdYpAgEw=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "27c13997bf450a01219899f5a83bd6ffbfc70d3c",
-        "type": "github"
-      },
-      "original": {
-        "id": "nixpkgs",
-        "ref": "nixos-23.11",
-        "type": "indirect"
-      }
-    },
-    "nixpkgs_5": {
+    "nixpkgs_3": {
       "locked": {
-        "lastModified": 1728193676,
-        "narHash": "sha256-PbDWAIjKJdlVg+qQRhzdSor04bAPApDqIv2DofTyynk=",
+        "lastModified": 1731239293,
+        "narHash": "sha256-q2yjIWFFcTzp5REWQUOU9L6kHdCDmFDpqeix86SOvDc=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6",
+        "rev": "9256f7c71a195ebe7a218043d9f93390d49e6884",
         "type": "github"
       },
       "original": {
@@ -209,27 +182,12 @@
         "type": "github"
       }
     },
-    "nixpkgs_6": {
-      "locked": {
-        "lastModified": 1704145853,
-        "narHash": "sha256-G/1AMt9ibpeMlcxvD1vNaC8imGaK+g7zZ99e29BLgWw=",
-        "owner": "NixOS",
-        "repo": "nixpkgs",
-        "rev": "2d2ea8eab9e400618748ab1a6a108255233b602c",
-        "type": "github"
-      },
-      "original": {
-        "id": "nixpkgs",
-        "ref": "nixos-23.11",
-        "type": "indirect"
-      }
-    },
     "root": {
       "inputs": {
         "certificatesFlake": "certificatesFlake",
         "commonFlake": "commonFlake_2",
         "flake-utils": "flake-utils_2",
-        "nixpkgs": "nixpkgs_5",
+        "nixpkgs": "nixpkgs_3",
         "versionFlake": "versionFlake_2"
       }
     },
@@ -280,7 +238,7 @@
     },
     "versionFlake": {
       "inputs": {
-        "nixpkgs": "nixpkgs_3"
+        "nixpkgs": "nixpkgs_2"
       },
       "locked": {
         "lastModified": 1716914109,
@@ -298,7 +256,9 @@
     },
     "versionFlake_2": {
       "inputs": {
-        "nixpkgs": "nixpkgs_6"
+        "nixpkgs": [
+          "nixpkgs"
+        ]
       },
       "locked": {
         "lastModified": 1716914109,
diff --git a/flake.nix b/flake.nix
index 5406bbc1fd34086d485ed5b621b9388cfed8452a..0b22742a927987e2f64b3b1e6bd7bee66e00ea70 100644
--- a/flake.nix
+++ b/flake.nix
@@ -8,16 +8,19 @@
     commonFlake = {
       url = "git+https://gitlab.schukai.com/schukai/entwicklung/nix-flakes.git?dir=common";
       flake = true;
+      inputs.nixpkgs.follows = "nixpkgs";
     };
 
     versionFlake = {
       url = "git+https://gitlab.schukai.com/oss/utilities/version.git";
       flake = true;
+      inputs.nixpkgs.follows = "nixpkgs";
     };
 
     certificatesFlake = {
       url = "git+https://gitlab.schukai.com/alvine/certificates.git";
       flake = true;
+      inputs.nixpkgs.follows = "nixpkgs";
     };
   };
 
diff --git a/nix/config/release.nix b/nix/config/release.nix
index 3a6377bc39e4fbdf3f2467ed42d402e8a2bc1b1e..05df912d710defb37f020289696ca4dc3d1f2e4a 100644
--- a/nix/config/release.nix
+++ b/nix/config/release.nix
@@ -3,4 +3,4 @@
   commit = "f09bcc861b02213b8e7d1d409a0788cf44ba222c";
   name = "Monster";
   mnemonic = "monster";
-}
\ No newline at end of file
+}
diff --git a/package.json b/package.json
index 4ffa3d5be47f5e73137599535379ae40de5b79af..9181ff0df6cf3676508fb005dbc02e579b822fa5 100644
--- a/package.json
+++ b/package.json
@@ -70,7 +70,7 @@
     "jsdom-global": "^3.0.2",
     "mocha": "^10.8.2",
     "playwright": "^1.48.2",
-    "postcss": "^8.4.47",
+    "postcss": "^8.4.49",
     "postcss-fluid": "^1.4.2",
     "postcss-for": "^2.1.1",
     "postcss-import": "^16.1.0",
@@ -82,7 +82,7 @@
     "postcss-responsive-type": "^1.0.0",
     "postcss-rtlcss": "^5.5.0",
     "postcss-strip-units": "^2.0.1",
-    "puppeteer": "^23.7.0",
+    "puppeteer": "^23.7.1",
     "sinon": "^19.0.2",
     "turbowatch": "^2.29.4",
     "url": "^0.11.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3e7472cf14e017b3d9fe42769e0b13ba36a7608b..a507b0d508832882d20f5f3602c123520736356d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -32,7 +32,7 @@ importers:
         version: 5.12.4
       autoprefixer:
         specifier: ^10.4.20
-        version: 10.4.20(postcss@8.4.47)
+        version: 10.4.20(postcss@8.4.49)
       browserslist:
         specifier: ^4.24.2
         version: 4.24.2
@@ -53,7 +53,7 @@ importers:
         version: 0.0.2
       cssnano:
         specifier: ^7.0.6
-        version: 7.0.6(postcss@8.4.47)
+        version: 7.0.6(postcss@8.4.49)
       dom-storage:
         specifier: ^2.1.0
         version: 2.1.0
@@ -94,8 +94,8 @@ importers:
         specifier: ^1.48.2
         version: 1.48.2
       postcss:
-        specifier: ^8.4.47
-        version: 8.4.47
+        specifier: ^8.4.49
+        version: 8.4.49
       postcss-fluid:
         specifier: ^1.4.2
         version: 1.4.2
@@ -104,34 +104,34 @@ importers:
         version: 2.1.1
       postcss-import:
         specifier: ^16.1.0
-        version: 16.1.0(postcss@8.4.47)
+        version: 16.1.0(postcss@8.4.49)
       postcss-load-config:
         specifier: ^6.0.1
-        version: 6.0.1(jiti@1.21.6)(postcss@8.4.47)(yaml@2.6.0)
+        version: 6.0.1(jiti@1.21.6)(postcss@8.4.49)(yaml@2.6.0)
       postcss-mixins:
         specifier: ^11.0.3
-        version: 11.0.3(postcss@8.4.47)
+        version: 11.0.3(postcss@8.4.49)
       postcss-nested:
         specifier: ^6.2.0
-        version: 6.2.0(postcss@8.4.47)
+        version: 6.2.0(postcss@8.4.49)
       postcss-nesting:
         specifier: ^13.0.1
-        version: 13.0.1(postcss@8.4.47)
+        version: 13.0.1(postcss@8.4.49)
       postcss-normalize:
         specifier: ^13.0.1
-        version: 13.0.1(browserslist@4.24.2)(postcss@8.4.47)
+        version: 13.0.1(browserslist@4.24.2)(postcss@8.4.49)
       postcss-responsive-type:
         specifier: ^1.0.0
         version: 1.0.0
       postcss-rtlcss:
         specifier: ^5.5.0
-        version: 5.5.0(postcss@8.4.47)
+        version: 5.5.0(postcss@8.4.49)
       postcss-strip-units:
         specifier: ^2.0.1
         version: 2.0.1
       puppeteer:
-        specifier: ^23.7.0
-        version: 23.7.0(typescript@5.4.2)
+        specifier: ^23.7.1
+        version: 23.7.1(typescript@5.4.2)
       sinon:
         specifier: ^19.0.2
         version: 19.0.2
@@ -149,25 +149,25 @@ importers:
         version: 0.12.5
       vite:
         specifier: 5.4.8
-        version: 5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)
+        version: 5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
       vite-plugin-banner:
         specifier: ^0.8.0
         version: 0.8.0
       vite-plugin-directory-index:
         specifier: ^3.0.1
-        version: 3.0.1(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0))
+        version: 3.0.1(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))
       vite-plugin-list-directory-contents:
         specifier: ^1.4.5
-        version: 1.4.5(@types/node@18.19.64)(rollup@4.24.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)
+        version: 1.4.5(@types/node@18.19.64)(rollup@4.25.0)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
       vite-plugin-minify:
         specifier: ^2.0.1
-        version: 2.0.1(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0))
+        version: 2.0.1(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))
       vite-plugin-mock:
         specifier: ^3.0.2
-        version: 3.0.2(esbuild@0.24.0)(mockjs@1.1.0)(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0))
+        version: 3.0.2(esbuild@0.24.0)(mockjs@1.1.0)(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))
       vite-plugin-terminal:
         specifier: ^1.2.0
-        version: 1.2.0(rollup@4.24.4)(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0))
+        version: 1.2.0(rollup@4.25.0)(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))
       ws:
         specifier: ^8.18.0
         version: 8.18.0
@@ -789,93 +789,93 @@ packages:
       rollup:
         optional: true
 
-  '@rollup/rollup-android-arm-eabi@4.24.4':
-    resolution: {integrity: sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==}
+  '@rollup/rollup-android-arm-eabi@4.25.0':
+    resolution: {integrity: sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA==}
     cpu: [arm]
     os: [android]
 
-  '@rollup/rollup-android-arm64@4.24.4':
-    resolution: {integrity: sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==}
+  '@rollup/rollup-android-arm64@4.25.0':
+    resolution: {integrity: sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg==}
     cpu: [arm64]
     os: [android]
 
-  '@rollup/rollup-darwin-arm64@4.24.4':
-    resolution: {integrity: sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==}
+  '@rollup/rollup-darwin-arm64@4.25.0':
+    resolution: {integrity: sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg==}
     cpu: [arm64]
     os: [darwin]
 
-  '@rollup/rollup-darwin-x64@4.24.4':
-    resolution: {integrity: sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==}
+  '@rollup/rollup-darwin-x64@4.25.0':
+    resolution: {integrity: sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA==}
     cpu: [x64]
     os: [darwin]
 
-  '@rollup/rollup-freebsd-arm64@4.24.4':
-    resolution: {integrity: sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==}
+  '@rollup/rollup-freebsd-arm64@4.25.0':
+    resolution: {integrity: sha512-xpEIXhiP27EAylEpreCozozsxWQ2TJbOLSivGfXhU4G1TBVEYtUPi2pOZBnvGXHyOdLAUUhPnJzH3ah5cqF01g==}
     cpu: [arm64]
     os: [freebsd]
 
-  '@rollup/rollup-freebsd-x64@4.24.4':
-    resolution: {integrity: sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==}
+  '@rollup/rollup-freebsd-x64@4.25.0':
+    resolution: {integrity: sha512-sC5FsmZGlJv5dOcURrsnIK7ngc3Kirnx3as2XU9uER+zjfyqIjdcMVgzy4cOawhsssqzoAX19qmxgJ8a14Qrqw==}
     cpu: [x64]
     os: [freebsd]
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.24.4':
-    resolution: {integrity: sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==}
+  '@rollup/rollup-linux-arm-gnueabihf@4.25.0':
+    resolution: {integrity: sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm-musleabihf@4.24.4':
-    resolution: {integrity: sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==}
+  '@rollup/rollup-linux-arm-musleabihf@4.25.0':
+    resolution: {integrity: sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ==}
     cpu: [arm]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-gnu@4.24.4':
-    resolution: {integrity: sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==}
+  '@rollup/rollup-linux-arm64-gnu@4.25.0':
+    resolution: {integrity: sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-arm64-musl@4.24.4':
-    resolution: {integrity: sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==}
+  '@rollup/rollup-linux-arm64-musl@4.25.0':
+    resolution: {integrity: sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw==}
     cpu: [arm64]
     os: [linux]
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.24.4':
-    resolution: {integrity: sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==}
+  '@rollup/rollup-linux-powerpc64le-gnu@4.25.0':
+    resolution: {integrity: sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA==}
     cpu: [ppc64]
     os: [linux]
 
-  '@rollup/rollup-linux-riscv64-gnu@4.24.4':
-    resolution: {integrity: sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==}
+  '@rollup/rollup-linux-riscv64-gnu@4.25.0':
+    resolution: {integrity: sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA==}
     cpu: [riscv64]
     os: [linux]
 
-  '@rollup/rollup-linux-s390x-gnu@4.24.4':
-    resolution: {integrity: sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==}
+  '@rollup/rollup-linux-s390x-gnu@4.25.0':
+    resolution: {integrity: sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ==}
     cpu: [s390x]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-gnu@4.24.4':
-    resolution: {integrity: sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==}
+  '@rollup/rollup-linux-x64-gnu@4.25.0':
+    resolution: {integrity: sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-linux-x64-musl@4.24.4':
-    resolution: {integrity: sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==}
+  '@rollup/rollup-linux-x64-musl@4.25.0':
+    resolution: {integrity: sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ==}
     cpu: [x64]
     os: [linux]
 
-  '@rollup/rollup-win32-arm64-msvc@4.24.4':
-    resolution: {integrity: sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==}
+  '@rollup/rollup-win32-arm64-msvc@4.25.0':
+    resolution: {integrity: sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww==}
     cpu: [arm64]
     os: [win32]
 
-  '@rollup/rollup-win32-ia32-msvc@4.24.4':
-    resolution: {integrity: sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==}
+  '@rollup/rollup-win32-ia32-msvc@4.25.0':
+    resolution: {integrity: sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg==}
     cpu: [ia32]
     os: [win32]
 
-  '@rollup/rollup-win32-x64-msvc@4.24.4':
-    resolution: {integrity: sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==}
+  '@rollup/rollup-win32-x64-msvc@4.25.0':
+    resolution: {integrity: sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg==}
     cpu: [x64]
     os: [win32]
 
@@ -1193,8 +1193,8 @@ packages:
   caniuse-api@3.0.0:
     resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
 
-  caniuse-lite@1.0.30001677:
-    resolution: {integrity: sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==}
+  caniuse-lite@1.0.30001680:
+    resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==}
 
   chai-dom@1.12.0:
     resolution: {integrity: sha512-pLP8h6IBR8z1AdeQ+EMcJ7dXPdsax/1Q7gdGZjsnAmSBl3/gItQUYSCo32br1qOy4SlcBjvqId7ilAf3uJ2K1w==}
@@ -1319,8 +1319,8 @@ packages:
       typescript:
         optional: true
 
-  cross-spawn@7.0.3:
-    resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+  cross-spawn@7.0.5:
+    resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==}
     engines: {node: '>= 8'}
 
   crypt@0.0.2:
@@ -1480,8 +1480,8 @@ packages:
   ee-first@1.1.1:
     resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
 
-  electron-to-chromium@1.5.51:
-    resolution: {integrity: sha512-kKeWV57KSS8jH4alKt/jKnvHPmJgBxXzGUSbMd4eQF+iOsVPl7bz2KUmu6eo80eMP8wVioTfTyTzdMgM15WXNg==}
+  electron-to-chromium@1.5.56:
+    resolution: {integrity: sha512-7lXb9dAvimCFdvUMTyucD4mnIndt/xhRKFAlky0CyFogdnNmdPQNoHI23msF/2V4mpTxMzgMdjK4+YRlFlRQZw==}
 
   element-internals-polyfill@1.3.12:
     resolution: {integrity: sha512-KW1k+cMGwXlx3X9nqhgmuElAfR/c/ccFt0pG4KpwK++Mx9Y+mPExxJW+jgQnqux/NQrJejgOxxg4Naf3f6y67Q==}
@@ -2217,8 +2217,8 @@ packages:
   nwsapi@2.2.13:
     resolution: {integrity: sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==}
 
-  object-inspect@1.13.2:
-    resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
+  object-inspect@1.13.3:
+    resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==}
     engines: {node: '>= 0.4'}
 
   on-finished@2.3.0:
@@ -2619,8 +2619,8 @@ packages:
     resolution: {integrity: sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==}
     engines: {node: '>=4.0.0'}
 
-  postcss@8.4.47:
-    resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==}
+  postcss@8.4.49:
+    resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
     engines: {node: ^10 || ^12 || >=14}
 
   pretty-bytes@6.1.1:
@@ -2661,12 +2661,12 @@ packages:
     resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
     engines: {node: '>=6'}
 
-  puppeteer-core@23.7.0:
-    resolution: {integrity: sha512-0kC81k3K6n6Upg/k04xv+Mi8yy62bNAJiK7LCA71zfq2XKEo9WAzas1t6UQiLgaNHtGNKM0d1KbR56p/+mgEiQ==}
+  puppeteer-core@23.7.1:
+    resolution: {integrity: sha512-Om/qCZhd+HLoAr7GltrRAZpS3uOXwHu7tXAoDbNcJADHjG2zeAlDArgyIPXYGG4QB/EQUHk13Q6RklNxGM73Pg==}
     engines: {node: '>=18'}
 
-  puppeteer@23.7.0:
-    resolution: {integrity: sha512-YTgo0KFe8NtBcI9hCu/xsjPFumEhu8kA7QqLr6Uh79JcEsUcUt+go966NgKYXJ+P3Fuefrzn2SXwV3cyOe/UcQ==}
+  puppeteer@23.7.1:
+    resolution: {integrity: sha512-jS6XehagMvxQ12etwY/4EOYZ0Sm8GAsrtGhdQn4AqpJAyHc3RYl7tGd4QYh/MmShDw8sF9FWYQqGidhoXaqokQ==}
     engines: {node: '>=18'}
     hasBin: true
 
@@ -2757,8 +2757,8 @@ packages:
     engines: {node: '>=14.18.0', npm: '>=8.0.0'}
     hasBin: true
 
-  rollup@4.24.4:
-    resolution: {integrity: sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==}
+  rollup@4.25.0:
+    resolution: {integrity: sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg==}
     engines: {node: '>=18.0.0', npm: '>=8.0.0'}
     hasBin: true
 
@@ -3012,11 +3012,11 @@ packages:
     resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==}
     engines: {node: '>=12.0.0'}
 
-  tldts-core@6.1.58:
-    resolution: {integrity: sha512-dR936xmhBm7AeqHIhCWwK765gZ7dFyL+IqLSFAjJbFlUXGMLCb8i2PzlzaOuWBuplBTaBYseSb565nk/ZEM0Bg==}
+  tldts-core@6.1.60:
+    resolution: {integrity: sha512-XHjoxak8SFQnHnmYHb3PcnW5TZ+9ErLZemZei3azuIRhQLw4IExsVbL3VZJdHcLeNaXq6NqawgpDPpjBOg4B5g==}
 
-  tldts@6.1.58:
-    resolution: {integrity: sha512-MQJrJhjHOYGYb8DobR6Y4AdDbd4TYkyQ+KBDVc5ODzs1cbrvPpfN1IemYi9jfipJ/vR1YWvrDli0hg1y19VRoA==}
+  tldts@6.1.60:
+    resolution: {integrity: sha512-TYVHm7G9NCnhgqOsFalbX6MG1Po5F4efF+tLfoeiOGQq48Oqgwcgz8upY2R1BHWa4aDrj28RYx0dkYJ63qCFMg==}
     hasBin: true
 
   to-regex-range@5.0.1:
@@ -3810,74 +3810,74 @@ snapshots:
       - supports-color
       - utf-8-validate
 
-  '@rollup/plugin-strip@3.0.4(rollup@4.24.4)':
+  '@rollup/plugin-strip@3.0.4(rollup@4.25.0)':
     dependencies:
-      '@rollup/pluginutils': 5.1.3(rollup@4.24.4)
+      '@rollup/pluginutils': 5.1.3(rollup@4.25.0)
       estree-walker: 2.0.2
       magic-string: 0.30.12
     optionalDependencies:
-      rollup: 4.24.4
+      rollup: 4.25.0
 
-  '@rollup/pluginutils@5.1.3(rollup@4.24.4)':
+  '@rollup/pluginutils@5.1.3(rollup@4.25.0)':
     dependencies:
       '@types/estree': 1.0.6
       estree-walker: 2.0.2
       picomatch: 4.0.2
     optionalDependencies:
-      rollup: 4.24.4
+      rollup: 4.25.0
 
-  '@rollup/rollup-android-arm-eabi@4.24.4':
+  '@rollup/rollup-android-arm-eabi@4.25.0':
     optional: true
 
-  '@rollup/rollup-android-arm64@4.24.4':
+  '@rollup/rollup-android-arm64@4.25.0':
     optional: true
 
-  '@rollup/rollup-darwin-arm64@4.24.4':
+  '@rollup/rollup-darwin-arm64@4.25.0':
     optional: true
 
-  '@rollup/rollup-darwin-x64@4.24.4':
+  '@rollup/rollup-darwin-x64@4.25.0':
     optional: true
 
-  '@rollup/rollup-freebsd-arm64@4.24.4':
+  '@rollup/rollup-freebsd-arm64@4.25.0':
     optional: true
 
-  '@rollup/rollup-freebsd-x64@4.24.4':
+  '@rollup/rollup-freebsd-x64@4.25.0':
     optional: true
 
-  '@rollup/rollup-linux-arm-gnueabihf@4.24.4':
+  '@rollup/rollup-linux-arm-gnueabihf@4.25.0':
     optional: true
 
-  '@rollup/rollup-linux-arm-musleabihf@4.24.4':
+  '@rollup/rollup-linux-arm-musleabihf@4.25.0':
     optional: true
 
-  '@rollup/rollup-linux-arm64-gnu@4.24.4':
+  '@rollup/rollup-linux-arm64-gnu@4.25.0':
     optional: true
 
-  '@rollup/rollup-linux-arm64-musl@4.24.4':
+  '@rollup/rollup-linux-arm64-musl@4.25.0':
     optional: true
 
-  '@rollup/rollup-linux-powerpc64le-gnu@4.24.4':
+  '@rollup/rollup-linux-powerpc64le-gnu@4.25.0':
     optional: true
 
-  '@rollup/rollup-linux-riscv64-gnu@4.24.4':
+  '@rollup/rollup-linux-riscv64-gnu@4.25.0':
     optional: true
 
-  '@rollup/rollup-linux-s390x-gnu@4.24.4':
+  '@rollup/rollup-linux-s390x-gnu@4.25.0':
     optional: true
 
-  '@rollup/rollup-linux-x64-gnu@4.24.4':
+  '@rollup/rollup-linux-x64-gnu@4.25.0':
     optional: true
 
-  '@rollup/rollup-linux-x64-musl@4.24.4':
+  '@rollup/rollup-linux-x64-musl@4.25.0':
     optional: true
 
-  '@rollup/rollup-win32-arm64-msvc@4.24.4':
+  '@rollup/rollup-win32-arm64-msvc@4.25.0':
     optional: true
 
-  '@rollup/rollup-win32-ia32-msvc@4.24.4':
+  '@rollup/rollup-win32-ia32-msvc@4.25.0':
     optional: true
 
-  '@rollup/rollup-win32-x64-msvc@4.24.4':
+  '@rollup/rollup-win32-x64-msvc@4.25.0':
     optional: true
 
   '@rushstack/node-core-library@3.66.1(@types/node@18.19.64)':
@@ -3994,11 +3994,11 @@ snapshots:
       '@types/node': 22.9.0
     optional: true
 
-  '@wesbos/code-icons@1.2.4(rollup@4.24.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)':
+  '@wesbos/code-icons@1.2.4(rollup@4.25.0)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)':
     dependencies:
       '@types/node': 18.19.64
-      vite: 4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)
-      vite-plugin-dts: 1.7.3(@types/node@18.19.64)(rollup@4.24.4)(vite@4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0))
+      vite: 4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
+      vite-plugin-dts: 1.7.3(@types/node@18.19.64)(rollup@4.25.0)(vite@4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))
       vscode-icons-js: 11.6.1
     transitivePeerDependencies:
       - less
@@ -4093,14 +4093,14 @@ snapshots:
 
   asynckit@0.4.0: {}
 
-  autoprefixer@10.4.20(postcss@8.4.47):
+  autoprefixer@10.4.20(postcss@8.4.49):
     dependencies:
       browserslist: 4.24.2
-      caniuse-lite: 1.0.30001677
+      caniuse-lite: 1.0.30001680
       fraction.js: 4.3.7
       normalize-range: 0.1.2
       picocolors: 1.1.1
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
   available-typed-arrays@1.0.7:
@@ -4161,8 +4161,8 @@ snapshots:
 
   browserslist@4.24.2:
     dependencies:
-      caniuse-lite: 1.0.30001677
-      electron-to-chromium: 1.5.51
+      caniuse-lite: 1.0.30001680
+      electron-to-chromium: 1.5.56
       node-releases: 2.0.18
       update-browserslist-db: 1.1.1(browserslist@4.24.2)
 
@@ -4218,11 +4218,11 @@ snapshots:
   caniuse-api@3.0.0:
     dependencies:
       browserslist: 4.24.2
-      caniuse-lite: 1.0.30001677
+      caniuse-lite: 1.0.30001680
       lodash.memoize: 4.1.2
       lodash.uniq: 4.5.0
 
-  caniuse-lite@1.0.30001677: {}
+  caniuse-lite@1.0.30001680: {}
 
   chai-dom@1.12.0(chai@5.1.2):
     dependencies:
@@ -4353,7 +4353,7 @@ snapshots:
     optionalDependencies:
       typescript: 5.4.2
 
-  cross-spawn@7.0.3:
+  cross-spawn@7.0.5:
     dependencies:
       path-key: 3.1.1
       shebang-command: 2.0.0
@@ -4361,9 +4361,9 @@ snapshots:
 
   crypt@0.0.2: {}
 
-  css-declaration-sorter@7.2.0(postcss@8.4.47):
+  css-declaration-sorter@7.2.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
 
   css-select@5.1.0:
     dependencies:
@@ -4387,49 +4387,49 @@ snapshots:
 
   cssesc@3.0.0: {}
 
-  cssnano-preset-default@7.0.6(postcss@8.4.47):
+  cssnano-preset-default@7.0.6(postcss@8.4.49):
     dependencies:
       browserslist: 4.24.2
-      css-declaration-sorter: 7.2.0(postcss@8.4.47)
-      cssnano-utils: 5.0.0(postcss@8.4.47)
-      postcss: 8.4.47
-      postcss-calc: 10.0.2(postcss@8.4.47)
-      postcss-colormin: 7.0.2(postcss@8.4.47)
-      postcss-convert-values: 7.0.4(postcss@8.4.47)
-      postcss-discard-comments: 7.0.3(postcss@8.4.47)
-      postcss-discard-duplicates: 7.0.1(postcss@8.4.47)
-      postcss-discard-empty: 7.0.0(postcss@8.4.47)
-      postcss-discard-overridden: 7.0.0(postcss@8.4.47)
-      postcss-merge-longhand: 7.0.4(postcss@8.4.47)
-      postcss-merge-rules: 7.0.4(postcss@8.4.47)
-      postcss-minify-font-values: 7.0.0(postcss@8.4.47)
-      postcss-minify-gradients: 7.0.0(postcss@8.4.47)
-      postcss-minify-params: 7.0.2(postcss@8.4.47)
-      postcss-minify-selectors: 7.0.4(postcss@8.4.47)
-      postcss-normalize-charset: 7.0.0(postcss@8.4.47)
-      postcss-normalize-display-values: 7.0.0(postcss@8.4.47)
-      postcss-normalize-positions: 7.0.0(postcss@8.4.47)
-      postcss-normalize-repeat-style: 7.0.0(postcss@8.4.47)
-      postcss-normalize-string: 7.0.0(postcss@8.4.47)
-      postcss-normalize-timing-functions: 7.0.0(postcss@8.4.47)
-      postcss-normalize-unicode: 7.0.2(postcss@8.4.47)
-      postcss-normalize-url: 7.0.0(postcss@8.4.47)
-      postcss-normalize-whitespace: 7.0.0(postcss@8.4.47)
-      postcss-ordered-values: 7.0.1(postcss@8.4.47)
-      postcss-reduce-initial: 7.0.2(postcss@8.4.47)
-      postcss-reduce-transforms: 7.0.0(postcss@8.4.47)
-      postcss-svgo: 7.0.1(postcss@8.4.47)
-      postcss-unique-selectors: 7.0.3(postcss@8.4.47)
-
-  cssnano-utils@5.0.0(postcss@8.4.47):
-    dependencies:
-      postcss: 8.4.47
-
-  cssnano@7.0.6(postcss@8.4.47):
-    dependencies:
-      cssnano-preset-default: 7.0.6(postcss@8.4.47)
+      css-declaration-sorter: 7.2.0(postcss@8.4.49)
+      cssnano-utils: 5.0.0(postcss@8.4.49)
+      postcss: 8.4.49
+      postcss-calc: 10.0.2(postcss@8.4.49)
+      postcss-colormin: 7.0.2(postcss@8.4.49)
+      postcss-convert-values: 7.0.4(postcss@8.4.49)
+      postcss-discard-comments: 7.0.3(postcss@8.4.49)
+      postcss-discard-duplicates: 7.0.1(postcss@8.4.49)
+      postcss-discard-empty: 7.0.0(postcss@8.4.49)
+      postcss-discard-overridden: 7.0.0(postcss@8.4.49)
+      postcss-merge-longhand: 7.0.4(postcss@8.4.49)
+      postcss-merge-rules: 7.0.4(postcss@8.4.49)
+      postcss-minify-font-values: 7.0.0(postcss@8.4.49)
+      postcss-minify-gradients: 7.0.0(postcss@8.4.49)
+      postcss-minify-params: 7.0.2(postcss@8.4.49)
+      postcss-minify-selectors: 7.0.4(postcss@8.4.49)
+      postcss-normalize-charset: 7.0.0(postcss@8.4.49)
+      postcss-normalize-display-values: 7.0.0(postcss@8.4.49)
+      postcss-normalize-positions: 7.0.0(postcss@8.4.49)
+      postcss-normalize-repeat-style: 7.0.0(postcss@8.4.49)
+      postcss-normalize-string: 7.0.0(postcss@8.4.49)
+      postcss-normalize-timing-functions: 7.0.0(postcss@8.4.49)
+      postcss-normalize-unicode: 7.0.2(postcss@8.4.49)
+      postcss-normalize-url: 7.0.0(postcss@8.4.49)
+      postcss-normalize-whitespace: 7.0.0(postcss@8.4.49)
+      postcss-ordered-values: 7.0.1(postcss@8.4.49)
+      postcss-reduce-initial: 7.0.2(postcss@8.4.49)
+      postcss-reduce-transforms: 7.0.0(postcss@8.4.49)
+      postcss-svgo: 7.0.1(postcss@8.4.49)
+      postcss-unique-selectors: 7.0.3(postcss@8.4.49)
+
+  cssnano-utils@5.0.0(postcss@8.4.49):
+    dependencies:
+      postcss: 8.4.49
+
+  cssnano@7.0.6(postcss@8.4.49):
+    dependencies:
+      cssnano-preset-default: 7.0.6(postcss@8.4.49)
       lilconfig: 3.1.2
-      postcss: 8.4.47
+      postcss: 8.4.49
 
   csso@5.0.5:
     dependencies:
@@ -4525,7 +4525,7 @@ snapshots:
 
   ee-first@1.1.1: {}
 
-  electron-to-chromium@1.5.51: {}
+  electron-to-chromium@1.5.56: {}
 
   element-internals-polyfill@1.3.12: {}
 
@@ -4775,7 +4775,7 @@ snapshots:
 
   foreground-child@3.3.0:
     dependencies:
-      cross-spawn: 7.0.3
+      cross-spawn: 7.0.5
       signal-exit: 4.1.0
 
   form-data@4.0.1:
@@ -5327,7 +5327,7 @@ snapshots:
 
   nwsapi@2.2.13: {}
 
-  object-inspect@1.13.2: {}
+  object-inspect@1.13.3: {}
 
   on-finished@2.3.0:
     dependencies:
@@ -5446,47 +5446,47 @@ snapshots:
 
   possible-typed-array-names@1.0.0: {}
 
-  postcss-browser-comments@6.0.1(browserslist@4.24.2)(postcss@8.4.47):
+  postcss-browser-comments@6.0.1(browserslist@4.24.2)(postcss@8.4.49):
     dependencies:
       browserslist: 4.24.2
-      postcss: 8.4.47
+      postcss: 8.4.49
 
-  postcss-calc@10.0.2(postcss@8.4.47):
+  postcss-calc@10.0.2(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-selector-parser: 6.1.2
       postcss-value-parser: 4.2.0
 
-  postcss-colormin@7.0.2(postcss@8.4.47):
+  postcss-colormin@7.0.2(postcss@8.4.49):
     dependencies:
       browserslist: 4.24.2
       caniuse-api: 3.0.0
       colord: 2.9.3
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-convert-values@7.0.4(postcss@8.4.47):
+  postcss-convert-values@7.0.4(postcss@8.4.49):
     dependencies:
       browserslist: 4.24.2
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-discard-comments@7.0.3(postcss@8.4.47):
+  postcss-discard-comments@7.0.3(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-selector-parser: 6.1.2
 
-  postcss-discard-duplicates@7.0.1(postcss@8.4.47):
+  postcss-discard-duplicates@7.0.1(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
 
-  postcss-discard-empty@7.0.0(postcss@8.4.47):
+  postcss-discard-empty@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
 
-  postcss-discard-overridden@7.0.0(postcss@8.4.47):
+  postcss-discard-overridden@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
 
   postcss-fluid@1.4.2: {}
 
@@ -5495,162 +5495,162 @@ snapshots:
       postcss: 5.2.18
       postcss-simple-vars: 2.0.0
 
-  postcss-import@16.1.0(postcss@8.4.47):
+  postcss-import@16.1.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
       read-cache: 1.0.0
       resolve: 1.22.8
 
-  postcss-js@4.0.1(postcss@8.4.47):
+  postcss-js@4.0.1(postcss@8.4.49):
     dependencies:
       camelcase-css: 2.0.1
-      postcss: 8.4.47
+      postcss: 8.4.49
 
-  postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.47)(yaml@2.6.0):
+  postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.49)(yaml@2.6.0):
     dependencies:
       lilconfig: 3.1.2
     optionalDependencies:
       jiti: 1.21.6
-      postcss: 8.4.47
+      postcss: 8.4.49
       yaml: 2.6.0
 
-  postcss-merge-longhand@7.0.4(postcss@8.4.47):
+  postcss-merge-longhand@7.0.4(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
-      stylehacks: 7.0.4(postcss@8.4.47)
+      stylehacks: 7.0.4(postcss@8.4.49)
 
-  postcss-merge-rules@7.0.4(postcss@8.4.47):
+  postcss-merge-rules@7.0.4(postcss@8.4.49):
     dependencies:
       browserslist: 4.24.2
       caniuse-api: 3.0.0
-      cssnano-utils: 5.0.0(postcss@8.4.47)
-      postcss: 8.4.47
+      cssnano-utils: 5.0.0(postcss@8.4.49)
+      postcss: 8.4.49
       postcss-selector-parser: 6.1.2
 
-  postcss-minify-font-values@7.0.0(postcss@8.4.47):
+  postcss-minify-font-values@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-minify-gradients@7.0.0(postcss@8.4.47):
+  postcss-minify-gradients@7.0.0(postcss@8.4.49):
     dependencies:
       colord: 2.9.3
-      cssnano-utils: 5.0.0(postcss@8.4.47)
-      postcss: 8.4.47
+      cssnano-utils: 5.0.0(postcss@8.4.49)
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-minify-params@7.0.2(postcss@8.4.47):
+  postcss-minify-params@7.0.2(postcss@8.4.49):
     dependencies:
       browserslist: 4.24.2
-      cssnano-utils: 5.0.0(postcss@8.4.47)
-      postcss: 8.4.47
+      cssnano-utils: 5.0.0(postcss@8.4.49)
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-minify-selectors@7.0.4(postcss@8.4.47):
+  postcss-minify-selectors@7.0.4(postcss@8.4.49):
     dependencies:
       cssesc: 3.0.0
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-selector-parser: 6.1.2
 
-  postcss-mixins@11.0.3(postcss@8.4.47):
+  postcss-mixins@11.0.3(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
-      postcss-js: 4.0.1(postcss@8.4.47)
-      postcss-simple-vars: 7.0.1(postcss@8.4.47)
-      sugarss: 4.0.1(postcss@8.4.47)
+      postcss: 8.4.49
+      postcss-js: 4.0.1(postcss@8.4.49)
+      postcss-simple-vars: 7.0.1(postcss@8.4.49)
+      sugarss: 4.0.1(postcss@8.4.49)
       tinyglobby: 0.2.10
 
-  postcss-nested@6.2.0(postcss@8.4.47):
+  postcss-nested@6.2.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-selector-parser: 6.1.2
 
-  postcss-nesting@13.0.1(postcss@8.4.47):
+  postcss-nesting@13.0.1(postcss@8.4.49):
     dependencies:
       '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.0.0)
       '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0)
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-selector-parser: 7.0.0
 
-  postcss-normalize-charset@7.0.0(postcss@8.4.47):
+  postcss-normalize-charset@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
 
-  postcss-normalize-display-values@7.0.0(postcss@8.4.47):
+  postcss-normalize-display-values@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-normalize-positions@7.0.0(postcss@8.4.47):
+  postcss-normalize-positions@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-normalize-repeat-style@7.0.0(postcss@8.4.47):
+  postcss-normalize-repeat-style@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-normalize-string@7.0.0(postcss@8.4.47):
+  postcss-normalize-string@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-normalize-timing-functions@7.0.0(postcss@8.4.47):
+  postcss-normalize-timing-functions@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-normalize-unicode@7.0.2(postcss@8.4.47):
+  postcss-normalize-unicode@7.0.2(postcss@8.4.49):
     dependencies:
       browserslist: 4.24.2
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-normalize-url@7.0.0(postcss@8.4.47):
+  postcss-normalize-url@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-normalize-whitespace@7.0.0(postcss@8.4.47):
+  postcss-normalize-whitespace@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-normalize@13.0.1(browserslist@4.24.2)(postcss@8.4.47):
+  postcss-normalize@13.0.1(browserslist@4.24.2)(postcss@8.4.49):
     dependencies:
       '@csstools/normalize.css': 12.1.1
       browserslist: 4.24.2
-      postcss: 8.4.47
-      postcss-browser-comments: 6.0.1(browserslist@4.24.2)(postcss@8.4.47)
+      postcss: 8.4.49
+      postcss-browser-comments: 6.0.1(browserslist@4.24.2)(postcss@8.4.49)
       sanitize.css: 13.0.0
 
-  postcss-ordered-values@7.0.1(postcss@8.4.47):
+  postcss-ordered-values@7.0.1(postcss@8.4.49):
     dependencies:
-      cssnano-utils: 5.0.0(postcss@8.4.47)
-      postcss: 8.4.47
+      cssnano-utils: 5.0.0(postcss@8.4.49)
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
-  postcss-reduce-initial@7.0.2(postcss@8.4.47):
+  postcss-reduce-initial@7.0.2(postcss@8.4.49):
     dependencies:
       browserslist: 4.24.2
       caniuse-api: 3.0.0
-      postcss: 8.4.47
+      postcss: 8.4.49
 
-  postcss-reduce-transforms@7.0.0(postcss@8.4.47):
+  postcss-reduce-transforms@7.0.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
 
   postcss-responsive-type@1.0.0:
     dependencies:
       postcss: 6.0.23
 
-  postcss-rtlcss@5.5.0(postcss@8.4.47):
+  postcss-rtlcss@5.5.0(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       rtlcss: 4.3.0
 
   postcss-selector-parser@6.1.2:
@@ -5667,24 +5667,24 @@ snapshots:
     dependencies:
       postcss: 5.2.18
 
-  postcss-simple-vars@7.0.1(postcss@8.4.47):
+  postcss-simple-vars@7.0.1(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
 
   postcss-strip-units@2.0.1:
     dependencies:
       postcss: 6.0.23
       reduce-function-call: 1.0.3
 
-  postcss-svgo@7.0.1(postcss@8.4.47):
+  postcss-svgo@7.0.1(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-value-parser: 4.2.0
       svgo: 3.3.2
 
-  postcss-unique-selectors@7.0.3(postcss@8.4.47):
+  postcss-unique-selectors@7.0.3(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-selector-parser: 6.1.2
 
   postcss-value-parser@4.2.0: {}
@@ -5702,7 +5702,7 @@ snapshots:
       source-map: 0.6.1
       supports-color: 5.5.0
 
-  postcss@8.4.47:
+  postcss@8.4.49:
     dependencies:
       nanoid: 3.3.7
       picocolors: 1.1.1
@@ -5749,7 +5749,7 @@ snapshots:
 
   punycode@2.3.1: {}
 
-  puppeteer-core@23.7.0:
+  puppeteer-core@23.7.1:
     dependencies:
       '@puppeteer/browsers': 2.4.1
       chromium-bidi: 0.8.0(devtools-protocol@0.0.1354347)
@@ -5762,13 +5762,13 @@ snapshots:
       - supports-color
       - utf-8-validate
 
-  puppeteer@23.7.0(typescript@5.4.2):
+  puppeteer@23.7.1(typescript@5.4.2):
     dependencies:
       '@puppeteer/browsers': 2.4.1
       chromium-bidi: 0.8.0(devtools-protocol@0.0.1354347)
       cosmiconfig: 9.0.0(typescript@5.4.2)
       devtools-protocol: 0.0.1354347
-      puppeteer-core: 23.7.0
+      puppeteer-core: 23.7.1
       typed-query-selector: 2.12.0
     transitivePeerDependencies:
       - bufferutil
@@ -5857,28 +5857,28 @@ snapshots:
     optionalDependencies:
       fsevents: 2.3.3
 
-  rollup@4.24.4:
+  rollup@4.25.0:
     dependencies:
       '@types/estree': 1.0.6
     optionalDependencies:
-      '@rollup/rollup-android-arm-eabi': 4.24.4
-      '@rollup/rollup-android-arm64': 4.24.4
-      '@rollup/rollup-darwin-arm64': 4.24.4
-      '@rollup/rollup-darwin-x64': 4.24.4
-      '@rollup/rollup-freebsd-arm64': 4.24.4
-      '@rollup/rollup-freebsd-x64': 4.24.4
-      '@rollup/rollup-linux-arm-gnueabihf': 4.24.4
-      '@rollup/rollup-linux-arm-musleabihf': 4.24.4
-      '@rollup/rollup-linux-arm64-gnu': 4.24.4
-      '@rollup/rollup-linux-arm64-musl': 4.24.4
-      '@rollup/rollup-linux-powerpc64le-gnu': 4.24.4
-      '@rollup/rollup-linux-riscv64-gnu': 4.24.4
-      '@rollup/rollup-linux-s390x-gnu': 4.24.4
-      '@rollup/rollup-linux-x64-gnu': 4.24.4
-      '@rollup/rollup-linux-x64-musl': 4.24.4
-      '@rollup/rollup-win32-arm64-msvc': 4.24.4
-      '@rollup/rollup-win32-ia32-msvc': 4.24.4
-      '@rollup/rollup-win32-x64-msvc': 4.24.4
+      '@rollup/rollup-android-arm-eabi': 4.25.0
+      '@rollup/rollup-android-arm64': 4.25.0
+      '@rollup/rollup-darwin-arm64': 4.25.0
+      '@rollup/rollup-darwin-x64': 4.25.0
+      '@rollup/rollup-freebsd-arm64': 4.25.0
+      '@rollup/rollup-freebsd-x64': 4.25.0
+      '@rollup/rollup-linux-arm-gnueabihf': 4.25.0
+      '@rollup/rollup-linux-arm-musleabihf': 4.25.0
+      '@rollup/rollup-linux-arm64-gnu': 4.25.0
+      '@rollup/rollup-linux-arm64-musl': 4.25.0
+      '@rollup/rollup-linux-powerpc64le-gnu': 4.25.0
+      '@rollup/rollup-linux-riscv64-gnu': 4.25.0
+      '@rollup/rollup-linux-s390x-gnu': 4.25.0
+      '@rollup/rollup-linux-x64-gnu': 4.25.0
+      '@rollup/rollup-linux-x64-musl': 4.25.0
+      '@rollup/rollup-win32-arm64-msvc': 4.25.0
+      '@rollup/rollup-win32-ia32-msvc': 4.25.0
+      '@rollup/rollup-win32-x64-msvc': 4.25.0
       fsevents: 2.3.3
 
   rrweb-cssom@0.7.1: {}
@@ -5887,7 +5887,7 @@ snapshots:
     dependencies:
       escalade: 3.2.0
       picocolors: 1.1.1
-      postcss: 8.4.47
+      postcss: 8.4.49
       strip-json-comments: 3.1.1
 
   run-parallel@1.2.0:
@@ -5949,7 +5949,7 @@ snapshots:
       call-bind: 1.0.7
       es-errors: 1.3.0
       get-intrinsic: 1.2.4
-      object-inspect: 1.13.2
+      object-inspect: 1.13.3
 
   signal-exit@4.1.0: {}
 
@@ -6068,15 +6068,15 @@ snapshots:
 
   strip-json-comments@3.1.1: {}
 
-  stylehacks@7.0.4(postcss@8.4.47):
+  stylehacks@7.0.4(postcss@8.4.49):
     dependencies:
       browserslist: 4.24.2
-      postcss: 8.4.47
+      postcss: 8.4.49
       postcss-selector-parser: 6.1.2
 
-  sugarss@4.0.1(postcss@8.4.47):
+  sugarss@4.0.1(postcss@8.4.49):
     dependencies:
-      postcss: 8.4.47
+      postcss: 8.4.49
 
   supports-color@2.0.0: {}
 
@@ -6150,11 +6150,11 @@ snapshots:
       fdir: 6.4.2(picomatch@4.0.2)
       picomatch: 4.0.2
 
-  tldts-core@6.1.58: {}
+  tldts-core@6.1.60: {}
 
-  tldts@6.1.58:
+  tldts@6.1.60:
     dependencies:
-      tldts-core: 6.1.58
+      tldts-core: 6.1.60
 
   to-regex-range@5.0.1:
     dependencies:
@@ -6164,7 +6164,7 @@ snapshots:
 
   tough-cookie@5.0.0:
     dependencies:
-      tldts: 6.1.58
+      tldts: 6.1.60
 
   tr46@0.0.3: {}
 
@@ -6278,33 +6278,33 @@ snapshots:
 
   vite-plugin-banner@0.8.0: {}
 
-  vite-plugin-directory-index@3.0.1(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)):
+  vite-plugin-directory-index@3.0.1(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)):
     dependencies:
       picomatch: 2.3.1
       pretty-bytes: 6.1.1
-      vite: 5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)
+      vite: 5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
 
-  vite-plugin-dts@1.7.3(@types/node@18.19.64)(rollup@4.24.4)(vite@4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)):
+  vite-plugin-dts@1.7.3(@types/node@18.19.64)(rollup@4.25.0)(vite@4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)):
     dependencies:
       '@microsoft/api-extractor': 7.47.11(@types/node@18.19.64)
-      '@rollup/pluginutils': 5.1.3(rollup@4.24.4)
+      '@rollup/pluginutils': 5.1.3(rollup@4.25.0)
       '@rushstack/node-core-library': 3.66.1(@types/node@18.19.64)
       debug: 4.3.7(supports-color@8.1.1)
       fast-glob: 3.3.2
       fs-extra: 10.1.0
       kolorist: 1.8.0
       ts-morph: 17.0.1
-      vite: 4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)
+      vite: 4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
     transitivePeerDependencies:
       - '@types/node'
       - rollup
       - supports-color
 
-  vite-plugin-list-directory-contents@1.4.5(@types/node@18.19.64)(rollup@4.24.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0):
+  vite-plugin-list-directory-contents@1.4.5(@types/node@18.19.64)(rollup@4.25.0)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0):
     dependencies:
-      '@wesbos/code-icons': 1.2.4(rollup@4.24.4)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)
-      vite: 4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)
-      vite-plugin-dts: 1.7.3(@types/node@18.19.64)(rollup@4.24.4)(vite@4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0))
+      '@wesbos/code-icons': 1.2.4(rollup@4.25.0)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
+      vite: 4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
+      vite-plugin-dts: 1.7.3(@types/node@18.19.64)(rollup@4.25.0)(vite@4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0))
       vscode-icons-js: 11.6.1
     transitivePeerDependencies:
       - '@types/node'
@@ -6317,13 +6317,13 @@ snapshots:
       - supports-color
       - terser
 
-  vite-plugin-minify@2.0.1(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)):
+  vite-plugin-minify@2.0.1(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)):
     dependencies:
       '@types/html-minifier-terser': 7.0.2
       html-minifier-terser: 7.2.0
-      vite: 5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)
+      vite: 5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
 
-  vite-plugin-mock@3.0.2(esbuild@0.24.0)(mockjs@1.1.0)(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)):
+  vite-plugin-mock@3.0.2(esbuild@0.24.0)(mockjs@1.1.0)(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)):
     dependencies:
       bundle-require: 4.2.1(esbuild@0.24.0)
       chokidar: 3.6.0
@@ -6334,42 +6334,42 @@ snapshots:
       mockjs: 1.1.0
       path-to-regexp: 6.3.0
       picocolors: 1.1.1
-      vite: 5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)
+      vite: 5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
     transitivePeerDependencies:
       - supports-color
 
-  vite-plugin-terminal@1.2.0(rollup@4.24.4)(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)):
+  vite-plugin-terminal@1.2.0(rollup@4.25.0)(vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)):
     dependencies:
-      '@rollup/plugin-strip': 3.0.4(rollup@4.24.4)
+      '@rollup/plugin-strip': 3.0.4(rollup@4.25.0)
       debug: 4.3.7(supports-color@8.1.1)
       kolorist: 1.8.0
       sirv: 2.0.4
       ufo: 1.5.4
-      vite: 5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0)
+      vite: 5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0)
     transitivePeerDependencies:
       - rollup
       - supports-color
 
-  vite@4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0):
+  vite@4.5.5(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0):
     dependencies:
       esbuild: 0.18.20
-      postcss: 8.4.47
+      postcss: 8.4.49
       rollup: 3.29.5
     optionalDependencies:
       '@types/node': 18.19.64
       fsevents: 2.3.3
-      sugarss: 4.0.1(postcss@8.4.47)
+      sugarss: 4.0.1(postcss@8.4.49)
       terser: 5.36.0
 
-  vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.47))(terser@5.36.0):
+  vite@5.4.8(@types/node@18.19.64)(sugarss@4.0.1(postcss@8.4.49))(terser@5.36.0):
     dependencies:
       esbuild: 0.21.5
-      postcss: 8.4.47
-      rollup: 4.24.4
+      postcss: 8.4.49
+      rollup: 4.25.0
     optionalDependencies:
       '@types/node': 18.19.64
       fsevents: 2.3.3
-      sugarss: 4.0.1(postcss@8.4.47)
+      sugarss: 4.0.1(postcss@8.4.49)
       terser: 5.36.0
 
   vscode-icons-js@11.6.1:
diff --git a/source/components/content/copy.mjs b/source/components/content/copy.mjs
index f2a0f28ac73999432849d5e111a7e5988af8e9a6..0881bdbe255ac495bfcf757361eb5d2b04340ace 100644
--- a/source/components/content/copy.mjs
+++ b/source/components/content/copy.mjs
@@ -8,30 +8,34 @@
  * For those who do not wish to adhere to the AGPLv3, a commercial license is available.
  * Acquiring a commercial license allows you to use this software without complying with the AGPLv3 terms.
  * For more information about purchasing a commercial license, please contact schukai GmbH.
+ *
+ * SPDX-License-Identifier: AGPL-3.0
  */
 
-import { instanceSymbol } from "../../constants.mjs";
+import {instanceSymbol} from "../../constants.mjs";
 import {
-	addAttributeToken,
-	removeAttributeToken,
+    addAttributeToken,
+    removeAttributeToken,
 } from "../../dom/attributes.mjs";
 import {
-	ATTRIBUTE_ERRORMESSAGE,
-	ATTRIBUTE_ROLE,
+    ATTRIBUTE_ERRORMESSAGE,
+    ATTRIBUTE_ROLE,
 } from "../../dom/constants.mjs";
-import { CustomElement, getSlottedElements } from "../../dom/customelement.mjs";
+import {CustomElement, getSlottedElements} from "../../dom/customelement.mjs";
 import {
-	assembleMethodSymbol,
-	registerCustomElement,
+    assembleMethodSymbol,
+    registerCustomElement,
 } from "../../dom/customelement.mjs";
-import { getDocument } from "../../dom/util.mjs";
-import { STYLE_DISPLAY_MODE_BLOCK } from "../form/constants.mjs";
-import { CopyStyleSheet } from "./stylesheet/copy.mjs";
-import { fireCustomEvent } from "../../dom/events.mjs";
-import { positionPopper } from "../form/util/floating-ui.mjs";
-import { DeadMansSwitch } from "../../util/deadmansswitch.mjs";
+import {getDocument} from "../../dom/util.mjs";
+import {isString} from "../../types/is.mjs";
+import {validateString} from "../../types/validate.mjs";
+import {STYLE_DISPLAY_MODE_BLOCK} from "../form/constants.mjs";
+import {CopyStyleSheet} from "./stylesheet/copy.mjs";
+import {fireCustomEvent} from "../../dom/events.mjs";
+import {positionPopper} from "../form/util/floating-ui.mjs";
+import {DeadMansSwitch} from "../../util/deadmansswitch.mjs";
 
-export { Copy };
+export {Copy};
 
 /**
  * @private
@@ -39,6 +43,12 @@ export { Copy };
  */
 const timerCallbackSymbol = Symbol("timerCallback");
 
+/**
+ * @private
+ * @type {symbol}
+ */
+const timerDelaySymbol = Symbol("timerDelay");
+
 /**
  * @private
  * @type {symbol}
@@ -83,248 +93,265 @@ const resizeObserverSymbol = Symbol("resizeObserver");
  * @summary A beautiful Copy that can make your life easier and also looks good.
  */
 class Copy extends CustomElement {
-	/**
-	 * This method is called by the `instanceof` operator.
-	 * @return {symbol}
-	 */
-	static get [instanceSymbol]() {
-		return Symbol.for("@schukai/monster/components/content/copy@@instance");
-	}
-
-	/**
-	 *
-	 * @return {Components.Content.Copy
-	 * @fires monster-copy-clicked This event is fired when the copy button is clicked.
-	 * @fires monster-copy-success This event is fired when the copy action is successful.
-	 * @fires monster-copy-error This event is fired when the copy action fails.
-	 */
-	[assembleMethodSymbol]() {
-		super[assembleMethodSymbol]();
-		initControlReferences.call(this);
-		initEventHandler.call(this);
-		return this;
-	}
-
-	/**
-	 * This method is called when the element is connected to the dom.
-	 *
-	 * @return {void}
-	 */
-	connectedCallback() {
-		super.connectedCallback();
-
-		const document = getDocument();
-
-		for (const [, type] of Object.entries(["click", "touch"])) {
-			// close on outside ui-events
-			document.addEventListener(type, this[closeEventHandler]);
-		}
-
-		updatePopper.call(this);
-		attachResizeObserver.call(this);
-	}
-
-	/**
-	 * This method is called when the element is disconnected from the dom.
-	 *
-	 * @return {void}
-	 */
-	disconnectedCallback() {
-		super.disconnectedCallback();
-
-		// close on outside ui-events
-		for (const [, type] of Object.entries(["click", "touch"])) {
-			document.removeEventListener(type, this[closeEventHandler]);
-		}
-
-		disconnectResizeObserver.call(this);
-	}
-
-	/**
-	 * To set the options via the HTML Tag, the attribute `data-monster-options` must be used.
-	 * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
-	 *
-	 * The individual configuration values can be found in the table.
-	 *
-	 * @property {Object} templates Template definitions
-	 * @property {string} templates.main Main template
-	 * @property {Object} actions Callbacks
-	 * @property {string} actions.click="throw Error" Callback when clicked
-	 * @property {Object} features Features
-	 * @property {boolean} features.stripTags=true Strip tags from the copied text
-	 * @property {boolean} features.preventOpenEventSent=false Prevent open event from being sent
-	 * @property {Object} popper Popper configuration
-	 * @property {string} popper.placement="top" Popper placement
-	 * @property {string[]} popper.middleware=["autoPlacement", "shift", "offset:15", "arrow"] Popper middleware
-	 * @property {boolean} disabled=false Disabled state
-	 */
-	get defaults() {
-		return Object.assign({}, super.defaults, {
-			templates: {
-				main: getTemplate(),
-			},
-			disabled: false,
-			features: {
-				stripTags: true,
-				preventOpenEventSent: false,
-			},
-			popper: {
-				placement: "top",
-				middleware: ["autoPlacement", "shift", "offset:15", "arrow"],
-			},
-		});
-	}
-
-	/**
-	 * @return {string}
-	 */
-	static getTag() {
-		return "monster-copy";
-	}
-
-	/**
-	 * @return {CSSStyleSheet[]}
-	 */
-	static getCSSStyleSheet() {
-		return [CopyStyleSheet];
-	}
-
-	/**
-	 * With this method, you can show the popper.
-	 *
-	 * @return {Copy}
-	 */
-	showDialog() {
-		show.call(this);
-		return this;
-	}
-
-	/**
-	 * With this method, you can hide the popper.
-	 *
-	 * @return {Copy}
-	 */
-	hideDialog() {
-		hide.call(this);
-		return this;
-	}
-
-	/**
-	 * With this method, you can toggle the popper.
-	 *
-	 * @return {Copy}
-	 */
-	toggleDialog() {
-		if (this[popperElementSymbol].style.display === STYLE_DISPLAY_MODE_BLOCK) {
-			this.hideDialog();
-		} else {
-			this.showDialog();
-		}
-		return this;
-	}
+    /**
+     * This method is called by the `instanceof` operator.
+     * @return {symbol}
+     */
+    static get [instanceSymbol]() {
+        return Symbol.for("@schukai/monster/components/content/copy@@instance");
+    }
+
+    /**
+     *
+     * @return {Components.Content.Copy
+     * @fires monster-copy-clicked This event is fired when the copy button is clicked.
+     * @fires monster-copy-success This event is fired when the copy action is successful.
+     * @fires monster-copy-error This event is fired when the copy action fails.
+     */
+    [assembleMethodSymbol]() {
+        super[assembleMethodSymbol]();
+        initControlReferences.call(this);
+        initEventHandler.call(this);
+        return this;
+    }
+
+    /**
+     * This method is called when the element is connected to the dom.
+     *
+     * @return {void}
+     */
+    connectedCallback() {
+        super.connectedCallback();
+
+        const document = getDocument();
+
+        for (const [, type] of Object.entries(["click", "touch"])) {
+            // close on outside ui-events
+            document.addEventListener(type, this[closeEventHandler]);
+        }
+
+        updatePopper.call(this);
+        attachResizeObserver.call(this);
+    }
+
+    /**
+     * This method is called when the element is disconnected from the dom.
+     *
+     * @return {void}
+     */
+    disconnectedCallback() {
+        super.disconnectedCallback();
+
+        // close on outside ui-events
+        for (const [, type] of Object.entries(["click", "touch"])) {
+            document.removeEventListener(type, this[closeEventHandler]);
+        }
+
+        disconnectResizeObserver.call(this);
+    }
+
+    /**
+     * To set the options via the HTML Tag, the attribute `data-monster-options` must be used.
+     * @see {@link https://monsterjs.org/en/doc/#configurate-a-monster-control}
+     *
+     * The individual configuration values can be found in the table.
+     *
+     * @property {Object} templates Template definitions
+     * @property {string} templates.main Main template
+     * @property {Object} actions Callbacks
+     * @property {string} actions.click="throw Error" Callback when clicked
+     * @property {Object} features Features
+     * @property {boolean} features.stripTags=true Strip tags from the copied text
+     * @property {boolean} features.preventOpenEventSent=false Prevent open event from being sent
+     * @property {Object} popper Popper configuration
+     * @property {string} popper.placement="top" Popper placement
+     * @property {string[]} popper.middleware=["autoPlacement", "shift", "offset:15", "arrow"] Popper middleware
+     * @property {boolean} disabled=false Disabled state
+     */
+    get defaults() {
+        return Object.assign({}, super.defaults, {
+            templates: {
+                main: getTemplate(),
+            },
+            disabled: false,
+            features: {
+                stripTags: true,
+                preventOpenEventSent: false,
+            },
+            popper: {
+                placement: "top",
+                middleware: ["autoPlacement", "offset:-1", "arrow"],
+            },
+        });
+    }
+
+    /**
+     * @return {string}
+     */
+    static getTag() {
+        return "monster-copy";
+    }
+
+    /**
+     * @return {CSSStyleSheet[]}
+     */
+    static getCSSStyleSheet() {
+        return [CopyStyleSheet];
+    }
+
+    /**
+     * With this method, you can show the popper.
+     *
+     * @return {Copy}
+     */
+    showDialog() {
+        if (this[timerDelaySymbol] instanceof DeadMansSwitch) {
+            try {
+                this[timerDelaySymbol].defuse();
+            } catch (e) {
+            }
+        }
+
+        this[timerDelaySymbol] = new DeadMansSwitch(500, () => {
+            show.call(this);
+        });
+
+        return this;
+    }
+
+    /**
+     * With this method, you can hide the popper.
+     *
+     * @return {Copy}
+     */
+    hideDialog() {
+        if (this[timerDelaySymbol] instanceof DeadMansSwitch) {
+            try {
+                this[timerDelaySymbol].defuse();
+            } catch (e) {
+            }
+        }
+
+        hide.call(this);
+        return this;
+    }
+
+    /**
+     * With this method, you can toggle the popper.
+     *
+     * @return {Copy}
+     */
+    toggleDialog() {
+        if (this[popperElementSymbol].style.display === STYLE_DISPLAY_MODE_BLOCK) {
+            this.hideDialog();
+        } else {
+            this.showDialog();
+        }
+        return this;
+    }
 }
 
 /**
  * @private
  */
 function attachResizeObserver() {
-	// against flickering
-	this[resizeObserverSymbol] = new ResizeObserver((entries) => {
-		if (this[timerCallbackSymbol] instanceof DeadMansSwitch) {
-			try {
-				this[timerCallbackSymbol].touch();
-				return;
-			} catch (e) {
-				delete this[timerCallbackSymbol];
-			}
-		}
-
-		this[timerCallbackSymbol] = new DeadMansSwitch(200, () => {
-			updatePopper.call(this);
-		});
-	});
-
-	this[resizeObserverSymbol].observe(this.parentElement);
+    // against flickering
+    this[resizeObserverSymbol] = new ResizeObserver((entries) => {
+        if (this[timerCallbackSymbol] instanceof DeadMansSwitch) {
+            try {
+                this[timerCallbackSymbol].touch();
+                return;
+            } catch (e) {
+                delete this[timerCallbackSymbol];
+            }
+        }
+
+        this[timerCallbackSymbol] = new DeadMansSwitch(200, () => {
+            updatePopper.call(this);
+        });
+    });
+
+    this[resizeObserverSymbol].observe(this.parentElement);
 }
 
 /**
  * @private
  */
 function disconnectResizeObserver() {
-	if (this[resizeObserverSymbol] instanceof ResizeObserver) {
-		this[resizeObserverSymbol].disconnect();
-	}
+    if (this[resizeObserverSymbol] instanceof ResizeObserver) {
+        this[resizeObserverSymbol].disconnect();
+    }
 }
 
 /**
  * @private
  */
 function hide() {
-	const self = this;
+    const self = this;
 
-	fireCustomEvent(self, "monster-popper-hide", {
-		self,
-	});
+    fireCustomEvent(self, "monster-popper-hide", {
+        self,
+    });
 
-	self[popperElementSymbol].style.display = "none";
-	removeAttributeToken(self[controlElementSymbol], "class", "open");
+    self[popperElementSymbol].style.display = "none";
+    removeAttributeToken(self[controlElementSymbol], "class", "open");
 
-	setTimeout(() => {
-		fireCustomEvent(self, "monster-popper-hidden", {
-			self,
-		});
-	}, 0);
+    setTimeout(() => {
+        fireCustomEvent(self, "monster-popper-hidden", {
+            self,
+        });
+    }, 0);
 }
 
 /**
  * @private
  */
 function show() {
-	const self = this;
+    const self = this;
 
-	if (self.getOption("disabled", false) === true) {
-		return;
-	}
+    if (self.getOption("disabled", false) === true) {
+        return;
+    }
 
-	if (self[popperElementSymbol].style.display === STYLE_DISPLAY_MODE_BLOCK) {
-		return;
-	}
+    if (self[popperElementSymbol].style.display === STYLE_DISPLAY_MODE_BLOCK) {
+        return;
+    }
 
-	fireCustomEvent(self, "monster-popper-open", {
-		self,
-	});
+    fireCustomEvent(self, "monster-popper-open", {
+        self,
+    });
 
-	self[popperElementSymbol].style.visibility = "hidden";
-	self[popperElementSymbol].style.display = STYLE_DISPLAY_MODE_BLOCK;
+    self[popperElementSymbol].style.visibility = "hidden";
+    self[popperElementSymbol].style.display = STYLE_DISPLAY_MODE_BLOCK;
 
-	addAttributeToken(self[controlElementSymbol], "class", "open");
-	updatePopper.call(self);
+    addAttributeToken(self[controlElementSymbol], "class", "open");
+    updatePopper.call(self);
 
-	setTimeout(() => {
-		fireCustomEvent(self, "monster-popper-opened", {
-			self,
-		});
-	}, 0);
+    setTimeout(() => {
+        fireCustomEvent(self, "monster-popper-opened", {
+            self,
+        });
+    }, 0);
 }
 
 /**
  * @private
  */
 function updatePopper() {
-	if (this[popperElementSymbol].style.display !== STYLE_DISPLAY_MODE_BLOCK) {
-		return;
-	}
-
-	if (this.getOption("disabled", false) === true) {
-		return;
-	}
-
-	positionPopper.call(
-		this,
-		this[controlElementSymbol],
-		this[popperElementSymbol],
-		this.getOption("popper", {}),
-	);
+    if (this[popperElementSymbol].style.display !== STYLE_DISPLAY_MODE_BLOCK) {
+        return;
+    }
+
+    if (this.getOption("disabled", false) === true) {
+        return;
+    }
+
+    positionPopper.call(
+        this,
+        this[controlElementSymbol],
+        this[popperElementSymbol],
+        this.getOption("popper", {}),
+    );
 }
 
 /**
@@ -332,92 +359,126 @@ function updatePopper() {
  * @return {initEventHandler}
  */
 function initEventHandler() {
-	const self = this;
-
-	this[closeEventHandler] = (event) => {
-		const path = event.composedPath();
-
-		for (const [, element] of Object.entries(path)) {
-			if (element === this) {
-				return;
-			}
-		}
-		hide.call(this);
-	};
-
-	const type = "click";
-
-	this[controlElementSymbol].addEventListener("mouseenter", (event) => {
-		if (this.getOption("features.preventOpenEventSent") === true) {
-			event.preventDefault();
-		}
-		this.showDialog();
-	});
-
-	this[controlElementSymbol].addEventListener("focus", (event) => {
-		if (this.getOption("features.preventOpenEventSent") === true) {
-			event.preventDefault();
-		}
-		this.showDialog();
-	});
-	this[controlElementSymbol].addEventListener("blur", (event) => {
-		if (this.getOption("features.preventOpenEventSent") === true) {
-			event.preventDefault();
-		}
-		this.hideDialog();
-	});
-
-	this[copyButtonElementSymbol].addEventListener(type, function (event) {
-		fireCustomEvent(self, "monster-copy-clicked", {
-			element: self,
-		});
-
-		const nodes = getSlottedElements.call(self, ":scope");
-
-		let text = "";
-		for (const node of nodes) {
-			if (self.getOption("features.stripTags")) {
-				text += node.textContent;
-			} else {
-				text += node.outerHTML;
-			}
-		}
-
-		navigator.clipboard
-			.writeText(text)
-			.then(function () {
-				self[copyButtonElementSymbol]
-					.querySelector("use")
-					.setAttribute("href", "#copy-success");
-				setTimeout(() => {
-					self[copyButtonElementSymbol]
-						.querySelector("use")
-						.setAttribute("href", "#copy");
-				}, 2000);
-
-				fireCustomEvent(self, "monster-copy-success", {
-					element: self,
-				});
-			})
-			.catch(function (e) {
-				self[copyButtonElementSymbol]
-					.querySelector("use")
-					.setAttribute("href", "#copy-error");
-				setTimeout(() => {
-					self[copyButtonElementSymbol]
-						.querySelector("use")
-						.setAttribute("href", "#copy");
-				}, 2000);
-
-				fireCustomEvent(self, "monster-copy-error", {
-					element: self,
-				});
-
-				addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, "" + e);
-			});
-	});
-
-	return this;
+    const self = this;
+
+    this[closeEventHandler] = (event) => {
+        const path = event.composedPath();
+
+        for (const [, element] of Object.entries(path)) {
+            if (element === this) {
+                return;
+            }
+        }
+        hide.call(this);
+    };
+
+    const type = "click";
+
+    this[controlElementSymbol].addEventListener("mouseenter", (event) => {
+        if (this.getOption("features.preventOpenEventSent") === true) {
+            event.preventDefault();
+        }
+        this.showDialog();
+    });
+
+    this[controlElementSymbol].addEventListener("mouseleave", (event) => {
+        if (this.getOption("features.preventOpenEventSent") === true) {
+            event.preventDefault();
+        }
+        this.hideDialog();
+    });
+
+    this[controlElementSymbol].addEventListener("focus", (event) => {
+        if (this.getOption("features.preventOpenEventSent") === true) {
+            event.preventDefault();
+        }
+        this.showDialog();
+    });
+    this[controlElementSymbol].addEventListener("blur", (event) => {
+        if (this.getOption("features.preventOpenEventSent") === true) {
+            event.preventDefault();
+        }
+        this.hideDialog();
+    });
+
+    this[copyButtonElementSymbol].addEventListener(type, function (event) {
+        fireCustomEvent(self, "monster-copy-clicked", {
+            element: self,
+        });
+
+        const text = getSlottedCopyContent.call(self);
+
+        navigator.clipboard
+            .writeText(text)
+            .then(function () {
+                self[copyButtonElementSymbol]
+                    .querySelector("use")
+                    .setAttribute("href", "#copy-success");
+                setTimeout(() => {
+                    self[copyButtonElementSymbol]
+                        .querySelector("use")
+                        .setAttribute("href", "#copy");
+                }, 2000);
+
+                fireCustomEvent(self, "monster-copy-success", {
+                    element: self,
+                });
+            })
+            .catch(function (e) {
+                self[copyButtonElementSymbol]
+                    .querySelector("use")
+                    .setAttribute("href", "#copy-error");
+                setTimeout(() => {
+                    self[copyButtonElementSymbol]
+                        .querySelector("use")
+                        .setAttribute("href", "#copy");
+                }, 2000);
+
+                fireCustomEvent(self, "monster-copy-error", {
+                    element: self,
+                });
+
+                addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, "" + e);
+            });
+    });
+
+    return this;
+}
+
+/**
+ * @private
+ * @returns {Set<any>|string}
+ */
+function getSlottedCopyContent() {
+    const self = this;
+    const result = new Set();
+
+    if (!(this.shadowRoot instanceof ShadowRoot)) {
+        return result;
+    }
+
+    const slots = this.shadowRoot.querySelectorAll("slot");
+
+    let text = "";
+    for (const [, slot] of Object.entries(slots)) {
+        slot.assignedNodes().forEach(function (node) {
+            if (
+                node instanceof HTMLElement ||
+                node instanceof SVGElement ||
+                node instanceof MathMLElement
+            ) {
+                if (self.getOption("features.stripTags")) {
+                    text += node.textContent.trim();
+                } else {
+                    text += node.outerHTML.trim();
+                }
+            } else {
+                text += node.textContent.trim();
+            }
+        });
+    }
+
+    return text;
 }
 
 /**
@@ -425,17 +486,17 @@ function initEventHandler() {
  * @return {void}
  */
 function initControlReferences() {
-	this[controlElementSymbol] = this.shadowRoot.querySelector(
-		`[${ATTRIBUTE_ROLE}="control"]`,
-	);
+    this[controlElementSymbol] = this.shadowRoot.querySelector(
+        `[${ATTRIBUTE_ROLE}="control"]`,
+    );
 
-	this[copyButtonElementSymbol] = this.shadowRoot.querySelector(
-		`[${ATTRIBUTE_ROLE}="button"]`,
-	);
+    this[copyButtonElementSymbol] = this.shadowRoot.querySelector(
+        `[${ATTRIBUTE_ROLE}="button"]`,
+    );
 
-	this[popperElementSymbol] = this.shadowRoot.querySelector(
-		`[${ATTRIBUTE_ROLE}="popper"]`,
-	);
+    this[popperElementSymbol] = this.shadowRoot.querySelector(
+        `[${ATTRIBUTE_ROLE}="popper"]`,
+    );
 }
 
 /**
@@ -443,14 +504,15 @@ function initControlReferences() {
  * @return {string}
  */
 function getTemplate() {
-	// language=HTML
-	return `
+    // language=HTML
+    return `
         <div data-monster-role="control" part="control">
             <slot></slot>
             <div data-monster-role="popper" part="popper" tabindex="-1" class="monster-color-primary-1">
                 <div data-monster-role="arrow"></div>
                 <button data-monster-role="button" part="button">
-                    <svg data-monster-role="icon-map"><defs>
+                    <svg data-monster-role="icon-map">
+                        <defs>
                             <g id="copy">
                                 <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z"/>
                                 <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0z"/>
@@ -471,7 +533,11 @@ function getTemplate() {
                             </g>
 
                         </defs>
-                    </svg><svg data-monster-role="icon" xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 16 16"><use href="#copy"></use></svg>
+                    </svg>
+                    <svg data-monster-role="icon" xmlns="http://www.w3.org/2000/svg" width="25" height="25"
+                         viewBox="0 0 16 16">
+                        <use href="#copy"></use>
+                    </svg>
                 </button>
             </div>
         </div>`;
diff --git a/source/util/deadmansswitch.mjs b/source/util/deadmansswitch.mjs
index 21fba4764f75303a1fbd0236f7b8f49adf889b2d..578ffd1600611fd7f23de723e1736493108d83fb 100644
--- a/source/util/deadmansswitch.mjs
+++ b/source/util/deadmansswitch.mjs
@@ -63,11 +63,23 @@ class DeadMansSwitch extends Base {
 		}
 
 		clearTimeout(this[internalSymbol]["timer"]);
-
 		initCallback.call(this);
 
 		return this;
 	}
+
+	/**
+	 * @throws {Error} has already run
+	 * @returns {DeadMansSwitch}
+	 */
+	defuse() {
+		if (this[internalSymbol]["isAlreadyRun"] === true) {
+			throw new Error("has already run");
+		}
+
+		clearTimeout(this[internalSymbol]["timer"]);
+		return this;
+	}
 }
 
 /**