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
mist8kengas

🌍 💻 🐛 Nathan
Nathan

🎨 💻 🌍 Commonly
Commonly

🐛 - Eduardo Aznar
Eduardo Aznar

🌍 + Eduardo Aznar
Eduardo Aznar

🌍 💻 Lamyergeier
Lamyergeier

🤔 Jackal Chan
Jackal Chan

🌍 livingflore
livingflore

🌍 💻 @@ -306,8 +306,10 @@ Contributions to the YouTube Enhancer Extension are welcome! If you'd like to co Secret-Peter
Secret-Peter

🌍 - Carlos Ramos Luna
Carlos Ramos Luna

🤔 Marcos C.R.
Marcos C.R.

🤔 + Carlos Ramos Luna
Carlos Ramos Luna

🤔 + Mabra51
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 (