From 9e828088f5c602e4525a4e7f205179b9405e46fb Mon Sep 17 00:00:00 2001 From: Nigel Gilbert Date: Sun, 3 Nov 2024 20:56:34 +0000 Subject: [PATCH] Added merge user interface and user doc. --- css/prsm.css | 45 +- doc/help/docs/manual/Cloning.mdx | 54 +- .../docs/public/images/MergeMapsDialog.png | Bin 0 -> 108376 bytes doc/help/package-lock.json | 634 +++++++++--------- html/{3d.html => 3d.html.orig} | 0 html/prsm.html | 51 +- js/{3d.js => 3d.js.orig} | 0 js/merge.js | 36 +- js/prsm.js | 29 +- package-lock.json | 400 +++++------ package.json | 1 + 11 files changed, 651 insertions(+), 599 deletions(-) create mode 100644 doc/help/docs/public/images/MergeMapsDialog.png rename html/{3d.html => 3d.html.orig} (100%) rename js/{3d.js => 3d.js.orig} (100%) diff --git a/css/prsm.css b/css/prsm.css index 504917c..e567d08 100644 --- a/css/prsm.css +++ b/css/prsm.css @@ -16,7 +16,6 @@ --modal-header-color: rgb(13, 38, 68); --tab-color: rgb(220, 220, 220); --tutorial-highlight-color: rgb(211, 47, 47); - --chat-message-header-color: rgb(162, 162, 162); --map-title-color: rgb(255, 193, 7); --sample-selected-color: rgb(173, 216, 230); --notes-background-color: rgb(255, 253, 231); @@ -567,14 +566,15 @@ nav button .pressed { #copy-map-button { display: none; } -#saveFile { +#saveFile, +#openFile { margin: auto 0; padding: 1px 0; } .dropdown-wrapper { position: relative; display: inline-block; - padding: 0px; + padding: 0 4px 0 0; color: white; z-index: 2050; } @@ -836,6 +836,45 @@ nav button .pressed { font-size: 12px; } +/* -----Merge modal dialog ------------------------------------------------------------------- */ + +#mergeDialog::backdrop { + opacity: 0.4; + background-color: grey; +} +#mergeDialog { + position: absolute; + top: 90px; + margin: 0 auto; + border-radius: 20px; + padding: 0 10px 10px 10px; + box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px; +} +#mergeDialog #mergeClose { + float: right; + font-weight: bold; + background-color: white; + padding: 10px; + border: none; + font-size: 2em; +} +#mergeDialog h2 { + font-size: 1.5em; + font-weight: bold; + padding: 10px; +} +#mergeDialog #mergedRoom { + width: 300px; +} +#mergeDialog #merge { + float: right; + padding: 6px; + border-radius: 6px; + border: 1px solid black; + width: 7em; + user-select: none; +} + /* ---- Styles for the right hand side panel ------------------------------------------------- */ .panelHeader { diff --git a/doc/help/docs/manual/Cloning.mdx b/doc/help/docs/manual/Cloning.mdx index 369a7b5..1de777e 100644 --- a/doc/help/docs/manual/Cloning.mdx +++ b/doc/help/docs/manual/Cloning.mdx @@ -7,9 +7,9 @@ import { normalizeImagePath } from 'rspress/runtime'; If you click on the **Sharing** button in the top navigation bar, the sharing dialog opens. There are three buttons on the right. If you click the **Clone map** button, a new browser tab will open with the same map but in a new room - any changes made to this new map will _not_ appear in the original room. You can then send the web address to others, confident that they will not disturb the original map. Share Dialog ## Read-only maps @@ -17,17 +17,17 @@ If you click on the **Sharing** button in the top navigation bar, the sharing di If you click the **Read only** button, a copy of the map will be made in a new browser tab, but without any of the buttons for modifying the map. It does however include a **Search** button so that users can search the factors and links in the read only map. You can use the web link of this map to distribute it to people whom you want to look at the map, but not change it. Navigation Bar for a Read Only Map You may not want users to be able to change this read-only map, but nevertheless be able to clone the map to another that they *can* edit. For example, you might want to put the read only map (or a link to it) on a public website in read only mode, so that users cannot mess with it, but also allow users to create and then modify their own versions of the map. This can be achieved by checking the box under the **Read only** button before you create the read only copy. The read only copy will be created in a new tab, as before, but its navigation bar will include a **Copy Map** button, as well as the **Search** button. Clicking on this **Copy Map** button puts the map in a new browser tab in editable mode in a new room. Copy Map Button ## Linking one map to another @@ -40,9 +40,9 @@ You may have several related maps that you would like to navigate between. For e In each of these examples, it might be useful to switch from one map to another with just a click. This can be achieved by adding **Portal** factors to the maps. A portal factor If you click on a portal factor, a browser tab holding the destination map is opened and revealed. @@ -50,13 +50,33 @@ If you click on a portal factor, a browser tab holding the destination map is op A portal factor is just like an ordinary factor, except that the _shape_ is `Portal` and there is an extra field that holds the room name of the destination map. To create a portal factor, add an ordinary factor, giving it a suitable name. Then double click the new factor to open the factor's Edit dialog. Select `Portal` from the `Shape...` menu and fill in the Map field that appears with the room name of the destination map. Press `Save` to create the portal. Editing a portal ## Merging maps -It is possible to merge two maps to make a map that includes all the factors and links from both. If the identical factor or link occurs in both maps, only one copy is included in the merged map. +It is possible to merge two maps to make a map that includes all the factors and links from both. If the identical factor or link occurs in both maps, only one copy is included in the merged map. This can be very useful if two or more groups start with clones of the same map and each group makes changes to their own map. You may then want to integrate all the changes into one map. This can be done by merging the clones. -[Details coming soon...] +To merge two maps, follow these steps (repeat them to merge additional maps): + +1. Open one of the maps. The other map will be merged into this one. It is a good idea to save a copy of this map to your computer before starting to merge. +2. Open a copy of the other map in another browser tab. Click on the **Share** button and copy the map's web link to the clipboard (click on the 'Copy to Clipboard' button). +3. Return to the first map and hover with the mouse pointer over the small downward facing triangle next to the **Open** button. Select **Merge** from the menu. +4. A dialog will appear. Paste in the web link of the other map and click on the **Merge** button. + +Map merging dialog + +Let's call the map that is receiving the merge, map A, and the map that is being merged into it, map B. The merge will: + +* Add any factors in map B that are not in map A into map A +* Add any links in map B that are not in map A into map A +* If a factor in map A is also in map B, but has had its label changed, a new factor with the new label is added to map A, outlined in red. Any links to the factor in map A are also duplicated, linked to the new factor and coloured red. +* If a factor is deleted from map A but retained in map B, it will reappear in map A after the merge. + +All the changes made to map A are recorded in its [History](/manual/Styling#network-tab). diff --git a/doc/help/docs/public/images/MergeMapsDialog.png b/doc/help/docs/public/images/MergeMapsDialog.png new file mode 100644 index 0000000000000000000000000000000000000000..395e7c259ded6d25e9d09086c7b76c5c4ed63b86 GIT binary patch literal 108376 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 literal 0 HcmV?d00001 diff --git a/doc/help/package-lock.json b/doc/help/package-lock.json index a497aed..42744fe 100644 --- a/doc/help/package-lock.json +++ b/doc/help/package-lock.json @@ -15,9 +15,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -26,9 +26,9 @@ } }, "node_modules/@bufbuild/protobuf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.1.0.tgz", - "integrity": "sha512-+2Mx67Y3skJ4NCD/qNSdBJNWtu6x6Qr53jeNg+QcwiL6mt0wK+3jwHH2x1p7xaYH6Ve2JKOVn0OxU35WsmqI9A==" + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.2.tgz", + "integrity": "sha512-UNtPCbrwrenpmrXuRwn9jYpPoweNXj8X5sMvYgsqYyaH8jQ6LfUJSk3dJLnBK+6sfYPrF4iAIo5sd5HQ+tg75A==" }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", @@ -169,9 +169,9 @@ } }, "node_modules/@modern-js/utils": { - "version": "2.60.1", - "resolved": "https://registry.npmjs.org/@modern-js/utils/-/utils-2.60.1.tgz", - "integrity": "sha512-Xu/xumI2xnkB6BXqHfqD5cDrMhxAW1/QsrHXWHcvEW1hSbtviw77PUwXs90NgPKGtV5wwdA319kUPxswe4TCUA==", + "version": "2.60.6", + "resolved": "https://registry.npmjs.org/@modern-js/utils/-/utils-2.60.6.tgz", + "integrity": "sha512-rAeqAHiUUnStwBTkP1tdQSz29o/Qtoc2OUfz6TEAtEPoAxcFSc44+hwux7mQkSxXSzBjkbev5RMkwVwuM2FWtw==", "dependencies": { "@swc/helpers": "0.5.13", "caniuse-lite": "^1.0.30001520", @@ -211,22 +211,21 @@ } }, "node_modules/@remix-run/router": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz", - "integrity": "sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz", + "integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==", "engines": { "node": ">=14.0.0" } }, "node_modules/@rsbuild/core": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.0.5.tgz", - "integrity": "sha512-yUWs4k9X9C661P0kwe3Om1GMJKAxliXDMnBV5hHoaEuAovdp/pOG3pk2fVsRrxcwMn3i6FyMGSVB7g0WmQpeHA==", + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.0.19.tgz", + "integrity": "sha512-63DAPvYfRBoUrb51BUPb4Xoqx48MHQ0yLcmnCiqZGpMeKYtTWzD+lyx5va4cr9qvdnIFTAX2BMuYC/j5iSrtTA==", "dependencies": { - "@rspack/core": "~1.0.5", - "@rspack/lite-tapable": "~1.0.0", + "@rspack/core": "~1.0.14", + "@rspack/lite-tapable": "~1.0.1", "@swc/helpers": "^0.5.13", - "caniuse-lite": "^1.0.30001660", "core-js": "~3.38.1" }, "bin": { @@ -240,9 +239,9 @@ } }, "node_modules/@rsbuild/plugin-less": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rsbuild/plugin-less/-/plugin-less-1.0.1.tgz", - "integrity": "sha512-bXjPDII9b0MCdYxkoNUtf1z11lQVQDPqgC6Iu90s6X5lnfJd7uwxQC7Sr/cHKYDPKVKQZIvbmXHFJxnd8bsCLg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rsbuild/plugin-less/-/plugin-less-1.0.3.tgz", + "integrity": "sha512-lz/u0C7Cj/sUO0WuwxJR976BLUxFy/mzT9fZOK/G6ceTuhUd1rEQw4FAPuOefhgkDxfqpJ4ZjliVfpm+n4CjyQ==", "dependencies": { "deepmerge": "^4.3.1", "reduce-configs": "^1.0.0" @@ -252,52 +251,52 @@ } }, "node_modules/@rsbuild/plugin-react": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rsbuild/plugin-react/-/plugin-react-1.0.2.tgz", - "integrity": "sha512-8Sa4AJ43/ift7ZW1iNMA38ZIEDXNINPa8rGI38u7b42yBgMUWBan8yDjFYAC0Gkg3lh8vCWYVQYZp0RyIS7lqA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@rsbuild/plugin-react/-/plugin-react-1.0.6.tgz", + "integrity": "sha512-k2VS7nvNm74DlVQROK+w+Ua1j60n3qSnVFva8zjmj6uakLCxxp85aRwfEHzaVP/YdDLffweypROuQPYvTZ57ew==", "dependencies": { - "@rspack/plugin-react-refresh": "1.0.0", + "@rspack/plugin-react-refresh": "~1.0.0", "react-refresh": "^0.14.2" }, "peerDependencies": { - "@rsbuild/core": "1.x || ^1.0.1-rc.0" + "@rsbuild/core": "1.x" } }, "node_modules/@rsbuild/plugin-sass": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rsbuild/plugin-sass/-/plugin-sass-1.0.1.tgz", - "integrity": "sha512-gybEWXc5kUAc3eur7LJRfWiG9tA5sdDUNo++Fy2pSRhVdYRMLUtKq4YOTmLCYHQ8b7vWRbmv8keqX34ynBm8Bg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@rsbuild/plugin-sass/-/plugin-sass-1.0.4.tgz", + "integrity": "sha512-0eTVOgglTBf440ykuZWJQmh44S3hj/MT95K+P5XwEU8gU72MrEGTrQlZciOqFW8tVkEVmtUlHPx7YEipXhplSQ==", "dependencies": { "deepmerge": "^4.3.1", "loader-utils": "^2.0.4", - "postcss": "^8.4.45", + "postcss": "^8.4.47", "reduce-configs": "^1.0.0", - "sass-embedded": "^1.78.0" + "sass-embedded": "^1.80.3" }, "peerDependencies": { "@rsbuild/core": "1.x || ^1.0.1-rc.0" } }, "node_modules/@rspack/binding": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.0.8.tgz", - "integrity": "sha512-abRirbrjobcllLAamyeiWxT6Rb0wELUnITynQdqRbSweWm2lvnhm9YBv4BcOjvJBzhJtvRJo5JBtbKXjDTarug==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.0.14.tgz", + "integrity": "sha512-0wWqFvr9hkF4LgNPgWfkTU0hhkZAMvOytoCs2p+wDX1Up1E/SgJ1U1JAsCxsl1XtUKm7mRvdWHzJmHbza3y89Q==", "optionalDependencies": { - "@rspack/binding-darwin-arm64": "1.0.8", - "@rspack/binding-darwin-x64": "1.0.8", - "@rspack/binding-linux-arm64-gnu": "1.0.8", - "@rspack/binding-linux-arm64-musl": "1.0.8", - "@rspack/binding-linux-x64-gnu": "1.0.8", - "@rspack/binding-linux-x64-musl": "1.0.8", - "@rspack/binding-win32-arm64-msvc": "1.0.8", - "@rspack/binding-win32-ia32-msvc": "1.0.8", - "@rspack/binding-win32-x64-msvc": "1.0.8" + "@rspack/binding-darwin-arm64": "1.0.14", + "@rspack/binding-darwin-x64": "1.0.14", + "@rspack/binding-linux-arm64-gnu": "1.0.14", + "@rspack/binding-linux-arm64-musl": "1.0.14", + "@rspack/binding-linux-x64-gnu": "1.0.14", + "@rspack/binding-linux-x64-musl": "1.0.14", + "@rspack/binding-win32-arm64-msvc": "1.0.14", + "@rspack/binding-win32-ia32-msvc": "1.0.14", + "@rspack/binding-win32-x64-msvc": "1.0.14" } }, "node_modules/@rspack/binding-darwin-arm64": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.0.8.tgz", - "integrity": "sha512-1l8/eg3HNz53DHQO3fy5O5QKdYh8hSMZaWGtm3NR5IfdrTm2TaLL9tuR8oL2iHHtd87LEvVKHXdjlcuLV5IPNQ==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.0.14.tgz", + "integrity": "sha512-dHvlF6T6ctThGDIdvkSdacroA1xlCxfteuppBj8BX/UxzLPr4xsaEtNilfJmFfd2/J02UQyTQauN/9EBuA+YkA==", "cpu": [ "arm64" ], @@ -307,9 +306,9 @@ ] }, "node_modules/@rspack/binding-darwin-x64": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.0.8.tgz", - "integrity": "sha512-7BbG8gXVWjtqJegDpsObzM/B90Eig1piEtcahvPdvlC92uZz3/IwtKPpMaywGBrf5RSI3U0nQMSekwz0cO1SOw==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.0.14.tgz", + "integrity": "sha512-q4Da1Bn/4xTLhhnOkT+fjP2STsSCfp4z03/J/h8tCVG/UYz56Ud3q1UEOK33c5Fxw1C4GlhEh5yYOlSAdxFQLQ==", "cpu": [ "x64" ], @@ -319,9 +318,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-gnu": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.8.tgz", - "integrity": "sha512-QnqCL0wmwYqT/IFx5q0aw7DsIOr8oYUa4+7JI8iiqRf3RuuRJExesVW9VuWr0jS2UvChKgmb8PvRtDy/0tshFw==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.14.tgz", + "integrity": "sha512-JogYtL3VQS9wJ3p3FNhDqinm7avrMsdwz4erP7YCjD7idob93GYAE7dPrHUzSNVnCBYXRaHJYZHDQs7lKVcYZw==", "cpu": [ "arm64" ], @@ -331,9 +330,9 @@ ] }, "node_modules/@rspack/binding-linux-arm64-musl": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.8.tgz", - "integrity": "sha512-Ns9TsE7zdUjimW5HURRW08BaMyAh16MDh97PPsGEMeRPx9plnRO9aXvuUG6t+0gy4KwlQdeq3BvUsbBpIo5Tow==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.14.tgz", + "integrity": "sha512-qgybhxI/nnoa8CUz7zKTC0Oh37NZt9uRxsSV7+ZYrfxqbrVCoNVuutPpY724uUHy1M6W34kVEm1uT1N4Ka5cZg==", "cpu": [ "arm64" ], @@ -343,9 +342,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-gnu": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.8.tgz", - "integrity": "sha512-lfqUuKCoyRN/gGeokhX/oNYqB6OpbtgQb57b0QuD8IaiH2a1ee0TtEVvRbyQNEDwht6lW4RTNg0RfMYu52LgXg==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.14.tgz", + "integrity": "sha512-5vzaDRw3/sGKo3ax/1cU3/cxqNjajwlt2LU288vXNe1/n8oe/pcDfYcTugpOe/A1DqzadanudJszLpFcKsaFtQ==", "cpu": [ "x64" ], @@ -355,9 +354,9 @@ ] }, "node_modules/@rspack/binding-linux-x64-musl": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.8.tgz", - "integrity": "sha512-MgbHJWV5utVa1/U9skrXClydZ/eZw001++v4B6nb8myU6Ck1D02aMl9ESefb/sSA8TatLLxEXQ2VENG9stnPwQ==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.14.tgz", + "integrity": "sha512-4U6QD9xVS1eGme52DuJr6Fg/KdcUfJ+iKwH49Up460dZ/fLvGylnVGA+V0mzPlKi8gfy7NwFuYXZdu3Pwi1YYg==", "cpu": [ "x64" ], @@ -367,9 +366,9 @@ ] }, "node_modules/@rspack/binding-win32-arm64-msvc": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.8.tgz", - "integrity": "sha512-3NN5VisnSOzhgqX77O/7NvcjPUueg1oIdMKoc5vElJCEu5FEXPqDhwZmr1PpBovaXshAcgExF3j54+20pwdg5g==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.14.tgz", + "integrity": "sha512-SjeYw7qqRHYZ5RPClu+ffKZsShQdU3amA1OwC3M0AS6dbfEcji8482St3Y8Z+QSzYRapCEZij9LMM/9ypEhISg==", "cpu": [ "arm64" ], @@ -379,9 +378,9 @@ ] }, "node_modules/@rspack/binding-win32-ia32-msvc": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.8.tgz", - "integrity": "sha512-17VQNC7PSygzsipSVoukDM/SOcVueVNsk9bZiB0Swl20BaqrlBts2Dvlmo+L+ZGsxOYI97WvA/zomMDv860usg==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.14.tgz", + "integrity": "sha512-m1gUiVyz3Z3VYIK/Ayo5CVHBjnEeRk9a+KIpKSsq1yhZItnMgjtr4bKabU9vjxalO4UoaSmVzODJI8lJBlnn5Q==", "cpu": [ "ia32" ], @@ -391,9 +390,9 @@ ] }, "node_modules/@rspack/binding-win32-x64-msvc": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.8.tgz", - "integrity": "sha512-Vtjt74Soh09XUsV5Nw0YjZVSk/qtsjtPnzbSZluncSAVUs8l+X1ALcM6n1Jrt3TLTfcqf7a+VIsWOXAMqkCGUg==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.14.tgz", + "integrity": "sha512-Gbeg+bayMF9VP9xmlxySL/TC2XrS6/LZM/pqcNOTLHx6LMG/VXCcmKB0rOZo8MzLXEt8D/lQmQ/B6g7pSaAw0g==", "cpu": [ "x64" ], @@ -403,12 +402,12 @@ ] }, "node_modules/@rspack/core": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.0.8.tgz", - "integrity": "sha512-pbXwXYb4WQwb0l35P5v3l/NpDJXy1WiVE4IcQ/6LxZYU5NyZuqtsK0trR88xIVRZb9qU0JUeCdQq7Xa6Q+c3Xw==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.0.14.tgz", + "integrity": "sha512-xHl23lxJZNjItGc5YuE9alz3yjb56y7EgJmAcBMPHMqgjtUt8rBu4xd/cSUjbr9/lLF9N4hdyoJiPJOFs9LEjw==", "dependencies": { "@module-federation/runtime-tools": "0.5.1", - "@rspack/binding": "1.0.8", + "@rspack/binding": "1.0.14", "@rspack/lite-tapable": "1.0.1", "caniuse-lite": "^1.0.30001616" }, @@ -450,27 +449,27 @@ } }, "node_modules/@rspress/core": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/@rspress/core/-/core-1.31.1.tgz", - "integrity": "sha512-pkFVvrvJaW4GaMoEvtVdFgAo7OAc0CbYu+0TlDPiWmqt05cMDL0uR5lgYb85gXp5qimXiVIIddpgUXe0T7R9/Q==", + "version": "1.35.3", + "resolved": "https://registry.npmjs.org/@rspress/core/-/core-1.35.3.tgz", + "integrity": "sha512-sT+0t2UJ/qxahPDlFVDKl/n8ACZvmxL5r57AZF923VvKpdkgE729bZ8xlZQku5sl9KCcwo4+87V7AOUIEC4JHw==", "dependencies": { "@loadable/component": "5.16.4", "@mdx-js/loader": "2.3.0", "@mdx-js/mdx": "2.3.0", "@mdx-js/react": "2.3.0", - "@modern-js/utils": "2.60.1", - "@rsbuild/core": "1.0.5", - "@rsbuild/plugin-less": "1.0.1", - "@rsbuild/plugin-react": "1.0.2", - "@rsbuild/plugin-sass": "1.0.1", - "@rspress/mdx-rs": "0.5.7", - "@rspress/plugin-auto-nav-sidebar": "1.31.1", - "@rspress/plugin-container-syntax": "1.31.1", - "@rspress/plugin-last-updated": "1.31.1", - "@rspress/plugin-medium-zoom": "1.31.1", - "@rspress/runtime": "1.31.1", - "@rspress/shared": "1.31.1", - "@rspress/theme-default": "1.31.1", + "@modern-js/utils": "2.60.6", + "@rsbuild/core": "~1.0.18", + "@rsbuild/plugin-less": "~1.0.3", + "@rsbuild/plugin-react": "~1.0.5", + "@rsbuild/plugin-sass": "~1.0.4", + "@rspress/mdx-rs": "0.6.1", + "@rspress/plugin-auto-nav-sidebar": "1.35.3", + "@rspress/plugin-container-syntax": "1.35.3", + "@rspress/plugin-last-updated": "1.35.3", + "@rspress/plugin-medium-zoom": "1.35.3", + "@rspress/runtime": "1.35.3", + "@rspress/shared": "1.35.3", + "@rspress/theme-default": "1.35.3", "body-scroll-lock": "4.0.0-beta.0", "copy-to-clipboard": "^3.3.3", "enhanced-resolve": "5.17.1", @@ -509,27 +508,27 @@ } }, "node_modules/@rspress/mdx-rs": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@rspress/mdx-rs/-/mdx-rs-0.5.7.tgz", - "integrity": "sha512-Ie9TqTeMF7yCBqKAOxyLD1W2cDhRZkMsIFD4UJ9nAJTuV4zMj1aXoaKL94phsnl6ImDykF/dohTeuBUrwch08g==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@rspress/mdx-rs/-/mdx-rs-0.6.1.tgz", + "integrity": "sha512-hAZH2dZPueRACh2dL6EuKzNSxPShq0zd0BCat1IaOpJ8mX73IRvTAQib/26gTM1IRikjMY7R7Bs6/RDZrjM+dQ==", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@rspress/mdx-rs-darwin-arm64": "0.5.7", - "@rspress/mdx-rs-darwin-x64": "0.5.7", - "@rspress/mdx-rs-linux-arm64-gnu": "0.5.7", - "@rspress/mdx-rs-linux-arm64-musl": "0.5.7", - "@rspress/mdx-rs-linux-x64-gnu": "0.5.7", - "@rspress/mdx-rs-linux-x64-musl": "0.5.7", - "@rspress/mdx-rs-win32-arm64-msvc": "0.5.7", - "@rspress/mdx-rs-win32-x64-msvc": "0.5.7" + "@rspress/mdx-rs-darwin-arm64": "0.6.1", + "@rspress/mdx-rs-darwin-x64": "0.6.1", + "@rspress/mdx-rs-linux-arm64-gnu": "0.6.1", + "@rspress/mdx-rs-linux-arm64-musl": "0.6.1", + "@rspress/mdx-rs-linux-x64-gnu": "0.6.1", + "@rspress/mdx-rs-linux-x64-musl": "0.6.1", + "@rspress/mdx-rs-win32-arm64-msvc": "0.6.1", + "@rspress/mdx-rs-win32-x64-msvc": "0.6.1" } }, "node_modules/@rspress/mdx-rs-darwin-arm64": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-darwin-arm64/-/mdx-rs-darwin-arm64-0.5.7.tgz", - "integrity": "sha512-8zU3nCA1ot2mKpaQsWyEUgpMqBXj/0aWFzsXdxyHojKAkRxgY9pTTKSolUx/Nt3iDeJwhfMBRmoD1d34rZemEQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-darwin-arm64/-/mdx-rs-darwin-arm64-0.6.1.tgz", + "integrity": "sha512-XV/meKCyAbuhv4u1iC2Y0l6bwspiqAwmSA55wG5r1L88DG5kD1sntiIB5seKkr7oUXcDJ/QbRy76GZuHuYdBzA==", "cpu": [ "arm64" ], @@ -542,9 +541,9 @@ } }, "node_modules/@rspress/mdx-rs-darwin-x64": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-darwin-x64/-/mdx-rs-darwin-x64-0.5.7.tgz", - "integrity": "sha512-nNiEKvuWWBL2OUvGGZS8v83fXHhyQKy6CTwZ9vwamVZrslvN63W/11TxX23wumvhnwgfbi3+1gy2sEF4b/F5ew==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-darwin-x64/-/mdx-rs-darwin-x64-0.6.1.tgz", + "integrity": "sha512-29G3RfWSyfQOuNLnI4XC6uOwCf6tFtigcBDYFFY+JmYltUetRNRBCnn9xOyLd3RUKFaoc97oKRzwWBzpKougYw==", "cpu": [ "x64" ], @@ -557,9 +556,9 @@ } }, "node_modules/@rspress/mdx-rs-linux-arm64-gnu": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-linux-arm64-gnu/-/mdx-rs-linux-arm64-gnu-0.5.7.tgz", - "integrity": "sha512-vaNgtx2VX5289JfobXpNekFchM9kzBkqglDeujA9LHiokvr373seHsm+TEJ2XZiY2ELyRi1PS1MX5soIasbyfg==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-linux-arm64-gnu/-/mdx-rs-linux-arm64-gnu-0.6.1.tgz", + "integrity": "sha512-SHPlnghHBBx+yU+HyP1pZEeC6aKtx654kfKXx9YMauGvmA2XbTU7FRIio8rYK+e310F67vAZH7SRcTeczhSlyA==", "cpu": [ "arm64" ], @@ -572,9 +571,9 @@ } }, "node_modules/@rspress/mdx-rs-linux-arm64-musl": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-linux-arm64-musl/-/mdx-rs-linux-arm64-musl-0.5.7.tgz", - "integrity": "sha512-/bQilCaEK3HJ2fkCU37ioazcY0NJ6QeYLNQBnXLM3cFL7a+iCq1+AVXz6DFNQdE/bE1AzUySrLFFFQaMhrx06w==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-linux-arm64-musl/-/mdx-rs-linux-arm64-musl-0.6.1.tgz", + "integrity": "sha512-8o+V3LZ/OvT/0kky56GVM9uqCWbfi5m/RlCE2pS7DqZYvQZcMVeZc14eEWLtLcZd2dsZlqmT/fekbEkoP+pu5Q==", "cpu": [ "arm64" ], @@ -587,9 +586,9 @@ } }, "node_modules/@rspress/mdx-rs-linux-x64-gnu": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-linux-x64-gnu/-/mdx-rs-linux-x64-gnu-0.5.7.tgz", - "integrity": "sha512-t4Zevz9wVt2HAj7WVGS/w388yV8jE0WgYK7TE9Dv86t/L/ko+qNTfjm+t5k7r/CKPUaXrLzxsTsRzqBWoDF8bQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-linux-x64-gnu/-/mdx-rs-linux-x64-gnu-0.6.1.tgz", + "integrity": "sha512-v4ZIscNR7AyeQE/8Hcy5Sceh2sbc481GfAUV7LMTcaAiAdHvVQXdWxeoUA/x23uAXmfP+dveZcmhfoGMe/y4rQ==", "cpu": [ "x64" ], @@ -602,9 +601,9 @@ } }, "node_modules/@rspress/mdx-rs-linux-x64-musl": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-linux-x64-musl/-/mdx-rs-linux-x64-musl-0.5.7.tgz", - "integrity": "sha512-4hZhb9MN/o1QaT+eQtVxcf/RZnDw5dVFA/AQWfsmuJRNp1jkzF3DIdyIVaJpQdWt5XXnWNqXrhN43qsHy8nZMQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-linux-x64-musl/-/mdx-rs-linux-x64-musl-0.6.1.tgz", + "integrity": "sha512-cbBIf6q73n/aB/0ctIW0FHkpBxSUXFazwXJ3nv4YISZP5/1ytE1RXsOPo47Zko3Ta41bNxLYvi5PLOz8cdIejw==", "cpu": [ "x64" ], @@ -617,9 +616,9 @@ } }, "node_modules/@rspress/mdx-rs-win32-arm64-msvc": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-win32-arm64-msvc/-/mdx-rs-win32-arm64-msvc-0.5.7.tgz", - "integrity": "sha512-IIwUiJ35fnpG7Z9c0Doqaxw3XSVgahX0rHsOdFc21RPfUqHGNlTUCdDaK00oXwaxSCzNyw1zRN7qynpR0RsPvQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-win32-arm64-msvc/-/mdx-rs-win32-arm64-msvc-0.6.1.tgz", + "integrity": "sha512-x3kujsuzl3kzsL9kBQy/5QdEO6Ga9+nyG3+lbLbGHKfberT0+ZbgOMTwpQ8hetv0qs/bFZWcMhNbZ6+KwKSUYg==", "cpu": [ "arm64" ], @@ -632,9 +631,9 @@ } }, "node_modules/@rspress/mdx-rs-win32-x64-msvc": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-win32-x64-msvc/-/mdx-rs-win32-x64-msvc-0.5.7.tgz", - "integrity": "sha512-W7hbIJ3Zro8/ML3mZPdhFhmDh8VXcRM8jiMdfnXPUG+vSFmj8N6kfV/FO539foUoUKI1+4VGPxYO2vKXs3iDDQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@rspress/mdx-rs-win32-x64-msvc/-/mdx-rs-win32-x64-msvc-0.6.1.tgz", + "integrity": "sha512-14YQOlV8YBHYNEzNZ4tXuSCWvnWpwuGI2WgXJMEBvhAFLOEpDAzof3KrcfExvBF0gxlUsC/loIorBT4RzoFn4g==", "cpu": [ "x64" ], @@ -647,42 +646,42 @@ } }, "node_modules/@rspress/plugin-auto-nav-sidebar": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/@rspress/plugin-auto-nav-sidebar/-/plugin-auto-nav-sidebar-1.31.1.tgz", - "integrity": "sha512-VzhkygoM9A3cvBfOAiayjBdyn1MJmTa9iOjZrOGno6Iw8T5f6Vhk1qkjyOU6MlbHR+WVFTcNx8WTTTGcNu2NwA==", + "version": "1.35.3", + "resolved": "https://registry.npmjs.org/@rspress/plugin-auto-nav-sidebar/-/plugin-auto-nav-sidebar-1.35.3.tgz", + "integrity": "sha512-ooLJzhkRSx8BKTcG9WLxuV7eXtqs/RG5IAew3wWK0D5ogy36/JYG2DZssmmrvPWN4wTySjlJCYpEyJWAwaGOBg==", "dependencies": { - "@rspress/shared": "1.31.1" + "@rspress/shared": "1.35.3" }, "engines": { "node": ">=14.17.6" } }, "node_modules/@rspress/plugin-container-syntax": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/@rspress/plugin-container-syntax/-/plugin-container-syntax-1.31.1.tgz", - "integrity": "sha512-vk/W4N/HQLzydviqPTZBPlJdguGfVwSUM+aciNJHC6qi4Afk06sLeAoVhJZF6vzOdZjRP9ODwlNO0PkpkUB13Q==", + "version": "1.35.3", + "resolved": "https://registry.npmjs.org/@rspress/plugin-container-syntax/-/plugin-container-syntax-1.35.3.tgz", + "integrity": "sha512-YPtnBfvlAfbwlOKtR2vj4SwV7Kk04Kt2cWkjnKQRZph1Sj6fHWgaT620ES6gbkYLz7pLmQtpFc/VSLZurDkDvw==", "dependencies": { - "@rspress/shared": "1.31.1" + "@rspress/shared": "1.35.3" }, "engines": { "node": ">=14.17.6" } }, "node_modules/@rspress/plugin-last-updated": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/@rspress/plugin-last-updated/-/plugin-last-updated-1.31.1.tgz", - "integrity": "sha512-cWleN7NT73pfs1nnutSPNXQAAbT1jH1bnZkXUlAMWBmWLRIFm78ylgM45btw+8obqkzZZybsmm7wGMNjr1geQA==", + "version": "1.35.3", + "resolved": "https://registry.npmjs.org/@rspress/plugin-last-updated/-/plugin-last-updated-1.35.3.tgz", + "integrity": "sha512-yPUTGLC9e+4Vz0GsX2gobKcR7qYyoe/dcood4dSi8ByO29qLSxnbiO8kb3e0jc7aBHeoUQyjswRaPzftcgcZUA==", "dependencies": { - "@rspress/shared": "1.31.1" + "@rspress/shared": "1.35.3" }, "engines": { "node": ">=14.17.6" } }, "node_modules/@rspress/plugin-medium-zoom": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/@rspress/plugin-medium-zoom/-/plugin-medium-zoom-1.31.1.tgz", - "integrity": "sha512-e02RK1BSdjN8fXUVh90pAuIjxLjMPDY2r90FjTECB7DU9HlkyQTZclAhGIinbNC72hYBe+n8Tuaaz0sIIdq5lg==", + "version": "1.35.3", + "resolved": "https://registry.npmjs.org/@rspress/plugin-medium-zoom/-/plugin-medium-zoom-1.35.3.tgz", + "integrity": "sha512-IBM0CH5/SjPEjd0sBgqxhjmCJwurSvwVfwvmZG/3OFkMx65MoejII+PWJColSarKDKwU+VN9CMrULkNDw+a8gg==", "dependencies": { "medium-zoom": "1.1.0" }, @@ -690,30 +689,30 @@ "node": ">=14.17.6" }, "peerDependencies": { - "@rspress/runtime": "^1.31.1" + "@rspress/runtime": "^1.35.3" } }, "node_modules/@rspress/runtime": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/@rspress/runtime/-/runtime-1.31.1.tgz", - "integrity": "sha512-UrDXGnbYrhxi9O1SC9kM7IScJHpTj55MxqHAJF/E3ECdaKKiMtcldgaBhZfbCpUquzV9K92Og3ukjpsqg/swhw==", + "version": "1.35.3", + "resolved": "https://registry.npmjs.org/@rspress/runtime/-/runtime-1.35.3.tgz", + "integrity": "sha512-JyjQuiV4E2l2BpGbh8Gkoc3tb/OO5Y6xYd7yff/14tFvsWwxpPp7VbAMH7CcV4zz/D6VSpr5nlZloyTfC9arhA==", "dependencies": { - "@rspress/shared": "1.31.1", + "@rspress/shared": "1.35.3", "react": "^18.3.1", "react-dom": "^18.3.1", "react-helmet-async": "^1.3.0", - "react-router-dom": "^6.8.1" + "react-router-dom": "^6.27.0" }, "engines": { "node": ">=14.17.6" } }, "node_modules/@rspress/shared": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/@rspress/shared/-/shared-1.31.1.tgz", - "integrity": "sha512-v+bihsmqnyLodh58pKuqVQGZxYEYkml4wcx+1IkcPaU6fbPGw6aIAzjyAPs/jahoC8XeCJ3zvkJ7kqHi1UG6uA==", + "version": "1.35.3", + "resolved": "https://registry.npmjs.org/@rspress/shared/-/shared-1.35.3.tgz", + "integrity": "sha512-vrcM/CP/Ji2qf4Of+JQMLr9pwygtjcICdtVRL+ch97CaFCoX9JfqY3hHMuCHFsZ7FNenWxOolJeLW06sYBcPdQ==", "dependencies": { - "@rsbuild/core": "1.0.5", + "@rsbuild/core": "~1.0.18", "chalk": "5.3.0", "execa": "5.1.1", "fs-extra": "11.2.0", @@ -722,13 +721,13 @@ } }, "node_modules/@rspress/theme-default": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/@rspress/theme-default/-/theme-default-1.31.1.tgz", - "integrity": "sha512-4iOWkPG8IRyG5/wz8GF5jTzNIAAOeaOMtoB6lVMuhrktpMShsCBl8RD0IdswfubzpH0cW2amsV6+B1RZ75nnkQ==", + "version": "1.35.3", + "resolved": "https://registry.npmjs.org/@rspress/theme-default/-/theme-default-1.35.3.tgz", + "integrity": "sha512-VfHmr6IzJ0JR17w/Fv6f6vPXS6VCMjx1oq7SJ8qkpQyhhCXeMOLRZ9QevvDqrOISREKZBR0XWe0nVT5d8FbgPA==", "dependencies": { "@mdx-js/react": "2.3.0", - "@rspress/runtime": "1.31.1", - "@rspress/shared": "1.31.1", + "@rspress/runtime": "1.35.3", + "@rspress/shared": "1.35.3", "body-scroll-lock": "4.0.0-beta.0", "copy-to-clipboard": "^3.3.3", "flexsearch": "0.7.43", @@ -786,6 +785,26 @@ "@types/ms": "*" } }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -837,9 +856,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "16.18.112", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.112.tgz", - "integrity": "sha512-EKrbKUGJROm17+dY/gMi31aJlGLJ75e1IkTojt9n6u+hnaTBDs+M1bIdOawpk2m6YUAXq/R2W0SxCng1tndHCg==" + "version": "16.18.118", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.118.tgz", + "integrity": "sha512-YgPbVGrf+mL4Qp8KTcd18OXfIsm1QYwHkldmWTNIR8aZH2EYSPNyLFFZHEXZIGYvYrwnW++xGoWyt4w279QDrQ==" }, "node_modules/@types/parse5": { "version": "6.0.3", @@ -852,9 +871,9 @@ "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" }, "node_modules/@types/react": { - "version": "18.3.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", - "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", + "version": "18.3.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -1024,9 +1043,9 @@ "peer": true }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "bin": { "acorn": "bin/acorn" }, @@ -1034,15 +1053,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -1149,9 +1159,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "funding": [ { "type": "opencollective", @@ -1167,10 +1177,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -1199,9 +1209,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001667", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", - "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==", + "version": "1.0.30001676", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001676.tgz", + "integrity": "sha512-Qz6zwGCiPghQXGJvgQAem79esjitvJ+CxSbSQkW9H/UX5hg8XM88d4lp2W+MEQ81j+Hip58Il+jGVdazk1z9cw==", "funding": [ { "type": "opencollective", @@ -1494,9 +1504,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.32", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz", - "integrity": "sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==" + "version": "1.5.50", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.50.tgz", + "integrity": "sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -2279,6 +2289,11 @@ "node": "*" } }, + "node_modules/highlightjs-vue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/highlightjs-vue/-/highlightjs-vue-1.0.0.tgz", + "integrity": "sha512-PDEfEF102G23vHmPhLyPboFCD+BkMGu+GuJe2d9/eH4FsCwvgBpnc9n0pGE+ffKdph38s6foEZiEjdgHdzp+IA==" + }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -2790,9 +2805,9 @@ } }, "node_modules/markdown-table": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", - "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4171,11 +4186,11 @@ } }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "dependencies": { - "entities": "^4.4.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -4220,9 +4235,9 @@ } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -4370,11 +4385,11 @@ } }, "node_modules/react-router": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz", - "integrity": "sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==", + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.27.0.tgz", + "integrity": "sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==", "dependencies": { - "@remix-run/router": "1.19.2" + "@remix-run/router": "1.20.0" }, "engines": { "node": ">=14.0.0" @@ -4384,12 +4399,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz", - "integrity": "sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==", + "version": "6.27.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.27.0.tgz", + "integrity": "sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==", "dependencies": { - "@remix-run/router": "1.19.2", - "react-router": "6.26.2" + "@remix-run/router": "1.20.0", + "react-router": "6.27.0" }, "engines": { "node": ">=14.0.0" @@ -4400,12 +4415,13 @@ } }, "node_modules/react-syntax-highlighter": { - "version": "15.5.0", - "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz", - "integrity": "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==", + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.6.1.tgz", + "integrity": "sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==", "dependencies": { "@babel/runtime": "^7.3.1", "highlight.js": "^10.4.1", + "highlightjs-vue": "^1.0.0", "lowlight": "^1.17.0", "prismjs": "^1.27.0", "refractor": "^3.6.0" @@ -4733,13 +4749,13 @@ } }, "node_modules/rspress": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/rspress/-/rspress-1.31.1.tgz", - "integrity": "sha512-GNCR8b4NY87/97jyXitfaQS8ysAeAVrlw3nNus4ZqRrUTFPl6sdfsn1fhnTsUzJlvvXAfzrGQ7MFgzwSDXGzZw==", + "version": "1.35.3", + "resolved": "https://registry.npmjs.org/rspress/-/rspress-1.35.3.tgz", + "integrity": "sha512-yaPWVsSB5ULxi3AGZANE9CowCnVe53d8Ga6Ia3IDyIgfeqCQ4tyOVZkrKevXY/TGzuKurBizRzLgw3vilwqvyg==", "dependencies": { - "@rsbuild/core": "1.0.5", - "@rspress/core": "1.31.1", - "@rspress/shared": "1.31.1", + "@rsbuild/core": "~1.0.18", + "@rspress/core": "1.35.3", + "@rspress/shared": "1.35.3", "cac": "^6.7.14", "chalk": "5.3.0", "chokidar": "^3.6.0" @@ -4788,9 +4804,9 @@ "peer": true }, "node_modules/sass-embedded": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.79.4.tgz", - "integrity": "sha512-3AATrtStMgxYjkit02/Ix8vx/P7qderYG6DHjmehfk5jiw53OaWVScmcGJSwp/d77kAkxDQ+Y0r+79VynGmrkw==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.80.6.tgz", + "integrity": "sha512-Og4aqBnaA3oJfIpHaLuNATAqzBRgUJDYJy2X15V59cot2wYOtiT/ciPnyuq1o7vpDEeOkHhEd+mSviSlXoETug==", "dependencies": { "@bufbuild/protobuf": "^2.0.0", "buffer-builder": "^0.2.0", @@ -4807,32 +4823,32 @@ "node": ">=16.0.0" }, "optionalDependencies": { - "sass-embedded-android-arm": "1.79.4", - "sass-embedded-android-arm64": "1.79.4", - "sass-embedded-android-ia32": "1.79.4", - "sass-embedded-android-riscv64": "1.79.4", - "sass-embedded-android-x64": "1.79.4", - "sass-embedded-darwin-arm64": "1.79.4", - "sass-embedded-darwin-x64": "1.79.4", - "sass-embedded-linux-arm": "1.79.4", - "sass-embedded-linux-arm64": "1.79.4", - "sass-embedded-linux-ia32": "1.79.4", - "sass-embedded-linux-musl-arm": "1.79.4", - "sass-embedded-linux-musl-arm64": "1.79.4", - "sass-embedded-linux-musl-ia32": "1.79.4", - "sass-embedded-linux-musl-riscv64": "1.79.4", - "sass-embedded-linux-musl-x64": "1.79.4", - "sass-embedded-linux-riscv64": "1.79.4", - "sass-embedded-linux-x64": "1.79.4", - "sass-embedded-win32-arm64": "1.79.4", - "sass-embedded-win32-ia32": "1.79.4", - "sass-embedded-win32-x64": "1.79.4" + "sass-embedded-android-arm": "1.80.6", + "sass-embedded-android-arm64": "1.80.6", + "sass-embedded-android-ia32": "1.80.6", + "sass-embedded-android-riscv64": "1.80.6", + "sass-embedded-android-x64": "1.80.6", + "sass-embedded-darwin-arm64": "1.80.6", + "sass-embedded-darwin-x64": "1.80.6", + "sass-embedded-linux-arm": "1.80.6", + "sass-embedded-linux-arm64": "1.80.6", + "sass-embedded-linux-ia32": "1.80.6", + "sass-embedded-linux-musl-arm": "1.80.6", + "sass-embedded-linux-musl-arm64": "1.80.6", + "sass-embedded-linux-musl-ia32": "1.80.6", + "sass-embedded-linux-musl-riscv64": "1.80.6", + "sass-embedded-linux-musl-x64": "1.80.6", + "sass-embedded-linux-riscv64": "1.80.6", + "sass-embedded-linux-x64": "1.80.6", + "sass-embedded-win32-arm64": "1.80.6", + "sass-embedded-win32-ia32": "1.80.6", + "sass-embedded-win32-x64": "1.80.6" } }, "node_modules/sass-embedded-android-arm": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.79.4.tgz", - "integrity": "sha512-YOVpDGDcwWUQvktpJhYo4zOkknDpdX6ALpaeHDTX6GBUvnZfx+Widh76v+QFUhiJQ/I/hndXg1jv/PKilOHRrw==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.80.6.tgz", + "integrity": "sha512-UeUKMTRsnz4/dh7IzvhjONxa4/jmVp539CHDd8VZOsqg9M3HcNJNIkUzQWbuwZ+nSlWrTuo7Tvn3XlypopCBzw==", "cpu": [ "arm" ], @@ -4845,9 +4861,9 @@ } }, "node_modules/sass-embedded-android-arm64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.79.4.tgz", - "integrity": "sha512-0JAZ8TtXYv9yI3Yasaq03xvo7DLJOmD+Exb30oJKxXcWTAV9TB0ZWKoIRsFxbCyPxyn7ouxkaCEXQtaTRKrmfw==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.80.6.tgz", + "integrity": "sha512-4rC4ZGM/k4ENVjLXnK3JTst8e8FI9MHSol2Fl7dCdYyJ3KLnlt4qL4AEYfU8zq1tcBb7CBOSZVR+CzCKubnXdg==", "cpu": [ "arm64" ], @@ -4860,9 +4876,9 @@ } }, "node_modules/sass-embedded-android-ia32": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.79.4.tgz", - "integrity": "sha512-IjO3RoyvNN84ZyfAR5s/a8TIdNPfClb7CLGrswB3BN/NElYIJUJMVHD6+Y8W9QwBIZ8DrK1IdLFSTV8nn82xMA==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.80.6.tgz", + "integrity": "sha512-Lxz2SXE2KdHnynuHF+D6flDvrd55/zaEAWUeka9MxEr6FmR66d8UBOIy5ETwCSUd//S/SE5Jl6oTnHppgD1zNA==", "cpu": [ "ia32" ], @@ -4875,9 +4891,9 @@ } }, "node_modules/sass-embedded-android-riscv64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.79.4.tgz", - "integrity": "sha512-uOT8nXmKxSwuIdcqvElVWBFcm/+YcIvmwfoKbpuuSOSxUe9eqFzxo+fk7ILhynzf6FBlvRUH5DcjGj+sXtCc3w==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.80.6.tgz", + "integrity": "sha512-hKdxY/oOqB+JJhSoBTDM5DJO1j/xtxQgayh2cLCCUx37IQQe3SEdc3V2JFf/4mIo5peaS4cjqwwSATF+l2zaXg==", "cpu": [ "riscv64" ], @@ -4890,9 +4906,9 @@ } }, "node_modules/sass-embedded-android-x64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.79.4.tgz", - "integrity": "sha512-W2FQoj3Z2J2DirNs3xSBVvrhMuqLnsqvOPulxOkhL/074+faKOZZnPx2tZ5zsHbY97SonciiU0SV0mm98xI42w==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.80.6.tgz", + "integrity": "sha512-Eap2Fi3kTx/rVLBsOnOp5RYPr5+lFjTZ652zR24dmYFe9/sDgasakJIOPjOvD2bRuL9z0uWEY1AXVeeOPeZKrg==", "cpu": [ "x64" ], @@ -4905,9 +4921,9 @@ } }, "node_modules/sass-embedded-darwin-arm64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.79.4.tgz", - "integrity": "sha512-pcYtbN1VUAAcfgyHeX8ySndDWGjIvcq6rldduktPbGGuAlEWFDfnwjTbv0hS945ggdzZ6TFnaFlLEDr0SjKzBA==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.80.6.tgz", + "integrity": "sha512-0mnAx8Vq6Gxj3PQt3imgITfK33hhqrSKpyHSuab71gZZni5opsdtoggq2JawW+1taRFTEZwbZJLKZ0MBDbwCCA==", "cpu": [ "arm64" ], @@ -4920,9 +4936,9 @@ } }, "node_modules/sass-embedded-darwin-x64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.79.4.tgz", - "integrity": "sha512-ir8CFTfc4JLx/qCP8LK1/3pWv35nRyAQkUK7lBIKM6hWzztt64gcno9rZIk4SpHr7Z/Bp1IYWWRS4ZT+4HmsbA==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.80.6.tgz", + "integrity": "sha512-Ib20yNZFOrJ7YVT+ltoe+JQNKPcRclM3iLAK69XZZYcSeFM/72SCoQBAaVGIpT23dxDp7FXiE4lO602c3xTRwQ==", "cpu": [ "x64" ], @@ -4935,9 +4951,9 @@ } }, "node_modules/sass-embedded-linux-arm": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.79.4.tgz", - "integrity": "sha512-H/XEE3rY7c+tY0qDaELjPjC6VheAhBo1tPJQ6UHoBEf8xrbT/RT3dWiIS8grp9Vk54RCn05BEB/+POaljvvKGA==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.80.6.tgz", + "integrity": "sha512-QR0Q6TZox/ThuU2r9c0s3fKCgU2rXAEocpitdgxFp6tta+GsQlMFV3oON2unAa8Bwnuxkmf0YOaK0Oy/TwzkXw==", "cpu": [ "arm" ], @@ -4950,9 +4966,9 @@ } }, "node_modules/sass-embedded-linux-arm64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.79.4.tgz", - "integrity": "sha512-XIVn2mCuA422SR2kmKjF6jhjMs1Vrt1DbZ/ktSp+eR0sU4ugu2htg45GajiUFSKKRj7Sc+cBdThq1zPPsDLf1w==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.80.6.tgz", + "integrity": "sha512-n5r98pBXawrQQKaxIYCMM1zDpnngsqxTkOrmvsYLFiAMCSbR0lWf/7sBB33k/Pm0D6dsbp3jpHilCoQNKI3jIw==", "cpu": [ "arm64" ], @@ -4965,9 +4981,9 @@ } }, "node_modules/sass-embedded-linux-ia32": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.79.4.tgz", - "integrity": "sha512-3nqZxV4nuUTb1ahLexVl4hsnx1KKwiGdHEf1xHWTZai6fYFMcwyNPrHySCQzFHqb5xiqSpPzzrKjuDhF6+guuQ==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.80.6.tgz", + "integrity": "sha512-O6dWZdcOkryRdDCxVMGOeVowgblpDgVcAuRtZ1F1X7XfbpDriTQm64D+9vVZIrywYSPoJfQMJJ662cr0wUs9IQ==", "cpu": [ "ia32" ], @@ -4980,9 +4996,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.79.4.tgz", - "integrity": "sha512-HnbU1DEiQdUayioNzxh2WlbTEgQRBPTgIIvof8J63QLmVItUqE7EkWYkSUy4RhO+8NsuN9wzGmGTzFBvTImU7g==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.80.6.tgz", + "integrity": "sha512-X9FC8s8fvQGRiXc+eATlZ57N44Iq3nNa0M0ugi3ysdJwkaNYvOeS4QzBHKQAaw3QiTqdxTnLUHHVBkyzdCi9pw==", "cpu": [ "arm" ], @@ -4995,9 +5011,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.79.4.tgz", - "integrity": "sha512-C6qX06waPEfDgOHR8jXoYxl0EtIXOyBDyyonrLO3StRjWjGx7XMQj2hA/KXSsV+Hr71fBOsaViosqWXPzTbEiQ==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.80.6.tgz", + "integrity": "sha512-VeUSHUi3MAsvOlg9QI4X/2j04h1659aE+7qKP/282CYBTrGkjFGSXZhIki9WKWDgIpDiSInRYXfQQRWhPhjCDg==", "cpu": [ "arm64" ], @@ -5010,9 +5026,9 @@ } }, "node_modules/sass-embedded-linux-musl-ia32": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.79.4.tgz", - "integrity": "sha512-y5b0fdOPWyhj4c+mc88GvQiC5onRH1V0iNaWNjsiZ+L4hHje6T98nDLrCJn0fz5GQnXjyLCLZduMWbfV0QjHGg==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.80.6.tgz", + "integrity": "sha512-GqitS2Nab8ah0+wfCqaxW1hnI1piC08FimL6+lM9YWK5DbCOOF82IapbvJOy0feUmd/wNnHmyNTgE9h0zVMFdQ==", "cpu": [ "ia32" ], @@ -5025,9 +5041,9 @@ } }, "node_modules/sass-embedded-linux-musl-riscv64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.79.4.tgz", - "integrity": "sha512-G2M5ADMV9SqnkwpM0S+UzDz7xR2njCOhofku/sDMZABzAjQQWTsAykKoGmzlT98fTw2HbNhb6u74umf2WLhCfw==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.80.6.tgz", + "integrity": "sha512-ySs15z7QSRRQK/aByEEqaJLYW/sTpfynefNPZCtsVNVEzNRwy+DRpxNChtxo+QjKq97ocXETbdG5KLik7QOTJg==", "cpu": [ "riscv64" ], @@ -5040,9 +5056,9 @@ } }, "node_modules/sass-embedded-linux-musl-x64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.79.4.tgz", - "integrity": "sha512-kQm8dCU3DXf7DtUGWYPiPs03KJYKvFeiZJHhSx993DCM8D2b0wCXWky0S0Z46gf1sEur0SN4Lvnt1WczTqxIBw==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.80.6.tgz", + "integrity": "sha512-DzeNqU/SN0mWFznoOH4RtVGcrg3Eoa41pUQhKMtrhNbCmIE1zNDunUiAEVTNpdHJF4nxf7ELUPXWmStM31CbUQ==", "cpu": [ "x64" ], @@ -5055,9 +5071,9 @@ } }, "node_modules/sass-embedded-linux-riscv64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.79.4.tgz", - "integrity": "sha512-GaTI/mXYWYSzG5wxtM4H2cozLpATyh+4l+rO9FFKOL8e1sUOLAzTeRdU2nSBYCuRqsxRuTZIwCXhSz9Q3NRuNA==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.80.6.tgz", + "integrity": "sha512-AyoHJ3icV9xuJjq1YzJqpEj2XfiC/KBkVYTUrCELKiXP0DN1gi/BpUwZNCAgCM3CyEdMef4LQM/ztCYJxYzdyg==", "cpu": [ "riscv64" ], @@ -5070,9 +5086,9 @@ } }, "node_modules/sass-embedded-linux-x64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.79.4.tgz", - "integrity": "sha512-f9laGkqHgC01h99Qt4LsOV+OLMffjvUcTu14hYWqMS9QVX5a4ihMwpf1NoAtTUytb7cVF3rYY/NVGuXt6G3ppQ==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.80.6.tgz", + "integrity": "sha512-EohsE9CEqx0ycylnsEj/0DNPG99Tb0qAVZspiAs5xHFCJjXOFfp3cRQu0BRf+lZ1b72IhPFXymzVtojvzUHb7g==", "cpu": [ "x64" ], @@ -5085,9 +5101,9 @@ } }, "node_modules/sass-embedded-win32-arm64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.79.4.tgz", - "integrity": "sha512-cidBvtaA2cJ6dNlwQEa8qak+ezypurzKs0h0QAHLH324+j/6Jum7LCnQhZRPYJBFjHl+WYd7KwzPnJ2X5USWnQ==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.80.6.tgz", + "integrity": "sha512-29wETQi1ykeVvpd4zMVokpQKFSOZskGJzZawuuNCdo7BHjHKIRDsqbz8YT1CewHPBshI0hfD21fenmjxYjGXPQ==", "cpu": [ "arm64" ], @@ -5100,9 +5116,9 @@ } }, "node_modules/sass-embedded-win32-ia32": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.79.4.tgz", - "integrity": "sha512-hexdmNTIZGTKNTzlMcdvEXzYuxOJcY89zqgsf45aQ2YMy4y2M8dTOxRI/Vz7p4iRxVp1Jow6LCtaLHrNI2Ordg==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.80.6.tgz", + "integrity": "sha512-1s3OpK2iTIfIL/a91QhAQnffsbuWfnsM8Lx4Fxt0f7ErnxjCV6q8MUFTV/UhcLtLyTFnPCA62DLjp2KGCjMI9A==", "cpu": [ "ia32" ], @@ -5115,9 +5131,9 @@ } }, "node_modules/sass-embedded-win32-x64": { - "version": "1.79.4", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.79.4.tgz", - "integrity": "sha512-73yrpiWIbti6DkxhWURklkgSLYKfU9itDmvHxB+oYSb4vQveIApqTwSyTOuIUb/6Da/EsgEpdJ4Lbj4sLaMZWA==", + "version": "1.80.6", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.80.6.tgz", + "integrity": "sha512-0pH4Zr9silHkcmLPC0ghnD3DI0vMsjA7dKvGR32/RbbjOSvHV5cDQRLiuVJAPp34dfMA7kJd1ysSchRdH0igAQ==", "cpu": [ "x64" ], @@ -5339,9 +5355,9 @@ } }, "node_modules/terser": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz", - "integrity": "sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -5425,9 +5441,9 @@ } }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/unified": { "version": "10.1.2", @@ -5779,18 +5795,18 @@ } }, "node_modules/webpack": { - "version": "5.95.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", - "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", + "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", "peer": true, "dependencies": { - "@types/estree": "^1.0.5", + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", diff --git a/html/3d.html b/html/3d.html.orig similarity index 100% rename from html/3d.html rename to html/3d.html.orig diff --git a/html/prsm.html b/html/prsm.html index d05087f..615c80e 100644 --- a/html/prsm.html +++ b/html/prsm.html @@ -245,7 +245,7 @@ Share the map using a web link
-
Open a map file +
Share the network with other participants
(users will be able to see the map, but will not be able to modify it)
- Allow users to make an editable copy
of the read-only map + Allow users to make an editable copy
of the read-only map +
@@ -1298,6 +1330,19 @@

What's new

+ + + +

Merge maps

+
    +
  1. Open the map you want to merge in another browser tab
  2. +
  3. Click on the Share button in that tab and copy the link to the clipboard
  4. +
  5. Paste the link below and click on Merge
  6. +
+ + + +
diff --git a/js/3d.js b/js/3d.js.orig similarity index 100% rename from js/3d.js rename to js/3d.js.orig diff --git a/js/merge.js b/js/merge.js index dfb6ee0..4982e07 100644 --- a/js/merge.js +++ b/js/merge.js @@ -4,10 +4,10 @@ */ import * as Y from 'yjs' -import {WebsocketProvider} from 'y-websocket' -import {DataSet} from 'vis-data/peer' -import {doc, websocket, data, logHistory, room} from './prsm.js' -import {uuidv4, deepCopy} from './utils.js' +import { WebsocketProvider } from 'y-websocket' +import { DataSet } from 'vis-data/peer' +import { doc, websocket, data, logHistory, room } from './prsm.js' +import { uuidv4, deepCopy, alertMsg } from './utils.js' /* --------------------------------- Merge maps ----------------------------- */ /* * Evaluate mergeRoom(string: room code) e.g. mergeRoom('WBI-CRD-ROB-XDK') @@ -57,11 +57,13 @@ function mergeMaps() { let sameLabelNodes = data.nodes .get() .filter((an) => an.label.replace(/\s/g, '') === BNode.label.replace(/\s/g, '')) - if (sameLabelNodes.length > 1) + if (sameLabelNodes.length > 1) { console.log( `%cMatching factors by label ('${BNode.label}'), but there are two or more factors with this label in this map`, 'color: red' ) + alertMsg(`Matching factors by label ('${BNode.label}'), but there are two or more factors with this label in the map`, 'warn') + } ANode = sameLabelNodes[0] if (ANode) { // map works both ways - OK since ids are unique @@ -74,7 +76,7 @@ function mergeMaps() { if (ANode.label.replace(/\s/g, '') !== BNode.label.replace(/\s/g, '')) { // if not, make a clone of the other node with a new id logMerge( - `existing Factor label: '${ANode.label}' does not match new label: '${BNode.label}'. Factor with new label added.` + `'${ANode.label}' Factor in this map does not match Factor from other map with new label: '${BNode.label}'. Factor with new label added.` ) // generate a new id for BNode. change border to dashed red. Add it to the map let newNode = deepCopy(BNode) @@ -93,7 +95,7 @@ function mergeMaps() { } else if (ANode.grp !== BNode.grp) // label is the same, but style is not - just report this logMerge( - `existing style: '${ANode.grp}' does not match new style: '${BNode.grp}' for Factor: '${ANode.label}. Existing style retained.` + `Style: '${ANode.grp}' does not match style: '${BNode.grp}' from other map for Factor: '${ANode.label}. Existing style retained.` ) } else { // the node is on the other map, but not on this one - add it. @@ -101,6 +103,7 @@ function mergeMaps() { logMerge(`added new Factor: '${BNode.label}'`) } } + data.nodes.update(nodesToAdd) bdata.edges.get().forEach((BEdge) => { // Some edges on the other map may have been going to/from nodes that have been cloned and given a new id. @@ -126,8 +129,7 @@ function mergeMaps() { newEdge.color.color = 'rgb(255, 0, 0)' edgesToAdd.push(newEdge) logMerge( - `added Link between new Factor(s): '${data.nodes.get(newEdge.from).label}' to '${ - data.nodes.get(newEdge.to).label + `added Link between new Factor(s): '${data.nodes.get(newEdge.from).label}' to '${data.nodes.get(newEdge.to).label }'` ) } @@ -153,11 +155,11 @@ function mergeMaps() { AEdge.label !== BEdge.label ) logMerge( - `existing Link label: '${AEdge.label}' does not match new label: '${BEdge.label}'. Existing label retained.` + `Link with label: '${AEdge.label}' does not match link from other map with label: '${BEdge.label}'. Existing label retained.` ) else if (AEdge.grp !== BEdge.grp) logMerge( - `existing Link style: '${AEdge.grp}' does not match new style: '${BEdge.grp}' for link '${edgeName}'. Existing style retained.` + `Link with style: '${AEdge.grp}' does not match style: '${BEdge.grp}' from other map for link '${edgeName}'. Existing style retained.` ) } else { // if BEdge's from or to nodes have been substituted for a node in the A map @@ -179,12 +181,6 @@ function mergeMaps() { let sameEdges = bdata.edges.get().filter((e) => e.from === from && e.to === to) if (sameEdges) BEdge = sameEdges[0] } - if (!BEdge) { - let edgeName = - (AEdge.label && AEdge.label.trim() !== '') || - `from [${data.nodes.get(AEdge.from).label}] to [${data.nodes.get(AEdge.to).label}]` - logMerge(`existing link: ${edgeName}' is not in the other map. Existing link retained.`) - } }) data.nodes.update(nodesToAdd) data.edges.update(edgesToAdd) @@ -259,8 +255,7 @@ function diffMaps() { } else if (ANode.grp !== BNode.grp) // label is the same, but style is not - just report this console.log( - `Factor style in map A : ${ANode.grp} does not match style in map B: ${ - BNode.grp + `Factor style in map A : ${ANode.grp} does not match style in map B: ${BNode.grp } for Factor: [%c${inline(ANode.label)}%c]. `, 'color:green', 'color:black' @@ -298,8 +293,7 @@ function diffMaps() { ) else if (AEdge.grp !== BEdge.grp) console.log( - `Link style: '${AEdge.grp}' in map A does not match style: '${ - BEdge.grp + `Link style: '${AEdge.grp}' in map A does not match style: '${BEdge.grp }' in map B for link [%c${inline(edgeName)}%c]. `, 'color:green', 'color:black' diff --git a/js/prsm.js b/js/prsm.js index 6668be5..222700c 100644 --- a/js/prsm.js +++ b/js/prsm.js @@ -243,7 +243,11 @@ function addEventListeners() { listen('undo', 'click', undo) listen('redo', 'click', redo) listen('fileInput', 'change', readSingleFile) - listen('openMap', 'click', openFile) + listen('openFile', 'click', openFile) + listen('replaceMap', 'click', openFile) + listen('mergeMap', 'click', mergeMap) + listen('merge', 'click', doMerge) + listen('mergeClose', 'click', () => elem('mergeDialog').close()) listen('saveFile', 'click', savePRSMfile) listen('exportPRSM', 'click', savePRSMfile) listen('exportImage', 'click', exportPNGfile) @@ -3324,6 +3328,29 @@ function doClone(onlyView) { logHistory(`made a ${onlyView ? 'read-only copy' : 'clone'} of the map in room: ${clonedRoom}`) } +function mergeMap() { + elem('mergedRoom').value = '' + elem('mergeDialog').showModal() +} +function doMerge() { + let path = elem('mergedRoom').value + if (!path) { + alertMsg('No map given to merge', 'error') + return + } + try { + let url = new URL(path) + let roomToMerge = url.searchParams.get('room') + console.log('merging ', roomToMerge) + mergeRoom(roomToMerge) + logHistory(`merged map from room: ${roomToMerge}`) + } + catch (e) { + alertMsg('Invalid map URL', 'error') + return + } + elem('mergeDialog').close() +} /* ----------------------------------------------------------- Search ------------------------------------------------------*/ /** * Open an input for user to type label of node to search for and generate suggestions when user starts typing diff --git a/package-lock.json b/package-lock.json index 2b614c0..7ffedb8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "participatory-system-mapper", - "version": "2.3.3", + "version": "2.3.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "participatory-system-mapper", - "version": "2.3.3", + "version": "2.3.5", "license": "GPL-3.0-or-later", "dependencies": { "@egjs/hammerjs": "^2.0.17", @@ -22,6 +22,7 @@ "quill-delta-to-html": "^0.12.1", "quill-to-word": "^1.3.0", "tabulator-tables": "^5.4.4", + "three": "^0.170.0", "three-spritetext": "^1.8.0", "uuid": "^8.3.2", "vis-data": "^7.1.4", @@ -49,12 +50,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", - "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -62,116 +64,30 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", - "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", - "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", - "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "dev": true, "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.26.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -181,9 +97,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -197,14 +113,13 @@ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/@babel/types": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", - "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -222,24 +137,27 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -397,9 +315,9 @@ } }, "node_modules/@lezer/common": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.2.tgz", - "integrity": "sha512-Z+R3hN6kXbgBWAuejUNPihylAL1Z5CaFqnIe0nTX8Ej+XlIy3EGtXxn6WtLMO+os2hRkQvm2yvaGMYliUzlJaw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz", + "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==", "dev": true }, "node_modules/@lezer/lr": { @@ -2183,14 +2101,14 @@ } }, "node_modules/@swc/core": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.26.tgz", - "integrity": "sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==", + "version": "1.7.42", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.42.tgz", + "integrity": "sha512-iQrRk3SKndQZ4ptJv1rzeQSiCYQIhMjiO97QXOlCcCoaazOLKPnLnXzU4Kv0FuBFyYfG2FE94BoR0XI2BN02qw==", "dev": true, "hasInstallScript": true, "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.12" + "@swc/types": "^0.1.13" }, "engines": { "node": ">=10" @@ -2200,16 +2118,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.26", - "@swc/core-darwin-x64": "1.7.26", - "@swc/core-linux-arm-gnueabihf": "1.7.26", - "@swc/core-linux-arm64-gnu": "1.7.26", - "@swc/core-linux-arm64-musl": "1.7.26", - "@swc/core-linux-x64-gnu": "1.7.26", - "@swc/core-linux-x64-musl": "1.7.26", - "@swc/core-win32-arm64-msvc": "1.7.26", - "@swc/core-win32-ia32-msvc": "1.7.26", - "@swc/core-win32-x64-msvc": "1.7.26" + "@swc/core-darwin-arm64": "1.7.42", + "@swc/core-darwin-x64": "1.7.42", + "@swc/core-linux-arm-gnueabihf": "1.7.42", + "@swc/core-linux-arm64-gnu": "1.7.42", + "@swc/core-linux-arm64-musl": "1.7.42", + "@swc/core-linux-x64-gnu": "1.7.42", + "@swc/core-linux-x64-musl": "1.7.42", + "@swc/core-win32-arm64-msvc": "1.7.42", + "@swc/core-win32-ia32-msvc": "1.7.42", + "@swc/core-win32-x64-msvc": "1.7.42" }, "peerDependencies": { "@swc/helpers": "*" @@ -2221,9 +2139,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.26.tgz", - "integrity": "sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==", + "version": "1.7.42", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.42.tgz", + "integrity": "sha512-fWhaCs2+8GDRIcjExVDEIfbptVrxDqG8oHkESnXgymmvqTWzWei5SOnPNMS8Q+MYsn/b++Y2bDxkcwmq35Bvxg==", "cpu": [ "arm64" ], @@ -2237,9 +2155,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.26.tgz", - "integrity": "sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==", + "version": "1.7.42", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.42.tgz", + "integrity": "sha512-ZaVHD2bijrlkCyD7NDzLmSK849Jgcx+6DdL4x1dScoz1slJ8GTvLtEu0JOUaaScQwA+cVlhmrmlmi9ssjbRLGQ==", "cpu": [ "x64" ], @@ -2253,9 +2171,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.26.tgz", - "integrity": "sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==", + "version": "1.7.42", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.42.tgz", + "integrity": "sha512-iF0BJj7hVTbY/vmbvyzVTh/0W80+Q4fbOYschdUM3Bsud39TA+lSaPOefOHywkNH58EQ1z3EAxYcJOWNES7GFQ==", "cpu": [ "arm" ], @@ -2269,9 +2187,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.26.tgz", - "integrity": "sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==", + "version": "1.7.42", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.42.tgz", + "integrity": "sha512-xGu8j+DOLYTLkVmsfZPJbNPW1EkiWgSucT0nOlz77bLxImukt/0+HVm2hOwHSKuArQ8C3cjahAMY3b/s4VH2ww==", "cpu": [ "arm64" ], @@ -2285,9 +2203,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.26.tgz", - "integrity": "sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==", + "version": "1.7.42", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.42.tgz", + "integrity": "sha512-qtW3JNO7i1yHEko59xxz+jY38+tYmB96JGzj6XzygMbYJYZDYbrOpXQvKbMGNG3YeTDan7Fp2jD0dlKf7NgDPA==", "cpu": [ "arm64" ], @@ -2301,9 +2219,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.26.tgz", - "integrity": "sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==", + "version": "1.7.42", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.42.tgz", + "integrity": "sha512-F9WY1TN+hhhtiEzZjRQziNLt36M5YprMeOBHjsLVNqwgflzleSI7ulgnlQECS8c8zESaXj3ksGduAoJYtPC1cA==", "cpu": [ "x64" ], @@ -2317,9 +2235,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.26.tgz", - "integrity": "sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==", + "version": "1.7.42", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.42.tgz", + "integrity": "sha512-7YMdOaYKLMQ8JGfnmRDwidpLFs/6ka+80zekeM0iCVO48yLrJR36G0QGXzMjKsXI0BPhq+mboZRRENK4JfQnEA==", "cpu": [ "x64" ], @@ -2333,9 +2251,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.26.tgz", - "integrity": "sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==", + "version": "1.7.42", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.42.tgz", + "integrity": "sha512-C5CYWaIZEyqPl5W/EwcJ/mLBJFHVoUEa/IwWi0b4q2fCXcSCktQGwKXOQ+d67GneiZoiq0HasgcdMmMpGS9YRQ==", "cpu": [ "arm64" ], @@ -2349,9 +2267,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.26.tgz", - "integrity": "sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==", + "version": "1.7.42", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.42.tgz", + "integrity": "sha512-3j47seZ5pO62mbrqvPe1iwhe2BXnM5q7iB+n2xgA38PCGYt0mnaJafqmpCXm/uYZOCMqSNynaoOWCMMZm4sqtA==", "cpu": [ "ia32" ], @@ -2365,9 +2283,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.26", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.26.tgz", - "integrity": "sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==", + "version": "1.7.42", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.42.tgz", + "integrity": "sha512-FXl9MdeUogZLGDcLr6QIRdDVkpG0dkN4MLM4dwQ5kcAk+XfKPrQibX6M2kcfhsCx+jtBqtK7hRFReRXPWJZGbA==", "cpu": [ "x64" ], @@ -2396,9 +2314,9 @@ } }, "node_modules/@swc/types": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.12.tgz", - "integrity": "sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.13.tgz", + "integrity": "sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==", "dev": true, "dependencies": { "@swc/counter": "^0.1.3" @@ -2428,9 +2346,9 @@ "integrity": "sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==" }, "node_modules/@types/hammerjs": { - "version": "2.0.45", - "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.45.tgz", - "integrity": "sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ==" + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==" }, "node_modules/@types/jszip": { "version": "3.4.1", @@ -2475,9 +2393,9 @@ "dev": true }, "node_modules/3d-force-graph": { - "version": "1.73.4", - "resolved": "https://registry.npmjs.org/3d-force-graph/-/3d-force-graph-1.73.4.tgz", - "integrity": "sha512-eMHZ1LVzh9APLv+An0AXz2dVPwasJlqAnJ61ABlb1qaO6DYuqIUTTErh0DN/24nIWJu1jCim2WiVujzz7slnWQ==", + "version": "1.73.5", + "resolved": "https://registry.npmjs.org/3d-force-graph/-/3d-force-graph-1.73.5.tgz", + "integrity": "sha512-kpN9ImjHzHnI8paAS/6IdWh/WPHN4AILxReEHGKom3iev8v1YiXX+pzEPsQA0w2AhsJo9/qnuB5v4Be2dsEAGA==", "dependencies": { "accessor-fn": "1", "kapsule": "1", @@ -2539,9 +2457,9 @@ } }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "devOptional": true, "bin": { "acorn": "bin/acorn" @@ -2785,9 +2703,9 @@ "optional": true }, "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "dev": true, "funding": [ { @@ -2804,10 +2722,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -2856,9 +2774,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001667", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", - "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==", + "version": "1.0.30001677", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz", + "integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==", "dev": true, "funding": [ { @@ -3633,9 +3551,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.5.32", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz", - "integrity": "sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==", + "version": "1.5.50", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.50.tgz", + "integrity": "sha512-eMVObiUQ2LdgeO1F/ySTXsvqvxb6ZH2zPGaMYsWzRDdOddUa77tdmI0ltg+L16UpbWdhPmuF3wIQYyQq65WfZw==", "dev": true }, "node_modules/emoji-regex": { @@ -3756,6 +3674,7 @@ "version": "8.57.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -4064,9 +3983,9 @@ "dev": true }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "optional": true, "dependencies": { "asynckit": "^0.4.0", @@ -4564,9 +4483,9 @@ } }, "node_modules/jsdoc": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.3.tgz", - "integrity": "sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.4.tgz", + "integrity": "sha512-zeFezwyXeG4syyYHbvh1A967IAqq/67yXtXvuL5wnqCkFZe8I0vKfm+EO+YEvLguo6w9CDUbrAXVtJSHh2E8rw==", "dev": true, "dependencies": { "@babel/parser": "^7.20.15", @@ -5482,9 +5401,9 @@ "devOptional": true }, "node_modules/msgpackr": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.0.tgz", - "integrity": "sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==", + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.2.tgz", + "integrity": "sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==", "dev": true, "optionalDependencies": { "msgpackr-extract": "^3.0.2" @@ -5538,9 +5457,9 @@ } }, "node_modules/nan": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", - "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", "optional": true }, "node_modules/nanoid": { @@ -5600,9 +5519,9 @@ "integrity": "sha512-h25UdUN/g8U7y29TzQtRm/GvGr70lK37yQPvPKXXuVfs7gCm82WipYFZcksQfeKumtOemAzBIcT7lzzyK/edLw==" }, "node_modules/node-abi": { - "version": "3.68.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.68.0.tgz", - "integrity": "sha512-7vbj10trelExNjFSBm5kTvZXXa7pZyKWx9RCKIyqe6I9Ev3IzGpQoqBP3a+cOdxY+pWj6VkP28n/2wWysBHD/A==", + "version": "3.71.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.71.0.tgz", + "integrity": "sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -5787,9 +5706,9 @@ } }, "node_modules/ordered-binary": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.2.tgz", - "integrity": "sha512-JTo+4+4Fw7FreyAvlSLjb1BBVaxEQAacmjD3jjuyPZclpbEghTvQZbXBb2qPd2LeIMxiHwXBZUcpmG2Gl/mDEA==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.5.3.tgz", + "integrity": "sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==", "dev": true }, "node_modules/p-limit": { @@ -5943,9 +5862,9 @@ } }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "node_modules/picomatch": { @@ -6027,9 +5946,9 @@ } }, "node_modules/preact": { - "version": "10.24.2", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.2.tgz", - "integrity": "sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q==", + "version": "10.24.3", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.24.3.tgz", + "integrity": "sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -6862,9 +6781,9 @@ } }, "node_modules/terser": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz", - "integrity": "sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==", + "version": "5.36.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", + "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -6892,14 +6811,14 @@ "dev": true }, "node_modules/three": { - "version": "0.169.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.169.0.tgz", - "integrity": "sha512-Ed906MA3dR4TS5riErd4QBsRGPcx+HBDX2O5yYE5GqJeFQTPU+M56Va/f/Oph9X7uZo3W3o4l2ZhBZ6f6qUv0w==" + "version": "0.170.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.170.0.tgz", + "integrity": "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ==" }, "node_modules/three-forcegraph": { - "version": "1.41.14", - "resolved": "https://registry.npmjs.org/three-forcegraph/-/three-forcegraph-1.41.14.tgz", - "integrity": "sha512-W/cZElLXO0l6ffdMmDakh4bUGSYuSv/YxInOHMN9KAQgDwJ8904SOBh8qkTnGu7UPsi0mAsrUgkfViW8heloTA==", + "version": "1.42.2", + "resolved": "https://registry.npmjs.org/three-forcegraph/-/three-forcegraph-1.42.2.tgz", + "integrity": "sha512-HUgF1wELe6f6p5WxupRCkkpBCL2SBgoDu5vdwJqfF0pNA9VqErQD31hrpCNKcLXxD/G6UDl+cqouzpQ3xgD9+A==", "dependencies": { "accessor-fn": "1", "d3-array": "1 - 3", @@ -6920,9 +6839,9 @@ } }, "node_modules/three-render-objects": { - "version": "1.29.5", - "resolved": "https://registry.npmjs.org/three-render-objects/-/three-render-objects-1.29.5.tgz", - "integrity": "sha512-OLtETrjF184NuaaI/vpRlIP9FxVNAgBBCgWYXhGFUDnPdl/2iX8rialUPGA1gEXvOTiKyepArVgm1LUkJw15rQ==", + "version": "1.31.0", + "resolved": "https://registry.npmjs.org/three-render-objects/-/three-render-objects-1.31.0.tgz", + "integrity": "sha512-of54HTCHatV9OwhrBAKF6A2xtWxBQ47+u5WITTaTbGW6Px9mqLxw7L61dYDHqeQVuvlWMG8VQwyXmkeVsWx4Wg==", "dependencies": { "@tweenjs/tween.js": "18 - 25", "accessor-fn": "1", @@ -6933,13 +6852,13 @@ "node": ">=12" }, "peerDependencies": { - "three": "*" + "three": ">=0.168" } }, "node_modules/three-spritetext": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/three-spritetext/-/three-spritetext-1.8.2.tgz", - "integrity": "sha512-OYjyAhWnQ6+7CPKjnpq3JQM+Lpr6cSOppCtbOOzF1IbCauGkoDFvbAnxYd0LVxEsIO2RALXXScg2eX+R6CAfyA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/three-spritetext/-/three-spritetext-1.9.0.tgz", + "integrity": "sha512-+dMrxBsxTu5OviykIg5jTMry5TQ8u5yuS9zKH0mWElyldoFGdegEkIm71kDk34bxBp/NQhRLW+iom1b/GMTioA==", "engines": { "node": ">=12" }, @@ -6958,15 +6877,6 @@ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -7007,9 +6917,9 @@ } }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true }, "node_modules/tunnel-agent": { @@ -7455,11 +7365,11 @@ "optional": true }, "node_modules/yjs": { - "version": "13.6.19", - "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.19.tgz", - "integrity": "sha512-GNKw4mEUn5yWU2QPHRx8jppxmCm9KzbBhB4qJLUJFiiYD0g/tDVgXQ7aPkyh01YO28kbs2J/BEbWBagjuWyejw==", + "version": "13.6.20", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.20.tgz", + "integrity": "sha512-Z2YZI+SYqK7XdWlloI3lhMiKnCdFCVC4PchpdO+mCYwtiTwncjUbnRK9R1JmkNfdmHyDXuWN3ibJAt0wsqTbLQ==", "dependencies": { - "lib0": "^0.2.86" + "lib0": "^0.2.98" }, "engines": { "node": ">=16.0.0", diff --git a/package.json b/package.json index 426ac98..2828f62 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "quill-delta-to-html": "^0.12.1", "quill-to-word": "^1.3.0", "tabulator-tables": "^5.4.4", + "three": "^0.170.0", "three-spritetext": "^1.8.0", "uuid": "^8.3.2", "vis-data": "^7.1.4",