diff --git a/web/package-lock.json b/web/package-lock.json
index 4fadaa4..6b9fac3 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -13,6 +13,7 @@
"blurhash": "^2.0.5",
"katex": "^0.16.11",
"leaflet": "^1.9.4",
+ "monaco-editor": "^0.52.0",
"react": "^19.0.0",
"react-blurhash": "^0.3.0",
"react-dom": "^19.0.0",
@@ -4301,6 +4302,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/monaco-editor": {
+ "version": "0.52.0",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.0.tgz",
+ "integrity": "sha512-OeWhNpABLCeTqubfqLMXGsqf6OmPU6pHM85kF3dhy6kq5hnhuVS1p3VrEW/XhWHc71P2tHyS5JFySD8mgs1crw==",
+ "license": "MIT"
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
diff --git a/web/package.json b/web/package.json
index fe2c631..2f2a78e 100644
--- a/web/package.json
+++ b/web/package.json
@@ -15,6 +15,7 @@
"blurhash": "^2.0.5",
"katex": "^0.16.11",
"leaflet": "^1.9.4",
+ "monaco-editor": "^0.52.0",
"react": "^19.0.0",
"react-blurhash": "^0.3.0",
"react-dom": "^19.0.0",
diff --git a/web/src/api/types/preferences/types.ts b/web/src/api/types/preferences/types.ts
index 1b0e0a0..50211a1 100644
--- a/web/src/api/types/preferences/types.ts
+++ b/web/src/api/types/preferences/types.ts
@@ -21,6 +21,21 @@ export enum PreferenceContext {
RoomDevice = "room_device",
}
+export function preferenceContextToInt(context: PreferenceContext): number {
+ switch (context) {
+ case PreferenceContext.Config:
+ return 0
+ case PreferenceContext.Account:
+ return 1
+ case PreferenceContext.Device:
+ return 2
+ case PreferenceContext.RoomAccount:
+ return 3
+ case PreferenceContext.RoomDevice:
+ return 4
+ }
+}
+
export const anyContext = [
PreferenceContext.RoomDevice,
PreferenceContext.RoomAccount,
diff --git a/web/src/ui/settings/SettingsView.css b/web/src/ui/settings/SettingsView.css
index 61ae52e..cc0e7e7 100644
--- a/web/src/ui/settings/SettingsView.css
+++ b/web/src/ui/settings/SettingsView.css
@@ -56,6 +56,12 @@ div.settings-view {
font-family: var(--monospace-font-stack);
}
+ > div.vscode-wrapper {
+ position: fixed;
+ inset: 0;
+ z-index: 10;
+ }
+
> div.buttons {
display: flex;
justify-content: right;
diff --git a/web/src/ui/settings/SettingsView.tsx b/web/src/ui/settings/SettingsView.tsx
index 0c1d3fe..657d1c9 100644
--- a/web/src/ui/settings/SettingsView.tsx
+++ b/web/src/ui/settings/SettingsView.tsx
@@ -13,9 +13,17 @@
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see
{appliedContext}
has content
+ }