diff --git a/.all-contributorsrc b/.all-contributorsrc
index a4747296..b3c71be9 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -1,161 +1,146 @@
{
- "projectName": "extension",
- "projectOwner": "YouTube-Enhancer",
- "files": [
- "README.md"
- ],
- "commitType": "docs",
- "commitConvention": "angular",
- "contributorsPerLine": 7,
- "contributors": [
- {
- "login": "mist8kengas",
- "name": "mist8kengas",
- "avatar_url": "https://avatars.githubusercontent.com/u/46955469?v=4",
- "profile": "https://hioctane.org",
- "contributions": [
- "translation",
- "code",
- "bug"
- ]
- },
- {
- "login": "VampireChicken12",
- "name": "Nathan",
- "avatar_url": "https://avatars.githubusercontent.com/u/45531575?v=4",
- "profile": "https://hikari-bot.com",
- "contributions": [
- "design",
- "code",
- "translation"
- ]
- },
- {
- "login": "commonly-ts",
- "name": "Commonly",
- "avatar_url": "https://avatars.githubusercontent.com/u/51011212?v=4",
- "profile": "https://github.com/commonly-ts",
- "contributions": [
- "bug"
- ]
- },
+ "projectName": "extension",
+ "projectOwner": "YouTube-Enhancer",
+ "files": ["README.md"],
+ "commitType": "docs",
+ "commitConvention": "angular",
+ "contributorsPerLine": 7,
+ "contributors": [
+ {
+ "login": "mist8kengas",
+ "name": "mist8kengas",
+ "avatar_url": "https://avatars.githubusercontent.com/u/46955469?v=4",
+ "profile": "https://hioctane.org",
+ "contributions": ["translation", "code", "bug"]
+ },
+ {
+ "login": "VampireChicken12",
+ "name": "Nathan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/45531575?v=4",
+ "profile": "https://hikari-bot.com",
+ "contributions": ["design", "code", "translation"]
+ },
+ {
+ "login": "commonly-ts",
+ "name": "Commonly",
+ "avatar_url": "https://avatars.githubusercontent.com/u/51011212?v=4",
+ "profile": "https://github.com/commonly-ts",
+ "contributions": ["bug"]
+ },
+ {
+ "login": "eduardozgz",
+ "name": "Eduardo Aznar",
+ "avatar_url": "https://avatars.githubusercontent.com/u/30407412?v=4",
+ "profile": "https://eduardozgz.com",
+ "contributions": ["translation"]
+ },
+ {
+ "login": "lamyergeier",
+ "name": "Lamyergeier",
+ "avatar_url": "https://avatars.githubusercontent.com/u/42092626?v=4",
+ "profile": "https://github.com/lamyergeier",
+ "contributions": ["ideas"]
+ },
+ {
+ "login": "SleepyPrince",
+ "name": "Jackal Chan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/670216?v=4",
+ "profile": "https://github.com/SleepyPrince",
+ "contributions": ["translation"]
+ },
+ {
+ "login": "livingflore",
+ "name": "livingflore",
+ "avatar_url": "https://avatars.githubusercontent.com/u/63370734?v=4",
+ "profile": "http://livingflore.me",
+ "contributions": ["translation", "code"]
+ },
+ {
+ "login": "crvt7",
+ "name": "Patryk Popardowski",
+ "avatar_url": "https://avatars.githubusercontent.com/u/79649679?v=4",
+ "profile": "https://github.com/crvt7",
+ "contributions": ["translation"]
+ },
+ {
+ "login": "luisaosan",
+ "name": "Luis Felipe",
+ "avatar_url": "https://avatars.githubusercontent.com/u/48157083?v=4",
+ "profile": "https://github.com/luisaosan",
+ "contributions": ["translation"]
+ },
+ {
+ "login": "v1ctorio",
+ "name": "Vic",
+ "avatar_url": "https://avatars.githubusercontent.com/u/74506415?v=4",
+ "profile": "http://nosesisaid.com",
+ "contributions": ["translation"]
+ },
+ {
+ "login": "rado84-github",
+ "name": "rado84",
+ "avatar_url": "https://avatars.githubusercontent.com/u/41172201?v=4",
+ "profile": "https://github.com/rado84-github",
+ "contributions": ["bug"]
+ },
+ {
+ "login": "pulsar2105",
+ "name": "pulsar2105",
+ "avatar_url": "https://avatars.githubusercontent.com/u/54115653?v=4",
+ "profile": "https://github.com/pulsar2105",
+ "contributions": ["translation"]
+ },
+ {
+ "login": "G-Ran-Berg",
+ "name": "Granberg",
+ "avatar_url": "https://avatars.githubusercontent.com/u/12037193?v=4",
+ "profile": "https://github.com/G-Ran-Berg",
+ "contributions": ["translation"]
+ },
+ {
+ "login": "Secret-Peter",
+ "name": "Secret-Peter",
+ "avatar_url": "https://avatars.githubusercontent.com/u/166921574?v=4",
+ "profile": "https://github.com/Secret-Peter",
+ "contributions": ["translation"]
+ },
+ {
+ "login": "szaumoor",
+ "name": "Marcos C.R.",
+ "avatar_url": "https://avatars.githubusercontent.com/u/78204388?v=4",
+ "profile": "https://github.com/szaumoor",
+ "contributions": ["ideas"]
+ },
+ {
+ "login": "charlymoon741",
+ "name": "Carlos Ramos Luna",
+ "avatar_url": "https://avatars.githubusercontent.com/u/62484941?v=4",
+ "profile": "https://github.com/charlymoon741",
+ "contributions": ["ideas"]
+ },
+ {
+ "login": "Angsimosaurus",
+ "name": "앙시모사우루스",
+ "avatar_url": "https://avatars.githubusercontent.com/u/79510039?v=4",
+ "profile": "https://github.com/Angsimosaurus",
+ "contributions": ["translation"]
+ },
+ {
+ "login": "Mabra51",
+ "name": "Mabra51",
+ "avatar_url": "https://avatars.githubusercontent.com/u/12016338?v=4",
+ "profile": "https://github.com/Mabra51",
+ "contributions": ["ideas"]
+ },
{
"login": "eduardozgz",
"name": "Eduardo Aznar",
"avatar_url": "https://avatars.githubusercontent.com/u/30407412?v=4",
"profile": "https://eduardozgz.com",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "lamyergeier",
- "name": "Lamyergeier",
- "avatar_url": "https://avatars.githubusercontent.com/u/42092626?v=4",
- "profile": "https://github.com/lamyergeier",
- "contributions": [
- "ideas"
- ]
- },
- {
- "login": "SleepyPrince",
- "name": "Jackal Chan",
- "avatar_url": "https://avatars.githubusercontent.com/u/670216?v=4",
- "profile": "https://github.com/SleepyPrince",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "livingflore",
- "name": "livingflore",
- "avatar_url": "https://avatars.githubusercontent.com/u/63370734?v=4",
- "profile": "http://livingflore.me",
"contributions": [
"translation",
"code"
]
- },
- {
- "login": "crvt7",
- "name": "Patryk Popardowski",
- "avatar_url": "https://avatars.githubusercontent.com/u/79649679?v=4",
- "profile": "https://github.com/crvt7",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "luisaosan",
- "name": "Luis Felipe",
- "avatar_url": "https://avatars.githubusercontent.com/u/48157083?v=4",
- "profile": "https://github.com/luisaosan",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "v1ctorio",
- "name": "Vic",
- "avatar_url": "https://avatars.githubusercontent.com/u/74506415?v=4",
- "profile": "http://nosesisaid.com",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "rado84-github",
- "name": "rado84",
- "avatar_url": "https://avatars.githubusercontent.com/u/41172201?v=4",
- "profile": "https://github.com/rado84-github",
- "contributions": [
- "bug"
- ]
- },
- {
- "login": "pulsar2105",
- "name": "pulsar2105",
- "avatar_url": "https://avatars.githubusercontent.com/u/54115653?v=4",
- "profile": "https://github.com/pulsar2105",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "G-Ran-Berg",
- "name": "Granberg",
- "avatar_url": "https://avatars.githubusercontent.com/u/12037193?v=4",
- "profile": "https://github.com/G-Ran-Berg",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "Secret-Peter",
- "name": "Secret-Peter",
- "avatar_url": "https://avatars.githubusercontent.com/u/166921574?v=4",
- "profile": "https://github.com/Secret-Peter",
- "contributions": [
- "translation"
- ]
- },
- {
- "login": "szaumoor",
- "name": "Marcos C.R.",
- "avatar_url": "https://avatars.githubusercontent.com/u/78204388?v=4",
- "profile": "https://github.com/szaumoor",
- "contributions": [
- "ideas"
- ]
- },
- {
- "login": "charlymoon741",
- "name": "Carlos Ramos Luna",
- "avatar_url": "https://avatars.githubusercontent.com/u/62484941?v=4",
- "profile": "https://github.com/charlymoon741",
- "contributions": [
- "ideas"
- ]
}
- ]
+ ]
}
diff --git a/README.md b/README.md
index 92640b84..bf5c7cbf 100755
--- a/README.md
+++ b/README.md
@@ -291,7 +291,7 @@ Contributions to the YouTube Enhancer Extension are welcome! If you'd like to co
mist8kengas 🌍 💻 🐛 |
Nathan 🎨 💻 🌍 |
Commonly 🐛 |
- Eduardo Aznar 🌍 |
+ Eduardo Aznar 🌍 💻 |
Lamyergeier 🤔 |
Jackal Chan 🌍 |
livingflore 🌍 💻 |
@@ -306,8 +306,10 @@ Contributions to the YouTube Enhancer Extension are welcome! If you'd like to co
Secret-Peter 🌍 |
- Carlos Ramos Luna 🤔 |
Marcos C.R. 🤔 |
+ Carlos Ramos Luna 🤔 |
+ Mabra51 🤔 |
+ 앙시모사우루스 🌍 |
diff --git a/assets/translation context screenshots/Automatic Quality Settings/Quality_Fallback_Strategy.png b/assets/translation context screenshots/Automatic Quality Settings/Quality_Fallback_Strategy.png
new file mode 100644
index 00000000..78e34c5b
Binary files /dev/null and b/assets/translation context screenshots/Automatic Quality Settings/Quality_Fallback_Strategy.png differ
diff --git a/assets/translation context screenshots/Button Placement Settings/Button_Labels.png b/assets/translation context screenshots/Button Placement Settings/Button_Labels.png
index eab1a839..652e4458 100644
Binary files a/assets/translation context screenshots/Button Placement Settings/Button_Labels.png and b/assets/translation context screenshots/Button Placement Settings/Button_Labels.png differ
diff --git a/assets/translation context screenshots/Button Placement Settings/Button_Name_Fast_Forward_Button.png b/assets/translation context screenshots/Button Placement Settings/Button_Name_Fast_Forward_Button.png
new file mode 100644
index 00000000..c2dea9ad
Binary files /dev/null and b/assets/translation context screenshots/Button Placement Settings/Button_Name_Fast_Forward_Button.png differ
diff --git a/assets/translation context screenshots/Button Placement Settings/Button_Name_Hide_End_Screen_Cards_Button.png b/assets/translation context screenshots/Button Placement Settings/Button_Name_Hide_End_Screen_Cards_Button.png
new file mode 100644
index 00000000..9b6e9d88
Binary files /dev/null and b/assets/translation context screenshots/Button Placement Settings/Button_Name_Hide_End_Screen_Cards_Button.png differ
diff --git a/assets/translation context screenshots/Button Placement Settings/Button_Name_Rewind_Button.png b/assets/translation context screenshots/Button Placement Settings/Button_Name_Rewind_Button.png
new file mode 100644
index 00000000..0b182c95
Binary files /dev/null and b/assets/translation context screenshots/Button Placement Settings/Button_Name_Rewind_Button.png differ
diff --git a/assets/translation context screenshots/Forward-rewind Button Settings/Enable_Forward-rewind buttons.png b/assets/translation context screenshots/Forward-rewind Button Settings/Enable_Forward-rewind buttons.png
new file mode 100644
index 00000000..d60f868e
Binary files /dev/null and b/assets/translation context screenshots/Forward-rewind Button Settings/Enable_Forward-rewind buttons.png differ
diff --git a/assets/translation context screenshots/Forward-rewind Button Settings/Forward-rewind time.png b/assets/translation context screenshots/Forward-rewind Button Settings/Forward-rewind time.png
new file mode 100644
index 00000000..c000806d
Binary files /dev/null and b/assets/translation context screenshots/Forward-rewind Button Settings/Forward-rewind time.png differ
diff --git a/assets/translation context screenshots/Forward-rewind Button Settings/Title.png b/assets/translation context screenshots/Forward-rewind Button Settings/Title.png
new file mode 100644
index 00000000..fd4b6924
Binary files /dev/null and b/assets/translation context screenshots/Forward-rewind Button Settings/Title.png differ
diff --git a/assets/translation context screenshots/Miscellaneous Settings/Hide_End_Screen_Cards_Button.png b/assets/translation context screenshots/Miscellaneous Settings/Hide_End_Screen_Cards_Button.png
new file mode 100644
index 00000000..2cde1895
Binary files /dev/null and b/assets/translation context screenshots/Miscellaneous Settings/Hide_End_Screen_Cards_Button.png differ
diff --git a/assets/translation context screenshots/YouTube Page/Buttons/Hide_End_Screen_Cards_Button.png b/assets/translation context screenshots/YouTube Page/Buttons/Hide_End_Screen_Cards_Button.png
new file mode 100644
index 00000000..47450238
Binary files /dev/null and b/assets/translation context screenshots/YouTube Page/Buttons/Hide_End_Screen_Cards_Button.png differ
diff --git a/assets/translation context screenshots/YouTube Page/Buttons/Show_End_Screen_Cards_Button.png b/assets/translation context screenshots/YouTube Page/Buttons/Show_End_Screen_Cards_Button.png
new file mode 100644
index 00000000..fbba92f9
Binary files /dev/null and b/assets/translation context screenshots/YouTube Page/Buttons/Show_End_Screen_Cards_Button.png differ
diff --git a/assets/translation context screenshots/YouTube Page/Feature Menu/Feature_Menu.png b/assets/translation context screenshots/YouTube Page/Feature Menu/Feature_Menu.png
index c8ed5bfc..6fb7ceaa 100644
Binary files a/assets/translation context screenshots/YouTube Page/Feature Menu/Feature_Menu.png and b/assets/translation context screenshots/YouTube Page/Feature Menu/Feature_Menu.png differ
diff --git a/bun.lockb b/bun.lockb
index 118d0a1a..24b9c916 100644
Binary files a/bun.lockb and b/bun.lockb differ
diff --git a/nodemon.json b/nodemon.json
index ae3ce12b..5b5f49b1 100644
--- a/nodemon.json
+++ b/nodemon.json
@@ -2,8 +2,8 @@
"env": {
"__DEV__": "true"
},
- "watch": ["src", "utils", "vite.config.ts", "public", "public/locales"],
+ "exec": "concurrently \"vite build\" \"ts-json-as-const public/locales/en-US.json\" \"prettier --write public/locales/en-US.json.d.ts\" \"eslint --fix public/locales/en-US.json.d.ts\" \"eslint --fix src/i18n/constants.ts\" \"prettier --write src/i18n/constants.ts\"",
"ext": "ts,tsx,css,html,json",
- "ignore": ["src/**/*.spec.ts", "public/locales/en-US.json.d.ts"],
- "exec": "concurrently \"vite build\" \"ts-json-as-const public/locales/en-US.json\" \"prettier --write public/locales/en-US.json.d.ts\" \"eslint --fix public/locales/en-US.json.d.ts\""
+ "ignore": ["src/**/*.spec.ts", "public/locales/en-US.json.d.ts", "src/i18n/constants.ts"],
+ "watch": ["src", "utils", "vite.config.ts", "public", "public/locales"]
}
diff --git a/package-lock.json b/package-lock.json
index b29b000c..5f624e43 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "youtube-enhancer",
- "version": "1.24.2",
+ "version": "1.25.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "youtube-enhancer",
- "version": "1.24.2",
+ "version": "1.25.0",
"license": "MIT",
"dependencies": {
"@formkit/auto-animate": "^0.8.1",
@@ -14,11 +14,12 @@
"@tanstack/react-query": "^5.18.0",
"dotenv": "^16.3.1",
"i18next": "^23.7.3",
- "monaco-editor": "^0.48.0",
+ "monaco-editor": "^0.49.0",
"react": "^18.2.0",
"react-colorful": "^5.6.1",
"react-dom": "^18.2.0",
"react-icons": "^5.0.1",
+ "safe-units": "^2.0.1",
"tailwindcss-multi": "^0.4.0",
"use-debouncy": "^5.0.1",
"vite-plugin-css-injected-by-js": "^3.3.0",
@@ -60,7 +61,7 @@
"nodemon": "^3.0.1",
"postcss": "^8.4.31",
"prettier": "^3.0.3",
- "semantic-release": "^23.0.0",
+ "semantic-release": "^24.0.0",
"tailwind-merge": "^2.0.0",
"tailwindcss": "^3.3.6",
"ts-json-as-const": "^1.0.7",
@@ -261,10 +262,340 @@
"node": ">=10.0.0"
}
},
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
+ "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
+ "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
+ "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
+ "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
+ "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
+ "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
+ "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
+ "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
+ "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
+ "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
+ "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+ "cpu": [
+ "loong64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
+ "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
+ "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
+ "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
+ "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
+ "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
+ "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
+ "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+ "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
+ "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/@esbuild/win32-x64": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
- "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
+ "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
"cpu": [
"x64"
],
@@ -776,10 +1107,154 @@
"node": ">=12"
}
},
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.16.4.tgz",
+ "integrity": "sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.16.4.tgz",
+ "integrity": "sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.16.4.tgz",
+ "integrity": "sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.16.4.tgz",
+ "integrity": "sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.16.4.tgz",
+ "integrity": "sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.16.4.tgz",
+ "integrity": "sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg==",
+ "cpu": [
+ "arm"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.16.4.tgz",
+ "integrity": "sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.16.4.tgz",
+ "integrity": "sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.16.4.tgz",
+ "integrity": "sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.16.4.tgz",
+ "integrity": "sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng==",
+ "cpu": [
+ "riscv64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.16.4.tgz",
+ "integrity": "sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
"node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.18.0",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz",
+ "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.16.4",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.16.4.tgz",
- "integrity": "sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA==",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.16.4.tgz",
+ "integrity": "sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA==",
"cpu": [
"x64"
],
@@ -788,6 +1263,30 @@
"linux"
]
},
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.16.4.tgz",
+ "integrity": "sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.16.4.tgz",
+ "integrity": "sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w==",
+ "cpu": [
+ "ia32"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
"node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.16.4",
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.16.4.tgz",
@@ -800,6 +1299,12 @@
"win32"
]
},
+ "node_modules/@sec-ant/readable-stream": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
+ "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
+ "dev": true
+ },
"node_modules/@semantic-release/changelog": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz",
@@ -819,14 +1324,15 @@
}
},
"node_modules/@semantic-release/commit-analyzer": {
- "version": "12.0.0",
- "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-12.0.0.tgz",
- "integrity": "sha512-qG+md5gdes+xa8zP7lIo1fWE17zRdO8yMCaxh9lyL65TQleoSv8WHHOqRURfghTytUh+NpkSyBprQ5hrkxOKVQ==",
+ "version": "13.0.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.0.tgz",
+ "integrity": "sha512-KtXWczvTAB1ZFZ6B4O+w8HkfYm/OgQb1dUGNFZtDgQ0csggrmkq8sTxhd+lwGF8kMb59/RnG9o4Tn7M/I8dQ9Q==",
"dev": true,
"dependencies": {
- "conventional-changelog-angular": "^7.0.0",
- "conventional-commits-filter": "^4.0.0",
- "conventional-commits-parser": "^5.0.0",
+ "conventional-changelog-angular": "^8.0.0",
+ "conventional-changelog-writer": "^8.0.0",
+ "conventional-commits-filter": "^5.0.0",
+ "conventional-commits-parser": "^6.0.0",
"debug": "^4.0.0",
"import-from-esm": "^1.0.3",
"lodash-es": "^4.17.21",
@@ -1254,15 +1760,15 @@
}
},
"node_modules/@semantic-release/release-notes-generator": {
- "version": "13.0.0",
- "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-13.0.0.tgz",
- "integrity": "sha512-LEeZWb340keMYuREMyxrODPXJJ0JOL8D/mCl74B4LdzbxhtXV2LrPN2QBEcGJrlQhoqLO0RhxQb6masHytKw+A==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.0.tgz",
+ "integrity": "sha512-XRxwr4e46yUMaXT8KGFBlRJlp5+NOMaufdq8qaEWlcJ7cT4Pn/iRmDGglZ2TgDe6GVP+u1boXFEnSs7N8Yzhng==",
"dev": true,
"dependencies": {
- "conventional-changelog-angular": "^7.0.0",
- "conventional-changelog-writer": "^7.0.0",
- "conventional-commits-filter": "^4.0.0",
- "conventional-commits-parser": "^5.0.0",
+ "conventional-changelog-angular": "^8.0.0",
+ "conventional-changelog-writer": "^8.0.0",
+ "conventional-commits-filter": "^5.0.0",
+ "conventional-commits-parser": "^6.0.0",
"debug": "^4.0.0",
"get-stream": "^7.0.0",
"import-from-esm": "^1.0.3",
@@ -1523,9 +2029,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "20.12.7",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz",
- "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==",
+ "version": "20.14.8",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.8.tgz",
+ "integrity": "sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA==",
"dependencies": {
"undici-types": "~5.26.4"
}
@@ -1543,9 +2049,9 @@
"dev": true
},
"node_modules/@types/react": {
- "version": "18.2.79",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz",
- "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==",
+ "version": "18.3.3",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz",
+ "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==",
"dev": true,
"dependencies": {
"@types/prop-types": "*",
@@ -1589,21 +2095,19 @@
"dev": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz",
- "integrity": "sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.0.tgz",
+ "integrity": "sha512-FX1X6AF0w8MdVFLSdqwqN/me2hyhuQg4ykN6ZpVhh1ij/80pTvDKclX1sZB9iqex8SjQfVhwMKs3JtnnMLzG9w==",
"dev": true,
"dependencies": {
"@eslint-community/regexpp": "^4.10.0",
- "@typescript-eslint/scope-manager": "7.8.0",
- "@typescript-eslint/type-utils": "7.8.0",
- "@typescript-eslint/utils": "7.8.0",
- "@typescript-eslint/visitor-keys": "7.8.0",
- "debug": "^4.3.4",
+ "@typescript-eslint/scope-manager": "7.13.0",
+ "@typescript-eslint/type-utils": "7.13.0",
+ "@typescript-eslint/utils": "7.13.0",
+ "@typescript-eslint/visitor-keys": "7.13.0",
"graphemer": "^1.4.0",
"ignore": "^5.3.1",
"natural-compare": "^1.4.0",
- "semver": "^7.6.0",
"ts-api-utils": "^1.3.0"
},
"engines": {
@@ -1624,13 +2128,13 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz",
- "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.0.tgz",
+ "integrity": "sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "7.8.0",
- "@typescript-eslint/visitor-keys": "7.8.0"
+ "@typescript-eslint/types": "7.13.0",
+ "@typescript-eslint/visitor-keys": "7.13.0"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -1641,9 +2145,9 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz",
- "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.0.tgz",
+ "integrity": "sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==",
"dev": true,
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -1654,12 +2158,12 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz",
- "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.0.tgz",
+ "integrity": "sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "7.8.0",
+ "@typescript-eslint/types": "7.13.0",
"eslint-visitor-keys": "^3.4.3"
},
"engines": {
@@ -1671,15 +2175,15 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz",
- "integrity": "sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==",
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.9.0.tgz",
+ "integrity": "sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "7.8.0",
- "@typescript-eslint/types": "7.8.0",
- "@typescript-eslint/typescript-estree": "7.8.0",
- "@typescript-eslint/visitor-keys": "7.8.0",
+ "@typescript-eslint/scope-manager": "7.9.0",
+ "@typescript-eslint/types": "7.9.0",
+ "@typescript-eslint/typescript-estree": "7.9.0",
+ "@typescript-eslint/visitor-keys": "7.9.0",
"debug": "^4.3.4"
},
"engines": {
@@ -1698,28 +2202,15 @@
}
}
},
- "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz",
- "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==",
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.9.0.tgz",
+ "integrity": "sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "7.8.0",
- "@typescript-eslint/visitor-keys": "7.8.0"
- },
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
+ "@typescript-eslint/types": "7.9.0",
+ "@typescript-eslint/visitor-keys": "7.9.0"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz",
- "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==",
- "dev": true,
"engines": {
"node": "^18.18.0 || >=20.0.0"
},
@@ -1728,19 +2219,15 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz",
- "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==",
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.0.tgz",
+ "integrity": "sha512-xMEtMzxq9eRkZy48XuxlBFzpVMDurUAfDu5Rz16GouAtXm0TaAoTFzqWUFPPuQYXI/CDaH/Bgx/fk/84t/Bc9A==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "7.8.0",
- "@typescript-eslint/visitor-keys": "7.8.0",
+ "@typescript-eslint/typescript-estree": "7.13.0",
+ "@typescript-eslint/utils": "7.13.0",
"debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "minimatch": "^9.0.4",
- "semver": "^7.6.0",
"ts-api-utils": "^1.3.0"
},
"engines": {
@@ -1750,21 +2237,20 @@
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
+ "peerDependencies": {
+ "eslint": "^8.56.0"
+ },
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
- "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz",
- "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==",
+ "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.0.tgz",
+ "integrity": "sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==",
"dev": true,
- "dependencies": {
- "@typescript-eslint/types": "7.8.0",
- "eslint-visitor-keys": "^3.4.3"
- },
"engines": {
"node": "^18.18.0 || >=20.0.0"
},
@@ -1773,15 +2259,19 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@typescript-eslint/type-utils": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz",
- "integrity": "sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==",
+ "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.0.tgz",
+ "integrity": "sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "7.8.0",
- "@typescript-eslint/utils": "7.8.0",
+ "@typescript-eslint/types": "7.13.0",
+ "@typescript-eslint/visitor-keys": "7.13.0",
"debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
"ts-api-utils": "^1.3.0"
},
"engines": {
@@ -1791,19 +2281,33 @@
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
- "peerDependencies": {
- "eslint": "^8.56.0"
- },
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
- "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz",
- "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==",
+ "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.0.tgz",
+ "integrity": "sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.13.0",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.9.0.tgz",
+ "integrity": "sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==",
"dev": true,
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -1813,14 +2317,14 @@
"url": "https://opencollective.com/typescript-eslint"
}
},
- "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz",
- "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==",
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.9.0.tgz",
+ "integrity": "sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "7.8.0",
- "@typescript-eslint/visitor-keys": "7.8.0",
+ "@typescript-eslint/types": "7.9.0",
+ "@typescript-eslint/visitor-keys": "7.9.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -1841,36 +2345,16 @@
}
}
},
- "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz",
- "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "7.8.0",
- "eslint-visitor-keys": "^3.4.3"
- },
- "engines": {
- "node": "^18.18.0 || >=20.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
"node_modules/@typescript-eslint/utils": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz",
- "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.0.tgz",
+ "integrity": "sha512-jceD8RgdKORVnB4Y6BqasfIkFhl4pajB1wVxrF4akxD2QPM8GNYjgGwEzYS+437ewlqqrg7Dw+6dhdpjMpeBFQ==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.4.0",
- "@types/json-schema": "^7.0.15",
- "@types/semver": "^7.5.8",
- "@typescript-eslint/scope-manager": "7.8.0",
- "@typescript-eslint/types": "7.8.0",
- "@typescript-eslint/typescript-estree": "7.8.0",
- "semver": "^7.6.0"
+ "@typescript-eslint/scope-manager": "7.13.0",
+ "@typescript-eslint/types": "7.13.0",
+ "@typescript-eslint/typescript-estree": "7.13.0"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -1884,13 +2368,13 @@
}
},
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz",
- "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.0.tgz",
+ "integrity": "sha512-ZrMCe1R6a01T94ilV13egvcnvVJ1pxShkE0+NDjDzH4nvG1wXpwsVI5bZCvE7AEDH1mXEx5tJSVR68bLgG7Dng==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "7.8.0",
- "@typescript-eslint/visitor-keys": "7.8.0"
+ "@typescript-eslint/types": "7.13.0",
+ "@typescript-eslint/visitor-keys": "7.13.0"
},
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -1901,9 +2385,9 @@
}
},
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz",
- "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.0.tgz",
+ "integrity": "sha512-QWuwm9wcGMAuTsxP+qz6LBBd3Uq8I5Nv8xb0mk54jmNoCyDspnMvVsOxI6IsMmway5d1S9Su2+sCKv1st2l6eA==",
"dev": true,
"engines": {
"node": "^18.18.0 || >=20.0.0"
@@ -1914,13 +2398,13 @@
}
},
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz",
- "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.0.tgz",
+ "integrity": "sha512-cAvBvUoobaoIcoqox1YatXOnSl3gx92rCZoMRPzMNisDiM12siGilSM4+dJAekuuHTibI2hVC2fYK79iSFvWjw==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "7.8.0",
- "@typescript-eslint/visitor-keys": "7.8.0",
+ "@typescript-eslint/types": "7.13.0",
+ "@typescript-eslint/visitor-keys": "7.13.0",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -1942,12 +2426,29 @@
}
},
"node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
- "version": "7.8.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz",
- "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.0.tgz",
+ "integrity": "sha512-nxn+dozQx+MK61nn/JP+M4eCkHDSxSLDpgE3WcQo0+fkjEolnaB5jswvIKC4K56By8MMgIho7f1PVxERHEo8rw==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "7.8.0",
+ "@typescript-eslint/types": "7.13.0",
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^18.18.0 || >=20.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.9.0.tgz",
+ "integrity": "sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "7.9.0",
"eslint-visitor-keys": "^3.4.3"
},
"engines": {
@@ -2519,16 +3020,19 @@
}
},
"node_modules/array.prototype.tosorted": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz",
- "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz",
+ "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.5",
+ "call-bind": "^1.0.7",
"define-properties": "^1.2.1",
- "es-abstract": "^1.22.3",
- "es-errors": "^1.1.0",
+ "es-abstract": "^1.23.3",
+ "es-errors": "^1.3.0",
"es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
}
},
"node_modules/arraybuffer.prototype.slice": {
@@ -2708,12 +3212,12 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -3240,62 +3744,58 @@
}
},
"node_modules/conventional-changelog-angular": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz",
- "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz",
+ "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==",
"dev": true,
"dependencies": {
"compare-func": "^2.0.0"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/conventional-changelog-writer": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz",
- "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz",
+ "integrity": "sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==",
"dev": true,
"dependencies": {
- "conventional-commits-filter": "^4.0.0",
+ "@types/semver": "^7.5.5",
+ "conventional-commits-filter": "^5.0.0",
"handlebars": "^4.7.7",
- "json-stringify-safe": "^5.0.1",
- "meow": "^12.0.1",
- "semver": "^7.5.2",
- "split2": "^4.0.0"
+ "meow": "^13.0.0",
+ "semver": "^7.5.2"
},
"bin": {
- "conventional-changelog-writer": "cli.mjs"
+ "conventional-changelog-writer": "dist/cli/index.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/conventional-commits-filter": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz",
- "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz",
+ "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==",
"dev": true,
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/conventional-commits-parser": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz",
- "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz",
+ "integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==",
"dev": true,
"dependencies": {
- "is-text-path": "^2.0.0",
- "JSONStream": "^1.3.5",
- "meow": "^12.0.1",
- "split2": "^4.0.0"
+ "meow": "^13.0.0"
},
"bin": {
- "conventional-commits-parser": "cli.mjs"
+ "conventional-commits-parser": "dist/cli/index.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
}
},
"node_modules/convert-hrtime": {
@@ -4067,9 +4567,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
- "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
+ "version": "0.21.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
+ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
"hasInstallScript": true,
"bin": {
"esbuild": "bin/esbuild"
@@ -4078,29 +4578,29 @@
"node": ">=12"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.20.2",
- "@esbuild/android-arm": "0.20.2",
- "@esbuild/android-arm64": "0.20.2",
- "@esbuild/android-x64": "0.20.2",
- "@esbuild/darwin-arm64": "0.20.2",
- "@esbuild/darwin-x64": "0.20.2",
- "@esbuild/freebsd-arm64": "0.20.2",
- "@esbuild/freebsd-x64": "0.20.2",
- "@esbuild/linux-arm": "0.20.2",
- "@esbuild/linux-arm64": "0.20.2",
- "@esbuild/linux-ia32": "0.20.2",
- "@esbuild/linux-loong64": "0.20.2",
- "@esbuild/linux-mips64el": "0.20.2",
- "@esbuild/linux-ppc64": "0.20.2",
- "@esbuild/linux-riscv64": "0.20.2",
- "@esbuild/linux-s390x": "0.20.2",
- "@esbuild/linux-x64": "0.20.2",
- "@esbuild/netbsd-x64": "0.20.2",
- "@esbuild/openbsd-x64": "0.20.2",
- "@esbuild/sunos-x64": "0.20.2",
- "@esbuild/win32-arm64": "0.20.2",
- "@esbuild/win32-ia32": "0.20.2",
- "@esbuild/win32-x64": "0.20.2"
+ "@esbuild/aix-ppc64": "0.21.5",
+ "@esbuild/android-arm": "0.21.5",
+ "@esbuild/android-arm64": "0.21.5",
+ "@esbuild/android-x64": "0.21.5",
+ "@esbuild/darwin-arm64": "0.21.5",
+ "@esbuild/darwin-x64": "0.21.5",
+ "@esbuild/freebsd-arm64": "0.21.5",
+ "@esbuild/freebsd-x64": "0.21.5",
+ "@esbuild/linux-arm": "0.21.5",
+ "@esbuild/linux-arm64": "0.21.5",
+ "@esbuild/linux-ia32": "0.21.5",
+ "@esbuild/linux-loong64": "0.21.5",
+ "@esbuild/linux-mips64el": "0.21.5",
+ "@esbuild/linux-ppc64": "0.21.5",
+ "@esbuild/linux-riscv64": "0.21.5",
+ "@esbuild/linux-s390x": "0.21.5",
+ "@esbuild/linux-x64": "0.21.5",
+ "@esbuild/netbsd-x64": "0.21.5",
+ "@esbuild/openbsd-x64": "0.21.5",
+ "@esbuild/sunos-x64": "0.21.5",
+ "@esbuild/win32-arm64": "0.21.5",
+ "@esbuild/win32-ia32": "0.21.5",
+ "@esbuild/win32-x64": "0.21.5"
}
},
"node_modules/escalade": {
@@ -4447,41 +4947,44 @@
}
},
"node_modules/eslint-plugin-promise": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz",
- "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.2.0.tgz",
+ "integrity": "sha512-QmAqwizauvnKOlifxyDj2ObfULpHQawlg/zQdgEixur9vl0CvZGv/LCJV2rtj3210QCoeGBzVMfMXqGAOr/4fA==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
"peerDependencies": {
- "eslint": "^7.0.0 || ^8.0.0"
+ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
}
},
"node_modules/eslint-plugin-react": {
- "version": "7.34.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz",
- "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==",
+ "version": "7.34.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz",
+ "integrity": "sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA==",
"dev": true,
"dependencies": {
- "array-includes": "^3.1.7",
- "array.prototype.findlast": "^1.2.4",
+ "array-includes": "^3.1.8",
+ "array.prototype.findlast": "^1.2.5",
"array.prototype.flatmap": "^1.3.2",
"array.prototype.toreversed": "^1.1.2",
- "array.prototype.tosorted": "^1.1.3",
+ "array.prototype.tosorted": "^1.1.4",
"doctrine": "^2.1.0",
- "es-iterator-helpers": "^1.0.17",
+ "es-iterator-helpers": "^1.0.19",
"estraverse": "^5.3.0",
"jsx-ast-utils": "^2.4.1 || ^3.0.0",
"minimatch": "^3.1.2",
- "object.entries": "^1.1.7",
- "object.fromentries": "^2.0.7",
- "object.hasown": "^1.1.3",
- "object.values": "^1.1.7",
+ "object.entries": "^1.1.8",
+ "object.fromentries": "^2.0.8",
+ "object.hasown": "^1.1.4",
+ "object.values": "^1.2.0",
"prop-types": "^15.8.1",
"resolve": "^2.0.0-next.5",
"semver": "^6.3.1",
- "string.prototype.matchall": "^4.0.10"
+ "string.prototype.matchall": "^4.0.11"
},
"engines": {
"node": ">=4"
@@ -4563,16 +5066,16 @@
}
},
"node_modules/eslint-plugin-tailwindcss": {
- "version": "3.15.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.15.1.tgz",
- "integrity": "sha512-4RXRMIaMG07C2TBEW1k0VM4+dDazz1kxcZhkK4zirvmHGZTA4jnlSO2kq5mamuSPi+Wo17dh2SlC8IyFBuCd7Q==",
+ "version": "3.17.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.17.0.tgz",
+ "integrity": "sha512-Ofl7tNh57a3W8BKHstKZSkD2gSCEkw54ycwZ958IK9zUR8TiNYdp8b0WGoLWLeyOAbeF1VPVJFBnlkJeIM2kVg==",
"dev": true,
"dependencies": {
"fast-glob": "^3.2.5",
"postcss": "^8.4.4"
},
"engines": {
- "node": ">=12.13.0"
+ "node": ">=14.0.0"
},
"peerDependencies": {
"tailwindcss": "^3.4.0"
@@ -4826,9 +5329,9 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -5025,6 +5528,19 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -5445,9 +5961,9 @@
}
},
"node_modules/i18next": {
- "version": "23.11.4",
- "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.4.tgz",
- "integrity": "sha512-CCUjtd5TfaCl+mLUzAA0uPSN+AVn4fP/kWCYt/hocPUwusTpMVczdrRyOBUwk6N05iH40qiKx6q1DoNJtBIwdg==",
+ "version": "23.11.5",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.5.tgz",
+ "integrity": "sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==",
"funding": [
{
"type": "individual",
@@ -5549,9 +6065,9 @@
}
},
"node_modules/import-meta-resolve": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz",
- "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz",
+ "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==",
"dev": true,
"funding": {
"type": "github",
@@ -5901,6 +6417,18 @@
"node": ">=8"
}
},
+ "node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
@@ -6009,18 +6537,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-text-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz",
- "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==",
- "dev": true,
- "dependencies": {
- "text-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-typed-array": {
"version": "1.1.13",
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz",
@@ -6242,12 +6758,6 @@
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
- "dev": true
- },
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -6272,31 +6782,6 @@
"graceful-fs": "^4.1.6"
}
},
- "node_modules/jsonparse": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
- "dev": true,
- "engines": [
- "node >= 0.2.0"
- ]
- },
- "node_modules/JSONStream": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
- "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
- "dev": true,
- "dependencies": {
- "jsonparse": "^1.2.0",
- "through": ">=2.2.7 <3"
- },
- "bin": {
- "JSONStream": "bin.js"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/jsx-ast-utils": {
"version": "3.3.5",
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
@@ -6593,12 +7078,12 @@
}
},
"node_modules/meow": {
- "version": "12.1.1",
- "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz",
- "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
+ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
"dev": true,
"engines": {
- "node": ">=16.10"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -6708,9 +7193,9 @@
}
},
"node_modules/monaco-editor": {
- "version": "0.48.0",
- "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.48.0.tgz",
- "integrity": "sha512-goSDElNqFfw7iDHMg8WDATkfcyeLTNpBHQpO8incK6p5qZt5G/1j41X0xdGzpIkGojGXM+QiRQyLjnfDVvrpwA=="
+ "version": "0.49.0",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.49.0.tgz",
+ "integrity": "sha512-2I8/T3X/hLxB2oPHgqcNYUVdA/ZEFShT7IAujifIPMfKkNbLOqY8XCoyHCXrsdjb36dW9MwoTwBCFpXKMwNwaQ=="
},
"node_modules/ms": {
"version": "2.1.2",
@@ -6790,9 +7275,9 @@
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
},
"node_modules/nodemon": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.0.tgz",
- "integrity": "sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA==",
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.4.tgz",
+ "integrity": "sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ==",
"dev": true,
"dependencies": {
"chokidar": "^3.5.2",
@@ -10034,6 +10519,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/parse-ms": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
+ "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/parse5": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz",
@@ -10450,9 +10947,9 @@
}
},
"node_modules/prettier": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",
- "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz",
+ "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==",
"dev": true,
"bin": {
"prettier": "bin/prettier.cjs"
@@ -10476,6 +10973,21 @@
"node": ">=6.0.0"
}
},
+ "node_modules/pretty-ms": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.0.0.tgz",
+ "integrity": "sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==",
+ "dev": true,
+ "dependencies": {
+ "parse-ms": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
@@ -10613,9 +11125,9 @@
}
},
"node_modules/react-icons": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.1.0.tgz",
- "integrity": "sha512-D3zug1270S4hbSlIRJ0CUS97QE1yNNKDjzQe3HqY0aefp2CBn9VgzgES27sRR2gOvFK+0CNx/BW0ggOESp6fqQ==",
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.2.1.tgz",
+ "integrity": "sha512-zdbW5GstTzXaVKvGSyTaBalt7HSfuK5ovrzlpyiWHAFXndXTdd/1hdDHI4xBM1Mn7YriT6aqESucFl9kEXzrdw==",
"peerDependencies": {
"react": "*"
}
@@ -10711,9 +11223,9 @@
}
},
"node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "4.17.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.17.0.tgz",
- "integrity": "sha512-9flrz1zkfLRH3jO3bLflmTxryzKMxVa7841VeMgBaNQGY6vH4RCcpN/sQLB7mQQYh1GZ5utT2deypMuCy4yicw==",
+ "version": "4.18.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.3.tgz",
+ "integrity": "sha512-Q08/0IrpvM+NMY9PA2rti9Jb+JejTddwmwmVQGskAlhtcrw1wsRzoR6ode6mR+OAabNa75w/dxedSUY2mlphaQ==",
"dev": true,
"engines": {
"node": ">=16"
@@ -11021,6 +11533,18 @@
"fsevents": "~2.3.2"
}
},
+ "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.16.4",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.16.4.tgz",
+ "integrity": "sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -11107,6 +11631,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/safe-units": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/safe-units/-/safe-units-2.0.1.tgz",
+ "integrity": "sha512-vwQl9r9J8O5Aj2RLW2H9qIMszs6MFHuNlD1S86E+AsOFjqZWlD76+sfwMcBT0DIpfTVtgm7Q1huM+iI3o20DYw=="
+ },
"node_modules/scheduler": {
"version": "0.23.2",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
@@ -11133,21 +11662,21 @@
}
},
"node_modules/semantic-release": {
- "version": "23.0.8",
- "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-23.0.8.tgz",
- "integrity": "sha512-yZkuWcTTfh5h/DrR4Q4QvJSARJdb6wjwn/sN0qKMYEkvwaVFek8YWfrgtL8oWaRdl0fLte0Y1wWMzLbwoaII1g==",
+ "version": "24.0.0",
+ "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.0.0.tgz",
+ "integrity": "sha512-v46CRPw+9eI3ZuYGF2oAjqPqsfbnfFTwLBgQsv/lch4goD09ytwOTESMN4QIrx/wPLxUGey60/NMx+ANQtWRsA==",
"dev": true,
"dependencies": {
- "@semantic-release/commit-analyzer": "^12.0.0",
+ "@semantic-release/commit-analyzer": "^13.0.0-beta.1",
"@semantic-release/error": "^4.0.0",
"@semantic-release/github": "^10.0.0",
"@semantic-release/npm": "^12.0.0",
- "@semantic-release/release-notes-generator": "^13.0.0",
+ "@semantic-release/release-notes-generator": "^14.0.0-beta.1",
"aggregate-error": "^5.0.0",
"cosmiconfig": "^9.0.0",
"debug": "^4.0.0",
"env-ci": "^11.0.0",
- "execa": "^8.0.0",
+ "execa": "^9.0.0",
"figures": "^6.0.0",
"find-versions": "^6.0.0",
"get-stream": "^6.0.0",
@@ -11184,6 +11713,18 @@
"node": ">=18"
}
},
+ "node_modules/semantic-release/node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/semantic-release/node_modules/aggregate-error": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
@@ -11228,47 +11769,54 @@
}
},
"node_modules/semantic-release/node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+ "version": "9.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.1.0.tgz",
+ "integrity": "sha512-lSgHc4Elo2m6bUDhc3Hl/VxvUDJdQWI40RZ4KMY9bKRc+hgMOT7II/JjbNDhI8VnMtrCb7U/fhpJIkLORZozWw==",
"dev": true,
"dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
"cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^7.0.0",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^5.2.0",
+ "pretty-ms": "^9.0.0",
"signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.0.0"
},
"engines": {
- "node": ">=16.17"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"node_modules/semantic-release/node_modules/execa/node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
"dev": true,
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
"engines": {
- "node": ">=16"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semantic-release/node_modules/human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-7.0.0.tgz",
+ "integrity": "sha512-74kytxOUSvNbjrT9KisAbaTZ/eJwD/LrbM/kh5j0IhPuJzwuA19dWvniFGwBzN9rVjg+O/e+F310PjObDXS+9Q==",
"dev": true,
"engines": {
- "node": ">=16.17.0"
+ "node": ">=18.18.0"
}
},
"node_modules/semantic-release/node_modules/indent-string": {
@@ -11284,24 +11832,12 @@
}
},
"node_modules/semantic-release/node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/semantic-release/node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
"dev": true,
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -11322,21 +11858,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/semantic-release/node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/semantic-release/node_modules/p-reduce": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz",
@@ -11383,12 +11904,12 @@
}
},
"node_modules/semantic-release/node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
+ "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
"dev": true,
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -11750,15 +12271,6 @@
"integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==",
"dev": true
},
- "node_modules/split2": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
- "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
- "dev": true,
- "engines": {
- "node": ">= 10.x"
- }
- },
"node_modules/state-local": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz",
@@ -12171,9 +12683,9 @@
}
},
"node_modules/tailwindcss": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz",
- "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==",
+ "version": "3.4.4",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz",
+ "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==",
"dev": true,
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
@@ -12208,9 +12720,9 @@
}
},
"node_modules/tailwindcss-multi": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/tailwindcss-multi/-/tailwindcss-multi-0.4.1.tgz",
- "integrity": "sha512-SCHG5J24MUJFRRTJosc557tJuXg5B8eB+HdXzDdIQPWxILRzpsjF2aJL9pYamQCrOZRBXkgmArVet0oHllL81A==",
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/tailwindcss-multi/-/tailwindcss-multi-0.4.6.tgz",
+ "integrity": "sha512-Bn9yLrMkeYFrJjRYuuTfqT9ibm6U2qnTwlIKYchWyGX3qgL+1+NN4JgiHJG1qrR4QQeU28eCl8sMSBobdzijvQ==",
"dependencies": {
"@types/node": "^20.4.1"
}
@@ -12340,18 +12852,6 @@
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
},
- "node_modules/text-extensions": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz",
- "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -12379,12 +12879,6 @@
"node": ">=0.8"
}
},
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
- },
"node_modules/through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
@@ -12908,11 +13402,11 @@
}
},
"node_modules/vite": {
- "version": "5.2.10",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.10.tgz",
- "integrity": "sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz",
+ "integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==",
"dependencies": {
- "esbuild": "^0.20.1",
+ "esbuild": "^0.21.3",
"postcss": "^8.4.38",
"rollup": "^4.13.0"
},
@@ -13437,6 +13931,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/yoctocolors": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.0.2.tgz",
+ "integrity": "sha512-Ct97huExsu7cWeEjmrXlofevF8CvzUglJ4iGUet5B8xn1oumtAZBpHU4GzYuoE6PVqcZ5hghtBrSlhwHuR1Jmw==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/zip-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz",
@@ -13452,9 +13958,9 @@
}
},
"node_modules/zod": {
- "version": "3.23.4",
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.4.tgz",
- "integrity": "sha512-/AtWOKbBgjzEYYQRNfoGKHObgfAZag6qUJX1VbHo2PRBgS+wfWagEY2mizjfyAPcGesrJOcx/wcl0L9WnVrHFw==",
+ "version": "3.23.8",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
+ "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
diff --git a/package.json b/package.json
index b9955524..a28235e2 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,7 @@
"url": "https://github.com/YouTube-Enhancer/extension.git"
},
"scripts": {
- "build": "vite build",
+ "build": "concurrently \"vite build\" \"eslint --fix src/i18n/constants.ts\" \"prettier --write src/i18n/constants.ts\"",
"dev": "nodemon",
"format": "prettier --write .",
"lint": "eslint .",
@@ -29,11 +29,12 @@
"@tanstack/react-query": "^5.18.0",
"dotenv": "^16.3.1",
"i18next": "^23.7.3",
- "monaco-editor": "^0.48.0",
+ "monaco-editor": "^0.49.0",
"react": "^18.2.0",
"react-colorful": "^5.6.1",
"react-dom": "^18.2.0",
"react-icons": "^5.0.1",
+ "safe-units": "^2.0.1",
"tailwindcss-multi": "^0.4.0",
"use-debouncy": "^5.0.1",
"vite-plugin-css-injected-by-js": "^3.3.0",
@@ -75,7 +76,7 @@
"nodemon": "^3.0.1",
"postcss": "^8.4.31",
"prettier": "^3.0.3",
- "semantic-release": "^23.0.0",
+ "semantic-release": "^24.0.0",
"tailwind-merge": "^2.0.0",
"tailwindcss": "^3.3.6",
"ts-json-as-const": "^1.0.7",
@@ -85,4 +86,4 @@
"zod": "^3.22.4",
"zod-error": "^1.5.0"
}
-}
\ No newline at end of file
+}
diff --git a/public/locales/ca-ES.json b/public/locales/ca-ES.json
index 521fe736..9e21dc4e 100644
--- a/public/locales/ca-ES.json
+++ b/public/locales/ca-ES.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Automatic quality adjustment",
"title": "Automatically adjusts the video quality to the selected level."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Player quality",
"title": "The quality to set the video to"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Loop button",
"maximizePlayerButton": "Maximize button",
"openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
"screenshotButton": "Screenshot button",
"volumeBoostButton": "Volume Boost button"
},
@@ -182,6 +214,17 @@
"title": "Feature menu settings"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Settings successfully exported",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Hide scrollbar",
"title": "Hides the pages scrollbar"
@@ -410,6 +461,9 @@
},
"title": "Scroll wheel volume control settings"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/cs-CZ.json b/public/locales/cs-CZ.json
index ecd841e9..6ca54a7e 100644
--- a/public/locales/cs-CZ.json
+++ b/public/locales/cs-CZ.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Automatic quality adjustment",
"title": "Automatically adjusts the video quality to the selected level."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Player quality",
"title": "The quality to set the video to"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Loop button",
"maximizePlayerButton": "Maximize button",
"openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
"screenshotButton": "Screenshot button",
"volumeBoostButton": "Volume Boost button"
},
@@ -182,6 +214,17 @@
"title": "Feature menu settings"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Settings successfully exported",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Hide scrollbar",
"title": "Hides the pages scrollbar"
@@ -410,6 +461,9 @@
},
"title": "Scroll wheel volume control settings"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/de-DE.json b/public/locales/de-DE.json
index 3d650f50..d181e03d 100644
--- a/public/locales/de-DE.json
+++ b/public/locales/de-DE.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Automatische Qualitätsanpassung",
"title": "Die Videoqualität wird automatisch auf die ausgewählte Qualität gestellt."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Video-Qualität",
"title": "Die Qualität auf die das Video gestellt werden soll"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Loop button",
"maximizePlayerButton": "Maximize button",
"openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
"screenshotButton": "Screenshot button",
"volumeBoostButton": "Volume Boost button"
},
@@ -182,6 +214,17 @@
"title": "Feature menu settings"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Einstellungen erfolgreich exportiert",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Scrollbar ausblenden",
"title": "Versteckt die Scrollleiste"
@@ -410,6 +461,9 @@
},
"title": "Lautstärke durch Mausrad ändern"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/en-GB.json b/public/locales/en-GB.json
index 8760b6b0..a4867adc 100644
--- a/public/locales/en-GB.json
+++ b/public/locales/en-GB.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Automatic quality adjustment",
"title": "Automatically adjusts the video quality to the selected level."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Player quality",
"title": "The quality to set the video to"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Loop button",
"maximizePlayerButton": "Maximize button",
"openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
"screenshotButton": "Screenshot button",
"volumeBoostButton": "Volume Boost button"
},
@@ -182,6 +214,17 @@
"title": "Feature menu settings"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Settings successfully exported",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Hide scrollbar",
"title": "Hides the pages scrollbar"
@@ -410,6 +461,9 @@
},
"title": "Scroll wheel volume control settings"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/en-US.json b/public/locales/en-US.json
index 434c6423..62fe0511 100644
--- a/public/locales/en-US.json
+++ b/public/locales/en-US.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Automatic quality adjustment",
"title": "Automatically adjusts the video quality to the selected level."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Player quality",
"title": "The quality to set the video to"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Loop button",
"maximizePlayerButton": "Maximize button",
"openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
"screenshotButton": "Screenshot button",
"volumeBoostButton": "Volume Boost button"
},
@@ -182,6 +214,17 @@
"title": "Feature menu settings"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Settings successfully exported",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Hide scrollbar",
"title": "Hides the pages scrollbar"
@@ -410,6 +461,9 @@
},
"title": "Scroll wheel volume control settings"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/en-US.json.d.ts b/public/locales/en-US.json.d.ts
index c0ad1027..24cf94ef 100644
--- a/public/locales/en-US.json.d.ts
+++ b/public/locales/en-US.json.d.ts
@@ -9,6 +9,18 @@ interface EnUS {
content: {
features: {
featureMenu: { button: { label: "Feature menu" } };
+ forwardRewindButtons: {
+ buttons: {
+ forwardButton: { label: "Fast forward by {{TIME}}" };
+ rewindButton: { label: "Rewind by {{TIME}}" };
+ };
+ };
+ hideEndScreenCardsButton: {
+ button: {
+ label: "Hide end screen cards";
+ toggle: { off: "Show end screen cards"; on: "Hide end screen cards" };
+ };
+ };
loopButton: { button: { label: "Loop"; toggle: { off: "Loop off"; on: "Loop on" } } };
maximizePlayerButton: { button: { label: "Maximize"; toggle: { off: "Maximize off"; on: "Maximize on" } } };
openTranscriptButton: { button: { label: "Open transcript" } };
@@ -61,6 +73,13 @@ interface EnUS {
label: "Automatic quality adjustment";
title: "Automatically adjusts the video quality to the selected level.";
};
+ fallbackQualityStrategy: {
+ select: {
+ label: "Quality fallback strategy";
+ options: { higher: "Higher"; lower: "Lower" };
+ title: "The strategy to use when the selected quality is not available";
+ };
+ };
select: { label: "Player quality"; title: "The quality to set the video to" };
title: "Automatic quality settings";
};
@@ -80,10 +99,13 @@ interface EnUS {
select: {
buttonNames: {
decreasePlaybackSpeedButton: "Decrease Speed button";
+ forwardButton: "Fast Forward button";
+ hideEndScreenCardsButton: "Hide end screen cards button";
increasePlaybackSpeedButton: "Increase Speed button";
loopButton: "Loop button";
maximizePlayerButton: "Maximize button";
openTranscriptButton: "Open Transcript button";
+ rewindButton: "Rewind button";
screenshotButton: "Screenshot button";
volumeBoostButton: "Volume Boost button";
};
@@ -119,6 +141,17 @@ interface EnUS {
title: "Feature menu settings";
};
};
+ forwardRewindButtons: {
+ enable: {
+ label: "Enable forward/rewind buttons";
+ title: "Adds forward and rewind buttons to the video player";
+ };
+ time: {
+ label: "Forward/rewind time";
+ title: "The amount of time to forward/rewind the video by";
+ };
+ title: "Forward/rewind button settings";
+ };
importExportSettings: {
exportButton: {
success: "Settings successfully exported";
@@ -149,7 +182,15 @@ interface EnUS {
label: "Hide end screen cards";
title: "Hides the cards at the end of the video";
};
+ hideEndScreenCardsButton: {
+ label: "Hide end screen cards button";
+ title: "Adds a button to show/hide the cards at the end of the video";
+ };
hideLiveStreamChat: { label: "Hide live stream chat"; title: "Hides the live stream chat" };
+ hidePaidPromotionBanner: {
+ label: "Hide paid promotion banner";
+ title: "Hides the banner that appears when you watch a video that has a paid promotion";
+ };
hideScrollbar: { label: "Hide scrollbar"; title: "Hides the pages scrollbar" };
hideShorts: { label: "Hide shorts"; title: "Hides all shorts" };
hideTranslateComment: {
@@ -303,6 +344,7 @@ interface EnUS {
};
title: "Scroll wheel volume control settings";
};
+ settingSearch: { placeholder: "Search for a setting" };
videoHistory: {
enable: {
label: "Track watched videos";
diff --git a/public/locales/es-ES.json b/public/locales/es-ES.json
index a238fcc0..fb8da3b2 100644
--- a/public/locales/es-ES.json
+++ b/public/locales/es-ES.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Habilitar ajuste automático de calidad",
"title": "Ajustar automáticamente la calidad del vídeo al nivel seleccionado."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Calidad del reproductor",
"title": "La calidad a la que establecer el vídeo"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Botón de repetición",
"maximizePlayerButton": "Maximizar botón",
"openTranscriptButton": "Abrir botón de transcripción",
+ "rewindButton": "Rewind button",
"screenshotButton": "Botón de captura de pantalla",
"volumeBoostButton": "Botón Aumento de Volumen"
},
@@ -182,6 +214,17 @@
"title": "Configuración del menú"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Ajustes exportados correctamente",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Ocultar barra de desplazamiento",
"title": "Oculta la barra de desplazamiento de la página"
@@ -410,6 +461,9 @@
},
"title": "Ajustes de control de volumen con la rueda del ratón"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/fa-IR.json b/public/locales/fa-IR.json
index 42b0eeb4..c5f96127 100644
--- a/public/locales/fa-IR.json
+++ b/public/locales/fa-IR.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Automatic quality adjustment",
"title": "Automatically adjusts the video quality to the selected level."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Player quality",
"title": "The quality to set the video to"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Loop button",
"maximizePlayerButton": "Maximize button",
"openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
"screenshotButton": "Screenshot button",
"volumeBoostButton": "Volume Boost button"
},
@@ -182,6 +214,17 @@
"title": "Feature menu settings"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Settings successfully exported",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Hide scrollbar",
"title": "Hides the pages scrollbar"
@@ -410,6 +461,9 @@
},
"title": "Scroll wheel volume control settings"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/fr-FR.json b/public/locales/fr-FR.json
index 8fc9fbc2..2a82e879 100644
--- a/public/locales/fr-FR.json
+++ b/public/locales/fr-FR.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Ajustement automatique de la résolution",
"title": "Ajuste automatiquement la résolution de la vidéo au niveau sélectionné."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Résolution",
"title": "La vidéo aura cette résolution"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Loop button",
"maximizePlayerButton": "Maximize button",
"openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
"screenshotButton": "Screenshot button",
"volumeBoostButton": "Volume Boost button"
},
@@ -182,6 +214,17 @@
"title": "Paramètres du menu de fonctionnalités"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Réglages exportés avec succès",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Cacher la barre de défilement",
"title": "Cache la barre de défilement des pages"
@@ -410,6 +461,9 @@
},
"title": "Réglages du contrôle du volume par la molette de défilement"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/he-IL.json b/public/locales/he-IL.json
index 50112462..c55257dd 100644
--- a/public/locales/he-IL.json
+++ b/public/locales/he-IL.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Automatic quality adjustment",
"title": "Automatically adjusts the video quality to the selected level."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Player quality",
"title": "The quality to set the video to"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Loop button",
"maximizePlayerButton": "Maximize button",
"openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
"screenshotButton": "Screenshot button",
"volumeBoostButton": "Volume Boost button"
},
@@ -182,6 +214,17 @@
"title": "Feature menu settings"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Settings successfully exported",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Hide scrollbar",
"title": "Hides the pages scrollbar"
@@ -410,6 +461,9 @@
},
"title": "Scroll wheel volume control settings"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/hi-IN.json b/public/locales/hi-IN.json
index a670ebed..9efb0103 100644
--- a/public/locales/hi-IN.json
+++ b/public/locales/hi-IN.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Automatic quality adjustment",
"title": "Automatically adjusts the video quality to the selected level."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Player quality",
"title": "The quality to set the video to"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Loop button",
"maximizePlayerButton": "Maximize button",
"openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
"screenshotButton": "Screenshot button",
"volumeBoostButton": "Volume Boost button"
},
@@ -182,6 +214,17 @@
"title": "Feature menu settings"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Settings successfully exported",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Hide scrollbar",
"title": "Hides the pages scrollbar"
@@ -410,6 +461,9 @@
},
"title": "Scroll wheel volume control settings"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/it-IT.json b/public/locales/it-IT.json
index 01f2add8..7a419a6d 100644
--- a/public/locales/it-IT.json
+++ b/public/locales/it-IT.json
@@ -13,6 +13,25 @@
"label": "Menu' funzioni"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Avanti veloce di {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Riavvolgi di {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Nascondi le schede finali",
+ "toggle": {
+ "off": "Mostra le schede finali",
+ "on": "Nascondi le schede finali"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Ripeti",
@@ -101,6 +120,16 @@
"label": "Regolazione automatica qualità",
"title": "Regola automaticamente la qualità video al livello selezionato."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Strategia ripiego qualità",
+ "options": {
+ "higher": "Più alta",
+ "lower": "Più bassa"
+ },
+ "title": "La strategia da usare quando la qualità selezionata non è disponibile"
+ }
+ },
"select": {
"label": "Qualità riproduttore",
"title": "La qualità alla quale impostare il video"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Pulsante Riduci velocità",
+ "forwardButton": "Pulsante Avanti veloce",
+ "hideEndScreenCardsButton": "Pulsante Nascondi schede finali",
"increasePlaybackSpeedButton": "Pulsante Aumenta velocità",
"loopButton": "Pulsante Ripeti",
"maximizePlayerButton": "Pulsante Massimizza",
"openTranscriptButton": "Pulsante Apri trascrizione",
+ "rewindButton": "Pulsante Riavvolgi",
"screenshotButton": "Pulsante Schermata",
"volumeBoostButton": "Pulsante Aumento volume"
},
@@ -182,6 +214,17 @@
"title": "Impostazioni menu' funzioni"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Abilita pulsanti avanti/riavvolgi",
+ "title": "Aggiunge i pulsanti avanti e riavvolgi al riproduttore video"
+ },
+ "time": {
+ "label": "Tempo avanzamento/riavvolgimento",
+ "title": "Il periodo di tempo da usare per avanzare/riavvolgere il video"
+ },
+ "title": "Impostazioni pulsante Avanti / Riavvolgi"
+ },
"importExportSettings": {
"exportButton": {
"success": "Impostazioni esportate correttamente",
@@ -212,13 +255,21 @@
"title": "Attiva automaticamente la modalità teatro quando carichi un video"
},
"hideEndScreenCards": {
- "label": "Hide end screen cards",
- "title": "Hides the cards at the end of the video"
+ "label": "Nascondi le schede finali",
+ "title": "Nasconde le schede alla fine del video"
+ },
+ "hideEndScreenCardsButton": {
+ "label": "Pulsante Nascondi schede finali",
+ "title": "Aggiunge un pulsante per mostrare/nascondere le schede alla fine del video"
},
"hideLiveStreamChat": {
"label": "Nascondi chat live stream",
"title": "Nasconde la chat live stream"
},
+ "hidePaidPromotionBanner": {
+ "label": "Nascondi banner promozioni a pagamento",
+ "title": "Nasconde il banner con promozioni a pagamento che appare quando si guarda un video"
+ },
"hideScrollbar": {
"label": "Nascondi barra scorrimento",
"title": "Nasconde la barra di scorrimento delle pagine"
@@ -410,6 +461,9 @@
},
"title": "Impostazioni controllo volume con rotellina"
},
+ "settingSearch": {
+ "placeholder": "Cerca un'impostazione"
+ },
"videoHistory": {
"enable": {
"label": "Traccia i video visti",
diff --git a/public/locales/ja-JP.json b/public/locales/ja-JP.json
index 72ee7f37..0caded4b 100644
--- a/public/locales/ja-JP.json
+++ b/public/locales/ja-JP.json
@@ -13,6 +13,25 @@
"label": "フィーチャー・メニュー"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "{{TIME}}で早送する"
+ },
+ "rewindButton": {
+ "label": "{{TIME}}でリワインドする"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "終了画面のカードを非表示にする",
+ "toggle": {
+ "off": "終了画面のカードを表示にする",
+ "on": "終了画面のカードを非表示にする"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "ループ",
@@ -101,6 +120,16 @@
"label": "自動画質調整",
"title": "選択したレベルに合わせて動画の画質を自動的に調整します。"
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "画質フォールバック対策",
+ "options": {
+ "higher": "上位",
+ "lower": "下位"
+ },
+ "title": "使用不能選択中画質ときに対策使ってする"
+ }
+ },
"select": {
"label": "プレイヤーの動画質",
"title": "動画の画質に設定する"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "速度を下げるボタン",
+ "forwardButton": "早送ボタン",
+ "hideEndScreenCardsButton": "終了画面のカードボタンを非表示にする",
"increasePlaybackSpeedButton": "速度を上げるボタン",
"loopButton": "ループボタン",
"maximizePlayerButton": "最大表示ボタン",
"openTranscriptButton": "文字起こしを見せるボタン",
+ "rewindButton": "リワインドボタン",
"screenshotButton": "スクリーンショットボタン",
"volumeBoostButton": "音量ブーストボタン"
},
@@ -182,6 +214,17 @@
"title": "フィーチャー・メニュー設定"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "早送/リワインドボタンを可能にする",
+ "title": "早送ボタンとリワインドボタンをビデオ・プレーヤーに追加する"
+ },
+ "time": {
+ "label": "早送/リワインド時間",
+ "title": "動画に早送/リワインドを量時間"
+ },
+ "title": "早送/リワインドボタン設定"
+ },
"importExportSettings": {
"exportButton": {
"success": "設定がエクスポートをされました",
@@ -212,13 +255,21 @@
"title": "動画の読み込み時に自動的にシアターモードを有効にする"
},
"hideEndScreenCards": {
- "label": "Hide end screen cards",
- "title": "Hides the cards at the end of the video"
+ "label": "終了画面のカードを非表示にする",
+ "title": "動画の終了で画面カードを非表示にする"
+ },
+ "hideEndScreenCardsButton": {
+ "label": "終了画面のカードボタンを非表示にする",
+ "title": "終了画面でボタンなカードを見せるか隠すに追加する"
},
"hideLiveStreamChat": {
"label": "配信チャットを隠す",
"title": "配信チャットを隠する"
},
+ "hidePaidPromotionBanner": {
+ "label": "有料プロモーションバナーを隠す",
+ "title": "有料プロモーションのある動画を視聴したときに表示されるバナーを隠すします"
+ },
"hideScrollbar": {
"label": "スクロールバー隠す機能",
"title": "ページのスクロールバーを隠す"
@@ -410,6 +461,9 @@
},
"title": "スクロールホイール音量制御設定"
},
+ "settingSearch": {
+ "placeholder": "設定を探す"
+ },
"videoHistory": {
"enable": {
"label": "視聴した動画に追跡をつける",
diff --git a/public/locales/ko-KR.json b/public/locales/ko-KR.json
new file mode 100644
index 00000000..18683be7
--- /dev/null
+++ b/public/locales/ko-KR.json
@@ -0,0 +1,550 @@
+{
+ "langCode": "ko-KR",
+ "langName": "한국어",
+ "messages": {
+ "resumingVideo": "영상을 {{VIDEO_TIME}} 부터 다시 재생합니다.",
+ "settingVolume": "볼륨 부스트를 {{VOLUME_BOOST_AMOUNT}} 로 설정합니다."
+ },
+ "pages": {
+ "content": {
+ "features": {
+ "featureMenu": {
+ "button": {
+ "label": "추가 기능"
+ }
+ },
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "최종 화면 숨기기",
+ "toggle": {
+ "off": "최종 화면 보기",
+ "on": "최종 화면 숨기기"
+ }
+ }
+ },
+ "loopButton": {
+ "button": {
+ "label": "연속 재생",
+ "toggle": {
+ "off": "연속 재생 끄기",
+ "on": "연속 재생 켜기"
+ }
+ }
+ },
+ "maximizePlayerButton": {
+ "button": {
+ "label": "화면 크기에 맞추기",
+ "toggle": {
+ "off": "끄기",
+ "on": "켜기"
+ }
+ }
+ },
+ "openTranscriptButton": {
+ "button": {
+ "label": "스크립트 보기"
+ }
+ },
+ "playbackSpeedButtons": {
+ "buttons": {
+ "decreasePlaybackSpeedButton": {
+ "label": "재생 속도를 {{SPEED}} 로 변경"
+ },
+ "increasePlaybackSpeedButton": {
+ "label": "재생 속도를 {{SPEED}} 로 변경"
+ }
+ },
+ "decreaseLimit": "({{SPEED}}) 에서 더 줄일 수 없습니다.",
+ "increaseLimit": "({{SPEED}}) 에서 더 늘릴 수 없습니다."
+ },
+ "screenshotButton": {
+ "button": {
+ "label": "스크린샷"
+ },
+ "copiedToClipboard": "현재 화면 클립보드에 복사"
+ },
+ "videoHistory": {
+ "resumeButton": "이어서 시청하기",
+ "resumePrompt": {
+ "close": "닫기"
+ }
+ },
+ "volumeBoostButton": {
+ "button": {
+ "label": "볼륨 부스트",
+ "toggle": {
+ "off": "볼륨 부스트 끄기",
+ "on": "볼륨 부스트 켜기"
+ }
+ }
+ }
+ }
+ },
+ "options": {
+ "notifications": {
+ "error": {
+ "scrollWheelHoldModifierKey": {
+ "sameKey": {
+ "speedControl": "중복되는 키가 설정되어 있습니다.",
+ "volumeControl": "중복되는 키가 설정되어 있습니다."
+ }
+ }
+ },
+ "info": {
+ "reset": "모든 옵션이 기본값으로 재설정되었습니다.\n이제 \"확인\" 버튼를 눌러 변경사항을 저장하거나 이 페이지를 닫아 변경사항을 취소할 수 있습니다."
+ },
+ "success": {
+ "saved": "저장되었습니다."
+ }
+ }
+ }
+ },
+ "settings": {
+ "clearData": {
+ "allDataDeleted": "모든 데이터가 삭제되었습니다.",
+ "confirmAlert": "모든 데이터가 삭제됩니다. 진행할까요?"
+ },
+ "sections": {
+ "automaticQuality": {
+ "enable": {
+ "label": "화질 설정",
+ "title": "영상의 화질이 자동으로 변경됩니다."
+ },
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "화질 대체",
+ "options": {
+ "higher": "높음",
+ "lower": "낮음"
+ },
+ "title": "선택한 화질을 사용할 수 없을 때 다음 방법을 사용합니다."
+ }
+ },
+ "select": {
+ "label": "동영상 화질",
+ "title": "항상 선택한 화질로 동영상이 재생됩니다."
+ },
+ "title": "동영상 화질 자동 변경"
+ },
+ "bottomButtons": {
+ "clear": {
+ "title": "확장과 관련된 데이터를 PC에서 모두 삭제합니다.",
+ "value": "데이터 삭제"
+ },
+ "confirm": {
+ "title": "작업을 진행하려면 다시 누르세요",
+ "value": "확인"
+ },
+ "openTab": {
+ "title": "새 탭에서 설정 열기"
+ },
+ "reset": {
+ "title": "모든 설정을 기본값으로 변경합니다. 진행을 원하시면 확인을 누르세요",
+ "value": "초기화"
+ }
+ },
+ "buttonPlacement": {
+ "select": {
+ "buttonNames": {
+ "decreasePlaybackSpeedButton": "속도 조절 버튼",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "최종 화면 숨기기",
+ "increasePlaybackSpeedButton": "속도 조절 버튼",
+ "loopButton": "연속 재생 버튼",
+ "maximizePlayerButton": "화면 크기에 맞추기 버튼",
+ "openTranscriptButton": "스크립트 보기 버튼",
+ "rewindButton": "Rewind button",
+ "screenshotButton": "스크린샷 버튼",
+ "volumeBoostButton": "볼륨 부스트 버튼"
+ },
+ "options": {
+ "below_player": {
+ "placement": "플레이어 컨트롤 아래",
+ "value": "아래"
+ },
+ "feature_menu": {
+ "placement": "추가 기능 버튼",
+ "value": "추가 기능"
+ },
+ "player_controls_left": {
+ "placement": "플레이어 컨트롤의 왼쪽",
+ "value": "왼쪽"
+ },
+ "player_controls_right": {
+ "placement": "플레이어 컨트롤의 오른쪽",
+ "value": "오른쪽"
+ }
+ },
+ "title": "{{BUTTON_NAME}} 을 {{PLACEMENT}} 에 배치하세요"
+ },
+ "title": "버튼 배치 설정"
+ },
+ "customCSS": {
+ "editor": {
+ "collapse": "편집기 축소",
+ "expand": "편집기 확대",
+ "noProblems": "발견된 문제가 없습니다."
+ },
+ "enable": {
+ "label": "CSS 커스텀 활성화",
+ "title": "커스텀 CSS를 적용할 수 있습니다."
+ },
+ "title": "커스텀 CSS 설정"
+ },
+ "featureMenu": {
+ "openType": {
+ "select": {
+ "label": "메뉴 활성화 방식",
+ "options": {
+ "click": "클릭 시",
+ "hover": "마우스 커서를 올릴 때"
+ },
+ "title": "추가 기능 메뉴를 어떤 방식으로 열지 선택하세요"
+ },
+ "title": "추가 기능 설정"
+ }
+ },
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
+ "importExportSettings": {
+ "exportButton": {
+ "success": "설정을 성공적으로 내보냈습니다.",
+ "title": "설정 JSON로 내보내기",
+ "value": "설정 내보내기"
+ },
+ "importButton": {
+ "error": {
+ "unknown": "설정 가져오기에 오류가 있습니다. 파일 형식을 확인하십시오.",
+ "validation": "설정 가져 오기에 오류가 있습니다. 파일 형식을 확인하십시오.\n{{ERROR_MESSAGE}}"
+ },
+ "success": "설정 파일을 성공적으로 가져왔습니다.",
+ "title": "JSON 파일에서 설정 가져오기",
+ "value": "설정 가져오기"
+ }
+ },
+ "language": {
+ "select": {
+ "label": "언어",
+ "title": "이곳에서 언어를 변경할 수 있습니다."
+ },
+ "title": "언어"
+ },
+ "miscellaneous": {
+ "features": {
+ "automaticTheaterMode": {
+ "label": "자동 극장 모드",
+ "title": "동영상 재생 시 자동으로 극장 모드가 활성화 됩니다."
+ },
+ "hideEndScreenCards": {
+ "label": "최종 화면 숨기기",
+ "title": "동영상 마지막에 등장하는 추천 동영상 카드들을 숨깁니다."
+ },
+ "hideEndScreenCardsButton": {
+ "label": "최종 화면 숨기기 버튼",
+ "title": "동영상 마지막에 등장하는 추천 동영상 카드들을 숨기거나 표시합니다."
+ },
+ "hideLiveStreamChat": {
+ "label": "실시간 채팅 숨기기",
+ "title": "실시간 채팅 레이아웃을 숨깁니다."
+ },
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
+ "hideScrollbar": {
+ "label": "스크롤바 숨기기",
+ "title": "스크롤바를 숨깁니다. 깔끔한 느낌을 받으시려면 키세요"
+ },
+ "hideShorts": {
+ "label": "쇼츠 숨기기",
+ "title": "쇼츠 동영상들을 숨깁니다."
+ },
+ "hideTranslateComment": {
+ "label": "댓글 번역 버튼 숨기기",
+ "title": "댓글 아래에 표시되는 번역 버튼을 숨깁니다."
+ },
+ "loopButton": {
+ "label": "연속 재생 버튼",
+ "title": "추가 기능 메뉴에 \"연속 재생\" 버튼을 추가합니다."
+ },
+ "maximizePlayerButton": {
+ "label": "화면 크기에 맞추기 버튼",
+ "title": "추가 기능 메뉴에 \"화면 크기에 맞추기\" 버튼을 추가합니다."
+ },
+ "openTranscriptButton": {
+ "label": "스크립트 보기 버튼",
+ "title": "추가 기능 메뉴에 \"스크립트 보기\" 버튼을 추가합니다."
+ },
+ "openYouTubeSettingsOnHover": {
+ "label": "마우스 커서를 올려 유튜브 설정 열기",
+ "title": "설정 버튼 위로 마우스 커서를 올리면 유튜브 설정 메뉴를 엽니다."
+ },
+ "pauseBackgroundPlayers": {
+ "label": "백그라운드 플레이어 일시 중지",
+ "title": "다른 탭에서 동영상을 재생할 때 이전 탭의 동영상 플레이어를 일시 중지합니다."
+ },
+ "remainingTime": {
+ "label": "남은 시간 표시",
+ "title": "현재 동영상의 남은 시간을 표시합니다."
+ },
+ "rememberLastVolume": {
+ "label": "마지막 볼륨 기억",
+ "title": "마지막으로 본 동영상의 볼륨이 다른 동영상에서도 유지됩니다."
+ },
+ "removeRedirect": {
+ "label": "유튜브 / 리디렉션 URL 제거",
+ "title": "리디렉션 경고 대화를 건너뛰고 실제 URL로 유튜브 리디렉션을 대체합니다."
+ },
+ "shareShortener": {
+ "label": "유튜브 동영상 공유 링크 짧게하기",
+ "title": "si/feature 매개 변수를 제거하여 유튜브 동영상 공유 링크를 단축(youtu.be)"
+ },
+ "shortsAutoScroll": {
+ "label": "쇼츠 동영상 자동 스크롤",
+ "title": "재생이 완료되면 다음 쇼츠로 넘어갑니다."
+ },
+ "skipContinueWatching": {
+ "label": "'동영상이 일시중지되었습니다. 이어서 시청하시겠어요?' 팝업 스킵",
+ "title": "'동영상이 일시중지되었습니다. 이어서 시청하시겠어요?' 팝업을 자동으로 스킵하여 끊김 없는 재생을 유지합니다."
+ }
+ },
+ "title": "기타 설정"
+ },
+ "onScreenDisplaySettings": {
+ "color": {
+ "label": "색상",
+ "options": {
+ "blue": "블루",
+ "green": "그린",
+ "orange": "오렌지",
+ "pink": "핑크",
+ "purple": "퍼플",
+ "red": "레드",
+ "white": "화이트",
+ "yellow": "옐로우"
+ },
+ "title": "화면에 속도 조절 등의 알림을 표시하는 텍스트 색상을 변경합니다."
+ },
+ "hide": {
+ "label": "사라지는 시간",
+ "title": "온 스크린 디스플레이가 몇초 후에 사라지는지 설정합니다."
+ },
+ "opacity": {
+ "label": "투명도",
+ "title": "온 스크린 디스플레이의 투명도 조절"
+ },
+ "padding": {
+ "label": "여백",
+ "title": "온 스크린 디스플레이의 주변 여백을 픽셀 단위로 조절합니다."
+ },
+ "position": {
+ "label": "위치",
+ "options": {
+ "bottom_left": "왼쪽 아래",
+ "bottom_right": "오른쪽 아래",
+ "center": "가운데",
+ "top_left": "왼쪽 위",
+ "top_right": "오른쪽 위"
+ },
+ "title": "온 스크린 디스플레이의 위치를 선택하세요"
+ },
+ "title": "온 스크린 디스플레이 설정",
+ "type": {
+ "label": "유형",
+ "options": {
+ "circle": "원형",
+ "line": "선",
+ "no_display": "표시 안 함",
+ "text": "텍스트"
+ },
+ "title": "온 스크린 디스플레이가 어떻게 표시될지 선택합니다."
+ }
+ },
+ "playbackSpeed": {
+ "enable": {
+ "label": "재생 속도 고정",
+ "title": "동영상 재생 속도를 아래에서 선택한 속도로 설정합니다."
+ },
+ "playbackSpeedButtons": {
+ "label": "재생 속도 버튼",
+ "select": {
+ "label": "재생 속도 버튼",
+ "title": "클릭당 변경되는 속도 단위"
+ },
+ "title": "보고있는 동영상의 재생 속도를 변경하기 위한 버튼 추가"
+ },
+ "select": {
+ "label": "플레이어 속도",
+ "title": "동영상의 속도를 변경합니다."
+ },
+ "title": "재생 속도 설정"
+ },
+ "screenshotButton": {
+ "enable": {
+ "label": "스크린샷 버튼",
+ "title": "현재 화면을 캡처하기 위한 스크린샷 버튼을 추가합니다."
+ },
+ "saveAs": {
+ "clipboard": "클립보드로 복사",
+ "file": "파일로 저장"
+ },
+ "selectFormat": {
+ "label": "캡처 방법",
+ "title": "스크린샷을 저장하는 방식"
+ },
+ "selectSaveAs": {
+ "label": "스크린샷 저장 방식",
+ "title": "현재 화면을 클립보드에 복사, 파일로 저장 두 가지 옵션이 있습니다."
+ },
+ "title": "스크린샷 설정"
+ },
+ "scrollWheelSpeedControl": {
+ "adjustmentSteps": {
+ "label": "스크롤 당 속도 변경",
+ "title": "스크롤에 따라 속도가 조절됩니다."
+ },
+ "enable": {
+ "label": "스크롤 휠로 속도 제어",
+ "title": "스크롤 휠을 사용해 속도를 조절하려면 이 옵션을 사용하세요"
+ },
+ "optionLabel": "{{KEY}}",
+ "select": {
+ "label": "보조 키",
+ "title": "보조 키와 함께 사용해야 작동이 됩니다."
+ },
+ "title": "스크롤 휠 속도 제어 설정"
+ },
+ "scrollWheelVolumeControl": {
+ "adjustmentSteps": {
+ "label": "스크롤 당 볼륨 조절",
+ "title": "스크롤에 따라 볼륨이 조절됩니다."
+ },
+ "enable": {
+ "label": "스크롤로 볼륨 조절",
+ "title": "스크롤 휠을 사용하여 보고 있는 동영상의 볼륨을 조절할 수 있습니다."
+ },
+ "holdModifierKey": {
+ "enable": {
+ "label": "보조 키를 누를 때 활성화",
+ "title": "보조 키와 함께 사용해야 작동합니다."
+ },
+ "optionLabel": "{{KEY}}",
+ "select": {
+ "label": "보조 키",
+ "title": "보조 키와 함께 사용해야 작동합니다."
+ }
+ },
+ "holdRightClick": {
+ "enable": {
+ "label": "마우스 오른쪽 버튼을 누른 상태에서 활성화",
+ "title": "우클릭 상태로 스크롤 하세요"
+ }
+ },
+ "title": "스크롤 휠로 볼륨 조절 설정"
+ },
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
+ "videoHistory": {
+ "enable": {
+ "label": "시청한 동영상 기억",
+ "title": "동영상의 중단된 위치를 기억하고 이어서 시청할 수 있습니다."
+ },
+ "resumeType": {
+ "select": {
+ "label": "이어서 시청하기",
+ "options": {
+ "automatic": "자동",
+ "prompt": "팝업 클릭"
+ },
+ "title": "이어서 시청하는 방법 선택"
+ }
+ },
+ "title": "동영상 시청 기록 설정"
+ },
+ "volumeBoost": {
+ "boostAmount": {
+ "label": "부피 부스트(dB)",
+ "title": "높을 수록 소리가 커집니다."
+ },
+ "enable": {
+ "label": "볼륨 부스트",
+ "title": "볼륨 부스트 켜기"
+ },
+ "mode": {
+ "select": {
+ "label": "볼륨 부스트 적용 방법",
+ "options": {
+ "global": "전체",
+ "perVideo": "개별 동영상"
+ },
+ "title": "볼륨 부스트 활성화 방법을 선택하십시오. '개별 동영상'을 사용하면 추가 기능 메뉴에서 각 비디오를 개별적으로 적용할 수 있습니다. 전체'를 선택하면 이 모든 동영상에 적용됩니다."
+ }
+ },
+ "title": "볼륨 부스트 설정"
+ },
+ "youtubeDeepDark": {
+ "author": "개발자",
+ "co-authors": "도와주신분들",
+ "colors": {
+ "colorShadow": {
+ "label": "그림자 색상",
+ "title": "그림자 색상"
+ },
+ "dimmerText": {
+ "label": "보조 텍스트 색상",
+ "title": "보조 텍스트의 색상"
+ },
+ "hoverBackground": {
+ "label": "마우스 커서를 올렸을 때 색상",
+ "title": "마우스 커서를 올렸을 때의 색상을 변경합니다."
+ },
+ "mainBackground": {
+ "label": "메인 배경 색상",
+ "title": "메인 백그라운드 색상을 변경합니다."
+ },
+ "mainColor": {
+ "label": "강조 색상",
+ "title": "강조할 색상을 선택하세요"
+ },
+ "mainText": {
+ "label": "메인 텍스트 색상",
+ "title": "메인 텍스트 색상을 변경합니다."
+ },
+ "secondBackground": {
+ "label": "보조 배경 색상",
+ "title": "보조 배경의 색상을 변경합니다."
+ }
+ },
+ "enable": {
+ "label": "선택한 테마 사용",
+ "title": "선택한 테마를 활성화합니다."
+ },
+ "select": {
+ "label": "테마 선택",
+ "title": "적용할 테마를 선택하세요"
+ },
+ "title": "유튜브 딥 다크 설정"
+ }
+ }
+ }
+}
diff --git a/public/locales/pl-PL.json b/public/locales/pl-PL.json
index 2c4557e2..2b9cf421 100644
--- a/public/locales/pl-PL.json
+++ b/public/locales/pl-PL.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Automatic quality adjustment",
"title": "Automatically adjusts the video quality to the selected level."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Player quality",
"title": "The quality to set the video to"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Loop button",
"maximizePlayerButton": "Maximize button",
"openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
"screenshotButton": "Screenshot button",
"volumeBoostButton": "Volume Boost button"
},
@@ -182,6 +214,17 @@
"title": "Feature menu settings"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Settings successfully exported",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Hide scrollbar",
"title": "Hides the pages scrollbar"
@@ -410,6 +461,9 @@
},
"title": "Scroll wheel volume control settings"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/pt-BR.json b/public/locales/pt-BR.json
index 42f4e1e4..3996d4d5 100644
--- a/public/locales/pt-BR.json
+++ b/public/locales/pt-BR.json
@@ -13,6 +13,25 @@
"label": "Feature menu"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Loop",
@@ -101,6 +120,16 @@
"label": "Ajuste automático de qualidade",
"title": "Ajusta automaticamente a qualidade do vídeo para o nível selecionado."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Qualidade do reprodutor",
"title": "A qualidade a ser definida para o vídeo"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Botão de Repetir",
"maximizePlayerButton": "Botão de Maximizar",
"openTranscriptButton": "Abrir botão de transcrição",
+ "rewindButton": "Rewind button",
"screenshotButton": "Botão de captura de tela",
"volumeBoostButton": "Botão de Impulso de Volume"
},
@@ -182,6 +214,17 @@
"title": "Configurações do menu de recursos"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "As configurações foram exportadas com sucesso",
@@ -215,10 +258,18 @@
"label": "Hide end screen cards",
"title": "Hides the cards at the end of the video"
},
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
"hideLiveStreamChat": {
"label": "Hide live stream chat",
"title": "Hides the live stream chat"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Ocultar a barra de rolagem",
"title": "Oculta a barra de rolagem da página"
@@ -410,6 +461,9 @@
},
"title": "Configurações de controle do volume por roda do mouse"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Track watched videos",
diff --git a/public/locales/ru-RU.json b/public/locales/ru-RU.json
index 211e935c..178b30fd 100644
--- a/public/locales/ru-RU.json
+++ b/public/locales/ru-RU.json
@@ -13,6 +13,25 @@
"label": "Меню функций"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Перемотка вперёд на {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Перемотка назад на {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Скрыть заставки следующих видео",
+ "toggle": {
+ "off": "Показать заставки следующих видео",
+ "on": "Скрыть заставки следующих видео"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Зациклить",
@@ -45,8 +64,8 @@
"label": "Увеличить скорость на {{SPEED}}"
}
},
- "decreaseLimit": "Can't decrease further ({{SPEED}})",
- "increaseLimit": "Can't increase further ({{SPEED}})"
+ "decreaseLimit": "Невозможно уменьшить ({{SPEED}})",
+ "increaseLimit": "Невозможно увеличить ({{SPEED}})"
},
"screenshotButton": {
"button": {
@@ -101,6 +120,16 @@
"label": "Включить автоматическую регулировку качества",
"title": "Автоматически настраивает качество видео на выбранный уровень."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Стратегия восстановления качества",
+ "options": {
+ "higher": "Выше",
+ "lower": "Ниже"
+ },
+ "title": "Какую стратегию использовать, когда выбранное качество недоступно"
+ }
+ },
"select": {
"label": "Качество проигрывателя",
"title": "Качество, которое будет задаваться для видео"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Кнопка уменьшения скорости видео",
+ "forwardButton": "Кнопка перемотки вперёд",
+ "hideEndScreenCardsButton": "Кнопка «Скрыть заставки следующих видео»",
"increasePlaybackSpeedButton": "Кнопка увеличения скорости видео",
"loopButton": "Кнопка «Зациклить»",
"maximizePlayerButton": "Кнопка «Развернуть»",
"openTranscriptButton": "Кнопка «Открыть стенограмму»",
+ "rewindButton": "Кнопка перемотки назад",
"screenshotButton": "Кнопка «Скриншот»",
"volumeBoostButton": "Кнопка «Усиление громкости»"
},
@@ -182,6 +214,17 @@
"title": "Настройки меню функций"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Включить кнопки перемотки вперёд/назад",
+ "title": "Добавляет кнопки перемотки вперёд/назад в проигрыватель"
+ },
+ "time": {
+ "label": "Время перемотки",
+ "title": "Кол-во времени, на которое будет перематываться видео"
+ },
+ "title": "Настройки кнопок перемотки вперёд/назад"
+ },
"importExportSettings": {
"exportButton": {
"success": "Настройки успешно экспортированы",
@@ -212,12 +255,20 @@
"title": "Автоматически включать режим кинотеатра при загрузке видео"
},
"hideEndScreenCards": {
- "label": "Hide end screen cards",
- "title": "Hides the cards at the end of the video"
+ "label": "Скрыть заставки следующих видео",
+ "title": "Скрывает заставки следующих (предлагаемых) видео в конце ролика"
+ },
+ "hideEndScreenCardsButton": {
+ "label": "Кнопка «Скрыть заставки следующих видео»",
+ "title": "Добавляет кнопку для скрытия/отображения заставок следующих видео в конце ролика"
},
"hideLiveStreamChat": {
- "label": "Hide live stream chat",
- "title": "Hides the live stream chat"
+ "label": "Спрятать чат прямого эфира",
+ "title": "Прячет чат прямого эфира (стрима)"
+ },
+ "hidePaidPromotionBanner": {
+ "label": "Скрыть \"Содержит прямую рекламу\"",
+ "title": "Скрывает баннер, отображающийся при просмотре видео, которое имеет платную рекламу"
},
"hideScrollbar": {
"label": "Включить скрытие полосы прокрутки страницы",
@@ -228,8 +279,8 @@
"title": "Скрывает все Shorts"
},
"hideTranslateComment": {
- "label": "Hide translate comment button",
- "title": "Hides 'Translate to Language' button under comments"
+ "label": "Спрятать кнопку 'Перевести на...'",
+ "title": "Прячет кнопку 'Перевести на русский' под комментарием"
},
"loopButton": {
"label": "Включить кнопку «Зациклить»",
@@ -410,6 +461,9 @@
},
"title": "Настройки управления громкостью с помощью колеса мыши"
},
+ "settingSearch": {
+ "placeholder": "Поиск настроек"
+ },
"videoHistory": {
"enable": {
"label": "Отслеживание таймкода просматриваемого видео",
diff --git a/public/locales/sv-SE.json b/public/locales/sv-SE.json
index ced8740d..75ba0bcc 100644
--- a/public/locales/sv-SE.json
+++ b/public/locales/sv-SE.json
@@ -13,6 +13,25 @@
"label": "Funktionsmeny"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Dölj slutskärmskort",
+ "toggle": {
+ "off": "Visa slutskärmskort",
+ "on": "Dölj slutskärmskort"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Slinga",
@@ -39,14 +58,14 @@
"playbackSpeedButtons": {
"buttons": {
"decreasePlaybackSpeedButton": {
- "label": "Minska hastigheten med {{SPEED}}"
+ "label": "Minska hastigheten till {{SPEED}}"
},
"increasePlaybackSpeedButton": {
- "label": "Öka hastigheten med {{SPEED}}"
+ "label": "Öka hastigheten till {{SPEED}}"
}
},
- "decreaseLimit": "Can't decrease further ({{SPEED}})",
- "increaseLimit": "Can't increase further ({{SPEED}})"
+ "decreaseLimit": "Det går inte att sänka mer ({{SPEED}})",
+ "increaseLimit": "Det går inte att höja mer ({{SPEED}})"
},
"screenshotButton": {
"button": {
@@ -101,6 +120,16 @@
"label": "Automatisk kvalitetsjustering",
"title": "Justerar automatiskt videokvaliteten till den valda nivån."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Reservmetod för kvaliten",
+ "options": {
+ "higher": "Högre",
+ "lower": "Lägre"
+ },
+ "title": "Metod att använda när den valda kvaliteten inte är tillgänglig"
+ }
+ },
"select": {
"label": "Spelarkvalitet",
"title": "Kvaliteten för att ställa in videon till"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Knapp för att mindska hastigheten",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Dölj knappen för slutskärmskort",
"increasePlaybackSpeedButton": "Knapp för att öka hastigheten",
"loopButton": "Slingknapp",
"maximizePlayerButton": "Maximeraknapp",
"openTranscriptButton": "Transkriptknapp",
+ "rewindButton": "Rewind button",
"screenshotButton": "Skärmbildsknapp",
"volumeBoostButton": "Volymökningsknapp"
},
@@ -155,7 +187,7 @@
},
"title": "Placera {{BUTTON_NAME}} {{PLACEMENT}}"
},
- "title": "Inställningar för knappplacering"
+ "title": "Inställningar för knapplacering"
},
"customCSS": {
"editor": {
@@ -182,6 +214,17 @@
"title": "Inställningar för funktionsmeny"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Inställningar har exporterats",
@@ -212,12 +255,20 @@
"title": "Aktiverar automatiskt teaterläge när du startar en video"
},
"hideEndScreenCards": {
- "label": "Hide end screen cards",
- "title": "Hides the cards at the end of the video"
+ "label": "Dölj slutskärmskort",
+ "title": "Döljer korten i slutet av videon"
+ },
+ "hideEndScreenCardsButton": {
+ "label": "Dölj knappen för slutskärmskort",
+ "title": "Lägger till en knapp för att visa/dölja korten i slutet av videon"
},
"hideLiveStreamChat": {
- "label": "Hide live stream chat",
- "title": "Hides the live stream chat"
+ "label": "Dölj direktströmschatt",
+ "title": "Döljer direktströmschatten"
+ },
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
},
"hideScrollbar": {
"label": "Dölj rullningslisten",
@@ -228,8 +279,8 @@
"title": "Döljer alla shorts"
},
"hideTranslateComment": {
- "label": "Hide translate comment button",
- "title": "Hides 'Translate to Language' button under comments"
+ "label": "Dölj översättning av kommentarer",
+ "title": "Döljer knappen 'Översätt till språk' under kommentarer"
},
"loopButton": {
"label": "Slingknapp",
@@ -272,8 +323,8 @@
"title": "Rullar automatiskt till nästa shorts"
},
"skipContinueWatching": {
- "label": "Skip \"Video is paused. Continue watching?\"",
- "title": "Skips the idle dialog that pauses video playback"
+ "label": "Hoppa över \"Videon är pausad. Fortsätt titta?\"",
+ "title": "Hoppa över dialogrutan som pausar videouppspelningen"
}
},
"title": "Övriga inställningar"
@@ -320,7 +371,7 @@
"type": {
"label": "Typ",
"options": {
- "circle": "Circle",
+ "circle": "Cirkel",
"line": "Rad",
"no_display": "Ingen visning",
"text": "Text"
@@ -410,6 +461,9 @@
},
"title": "Rullningshjulets volyminställningar"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "Håll reda på visade videor",
diff --git a/public/locales/tr-TR.json b/public/locales/tr-TR.json
index 11f1e499..c95471f7 100644
--- a/public/locales/tr-TR.json
+++ b/public/locales/tr-TR.json
@@ -13,6 +13,25 @@
"label": "Özellik menüsü"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Bitiş ekranı kartlarını gizle",
+ "toggle": {
+ "off": "Bitiş ekranı kartlarını göster",
+ "on": "Bitiş ekranı kartlarını gizle"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "Tekrarla",
@@ -101,6 +120,16 @@
"label": "Otomatik kalite ayarlamayı etkinleştir",
"title": "Video kalitesini seçilen seviyeye otomatik olarak ayarlar."
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Daha yüksek",
+ "lower": "Daha düşük"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
"select": {
"label": "Oynatma kalitesi",
"title": "Videonun ayarlanacağı kalite"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Bitiş ekranı kartlarını gizleme düğmesi",
"increasePlaybackSpeedButton": "Increase Speed button",
"loopButton": "Döngü düğmesi",
"maximizePlayerButton": "Tam ekran düğmesi",
"openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
"screenshotButton": "Ekran görüntüsü düğmesi",
"volumeBoostButton": "Ses güçlendirme düğmesi"
},
@@ -182,6 +214,17 @@
"title": "Özellik menüsü ayarları"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
"importExportSettings": {
"exportButton": {
"success": "Ayarlar başarıyla dışa aktarıldı",
@@ -212,13 +255,21 @@
"title": "Video yüklediğinizde tiyatro modunu otomatik olarak etkinleştirir"
},
"hideEndScreenCards": {
- "label": "Hide end screen cards",
- "title": "Hides the cards at the end of the video"
+ "label": "Bitiş ekranı kartlarını gizle",
+ "title": "Video'nun sonundaki kartları gizler"
+ },
+ "hideEndScreenCardsButton": {
+ "label": "Bitiş ekranı kartlarını gizleme düğmesi",
+ "title": "Video'nun sonuna bitiş ekranı kartlarını gizlemek/göstermek için bir düğme ekler"
},
"hideLiveStreamChat": {
"label": "Canlı yayın sohbetini gizle",
"title": "Canlı yayın sohbetini gizler"
},
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
"hideScrollbar": {
"label": "Kaydırma çubuğu gizlemeyi etkinleştir",
"title": "Sayfa kaydırma çubuğunu gizler"
@@ -410,6 +461,9 @@
},
"title": "Kaydırma tekerleği ile ses seviyesi kontrolü ayarları"
},
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
"videoHistory": {
"enable": {
"label": "İzlenen videoları takip edin",
diff --git a/public/locales/uk-UA.json b/public/locales/uk-UA.json
new file mode 100644
index 00000000..d0d9fa15
--- /dev/null
+++ b/public/locales/uk-UA.json
@@ -0,0 +1,550 @@
+{
+ "langCode": "uk-UA",
+ "langName": "Англійська (США)",
+ "messages": {
+ "resumingVideo": "Продовжити відео з {{VIDEO_TIME}}",
+ "settingVolume": "Посилити гучність до {{VOLUME_BOOST_AMOUNT}}"
+ },
+ "pages": {
+ "content": {
+ "features": {
+ "featureMenu": {
+ "button": {
+ "label": "Меню функцій"
+ }
+ },
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Швидкий перехід до {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Перемотати {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Приховати картки наприкінці відео",
+ "toggle": {
+ "off": "Показати картки наприкінці відео",
+ "on": "Приховати картки наприкінці відео"
+ }
+ }
+ },
+ "loopButton": {
+ "button": {
+ "label": "Повтор",
+ "toggle": {
+ "off": "Виключити повтор",
+ "on": "Включити повтор"
+ }
+ }
+ },
+ "maximizePlayerButton": {
+ "button": {
+ "label": "Розгорнути",
+ "toggle": {
+ "off": "Згорнути",
+ "on": "Розгорнути"
+ }
+ }
+ },
+ "openTranscriptButton": {
+ "button": {
+ "label": "Відкрити транскрипцію"
+ }
+ },
+ "playbackSpeedButtons": {
+ "buttons": {
+ "decreasePlaybackSpeedButton": {
+ "label": "Зменшити швидкість до {{SPEED}}"
+ },
+ "increasePlaybackSpeedButton": {
+ "label": "Збільшити швидкість до {{SPEED}}"
+ }
+ },
+ "decreaseLimit": "Неможливо зменшити далі ({{SPEED}})",
+ "increaseLimit": "Неможливо збільшити далі ({{SPEED}})"
+ },
+ "screenshotButton": {
+ "button": {
+ "label": "Знімок екрана"
+ },
+ "copiedToClipboard": "Знімок екрана скопійовано в буфер обміну"
+ },
+ "videoHistory": {
+ "resumeButton": "Продовжити",
+ "resumePrompt": {
+ "close": "Закрити"
+ }
+ },
+ "volumeBoostButton": {
+ "button": {
+ "label": "Збільшення гучності",
+ "toggle": {
+ "off": "Вимкнути збільшення гучності",
+ "on": "Включити збільшення гучності"
+ }
+ }
+ }
+ }
+ },
+ "options": {
+ "notifications": {
+ "error": {
+ "scrollWheelHoldModifierKey": {
+ "sameKey": {
+ "speedControl": "Клавіша для керування швидкістю прокрутки компʼютерною мишею не може бути тією ж, що й клавіша для регулювання гучності.",
+ "volumeControl": "Клавіша для регулювання гучності прокрутки компʼютерною мишею не може бути тією ж, що й клавіша для керування швидкістю."
+ }
+ }
+ },
+ "info": {
+ "reset": "Всі параметри були скинуті до значень за замовчуванням.\nТепер ви можете зберегти зміни, натиснувши кнопку \"Підтвердити\" або відхилити їх, закривши цю сторінку або проігнорувавши це повідомлення."
+ },
+ "success": {
+ "saved": "Налаштування збережено."
+ }
+ }
+ }
+ },
+ "settings": {
+ "clearData": {
+ "allDataDeleted": "Усі дані скинуто.",
+ "confirmAlert": "Це видалить всі дані розширення, пов'язані з налаштуваннями. Продовжити?"
+ },
+ "sections": {
+ "automaticQuality": {
+ "enable": {
+ "label": "Автоматичне регулювання якості",
+ "title": "Автоматично регулює якість відео на обраний рівень."
+ },
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Стратегія запасного вибору якості",
+ "options": {
+ "higher": "Вища",
+ "lower": "Нижча"
+ },
+ "title": "Стратегія для використання, коли вибрана якість недоступна"
+ }
+ },
+ "select": {
+ "label": "Якість відтворення",
+ "title": "Якість відтворення відео"
+ },
+ "title": "Автоматичні налаштування якості"
+ },
+ "bottomButtons": {
+ "clear": {
+ "title": "Очищає всі дані цього розширення збережені на комп'ютері",
+ "value": "Видалити дані"
+ },
+ "confirm": {
+ "title": "Підтвердити скидання налаштувань",
+ "value": "Підтвердити"
+ },
+ "openTab": {
+ "title": "Відкрити налаштування розширення в новій вкладці"
+ },
+ "reset": {
+ "title": "Скидає всі параметри до стандартних налаштувань, натисніть кнопку підтвердження, щоб зберегти зміни",
+ "value": "Скинути"
+ }
+ },
+ "buttonPlacement": {
+ "select": {
+ "buttonNames": {
+ "decreasePlaybackSpeedButton": "Кнопка зменшення швидкості",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
+ "increasePlaybackSpeedButton": "Increase Speed button",
+ "loopButton": "Loop button",
+ "maximizePlayerButton": "Maximize button",
+ "openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
+ "screenshotButton": "Screenshot button",
+ "volumeBoostButton": "Volume Boost button"
+ },
+ "options": {
+ "below_player": {
+ "placement": "below the player controls",
+ "value": "Below Player"
+ },
+ "feature_menu": {
+ "placement": "in the feature menu",
+ "value": "Feature Menu"
+ },
+ "player_controls_left": {
+ "placement": "on the left side of player controls",
+ "value": "Left Controls"
+ },
+ "player_controls_right": {
+ "placement": "on the right side of player controls",
+ "value": "Right Controls"
+ }
+ },
+ "title": "Place the {{BUTTON_NAME}} {{PLACEMENT}}"
+ },
+ "title": "Button Placement Settings"
+ },
+ "customCSS": {
+ "editor": {
+ "collapse": "Collapse Editor",
+ "expand": "Expand Editor",
+ "noProblems": "No problems found."
+ },
+ "enable": {
+ "label": "Enable custom CSS",
+ "title": "Enables custom CSS to be applied to the page"
+ },
+ "title": "Custom CSS Settings"
+ },
+ "featureMenu": {
+ "openType": {
+ "select": {
+ "label": "Menu Activation Type",
+ "options": {
+ "click": "Click",
+ "hover": "Hover"
+ },
+ "title": "Select the method to activate the feature menu"
+ },
+ "title": "Feature menu settings"
+ }
+ },
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
+ "importExportSettings": {
+ "exportButton": {
+ "success": "Settings successfully exported",
+ "title": "Export settings to a JSON file",
+ "value": "Export Settings"
+ },
+ "importButton": {
+ "error": {
+ "unknown": "Error importing settings. Please check the file format.\nAn unknown error occurred.",
+ "validation": "Error importing settings. Please check the file format.\n{{ERROR_MESSAGE}}"
+ },
+ "success": "Settings imported successfully",
+ "title": "Import settings from a JSON file",
+ "value": "Import Settings"
+ }
+ },
+ "language": {
+ "select": {
+ "label": "Language",
+ "title": "The language to use for the extension"
+ },
+ "title": "Language"
+ },
+ "miscellaneous": {
+ "features": {
+ "automaticTheaterMode": {
+ "label": "Automatic theater mode",
+ "title": "Automatically enables theater mode when you load a video"
+ },
+ "hideEndScreenCards": {
+ "label": "Hide end screen cards",
+ "title": "Hides the cards at the end of the video"
+ },
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
+ "hideLiveStreamChat": {
+ "label": "Hide live stream chat",
+ "title": "Hides the live stream chat"
+ },
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
+ "hideScrollbar": {
+ "label": "Hide scrollbar",
+ "title": "Hides the pages scrollbar"
+ },
+ "hideShorts": {
+ "label": "Hide shorts",
+ "title": "Hides all shorts"
+ },
+ "hideTranslateComment": {
+ "label": "Hide translate comment button",
+ "title": "Hides 'Translate to Language' button under comments"
+ },
+ "loopButton": {
+ "label": "Loop button",
+ "title": "Adds a button to the feature menu to loop the video you're watching"
+ },
+ "maximizePlayerButton": {
+ "label": "Maximize player button",
+ "title": "Adds a button to the feature menu to maximize the player"
+ },
+ "openTranscriptButton": {
+ "label": "Open transcript button",
+ "title": "Adds a button to the feature menu to open the transcript of the video you're watching"
+ },
+ "openYouTubeSettingsOnHover": {
+ "label": "Open YouTube settings on hover",
+ "title": "Opens the YouTube settings menu when you hover over the settings button"
+ },
+ "pauseBackgroundPlayers": {
+ "label": "Pause background players",
+ "title": "Pauses video players in background tabs when you start a new player in foreground tab"
+ },
+ "remainingTime": {
+ "label": "Remaining time",
+ "title": "Shows the remaining time of the video you're watching"
+ },
+ "rememberLastVolume": {
+ "label": "Remember last volume",
+ "title": "Remembers the volume of the last video you were watching and sets it when you open a new video"
+ },
+ "removeRedirect": {
+ "label": "Remove YouTube /redirect URLs",
+ "title": "Replaces YouTube redirect by actual URLs, skipping redirect warning dialogue"
+ },
+ "shareShortener": {
+ "label": "Shorten YouTube video share link",
+ "title": "Shortens YouTube video share link (youtu.be) by stripping si/feature parameters from it"
+ },
+ "shortsAutoScroll": {
+ "label": "Shorts auto scroll",
+ "title": "Automatically scrolls to the next short"
+ },
+ "skipContinueWatching": {
+ "label": "Skip \"Video is paused. Continue watching?\"",
+ "title": "Skips the idle dialog that pauses video playback"
+ }
+ },
+ "title": "Miscellaneous settings"
+ },
+ "onScreenDisplaySettings": {
+ "color": {
+ "label": "Color",
+ "options": {
+ "blue": "Blue",
+ "green": "Green",
+ "orange": "Orange",
+ "pink": "Pink",
+ "purple": "Purple",
+ "red": "Red",
+ "white": "White",
+ "yellow": "Yellow"
+ },
+ "title": "Select the color for the On-Screen Display"
+ },
+ "hide": {
+ "label": "Hide Delay",
+ "title": "Specify the time, in milliseconds, before automatically hiding the On-Screen Display"
+ },
+ "opacity": {
+ "label": "Opacity",
+ "title": "Adjust the transparency of the On-Screen Display"
+ },
+ "padding": {
+ "label": "Padding",
+ "title": "Adjust the spacing around the On-Screen Display in pixels. This applies specifically to corner On-Screen Display."
+ },
+ "position": {
+ "label": "Position",
+ "options": {
+ "bottom_left": "Bottom Left",
+ "bottom_right": "Bottom Right",
+ "center": "Center",
+ "top_left": "Top Left",
+ "top_right": "Top Right"
+ },
+ "title": "Select the position of the On-Screen Display"
+ },
+ "title": "On-Screen Display Settings",
+ "type": {
+ "label": "Type",
+ "options": {
+ "circle": "Circle",
+ "line": "Line",
+ "no_display": "No display",
+ "text": "Text"
+ },
+ "title": "Select the type of On-Screen Display"
+ }
+ },
+ "playbackSpeed": {
+ "enable": {
+ "label": "Forced playback speed",
+ "title": "Sets the video speed to what you choose below"
+ },
+ "playbackSpeedButtons": {
+ "label": "Playback speed buttons",
+ "select": {
+ "label": "Playback buttons speed",
+ "title": "Amount of speed to be changed per click"
+ },
+ "title": "Adds buttons to increase or decrease the playback speed of the video you're watching"
+ },
+ "select": {
+ "label": "Player speed",
+ "title": "The speed to set the video to"
+ },
+ "title": "Playback speed settings"
+ },
+ "screenshotButton": {
+ "enable": {
+ "label": "Screenshot button",
+ "title": "Adds a button to the player to take a screenshot of the video"
+ },
+ "saveAs": {
+ "clipboard": "Clipboard",
+ "file": "File"
+ },
+ "selectFormat": {
+ "label": "Screenshot format",
+ "title": "The format to save the screenshot in"
+ },
+ "selectSaveAs": {
+ "label": "Screenshot save type",
+ "title": "The screenshot save type"
+ },
+ "title": "Screenshot settings"
+ },
+ "scrollWheelSpeedControl": {
+ "adjustmentSteps": {
+ "label": "Speed Change Per Scroll",
+ "title": "Adjust the speed change per scroll"
+ },
+ "enable": {
+ "label": "Scroll wheel speed control",
+ "title": "Press a modifier key to enable speed adjustment with the scroll wheel."
+ },
+ "optionLabel": "{{KEY}} key",
+ "select": {
+ "label": "Modifier key",
+ "title": "The modifier key to use"
+ },
+ "title": "Scroll wheel speed control settings"
+ },
+ "scrollWheelVolumeControl": {
+ "adjustmentSteps": {
+ "label": "Volume Change Per Scroll",
+ "title": "Adjust the volume change per scroll"
+ },
+ "enable": {
+ "label": "Scroll wheel volume control",
+ "title": "Lets you use the scroll wheel to control the volume of the video you're watching"
+ },
+ "holdModifierKey": {
+ "enable": {
+ "label": "Enable when holding modifier key",
+ "title": "Press a modifier key to enable volume adjustment with the scroll wheel."
+ },
+ "optionLabel": "{{KEY}} key",
+ "select": {
+ "label": "Modifier key",
+ "title": "The modifier key to use"
+ }
+ },
+ "holdRightClick": {
+ "enable": {
+ "label": "Enable when holding right click",
+ "title": "Hold right click to enable scroll wheel volume control"
+ }
+ },
+ "title": "Scroll wheel volume control settings"
+ },
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
+ "videoHistory": {
+ "enable": {
+ "label": "Track watched videos",
+ "title": "Keeps track of where you left off on videos you were watching and enables resuming playback"
+ },
+ "resumeType": {
+ "select": {
+ "label": "Resume type",
+ "options": {
+ "automatic": "Automatic",
+ "prompt": "Prompt"
+ },
+ "title": "Select how you want to resume videos"
+ }
+ },
+ "title": "Video history settings"
+ },
+ "volumeBoost": {
+ "boostAmount": {
+ "label": "Volume boost amount (dB)",
+ "title": "The amount to boost the volume by"
+ },
+ "enable": {
+ "label": "Volume boost",
+ "title": "Enable volume boost"
+ },
+ "mode": {
+ "select": {
+ "label": "Volume boost mode",
+ "options": {
+ "global": "Global",
+ "perVideo": "Per video"
+ },
+ "title": "Choose how volume boost is applied. 'Per video' allows enabling boost for each video individually in the feature menu. 'Global' applies boost to all videos when volume boost is enabled."
+ }
+ },
+ "title": "Volume boost settings"
+ },
+ "youtubeDeepDark": {
+ "author": "Author",
+ "co-authors": "Co-authors",
+ "colors": {
+ "colorShadow": {
+ "label": "Shadow color",
+ "title": "Color for shadows"
+ },
+ "dimmerText": {
+ "label": "Secondary text color",
+ "title": "Color for secondary text"
+ },
+ "hoverBackground": {
+ "label": "Hover background color",
+ "title": "Color for hover background"
+ },
+ "mainBackground": {
+ "label": "Main background color",
+ "title": "Color for main background"
+ },
+ "mainColor": {
+ "label": "Accent color",
+ "title": "Color for accent"
+ },
+ "mainText": {
+ "label": "Main text color",
+ "title": "Color for main text"
+ },
+ "secondBackground": {
+ "label": "Secondary background color",
+ "title": "Color for secondary background"
+ }
+ },
+ "enable": {
+ "label": "Enable selected theme",
+ "title": "Activate the selected theme for the page"
+ },
+ "select": {
+ "label": "Select theme",
+ "title": "Select a theme to be applied to the page"
+ },
+ "title": "YouTube Deep Dark Settings"
+ }
+ }
+ }
+}
diff --git a/public/locales/vi-VN.json b/public/locales/vi-VN.json
new file mode 100644
index 00000000..62fe0511
--- /dev/null
+++ b/public/locales/vi-VN.json
@@ -0,0 +1,550 @@
+{
+ "langCode": "en-US",
+ "langName": "English (US)",
+ "messages": {
+ "resumingVideo": "Resuming video at {{VIDEO_TIME}}",
+ "settingVolume": "Setting volume boost to {{VOLUME_BOOST_AMOUNT}}"
+ },
+ "pages": {
+ "content": {
+ "features": {
+ "featureMenu": {
+ "button": {
+ "label": "Feature menu"
+ }
+ },
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "Fast forward by {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "Rewind by {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "Hide end screen cards",
+ "toggle": {
+ "off": "Show end screen cards",
+ "on": "Hide end screen cards"
+ }
+ }
+ },
+ "loopButton": {
+ "button": {
+ "label": "Loop",
+ "toggle": {
+ "off": "Loop off",
+ "on": "Loop on"
+ }
+ }
+ },
+ "maximizePlayerButton": {
+ "button": {
+ "label": "Maximize",
+ "toggle": {
+ "off": "Maximize off",
+ "on": "Maximize on"
+ }
+ }
+ },
+ "openTranscriptButton": {
+ "button": {
+ "label": "Open transcript"
+ }
+ },
+ "playbackSpeedButtons": {
+ "buttons": {
+ "decreasePlaybackSpeedButton": {
+ "label": "Decrease Speed to {{SPEED}}"
+ },
+ "increasePlaybackSpeedButton": {
+ "label": "Increase Speed to {{SPEED}}"
+ }
+ },
+ "decreaseLimit": "Can't decrease further ({{SPEED}})",
+ "increaseLimit": "Can't increase further ({{SPEED}})"
+ },
+ "screenshotButton": {
+ "button": {
+ "label": "Screenshot"
+ },
+ "copiedToClipboard": "Screenshot copied to clipboard"
+ },
+ "videoHistory": {
+ "resumeButton": "Resume",
+ "resumePrompt": {
+ "close": "Close"
+ }
+ },
+ "volumeBoostButton": {
+ "button": {
+ "label": "Volume Boost",
+ "toggle": {
+ "off": "Volume boost off",
+ "on": "Volume boost on"
+ }
+ }
+ }
+ }
+ },
+ "options": {
+ "notifications": {
+ "error": {
+ "scrollWheelHoldModifierKey": {
+ "sameKey": {
+ "speedControl": "The scroll wheel speed control modifier key cannot be the same as the scroll wheel volume control modifier key.",
+ "volumeControl": "The scroll wheel volume control modifier key cannot be the same as the scroll wheel speed control modifier key."
+ }
+ }
+ },
+ "info": {
+ "reset": "All options have been reset to their default values.\nYou can now save the changes by clicking the \"Confirm\" button or discard them by closing this page or ignore this notification."
+ },
+ "success": {
+ "saved": "Options saved."
+ }
+ }
+ }
+ },
+ "settings": {
+ "clearData": {
+ "allDataDeleted": "All data has been deleted.",
+ "confirmAlert": "This will delete all extension data related to options. Continue?"
+ },
+ "sections": {
+ "automaticQuality": {
+ "enable": {
+ "label": "Automatic quality adjustment",
+ "title": "Automatically adjusts the video quality to the selected level."
+ },
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "Quality fallback strategy",
+ "options": {
+ "higher": "Higher",
+ "lower": "Lower"
+ },
+ "title": "The strategy to use when the selected quality is not available"
+ }
+ },
+ "select": {
+ "label": "Player quality",
+ "title": "The quality to set the video to"
+ },
+ "title": "Automatic quality settings"
+ },
+ "bottomButtons": {
+ "clear": {
+ "title": "Clears all data this extension has stored on your machine",
+ "value": "Clear Data"
+ },
+ "confirm": {
+ "title": "Confirm setting reset",
+ "value": "Confirm"
+ },
+ "openTab": {
+ "title": "Open extension settings in a new tab"
+ },
+ "reset": {
+ "title": "Resets all settings to their defaults, Click the confirm button to save the changes",
+ "value": "Reset"
+ }
+ },
+ "buttonPlacement": {
+ "select": {
+ "buttonNames": {
+ "decreasePlaybackSpeedButton": "Decrease Speed button",
+ "forwardButton": "Fast Forward button",
+ "hideEndScreenCardsButton": "Hide end screen cards button",
+ "increasePlaybackSpeedButton": "Increase Speed button",
+ "loopButton": "Loop button",
+ "maximizePlayerButton": "Maximize button",
+ "openTranscriptButton": "Open Transcript button",
+ "rewindButton": "Rewind button",
+ "screenshotButton": "Screenshot button",
+ "volumeBoostButton": "Volume Boost button"
+ },
+ "options": {
+ "below_player": {
+ "placement": "below the player controls",
+ "value": "Below Player"
+ },
+ "feature_menu": {
+ "placement": "in the feature menu",
+ "value": "Feature Menu"
+ },
+ "player_controls_left": {
+ "placement": "on the left side of player controls",
+ "value": "Left Controls"
+ },
+ "player_controls_right": {
+ "placement": "on the right side of player controls",
+ "value": "Right Controls"
+ }
+ },
+ "title": "Place the {{BUTTON_NAME}} {{PLACEMENT}}"
+ },
+ "title": "Button Placement Settings"
+ },
+ "customCSS": {
+ "editor": {
+ "collapse": "Collapse Editor",
+ "expand": "Expand Editor",
+ "noProblems": "No problems found."
+ },
+ "enable": {
+ "label": "Enable custom CSS",
+ "title": "Enables custom CSS to be applied to the page"
+ },
+ "title": "Custom CSS Settings"
+ },
+ "featureMenu": {
+ "openType": {
+ "select": {
+ "label": "Menu Activation Type",
+ "options": {
+ "click": "Click",
+ "hover": "Hover"
+ },
+ "title": "Select the method to activate the feature menu"
+ },
+ "title": "Feature menu settings"
+ }
+ },
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "Enable forward/rewind buttons",
+ "title": "Adds forward and rewind buttons to the video player"
+ },
+ "time": {
+ "label": "Forward/rewind time",
+ "title": "The amount of time to forward/rewind the video by"
+ },
+ "title": "Forward/rewind button settings"
+ },
+ "importExportSettings": {
+ "exportButton": {
+ "success": "Settings successfully exported",
+ "title": "Export settings to a JSON file",
+ "value": "Export Settings"
+ },
+ "importButton": {
+ "error": {
+ "unknown": "Error importing settings. Please check the file format.\nAn unknown error occurred.",
+ "validation": "Error importing settings. Please check the file format.\n{{ERROR_MESSAGE}}"
+ },
+ "success": "Settings imported successfully",
+ "title": "Import settings from a JSON file",
+ "value": "Import Settings"
+ }
+ },
+ "language": {
+ "select": {
+ "label": "Language",
+ "title": "The language to use for the extension"
+ },
+ "title": "Language"
+ },
+ "miscellaneous": {
+ "features": {
+ "automaticTheaterMode": {
+ "label": "Automatic theater mode",
+ "title": "Automatically enables theater mode when you load a video"
+ },
+ "hideEndScreenCards": {
+ "label": "Hide end screen cards",
+ "title": "Hides the cards at the end of the video"
+ },
+ "hideEndScreenCardsButton": {
+ "label": "Hide end screen cards button",
+ "title": "Adds a button to show/hide the cards at the end of the video"
+ },
+ "hideLiveStreamChat": {
+ "label": "Hide live stream chat",
+ "title": "Hides the live stream chat"
+ },
+ "hidePaidPromotionBanner": {
+ "label": "Hide paid promotion banner",
+ "title": "Hides the banner that appears when you watch a video that has a paid promotion"
+ },
+ "hideScrollbar": {
+ "label": "Hide scrollbar",
+ "title": "Hides the pages scrollbar"
+ },
+ "hideShorts": {
+ "label": "Hide shorts",
+ "title": "Hides all shorts"
+ },
+ "hideTranslateComment": {
+ "label": "Hide translate comment button",
+ "title": "Hides 'Translate to Language' button under comments"
+ },
+ "loopButton": {
+ "label": "Loop button",
+ "title": "Adds a button to the feature menu to loop the video you're watching"
+ },
+ "maximizePlayerButton": {
+ "label": "Maximize player button",
+ "title": "Adds a button to the feature menu to maximize the player"
+ },
+ "openTranscriptButton": {
+ "label": "Open transcript button",
+ "title": "Adds a button to the feature menu to open the transcript of the video you're watching"
+ },
+ "openYouTubeSettingsOnHover": {
+ "label": "Open YouTube settings on hover",
+ "title": "Opens the YouTube settings menu when you hover over the settings button"
+ },
+ "pauseBackgroundPlayers": {
+ "label": "Pause background players",
+ "title": "Pauses video players in background tabs when you start a new player in foreground tab"
+ },
+ "remainingTime": {
+ "label": "Remaining time",
+ "title": "Shows the remaining time of the video you're watching"
+ },
+ "rememberLastVolume": {
+ "label": "Remember last volume",
+ "title": "Remembers the volume of the last video you were watching and sets it when you open a new video"
+ },
+ "removeRedirect": {
+ "label": "Remove YouTube /redirect URLs",
+ "title": "Replaces YouTube redirect by actual URLs, skipping redirect warning dialogue"
+ },
+ "shareShortener": {
+ "label": "Shorten YouTube video share link",
+ "title": "Shortens YouTube video share link (youtu.be) by stripping si/feature parameters from it"
+ },
+ "shortsAutoScroll": {
+ "label": "Shorts auto scroll",
+ "title": "Automatically scrolls to the next short"
+ },
+ "skipContinueWatching": {
+ "label": "Skip \"Video is paused. Continue watching?\"",
+ "title": "Skips the idle dialog that pauses video playback"
+ }
+ },
+ "title": "Miscellaneous settings"
+ },
+ "onScreenDisplaySettings": {
+ "color": {
+ "label": "Color",
+ "options": {
+ "blue": "Blue",
+ "green": "Green",
+ "orange": "Orange",
+ "pink": "Pink",
+ "purple": "Purple",
+ "red": "Red",
+ "white": "White",
+ "yellow": "Yellow"
+ },
+ "title": "Select the color for the On-Screen Display"
+ },
+ "hide": {
+ "label": "Hide Delay",
+ "title": "Specify the time, in milliseconds, before automatically hiding the On-Screen Display"
+ },
+ "opacity": {
+ "label": "Opacity",
+ "title": "Adjust the transparency of the On-Screen Display"
+ },
+ "padding": {
+ "label": "Padding",
+ "title": "Adjust the spacing around the On-Screen Display in pixels. This applies specifically to corner On-Screen Display."
+ },
+ "position": {
+ "label": "Position",
+ "options": {
+ "bottom_left": "Bottom Left",
+ "bottom_right": "Bottom Right",
+ "center": "Center",
+ "top_left": "Top Left",
+ "top_right": "Top Right"
+ },
+ "title": "Select the position of the On-Screen Display"
+ },
+ "title": "On-Screen Display Settings",
+ "type": {
+ "label": "Type",
+ "options": {
+ "circle": "Circle",
+ "line": "Line",
+ "no_display": "No display",
+ "text": "Text"
+ },
+ "title": "Select the type of On-Screen Display"
+ }
+ },
+ "playbackSpeed": {
+ "enable": {
+ "label": "Forced playback speed",
+ "title": "Sets the video speed to what you choose below"
+ },
+ "playbackSpeedButtons": {
+ "label": "Playback speed buttons",
+ "select": {
+ "label": "Playback buttons speed",
+ "title": "Amount of speed to be changed per click"
+ },
+ "title": "Adds buttons to increase or decrease the playback speed of the video you're watching"
+ },
+ "select": {
+ "label": "Player speed",
+ "title": "The speed to set the video to"
+ },
+ "title": "Playback speed settings"
+ },
+ "screenshotButton": {
+ "enable": {
+ "label": "Screenshot button",
+ "title": "Adds a button to the player to take a screenshot of the video"
+ },
+ "saveAs": {
+ "clipboard": "Clipboard",
+ "file": "File"
+ },
+ "selectFormat": {
+ "label": "Screenshot format",
+ "title": "The format to save the screenshot in"
+ },
+ "selectSaveAs": {
+ "label": "Screenshot save type",
+ "title": "The screenshot save type"
+ },
+ "title": "Screenshot settings"
+ },
+ "scrollWheelSpeedControl": {
+ "adjustmentSteps": {
+ "label": "Speed Change Per Scroll",
+ "title": "Adjust the speed change per scroll"
+ },
+ "enable": {
+ "label": "Scroll wheel speed control",
+ "title": "Press a modifier key to enable speed adjustment with the scroll wheel."
+ },
+ "optionLabel": "{{KEY}} key",
+ "select": {
+ "label": "Modifier key",
+ "title": "The modifier key to use"
+ },
+ "title": "Scroll wheel speed control settings"
+ },
+ "scrollWheelVolumeControl": {
+ "adjustmentSteps": {
+ "label": "Volume Change Per Scroll",
+ "title": "Adjust the volume change per scroll"
+ },
+ "enable": {
+ "label": "Scroll wheel volume control",
+ "title": "Lets you use the scroll wheel to control the volume of the video you're watching"
+ },
+ "holdModifierKey": {
+ "enable": {
+ "label": "Enable when holding modifier key",
+ "title": "Press a modifier key to enable volume adjustment with the scroll wheel."
+ },
+ "optionLabel": "{{KEY}} key",
+ "select": {
+ "label": "Modifier key",
+ "title": "The modifier key to use"
+ }
+ },
+ "holdRightClick": {
+ "enable": {
+ "label": "Enable when holding right click",
+ "title": "Hold right click to enable scroll wheel volume control"
+ }
+ },
+ "title": "Scroll wheel volume control settings"
+ },
+ "settingSearch": {
+ "placeholder": "Search for a setting"
+ },
+ "videoHistory": {
+ "enable": {
+ "label": "Track watched videos",
+ "title": "Keeps track of where you left off on videos you were watching and enables resuming playback"
+ },
+ "resumeType": {
+ "select": {
+ "label": "Resume type",
+ "options": {
+ "automatic": "Automatic",
+ "prompt": "Prompt"
+ },
+ "title": "Select how you want to resume videos"
+ }
+ },
+ "title": "Video history settings"
+ },
+ "volumeBoost": {
+ "boostAmount": {
+ "label": "Volume boost amount (dB)",
+ "title": "The amount to boost the volume by"
+ },
+ "enable": {
+ "label": "Volume boost",
+ "title": "Enable volume boost"
+ },
+ "mode": {
+ "select": {
+ "label": "Volume boost mode",
+ "options": {
+ "global": "Global",
+ "perVideo": "Per video"
+ },
+ "title": "Choose how volume boost is applied. 'Per video' allows enabling boost for each video individually in the feature menu. 'Global' applies boost to all videos when volume boost is enabled."
+ }
+ },
+ "title": "Volume boost settings"
+ },
+ "youtubeDeepDark": {
+ "author": "Author",
+ "co-authors": "Co-authors",
+ "colors": {
+ "colorShadow": {
+ "label": "Shadow color",
+ "title": "Color for shadows"
+ },
+ "dimmerText": {
+ "label": "Secondary text color",
+ "title": "Color for secondary text"
+ },
+ "hoverBackground": {
+ "label": "Hover background color",
+ "title": "Color for hover background"
+ },
+ "mainBackground": {
+ "label": "Main background color",
+ "title": "Color for main background"
+ },
+ "mainColor": {
+ "label": "Accent color",
+ "title": "Color for accent"
+ },
+ "mainText": {
+ "label": "Main text color",
+ "title": "Color for main text"
+ },
+ "secondBackground": {
+ "label": "Secondary background color",
+ "title": "Color for secondary background"
+ }
+ },
+ "enable": {
+ "label": "Enable selected theme",
+ "title": "Activate the selected theme for the page"
+ },
+ "select": {
+ "label": "Select theme",
+ "title": "Select a theme to be applied to the page"
+ },
+ "title": "YouTube Deep Dark Settings"
+ }
+ }
+ }
+}
diff --git a/public/locales/zh-CN.json b/public/locales/zh-CN.json
index 1fbbf6a2..b39b0b07 100644
--- a/public/locales/zh-CN.json
+++ b/public/locales/zh-CN.json
@@ -13,6 +13,25 @@
"label": "功能菜单"
}
},
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "向前快进 {{TIME}}"
+ },
+ "rewindButton": {
+ "label": "向后快退 {{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "隐藏结束界面卡片",
+ "toggle": {
+ "off": "显示结束界面卡片",
+ "on": "隐藏结束界面卡片"
+ }
+ }
+ },
"loopButton": {
"button": {
"label": "循环播放",
@@ -101,6 +120,16 @@
"label": "自动质量调整",
"title": "自动调整视频质量到所选等级。"
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "质量回退策略",
+ "options": {
+ "higher": "升高",
+ "lower": "降低"
+ },
+ "title": "当所选质量不可用时使用的策略"
+ }
+ },
"select": {
"label": "播放质量",
"title": "将视频质量设为"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "降低速度按钮",
+ "forwardButton": "快进按钮",
+ "hideEndScreenCardsButton": "隐藏结束界面卡片按钮",
"increasePlaybackSpeedButton": "增加速度按钮",
"loopButton": "循环按钮",
"maximizePlayerButton": "最大化按钮",
"openTranscriptButton": "转写文稿按钮",
+ "rewindButton": "快退按钮",
"screenshotButton": "屏幕截图按钮",
"volumeBoostButton": "音量增强按钮"
},
@@ -182,6 +214,17 @@
"title": "功能菜单设置"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "启用快进/快退按钮",
+ "title": "给视频播放器添加快进/快退按钮"
+ },
+ "time": {
+ "label": "快进/快退时间",
+ "title": "快进/快退视频的时间长度"
+ },
+ "title": "快进/快退按钮设置"
+ },
"importExportSettings": {
"exportButton": {
"success": "导出配置成功",
@@ -212,13 +255,21 @@
"title": "当视频打开时,自动启用剧场模式"
},
"hideEndScreenCards": {
- "label": "Hide end screen cards",
- "title": "Hides the cards at the end of the video"
+ "label": "隐藏结束界面卡片",
+ "title": "隐藏视频末尾的卡片"
+ },
+ "hideEndScreenCardsButton": {
+ "label": "隐藏结束界面卡片按钮",
+ "title": "添加按钮以显示/隐藏视频末尾的卡片"
},
"hideLiveStreamChat": {
"label": "隐藏直播聊天",
"title": "隐藏直播聊天"
},
+ "hidePaidPromotionBanner": {
+ "label": "隐藏付费推广横幅",
+ "title": "隐藏当您观看带有付费促销的视频时出现的横幅广告"
+ },
"hideScrollbar": {
"label": "启用隐藏滚动条",
"title": "隐藏页面滚动条"
@@ -410,6 +461,9 @@
},
"title": "滚轮控制音量设置"
},
+ "settingSearch": {
+ "placeholder": "搜索设置"
+ },
"videoHistory": {
"enable": {
"label": "记录已观看视频",
diff --git a/public/locales/zh-TW.json b/public/locales/zh-TW.json
index d3abd03c..920b35bd 100644
--- a/public/locales/zh-TW.json
+++ b/public/locales/zh-TW.json
@@ -10,7 +10,26 @@
"features": {
"featureMenu": {
"button": {
- "label": "Feature menu"
+ "label": "功能選單"
+ }
+ },
+ "forwardRewindButtons": {
+ "buttons": {
+ "forwardButton": {
+ "label": "快轉{{TIME}}"
+ },
+ "rewindButton": {
+ "label": "倒帶{{TIME}}"
+ }
+ }
+ },
+ "hideEndScreenCardsButton": {
+ "button": {
+ "label": "隱藏片尾資訊卡",
+ "toggle": {
+ "off": "顯示片尾資訊卡",
+ "on": "隱藏片尾資訊卡"
+ }
}
},
"loopButton": {
@@ -24,16 +43,16 @@
},
"maximizePlayerButton": {
"button": {
- "label": "Maximize",
+ "label": "最大化",
"toggle": {
- "off": "Maximize off",
- "on": "Maximize on"
+ "off": "關閉最大化",
+ "on": "啟用最大化"
}
}
},
"openTranscriptButton": {
"button": {
- "label": "Open transcript"
+ "label": "打開文字記錄"
}
},
"playbackSpeedButtons": {
@@ -62,10 +81,10 @@
},
"volumeBoostButton": {
"button": {
- "label": "Volume Boost",
+ "label": "音量增強",
"toggle": {
- "off": "Volume boost off",
- "on": "Volume boost on"
+ "off": "關閉音量增強",
+ "on": "啟用音量增強"
}
}
}
@@ -101,6 +120,16 @@
"label": "自動畫質調整",
"title": "自動調整到指定畫質"
},
+ "fallbackQualityStrategy": {
+ "select": {
+ "label": "畫質後備策略",
+ "options": {
+ "higher": "較高",
+ "lower": "較低"
+ },
+ "title": "所選畫質不適用時的策略"
+ }
+ },
"select": {
"label": "播放畫質",
"title": "設定影片播放畫質"
@@ -128,10 +157,13 @@
"select": {
"buttonNames": {
"decreasePlaybackSpeedButton": "減慢速度按鈕",
+ "forwardButton": "快轉按鈕",
+ "hideEndScreenCardsButton": "隱藏片尾資訊卡按鈕",
"increasePlaybackSpeedButton": "加快速度按妞",
"loopButton": "循環播放按鈕",
"maximizePlayerButton": "最大化按鈕",
"openTranscriptButton": "開啟文字記錄按鈕",
+ "rewindButton": "倒帶按鈕",
"screenshotButton": "螢幕截圖按鈕",
"volumeBoostButton": "音量增強按鈕"
},
@@ -182,6 +214,17 @@
"title": "功能選單設定"
}
},
+ "forwardRewindButtons": {
+ "enable": {
+ "label": "啟用快轉倒帶按鈕",
+ "title": "在播放器加入快轉和倒帶按鈕"
+ },
+ "time": {
+ "label": "快轉/倒帶時間",
+ "title": "每次快轉/倒帶的時間"
+ },
+ "title": "快轉/倒帶按鈕設定"
+ },
"importExportSettings": {
"exportButton": {
"success": "設定已成功匯出",
@@ -212,13 +255,21 @@
"title": "載入影片時自動啟用劇院模式"
},
"hideEndScreenCards": {
- "label": "Hide end screen cards",
- "title": "Hides the cards at the end of the video"
+ "label": "隱藏片尾資訊卡",
+ "title": "隱藏影片片尾的資訊卡"
+ },
+ "hideEndScreenCardsButton": {
+ "label": "隱藏片尾資訊卡按鈕",
+ "title": "Adds a button to show/hide the cards at the end of the video"
},
"hideLiveStreamChat": {
"label": "隱藏直播聊天室",
"title": "隱藏直播的聊天室"
},
+ "hidePaidPromotionBanner": {
+ "label": "隱藏付費推廣橫幅",
+ "title": "隱藏當影片帶有付費推廣時顯示的橫幅"
+ },
"hideScrollbar": {
"label": "隱藏捲軸",
"title": "隱藏頁面捲軸"
@@ -410,6 +461,9 @@
},
"title": "滾輪音量控制設定"
},
+ "settingSearch": {
+ "placeholder": "搜尋設定"
+ },
"videoHistory": {
"enable": {
"label": "記住已觀看的影片",
@@ -477,7 +531,7 @@
"title": "主要文字的顏色"
},
"secondBackground": {
- "label": "Secondary background color",
+ "label": "次要背景顏色",
"title": "次要背景顏色"
}
},
diff --git a/src/components/Inputs/CSSEditor/CSSEditor.tsx b/src/components/Inputs/CSSEditor/CSSEditor.tsx
index 64743a05..b9b44971 100644
--- a/src/components/Inputs/CSSEditor/CSSEditor.tsx
+++ b/src/components/Inputs/CSSEditor/CSSEditor.tsx
@@ -1,8 +1,8 @@
import { type Nullable } from "@/src/types";
-import { type editor, monaco } from "@/src/utils/monaco";
+import { type editor } from "@/src/utils/monaco";
import { cn, debounce } from "@/src/utils/utilities";
import { Editor, type Monaco } from "@monaco-editor/react";
-import React, { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
+import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
import EditorProblems from "./EditorProblems";
import ExpandButton from "./ExpandButton";
@@ -19,13 +19,7 @@ type ScrollPosition = {
x: number;
y: number;
};
-type CursorPosition = {
- columnNumber: number;
- lineNumber: number;
-};
-type CSSEditorState = {
- cursorPosition: CursorPosition;
-};
+
// TODO: add share custom css button with integration with yt-enhancer.dev
const CSSEditor: React.FC = ({ className, id, onChange, value }) => {
@@ -33,17 +27,14 @@ const CSSEditor: React.FC = ({ className, id, onChange, value })
const monacoRef = useRef>(null);
const editorProblemsRef = useRef>(null);
const expandButtonRef = useRef>(null);
-
+ const [editorValue, setEditorValue] = useState(value);
const [isEditorExpanded, setEditorExpanded] = useState(false);
- const [editorState, setEditorState] = useState({
- cursorPosition: { columnNumber: 1, lineNumber: 1 }
- });
+ const [initialBodyOverflowValue, setInitialBodyOverflowValue] = useState("");
const [pageScrollPosition, setPageScrollPosition] = useState({ x: 0, y: 0 });
const [problems, setProblems] = useState([]);
- const [editorHeight, setEditorHeight] = useState(700);
- const editorPosition = editorRef.current?.getPosition();
- const editorScrollTop = editorRef.current?.getScrollTop();
- const getEditorHeight = () => {
+ const [windowResized, setWindowResized] = useState(0);
+
+ const expandedEditorHeight = useMemo(() => {
const {
documentElement: { clientHeight: documentHeight }
} = document;
@@ -51,80 +42,57 @@ const CSSEditor: React.FC = ({ className, id, onChange, value })
const editorProblemsHeight = editorProblemsRef.current?.clientHeight ?? 0;
const editorHeight = documentHeight - (expandButtonHeight + editorProblemsHeight + 12);
return editorHeight;
- };
- const handleEditorDidMount = (editor: editor.IStandaloneCodeEditor, monaco: Monaco) => {
+ }, [problems, windowResized, editorProblemsRef.current?.clientHeight, expandButtonRef.current?.clientHeight]);
+
+ const handleEditorDidMount = useCallback((editor: editor.IStandaloneCodeEditor, monaco: Monaco) => {
editorRef.current = editor;
monacoRef.current = monaco;
- setEditorHeight(getEditorHeight());
- };
- const handleEditorChange = useCallback(
- (value: string | undefined, ev: editor.IModelContentChangedEvent) => debounce(onChange, 250)(value, ev),
- [onChange]
+ }, []);
+
+ const debouncedOnChange = useCallback(debounce(onChange, 300), []);
+
+ const setEditorValueCallback = useCallback(
+ (value: string = "") => {
+ setEditorValue(value);
+ debouncedOnChange(value);
+ },
+ [debouncedOnChange]
);
+ useEffect(() => {
+ setEditorValue(value);
+ }, [value]);
+
const expandEditor = () => {
const currentScrollPosition = { x: window.scrollX, y: window.scrollY };
setPageScrollPosition(currentScrollPosition);
- const currentPos = editorRef.current?.getPosition();
- setEditorState({
- cursorPosition: {
- columnNumber: currentPos?.column ?? 1,
- lineNumber: currentPos?.lineNumber ?? 1
- }
- });
setEditorExpanded(true);
+
+ setInitialBodyOverflowValue(document.body.style.overflow);
+ document.body.style.overflow = "hidden";
+
editorRef.current?.focus();
};
const collapseEditor = () => {
+ document.body.style.overflow = initialBodyOverflowValue;
setEditorExpanded(false);
editorRef.current?.focus();
};
- useEffect(() => {
- if (editorRef.current) {
- const { current: editor } = editorRef;
- const position = editor.getPosition();
- setEditorState({
- cursorPosition: {
- columnNumber: position?.column ?? 1,
- lineNumber: position?.lineNumber ?? 1
- }
- });
- }
- }, [editorPosition, editorScrollTop]);
useLayoutEffect(() => {
if (!isEditorExpanded) {
window.scrollTo(pageScrollPosition.x, pageScrollPosition.y);
}
}, [isEditorExpanded, pageScrollPosition]);
- useEffect(() => {
- if (editorRef.current) {
- const { current: editor } = editorRef;
- const {
- cursorPosition: { columnNumber, lineNumber }
- } = editorState;
- const position = new monaco.Position(lineNumber, columnNumber);
- editor.setPosition(position);
- }
- }, [value, editorState]);
- useEffect(() => {
- if (editorProblemsRef.current && expandButtonRef.current) {
- setEditorHeight(getEditorHeight());
- }
- }, [problems]);
- useEffect(() => {
- setEditorHeight(getEditorHeight());
- const handleResize = () => {
- if (editorProblemsRef.current && expandButtonRef.current) {
- setEditorHeight(getEditorHeight());
- }
- };
- window.addEventListener("resize", handleResize);
+ useEffect(() => {
+ // Trigger any effect that depends on window size
+ const onResize = () => setWindowResized(Math.random());
+ window.addEventListener("resize", onResize);
// Clean up the event listener when the component unmounts
return () => {
- window.removeEventListener("resize", handleResize);
+ window.removeEventListener("resize", onResize);
};
}, []);
@@ -146,14 +114,14 @@ const CSSEditor: React.FC = ({ className, id, onChange, value })
/>
= ({ className, disabled, id, labe
false
);
const togglePickerVisibility = () => setIsColorPickerVisible(!isColorPickerVisible);
- useClickOutside(colorPickerRef, togglePickerVisibility);
+ useClickOutside(colorPickerRef, () => (isColorPickerVisible ? togglePickerVisibility() : void 0));
return (