diff --git a/package-lock.json b/package-lock.json
index dae952cd..9a7e8bc7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -22,7 +22,7 @@
"meeting-pane": "4.0.0",
"mime-types": "^3.0.2",
"package-lock.json": "^1.0.0",
- "pane-registry": "5.0.2-1",
+ "pane-registry": "5.0.2-2",
"profile-pane": "4.1.0-0",
"rdflib": "2.4.1",
"solid-logic": "6.0.1-5",
@@ -227,14 +227,14 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.29.8",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz",
- "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==",
+ "version": "7.29.12",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.12.tgz",
+ "integrity": "sha512-2W76mhjrpQFO1lK5e8IvGYB2D0YZ7S2R1Z2BjO2ZUYuW+amcpK/z60U6ZZmzskwoa7sJ6XohP/Wg8H5KxXI/IA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.29.8",
- "@babel/types": "^7.29.8",
+ "@babel/parser": "^7.29.12",
+ "@babel/types": "^7.29.11",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -294,9 +294,9 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.29.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz",
- "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==",
+ "version": "7.29.12",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.12.tgz",
+ "integrity": "sha512-ACxGoWMV866q/QlZHeCOaQZAR5QclKsIvkAmlDemqjm6+6Bynijs1mH068BzH2N2e+wSuDmBWY87fqKfvhi1Lw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -305,7 +305,7 @@
"@babel/helper-optimise-call-expression": "^7.29.7",
"@babel/helper-replace-supers": "^7.29.7",
"@babel/helper-skip-transparent-expression-wrappers": "^7.29.7",
- "@babel/traverse": "^7.29.7",
+ "@babel/traverse": "^7.29.12",
"semver": "^6.3.1"
},
"engines": {
@@ -581,9 +581,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.29.11",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.11.tgz",
- "integrity": "sha512-OZ6+oaK7GMyg3IfCpj8JOmn8n+w2rJbDT0LLfVDTLb1ZFeKDh3AiNELgCMUw175IJHSkLl74hG0M0VLsvx+gag==",
+ "version": "7.29.12",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.12.tgz",
+ "integrity": "sha512-WJ7JBp/Q4+z/ImydtI7jS6NVco5++632ExBemSX+Ysb+G1lCwQ5BVo3SY+jGGOcZXI4ZccbZSUSJLNBW6eEpJg==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@@ -894,9 +894,9 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.29.11",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.11.tgz",
- "integrity": "sha512-iARF4jjHSM0v8DImCACPXrwEltBP3DgqDpXTvjAMBAVpyEY0LiGss78wvI+KtmW+IJNEvZ5sOhPDCsOsXsIybA==",
+ "version": "7.29.12",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.12.tgz",
+ "integrity": "sha512-nEreZBofjfd6FG621xe9Rk3+tMGBXf1nAuFrR6NUGF67fkQbSQf3NrbRuhgWRn+zb0qcy9XVok1GVFI/t9wWVQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1902,18 +1902,18 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.29.10",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.10.tgz",
- "integrity": "sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==",
+ "version": "7.29.12",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.12.tgz",
+ "integrity": "sha512-MscXe/NAZcOkYEsRajHZFt3ynsb22PUi6CTrp5U7+RYycR9By84mn9mFN54YgfITiqK4hFx3Ju3tZSyzfpS5ew==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.29.7",
- "@babel/generator": "^7.29.8",
+ "@babel/generator": "^7.29.12",
"@babel/helper-globals": "^7.29.7",
- "@babel/parser": "^7.29.9",
+ "@babel/parser": "^7.29.12",
"@babel/template": "^7.29.7",
- "@babel/types": "^7.29.8",
+ "@babel/types": "^7.29.11",
"debug": "^4.3.1"
},
"engines": {
@@ -2196,9 +2196,9 @@
}
},
"node_modules/@csstools/css-color-parser": {
- "version": "4.2.6",
- "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.2.6.tgz",
- "integrity": "sha512-iiPQ3iRWwnJkeEn6RIu6SJPr7hYrLz6XZ9s/QZl+2/LI5KQVjpl2fdmDSZKuD4xP6GMmMPgHFFXg6k1Wkz0Trg==",
+ "version": "4.2.7",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.2.7.tgz",
+ "integrity": "sha512-zgm9yjQz5iJB4VL8RyVwd71TWB8Q89FSxt/NzXoWqPSkEBOVtn9L6vAPtSc9hpKfB0Awo/AL2VKFHjYetBLFHQ==",
"devOptional": true,
"funding": [
{
@@ -2247,9 +2247,9 @@
}
},
"node_modules/@csstools/css-syntax-patches-for-csstree": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.15.tgz",
- "integrity": "sha512-J0u7HkVl2nzSlhsiTOp4AmwcUQ3D+mGEEKfBy/7To5/y7F2OHwyLrXfrhR0SMgr4p5Lo+eaMVSeai24zUcBIxA==",
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.16.tgz",
+ "integrity": "sha512-LsDbJPP/B8cPasUJyTA5S99F7C4G93ngW8hUluXz8CFeOaaRnBPtBiIlvgcPYU0HmHNz8CXg+1vwFrIB4F6Dgw==",
"devOptional": true,
"funding": [
{
@@ -3044,9 +3044,9 @@
}
},
"node_modules/@oxc-project/types": {
- "version": "0.155.0",
- "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.155.0.tgz",
- "integrity": "sha512-SeE8JPwW1xs1tHeNycjUtUBdhorRa8o4jlvjwk49R7/Z291i+4DQa7JJIgOm/TaYQZx+QrPQbVJ/9c8dMIZN8Q==",
+ "version": "0.156.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.156.0.tgz",
+ "integrity": "sha512-1Duyg48TdJNdyhEB8Xn1L36bT9Pv6GUtlKjHxOys8xkaF/rQq3XJE+bAurSK/AgIz5mGFsb77cn9Pb20+WCScw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/oxc-project"
@@ -3104,9 +3104,9 @@
}
},
"node_modules/@rolldown/binding-android-arm-eabi": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.15.tgz",
- "integrity": "sha512-aLcgK9gIJ3YRvrrtfSBbRa27F5WrpiTaPulnFpsHPxpUHgFlSgnU4854MHwoRGEBhfRJDWCS2WQ7lIjskE9Olw==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.16.tgz",
+ "integrity": "sha512-ia3DwAs0OsMGS7+IConptSiyk9pEXkOx/AbJ2n/lAGxH3QkWQus1t8d7gnAT38FCU2sQu8lUbeR6AiZFv4JxaA==",
"cpu": [
"arm"
],
@@ -3120,9 +3120,9 @@
}
},
"node_modules/@rolldown/binding-android-arm64": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.15.tgz",
- "integrity": "sha512-xD7DdZCrbThKuxNg7ooQmvp07ys4J/pnSEMTG3/OdOWl6daC67m/Q4fL78sRHMxTH/N4fGUbYhcPM0MF5WFHkg==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.16.tgz",
+ "integrity": "sha512-kx5wBiMB6E7TEvpl2B9gjLU004BkvEm2Dr941BFjx/SontPwSzNuQUIoVKxHHoSjpFIfHMmcguyLOtyn0hObRg==",
"cpu": [
"arm64"
],
@@ -3136,9 +3136,9 @@
}
},
"node_modules/@rolldown/binding-darwin-arm64": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.15.tgz",
- "integrity": "sha512-m2WuQ6r0B4OTYxyPpNLtXaMRbRDUbG8YQV2Q3KTdSSK8Th6KHCnC8jVCJt8bvYeSB5WivkkNbc85mKadaSdOxA==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.16.tgz",
+ "integrity": "sha512-qslZrXnKJU4cUpjoAmtAo/KQM9e2IRMlmpig6Zpwj+8KWxW8v+nkAf9216Bsek9lOC1jvg2yCjygCFo2f83msQ==",
"cpu": [
"arm64"
],
@@ -3152,9 +3152,9 @@
}
},
"node_modules/@rolldown/binding-darwin-x64": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.15.tgz",
- "integrity": "sha512-5RtnsHM36nodM9WbMy+zip0LGS/G+y5wro5RHrpOlr4ac24+1zSi9kiV2MP1myZeZ/ifEHfulQcWjnAXzc2C2A==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.16.tgz",
+ "integrity": "sha512-FdF+y48ND13eAyM2mQn+85kvAqNlvRWROy2rhgA463X/0Gv4vGtazZtfaF1mRBLscYvtOlh4QnLjOWiFzX69OQ==",
"cpu": [
"x64"
],
@@ -3168,9 +3168,9 @@
}
},
"node_modules/@rolldown/binding-freebsd-x64": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.15.tgz",
- "integrity": "sha512-g3l09pyFqhu+135JKkbkwiKGQmwU5hUMUPJ4VdBADvuqR8d33L6H578rh8m7rtxbdp+VmX/+nzI7nvhSZlzpUQ==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.16.tgz",
+ "integrity": "sha512-ddjqFM5e95AgLbUPtKIS7V1KTVlA0RUgCVr5mn+/IEhsdy3pr+Vuj/HZ7nlMN2FyxIwUktOH1LEPIQXO1v9y1Q==",
"cpu": [
"x64"
],
@@ -3184,9 +3184,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm-gnueabihf": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.15.tgz",
- "integrity": "sha512-nIe3VugI97nGQtspPxDqA4sXMUpeiocKIP/CqpY/u/vgbT+alX+cVxu1C/oVBPKg4feNTmYovE91v4DgXvXNwQ==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.16.tgz",
+ "integrity": "sha512-tHdKWbFkFBI687iim3LIyIvyL7j66VvQYkDPss5Stn/qyE2tWkR1YD0dXmXPFKKqT/o5ZEJVsaRsWS2meQwGOA==",
"cpu": [
"arm"
],
@@ -3200,9 +3200,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-gnu": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.15.tgz",
- "integrity": "sha512-iTBjXx+B5QSvgI89lJfmqh4wTh8NabR1YZIIN3hNx4zSG0EVfVqkOvLulNpG4251pbd6/IAmZ/LefVk1Y4rPhw==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.16.tgz",
+ "integrity": "sha512-FJiLGAblPBMlBEdbOqw6kW6QcXDWAf/oJu7gYs9ZJZwmg+K+/zjFLxPTIY9izJUzxzc24FHvmseyA0IvJSl17w==",
"cpu": [
"arm64"
],
@@ -3219,9 +3219,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-musl": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.15.tgz",
- "integrity": "sha512-uN26XOnVR7rqQupG3V9oAG2EGGatWjcJHOeDOHUFCh4TBWmP2tHTFoVN13aYbwfm0aHqJAEmcwhAu6sooIjfqQ==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.16.tgz",
+ "integrity": "sha512-hrJpblMsrQ58U9veWpbXzkhV5zStunds6HWLprqq1qauvgBr1E6P+24kLj6lSLI9vjRn/RYpjprhkHQPKGWpNg==",
"cpu": [
"arm64"
],
@@ -3238,9 +3238,9 @@
}
},
"node_modules/@rolldown/binding-linux-ppc64-gnu": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.15.tgz",
- "integrity": "sha512-9nWkcdd+H+XhaA3fQIwpHnKIrfx/PQ6rO0pivr78Og07tXlUlctBBJoEYLPfhTmCR/QxEVdn6uPjHV5SymPhdw==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.16.tgz",
+ "integrity": "sha512-qJd/dC6j6CwLG9/s/RP2nb1RZ0GIgj7Ioj7x/SYa3RzjVrlzrmH0fhIOpfvqQDeIsdP0loi+kHaMhJzY1PBIaA==",
"cpu": [
"ppc64"
],
@@ -3257,9 +3257,9 @@
}
},
"node_modules/@rolldown/binding-linux-s390x-gnu": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.15.tgz",
- "integrity": "sha512-Ggh0ciFjLwIusLSLz7LZYEaGdxOAUJXI+Qu5JCbhPJJHEt8vP+IjRATTJheiJsdzzTYgUiHUiw3X1Ea3ZpMBdA==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.16.tgz",
+ "integrity": "sha512-Vx7Xg5uUJuNcujJjI70OICaH0EYj80BtOLZTSN7uOYg8QOLlyKnaG0IW7Fn/J0IpJsaKzmDKMhOQv1JBM9m9vg==",
"cpu": [
"s390x"
],
@@ -3276,9 +3276,9 @@
}
},
"node_modules/@rolldown/binding-linux-x64-gnu": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.15.tgz",
- "integrity": "sha512-FHg60rS6DBePAYZ9X9F67x+JObFdmgn6tupA1C/a3B+CufFmTD4mX+e8M75tCiAO3foR/6xwVBI0KQiI7sn/rw==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.16.tgz",
+ "integrity": "sha512-TNKhgE3uJTsTzatUSSYt0Kgo+Oa2uSlSjz4r1aEIea7HX6ULBym4fAlYUhG1i6pjNf2njfCUAfKwr6C3E9Xg1w==",
"cpu": [
"x64"
],
@@ -3295,9 +3295,9 @@
}
},
"node_modules/@rolldown/binding-linux-x64-musl": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.15.tgz",
- "integrity": "sha512-/cvV/7v5VGz/moiz0XKRj2dE8DzsKyhIu1KpOvJGPjRywg3yscON889UGvAe8zfiJLHup7VLjBduoGWi3HusWQ==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.16.tgz",
+ "integrity": "sha512-7chXdpjXZ8qG0+mIxECN3cT9kvhZ3/oZhMX6Pp876P7CDrIy8nJswva6Mq357JR7eYXfuskwZxMeV1SzoZdHrA==",
"cpu": [
"x64"
],
@@ -3314,9 +3314,9 @@
}
},
"node_modules/@rolldown/binding-openharmony-arm64": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.15.tgz",
- "integrity": "sha512-MyzC5Hrv/sm+Z7TSGKP/j8001RO2xQm1zOpCNVL4j0cY/VhBZviludA2YFQ7i4lH6ZAXxQm0lcMdBzM+99mE7w==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.16.tgz",
+ "integrity": "sha512-Kwjt+7uNTJK5/MDkGWGVO2KQPnj8yAV75dMpfwyHZrJSXWHrniOB0aUEWlVYf3H1hOqFLIStLdM5QXq6bnKmOQ==",
"cpu": [
"arm64"
],
@@ -3330,9 +3330,9 @@
}
},
"node_modules/@rolldown/binding-win32-arm64-msvc": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.15.tgz",
- "integrity": "sha512-+PgYiS+AH5omy6L45ZLxybasauJaj3M8buoT83D+nzPmCayXlxUV9hydhciCKVyIg0B/v0BtXPDE1uGqNwCPpg==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.16.tgz",
+ "integrity": "sha512-/LH6WfjDRXXJz/p5xl4TmU+jpcnwcxbKEQBW/GZE0JHfN0lGIyTtsUEGaQ/q/GikkGJ2yLKe6pwm7AnEWO8pdw==",
"cpu": [
"arm64"
],
@@ -3346,9 +3346,9 @@
}
},
"node_modules/@rolldown/binding-win32-x64-msvc": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.15.tgz",
- "integrity": "sha512-HFZd2QNQYn1JbIi+Hpd7H+r/lkWxcfIu28nirZ6eCn2LafuvmExMlb/P96Sfx5tf7pPArw39IdhmCF8vmV+NhQ==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.16.tgz",
+ "integrity": "sha512-1lv1KvX0Z871zfk7vw+dnXMMnHNyDwMzWG8Kv3HxDXMOhzCX4SHc7HK319fInP0i+0p9D8brkfzL7pJOaGl+tw==",
"cpu": [
"x64"
],
@@ -3583,9 +3583,9 @@
"license": "MIT"
},
"node_modules/@types/estree": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
- "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.10.tgz",
+ "integrity": "sha512-lTyOMnOcmRBzdCv6/4zUZCrEhV0xrqQiUZBZtVcbmLHBXKLnN8q89v/wKRF/Q0HbwVsqbIG3o5HDoFl9sduM+g==",
"license": "MIT"
},
"node_modules/@types/json-schema": {
@@ -4554,9 +4554,9 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
- "version": "2.11.33",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.33.tgz",
- "integrity": "sha512-yiVKDX+qCMRKBE084lXvq9EcwFUhKZ2nU8TK1EQQuOgPNR/lmbGxXOeDdlGUqC2Zz11Cs9rk1d/8NfgBmlkt0w==",
+ "version": "2.11.34",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.34.tgz",
+ "integrity": "sha512-Aqr8mA1kIvyJ3UY5YAY7ib8LSo1DmDMbMnVqGPtsKW1LxaFQFwn9Eb3yvq2fUKJsRvaXjnAV7R5osqETapzNiA==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -4724,9 +4724,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001819",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001819.tgz",
- "integrity": "sha512-LFUqIIAwpzsIuevnKnsR9qnStBcgzPShTX61lBwN9uFkkf8o8zLiebEjbW8AYtZiF+1YKDWfdt/pWDtMuG8Xwg==",
+ "version": "1.0.30001820",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001820.tgz",
+ "integrity": "sha512-gfWD6MxqVCqAOwmODfZf7DchWvlrA+SRdNX7ceLfg3xRqe5ssjjpF7EgslC/0tiLiNTajdaNN/q8c/5u/7Gz8w==",
"dev": true,
"funding": [
{
@@ -4922,9 +4922,9 @@
"license": "MIT"
},
"node_modules/confbox": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.3.1.tgz",
- "integrity": "sha512-cKUSoKa8YxFZZSmraVi7onONx3amu77ngK3kGpsYHDH7drPwCRkQE1RYMPlLRrMtnciRj274XNRxcHxnKmDSnA==",
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.3.2.tgz",
+ "integrity": "sha512-ZUAKhKlkCOrIGKc8cj7zek9s9z1mveHif/25nUshI2BzCRzF7KH7KHa+Lnh2ubq+e1tIlaFuP763mzW4qVoehg==",
"dev": true,
"license": "MIT"
},
@@ -5337,9 +5337,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.465",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.465.tgz",
- "integrity": "sha512-zg4iUpbeGw7YNZsswc2xKr2uiBex2d8dELAXo92Icw3but1ULbrvK8USe6wVLaWjgJnKBARv0pchx9Owktx6wQ==",
+ "version": "1.5.468",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.468.tgz",
+ "integrity": "sha512-8XdEp3sIqO+PzmVPxhzqHq/3+yCxp44m27cm2WY1sRn3ZhwKyKmqSi2hx6gEhmnOXmh8NUuYE00z6Onzn5m6DA==",
"dev": true,
"license": "ISC"
},
@@ -6159,6 +6159,16 @@
"vitest-axe": "^0.1.0"
}
},
+ "node_modules/folder-pane/node_modules/pane-registry": {
+ "version": "5.0.2-1",
+ "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-5.0.2-1.tgz",
+ "integrity": "sha512-gDub2yjXejZ0JQSsEvDpUhff4e205+IIKV2iYJCbBBs65QiN/2a4wmpv2/NZJjoF6FADW+ndv8nSc6w3CxuYFg==",
+ "license": "MIT",
+ "dependencies": {
+ "rdflib": "2.4.1",
+ "solid-logic": "6.0.1-4"
+ }
+ },
"node_modules/folder-pane/node_modules/solid-logic": {
"version": "6.0.1-4",
"resolved": "https://registry.npmjs.org/solid-logic/-/solid-logic-6.0.1-4.tgz",
@@ -8123,9 +8133,9 @@
}
},
"node_modules/lucide": {
- "version": "1.62.0",
- "resolved": "https://registry.npmjs.org/lucide/-/lucide-1.62.0.tgz",
- "integrity": "sha512-/8NUdyLCNCHGd103wuw4s4RLs/nZyXhs+cs5dx1qDjv7zFgmExkVr/LUythjxhy+oWIoYbAU8llv+c0Jsz69QQ==",
+ "version": "1.64.0",
+ "resolved": "https://registry.npmjs.org/lucide/-/lucide-1.64.0.tgz",
+ "integrity": "sha512-2k481p+2dnI88E5chX8D1niwJzar/0EMFZwS93E/umHVxl+Po5uoDIGuo64Ij3a35YaD1J6EsWulDzKaod5wOw==",
"license": "ISC"
},
"node_modules/lz-string": {
@@ -8631,9 +8641,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.60",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.60.tgz",
- "integrity": "sha512-OmO8+GM1JUZqXET720VrJCwkjUCXmCMQm0Z3UDDRbfNLHS4NEAvY60j5jiFv0tkKw2PNNlqOLhahVmwJIOLDIQ==",
+ "version": "2.0.61",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.61.tgz",
+ "integrity": "sha512-5NUN6QCxNFrS9oEA9RPS+d0AP+ooGBzzovY2JhIpDRHacPvOhHjXjUsUMX9qp4nLHZ+5jVgXB2jj/P4arGOE/g==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8863,29 +8873,13 @@
"license": "MIT"
},
"node_modules/pane-registry": {
- "version": "5.0.2-1",
- "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-5.0.2-1.tgz",
- "integrity": "sha512-gDub2yjXejZ0JQSsEvDpUhff4e205+IIKV2iYJCbBBs65QiN/2a4wmpv2/NZJjoF6FADW+ndv8nSc6w3CxuYFg==",
+ "version": "5.0.2-2",
+ "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-5.0.2-2.tgz",
+ "integrity": "sha512-W/phyBcdAHJkHnoRTl/6ddnfAUSU4aealRw2paj6tGjMLPSYxEiB6GaNcTCWOSHsBJIl4XuyHWL2vgHHAPOHTg==",
"license": "MIT",
"dependencies": {
"rdflib": "2.4.1",
- "solid-logic": "6.0.1-4"
- }
- },
- "node_modules/pane-registry/node_modules/solid-logic": {
- "version": "6.0.1-4",
- "resolved": "https://registry.npmjs.org/solid-logic/-/solid-logic-6.0.1-4.tgz",
- "integrity": "sha512-EVvS+5g91aUoONqGtM1vPnMimtwH6c/72td5b4qBRcudDjeRU/hycPg8p5abmx1YWZseLA1EFK76+E/t5bcPFw==",
- "license": "MIT",
- "dependencies": {
- "@dokieli/web-access-control": "^1.1.0",
- "@uvdsl/solid-oidc-client-browser": "^0.2.3",
- "solid-namespace": "^0.5.4",
- "vite": "^8.0.16",
- "vitest": "^4.1.9"
- },
- "engines": {
- "node": ">=18"
+ "solid-logic": "6.0.1-5"
}
},
"node_modules/parent-module": {
@@ -9630,12 +9624,12 @@
}
},
"node_modules/rolldown": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.15.tgz",
- "integrity": "sha512-6odND+fel5zVw3I4Yc2e69gvguDnX0CAAGiNDZSq4ik5WUcaLrkD2GLuog0XcODbor31hZ5ayEMgVDno+KPV5g==",
+ "version": "1.2.16",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.16.tgz",
+ "integrity": "sha512-bWvlMpFKiTfDKfnK7FC2MPgPeWCf/Kpwsq49ApdW+FQaBZb6O6dZ4MAPbPUjp7hYQrw/RobqCzn64BRrQecGHw==",
"license": "MIT",
"dependencies": {
- "@oxc-project/types": "=0.155.0",
+ "@oxc-project/types": "=0.156.0",
"@rolldown/pluginutils": "^1.0.0"
},
"bin": {
@@ -9645,21 +9639,21 @@
"node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
- "@rolldown/binding-android-arm-eabi": "1.2.15",
- "@rolldown/binding-android-arm64": "1.2.15",
- "@rolldown/binding-darwin-arm64": "1.2.15",
- "@rolldown/binding-darwin-x64": "1.2.15",
- "@rolldown/binding-freebsd-x64": "1.2.15",
- "@rolldown/binding-linux-arm-gnueabihf": "1.2.15",
- "@rolldown/binding-linux-arm64-gnu": "1.2.15",
- "@rolldown/binding-linux-arm64-musl": "1.2.15",
- "@rolldown/binding-linux-ppc64-gnu": "1.2.15",
- "@rolldown/binding-linux-s390x-gnu": "1.2.15",
- "@rolldown/binding-linux-x64-gnu": "1.2.15",
- "@rolldown/binding-linux-x64-musl": "1.2.15",
- "@rolldown/binding-openharmony-arm64": "1.2.15",
- "@rolldown/binding-win32-arm64-msvc": "1.2.15",
- "@rolldown/binding-win32-x64-msvc": "1.2.15"
+ "@rolldown/binding-android-arm-eabi": "1.2.16",
+ "@rolldown/binding-android-arm64": "1.2.16",
+ "@rolldown/binding-darwin-arm64": "1.2.16",
+ "@rolldown/binding-darwin-x64": "1.2.16",
+ "@rolldown/binding-freebsd-x64": "1.2.16",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.2.16",
+ "@rolldown/binding-linux-arm64-gnu": "1.2.16",
+ "@rolldown/binding-linux-arm64-musl": "1.2.16",
+ "@rolldown/binding-linux-ppc64-gnu": "1.2.16",
+ "@rolldown/binding-linux-s390x-gnu": "1.2.16",
+ "@rolldown/binding-linux-x64-gnu": "1.2.16",
+ "@rolldown/binding-linux-x64-musl": "1.2.16",
+ "@rolldown/binding-openharmony-arm64": "1.2.16",
+ "@rolldown/binding-win32-arm64-msvc": "1.2.16",
+ "@rolldown/binding-win32-x64-msvc": "1.2.16"
}
},
"node_modules/safe-array-concat": {
@@ -10014,6 +10008,16 @@
"fsevents": "*"
}
},
+ "node_modules/solid-ui/node_modules/pane-registry": {
+ "version": "5.0.2-1",
+ "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-5.0.2-1.tgz",
+ "integrity": "sha512-gDub2yjXejZ0JQSsEvDpUhff4e205+IIKV2iYJCbBBs65QiN/2a4wmpv2/NZJjoF6FADW+ndv8nSc6w3CxuYFg==",
+ "license": "MIT",
+ "dependencies": {
+ "rdflib": "2.4.1",
+ "solid-logic": "6.0.1-4"
+ }
+ },
"node_modules/solid-ui/node_modules/solid-logic": {
"version": "6.0.1-4",
"resolved": "https://registry.npmjs.org/solid-logic/-/solid-logic-6.0.1-4.tgz",
@@ -10107,6 +10111,16 @@
"vitest-axe": "^0.1.0"
}
},
+ "node_modules/source-pane/node_modules/pane-registry": {
+ "version": "5.0.2-1",
+ "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-5.0.2-1.tgz",
+ "integrity": "sha512-gDub2yjXejZ0JQSsEvDpUhff4e205+IIKV2iYJCbBBs65QiN/2a4wmpv2/NZJjoF6FADW+ndv8nSc6w3CxuYFg==",
+ "license": "MIT",
+ "dependencies": {
+ "rdflib": "2.4.1",
+ "solid-logic": "6.0.1-4"
+ }
+ },
"node_modules/source-pane/node_modules/solid-logic": {
"version": "6.0.1-4",
"resolved": "https://registry.npmjs.org/solid-logic/-/solid-logic-6.0.1-4.tgz",
@@ -10487,9 +10501,9 @@
}
},
"node_modules/tldts-core": {
- "version": "7.4.19",
- "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.19.tgz",
- "integrity": "sha512-goNXV6Ho9TIOfpJZanTd6CKG5DyYgYAL+k+22T0SLh8l6+KHIfBUPFuePuSZv05UttIaaLmI9tb7TmGIdK5AkQ==",
+ "version": "7.4.20",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.20.tgz",
+ "integrity": "sha512-C630TWXZCZmLq0F2bW4QqwnaaxCQ/svpAqvJwnC4JvgEM5ohhBnGsEzTLSOXcN+xjz+kEaHS5uoWIw2klnqd0A==",
"devOptional": true,
"license": "MIT"
},
diff --git a/package.json b/package.json
index 2bb5bcce..33404c5d 100644
--- a/package.json
+++ b/package.json
@@ -69,7 +69,7 @@
"meeting-pane": "4.0.0",
"mime-types": "^3.0.2",
"package-lock.json": "^1.0.0",
- "pane-registry": "5.0.2-1",
+ "pane-registry": "5.0.2-2",
"profile-pane": "4.1.0-0",
"rdflib": "2.4.1",
"solid-logic": "6.0.1-5",
diff --git a/src/outline/manager.js b/src/outline/manager.js
index a6e83039..16d1827e 100644
--- a/src/outline/manager.js
+++ b/src/outline/manager.js
@@ -31,6 +31,7 @@ const EXPLORER_PROVIDER_TAG = 'solid-ui-file-explorer-provider'
export default function (context) {
const dom = context.dom
const explorerStates = new WeakMap()
+ const renderedPanes = new WeakMap()
const explorerProviderListeners = new WeakSet()
this.document = context.dom
@@ -285,6 +286,7 @@ export default function (context) {
}
composeExplorer(provider, subject, pane, paneDiv)
+ renderedPanes.set(provider, { pane, subjectUri: subject.uri })
}
function openPaneInPlace (provider, subject, pane) {
@@ -426,7 +428,17 @@ export default function (context) {
}
}
- if (provider.pane) {
+ const renderedPane = renderedPanes.get(provider)
+ const paneAlreadyRendered = provider.pane?.managesUpdates === true &&
+ renderedPane?.pane === provider.pane &&
+ renderedPane.subjectUri === subject.uri &&
+ !options.refresh &&
+ !!provider.querySelector(':scope > .paneDiv')
+ if (paneAlreadyRendered) {
+ // Only panes that update their own DOM can safely reuse a render. Other
+ // panes may read changing store data (including defaultPane).
+ composeExplorer(provider, subject, provider.pane)
+ } else if (provider.pane) {
renderPaneIntoProvider(provider, subject, provider.pane, options)
} else {
composeExplorer(provider, subject, provider.pane)
diff --git a/test/unit/outline/manager.test.ts b/test/unit/outline/manager.test.ts
index 4be638ed..db0ae259 100644
--- a/test/unit/outline/manager.test.ts
+++ b/test/unit/outline/manager.test.ts
@@ -36,6 +36,7 @@ import { findByText, getByText } from '@testing-library/dom'
const MockPane = {
name: 'mock',
icon: 'data:image/svg+xml,',
+ managesUpdates: true,
label: () => 'Mock Pane',
render: (subject: NamedNode) => {
const div = document.createElement('div')
@@ -366,6 +367,46 @@ describe('manager', () => {
await vi.waitFor(() => expect(header.menuItems).toHaveLength(1))
})
+ it('does not render the same pane again when a related fetch repaints the provider', async () => {
+ const render = vi.fn(MockPane.render)
+ const pane = { ...MockPane, render }
+ const manager = new OutlineManager({ dom: document, session: { paneRegistry: { list: [pane], byName: findPane }, store } })
+ const provider = manager.propertyTable(container, undefined, pane, {})
+ document.body.appendChild(provider)
+ await vi.waitFor(() => expect(provider.querySelector('.paneDiv')).not.toBeNull())
+ const paneElement = provider.querySelector('.paneDiv')
+ const menuItems = provider.querySelector('solid-ui-file-explorer-header')!.menuItems
+
+ manager.propertyTable(container, provider, pane, {})
+ await vi.waitFor(() => {
+ const header = provider.querySelector('solid-ui-file-explorer-header')
+ expect(header?.menuItems).not.toBe(menuItems)
+ })
+
+ expect(render).toHaveBeenCalledTimes(1)
+ expect(provider.querySelector('.paneDiv')).toBe(paneElement)
+
+ manager.propertyTable(container, provider, pane, { refresh: true })
+
+ await vi.waitFor(() => expect(render).toHaveBeenCalledTimes(2))
+ expect(provider.querySelector('.paneDiv')).not.toBe(paneElement)
+ })
+
+ it('rerenders panes that do not manage their own updates', async () => {
+ const render = vi.fn(MockPane.render)
+ const pane = { ...MockPane, managesUpdates: false, render }
+ const manager = new OutlineManager({ dom: document, session: { paneRegistry: { list: [pane], byName: findPane }, store } })
+ const provider = manager.propertyTable(container, undefined, pane, {})
+ document.body.appendChild(provider)
+ await vi.waitFor(() => expect(provider.querySelector('.paneDiv')).not.toBeNull())
+ const paneElement = provider.querySelector('.paneDiv')
+
+ manager.propertyTable(container, provider, pane, {})
+
+ await vi.waitFor(() => expect(render).toHaveBeenCalledTimes(2))
+ expect(provider.querySelector('.paneDiv')).not.toBe(paneElement)
+ })
+
it('does not add a resource header for index.ttl#this', async () => {
const provider = createExplorer(MockPane, { solo: true }, sym(`${window.location.origin}/addressbook/index.ttl#this`))
await vi.waitFor(() => expect(provider.querySelector('.paneDiv')).not.toBeNull())