diff --git a/interface/.typesafe-i18n.json b/interface/.typesafe-i18n.json
index c04fee347..59491f06e 100644
--- a/interface/.typesafe-i18n.json
+++ b/interface/.typesafe-i18n.json
@@ -1,5 +1,5 @@
{
"adapter": "react",
"baseLocale": "en",
- "$schema": "https://unpkg.com/typesafe-i18n@5.15.0/schema/typesafe-i18n.json"
+ "$schema": "https://unpkg.com/typesafe-i18n@5.16.2/schema/typesafe-i18n.json"
}
diff --git a/interface/package-lock.json b/interface/package-lock.json
index 74b349269..142488f5c 100644
--- a/interface/package-lock.json
+++ b/interface/package-lock.json
@@ -14,8 +14,8 @@
"@mui/icons-material": "^5.10.9",
"@mui/material": "^5.10.12",
"@table-library/react-table-library": "4.0.23",
- "@types/lodash": "^4.14.186",
- "@types/node": "^18.11.8",
+ "@types/lodash": "^4.14.187",
+ "@types/node": "^18.11.9",
"@types/react": "^18.0.24",
"@types/react-dom": "^18.0.8",
"@types/react-router-dom": "^5.3.3",
@@ -31,10 +31,10 @@
"react-dom": "^18.2.0",
"react-dropzone": "^14.2.3",
"react-icons": "^4.6.0",
- "react-router-dom": "^6.4.2",
+ "react-router-dom": "^6.4.3",
"react-scripts": "5.0.1",
"sockette": "^2.0.6",
- "typesafe-i18n": "^5.15.0",
+ "typesafe-i18n": "^5.16.2",
"typescript": "^4.8.4"
},
"devDependencies": {
@@ -3458,9 +3458,9 @@
}
},
"node_modules/@remix-run/router": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.2.tgz",
- "integrity": "sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.3.tgz",
+ "integrity": "sha512-ceuyTSs7PZ/tQqi19YZNBc5X7kj1f8p+4DIyrcIYFY9h+hd1OKm4RqtiWldR9eGEvIiJfsqwM4BsuCtRIuEw6Q==",
"engines": {
"node": ">=14"
}
@@ -4007,9 +4007,9 @@
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
},
"node_modules/@types/lodash": {
- "version": "4.14.186",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz",
- "integrity": "sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw=="
+ "version": "4.14.187",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.187.tgz",
+ "integrity": "sha512-MrO/xLXCaUgZy3y96C/iOsaIqZSeupyTImKClHunL5GrmaiII2VwvWmLBu2hwa0Kp0sV19CsyjtrTc/Fx8rg/A=="
},
"node_modules/@types/mime": {
"version": "3.0.1",
@@ -4017,9 +4017,9 @@
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
},
"node_modules/@types/node": {
- "version": "18.11.8",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.8.tgz",
- "integrity": "sha512-uGwPWlE0Hj972KkHtCDVwZ8O39GmyjfMane1Z3GUBGGnkZ2USDq7SxLpVIiIHpweY9DS0QTDH0Nw7RNBsAAZ5A=="
+ "version": "18.11.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
+ "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg=="
},
"node_modules/@types/parse-json": {
"version": "4.0.0",
@@ -14535,11 +14535,11 @@
}
},
"node_modules/react-router": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.2.tgz",
- "integrity": "sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==",
+ "version": "6.4.3",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.3.tgz",
+ "integrity": "sha512-BT6DoGn6aV1FVP5yfODMOiieakp3z46P1Fk0RNzJMACzE7C339sFuHebfvWtnB4pzBvXXkHP2vscJzWRuUjTtA==",
"dependencies": {
- "@remix-run/router": "1.0.2"
+ "@remix-run/router": "1.0.3"
},
"engines": {
"node": ">=14"
@@ -14549,12 +14549,12 @@
}
},
"node_modules/react-router-dom": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.2.tgz",
- "integrity": "sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==",
+ "version": "6.4.3",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.3.tgz",
+ "integrity": "sha512-MiaYQU8CwVCaOfJdYvt84KQNjT78VF0TJrA17SIQgNHRvLnXDJO6qsFqq8F/zzB1BWZjCFIrQpu4QxcshitziQ==",
"dependencies": {
- "@remix-run/router": "1.0.2",
- "react-router": "6.4.2"
+ "@remix-run/router": "1.0.3",
+ "react-router": "6.4.3"
},
"engines": {
"node": ">=14"
@@ -16398,9 +16398,9 @@
}
},
"node_modules/typesafe-i18n": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.15.0.tgz",
- "integrity": "sha512-P5cmXOErZnXfHzuMeXF3AEFyvmT+kaUPzgcJPnlB/TdXSpzFz/Fj5DwwcjkbnVQgqFG7Sn4tRhmj4Axz/ArfWw==",
+ "version": "5.16.2",
+ "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.16.2.tgz",
+ "integrity": "sha512-s1eVQUhq7e0nbVm5Ntb3fLmA1UNi3yEUZN0VCPGGAzVAyS2IUdtDP1J9DINGgbFmBUkHwEAZ6DPSRl9Ca1cPaA==",
"bin": {
"typesafe-i18n": "cli/typesafe-i18n.mjs"
},
@@ -19790,9 +19790,9 @@
"integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw=="
},
"@remix-run/router": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.2.tgz",
- "integrity": "sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ=="
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.3.tgz",
+ "integrity": "sha512-ceuyTSs7PZ/tQqi19YZNBc5X7kj1f8p+4DIyrcIYFY9h+hd1OKm4RqtiWldR9eGEvIiJfsqwM4BsuCtRIuEw6Q=="
},
"@rollup/plugin-babel": {
"version": "5.3.1",
@@ -20194,9 +20194,9 @@
"integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
},
"@types/lodash": {
- "version": "4.14.186",
- "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.186.tgz",
- "integrity": "sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw=="
+ "version": "4.14.187",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.187.tgz",
+ "integrity": "sha512-MrO/xLXCaUgZy3y96C/iOsaIqZSeupyTImKClHunL5GrmaiII2VwvWmLBu2hwa0Kp0sV19CsyjtrTc/Fx8rg/A=="
},
"@types/mime": {
"version": "3.0.1",
@@ -20204,9 +20204,9 @@
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
},
"@types/node": {
- "version": "18.11.8",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.8.tgz",
- "integrity": "sha512-uGwPWlE0Hj972KkHtCDVwZ8O39GmyjfMane1Z3GUBGGnkZ2USDq7SxLpVIiIHpweY9DS0QTDH0Nw7RNBsAAZ5A=="
+ "version": "18.11.9",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz",
+ "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg=="
},
"@types/parse-json": {
"version": "4.0.0",
@@ -27676,20 +27676,20 @@
"integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A=="
},
"react-router": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.2.tgz",
- "integrity": "sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==",
+ "version": "6.4.3",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.4.3.tgz",
+ "integrity": "sha512-BT6DoGn6aV1FVP5yfODMOiieakp3z46P1Fk0RNzJMACzE7C339sFuHebfvWtnB4pzBvXXkHP2vscJzWRuUjTtA==",
"requires": {
- "@remix-run/router": "1.0.2"
+ "@remix-run/router": "1.0.3"
}
},
"react-router-dom": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.2.tgz",
- "integrity": "sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==",
+ "version": "6.4.3",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.4.3.tgz",
+ "integrity": "sha512-MiaYQU8CwVCaOfJdYvt84KQNjT78VF0TJrA17SIQgNHRvLnXDJO6qsFqq8F/zzB1BWZjCFIrQpu4QxcshitziQ==",
"requires": {
- "@remix-run/router": "1.0.2",
- "react-router": "6.4.2"
+ "@remix-run/router": "1.0.3",
+ "react-router": "6.4.3"
}
},
"react-scripts": {
@@ -29064,9 +29064,9 @@
}
},
"typesafe-i18n": {
- "version": "5.15.0",
- "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.15.0.tgz",
- "integrity": "sha512-P5cmXOErZnXfHzuMeXF3AEFyvmT+kaUPzgcJPnlB/TdXSpzFz/Fj5DwwcjkbnVQgqFG7Sn4tRhmj4Axz/ArfWw==",
+ "version": "5.16.2",
+ "resolved": "https://registry.npmjs.org/typesafe-i18n/-/typesafe-i18n-5.16.2.tgz",
+ "integrity": "sha512-s1eVQUhq7e0nbVm5Ntb3fLmA1UNi3yEUZN0VCPGGAzVAyS2IUdtDP1J9DINGgbFmBUkHwEAZ6DPSRl9Ca1cPaA==",
"requires": {}
},
"typescript": {
diff --git a/interface/package.json b/interface/package.json
index e5b1afac4..214f0a1bb 100644
--- a/interface/package.json
+++ b/interface/package.json
@@ -10,8 +10,8 @@
"@mui/icons-material": "^5.10.9",
"@mui/material": "^5.10.12",
"@table-library/react-table-library": "4.0.23",
- "@types/lodash": "^4.14.186",
- "@types/node": "^18.11.8",
+ "@types/lodash": "^4.14.187",
+ "@types/node": "^18.11.9",
"@types/react": "^18.0.24",
"@types/react-dom": "^18.0.8",
"@types/react-router-dom": "^5.3.3",
@@ -27,10 +27,10 @@
"react-dom": "^18.2.0",
"react-dropzone": "^14.2.3",
"react-icons": "^4.6.0",
- "react-router-dom": "^6.4.2",
+ "react-router-dom": "^6.4.3",
"react-scripts": "5.0.1",
"sockette": "^2.0.6",
- "typesafe-i18n": "^5.15.0",
+ "typesafe-i18n": "^5.16.2",
"typescript": "^4.8.4"
},
"scripts": {
diff --git a/interface/public/css/roboto.css b/interface/public/css/roboto.css
index 30013e88b..f0a860dda 100644
--- a/interface/public/css/roboto.css
+++ b/interface/public/css/roboto.css
@@ -10,7 +10,9 @@
font-style: normal;
font-weight: 400;
src: local('Roboto'), local('Roboto-Regular'), url(../fonts/re.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0104-0107, U+0118-0119, U+0131, U+0141-0144, U+0152-0153, U+015A-015B, U+0179-017C, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+ unicode-range: U+0000-00FF, U+0104-0107, U+0118-0119, U+0131, U+0141-0144, U+0152-0153, U+015A-015B, U+0179-017C,
+ U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF,
+ U+FFFD;
}
@font-face {
@@ -18,5 +20,7 @@
font-style: normal;
font-weight: 500;
src: local('Roboto Medium'), local('Roboto-Medium'), url(../fonts/md.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0104-0107, U+0118-0119, U+0131, U+0141-0144, U+0152-0153, U+015A-015B, U+0179-017C, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+ unicode-range: U+0000-00FF, U+0104-0107, U+0118-0119, U+0131, U+0141-0144, U+0152-0153, U+015A-015B, U+0179-017C,
+ U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF,
+ U+FFFD;
}
diff --git a/interface/src/project/SettingsCustomization.tsx b/interface/src/project/SettingsCustomization.tsx
index a6a201658..b32ba7719 100644
--- a/interface/src/project/SettingsCustomization.tsx
+++ b/interface/src/project/SettingsCustomization.tsx
@@ -545,45 +545,42 @@ const SettingsCustomization: FC = () => {
);
- const content = () => {
- return (
- <>
-
- {LL.DEVICE_ENTITIES()}
-
- {renderDeviceList()}
- {!deviceEntity && renderDeviceData()}
-
-
-
- } variant="outlined" color="primary" onClick={() => saveCustomization()}>
- {LL.SAVE()}
-
-
-
+ const renderContent = () => (
+ <>
+
+ {LL.DEVICE_ENTITIES()}
+
+ {renderDeviceList()}
+ {renderDeviceData()}
+
+
- }
- variant="outlined"
- color="error"
- onClick={() => setConfirmReset(true)}
- >
- {LL.RESET(0)}
+ } variant="outlined" color="primary" onClick={() => saveCustomization()}>
+ {LL.SAVE()}
- {renderResetDialog()}
- >
- );
- };
+
+ }
+ variant="outlined"
+ color="error"
+ onClick={() => setConfirmReset(true)}
+ >
+ {LL.RESET(0)}
+
+
+
+ {renderResetDialog()}
+ >
+ );
- const renderEditEntity = () => {
+ const renderEditDialog = () => {
if (deviceEntity) {
const de = deviceEntity;
return (