aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar kytwb <kytwb@pm.me>2021-12-16 12:02:18 +0100
committerLibravatar kytwb <kytwb@pm.me>2021-12-16 12:02:18 +0100
commit36c23f67c3783b3986b21ea85d56fc0e37941a0c (patch)
tree3c9138790d672ff84071bba8e441149c245a80e7
parentBumped up ferdi to '5.6.3' (diff)
parentIterate on README [skip ci] (diff)
downloadferdium-app-36c23f67c3783b3986b21ea85d56fc0e37941a0c.tar.gz
ferdium-app-36c23f67c3783b3986b21ea85d56fc0e37941a0c.tar.zst
ferdium-app-36c23f67c3783b3986b21ea85d56fc0e37941a0c.zip
Merge branch 'develop' into release
# Conflicts: # package-lock.json # package.json
-rw-r--r--.all-contributorsrc34
-rw-r--r--.eslintrc.js8
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.md45
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.yml121
-rw-r--r--.github/ISSUE_TEMPLATE/config.yml5
-rw-r--r--.github/ISSUE_TEMPLATE/feature_request.md20
-rw-r--r--.github/ISSUE_TEMPLATE/feature_request.yml48
-rw-r--r--.github/ISSUE_TEMPLATE/open_issue.md8
-rw-r--r--.github/ISSUE_TEMPLATE/open_issue.yml13
-rw-r--r--.github/config.yml17
-rw-r--r--.github/release.yml22
-rw-r--r--.github/workflows/builds.yml (renamed from .github/workflows/ferdi-builds.yml)8
-rw-r--r--.github/workflows/dependency-updates.yml18
-rw-r--r--.github/workflows/twitter-together.yml26
-rw-r--r--CONTRIBUTING.md9
-rw-r--r--Dockerfile2
-rw-r--r--README.md293
-rw-r--r--branding/Ferdi.svg12
-rw-r--r--docs/example-feature/actions.js10
-rw-r--r--docs/example-feature/api.js5
-rw-r--r--docs/example-feature/state.js14
-rw-r--r--docs/example-feature/store.js36
-rw-r--r--package-lock.json4422
-rw-r--r--package.json52
m---------recipes0
-rw-r--r--src/I18n.tsx (renamed from src/I18n.js)30
-rw-r--r--src/api/server/ServerApi.ts (renamed from src/api/server/ServerApi.js)99
-rw-r--r--src/api/utils/auth.ts2
-rw-r--r--src/assets/images/logo-beard-only.svg12
-rw-r--r--src/components/auth/AuthLayout.js3
-rw-r--r--src/components/auth/ChangeServer.js5
-rw-r--r--src/components/auth/Import.js3
-rw-r--r--src/components/auth/Invite.js7
-rw-r--r--src/components/auth/Locked.js10
-rw-r--r--src/components/auth/Login.js47
-rw-r--r--src/components/auth/Password.js5
-rw-r--r--src/components/auth/SetupAssistant.js8
-rw-r--r--src/components/auth/Signup.js37
-rw-r--r--src/components/auth/Welcome.js36
-rw-r--r--src/components/layout/AppLayout.js6
-rw-r--r--src/components/layout/Sidebar.js4
-rw-r--r--src/components/services/content/ConnectionLostBanner.js8
-rw-r--r--src/components/services/content/ErrorHandlers/WebviewErrorHandler.js6
-rw-r--r--src/components/services/content/ServiceDisabled.js7
-rw-r--r--src/components/services/content/ServiceView.js27
-rw-r--r--src/components/services/content/ServiceWebview.js17
-rw-r--r--src/components/services/content/Services.js16
-rw-r--r--src/components/services/content/WebviewCrashHandler.js3
-rw-r--r--src/components/services/tabs/TabBarSortableList.js3
-rw-r--r--src/components/services/tabs/TabItem.js19
-rw-r--r--src/components/services/tabs/Tabbar.js3
-rw-r--r--src/components/settings/SettingsLayout.js3
-rw-r--r--src/components/settings/account/AccountDashboard.js3
-rw-r--r--src/components/settings/navigation/SettingsNavigation.js4
-rw-r--r--src/components/settings/recipes/RecipeItem.js3
-rw-r--r--src/components/settings/recipes/RecipesDashboard.js50
-rw-r--r--src/components/settings/services/EditServiceForm.js4
-rw-r--r--src/components/settings/services/ServiceError.js3
-rw-r--r--src/components/settings/services/ServiceItem.js3
-rw-r--r--src/components/settings/services/ServicesDashboard.js5
-rw-r--r--src/components/settings/settings/EditSettingsForm.js69
-rw-r--r--src/components/settings/supportFerdi/SupportFerdiDashboard.tsx33
-rw-r--r--src/components/settings/team/TeamDashboard.js66
-rw-r--r--src/components/settings/user/EditUserForm.js3
-rw-r--r--src/components/ui/AppLoader/index.tsx7
-rw-r--r--src/components/ui/Button.js6
-rw-r--r--src/components/ui/FAB.tsx5
-rw-r--r--src/components/ui/FullscreenLoader/index.js9
-rw-r--r--src/components/ui/ImageUpload.tsx10
-rw-r--r--src/components/ui/InfoBar.js3
-rw-r--r--src/components/ui/Infobox.js3
-rw-r--r--src/components/ui/Input.js12
-rw-r--r--src/components/ui/Link.js8
-rw-r--r--src/components/ui/Loader.tsx4
-rw-r--r--src/components/ui/Modal/index.tsx3
-rw-r--r--src/components/ui/Radio.tsx3
-rw-r--r--src/components/ui/SearchInput.tsx3
-rw-r--r--src/components/ui/Select.js3
-rw-r--r--src/components/ui/ServiceIcon.js6
-rw-r--r--src/components/ui/Slider.js3
-rw-r--r--src/components/ui/StatusBarTargetUrl.js3
-rw-r--r--src/components/ui/Tabs/Tabs.js3
-rw-r--r--src/components/ui/Toggle.js3
-rw-r--r--src/components/ui/ToggleRaw.js3
-rw-r--r--src/components/ui/WebviewLoader/index.js6
-rw-r--r--src/components/ui/badge/ProBadge.tsx9
-rw-r--r--src/components/ui/badge/index.tsx7
-rw-r--r--src/components/ui/button/index.tsx14
-rw-r--r--src/components/ui/error/index.tsx2
-rw-r--r--src/components/ui/headline/index.tsx10
-rw-r--r--src/components/ui/icon/index.tsx7
-rw-r--r--src/components/ui/infobox/index.tsx11
-rw-r--r--src/components/ui/input/index.tsx8
-rw-r--r--src/components/ui/label/index.tsx13
-rw-r--r--src/components/ui/loader/index.tsx18
-rw-r--r--src/components/ui/select/index.tsx11
-rw-r--r--src/components/ui/textarea/index.tsx10
-rw-r--r--src/components/ui/toggle/index.tsx10
-rw-r--r--src/components/ui/typings/generic.ts9
-rw-r--r--src/components/ui/wrapper/index.tsx9
-rw-r--r--src/components/util/ErrorBoundary/index.js5
-rw-r--r--src/config.ts6
-rw-r--r--src/containers/auth/AuthLayoutContainer.js6
-rw-r--r--src/containers/auth/ChangeServerScreen.js6
-rw-r--r--src/containers/auth/ImportScreen.js6
-rw-r--r--src/containers/auth/InviteScreen.js6
-rw-r--r--src/containers/auth/LockedScreen.js22
-rw-r--r--src/containers/auth/LoginScreen.js7
-rw-r--r--src/containers/auth/PasswordScreen.js6
-rw-r--r--src/containers/auth/SetupAssistantScreen.js28
-rw-r--r--src/containers/auth/SignupScreen.js7
-rw-r--r--src/containers/auth/WelcomeScreen.js6
-rw-r--r--src/containers/layout/AppLayoutContainer.js6
-rw-r--r--src/containers/settings/AccountScreen.js6
-rw-r--r--src/containers/settings/EditServiceScreen.js8
-rw-r--r--src/containers/settings/EditSettingsScreen.js23
-rw-r--r--src/containers/settings/EditUserScreen.js8
-rw-r--r--src/containers/settings/InviteScreen.js6
-rw-r--r--src/containers/settings/RecipesScreen.js6
-rw-r--r--src/containers/settings/ServicesScreen.js6
-rw-r--r--src/containers/settings/SettingsWindow.js6
-rw-r--r--src/containers/settings/SupportScreen.js5
-rw-r--r--src/containers/settings/TeamScreen.js6
-rw-r--r--src/electron/ipc-api/download.ts2
-rw-r--r--src/features/appearance/index.ts51
-rw-r--r--src/features/basicAuth/Component.js6
-rw-r--r--src/features/basicAuth/index.ts4
-rw-r--r--src/features/communityRecipes/store.ts2
-rw-r--r--src/features/nightlyBuilds/Component.js22
-rw-r--r--src/features/publishDebugInfo/Component.js160
-rw-r--r--src/features/publishDebugInfo/index.ts (renamed from src/features/publishDebugInfo/index.js)0
-rw-r--r--src/features/quickSwitch/Component.js24
-rw-r--r--src/features/todos/components/TodosWebview.js7
-rw-r--r--src/features/todos/containers/TodosScreen.js6
-rw-r--r--src/features/todos/store.js4
-rw-r--r--src/features/webControls/components/WebControls.js6
-rw-r--r--src/features/webControls/containers/WebControlsScreen.js6
-rw-r--r--src/features/workspaces/components/CreateWorkspaceForm.js12
-rw-r--r--src/features/workspaces/components/EditWorkspaceForm.js23
-rw-r--r--src/features/workspaces/components/WorkspaceDrawer.js6
-rw-r--r--src/features/workspaces/components/WorkspaceDrawerItem.js6
-rw-r--r--src/features/workspaces/components/WorkspaceItem.tsx6
-rw-r--r--src/features/workspaces/components/WorkspaceServiceListItem.tsx6
-rw-r--r--src/features/workspaces/components/WorkspaceSwitchingIndicator.js8
-rw-r--r--src/features/workspaces/components/WorkspacesDashboard.js16
-rw-r--r--src/features/workspaces/containers/EditWorkspaceScreen.tsx4
-rw-r--r--src/features/workspaces/containers/WorkspacesScreen.tsx4
-rw-r--r--src/features/workspaces/store.js4
-rw-r--r--src/helpers/async-helpers.ts1
-rw-r--r--src/helpers/recipe-helpers.ts1
-rw-r--r--src/i18n/locales/af.json11
-rw-r--r--src/i18n/locales/ar.json11
-rw-r--r--src/i18n/locales/be.json11
-rw-r--r--src/i18n/locales/bs.json11
-rw-r--r--src/i18n/locales/ca.json11
-rw-r--r--src/i18n/locales/cs.json11
-rw-r--r--src/i18n/locales/da.json11
-rw-r--r--src/i18n/locales/de.json79
-rw-r--r--src/i18n/locales/el.json11
-rw-r--r--src/i18n/locales/en-US.json11
-rw-r--r--src/i18n/locales/es.json13
-rw-r--r--src/i18n/locales/fa.json729
-rw-r--r--src/i18n/locales/fi.json11
-rw-r--r--src/i18n/locales/fr.json11
-rw-r--r--src/i18n/locales/ga.json11
-rw-r--r--src/i18n/locales/he.json11
-rw-r--r--src/i18n/locales/hi.json11
-rw-r--r--src/i18n/locales/hr.json11
-rw-r--r--src/i18n/locales/hu.json11
-rw-r--r--src/i18n/locales/id.json11
-rw-r--r--src/i18n/locales/it.json11
-rw-r--r--src/i18n/locales/ja.json11
-rw-r--r--src/i18n/locales/ka.json11
-rw-r--r--src/i18n/locales/ko.json201
-rw-r--r--src/i18n/locales/nl-BE.json11
-rw-r--r--src/i18n/locales/nl.json11
-rw-r--r--src/i18n/locales/no.json11
-rw-r--r--src/i18n/locales/pl.json13
-rw-r--r--src/i18n/locales/pt-BR.json9
-rw-r--r--src/i18n/locales/pt.json11
-rw-r--r--src/i18n/locales/ro.json113
-rw-r--r--src/i18n/locales/ru.json167
-rw-r--r--src/i18n/locales/si.json483
-rw-r--r--src/i18n/locales/sk.json431
-rw-r--r--src/i18n/locales/sl.json11
-rw-r--r--src/i18n/locales/sr.json11
-rw-r--r--src/i18n/locales/sv.json17
-rw-r--r--src/i18n/locales/te.json11
-rw-r--r--src/i18n/locales/tr.json19
-rw-r--r--src/i18n/locales/uk.json395
-rw-r--r--src/i18n/locales/vi.json11
-rw-r--r--src/i18n/locales/zh-HANT.json11
-rw-r--r--src/i18n/locales/zh.json11
-rw-r--r--src/i18n/translations.ts23
-rw-r--r--src/index.ts8
-rw-r--r--src/internal-server/app/Controllers/Http/RecipeController.js25
-rw-r--r--src/internal-server/app/Controllers/Http/ServiceController.js32
-rw-r--r--src/internal-server/app/Controllers/Http/UserController.js7
-rw-r--r--src/internal-server/app/Controllers/Http/WorkspaceController.js14
-rw-r--r--src/lib/Form.ts7
-rw-r--r--src/lib/Menu.js11
-rw-r--r--src/lib/Tray.js100
-rw-r--r--src/models/Service.js1
-rw-r--r--src/routes.tsx (renamed from src/routes.js)21
-rw-r--r--src/stores.types.ts1
-rw-r--r--src/stores/AppStore.js9
-rw-r--r--src/stores/ServicesStore.js88
-rw-r--r--src/stores/UIStore.js (renamed from src/stores/UIStore.ts)32
-rw-r--r--src/stores/lib/Request.js2
-rw-r--r--src/styles/auth.scss6
-rw-r--r--src/styles/features.scss15
-rw-r--r--src/styles/layout.scss46
-rw-r--r--src/styles/services.scss38
-rw-r--r--src/styles/tabs.scss5
-rw-r--r--src/styles/vertical.scss4
-rw-r--r--src/styles/welcome.scss3
-rw-r--r--src/themes/dark/index.ts8
-rw-r--r--src/themes/default/index.ts2
-rw-r--r--src/themes/legacy/index.ts5
-rw-r--r--src/webview/lib/RecipeWebview.ts (renamed from src/webview/lib/RecipeWebview.js)15
-rw-r--r--src/webview/lib/Userscript.ts (renamed from src/webview/lib/Userscript.js)77
-rw-r--r--src/webview/recipe.js9
-rw-r--r--tweets/README.md37
223 files changed, 5002 insertions, 5416 deletions
diff --git a/.all-contributorsrc b/.all-contributorsrc
index b22a175c1..9cef56038 100644
--- a/.all-contributorsrc
+++ b/.all-contributorsrc
@@ -10,7 +10,7 @@
10 "commit": true, 10 "commit": true,
11 "commitConvention": "none", 11 "commitConvention": "none",
12 "badgeTemplate": "<a href='#contributors-'><img src='https://img.shields.io/badge/contributors-<%= contributors.length %>-default.svg?logo=github' alt='Contributors'/></a>", 12 "badgeTemplate": "<a href='#contributors-'><img src='https://img.shields.io/badge/contributors-<%= contributors.length %>-default.svg?logo=github' alt='Contributors'/></a>",
13 "contributorTemplate": "<a href='<%= contributor.profile %>' title='<%= contributor.name %>: <%= contributor.contributions.join(', ') %>'><img src='<%= contributor.avatar_url %>' alt='<%= contributor.login %>' style='border-radius:<%= options.imageSize %>px;width:<%= options.imageSize %>px;height:<%= options.imageSize %>px;'/></a>", 13 "contributorTemplate": "<a href='<%= contributor.profile %>' title='<%= contributor.name %>: <%= contributor.contributions.join(', ') %>'><img src='<%= contributor.avatar_url %>' alt='<%= contributor.login %>' style='width:<%= options.imageSize %>px;'/></a>",
14 "contributors": [ 14 "contributors": [
15 { 15 {
16 "login": "vantezzen", 16 "login": "vantezzen",
@@ -993,7 +993,8 @@
993 "avatar_url": "https://avatars.githubusercontent.com/u/384997?v=4", 993 "avatar_url": "https://avatars.githubusercontent.com/u/384997?v=4",
994 "profile": "http://niute.ch", 994 "profile": "http://niute.ch",
995 "contributions": [ 995 "contributions": [
996 "code" 996 "code",
997 "bug"
997 ] 998 ]
998 }, 999 },
999 { 1000 {
@@ -1103,6 +1104,35 @@
1103 "contributions": [ 1104 "contributions": [
1104 "code" 1105 "code"
1105 ] 1106 ]
1107 },
1108 {
1109 "login": "klaegera",
1110 "name": "Adrian Klaeger",
1111 "avatar_url": "https://avatars.githubusercontent.com/u/34807567?v=4",
1112 "profile": "https://github.com/klaegera",
1113 "contributions": [
1114 "code",
1115 "bug"
1116 ]
1117 },
1118 {
1119 "login": "martinbernat",
1120 "name": "martinbernat",
1121 "avatar_url": "https://avatars.githubusercontent.com/u/6809891?v=4",
1122 "profile": "https://github.com/martinbernat",
1123 "contributions": [
1124 "code",
1125 "bug"
1126 ]
1127 },
1128 {
1129 "login": "dedotombo",
1130 "name": "dedotombo",
1131 "avatar_url": "https://avatars.githubusercontent.com/u/42537874?v=4",
1132 "profile": "https://github.com/dedotombo",
1133 "contributions": [
1134 "code"
1135 ]
1106 } 1136 }
1107 ], 1137 ],
1108 "contributorsPerLine": 16, 1138 "contributorsPerLine": 16,
diff --git a/.eslintrc.js b/.eslintrc.js
index af9eaef9d..f7ca7b620 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -82,6 +82,8 @@ module.exports = {
82 'react/sort-comp': 0, 82 'react/sort-comp': 0,
83 'react/state-in-constructor': 0, 83 'react/state-in-constructor': 0,
84 'react/static-property-placement': 0, 84 'react/static-property-placement': 0,
85 'react/function-component-definition': 0,
86 'react/jsx-no-useless-fragment': 0,
85 // eslint-plugin-jsx-a11y 87 // eslint-plugin-jsx-a11y
86 'jsx-a11y/click-events-have-key-events': 1, 88 'jsx-a11y/click-events-have-key-events': 1,
87 'jsx-a11y/mouse-events-have-key-events': 1, 89 'jsx-a11y/mouse-events-have-key-events': 1,
@@ -115,6 +117,8 @@ module.exports = {
115 }, 117 },
116 ], 118 ],
117 'unicorn/consistent-destructuring': 0, 119 'unicorn/consistent-destructuring': 0,
120 // INFO: Turned off due to src/internal-server/database/factory.js
121 'unicorn/no-empty-file': 0,
118 // eslint-plugin-prettier 122 // eslint-plugin-prettier
119 'prettier/prettier': 1, 123 'prettier/prettier': 1,
120 }, 124 },
@@ -165,6 +169,8 @@ module.exports = {
165 'react/static-property-placement': 0, 169 'react/static-property-placement': 0,
166 'react/state-in-constructor': 1, 170 'react/state-in-constructor': 1,
167 'react/sort-comp': 0, 171 'react/sort-comp': 0,
172 'react/function-component-definition': 0,
173 'react/jsx-no-useless-fragment': 0,
168 // eslint-plugin-jsx-a11y 174 // eslint-plugin-jsx-a11y
169 'jsx-a11y/click-events-have-key-events': 1, 175 'jsx-a11y/click-events-have-key-events': 1,
170 'jsx-a11y/no-static-element-interactions': 1, 176 'jsx-a11y/no-static-element-interactions': 1,
@@ -187,6 +193,8 @@ module.exports = {
187 }, 193 },
188 ], 194 ],
189 'unicorn/consistent-destructuring': 0, 195 'unicorn/consistent-destructuring': 0,
196 // INFO: Turned off due to src/internal-server/database/factory.js
197 'unicorn/no-empty-file': 0,
190 // eslint-plugin-prettier 198 // eslint-plugin-prettier
191 'prettier/prettier': 1, 199 'prettier/prettier': 1,
192 }, 200 },
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 020d6ff58..000000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,45 +0,0 @@
1---
2name: Bug report
3about: Create a report to help us improve
4---
5<!--
6Please remember that if you are logging a bug for some service that has *stopped working*, please log the bug at https://github.com/getferdi/recipes/issues
7Please remember to read the self-help documentation at https://github.com/getferdi/ferdi#troubleshooting-recipes-self-help - in case it helps you unblock yourself.
8
9Please fill our form below, this way we can analyse and fix the problem as fast as possible.
10
11Please keep in mind that any text inside "<!--" and "--\>" are comments from us and won't be visible in your bug report, so please don't put any text in them.
12-->
13**Bug description:**
14<!-- Add a clear and concise description of what the bug is -->
15
16**Steps to reproduce:**
17<!-- Explain to us how we can reproduce your bug on our computer -->
18
191. Go to '...'
202. Click on '....'
213. Scroll down to '....'
224. See error
23
24**Expected behavior**
25<!-- If applicable, add a description of what you expected to happen. -->
26
27**Screenshots**
28<!-- If applicable, add screenshots to help explain your problem. -->
29<!-- You can simply drag and drop any image file into the editor to add it to the report -->
30
31**Environment:**
32
33- Operating System: <!-- e.g. macOS Catalina, Windows 10, etc. -->
34- Ferdi Version: <!-- e.g. 5.4.3 -->
35- Server: <!-- e.g. Ferdi, Franz, Using without an account -->
36
37- Debug information:
38<!--
39Get your debug information via Ferdi "Help" menu ("Copy/Publish Debug Information") then
40share a debug information file or your published link with us.
41-->
42
43<!-- Please consider supporting Ferdi!
44👉 https://github.com/sponsors/getferdi
45👉 https://opencollective.com/getferdi/donate -->
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 000000000..207e3463a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,121 @@
1name: Bug Report
2description: Report an Ferdi bug
3title: "[Bug]: "
4labels: ["bug :beetle:"]
5body:
6- type: markdown
7 attributes:
8 value: |
9 1. Please remember that if you are logging a bug for some service that has *stopped working*, please log the bug [here](https://github.com/getferdi/recipes/issues)
10 2. Please remember to read the [self-help documentation](https://github.com/getferdi/ferdi#troubleshooting-recipes-self-help) - in case it helps you unblock yourself for issues related to old recipes.
11 3. If you are requesting support for a new service in Ferdi, please log it [here](https://github.com/getferdi/recipes/issues)
12 4. If none of the above pertain to your problem, please fill our form below, this way we can analyse and fix the problem as fast as possible.
13 5. Please consider supporting Ferdi!
14 👉 https://github.com/sponsors/getferdi
15 👉 https://opencollective.com/getferdi/donate
16- type: checkboxes
17 attributes:
18 label: Preflight Checklist
19 description: Please ensure you've completed all of the following.
20 options:
21 - label: I have read the [Contributing Guidelines](https://github.com/getferdi/ferdi/blob/develop/CONTRIBUTING.md) for this project.
22 required: true
23 - label: I agree to follow the [Code of Conduct](https://github.com/getferdi/ferdi/blob/develop/CODE_OF_CONDUCT.md) that this project adheres to.
24 required: true
25 - label: I have searched the [issue tracker](https://github.com/getferdi/ferdi/issues) for a feature request that matches the one I want to file, without success.
26 required: true
27- type: input
28 attributes:
29 label: Ferdi Version
30 description: What version of Ferdi are you using?
31 placeholder: 5.6.3
32 validations:
33 required: true
34- type: dropdown
35 attributes:
36 label: What operating system are you using?
37 options:
38 - Windows
39 - macOS
40 - Ubuntu
41 - Other Linux
42 - Other (specify below)
43 validations:
44 required: true
45- type: dropdown
46 attributes:
47 label: Server
48 options:
49 - Ferdi
50 - Franz
51 - Using without an account
52 - Other server (please specify in the steps to reproduce)
53 validations:
54 required: true
55- type: input
56 attributes:
57 label: Operating System Version
58 description: What operating system version are you using? On Windows, click Start button > Settings > System > About. On macOS, click the Apple Menu > About This Mac. On Linux, inside a terminal session, use lsb_release or uname -a.
59 placeholder: "e.g. Windows 10 version 1909, macOS Catalina 10.15.7, or Ubuntu 20.04"
60 validations:
61 required: true
62- type: dropdown
63 attributes:
64 label: What arch are you using?
65 options:
66 - x64
67 - ia32
68 - arm64 (including Apple Silicon)
69 - Other (specify below)
70 validations:
71 required: true
72- type: input
73 attributes:
74 label: Last Known working version of Ferdi
75 description: What is the last version of Ferdi this worked in, if applicable?
76 placeholder: 5.6.3
77- type: input
78 attributes:
79 label: Git SHA and/or build date
80 description: In the latest versions of Ferdi, we now also expose the GIT SHA and the build date. IF you are running one such version, please include this information as well.
81 placeholder: 9b29f041 / Sun May 09 2021 12:35:48 GMT+0200
82- type: textarea
83 attributes:
84 label: Steps to reproduce
85 description: Explain to us how we can reproduce your bug on our computer
86 placeholder: |
87 1. Go to '...'
88 2. Click on '....'
89 3. Scroll down to '....'
90 4. See error
91 validations:
92 required: true
93- type: textarea
94 attributes:
95 label: Expected Behavior
96 description: A clear and concise description of what you expected to happen.
97 validations:
98 required: true
99- type: textarea
100 attributes:
101 label: Actual Behavior
102 description: A clear description of what actually happens.
103 validations:
104 required: true
105- type: textarea
106 attributes:
107 label: Screenshots
108 description: If applicable, add screenshots to help explain your problem. You can simply drag and drop any image file into the editor to add it to the report
109- type: textarea
110 attributes:
111 label: Debug information
112 description: Get your debug information via Ferdi "Help" menu ("Copy/Publish Debug Information") then share a debug information file or your published link with us.
113- type: input
114 attributes:
115 label: Testcase Gist URL
116 description: If you can reproduce the issue in a standalone test case, please use [Electron Fiddle](https://github.com/electron/fiddle) to create one and to publish it as a [GitHub gist](https://gist.github.com) and put the gist URL here. This is **the best way** to ensure this issue is triaged quickly **and** does not regress in the future.
117 placeholder: https://gist.github.com/...
118- type: textarea
119 attributes:
120 label: Additional Information
121 description: If your problem needs further explanation, or if the issue you're seeing cannot be reproduced in a gist, please add more information here.
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 000000000..99cc88f24
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
1# blank_issues_enabled: false
2contact_links:
3 - name: Ferdi Community Support
4 url: https://getferdi.com/faq/
5 about: Please see some basic questions here. If your question is not answered, please continue with raising an issue in github.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index 61353797c..000000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,20 +0,0 @@
1---
2name: Feature request
3about: Suggest an idea for this project
4---
5
6**Is your feature request related to a problem? Please describe.**
7A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
8
9**Describe the solution you'd like**
10A clear and concise description of what you want to happen.
11
12**Describe alternatives you've considered**
13A clear and concise description of any alternative solutions or features you've considered.
14
15**Additional context**
16Add any other context or screenshots about the feature request here.
17
18<!-- Please consider supporting Ferdi!
19👉 https://github.com/sponsors/getferdi
20👉 https://opencollective.com/getferdi/donate -->
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 000000000..3e7e6d312
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,48 @@
1name: Feature Request
2description: Suggest an idea for Ferdi
3title: "[Feature Request]: "
4labels: ["enhancement :sparkles:"]
5body:
6- type: markdown
7 attributes:
8 value: |
9 1. Please remember that if you are logging a bug for some service that has *stopped working*, please log the bug [here](https://github.com/getferdi/recipes/issues)
10 2. If you are requesting support for a new service in Ferdi, please log it [here](https://github.com/getferdi/recipes/pulls)
11 3. Please remember to read the [self-help documentation](https://github.com/getferdi/ferdi#troubleshooting-recipes-self-help) - in case it helps you unblock yourself for issues related to old recipes.
12 4. Please fill our form below, this way we can analyse and fix the problem as fast as possible.
13 5. Please consider supporting Ferdi!
14 👉 https://github.com/sponsors/getferdi
15 👉 https://opencollective.com/getferdi/donate
16- type: checkboxes
17 attributes:
18 label: Preflight Checklist
19 description: Please ensure you've completed all of the following.
20 options:
21 - label: I have read the [Contributing Guidelines](https://github.com/getferdi/ferdi/blob/develop/CONTRIBUTING.md) for this project.
22 required: true
23 - label: I agree to follow the [Code of Conduct](https://github.com/getferdi/ferdi/blob/develop/CODE_OF_CONDUCT.md) that this project adheres to.
24 required: true
25 - label: I have searched the [issue tracker](https://github.com/getferdi/ferdi/issues) for a feature request that matches the one I want to file, without success.
26 required: true
27- type: textarea
28 attributes:
29 label: Problem Description
30 description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
31 validations:
32 required: true
33- type: textarea
34 attributes:
35 label: Proposed Solution
36 description: A clear and concise description of what you want to happen.
37 validations:
38 required: true
39- type: textarea
40 attributes:
41 label: Alternatives Considered
42 description: A clear and concise description of any alternative solutions or features you've considered.
43 validations:
44 required: true
45- type: textarea
46 attributes:
47 label: Additional Information
48 description: Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/open_issue.md b/.github/ISSUE_TEMPLATE/open_issue.md
deleted file mode 100644
index c7c279643..000000000
--- a/.github/ISSUE_TEMPLATE/open_issue.md
+++ /dev/null
@@ -1,8 +0,0 @@
1---
2name: Open issue
3about: For everything that's neither a feature request, nor a bug
4---
5
6<!-- Please consider supporting Ferdi!
7👉 https://github.com/sponsors/getferdi
8👉 https://opencollective.com/getferdi/donate -->
diff --git a/.github/ISSUE_TEMPLATE/open_issue.yml b/.github/ISSUE_TEMPLATE/open_issue.yml
new file mode 100644
index 000000000..a7771be59
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/open_issue.yml
@@ -0,0 +1,13 @@
1name: Open issue
2description: For everything that's neither a feature request, nor a bug
3body:
4- type: markdown
5 attributes:
6 value: |
7 1. Please remember that if you are logging a bug for some service that has *stopped working*, please log the bug [here](https://github.com/getferdi/recipes/issues)
8 2. If you are requesting support for a new service in Ferdi, please log it [here](https://github.com/getferdi/recipes/pulls)
9 3. Please remember to read the [self-help documentation](https://github.com/getferdi/ferdi#troubleshooting-recipes-self-help) - in case it helps you unblock yourself for issues related to old recipes.
10 4. Please fill our form below, this way we can analyse and fix the problem as fast as possible.
11 5. Please consider supporting Ferdi!
12 👉 https://github.com/sponsors/getferdi
13 👉 https://opencollective.com/getferdi/donate
diff --git a/.github/config.yml b/.github/config.yml
new file mode 100644
index 000000000..237e3f570
--- /dev/null
+++ b/.github/config.yml
@@ -0,0 +1,17 @@
1# Comment to be posted to on PRs from first time contributors in your repository
2newPRWelcomeComment: |
3 💖 Thanks for opening this pull request! 💖
4
5 Things that will help get your PR across the finish line:
6
7 - Follow the JavaScript [coding style](https://github.com/electron/electron/blob/master/docs/development/coding-style.md) as recommended by the Electron project.
8 - Run `npm run lint` locally to catch formatting errors earlier.
9 - Document any user-facing changes you've made by including screenshots and animated GIFs whenever possible.
10
11 We get a lot of pull requests on this repo, so please be patient and we will get back to you as soon as we can.
12
13# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge
14
15# Comment to be posted to on pull requests merged by a first time user
16firstPRMergeComment: >
17 Congrats on merging your first pull request! 🎉🎉🎉
diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644
index 000000000..6d8b15d02
--- /dev/null
+++ b/.github/release.yml
@@ -0,0 +1,22 @@
1changelog:
2 exclude:
3 labels:
4 - ignore-for-release
5 authors:
6 - FerdiBot
7 - allcontributors
8 categories:
9 - title: Breaking Changes 🛠
10 labels:
11 - Semver-Major
12 - breaking-change
13 - title: Exciting New Features 🎉
14 labels:
15 - Semver-Minor
16 - enhancement
17 - title: Bug Fixes ðŸž
18 labels:
19 - bug
20 - title: Other Changes
21 labels:
22 - "*"
diff --git a/.github/workflows/ferdi-builds.yml b/.github/workflows/builds.yml
index b15ba44a1..3f356e1e0 100644
--- a/.github/workflows/ferdi-builds.yml
+++ b/.github/workflows/builds.yml
@@ -10,7 +10,7 @@
10# 'WIN_CSC_LINK' (The HTTPS link or local path to certificate - for code signing of windows artifacts) 10# 'WIN_CSC_LINK' (The HTTPS link or local path to certificate - for code signing of windows artifacts)
11# 'WIN_CSC_KEY_PASSWORD' (The password to decrypt the certificate given in CSC_LINK - for code signing of windows artifacts) 11# 'WIN_CSC_KEY_PASSWORD' (The password to decrypt the certificate given in CSC_LINK - for code signing of windows artifacts)
12 12
13name: Ferdi Builds 13name: Builds
14 14
15on: 15on:
16 # Push to any tracked branches 16 # Push to any tracked branches
@@ -141,7 +141,7 @@ jobs:
141 - name: Install pnpm 141 - name: Install pnpm
142 uses: pnpm/action-setup@v2.0.1 142 uses: pnpm/action-setup@v2.0.1
143 with: 143 with:
144 version: 6.19.0 144 version: 6.23.6
145 - name: Install node dependencies 145 - name: Install node dependencies
146 run: npm i 146 run: npm i
147 - name: Package recipes 147 - name: Package recipes
@@ -223,7 +223,7 @@ jobs:
223 - name: Install pnpm 223 - name: Install pnpm
224 uses: pnpm/action-setup@v2.0.1 224 uses: pnpm/action-setup@v2.0.1
225 with: 225 with:
226 version: 6.19.0 226 version: 6.23.6
227 - name: Install node dependencies 227 - name: Install node dependencies
228 run: npm i 228 run: npm i
229 - name: Figure out used package.json version 229 - name: Figure out used package.json version
@@ -326,7 +326,7 @@ jobs:
326 - name: Install pnpm 326 - name: Install pnpm
327 uses: pnpm/action-setup@v2.0.1 327 uses: pnpm/action-setup@v2.0.1
328 with: 328 with:
329 version: 6.19.0 329 version: 6.23.6
330 - name: Install node dependencies 330 - name: Install node dependencies
331 run: npm i 331 run: npm i
332 shell: bash 332 shell: bash
diff --git a/.github/workflows/dependency-updates.yml b/.github/workflows/dependency-updates.yml
index 4f5e68332..7958aa5f5 100644
--- a/.github/workflows/dependency-updates.yml
+++ b/.github/workflows/dependency-updates.yml
@@ -1,6 +1,6 @@
1# This workflow will do a clean install of ferdi dev-dependencies, update the dependencies, build the source code and run tests. It will only run on scheduled trigger. 1# This workflow will do a clean install of ferdi dev-dependencies, update the dependencies, build the source code and run tests. It will only run on scheduled trigger.
2 2
3name: Ferdi Dependency updates 3name: Dependency updates
4 4
5on: 5on:
6 # Manual trigger from the UI 6 # Manual trigger from the UI
@@ -38,21 +38,31 @@ jobs:
38 - name: Install pnpm 38 - name: Install pnpm
39 uses: pnpm/action-setup@v2.0.1 39 uses: pnpm/action-setup@v2.0.1
40 with: 40 with:
41 version: 6.19.0 41 version: 6.23.6
42 - name: Install node dependencies 42 - name: Install node dependencies
43 run: npm i 43 run: npm i
44 - name: Update submodules 44 - name: Update submodules
45 run: npm run update-submodules 45 run: |
46 rm -rf ./recipes
47 npm run update-submodules
48 git add .
49 echo "GIT_DIRTY=$(git status -s | wc -l)" >> $GITHUB_ENV
46 - name: Update browserslist db 50 - name: Update browserslist db
47 run: npx browserslist@latest --update-db 51 run: |
52 npx browserslist@latest --update-db
53 git add .
54 echo "GIT_DIRTY=$(git status -s | wc -l)" >> $GITHUB_ENV
48 - name: Run linter, reformatter, rebrander and tests 55 - name: Run linter, reformatter, rebrander and tests
56 if: ${{ env.GIT_DIRTY != '0' }}
49 run: | 57 run: |
50 npm run prepare-code 58 npm run prepare-code
51 npm run test 59 npm run test
52 - name: Commit submodules, dependency-updates and linter changes 60 - name: Commit submodules, dependency-updates and linter changes
61 if: ${{ env.GIT_DIRTY != '0' }}
53 run: | 62 run: |
54 git config user.name github-actions 63 git config user.name github-actions
55 git config user.email github-actions@github.com 64 git config user.email github-actions@github.com
56 git commit -am "Update submodules, browserslist data updates and linter fixes [skip ci]" --no-verify || true 65 git commit -am "Update submodules, browserslist data updates and linter fixes [skip ci]" --no-verify || true
57 - name: Push all changes 66 - name: Push all changes
67 if: ${{ env.GIT_DIRTY != '0' }}
58 run: git push origin ${{ env.GIT_BRANCH_NAME }} --no-verify 68 run: git push origin ${{ env.GIT_BRANCH_NAME }} --no-verify
diff --git a/.github/workflows/twitter-together.yml b/.github/workflows/twitter-together.yml
new file mode 100644
index 000000000..5d552928a
--- /dev/null
+++ b/.github/workflows/twitter-together.yml
@@ -0,0 +1,26 @@
1on: [push, pull_request]
2name: Twitter, together!
3jobs:
4 preview:
5 name: Preview
6 runs-on: ubuntu-latest
7 if: github.event_name == 'pull_request'
8 steps:
9 - uses: gr2m/twitter-together@v1.x
10 env:
11 GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
12 tweet:
13 name: Tweet
14 runs-on: ubuntu-latest
15 if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
16 steps:
17 - name: checkout develop
18 uses: actions/checkout@v2
19 - name: Tweet
20 uses: gr2m/twitter-together@v1.x
21 env:
22 GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
23 TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
24 TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
25 TWITTER_API_KEY: ${{ secrets.TWITTER_API_KEY }}
26 TWITTER_API_SECRET_KEY: ${{ secrets.TWITTER_API_SECRET_KEY }}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 794d3cb79..55c5303d7 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -31,6 +31,7 @@
31 - [Javascript Coding style-checker](#javascript-coding-style-checker) 31 - [Javascript Coding style-checker](#javascript-coding-style-checker)
32 - [Packaging](#packaging) 32 - [Packaging](#packaging)
33 - [Release](#release) 33 - [Release](#release)
34 - [Nightly releases](#nightly-releases)
34 - [Updating the code after a hiatus](#updating-the-code-after-a-hiatus) 35 - [Updating the code after a hiatus](#updating-the-code-after-a-hiatus)
35 36
36<!-- /TOC --> 37<!-- /TOC -->
@@ -63,7 +64,7 @@ v16.13.0
63npm -v 64npm -v
648.1.1 658.1.1
65pnpm -v 66pnpm -v
666.19.0 676.23.6
67``` 68```
68 69
69_Note:_ You can choose any package manager to manage multiple versions of `node` and `npm`. For eg, [nvm](https://github.com/nvm-sh/nvm) or [asdf](https://github.com/asdf-vm/asdf). 70_Note:_ You can choose any package manager to manage multiple versions of `node` and `npm`. For eg, [nvm](https://github.com/nvm-sh/nvm) or [asdf](https://github.com/asdf-vm/asdf).
@@ -99,7 +100,7 @@ npm i -g windows-build-tools --vs2015
99```bash 100```bash
100git clone https://github.com/getferdi/ferdi.git 101git clone https://github.com/getferdi/ferdi.git
101cd ferdi 102cd ferdi
102git submodule update --init --recursive 103git submodule update --init --recursive --remote --rebase --force
103``` 104```
104 105
105It is important you execute the last command to get the required submodules (recipes). 106It is important you execute the last command to get the required submodules (recipes).
@@ -229,6 +230,10 @@ git push
229 230
230This will automatically trigger the build, as part of which, a new, draft release will be created [here](https://github.com/getferdi/ferdi/releases/). Once all the assets are uploaded (19 assets in total), publish the release (you will need elevated permissions in GitHub for doing this). The last commit of the `release` branch will be tagged. 231This will automatically trigger the build, as part of which, a new, draft release will be created [here](https://github.com/getferdi/ferdi/releases/). Once all the assets are uploaded (19 assets in total), publish the release (you will need elevated permissions in GitHub for doing this). The last commit of the `release` branch will be tagged.
231 232
233### Nightly releases
234
235Nightly releases are automatically triggered every day ([details](https://github.com/getferdi/ferdi/pull/990)) and available in [getferdi/ferdi](https://github.com/getferdi/ferdi/releases). Maintainers still need to verify and manually publish the draft releases as pre-releases for now.
236
232### Updating the code after a hiatus 237### Updating the code after a hiatus
233 238
234Since we are making a lot of changes that involve restructuring the code as well as taking a hard look at the dependencies (including node versions), please remember to update them by running the appropriate command of your chosen package manager. 239Since we are making a lot of changes that involve restructuring the code as well as taking a hard look at the dependencies (including node versions), please remember to update them by running the appropriate command of your chosen package manager.
diff --git a/Dockerfile b/Dockerfile
index 1b8a70da2..3e02fe64c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -16,7 +16,7 @@ RUN apt-get update -y \
16 16
17WORKDIR /usr/src/ferdi 17WORKDIR /usr/src/ferdi
18 18
19RUN npm i -g pnpm@6.19.0 19RUN npm i -g pnpm@6.23.6
20 20
21COPY package*.json ./ 21COPY package*.json ./
22 22
diff --git a/README.md b/README.md
index 0fe3f0ae6..9f03c410e 100644
--- a/README.md
+++ b/README.md
@@ -11,76 +11,22 @@
11 11
12# Ferdi 12# Ferdi
13 13
14<p align="center"> 14<p>
15<img alt="GitHub Releases" src="https://img.shields.io/github/downloads/getferdi/ferdi/latest/total?label=Downloads&logo=iCloud&logoColor=%23FFFFFF"> 15<a href="https://github.com/getferdi/ferdi/actions/workflows/builds.yml"><img alt="Build Status" src="https://github.com/getferdi/ferdi/actions/workflows/builds.yml/badge.svg?branch=develop&event=push"></a>
16<a title="Crowdin" target="_blank" href="https://crowdin.com/project/getferdi"><img src="https://badges.crowdin.net/getferdi/localized.svg"></a>
17<img alt="GitHub Releases" src="https://img.shields.io/github/downloads/getferdi/ferdi/latest/total?label=downloads">
16<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> 18<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
17<a href='#contributors-'><img src='https://img.shields.io/badge/contributors-112-default.svg?logo=github' alt='Contributors'/></a> 19<a href='#contributors-'><img src='https://img.shields.io/badge/contributors-115-default.svg?logo=github' alt='Contributors'/></a>
18<!-- ALL-CONTRIBUTORS-BADGE:END --> 20<!-- ALL-CONTRIBUTORS-BADGE:END -->
19<a href="#backers-via-opencollective"><img alt="Open Collective backers" src="https://img.shields.io/opencollective/backers/getferdi?logo=open-collective"></a> 21<a href="#backers-via-opencollective"><img alt="Open Collective backers" src="https://img.shields.io/opencollective/backers/getferdi?logo=open-collective"></a>
20<a href="#sponsors-via-opencollective"><img alt="Open Collective sponsors" src="https://img.shields.io/opencollective/sponsors/getferdi?logo=open-collective"></a>
21<a href="https://github.com/getferdi/ferdi/actions/workflows/ferdi-builds.yml"><img alt="Build Status" src="https://github.com/getferdi/ferdi/actions/workflows/ferdi-builds.yml/badge.svg?branch=develop&event=push"></a>
22<a href="https://gitter.im/getferdi/community"><img alt="Gitter Chat Room" src="https://img.shields.io/gitter/room/getferdi/community"></a> 22<a href="https://gitter.im/getferdi/community"><img alt="Gitter Chat Room" src="https://img.shields.io/gitter/room/getferdi/community"></a>
23<a href="https://chat.stackoverflow.com/rooms/237341/ferdi"><img alt="Stackoverflow Chat Room" src="https://img.shields.io/badge/stackoverflow--chat-ferdi-blue"></a>
24</p> 23</p>
25 24
26🤴🽠Hard-fork of [Franz](https://github.com/meetfranz/franz), adding awesome features and removing unwanted ones. 25> 🤴🽠Hard-fork of [Franz](https://github.com/meetfranz/franz), adding awesome features and removing unwanted ones.
27
28## Table of contents
29
30<details>
31<summary>Toggle navigation</summary>
32
33- [Ferdi](#ferdi)
34 - [Table of contents](#table-of-contents)
35 - [What is Ferdi?](#what-is-ferdi)
36 - [Features](#features)
37 - [What does Ferdi look like?](#what-does-ferdi-look-like)
38 - [How to get and start using Ferdi](#how-to-get-and-start-using-ferdi)
39 - [Download Ferdi](#download-ferdi)
40 - [Or use Chocolatey (Windows only)](#or-use-chocolatey-windows-only)
41 - [Or use Windows Package Manager (Windows only)](#or-use-windows-package-manager-windows-only)
42 - [Or use homebrew (macOS or Linux)](#or-use-homebrew-macos-or-linux)
43 - [Or use snap (Linux only)](#or-use-snap-linux-only)
44 - [Or use AUR (Arch Linux)](#or-use-aur-arch-linux)
45 - [What makes Ferdi different from Franz?](#what-makes-ferdi-different-from-franz)
46 - [Removes unproductive paywalls and other other interruptions](#removes-unproductive-paywalls-and-other-other-interruptions)
47 - [Adds features to increase your productivity](#adds-features-to-increase-your-productivity)
48 - [Adds features to improve your privacy](#adds-features-to-improve-your-privacy)
49 - [Adds features to improve your experience using Ferdi](#adds-features-to-improve-your-experience-using-ferdi)
50 - [Fixes bugs](#fixes-bugs)
51 - [Adds new platforms](#adds-new-platforms)
52 - [Adds internal changes](#adds-internal-changes)
53 - [Contributing to Ferdi's development](#contributing-to-ferdis-development)
54 - [Nightly releases](#nightly-releases)
55 - [Troubleshooting recipes (self-help)](#troubleshooting-recipes-self-help)
56 - [Contributors ✨](#contributors-)
57 - [Backers via OpenCollective](#backers-via-opencollective)
58 - [Sponsors via OpenCollective](#sponsors-via-opencollective)
59 - [Other Sponsors](#other-sponsors)
60 </details>
61
62## What is Ferdi?
63 26
64Ferdi is a desktop app that helps you organize how you use your favourite apps by combining them into one application. It is based on Franz - a software already used by thousands of people - with the difference that Ferdi gives you many additional features and doesn't restrict its usage! Furthermore, Ferdi is compatible with your existing Franz account, so you can continue right where you left off. Please find out more about Ferdi and its features on [getferdi.com](https://getferdi.com). 27Ferdi is a desktop app that helps you organize how you use your favourite apps by combining them into one application. It is based on Franz - a software already used by thousands of people - with the difference that Ferdi gives you many additional features and doesn't restrict its usage! Furthermore, Ferdi is compatible with your existing Franz account, so you can continue right where you left off. Please find out more about Ferdi and its features on [getferdi.com](https://getferdi.com).
65 28
66## Features 29## Screenshots
67
68- [x] Ferdi puts all your web apps into one place
69- [x] Native support for 189 services
70- [x] Workspaces to keep your personal and work life separated
71- [x] Support for multiple accounts on any service
72- [x] Dark Mode support for all of your services
73- [x] Optional cloud sync to keep your services synchronized between devices
74- [x] Better control over when you get which notifications
75- [x] Cross-platform so you can view your services on all your computers
76- [x] Full proxy support to work in every network environment
77- [x] Ferdi speaks your language: Support for 20+ languages
78
79...and best of all:
80
81- [x] Its completely free! There are no restrictions on features, no paywalls, no ads
82
83## What does Ferdi look like?
84 30
85<details> 31<details>
86<summary>Toggle screenshots</summary> 32<summary>Toggle screenshots</summary>
@@ -96,49 +42,18 @@ Ferdi is a desktop app that helps you organize how you use your favourite apps b
96</p> 42</p>
97</details> 43</details>
98 44
99## How to get and start using Ferdi 45## Download
100
101### Download Ferdi
102
103You can download Ferdi for Windows, Mac and Linux on [Ferdi's download page](https://getferdi.com/download) or you can find all variants in the [latest stable release](https://github.com/getferdi/ferdi/releases/latest) assets and [all the other releases here](https://github.com/getferdi/ferdi/releases).
104
105### Or use Chocolatey (Windows only)
106
107`$ choco install ferdi`
108
109(Don't know Chocolatey? [chocolatey.org](https://chocolatey.org/))
110
111### Or use Windows Package Manager (Windows only)
112
113`$ winget install --id AmineMouafik.Ferdi`
114
115(Don't know winget? [winget-cli](https://github.com/microsoft/winget-cli/))
116
117### Or use homebrew (macOS or Linux)
118
119`$ brew install --cask ferdi`
120
121(Don't know homebrew? [brew.sh](https://brew.sh/))
122 46
123### Or use snap (Linux only) 47👉 [getferdi.com/download](https://getferdi.com/download/)
124 48
125`$ snap install ferdi` 49Assets made available via [GitHub releases](https://github.com/getferdi/ferdi/releases/latest).
126 50
127You can find published releases as `stable`, `beta` and `nightly` channels on [snapcraft.io](https://snapcraft.io/ferdi). 51## What makes Ferdi different from Franz?
128
129(Don't know snap? [snapcraft.io](https://snapcraft.io/))
130
131### Or use AUR (Arch Linux)
132
133Ferdi has three separate AUR packages you can use:
134
135- **[ferdi](https://aur.archlinux.org/packages/ferdi/)**: Uses your system electron version to run the latest release - this version will work best on most systems.
136- **[ferdi-bin](https://aur.archlinux.org/packages/ferdi-bin/)**: Uses the latest Fedora release and extracts it to Arch. Use this version if you are having trouble with the `ferdi` package.
137- **[ferdi-git](https://aur.archlinux.org/packages/ferdi-git/)**: Uses your system electron version to run the latest commit from the develop branch and may be unstable but may also give you features that are not yet available in other versions. Please only use `ferdi-git` if you accept these risks.
138 52
139If you use an AUR Helper, e.g. yay, install it via `yay -S ferdi`. 53_Find answers to other frequently asked questions on [getferdi.com/faq](https://getferdi.com/faq/)._
140 54
141## What makes Ferdi different from Franz? 55<details>
56<summary>Toggle answer</summary>
142 57
143### Removes unproductive paywalls and other other interruptions 58### Removes unproductive paywalls and other other interruptions
144 59
@@ -227,7 +142,7 @@ If you use an AUR Helper, e.g. yay, install it via `yay -S ferdi`.
227 142
228### Adds internal changes 143### Adds internal changes
229 144
230- [x] Upgrades to Electron 15.3.0 145- [x] Upgrades to Electron 15.3.2
231- [x] Switches to [`electron-spellchecker`](https://github.com/electron-userland/electron-spellchecker) to improve application size 146- [x] Switches to [`electron-spellchecker`](https://github.com/electron-userland/electron-spellchecker) to improve application size
232- [x] Minifies build files to improve app size 147- [x] Minifies build files to improve app size
233- [x] Adds "npm run prepare-code" command for development to lint and beautify code 148- [x] Adds "npm run prepare-code" command for development to lint and beautify code
@@ -237,21 +152,16 @@ If you use an AUR Helper, e.g. yay, install it via `yay -S ferdi`.
237- [x] Adds retry commands to flaky build steps ([#498](https://github.com/getferdi/ferdi/issues/498)) 152- [x] Adds retry commands to flaky build steps ([#498](https://github.com/getferdi/ferdi/issues/498))
238- [x] Runs utility scripts pre-commit instead of pre-push ([#515](https://github.com/getferdi/ferdi/issues/515)) 153- [x] Runs utility scripts pre-commit instead of pre-push ([#515](https://github.com/getferdi/ferdi/issues/515))
239 154
240> Thanks to all our [contributors](#contributors-) who helped realize all these amazing features! 💖 155</details>
241
242## Contributing to Ferdi's development
243
244We welcome all contributors. Please read the [contributing guidelines](CONTRIBUTING.md) to setup your development machine and proceed.
245
246## Nightly releases
247 156
248Nightly releases are automatically triggered every day ([details](https://github.com/getferdi/ferdi/pull/990)) and available in [getferdi/ferdi](https://github.com/getferdi/ferdi/releases). Maintainers still need to verify and manually publish the draft releases as pre-releases for now. 157## Troubleshooting [recipes](https://github.com/getferdi/recipes)
249 158
250## Troubleshooting recipes (self-help) 159<details>
160<summary>Toggle answer</summary>
251 161
252One of the issues being raised by the awesome users of Ferdi is that certain service-functionalities do not work. As good example of this is either the unread count (badge) stops working for specific services or the gmail logins don't work anymore. (These are just 2 of the most common problems reported). 162One of the issues being raised by the users of Ferdi is that certain service-functionalities do not work. As good example of this is either the unread count (badge) stops working for specific services or the gmail logins don't work anymore. (These are just 2 of the most common problems reported).
253 163
254Since we (the contributors to Ferdi) also eat our own dog food, we use Ferdi as our day-to-day communication app - and most likely have faced the same/similar issue. As a first step before filing an issue, we request you to follow these simple steps to see if the issue gets fixed. These recipes will get automatically upgraded when you upgrade to the newer versions of Ferdi, but to get new recipes **between** Ferdi releases, this documentation is quite useful. 164Since we (the contributors to Ferdi) also eat our own food, we use Ferdi as our day-to-day communication app - and most likely have faced the same/similar issue. As a first step before filing an issue, we request you to follow these simple steps to see if the issue gets fixed. These recipes will get automatically upgraded when you upgrade to the newer versions of Ferdi, but to get new recipes **between** Ferdi releases, this documentation is quite useful.
255 165
256- Make sure you are on the latest version of Ferdi. As of this writing, since the nightly CI packaging process is broken, we request you to download the latest nightly from the link in [Nightly releases](#nightly-releases) section. 166- Make sure you are on the latest version of Ferdi. As of this writing, since the nightly CI packaging process is broken, we request you to download the latest nightly from the link in [Nightly releases](#nightly-releases) section.
257- Stop Ferdi 167- Stop Ferdi
@@ -269,168 +179,35 @@ Since we (the contributors to Ferdi) also eat our own dog food, we use Ferdi as
269- If this process did not fix the issue, please log a detailed bug report [here](https://github.com/getferdi/recipes/issues) 179- If this process did not fix the issue, please log a detailed bug report [here](https://github.com/getferdi/recipes/issues)
270- _Note:_ An automated process to perform these steps is being ideated and tracked [here](https://github.com/getferdi/ferdi/issues/1302) 180- _Note:_ An automated process to perform these steps is being ideated and tracked [here](https://github.com/getferdi/ferdi/issues/1302)
271 181
182</details>
183
184## Contributing
185
186Please read the [contributing guidelines](CONTRIBUTING.md) to setup your development machine and proceed.
187
272## Contributors ✨ 188## Contributors ✨
273 189
274Thanks goes to these awesome people: 190Special thanks goes to these awesome people:
275 191
276<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> 192<a href="https://github.com/getferdi/ferdi/blob/develop/.all-contributorsrc" target="_blank"><img src="https://opencollective.com/getferdi/contributors.svg?avatarHeight=42&width=890&button=off"></a>
277<!-- prettier-ignore-start -->
278<!-- markdownlint-disable -->
279<table>
280 <tr>
281 <td align="center"><a href='https://vantezzen.io' title='Bennett: code, design, doc, ideas, translation, example, bug, content, infra, userTesting, question, projectManagement, review'><img src='https://avatars2.githubusercontent.com/u/10333196?v=4' alt='vantezzen' style='border-radius:42px;width:42px;height:42px;'/></a></td>
282 <td align="center"><a href='https://twitter.com/kytwb' title='Amine Mouafik: code, design, doc, ideas, bug, content, infra, userTesting, question, projectManagement, review, maintenance, platform, fundingFinding, blog, translation'><img src='https://avatars0.githubusercontent.com/u/412895?v=4' alt='kytwb' style='border-radius:42px;width:42px;height:42px;'/></a></td>
283 <td align="center"><a href='http://www.adlk.io' title='Stefan Malzner: code, content, design, doc, ideas, infra, projectManagement, test, translation'><img src='https://avatars1.githubusercontent.com/u/3265004?v=4' alt='adlk' style='border-radius:42px;width:42px;height:42px;'/></a></td>
284 <td align="center"><a href='https://github.com/Makazzz' title='Makazzz: bug, code, translation, content, doc, platform'><img src='https://avatars2.githubusercontent.com/u/49844464?v=4' alt='Makazzz' style='border-radius:42px;width:42px;height:42px;'/></a></td>
285 <td align="center"><a href='http://seriesgt.com' title='ZeroCool: code, ideas'><img src='https://avatars3.githubusercontent.com/u/5977640?v=4' alt='ZeroCool940711' style='border-radius:42px;width:42px;height:42px;'/></a></td>
286 <td align="center"><a href='https://github.com/rseitbekov' title='rseitbekov: code'><img src='https://avatars2.githubusercontent.com/u/35684439?v=4' alt='rseitbekov' style='border-radius:42px;width:42px;height:42px;'/></a></td>
287 <td align="center"><a href='https://djangogigs.com/developers/peter-bittner/' title='Peter Bittner: ideas, bug'><img src='https://avatars2.githubusercontent.com/u/665072?v=4' alt='bittner' style='border-radius:42px;width:42px;height:42px;'/></a></td>
288 <td align="center"><a href='https://github.com/justus-saul' title='Justus Saul: bug, ideas'><img src='https://avatars1.githubusercontent.com/u/5861826?v=4' alt='justus-saul' style='border-radius:42px;width:42px;height:42px;'/></a></td>
289 <td align="center"><a href='https://github.com/igreil' title='igreil: ideas'><img src='https://avatars0.githubusercontent.com/u/17239151?v=4' alt='igreil' style='border-radius:42px;width:42px;height:42px;'/></a></td>
290 <td align="center"><a href='http://marcolopes.eu' title='Marco Lopes: ideas'><img src='https://avatars1.githubusercontent.com/u/431889?v=4' alt='marcolopes' style='border-radius:42px;width:42px;height:42px;'/></a></td>
291 <td align="center"><a href='https://github.com/dayzlun' title='dayzlun: bug'><img src='https://avatars3.githubusercontent.com/u/17259690?v=4' alt='dayzlun' style='border-radius:42px;width:42px;height:42px;'/></a></td>
292 <td align="center"><a href='https://twitter.com/tobigue_' title='Tobias Günther: ideas'><img src='https://avatars2.githubusercontent.com/u/1560152?v=4' alt='tobigue' style='border-radius:42px;width:42px;height:42px;'/></a></td>
293 <td align="center"><a href='https://github.com/AGCaesar' title='AGCaesar: platform'><img src='https://avatars3.githubusercontent.com/u/7844066?v=4' alt='AGCaesar' style='border-radius:42px;width:42px;height:42px;'/></a></td>
294 <td align="center"><a href='https://github.com/xthursdayx' title='xthursdayx: code, doc, infra, platform'><img src='https://avatars0.githubusercontent.com/u/18044308?v=4' alt='xthursdayx' style='border-radius:42px;width:42px;height:42px;'/></a></td>
295 <td align="center"><a href='https://github.com/Gaboris' title='Gaboris: question, bug'><img src='https://avatars2.githubusercontent.com/u/9462372?v=4' alt='Gaboris' style='border-radius:42px;width:42px;height:42px;'/></a></td>
296 <td align="center"><a href='http://www.cu3ed.com/' title='Ce: bug'><img src='https://avatars1.githubusercontent.com/u/61343?v=4' alt='incace' style='border-radius:42px;width:42px;height:42px;'/></a></td>
297 </tr>
298 <tr>
299 <td align="center"><a href='http://pztrn.name/' title='Stanislav N.: bug'><img src='https://avatars1.githubusercontent.com/u/869402?v=4' alt='pztrn' style='border-radius:42px;width:42px;height:42px;'/></a></td>
300 <td align="center"><a href='http://www.patrickcurl.com' title='Patrick Curl: ideas'><img src='https://avatars1.githubusercontent.com/u/1470061?v=4' alt='patrickcurl' style='border-radius:42px;width:42px;height:42px;'/></a></td>
301 <td align="center"><a href='https://github.com/Stanzilla' title='Benjamin Staneck: design'><img src='https://avatars3.githubusercontent.com/u/75278?v=4' alt='Stanzilla' style='border-radius:42px;width:42px;height:42px;'/></a></td>
302 <td align="center"><a href='https://github.com/ammarmalhas' title='ammarmalhas: bug, security'><img src='https://avatars1.githubusercontent.com/u/57057209?v=4' alt='ammarmalhas' style='border-radius:42px;width:42px;height:42px;'/></a></td>
303 <td align="center"><a href='https://github.com/steliyan' title='Steliyan Stoyanov: code, ideas'><img src='https://avatars1.githubusercontent.com/u/1850292?v=4' alt='steliyan' style='border-radius:42px;width:42px;height:42px;'/></a></td>
304 <td align="center"><a href='https://github.com/brorbw' title='Bror Winther: doc'><img src='https://avatars2.githubusercontent.com/u/5909562?v=4' alt='brorbw' style='border-radius:42px;width:42px;height:42px;'/></a></td>
305 <td align="center"><a href='https://fwdekker.com/' title='Felix W. Dekker: doc'><img src='https://avatars0.githubusercontent.com/u/13442533?v=4' alt='FWDekker' style='border-radius:42px;width:42px;height:42px;'/></a></td>
306 <td align="center"><a href='https://github.com/Sauceee' title='Sauceee: design'><img src='https://avatars2.githubusercontent.com/u/17987941?v=4' alt='Sauceee' style='border-radius:42px;width:42px;height:42px;'/></a></td>
307 <td align="center"><a href='http://lhw.ring0.de' title='Lennart Weller: platform'><img src='https://avatars2.githubusercontent.com/u/351875?v=4' alt='lhw' style='border-radius:42px;width:42px;height:42px;'/></a></td>
308 <td align="center"><a href='https://github.com/jereksel' title='Andrzej Ressel: code'><img src='https://avatars0.githubusercontent.com/u/1307829?v=4' alt='jereksel' style='border-radius:42px;width:42px;height:42px;'/></a></td>
309 <td align="center"><a href='https://gitlab.com/dpeukert' title='Daniel Peukert: code'><img src='https://avatars2.githubusercontent.com/u/3451904?v=4' alt='dpeukert' style='border-radius:42px;width:42px;height:42px;'/></a></td>
310 <td align="center"><a href='https://crowdin.com/profile/Ali_Shiple' title='Ali M. Shiple: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/12895436/small/00917d09ca1b4b6d8e0ef36af07ecf6b.jpg' alt='Ali_Shiple' style='border-radius:42px;width:42px;height:42px;'/></a></td>
311 <td align="center"><a href='https://crowdin.com/profile/elviseras' title='elviseras: translation'><img src='https://www.gravatar.com/avatar/25c2cf0d8cb4a4141e71c3b8a2e9324f' alt='elviseras' style='border-radius:42px;width:42px;height:42px;'/></a></td>
312 <td align="center"><a href='https://crowdin.com/profile/J370' title='J370: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14141203/small/7b12b5db419d8796450221c2eaaf6003.png' alt='J370' style='border-radius:42px;width:42px;height:42px;'/></a></td>
313 <td align="center"><a href='https://crowdin.com/profile/keunes' title='Koen: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/13018172/small/829115c606347b10218f34c637a2100c.png' alt='keunes' style='border-radius:42px;width:42px;height:42px;'/></a></td>
314 <td align="center"><a href='https://crowdin.com/profile/leandrogehlen' title='Leandro Gehlen: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14099621/small/1d9503523839c310dbce0af3c226e894.jpeg' alt='leandrogehlen' style='border-radius:42px;width:42px;height:42px;'/></a></td>
315 </tr>
316 <tr>
317 <td align="center"><a href='https://crowdin.com/profile/Matthieu42' title='Matthieu42: translation'><img src='https://www.gravatar.com/avatar/735217ccccf11ba97573deee517ddb19' alt='Matthieu42' style='border-radius:42px;width:42px;height:42px;'/></a></td>
318 <td align="center"><a href='https://crowdin.com/profile/nicky18013' title='Nikita Bibanaev: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/13468928/small/2b31e7ac19645d950a79b33ffd5721b8.png' alt='nicky18013' style='border-radius:42px;width:42px;height:42px;'/></a></td>
319 <td align="center"><a href='https://crowdin.com/profile/Tatjana1998' title='Tatjana1998: translation'><img src='https://www.gravatar.com/avatar/ade202a04fcbb2c177e4f1d9936af29e' alt='Tatjana1998' style='border-radius:42px;width:42px;height:42px;'/></a></td>
320 <td align="center"><a href='https://crowdin.com/profile/seayko' title='tinect: translation'><img src='https://www.gravatar.com/avatar/65e2aef738ddf828f822d8463fd04918' alt='seayko' style='border-radius:42px;width:42px;height:42px;'/></a></td>
321 <td align="center"><a href='https://crowdin.com/profile/Pusnow' title='Wonsup Yoon: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/13514833/small/65f0b45587cc7e34f2827830cd324b16.jpeg' alt='Pusnow' style='border-radius:42px;width:42px;height:42px;'/></a></td>
322 <td align="center"><a href='https://crowdin.com/profile/zutt' title='zutt: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/13320003/small/50fdf9f8c7e54a446925bd79696ea625.JPG' alt='zutt' style='border-radius:42px;width:42px;height:42px;'/></a></td>
323 <td align="center"><a href='http://twitter.com/noemis_exec' title='n0emis: code, translation'><img src='https://avatars3.githubusercontent.com/u/22817873?v=4' alt='n0emis' style='border-radius:42px;width:42px;height:42px;'/></a></td>
324 <td align="center"><a href='https://www.monke-agency.com/equipe.html' title='gmarec: code'><img src='https://avatars2.githubusercontent.com/u/3405028?v=4' alt='gmarec' style='border-radius:42px;width:42px;height:42px;'/></a></td>
325 <td align="center"><a href='https://crowdin.com/profile/127oo1' title='127oo1: translation'><img src='https://www.gravatar.com/avatar/060c722be11da16ae31902e9c98326b2' alt='127oo1' style='border-radius:42px;width:42px;height:42px;'/></a></td>
326 <td align="center"><a href='https://crowdin.com/profile/ChTBoner' title='ChTBoner: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/13273153/small/a810886febf5199cfa1c98644444dea7.jpeg' alt='ChTBoner' style='border-radius:42px;width:42px;height:42px;'/></a></td>
327 <td align="center"><a href='https://crowdin.com/profile/johanengstrand' title='Johan Engstrand: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14152801/small/fd395f120efca971ca9b34c57fd02cca.png' alt='johanengstrand' style='border-radius:42px;width:42px;height:42px;'/></a></td>
328 <td align="center"><a href='https://mrassili.com' title='Marouane R: code'><img src='https://avatars0.githubusercontent.com/u/25288435?v=4' alt='mrassili' style='border-radius:42px;width:42px;height:42px;'/></a></td>
329 <td align="center"><a href='https://github.com/yourcontact' title='Roman: code, ideas'><img src='https://avatars2.githubusercontent.com/u/46404814?v=4' alt='yourcontact' style='border-radius:42px;width:42px;height:42px;'/></a></td>
330 <td align="center"><a href='https://github.com/mahadevans87' title='Mahadevan Sreenivasan: code, ideas, review, bug, doc, userTesting'><img src='https://avatars1.githubusercontent.com/u/1255523?v=4' alt='mahadevans87' style='border-radius:42px;width:42px;height:42px;'/></a></td>
331 <td align="center"><a href='https://jakelee.co.uk' title='Jake Lee: content'><img src='https://avatars2.githubusercontent.com/u/12380876?v=4' alt='JakeSteam' style='border-radius:42px;width:42px;height:42px;'/></a></td>
332 <td align="center"><a href='https://github.com/sampathBlam' title='Sampath Kumar Krishnan: code, review, ideas, bug, doc, userTesting'><img src='https://avatars1.githubusercontent.com/u/17728976?v=4' alt='sampathBlam' style='border-radius:42px;width:42px;height:42px;'/></a></td>
333 </tr>
334 <tr>
335 <td align="center"><a href='https://github.com/saruwman' title='saruwman: doc, code'><img src='https://avatars2.githubusercontent.com/u/41330038?v=4' alt='saruwman' style='border-radius:42px;width:42px;height:42px;'/></a></td>
336 <td align="center"><a href='https://github.com/dorukkarinca' title='dorukkarinca: bug'><img src='https://avatars0.githubusercontent.com/u/9303867?v=4' alt='dorukkarinca' style='border-radius:42px;width:42px;height:42px;'/></a></td>
337 <td align="center"><a href='https://www.linkedin.com/in/gautamsi' title='Gautam Singh: code'><img src='https://avatars2.githubusercontent.com/u/5769869?v=4' alt='gautamsi' style='border-radius:42px;width:42px;height:42px;'/></a></td>
338 <td align="center"><a href='https://feikojoosten.com' title='Feiko Joosten: code'><img src='https://avatars0.githubusercontent.com/u/10920052?v=4' alt='FeikoJoosten' style='border-radius:42px;width:42px;height:42px;'/></a></td>
339 <td align="center"><a href='https://crowdin.com/profile/2bdelghafour' title='2bdelghafour: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14219410/small/31ff20f60d352fb46e314f3c180a77b0.jpeg' alt='2bdelghafour' style='border-radius:42px;width:42px;height:42px;'/></a></td>
340 <td align="center"><a href='https://crowdin.com/profile/abdoutanta' title='Abderrahim Tantaoui: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14213908/small/5b2fc8166f8a0a2b7313fbf49ee5b6b6.jpeg' alt='abdoutanta' style='border-radius:42px;width:42px;height:42px;'/></a></td>
341 <td align="center"><a href='https://crowdin.com/profile/AndiLeni' title='AndiLeni: translation'><img src='https://www.gravatar.com/avatar/4bd0da860de38afa735425ce2d4e10b5' alt='AndiLeni' style='border-radius:42px;width:42px;height:42px;'/></a></td>
342 <td align="center"><a href='https://crowdin.com/profile/brunofalmada' title='Bruno Almada: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14200540/small/f6f1addceeeabc02488f9b08520a902f.jpeg' alt='brunofalmada' style='border-radius:42px;width:42px;height:42px;'/></a></td>
343 <td align="center"><a href='https://crowdin.com/profile/Catarino' title='Catarino Gonçalo: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14208802/small/07287eb2de671257ca3d6bb4ba1cca67.jpeg' alt='Catarino' style='border-radius:42px;width:42px;height:42px;'/></a></td>
344 <td align="center"><a href='https://crowdin.com/profile/Alzemand' title='Edilson Alzemand Sigmaringa Junior: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14184269/small/f5e68247f01988ae7951a282f0fd4d06.jpeg' alt='Alzemand' style='border-radius:42px;width:42px;height:42px;'/></a></td>
345 <td align="center"><a href='https://crowdin.com/profile/MAT-OUT' title='MAT-OUT: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14201550/small/68dd2402bf2879bc3ca312d627710400.png' alt='MAT-OUT' style='border-radius:42px;width:42px;height:42px;'/></a></td>
346 <td align="center"><a href='https://crowdin.com/profile/mazzo98' title='mazzo98: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/12864917/small/69799b5fd7be2f67282715d5cdfd4ae1.png' alt='mazzo98' style='border-radius:42px;width:42px;height:42px;'/></a></td>
347 <td align="center"><a href='https://crowdin.com/profile/paprika-naught-tiffin-flyspeck' title='paprika-naught-tiffin-flyspeck: translation'><img src='https://www.gravatar.com/avatar/8671ebe7a7164dfa7624fbdbff69ed96' alt='paprika-naught-tiffin-flyspeck' style='border-radius:42px;width:42px;height:42px;'/></a></td>
348 <td align="center"><a href='https://crowdin.com/profile/patrickvalle' title='Patrick Valle: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14217484/small/8b73f313ee79fe33625e819cdac86551.jpg' alt='patrickvalle' style='border-radius:42px;width:42px;height:42px;'/></a></td>
349 <td align="center"><a href='https://crowdin.com/profile/peq42' title='peq42_: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14155811/small/b62a94dde7ec29948ec6a6af9fd24b1d.png' alt='peq42' style='border-radius:42px;width:42px;height:42px;'/></a></td>
350 <td align="center"><a href='https://crowdin.com/profile/karlinhos' title='Pumbinha: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14161139/small/96450eb44c22b3141ab4401e547109b8.png' alt='karlinhos' style='border-radius:42px;width:42px;height:42px;'/></a></td>
351 </tr>
352 <tr>
353 <td align="center"><a href='https://crowdin.com/profile/dies' title='Serhiy Dmytryshyn: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/1/small/e84bcdf6c084ffd52527931f988fb410.png' alt='dies' style='border-radius:42px;width:42px;height:42px;'/></a></td>
354 <td align="center"><a href='https://crowdin.com/profile/SMile61' title='SMile61: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/14177585/small/1bb4f6ba39bff3df8f579e61460ce016.png' alt='SMile61' style='border-radius:42px;width:42px;height:42px;'/></a></td>
355 <td align="center"><a href='https://crowdin.com/profile/tinect' title='tinect: translation'><img src='https://crowdin-static.downloads.crowdin.com/avatar/12521988/small/56c2041645746af9e51dd28782b828c3.jpeg' alt='tinect' style='border-radius:42px;width:42px;height:42px;'/></a></td>
356 <td align="center"><a href='https://github.com/gega7' title='gega7: bug'><img src='https://avatars0.githubusercontent.com/u/20799911?v=4' alt='gega7' style='border-radius:42px;width:42px;height:42px;'/></a></td>
357 <td align="center"><a href='https://github.com/tristanplouz' title='tristanplouz: code, ideas'><img src='https://avatars2.githubusercontent.com/u/6893466?v=4' alt='tristanplouz' style='border-radius:42px;width:42px;height:42px;'/></a></td>
358 <td align="center"><a href='https://github.com/dannyqiu' title='Danny Qiu: code, bug'><img src='https://avatars1.githubusercontent.com/u/1170755?v=4' alt='dannyqiu' style='border-radius:42px;width:42px;height:42px;'/></a></td>
359 <td align="center"><a href='https://github.com/belyazidi56' title='Youssef Belyazidi: code'><img src='https://avatars3.githubusercontent.com/u/35711540?v=4' alt='belyazidi56' style='border-radius:42px;width:42px;height:42px;'/></a></td>
360 <td align="center"><a href='https://github.com/gabspeck' title='Gabriel Speckhahn: platform'><img src='https://avatars2.githubusercontent.com/u/749488?v=4' alt='gabspeck' style='border-radius:42px;width:42px;height:42px;'/></a></td>
361 <td align="center"><a href='https://github.com/dandelionadia' title='Nadiia Ridko: code'><img src='https://avatars0.githubusercontent.com/u/33199975?v=4' alt='dandelionadia' style='border-radius:42px;width:42px;height:42px;'/></a></td>
362 <td align="center"><a href='https://hohner.dev' title='Jan Hohner: userTesting'><img src='https://avatars0.githubusercontent.com/u/649895?v=4' alt='janhohner' style='border-radius:42px;width:42px;height:42px;'/></a></td>
363 <td align="center"><a href='https://marussy.com' title='Kristóf Marussy: code, maintenance, review'><img src='https://avatars1.githubusercontent.com/u/38888?v=4' alt='kris7t' style='border-radius:42px;width:42px;height:42px;'/></a></td>
364 <td align="center"><a href='https://cl.linkedin.com/in/juanvalentinmoraruiz' title='Juan Mora: code'><img src='https://avatars0.githubusercontent.com/u/4575267?v=4' alt='raicerk' style='border-radius:42px;width:42px;height:42px;'/></a></td>
365 <td align="center"><a href='https://tofran.com' title='Francisco Marques: code'><img src='https://avatars2.githubusercontent.com/u/5692603?v=4' alt='tofran' style='border-radius:42px;width:42px;height:42px;'/></a></td>
366 <td align="center"><a href='https://digitalcoyote.github.io/NuGetDefense/' title='Curtis Carter: platform'><img src='https://avatars3.githubusercontent.com/u/16868093?v=4' alt='digitalcoyote' style='border-radius:42px;width:42px;height:42px;'/></a></td>
367 <td align="center"><a href='https://github.com/kawarimidoll' title='カワリミ人形: doc'><img src='https://avatars0.githubusercontent.com/u/8146876?v=4' alt='kawarimidoll' style='border-radius:42px;width:42px;height:42px;'/></a></td>
368 <td align="center"><a href='https://immortal-pc.info/' title='1mm0rt41PC: code'><img src='https://avatars0.githubusercontent.com/u/5358076?v=4' alt='1mm0rt41PC' style='border-radius:42px;width:42px;height:42px;'/></a></td>
369 </tr>
370 <tr>
371 <td align="center"><a href='http://code-addict.pl' title='Michał Kostewicz: code'><img src='https://avatars.githubusercontent.com/u/6313392?v=4' alt='k0staa' style='border-radius:42px;width:42px;height:42px;'/></a></td>
372 <td align="center"><a href='https://www.linkedin.com/in/yogainformatika/' title='Yoga Setiawan: code, platform'><img src='https://avatars.githubusercontent.com/u/1139881?v=4' alt='arioki1' style='border-radius:42px;width:42px;height:42px;'/></a></td>
373 <td align="center"><a href='https://github.com/MosheGross' title='Moshe Gross: code'><img src='https://avatars.githubusercontent.com/u/77084755?v=4' alt='MosheGross' style='border-radius:42px;width:42px;height:42px;'/></a></td>
374 <td align="center"><a href='https://github.com/stnkl' title='Stephan Rumswinkel: code, bug'><img src='https://avatars.githubusercontent.com/u/17520641?v=4' alt='stnkl' style='border-radius:42px;width:42px;height:42px;'/></a></td>
375 <td align="center"><a href='https://github.com/vraravam' title='Vijay Raghavan Aravamudhan: maintenance, doc, code, mentoring, review, infra, ideas, bug, content, userTesting, projectManagement'><img src='https://avatars.githubusercontent.com/u/69629?v=4' alt='vraravam' style='border-radius:42px;width:42px;height:42px;'/></a></td>
376 <td align="center"><a href='https://dustin.meecolabs.eu/' title='Dustin: design'><img src='https://avatars.githubusercontent.com/u/124467?v=4' alt='alopix' style='border-radius:42px;width:42px;height:42px;'/></a></td>
377 <td align="center"><a href='https://github.com/jakobsudau' title='Jakob Felix Julius Sudau: design'><img src='https://avatars.githubusercontent.com/u/721715?v=4' alt='jakobsudau' style='border-radius:42px;width:42px;height:42px;'/></a></td>
378 <td align="center"><a href='https://prasans.info' title='Prasanna: code'><img src='https://avatars.githubusercontent.com/u/380340?v=4' alt='prasann' style='border-radius:42px;width:42px;height:42px;'/></a></td>
379 <td align="center"><a href='https://github.com/markandan' title='Markandan R: code'><img src='https://avatars.githubusercontent.com/u/7975763?v=4' alt='markandan' style='border-radius:42px;width:42px;height:42px;'/></a></td>
380 <td align="center"><a href='https://markushatvan.com' title='Markus Hatvan: code, ideas, design, review, infra'><img src='https://avatars.githubusercontent.com/u/16797721?v=4' alt='mhatvan' style='border-radius:42px;width:42px;height:42px;'/></a></td>
381 <td align="center"><a href='https://sergiu.dev/' title='Sergiu Ghitea: code'><img src='https://avatars.githubusercontent.com/u/28300158?v=4' alt='sergiughf' style='border-radius:42px;width:42px;height:42px;'/></a></td>
382 <td align="center"><a href='https://github.com/ArviTheMan' title='ArviTheMan: doc'><img src='https://avatars.githubusercontent.com/u/73516201?v=4' alt='ArviTheMan' style='border-radius:42px;width:42px;height:42px;'/></a></td>
383 <td align="center"><a href='https://bandism.net/' title='Ikko Ashimine: code'><img src='https://avatars.githubusercontent.com/u/22633385?v=4' alt='eltociear' style='border-radius:42px;width:42px;height:42px;'/></a></td>
384 <td align="center"><a href='https://github.com/madsmtm' title='Mads Marquart: translation'><img src='https://avatars.githubusercontent.com/u/10577181?v=4' alt='madsmtm' style='border-radius:42px;width:42px;height:42px;'/></a></td>
385 <td align="center"><a href='http://mateusz.loskot.net/' title='Mateusz Åoskot: doc'><img src='https://avatars.githubusercontent.com/u/80741?v=4' alt='mloskot' style='border-radius:42px;width:42px;height:42px;'/></a></td>
386 <td align="center"><a href='https://github.com/skoshy' title='Stefan K: doc'><img src='https://avatars.githubusercontent.com/u/369825?v=4' alt='skoshy' style='border-radius:42px;width:42px;height:42px;'/></a></td>
387 </tr>
388 <tr>
389 <td align="center"><a href='https://github.com/graves501' title='graves501: doc'><img src='https://avatars.githubusercontent.com/u/11211125?v=4' alt='graves501' style='border-radius:42px;width:42px;height:42px;'/></a></td>
390 <td align="center"><a href='https://www.ekino.com' title='Sadetdin EYILI: code, bug, userTesting'><img src='https://avatars.githubusercontent.com/u/5607440?v=4' alt='sad270' style='border-radius:42px;width:42px;height:42px;'/></a></td>
391 <td align="center"><a href='https://github.com/Tsakatac' title='Tsakatac: bug'><img src='https://avatars.githubusercontent.com/u/89021195?v=4' alt='Tsakatac' style='border-radius:42px;width:42px;height:42px;'/></a></td>
392 <td align="center"><a href='http://niute.ch' title='niu tech: code'><img src='https://avatars.githubusercontent.com/u/384997?v=4' alt='niutech' style='border-radius:42px;width:42px;height:42px;'/></a></td>
393 <td align="center"><a href='https://github.com/Suvarna221B' title='Suvarna Sivadas: code'><img src='https://avatars.githubusercontent.com/u/31803071?v=4' alt='Suvarna221B' style='border-radius:42px;width:42px;height:42px;'/></a></td>
394 <td align="center"><a href='https://github.com/johan-mathew' title='Johan Mathew: code'><img src='https://avatars.githubusercontent.com/u/31700508?v=4' alt='johan-mathew' style='border-radius:42px;width:42px;height:42px;'/></a></td>
395 <td align="center"><a href='https://github.com/AjeshKumarS' title='Ajesh Kumar S: code'><img src='https://avatars.githubusercontent.com/u/31558237?v=4' alt='AjeshKumarS' style='border-radius:42px;width:42px;height:42px;'/></a></td>
396 <td align="center"><a href='https://github.com/sreelekhaMarasig' title='Ajesh Kumar S: code'><img src='https://avatars.githubusercontent.com/u/93112178?v=4' alt='sreelekhaMarasig' style='border-radius:42px;width:42px;height:42px;'/></a></td>
397 <td align="center"><a href='https://github.com/MadhuriBandanadam' title='Madhuri: code'><img src='https://avatars.githubusercontent.com/u/63137999?v=4' alt='MadhuriBandanadam' style='border-radius:42px;width:42px;height:42px;'/></a></td>
398 <td align="center"><a href='https://github.com/abinmn' title='Abin Mn: code'><img src='https://avatars.githubusercontent.com/u/29946484?v=4' alt='abinmn' style='border-radius:42px;width:42px;height:42px;'/></a></td>
399 <td align="center"><a href='https://github.com/AnjithPaul' title='Anjith Paul: code'><img src='https://avatars.githubusercontent.com/u/65152866?v=4' alt='AnjithPaul' style='border-radius:42px;width:42px;height:42px;'/></a></td>
400 <td align="center"><a href='https://github.com/Vishnu017' title='Vishnu017: code'><img src='https://avatars.githubusercontent.com/u/39431453?v=4' alt='Vishnu017' style='border-radius:42px;width:42px;height:42px;'/></a></td>
401 <td align="center"><a href='https://github.com/rachelcynthia' title='Rachel Cynthia V: code'><img src='https://avatars.githubusercontent.com/u/46859572?v=4' alt='rachelcynthia' style='border-radius:42px;width:42px;height:42px;'/></a></td>
402 <td align="center"><a href='https://github.com/Chandrika-Priya' title='Chandrika Priya Bogadi: code'><img src='https://avatars.githubusercontent.com/u/46720139?v=4' alt='Chandrika-Priya' style='border-radius:42px;width:42px;height:42px;'/></a></td>
403 <td align="center"><a href='https://github.com/Dee-Bajaj' title='Deepti: code'><img src='https://avatars.githubusercontent.com/u/66486870?v=4' alt='Dee-Bajaj' style='border-radius:42px;width:42px;height:42px;'/></a></td>
404 <td align="center"><a href='https://github.com/DarsiSreelekha' title='DarsiSreelekha: code'><img src='https://avatars.githubusercontent.com/u/89741061?v=4' alt='DarsiSreelekha' style='border-radius:42px;width:42px;height:42px;'/></a></td>
405 </tr>
406</table>
407
408<!-- markdownlint-restore -->
409<!-- prettier-ignore-end -->
410
411<!-- ALL-CONTRIBUTORS-LIST:END -->
412 193
413This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome! 194This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!
414 195
415## Backers via OpenCollective 196### Backers via Open Collective
416 197
417<a href="https://opencollective.com/getferdi#section-contribute" target="_blank"><img src="https://opencollective.com/getferdi/backers.svg?width=890"></a> 198<a href="https://opencollective.com/getferdi#section-contribute" target="_blank"><img src="https://opencollective.com/getferdi/backers.svg?avatarHeight=42&width=890"></a>
418 199
419Mention to the individuals backing us via [GitHub Sponsors](https://github.com/sponsors/getferdi) as well. 200Mention to the individuals backing us via [GitHub Sponsors](https://github.com/sponsors/getferdi) as well.
420 201
421## Sponsors via OpenCollective 202### Sponsors
422
423<a href="https://opencollective.com/getferdi#section-contribute" target="_blank"><img src="https://opencollective.com/getferdi/sponsors.svg?width=890"></a>
424
425## Other Sponsors
426 203
427<p> 204<p>
428 <a href="https://www.digitalocean.com/"> 205 <a href="https://www.digitalocean.com/">
429 <img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg" width="201px"> 206 <img src="https://getferdi.com/wp-content/uploads/sites/4/2021/09/digitalocean-logo-vector-1-1.svg" height="32px">
430 </a> 207 </a>
431</p> 208</p>
432<p> 209<p>
433 <a href="https://www.parallels.com/"> 210 <a href="https://www.parallels.com/">
434 <img src="https://user-images.githubusercontent.com/412895/87706297-3025e380-c797-11ea-94c4-bf8414b0b5ab.png" height="32px"> 211 <img src="https://getferdi.com/wp-content/uploads/sites/4/2021/12/Parallels_logo.svg" height="30px">
435 </a> 212 </a>
436</p> 213</p>
diff --git a/branding/Ferdi.svg b/branding/Ferdi.svg
new file mode 100644
index 000000000..bb6e47939
--- /dev/null
+++ b/branding/Ferdi.svg
@@ -0,0 +1,12 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3<svg width="100%" height="100%" viewBox="0 0 1000 1000" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
4 <g id="Logo" transform="matrix(13.3662,0,0,13.3662,20.0535,18.5803)">
5 <g id="Lower-beard" serif:id="Lower beard" transform="matrix(0.0748156,0,0,0.0748156,-1.50032,-1.39009)">
6 <path d="M503.642,629.673C527.496,629.947 576.943,631.918 581,640C594.482,666.859 531.448,825.299 503.284,841.639L503.282,843C502.598,843 501.881,842.874 501.133,842.629C500.391,842.874 499.679,843 499,843L498.998,841.659C470.575,825.433 406.168,666.87 419.745,640C423.831,631.913 474.528,629.944 498.642,629.673L498.642,629.638C499.424,629.64 500.255,629.644 501.132,629.65C502.017,629.644 502.855,629.64 503.642,629.638L503.642,629.673Z" style="fill:white;"/>
7 </g>
8 <g id="Upper-beard" serif:id="Upper beard" transform="matrix(0.0748156,0,0,0.0748156,-1.50032,-1.39009)">
9 <path d="M498.733,357.203C547.473,355.78 574.716,313.221 627.233,336.042C700.337,367.808 723.258,456.308 806.959,474.341C838.428,481.121 857.323,456.253 877.092,437.581C883.524,431.506 893.049,418.562 896.807,419.813C900.441,421.022 900.267,433.842 898.85,440.69C896.129,453.836 892.451,467.441 884.685,478.393C874.137,493.269 860.132,505.776 845.238,516.299C802.136,546.753 740.569,558.817 688.631,557.703C652.806,556.934 612.989,546.685 579.942,534.342C549.791,523.08 533.28,483.381 498.234,482.887C463.111,483.381 446.563,523.08 416.345,534.342C383.226,546.685 343.32,556.934 307.416,557.703C255.363,558.817 193.659,546.753 150.461,516.299C135.535,505.776 121.498,493.269 110.927,478.393C103.144,467.441 99.458,453.836 96.731,440.69C95.311,433.842 95.136,421.022 98.778,419.813C102.545,418.562 112.091,431.506 118.537,437.581C138.35,456.253 157.286,481.121 188.826,474.341C272.712,456.308 295.684,367.808 368.949,336.042C421.583,313.221 449.854,355.78 498.733,357.203Z" style="fill:rgb(254,254,254);fill-rule:nonzero;"/>
10 </g>
11 </g>
12</svg>
diff --git a/docs/example-feature/actions.js b/docs/example-feature/actions.js
deleted file mode 100644
index c4d49b708..000000000
--- a/docs/example-feature/actions.js
+++ /dev/null
@@ -1,10 +0,0 @@
1import PropTypes from 'prop-types';
2import { createActionsFromDefinitions } from '../../src/actions/lib/actions';
3
4export const exampleFeatureActions = createActionsFromDefinitions({
5 greet: {
6 name: PropTypes.string.isRequired,
7 },
8}, PropTypes.checkPropTypes);
9
10export default exampleFeatureActions;
diff --git a/docs/example-feature/api.js b/docs/example-feature/api.js
deleted file mode 100644
index d9c769c91..000000000
--- a/docs/example-feature/api.js
+++ /dev/null
@@ -1,5 +0,0 @@
1export default {
2 async getName() {
3 return Promise.resolve('Ferdi');
4 },
5};
diff --git a/docs/example-feature/state.js b/docs/example-feature/state.js
deleted file mode 100644
index 676717da7..000000000
--- a/docs/example-feature/state.js
+++ /dev/null
@@ -1,14 +0,0 @@
1import { observable } from 'mobx';
2
3const defaultState = {
4 name: null,
5 isFeatureActive: false,
6};
7
8export const exampleFeatureState = observable(defaultState);
9
10export function resetState() {
11 Object.assign(exampleFeatureState, defaultState);
12}
13
14export default exampleFeatureState;
diff --git a/docs/example-feature/store.js b/docs/example-feature/store.js
deleted file mode 100644
index 9fc86de36..000000000
--- a/docs/example-feature/store.js
+++ /dev/null
@@ -1,36 +0,0 @@
1import { action, observable, reaction } from 'mobx';
2import Store from '../../src/stores/lib/Store';
3import Request from '../../src/stores/lib/Request';
4
5const debug = require('debug')('Ferdi:feature:EXAMPLE_FEATURE:store');
6
7export class ExampleFeatureStore extends Store {
8 @observable getNameRequest = new Request(this.api, 'getName');
9
10 constructor(stores, api, actions, state) {
11 super(stores, api, actions);
12 this.state = state;
13 }
14
15 setup() {
16 debug('fetching name from api');
17 this.getNameRequest.execute();
18
19 // Update the name on the state when the request resolved
20 reaction(
21 () => (
22 this.getNameRequest.result
23 ),
24 (name) => {
25 this._setName(name);
26 },
27 );
28 }
29
30 @action _setName = (name) => {
31 debug('setting name', name);
32 this.state.name = name;
33 };
34}
35
36export default ExampleFeatureStore;
diff --git a/package-lock.json b/package-lock.json
index be4610c33..d3f079ae7 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
1{ 1{
2 "name": "ferdi", 2 "name": "ferdi",
3 "version": "5.6.3", 3 "version": "5.6.4-nightly.34",
4 "lockfileVersion": 2, 4 "lockfileVersion": 2,
5 "requires": true, 5 "requires": true,
6 "packages": { 6 "packages": {
7 "": { 7 "": {
8 "name": "ferdi", 8 "name": "ferdi",
9 "version": "5.6.3", 9 "version": "5.6.4-nightly.34",
10 "license": "Apache-2.0", 10 "license": "Apache-2.0",
11 "dependencies": { 11 "dependencies": {
12 "@adonisjs/ace": "^5.0.8", 12 "@adonisjs/ace": "^5.0.8",
@@ -29,6 +29,7 @@
29 "auto-launch": "^5.0.5", 29 "auto-launch": "^5.0.5",
30 "btoa": "^1.2.1", 30 "btoa": "^1.2.1",
31 "classnames": "^2.3.1", 31 "classnames": "^2.3.1",
32 "cld": "^2.7.1",
32 "color": "^4.0.1", 33 "color": "^4.0.1",
33 "csstype": "^3.0.9", 34 "csstype": "^3.0.9",
34 "darkreader": "^4.9.39", 35 "darkreader": "^4.9.39",
@@ -38,7 +39,7 @@
38 "electron-fetch": "^1.7.4", 39 "electron-fetch": "^1.7.4",
39 "electron-find": "^1.0.7", 40 "electron-find": "^1.0.7",
40 "electron-react-titlebar": "^1.1.0", 41 "electron-react-titlebar": "^1.1.0",
41 "electron-updater": "^4.3.9", 42 "electron-updater": "^4.6.2",
42 "electron-window-state": "^5.0.3", 43 "electron-window-state": "^5.0.3",
43 "fast-folder-size": "^1.5.0", 44 "fast-folder-size": "^1.5.0",
44 "fs-extra": "^10.0.0", 45 "fs-extra": "^10.0.0",
@@ -50,8 +51,8 @@
50 "minimist": "^1.2.5", 51 "minimist": "^1.2.5",
51 "mobx": "^5.15.0", 52 "mobx": "^5.15.0",
52 "mobx-localstorage": "^1.2.0", 53 "mobx-localstorage": "^1.2.0",
53 "mobx-react": "^5.4.2", 54 "mobx-react": "^6.3.1",
54 "mobx-react-form": "1.35.1", 55 "mobx-react-form": "^2.0.9",
55 "mobx-react-router": "^3.1.2", 56 "mobx-react-router": "^3.1.2",
56 "moment": "^2.29.1", 57 "moment": "^2.29.1",
57 "ms": "^2.1.3", 58 "ms": "^2.1.3",
@@ -67,7 +68,7 @@
67 "react-dropzone": "^11.4.2", 68 "react-dropzone": "^11.4.2",
68 "react-electron-web-view": "^2.0.1", 69 "react-electron-web-view": "^2.0.1",
69 "react-intl": "^5.21.0", 70 "react-intl": "^5.21.0",
70 "react-jss": "^8.6.1", 71 "react-jss": "^10.8.2",
71 "react-loader": "^2.4.7", 72 "react-loader": "^2.4.7",
72 "react-modal": "^3.14.3", 73 "react-modal": "^3.14.3",
73 "react-router": "^3.2.6", 74 "react-router": "^3.2.6",
@@ -84,14 +85,14 @@
84 "ws": "^8.2.3" 85 "ws": "^8.2.3"
85 }, 86 },
86 "devDependencies": { 87 "devDependencies": {
87 "@babel/eslint-parser": "^7.16.0", 88 "@babel/eslint-parser": "^7.16.3",
88 "@babel/plugin-proposal-class-properties": "^7.14.5", 89 "@babel/plugin-proposal-class-properties": "^7.14.5",
89 "@babel/plugin-proposal-decorators": "^7.16.0", 90 "@babel/plugin-proposal-decorators": "^7.16.0",
90 "@babel/preset-env": "^7.16.0", 91 "@babel/preset-env": "^7.16.0",
91 "@babel/preset-react": "^7.14.5", 92 "@babel/preset-react": "^7.14.5",
92 "@babel/register": "^7.15.3", 93 "@babel/register": "^7.15.3",
93 "@commitlint/cli": "^14.1.0", 94 "@commitlint/cli": "^15.0.0",
94 "@commitlint/config-conventional": "^14.1.0", 95 "@commitlint/config-conventional": "^15.0.0",
95 "@formatjs/cli": "^4.4.0", 96 "@formatjs/cli": "^4.4.0",
96 "@types/color": "^3.0.2", 97 "@types/color": "^3.0.2",
97 "@types/expect.js": "^0.3.29", 98 "@types/expect.js": "^0.3.29",
@@ -107,8 +108,8 @@
107 "@types/tar": "^6.1.0", 108 "@types/tar": "^6.1.0",
108 "@types/uuid": "^8.3.1", 109 "@types/uuid": "^8.3.1",
109 "@types/validator": "^13.6.4", 110 "@types/validator": "^13.6.4",
110 "@typescript-eslint/eslint-plugin": "^5.1.0", 111 "@typescript-eslint/eslint-plugin": "^5.3.1",
111 "@typescript-eslint/parser": "^5.1.0", 112 "@typescript-eslint/parser": "^5.3.1",
112 "all-contributors-cli": "^6.20.0", 113 "all-contributors-cli": "^6.20.0",
113 "babel-plugin-formatjs": "^10.3.11", 114 "babel-plugin-formatjs": "^10.3.11",
114 "commitizen": "^4.2.4", 115 "commitizen": "^4.2.4",
@@ -116,20 +117,20 @@
116 "cross-env": "^7.0.3", 117 "cross-env": "^7.0.3",
117 "cz-conventional-changelog": "^3.3.0", 118 "cz-conventional-changelog": "^3.3.0",
118 "dotenv": "^10.0.0", 119 "dotenv": "^10.0.0",
119 "electron": "15.3.0", 120 "electron": "15.3.3",
120 "electron-builder": "22.14.5", 121 "electron-builder": "22.14.10",
121 "electron-notarize": "^1.1.1", 122 "electron-notarize": "^1.1.1",
122 "eslint": "^8.1.0", 123 "eslint": "^8.2.0",
123 "eslint-config-airbnb": "^18.2.1", 124 "eslint-config-airbnb": "^19.0.0",
124 "eslint-config-airbnb-typescript": "^14.0.1", 125 "eslint-config-airbnb-typescript": "^16.0.0",
125 "eslint-config-prettier": "^8.3.0", 126 "eslint-config-prettier": "^8.3.0",
126 "eslint-plugin-import": "^2.25.2", 127 "eslint-plugin-import": "^2.25.3",
127 "eslint-plugin-jest": "^25.2.2", 128 "eslint-plugin-jest": "^25.2.4",
128 "eslint-plugin-jsx-a11y": "^6.4.1", 129 "eslint-plugin-jsx-a11y": "^6.5.1",
129 "eslint-plugin-prettier": "^4.0.0", 130 "eslint-plugin-prettier": "^4.0.0",
130 "eslint-plugin-react": "^7.26.1", 131 "eslint-plugin-react": "^7.27.0",
131 "eslint-plugin-react-hooks": "^4.2.0", 132 "eslint-plugin-react-hooks": "^4.3.0",
132 "eslint-plugin-unicorn": "^37.0.1", 133 "eslint-plugin-unicorn": "^39.0.0",
133 "expect.js": "^0.3.1", 134 "expect.js": "^0.3.1",
134 "gulp": "^4.0.2", 135 "gulp": "^4.0.2",
135 "gulp-babel": "^8.0.0", 136 "gulp-babel": "^8.0.0",
@@ -159,7 +160,7 @@
159 "ts-loader": "^5.4.5", 160 "ts-loader": "^5.4.5",
160 "ts-mocha": "^8.0.0", 161 "ts-mocha": "^8.0.0",
161 "ts-node": "^10.2.1", 162 "ts-node": "^10.2.1",
162 "typescript": "4.2.4", 163 "typescript": "4.5.2",
163 "wait-on": "^6.0.0", 164 "wait-on": "^6.0.0",
164 "webpack": "^4.46.0", 165 "webpack": "^4.46.0",
165 "webpack-cli": "^3.3.12", 166 "webpack-cli": "^3.3.12",
@@ -170,8 +171,7 @@
170 "npm": "^8.1.0" 171 "npm": "^8.1.0"
171 }, 172 },
172 "optionalDependencies": { 173 "optionalDependencies": {
173 "cld": "^2.7.0", 174 "node-mac-permissions": "git@github.com:vraravam/node-mac-permissions.git#3cffec37379e6584627d831611a8ff12b57bbcdb"
174 "node-mac-permissions": "^2.2.0"
175 } 175 }
176 }, 176 },
177 "node_modules/@adonisjs/ace": { 177 "node_modules/@adonisjs/ace": {
@@ -486,29 +486,29 @@
486 } 486 }
487 }, 487 },
488 "node_modules/@babel/compat-data": { 488 "node_modules/@babel/compat-data": {
489 "version": "7.16.0", 489 "version": "7.16.4",
490 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", 490 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz",
491 "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", 491 "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==",
492 "dev": true, 492 "dev": true,
493 "engines": { 493 "engines": {
494 "node": ">=6.9.0" 494 "node": ">=6.9.0"
495 } 495 }
496 }, 496 },
497 "node_modules/@babel/core": { 497 "node_modules/@babel/core": {
498 "version": "7.15.8", 498 "version": "7.16.0",
499 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", 499 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz",
500 "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", 500 "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==",
501 "dev": true, 501 "dev": true,
502 "dependencies": { 502 "dependencies": {
503 "@babel/code-frame": "^7.15.8", 503 "@babel/code-frame": "^7.16.0",
504 "@babel/generator": "^7.15.8", 504 "@babel/generator": "^7.16.0",
505 "@babel/helper-compilation-targets": "^7.15.4", 505 "@babel/helper-compilation-targets": "^7.16.0",
506 "@babel/helper-module-transforms": "^7.15.8", 506 "@babel/helper-module-transforms": "^7.16.0",
507 "@babel/helpers": "^7.15.4", 507 "@babel/helpers": "^7.16.0",
508 "@babel/parser": "^7.15.8", 508 "@babel/parser": "^7.16.0",
509 "@babel/template": "^7.15.4", 509 "@babel/template": "^7.16.0",
510 "@babel/traverse": "^7.15.4", 510 "@babel/traverse": "^7.16.0",
511 "@babel/types": "^7.15.6", 511 "@babel/types": "^7.16.0",
512 "convert-source-map": "^1.7.0", 512 "convert-source-map": "^1.7.0",
513 "debug": "^4.1.0", 513 "debug": "^4.1.0",
514 "gensync": "^1.0.0-beta.2", 514 "gensync": "^1.0.0-beta.2",
@@ -534,9 +534,9 @@
534 } 534 }
535 }, 535 },
536 "node_modules/@babel/eslint-parser": { 536 "node_modules/@babel/eslint-parser": {
537 "version": "7.16.0", 537 "version": "7.16.3",
538 "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.0.tgz", 538 "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.3.tgz",
539 "integrity": "sha512-c+AsYOHjI+FgCa+ifLd8sDXp4U4mjkfFgL9NdQWhuA731kAUJs0WdJIXET4A14EJAR9Jv9FFF/MzPWJfV9Oirw==", 539 "integrity": "sha512-iB4ElZT0jAt7PKVaeVulOECdGe6UnmA/O0P9jlF5g5GBOwDVbna8AXhHRu4s27xQf6OkveyA8iTDv1jHdDejgQ==",
540 "dev": true, 540 "dev": true,
541 "dependencies": { 541 "dependencies": {
542 "eslint-scope": "^5.1.1", 542 "eslint-scope": "^5.1.1",
@@ -600,14 +600,14 @@
600 } 600 }
601 }, 601 },
602 "node_modules/@babel/helper-compilation-targets": { 602 "node_modules/@babel/helper-compilation-targets": {
603 "version": "7.16.0", 603 "version": "7.16.3",
604 "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz", 604 "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz",
605 "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==", 605 "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==",
606 "dev": true, 606 "dev": true,
607 "dependencies": { 607 "dependencies": {
608 "@babel/compat-data": "^7.16.0", 608 "@babel/compat-data": "^7.16.0",
609 "@babel/helper-validator-option": "^7.14.5", 609 "@babel/helper-validator-option": "^7.14.5",
610 "browserslist": "^4.16.6", 610 "browserslist": "^4.17.5",
611 "semver": "^6.3.0" 611 "semver": "^6.3.0"
612 }, 612 },
613 "engines": { 613 "engines": {
@@ -663,9 +663,9 @@
663 } 663 }
664 }, 664 },
665 "node_modules/@babel/helper-define-polyfill-provider": { 665 "node_modules/@babel/helper-define-polyfill-provider": {
666 "version": "0.2.4", 666 "version": "0.3.0",
667 "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz", 667 "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz",
668 "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==", 668 "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==",
669 "dev": true, 669 "dev": true,
670 "dependencies": { 670 "dependencies": {
671 "@babel/helper-compilation-targets": "^7.13.0", 671 "@babel/helper-compilation-targets": "^7.13.0",
@@ -805,9 +805,9 @@
805 } 805 }
806 }, 806 },
807 "node_modules/@babel/helper-remap-async-to-generator": { 807 "node_modules/@babel/helper-remap-async-to-generator": {
808 "version": "7.16.0", 808 "version": "7.16.4",
809 "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz", 809 "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz",
810 "integrity": "sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==", 810 "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==",
811 "dev": true, 811 "dev": true,
812 "dependencies": { 812 "dependencies": {
813 "@babel/helper-annotate-as-pure": "^7.16.0", 813 "@babel/helper-annotate-as-pure": "^7.16.0",
@@ -903,14 +903,14 @@
903 } 903 }
904 }, 904 },
905 "node_modules/@babel/helpers": { 905 "node_modules/@babel/helpers": {
906 "version": "7.15.4", 906 "version": "7.16.3",
907 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", 907 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz",
908 "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", 908 "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==",
909 "dev": true, 909 "dev": true,
910 "dependencies": { 910 "dependencies": {
911 "@babel/template": "^7.15.4", 911 "@babel/template": "^7.16.0",
912 "@babel/traverse": "^7.15.4", 912 "@babel/traverse": "^7.16.3",
913 "@babel/types": "^7.15.4" 913 "@babel/types": "^7.16.0"
914 }, 914 },
915 "engines": { 915 "engines": {
916 "node": ">=6.9.0" 916 "node": ">=6.9.0"
@@ -931,9 +931,9 @@
931 } 931 }
932 }, 932 },
933 "node_modules/@babel/parser": { 933 "node_modules/@babel/parser": {
934 "version": "7.16.2", 934 "version": "7.16.4",
935 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", 935 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz",
936 "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", 936 "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==",
937 "dev": true, 937 "dev": true,
938 "bin": { 938 "bin": {
939 "parser": "bin/babel-parser.js" 939 "parser": "bin/babel-parser.js"
@@ -975,13 +975,13 @@
975 } 975 }
976 }, 976 },
977 "node_modules/@babel/plugin-proposal-async-generator-functions": { 977 "node_modules/@babel/plugin-proposal-async-generator-functions": {
978 "version": "7.16.0", 978 "version": "7.16.4",
979 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.0.tgz", 979 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz",
980 "integrity": "sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw==", 980 "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==",
981 "dev": true, 981 "dev": true,
982 "dependencies": { 982 "dependencies": {
983 "@babel/helper-plugin-utils": "^7.14.5", 983 "@babel/helper-plugin-utils": "^7.14.5",
984 "@babel/helper-remap-async-to-generator": "^7.16.0", 984 "@babel/helper-remap-async-to-generator": "^7.16.4",
985 "@babel/plugin-syntax-async-generators": "^7.8.4" 985 "@babel/plugin-syntax-async-generators": "^7.8.4"
986 }, 986 },
987 "engines": { 987 "engines": {
@@ -1025,9 +1025,9 @@
1025 } 1025 }
1026 }, 1026 },
1027 "node_modules/@babel/plugin-proposal-decorators": { 1027 "node_modules/@babel/plugin-proposal-decorators": {
1028 "version": "7.16.0", 1028 "version": "7.16.4",
1029 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.0.tgz", 1029 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.4.tgz",
1030 "integrity": "sha512-ttvhKuVnQwoNQrcTd1oe6o49ahaZ1kns1fsJKzTVOaS/FJDJoK4qzgVS68xzJhYUMgTnbXW6z/T6rlP3lL7tJw==", 1030 "integrity": "sha512-RESBNX16eNqnBeEVR5sCJpnW0mHiNLNNvGA8PrRuK/4ZJ4TO+6bHleRUuGQYDERVySOKtOhSya/C4MIhwAMAgg==",
1031 "dev": true, 1031 "dev": true,
1032 "dependencies": { 1032 "dependencies": {
1033 "@babel/helper-create-class-features-plugin": "^7.16.0", 1033 "@babel/helper-create-class-features-plugin": "^7.16.0",
@@ -1354,9 +1354,9 @@
1354 } 1354 }
1355 }, 1355 },
1356 "node_modules/@babel/plugin-syntax-jsx": { 1356 "node_modules/@babel/plugin-syntax-jsx": {
1357 "version": "7.14.5", 1357 "version": "7.16.0",
1358 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", 1358 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz",
1359 "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", 1359 "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==",
1360 "dev": true, 1360 "dev": true,
1361 "dependencies": { 1361 "dependencies": {
1362 "@babel/helper-plugin-utils": "^7.14.5" 1362 "@babel/helper-plugin-utils": "^7.14.5"
@@ -1471,9 +1471,9 @@
1471 } 1471 }
1472 }, 1472 },
1473 "node_modules/@babel/plugin-syntax-typescript": { 1473 "node_modules/@babel/plugin-syntax-typescript": {
1474 "version": "7.14.5", 1474 "version": "7.16.0",
1475 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", 1475 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz",
1476 "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", 1476 "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==",
1477 "dev": true, 1477 "dev": true,
1478 "dependencies": { 1478 "dependencies": {
1479 "@babel/helper-plugin-utils": "^7.14.5" 1479 "@babel/helper-plugin-utils": "^7.14.5"
@@ -1823,9 +1823,9 @@
1823 } 1823 }
1824 }, 1824 },
1825 "node_modules/@babel/plugin-transform-parameters": { 1825 "node_modules/@babel/plugin-transform-parameters": {
1826 "version": "7.16.0", 1826 "version": "7.16.3",
1827 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.0.tgz", 1827 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz",
1828 "integrity": "sha512-XgnQEm1CevKROPx+udOi/8f8TiGhrUWiHiaUCIp47tE0tpFDjzXNTZc9E5CmCwxNjXTWEVqvRfWZYOTFvMa/ZQ==", 1828 "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==",
1829 "dev": true, 1829 "dev": true,
1830 "dependencies": { 1830 "dependencies": {
1831 "@babel/helper-plugin-utils": "^7.14.5" 1831 "@babel/helper-plugin-utils": "^7.14.5"
@@ -1853,9 +1853,9 @@
1853 } 1853 }
1854 }, 1854 },
1855 "node_modules/@babel/plugin-transform-react-display-name": { 1855 "node_modules/@babel/plugin-transform-react-display-name": {
1856 "version": "7.15.1", 1856 "version": "7.16.0",
1857 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz", 1857 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz",
1858 "integrity": "sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q==", 1858 "integrity": "sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==",
1859 "dev": true, 1859 "dev": true,
1860 "dependencies": { 1860 "dependencies": {
1861 "@babel/helper-plugin-utils": "^7.14.5" 1861 "@babel/helper-plugin-utils": "^7.14.5"
@@ -1868,16 +1868,16 @@
1868 } 1868 }
1869 }, 1869 },
1870 "node_modules/@babel/plugin-transform-react-jsx": { 1870 "node_modules/@babel/plugin-transform-react-jsx": {
1871 "version": "7.14.9", 1871 "version": "7.16.0",
1872 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz", 1872 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz",
1873 "integrity": "sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==", 1873 "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==",
1874 "dev": true, 1874 "dev": true,
1875 "dependencies": { 1875 "dependencies": {
1876 "@babel/helper-annotate-as-pure": "^7.14.5", 1876 "@babel/helper-annotate-as-pure": "^7.16.0",
1877 "@babel/helper-module-imports": "^7.14.5", 1877 "@babel/helper-module-imports": "^7.16.0",
1878 "@babel/helper-plugin-utils": "^7.14.5", 1878 "@babel/helper-plugin-utils": "^7.14.5",
1879 "@babel/plugin-syntax-jsx": "^7.14.5", 1879 "@babel/plugin-syntax-jsx": "^7.16.0",
1880 "@babel/types": "^7.14.9" 1880 "@babel/types": "^7.16.0"
1881 }, 1881 },
1882 "engines": { 1882 "engines": {
1883 "node": ">=6.9.0" 1883 "node": ">=6.9.0"
@@ -1887,12 +1887,12 @@
1887 } 1887 }
1888 }, 1888 },
1889 "node_modules/@babel/plugin-transform-react-jsx-development": { 1889 "node_modules/@babel/plugin-transform-react-jsx-development": {
1890 "version": "7.14.5", 1890 "version": "7.16.0",
1891 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", 1891 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz",
1892 "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", 1892 "integrity": "sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==",
1893 "dev": true, 1893 "dev": true,
1894 "dependencies": { 1894 "dependencies": {
1895 "@babel/plugin-transform-react-jsx": "^7.14.5" 1895 "@babel/plugin-transform-react-jsx": "^7.16.0"
1896 }, 1896 },
1897 "engines": { 1897 "engines": {
1898 "node": ">=6.9.0" 1898 "node": ">=6.9.0"
@@ -1902,12 +1902,12 @@
1902 } 1902 }
1903 }, 1903 },
1904 "node_modules/@babel/plugin-transform-react-pure-annotations": { 1904 "node_modules/@babel/plugin-transform-react-pure-annotations": {
1905 "version": "7.14.5", 1905 "version": "7.16.0",
1906 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", 1906 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz",
1907 "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", 1907 "integrity": "sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA==",
1908 "dev": true, 1908 "dev": true,
1909 "dependencies": { 1909 "dependencies": {
1910 "@babel/helper-annotate-as-pure": "^7.14.5", 1910 "@babel/helper-annotate-as-pure": "^7.16.0",
1911 "@babel/helper-plugin-utils": "^7.14.5" 1911 "@babel/helper-plugin-utils": "^7.14.5"
1912 }, 1912 },
1913 "engines": { 1913 "engines": {
@@ -2055,18 +2055,18 @@
2055 } 2055 }
2056 }, 2056 },
2057 "node_modules/@babel/preset-env": { 2057 "node_modules/@babel/preset-env": {
2058 "version": "7.16.0", 2058 "version": "7.16.4",
2059 "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.0.tgz", 2059 "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz",
2060 "integrity": "sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==", 2060 "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==",
2061 "dev": true, 2061 "dev": true,
2062 "dependencies": { 2062 "dependencies": {
2063 "@babel/compat-data": "^7.16.0", 2063 "@babel/compat-data": "^7.16.4",
2064 "@babel/helper-compilation-targets": "^7.16.0", 2064 "@babel/helper-compilation-targets": "^7.16.3",
2065 "@babel/helper-plugin-utils": "^7.14.5", 2065 "@babel/helper-plugin-utils": "^7.14.5",
2066 "@babel/helper-validator-option": "^7.14.5", 2066 "@babel/helper-validator-option": "^7.14.5",
2067 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.0", 2067 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2",
2068 "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", 2068 "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0",
2069 "@babel/plugin-proposal-async-generator-functions": "^7.16.0", 2069 "@babel/plugin-proposal-async-generator-functions": "^7.16.4",
2070 "@babel/plugin-proposal-class-properties": "^7.16.0", 2070 "@babel/plugin-proposal-class-properties": "^7.16.0",
2071 "@babel/plugin-proposal-class-static-block": "^7.16.0", 2071 "@babel/plugin-proposal-class-static-block": "^7.16.0",
2072 "@babel/plugin-proposal-dynamic-import": "^7.16.0", 2072 "@babel/plugin-proposal-dynamic-import": "^7.16.0",
@@ -2116,7 +2116,7 @@
2116 "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", 2116 "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0",
2117 "@babel/plugin-transform-new-target": "^7.16.0", 2117 "@babel/plugin-transform-new-target": "^7.16.0",
2118 "@babel/plugin-transform-object-super": "^7.16.0", 2118 "@babel/plugin-transform-object-super": "^7.16.0",
2119 "@babel/plugin-transform-parameters": "^7.16.0", 2119 "@babel/plugin-transform-parameters": "^7.16.3",
2120 "@babel/plugin-transform-property-literals": "^7.16.0", 2120 "@babel/plugin-transform-property-literals": "^7.16.0",
2121 "@babel/plugin-transform-regenerator": "^7.16.0", 2121 "@babel/plugin-transform-regenerator": "^7.16.0",
2122 "@babel/plugin-transform-reserved-words": "^7.16.0", 2122 "@babel/plugin-transform-reserved-words": "^7.16.0",
@@ -2129,10 +2129,10 @@
2129 "@babel/plugin-transform-unicode-regex": "^7.16.0", 2129 "@babel/plugin-transform-unicode-regex": "^7.16.0",
2130 "@babel/preset-modules": "^0.1.5", 2130 "@babel/preset-modules": "^0.1.5",
2131 "@babel/types": "^7.16.0", 2131 "@babel/types": "^7.16.0",
2132 "babel-plugin-polyfill-corejs2": "^0.2.3", 2132 "babel-plugin-polyfill-corejs2": "^0.3.0",
2133 "babel-plugin-polyfill-corejs3": "^0.3.0", 2133 "babel-plugin-polyfill-corejs3": "^0.4.0",
2134 "babel-plugin-polyfill-regenerator": "^0.2.3", 2134 "babel-plugin-polyfill-regenerator": "^0.3.0",
2135 "core-js-compat": "^3.19.0", 2135 "core-js-compat": "^3.19.1",
2136 "semver": "^6.3.0" 2136 "semver": "^6.3.0"
2137 }, 2137 },
2138 "engines": { 2138 "engines": {
@@ -2168,17 +2168,17 @@
2168 } 2168 }
2169 }, 2169 },
2170 "node_modules/@babel/preset-react": { 2170 "node_modules/@babel/preset-react": {
2171 "version": "7.14.5", 2171 "version": "7.16.0",
2172 "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", 2172 "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.0.tgz",
2173 "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", 2173 "integrity": "sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw==",
2174 "dev": true, 2174 "dev": true,
2175 "dependencies": { 2175 "dependencies": {
2176 "@babel/helper-plugin-utils": "^7.14.5", 2176 "@babel/helper-plugin-utils": "^7.14.5",
2177 "@babel/helper-validator-option": "^7.14.5", 2177 "@babel/helper-validator-option": "^7.14.5",
2178 "@babel/plugin-transform-react-display-name": "^7.14.5", 2178 "@babel/plugin-transform-react-display-name": "^7.16.0",
2179 "@babel/plugin-transform-react-jsx": "^7.14.5", 2179 "@babel/plugin-transform-react-jsx": "^7.16.0",
2180 "@babel/plugin-transform-react-jsx-development": "^7.14.5", 2180 "@babel/plugin-transform-react-jsx-development": "^7.16.0",
2181 "@babel/plugin-transform-react-pure-annotations": "^7.14.5" 2181 "@babel/plugin-transform-react-pure-annotations": "^7.16.0"
2182 }, 2182 },
2183 "engines": { 2183 "engines": {
2184 "node": ">=6.9.0" 2184 "node": ">=6.9.0"
@@ -2188,9 +2188,9 @@
2188 } 2188 }
2189 }, 2189 },
2190 "node_modules/@babel/register": { 2190 "node_modules/@babel/register": {
2191 "version": "7.15.3", 2191 "version": "7.16.0",
2192 "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.15.3.tgz", 2192 "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.0.tgz",
2193 "integrity": "sha512-mj4IY1ZJkorClxKTImccn4T81+UKTo4Ux0+OFSV9hME1ooqS9UV+pJ6BjD0qXPK4T3XW/KNa79XByjeEMZz+fw==", 2193 "integrity": "sha512-lzl4yfs0zVXnooeLE0AAfYaT7F3SPA8yB2Bj4W1BiZwLbMS3MZH35ZvCWSRHvneUugwuM+Wsnrj7h0F7UmU3NQ==",
2194 "dev": true, 2194 "dev": true,
2195 "dependencies": { 2195 "dependencies": {
2196 "clone-deep": "^4.0.1", 2196 "clone-deep": "^4.0.1",
@@ -2207,9 +2207,9 @@
2207 } 2207 }
2208 }, 2208 },
2209 "node_modules/@babel/runtime": { 2209 "node_modules/@babel/runtime": {
2210 "version": "7.15.4", 2210 "version": "7.16.3",
2211 "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", 2211 "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz",
2212 "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", 2212 "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==",
2213 "dependencies": { 2213 "dependencies": {
2214 "regenerator-runtime": "^0.13.4" 2214 "regenerator-runtime": "^0.13.4"
2215 }, 2215 },
@@ -2218,12 +2218,12 @@
2218 } 2218 }
2219 }, 2219 },
2220 "node_modules/@babel/runtime-corejs3": { 2220 "node_modules/@babel/runtime-corejs3": {
2221 "version": "7.15.4", 2221 "version": "7.16.3",
2222 "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", 2222 "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz",
2223 "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", 2223 "integrity": "sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ==",
2224 "dev": true, 2224 "dev": true,
2225 "dependencies": { 2225 "dependencies": {
2226 "core-js-pure": "^3.16.0", 2226 "core-js-pure": "^3.19.0",
2227 "regenerator-runtime": "^0.13.4" 2227 "regenerator-runtime": "^0.13.4"
2228 }, 2228 },
2229 "engines": { 2229 "engines": {
@@ -2245,9 +2245,9 @@
2245 } 2245 }
2246 }, 2246 },
2247 "node_modules/@babel/traverse": { 2247 "node_modules/@babel/traverse": {
2248 "version": "7.16.0", 2248 "version": "7.16.3",
2249 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", 2249 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz",
2250 "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", 2250 "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==",
2251 "dev": true, 2251 "dev": true,
2252 "dependencies": { 2252 "dependencies": {
2253 "@babel/code-frame": "^7.16.0", 2253 "@babel/code-frame": "^7.16.0",
@@ -2255,7 +2255,7 @@
2255 "@babel/helper-function-name": "^7.16.0", 2255 "@babel/helper-function-name": "^7.16.0",
2256 "@babel/helper-hoist-variables": "^7.16.0", 2256 "@babel/helper-hoist-variables": "^7.16.0",
2257 "@babel/helper-split-export-declaration": "^7.16.0", 2257 "@babel/helper-split-export-declaration": "^7.16.0",
2258 "@babel/parser": "^7.16.0", 2258 "@babel/parser": "^7.16.3",
2259 "@babel/types": "^7.16.0", 2259 "@babel/types": "^7.16.0",
2260 "debug": "^4.1.0", 2260 "debug": "^4.1.0",
2261 "globals": "^11.1.0" 2261 "globals": "^11.1.0"
@@ -2284,16 +2284,16 @@
2284 "dev": true 2284 "dev": true
2285 }, 2285 },
2286 "node_modules/@commitlint/cli": { 2286 "node_modules/@commitlint/cli": {
2287 "version": "14.1.0", 2287 "version": "15.0.0",
2288 "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-14.1.0.tgz", 2288 "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-15.0.0.tgz",
2289 "integrity": "sha512-Orq62jkl9qAGvjFqhehtAqjGY/duJ8hIRPPIHmGR2jIB96D4VTmazS3ZvqJz2Q9kKr61mLAk/171zm0FVzQCYA==", 2289 "integrity": "sha512-Y5xmDCweytqzo4N4lOI2YRiuX35xTjcs8n5hUceBH8eyK0YbwtgWX50BJOH2XbkwEmII9blNhlBog6AdQsqicg==",
2290 "dev": true, 2290 "dev": true,
2291 "dependencies": { 2291 "dependencies": {
2292 "@commitlint/format": "^14.1.0", 2292 "@commitlint/format": "^15.0.0",
2293 "@commitlint/lint": "^14.1.0", 2293 "@commitlint/lint": "^15.0.0",
2294 "@commitlint/load": "^14.1.0", 2294 "@commitlint/load": "^15.0.0",
2295 "@commitlint/read": "^14.0.0", 2295 "@commitlint/read": "^15.0.0",
2296 "@commitlint/types": "^14.0.0", 2296 "@commitlint/types": "^15.0.0",
2297 "lodash": "^4.17.19", 2297 "lodash": "^4.17.19",
2298 "resolve-from": "5.0.0", 2298 "resolve-from": "5.0.0",
2299 "resolve-global": "1.0.0", 2299 "resolve-global": "1.0.0",
@@ -2307,9 +2307,9 @@
2307 } 2307 }
2308 }, 2308 },
2309 "node_modules/@commitlint/config-conventional": { 2309 "node_modules/@commitlint/config-conventional": {
2310 "version": "14.1.0", 2310 "version": "15.0.0",
2311 "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-14.1.0.tgz", 2311 "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-15.0.0.tgz",
2312 "integrity": "sha512-JuhCqkEv8jyqmd54EpXPsQFpYc/8k7sfP1UziRdEvZSJUCLxz+8Pk4cNS0oF1BtjaWO7ITgXPlIZg47PyApGmg==", 2312 "integrity": "sha512-eZBRL8Lk3hMNHp1wUMYj0qrZQEsST1ai7KHR8J1IDD9aHgT7L2giciibuQ+Og7vxVhR5WtYDvh9xirXFVPaSkQ==",
2313 "dev": true, 2313 "dev": true,
2314 "dependencies": { 2314 "dependencies": {
2315 "conventional-changelog-conventionalcommits": "^4.3.1" 2315 "conventional-changelog-conventionalcommits": "^4.3.1"
@@ -2319,12 +2319,12 @@
2319 } 2319 }
2320 }, 2320 },
2321 "node_modules/@commitlint/ensure": { 2321 "node_modules/@commitlint/ensure": {
2322 "version": "14.1.0", 2322 "version": "15.0.0",
2323 "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-14.1.0.tgz", 2323 "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-15.0.0.tgz",
2324 "integrity": "sha512-xrYvFdqVepT3XA1BmSh88eKbvYKtLuQu98QLfgxVmwS99Kj3yW0sT3D7jGvNsynbIx2dhbXofDyubf/DKkpFrQ==", 2324 "integrity": "sha512-7DV4iNIald3vycwaWBNGk5FbonaNzOlU8nBe5m5AgU2dIeNKuXwLm+zzJzG27j0Ho56rgz//3F6RIvmsoxY9ZA==",
2325 "dev": true, 2325 "dev": true,
2326 "dependencies": { 2326 "dependencies": {
2327 "@commitlint/types": "^14.0.0", 2327 "@commitlint/types": "^15.0.0",
2328 "lodash": "^4.17.19" 2328 "lodash": "^4.17.19"
2329 }, 2329 },
2330 "engines": { 2330 "engines": {
@@ -2332,21 +2332,21 @@
2332 } 2332 }
2333 }, 2333 },
2334 "node_modules/@commitlint/execute-rule": { 2334 "node_modules/@commitlint/execute-rule": {
2335 "version": "14.0.0", 2335 "version": "15.0.0",
2336 "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-14.0.0.tgz", 2336 "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-15.0.0.tgz",
2337 "integrity": "sha512-Hh/HLpCBDlrD3Rx2x2pDBx6CU+OtVqGXh7mbFpNihAVx6B0zyZqm/vv0cdwdhfGW5OEn1BhCqHf1ZOvL/DwdWA==", 2337 "integrity": "sha512-pyE4ApxjbWhb1TXz5vRiGwI2ssdMMgZbaaheZq1/7WC0xRnqnIhE1yUC1D2q20qPtvkZPstTYvMiRVtF+DvjUg==",
2338 "dev": true, 2338 "dev": true,
2339 "engines": { 2339 "engines": {
2340 "node": ">=v12" 2340 "node": ">=v12"
2341 } 2341 }
2342 }, 2342 },
2343 "node_modules/@commitlint/format": { 2343 "node_modules/@commitlint/format": {
2344 "version": "14.1.0", 2344 "version": "15.0.0",
2345 "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-14.1.0.tgz", 2345 "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-15.0.0.tgz",
2346 "integrity": "sha512-sF6engqqHjvxGctWRKjFs/HQeNowlpbVmmoP481b2UMQnVQnjjfXJvQsoLpaqFUvgc2sHM4L85F8BmAw+iHG1w==", 2346 "integrity": "sha512-bPhAfqwRhPk92WiuY0ktEJNpRRHSCd+Eg1MdhGyL9Bl3U25E5zvuInA+dNctnzZiOBSH/37ZaD0eOKCpQE6acg==",
2347 "dev": true, 2347 "dev": true,
2348 "dependencies": { 2348 "dependencies": {
2349 "@commitlint/types": "^14.0.0", 2349 "@commitlint/types": "^15.0.0",
2350 "chalk": "^4.0.0" 2350 "chalk": "^4.0.0"
2351 }, 2351 },
2352 "engines": { 2352 "engines": {
@@ -2424,12 +2424,12 @@
2424 } 2424 }
2425 }, 2425 },
2426 "node_modules/@commitlint/is-ignored": { 2426 "node_modules/@commitlint/is-ignored": {
2427 "version": "14.0.0", 2427 "version": "15.0.0",
2428 "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-14.0.0.tgz", 2428 "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-15.0.0.tgz",
2429 "integrity": "sha512-nJltYjXTa+mk+6SPe35nOZCCvt3Gh5mbDz008KQ4OPcn1GX1NG+pEgz1Kx3agDp/pc+JGnsrr5GV00gygIoloA==", 2429 "integrity": "sha512-edtnkf2QZ/7e/YCJDgn1WDw9wfF1WfOitW5YEoSOb4SxjJEb/oE87kxNPZ2j8mnDMuunspcMfGHeg6fRlwaEWg==",
2430 "dev": true, 2430 "dev": true,
2431 "dependencies": { 2431 "dependencies": {
2432 "@commitlint/types": "^14.0.0", 2432 "@commitlint/types": "^15.0.0",
2433 "semver": "7.3.5" 2433 "semver": "7.3.5"
2434 }, 2434 },
2435 "engines": { 2435 "engines": {
@@ -2437,29 +2437,29 @@
2437 } 2437 }
2438 }, 2438 },
2439 "node_modules/@commitlint/lint": { 2439 "node_modules/@commitlint/lint": {
2440 "version": "14.1.0", 2440 "version": "15.0.0",
2441 "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-14.1.0.tgz", 2441 "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-15.0.0.tgz",
2442 "integrity": "sha512-CApGJEOtWU/CcuPD8HkOR1jdUYpjKutGPaeby9nSFzJhwl/UQOjxc4Nd+2g2ygsMi5l3N4j2sWQYEgccpFC3lA==", 2442 "integrity": "sha512-hUi2+Im/2dJ5FBvWnodypTkg+5haCgsDzB0fyMApWLUA1IucYUAqRCQCW5em1Mhk9Crw1pd5YzFNikhIclkqCw==",
2443 "dev": true, 2443 "dev": true,
2444 "dependencies": { 2444 "dependencies": {
2445 "@commitlint/is-ignored": "^14.0.0", 2445 "@commitlint/is-ignored": "^15.0.0",
2446 "@commitlint/parse": "^14.0.0", 2446 "@commitlint/parse": "^15.0.0",
2447 "@commitlint/rules": "^14.1.0", 2447 "@commitlint/rules": "^15.0.0",
2448 "@commitlint/types": "^14.0.0" 2448 "@commitlint/types": "^15.0.0"
2449 }, 2449 },
2450 "engines": { 2450 "engines": {
2451 "node": ">=v12" 2451 "node": ">=v12"
2452 } 2452 }
2453 }, 2453 },
2454 "node_modules/@commitlint/load": { 2454 "node_modules/@commitlint/load": {
2455 "version": "14.1.0", 2455 "version": "15.0.0",
2456 "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-14.1.0.tgz", 2456 "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-15.0.0.tgz",
2457 "integrity": "sha512-p+HbgjhkqLsnxyjOUdEYHztHCp8n2oLVUJTmRPuP5FXLNevh6Gwmxf+NYC2J0sgD084aV2CFi3qu1W4yHWIknA==", 2457 "integrity": "sha512-Ak1YPeOhvxmY3ioe0o6m1yLGvUAYb4BdfGgShU8jiTCmU3Mnmms0Xh/kfQz8AybhezCC3AmVTyBLaBZxOHR8kg==",
2458 "dev": true, 2458 "dev": true,
2459 "dependencies": { 2459 "dependencies": {
2460 "@commitlint/execute-rule": "^14.0.0", 2460 "@commitlint/execute-rule": "^15.0.0",
2461 "@commitlint/resolve-extends": "^14.1.0", 2461 "@commitlint/resolve-extends": "^15.0.0",
2462 "@commitlint/types": "^14.0.0", 2462 "@commitlint/types": "^15.0.0",
2463 "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", 2463 "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2",
2464 "chalk": "^4.0.0", 2464 "chalk": "^4.0.0",
2465 "cosmiconfig": "^7.0.0", 2465 "cosmiconfig": "^7.0.0",
@@ -2541,35 +2541,22 @@
2541 "node": ">=8" 2541 "node": ">=8"
2542 } 2542 }
2543 }, 2543 },
2544 "node_modules/@commitlint/load/node_modules/typescript": {
2545 "version": "4.4.4",
2546 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
2547 "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
2548 "dev": true,
2549 "bin": {
2550 "tsc": "bin/tsc",
2551 "tsserver": "bin/tsserver"
2552 },
2553 "engines": {
2554 "node": ">=4.2.0"
2555 }
2556 },
2557 "node_modules/@commitlint/message": { 2544 "node_modules/@commitlint/message": {
2558 "version": "14.0.0", 2545 "version": "15.0.0",
2559 "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-14.0.0.tgz", 2546 "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-15.0.0.tgz",
2560 "integrity": "sha512-316Pum+bwDcZamOQw0DXSY17Dq9EjvL1zKdYIZqneu4lnXN6uFfi53Y/sP5crW6zlLdnuTHe1MnuewXPLHfH1Q==", 2547 "integrity": "sha512-L8euabzboKavPuDJsdIYAY2wx97LbiGEYsckMo6NmV8pOun50c8hQx6ouXFSAx4pp+mX9yUGmMiVqfrk2LKDJQ==",
2561 "dev": true, 2548 "dev": true,
2562 "engines": { 2549 "engines": {
2563 "node": ">=v12" 2550 "node": ">=v12"
2564 } 2551 }
2565 }, 2552 },
2566 "node_modules/@commitlint/parse": { 2553 "node_modules/@commitlint/parse": {
2567 "version": "14.0.0", 2554 "version": "15.0.0",
2568 "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-14.0.0.tgz", 2555 "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-15.0.0.tgz",
2569 "integrity": "sha512-49qkk0TcwdxJPZUX8MElEzMlRFIL/cg64P4pk8HotFEm2HYdbxxZp6v3cbVw5WOsnRA0frrs+NNoOcIT83ccMQ==", 2556 "integrity": "sha512-7fweM67tZfBNS7zw1KTuuT5K2u9nGytUJqFqT/1Ln3Na9cBCsoAqR47mfsNOTlRCgGwakm4xiQ7BpS2gN0OGuw==",
2570 "dev": true, 2557 "dev": true,
2571 "dependencies": { 2558 "dependencies": {
2572 "@commitlint/types": "^14.0.0", 2559 "@commitlint/types": "^15.0.0",
2573 "conventional-changelog-angular": "^5.0.11", 2560 "conventional-changelog-angular": "^5.0.11",
2574 "conventional-commits-parser": "^3.2.2" 2561 "conventional-commits-parser": "^3.2.2"
2575 }, 2562 },
@@ -2578,13 +2565,13 @@
2578 } 2565 }
2579 }, 2566 },
2580 "node_modules/@commitlint/read": { 2567 "node_modules/@commitlint/read": {
2581 "version": "14.0.0", 2568 "version": "15.0.0",
2582 "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-14.0.0.tgz", 2569 "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-15.0.0.tgz",
2583 "integrity": "sha512-WXXcSLBqwXTqnEmB0lbU2TrayDJ2G3qI/lxy1ianVmpQol8p9BjodAA6bYxtYYHdQFVXUrIsclzFP/naWG+hlQ==", 2570 "integrity": "sha512-5yI1o2HKZFVe7RTjL7IhuhHMKar/MDNY34vEHqqz9gMI7BK/rdP8uVb4Di1efl2V0UPnwID0nPKWESjQ8Ti0gw==",
2584 "dev": true, 2571 "dev": true,
2585 "dependencies": { 2572 "dependencies": {
2586 "@commitlint/top-level": "^14.0.0", 2573 "@commitlint/top-level": "^15.0.0",
2587 "@commitlint/types": "^14.0.0", 2574 "@commitlint/types": "^15.0.0",
2588 "fs-extra": "^10.0.0", 2575 "fs-extra": "^10.0.0",
2589 "git-raw-commits": "^2.0.0" 2576 "git-raw-commits": "^2.0.0"
2590 }, 2577 },
@@ -2593,9 +2580,9 @@
2593 } 2580 }
2594 }, 2581 },
2595 "node_modules/@commitlint/resolve-extends": { 2582 "node_modules/@commitlint/resolve-extends": {
2596 "version": "14.1.0", 2583 "version": "15.0.0",
2597 "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-14.1.0.tgz", 2584 "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-15.0.0.tgz",
2598 "integrity": "sha512-ko80k6QB6E6/OvGNWy4u7gzzWyluDT3VDNL2kfZaDywsnrYntUKyT4Do97gQ7orttITzj2GRtk3KWClVz4rUUQ==", 2585 "integrity": "sha512-7apfRJjgJsKja7lHsPfEFixKjA/fk/UeD3owkOw1174yYu4u8xBDLSeU3IinGPdMuF9m245eX8wo7vLUy+EBSg==",
2599 "dev": true, 2586 "dev": true,
2600 "dependencies": { 2587 "dependencies": {
2601 "import-fresh": "^3.0.0", 2588 "import-fresh": "^3.0.0",
@@ -2608,15 +2595,15 @@
2608 } 2595 }
2609 }, 2596 },
2610 "node_modules/@commitlint/rules": { 2597 "node_modules/@commitlint/rules": {
2611 "version": "14.1.0", 2598 "version": "15.0.0",
2612 "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-14.1.0.tgz", 2599 "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-15.0.0.tgz",
2613 "integrity": "sha512-6jmv414/1JzGzDI/DS+snAMhcL6roQKPdg0WB3kWTWN52EvWXBFm0HIMGt2H/FlRKxozwVXlQN60/1fNIl98xA==", 2600 "integrity": "sha512-SqXfp6QUlwBS+0IZm4FEA/NmmAwcFQIkG3B05BtemOVWXQdZ8j1vV6hDwvA9oMPCmUSrrGpHOtZK7HaHhng2yA==",
2614 "dev": true, 2601 "dev": true,
2615 "dependencies": { 2602 "dependencies": {
2616 "@commitlint/ensure": "^14.1.0", 2603 "@commitlint/ensure": "^15.0.0",
2617 "@commitlint/message": "^14.0.0", 2604 "@commitlint/message": "^15.0.0",
2618 "@commitlint/to-lines": "^14.0.0", 2605 "@commitlint/to-lines": "^15.0.0",
2619 "@commitlint/types": "^14.0.0", 2606 "@commitlint/types": "^15.0.0",
2620 "execa": "^5.0.0" 2607 "execa": "^5.0.0"
2621 }, 2608 },
2622 "engines": { 2609 "engines": {
@@ -2624,18 +2611,18 @@
2624 } 2611 }
2625 }, 2612 },
2626 "node_modules/@commitlint/to-lines": { 2613 "node_modules/@commitlint/to-lines": {
2627 "version": "14.0.0", 2614 "version": "15.0.0",
2628 "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-14.0.0.tgz", 2615 "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-15.0.0.tgz",
2629 "integrity": "sha512-uIXk54oJDuYyLpI208s3+cGmJ323yvSJ9LB7yUDMWUeJi2LgRxE2EBZL995kLQdnoAsBBXcLq+VDyppg5bV/cg==", 2616 "integrity": "sha512-mY3MNA9ujPqVpiJjTYG9MDsYCobue5PJFO0MfcIzS1mCVvngH8ZFTPAh1fT5t+t1h876boS88+9WgqjRvbYItw==",
2630 "dev": true, 2617 "dev": true,
2631 "engines": { 2618 "engines": {
2632 "node": ">=v12" 2619 "node": ">=v12"
2633 } 2620 }
2634 }, 2621 },
2635 "node_modules/@commitlint/top-level": { 2622 "node_modules/@commitlint/top-level": {
2636 "version": "14.0.0", 2623 "version": "15.0.0",
2637 "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-14.0.0.tgz", 2624 "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-15.0.0.tgz",
2638 "integrity": "sha512-MZDKZfWfl9g4KozgWBGTCrI2cXkMHnBFlhwvEfrAu5G8wd5aL1f2uWEUMnBMjUikmhVj99i1pzge4XFWHQ29wQ==", 2625 "integrity": "sha512-7Gz3t7xcuuUw1d1Nou6YLaztzp2Em+qZ6YdCzrqYc+aquca3Vt0O696nuiBDU/oE+tls4Hx2CNpAbWhTgEwB5A==",
2639 "dev": true, 2626 "dev": true,
2640 "dependencies": { 2627 "dependencies": {
2641 "find-up": "^5.0.0" 2628 "find-up": "^5.0.0"
@@ -2645,9 +2632,9 @@
2645 } 2632 }
2646 }, 2633 },
2647 "node_modules/@commitlint/types": { 2634 "node_modules/@commitlint/types": {
2648 "version": "14.0.0", 2635 "version": "15.0.0",
2649 "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-14.0.0.tgz", 2636 "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-15.0.0.tgz",
2650 "integrity": "sha512-sIls1nP2uSbGL466edYlh8mn7O/WP4i3bcvP+2DMhkscRCSgaPhNRWDilhYVsHt2Vu1HTQ27uT0Bj5/Lt2+EcQ==", 2637 "integrity": "sha512-OMSLX+QJnyNoTwws54ULv9sOvuw9GdVezln76oyUd4YbMMJyaav62aSXDuCdWyL2sm9hTkSzyEi52PNaIj/vqw==",
2651 "dev": true, 2638 "dev": true,
2652 "dependencies": { 2639 "dependencies": {
2653 "chalk": "^4.0.0" 2640 "chalk": "^4.0.0"
@@ -2879,6 +2866,19 @@
2879 "graceful-fs": "^4.1.6" 2866 "graceful-fs": "^4.1.6"
2880 } 2867 }
2881 }, 2868 },
2869 "node_modules/@emotion/is-prop-valid": {
2870 "version": "0.7.3",
2871 "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz",
2872 "integrity": "sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA==",
2873 "dependencies": {
2874 "@emotion/memoize": "0.7.1"
2875 }
2876 },
2877 "node_modules/@emotion/memoize": {
2878 "version": "0.7.1",
2879 "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.1.tgz",
2880 "integrity": "sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg=="
2881 },
2882 "node_modules/@endemolshinegroup/cosmiconfig-typescript-loader": { 2882 "node_modules/@endemolshinegroup/cosmiconfig-typescript-loader": {
2883 "version": "3.0.2", 2883 "version": "3.0.2",
2884 "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz", 2884 "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz",
@@ -2933,9 +2933,9 @@
2933 } 2933 }
2934 }, 2934 },
2935 "node_modules/@eslint/eslintrc": { 2935 "node_modules/@eslint/eslintrc": {
2936 "version": "1.0.3", 2936 "version": "1.0.4",
2937 "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.3.tgz", 2937 "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz",
2938 "integrity": "sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==", 2938 "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==",
2939 "dev": true, 2939 "dev": true,
2940 "dependencies": { 2940 "dependencies": {
2941 "ajv": "^6.12.4", 2941 "ajv": "^6.12.4",
@@ -2944,7 +2944,7 @@
2944 "globals": "^13.9.0", 2944 "globals": "^13.9.0",
2945 "ignore": "^4.0.6", 2945 "ignore": "^4.0.6",
2946 "import-fresh": "^3.2.1", 2946 "import-fresh": "^3.2.1",
2947 "js-yaml": "^3.13.1", 2947 "js-yaml": "^4.1.0",
2948 "minimatch": "^3.0.4", 2948 "minimatch": "^3.0.4",
2949 "strip-json-comments": "^3.1.1" 2949 "strip-json-comments": "^3.1.1"
2950 }, 2950 },
@@ -2952,15 +2952,6 @@
2952 "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 2952 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
2953 } 2953 }
2954 }, 2954 },
2955 "node_modules/@eslint/eslintrc/node_modules/argparse": {
2956 "version": "1.0.10",
2957 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
2958 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
2959 "dev": true,
2960 "dependencies": {
2961 "sprintf-js": "~1.0.2"
2962 }
2963 },
2964 "node_modules/@eslint/eslintrc/node_modules/globals": { 2955 "node_modules/@eslint/eslintrc/node_modules/globals": {
2965 "version": "13.12.0", 2956 "version": "13.12.0",
2966 "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", 2957 "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
@@ -2985,25 +2976,6 @@
2985 "node": ">= 4" 2976 "node": ">= 4"
2986 } 2977 }
2987 }, 2978 },
2988 "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
2989 "version": "3.14.1",
2990 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
2991 "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
2992 "dev": true,
2993 "dependencies": {
2994 "argparse": "^1.0.7",
2995 "esprima": "^4.0.0"
2996 },
2997 "bin": {
2998 "js-yaml": "bin/js-yaml.js"
2999 }
3000 },
3001 "node_modules/@eslint/eslintrc/node_modules/sprintf-js": {
3002 "version": "1.0.3",
3003 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
3004 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
3005 "dev": true
3006 },
3007 "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { 2979 "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": {
3008 "version": "3.1.1", 2980 "version": "3.1.1",
3009 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2981 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -3056,9 +3028,9 @@
3056 } 3028 }
3057 }, 3029 },
3058 "node_modules/@formatjs/cli/node_modules/@types/node": { 3030 "node_modules/@formatjs/cli/node_modules/@types/node": {
3059 "version": "14.17.32", 3031 "version": "14.17.34",
3060 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.32.tgz", 3032 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.34.tgz",
3061 "integrity": "sha512-JcII3D5/OapPGx+eJ+Ik1SQGyt6WvuqdRfh9jUwL6/iHGjmyOriBDciBUu7lEIBTL2ijxwrR70WUnw5AEDmFvQ==", 3033 "integrity": "sha512-USUftMYpmuMzeWobskoPfzDi+vkpe0dvcOBRNOscFrGxVp4jomnRxWuVohgqBow2xyIPC0S3gjxV/5079jhmDg==",
3062 "dev": true 3034 "dev": true
3063 }, 3035 },
3064 "node_modules/@formatjs/cli/node_modules/ansi-styles": { 3036 "node_modules/@formatjs/cli/node_modules/ansi-styles": {
@@ -3140,19 +3112,6 @@
3140 "node": ">=8" 3112 "node": ">=8"
3141 } 3113 }
3142 }, 3114 },
3143 "node_modules/@formatjs/cli/node_modules/typescript": {
3144 "version": "4.4.4",
3145 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
3146 "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
3147 "dev": true,
3148 "bin": {
3149 "tsc": "bin/tsc",
3150 "tsserver": "bin/tsserver"
3151 },
3152 "engines": {
3153 "node": ">=4.2.0"
3154 }
3155 },
3156 "node_modules/@formatjs/ecma402-abstract": { 3115 "node_modules/@formatjs/ecma402-abstract": {
3157 "version": "1.10.0", 3116 "version": "1.10.0",
3158 "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz", 3117 "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.10.0.tgz",
@@ -3190,16 +3149,16 @@
3190 } 3149 }
3191 }, 3150 },
3192 "node_modules/@formatjs/intl": { 3151 "node_modules/@formatjs/intl": {
3193 "version": "1.15.0", 3152 "version": "1.15.2",
3194 "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-1.15.0.tgz", 3153 "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-1.15.2.tgz",
3195 "integrity": "sha512-8apTN/j7+pF02U1pUbsORgvWHjVEXH6eXj1y1iw/bbPoVWqfTsUSj/u9hL9MMoLI04RnOQiuK2nIh0cKeOnh1Q==", 3154 "integrity": "sha512-QYk0lUSrYprn2Lyui6iDhmHnSiXFTqKAMiveYOJPYQtcaWRwkCbcB0SALTZDc2kITrYxiP4/AS7ESF/0+SYSLQ==",
3196 "dependencies": { 3155 "dependencies": {
3197 "@formatjs/ecma402-abstract": "1.10.0", 3156 "@formatjs/ecma402-abstract": "1.10.0",
3198 "@formatjs/fast-memoize": "1.2.0", 3157 "@formatjs/fast-memoize": "1.2.0",
3199 "@formatjs/icu-messageformat-parser": "2.0.14", 3158 "@formatjs/icu-messageformat-parser": "2.0.14",
3200 "@formatjs/intl-displaynames": "5.2.5", 3159 "@formatjs/intl-displaynames": "5.2.5",
3201 "@formatjs/intl-listformat": "6.3.5", 3160 "@formatjs/intl-listformat": "6.3.5",
3202 "intl-messageformat": "9.9.4", 3161 "intl-messageformat": "9.9.6",
3203 "tslib": "^2.1.0" 3162 "tslib": "^2.1.0"
3204 }, 3163 },
3205 "peerDependencies": { 3164 "peerDependencies": {
@@ -3330,19 +3289,6 @@
3330 "node": ">=8" 3289 "node": ">=8"
3331 } 3290 }
3332 }, 3291 },
3333 "node_modules/@formatjs/ts-transformer/node_modules/typescript": {
3334 "version": "4.4.4",
3335 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
3336 "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
3337 "dev": true,
3338 "bin": {
3339 "tsc": "bin/tsc",
3340 "tsserver": "bin/tsserver"
3341 },
3342 "engines": {
3343 "node": ">=4.2.0"
3344 }
3345 },
3346 "node_modules/@gar/promisify": { 3292 "node_modules/@gar/promisify": {
3347 "version": "1.1.2", 3293 "version": "1.1.2",
3348 "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz", 3294 "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.2.tgz",
@@ -3379,9 +3325,9 @@
3379 } 3325 }
3380 }, 3326 },
3381 "node_modules/@humanwhocodes/object-schema": { 3327 "node_modules/@humanwhocodes/object-schema": {
3382 "version": "1.2.0", 3328 "version": "1.2.1",
3383 "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", 3329 "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
3384 "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", 3330 "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
3385 "dev": true 3331 "dev": true
3386 }, 3332 },
3387 "node_modules/@istanbuljs/load-nyc-config": { 3333 "node_modules/@istanbuljs/load-nyc-config": {
@@ -3832,26 +3778,6 @@
3832 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 3778 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
3833 "dev": true 3779 "dev": true
3834 }, 3780 },
3835 "node_modules/@jest/reporters/node_modules/glob": {
3836 "version": "7.2.0",
3837 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
3838 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
3839 "dev": true,
3840 "dependencies": {
3841 "fs.realpath": "^1.0.0",
3842 "inflight": "^1.0.4",
3843 "inherits": "2",
3844 "minimatch": "^3.0.4",
3845 "once": "^1.3.0",
3846 "path-is-absolute": "^1.0.0"
3847 },
3848 "engines": {
3849 "node": "*"
3850 },
3851 "funding": {
3852 "url": "https://github.com/sponsors/isaacs"
3853 }
3854 },
3855 "node_modules/@jest/reporters/node_modules/has-flag": { 3781 "node_modules/@jest/reporters/node_modules/has-flag": {
3856 "version": "4.0.0", 3782 "version": "4.0.0",
3857 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3783 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -4215,9 +4141,9 @@
4215 } 4141 }
4216 }, 4142 },
4217 "node_modules/@mdi/js": { 4143 "node_modules/@mdi/js": {
4218 "version": "6.4.95", 4144 "version": "6.5.95",
4219 "resolved": "https://registry.npmjs.org/@mdi/js/-/js-6.4.95.tgz", 4145 "resolved": "https://registry.npmjs.org/@mdi/js/-/js-6.5.95.tgz",
4220 "integrity": "sha512-b1/P//1D2KOzta8YRGyoSLGsAlWyUHfxzVBhV4e/ppnjM4DfBgay/vWz7Eg5Ee80JZ4zsQz8h54X+KOahtBk5Q==" 4146 "integrity": "sha512-x/bwEoAGP+Mo10Dfk5audNIPi7Yz8ZBrILcbXLW3ShOI/njpgodzpgpC2WYK3D2ZSC392peRRemIFb/JsyzzYQ=="
4221 }, 4147 },
4222 "node_modules/@mdi/react": { 4148 "node_modules/@mdi/react": {
4223 "version": "1.5.0", 4149 "version": "1.5.0",
@@ -4565,9 +4491,9 @@
4565 } 4491 }
4566 }, 4492 },
4567 "node_modules/@sinonjs/fake-timers": { 4493 "node_modules/@sinonjs/fake-timers": {
4568 "version": "8.0.1", 4494 "version": "8.1.0",
4569 "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", 4495 "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
4570 "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", 4496 "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
4571 "dev": true, 4497 "dev": true,
4572 "dependencies": { 4498 "dependencies": {
4573 "@sinonjs/commons": "^1.7.0" 4499 "@sinonjs/commons": "^1.7.0"
@@ -4828,9 +4754,9 @@
4828 "dev": true 4754 "dev": true
4829 }, 4755 },
4830 "node_modules/@types/lodash": { 4756 "node_modules/@types/lodash": {
4831 "version": "4.14.176", 4757 "version": "4.14.177",
4832 "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz", 4758 "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.177.tgz",
4833 "integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==", 4759 "integrity": "sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==",
4834 "dev": true 4760 "dev": true
4835 }, 4761 },
4836 "node_modules/@types/mime-types": { 4762 "node_modules/@types/mime-types": {
@@ -4873,9 +4799,9 @@
4873 "dev": true 4799 "dev": true
4874 }, 4800 },
4875 "node_modules/@types/node": { 4801 "node_modules/@types/node": {
4876 "version": "16.11.6", 4802 "version": "16.11.9",
4877 "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", 4803 "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz",
4878 "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", 4804 "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==",
4879 "dev": true 4805 "dev": true
4880 }, 4806 },
4881 "node_modules/@types/normalize-package-data": { 4807 "node_modules/@types/normalize-package-data": {
@@ -4902,9 +4828,9 @@
4902 } 4828 }
4903 }, 4829 },
4904 "node_modules/@types/prettier": { 4830 "node_modules/@types/prettier": {
4905 "version": "2.4.1", 4831 "version": "2.4.2",
4906 "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", 4832 "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz",
4907 "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", 4833 "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==",
4908 "dev": true 4834 "dev": true
4909 }, 4835 },
4910 "node_modules/@types/prop-types": { 4836 "node_modules/@types/prop-types": {
@@ -4913,9 +4839,9 @@
4913 "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" 4839 "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ=="
4914 }, 4840 },
4915 "node_modules/@types/react": { 4841 "node_modules/@types/react": {
4916 "version": "17.0.33", 4842 "version": "17.0.35",
4917 "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.33.tgz", 4843 "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.35.tgz",
4918 "integrity": "sha512-pLWntxXpDPaU+RTAuSGWGSEL2FRTNyRQOjSWDke/rxRg14ncsZvx8AKWMWZqvc1UOaJIAoObdZhAWvRaHFi5rw==", 4844 "integrity": "sha512-r3C8/TJuri/SLZiiwwxQoLAoavaczARfT9up9b4Jr65+ErAUX3MIkU0oMOQnrpfgHme8zIqZLX7O5nnjm5Wayw==",
4919 "dependencies": { 4845 "dependencies": {
4920 "@types/prop-types": "*", 4846 "@types/prop-types": "*",
4921 "@types/scheduler": "*", 4847 "@types/scheduler": "*",
@@ -4923,9 +4849,9 @@
4923 } 4849 }
4924 }, 4850 },
4925 "node_modules/@types/react-dom": { 4851 "node_modules/@types/react-dom": {
4926 "version": "17.0.10", 4852 "version": "17.0.11",
4927 "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.10.tgz", 4853 "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz",
4928 "integrity": "sha512-8oz3NAUId2z/zQdFI09IMhQPNgIbiP8Lslhv39DIDamr846/0spjZK0vnrMak0iB8EKb9QFTTIdg2Wj2zH5a3g==", 4854 "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==",
4929 "dev": true, 4855 "dev": true,
4930 "dependencies": { 4856 "dependencies": {
4931 "@types/react": "*" 4857 "@types/react": "*"
@@ -4971,9 +4897,9 @@
4971 "dev": true 4897 "dev": true
4972 }, 4898 },
4973 "node_modules/@types/tar": { 4899 "node_modules/@types/tar": {
4974 "version": "6.1.0", 4900 "version": "6.1.1",
4975 "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.0.tgz", 4901 "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.1.tgz",
4976 "integrity": "sha512-uTZKMW7ZkdTJXX4+Bsp0ko9N7B5/NJ5wJRW14XTb6KNN+9i2NPel6iPKp8rTQahMW46BM9tM52dTeMSldB55og==", 4902 "integrity": "sha512-8mto3YZfVpqB1CHMaYz1TUYIQfZFbh/QbEq5Hsn6D0ilCfqRVCdalmc89B7vi3jhl9UYIk+dWDABShNfOkv5HA==",
4977 "dev": true, 4903 "dev": true,
4978 "dependencies": { 4904 "dependencies": {
4979 "@types/minipass": "*", 4905 "@types/minipass": "*",
@@ -4999,15 +4925,15 @@
4999 } 4925 }
5000 }, 4926 },
5001 "node_modules/@types/uuid": { 4927 "node_modules/@types/uuid": {
5002 "version": "8.3.1", 4928 "version": "8.3.3",
5003 "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", 4929 "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.3.tgz",
5004 "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==", 4930 "integrity": "sha512-0LbEEx1zxrYB3pgpd1M5lEhLcXjKJnYghvhTRgaBeUivLHMDM1TzF3IJ6hXU2+8uA4Xz+5BA63mtZo5DjVT8iA==",
5005 "dev": true 4931 "dev": true
5006 }, 4932 },
5007 "node_modules/@types/validator": { 4933 "node_modules/@types/validator": {
5008 "version": "13.6.6", 4934 "version": "13.7.0",
5009 "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.6.6.tgz", 4935 "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.0.tgz",
5010 "integrity": "sha512-+qogUELb4gMhrMjSh/seKmGVvN+uQLfyqJAqYRWqVHsvBsUO2xDBCL8CJ/ZSukbd8vXaoYbpIssAmfLEzzBHEw==", 4936 "integrity": "sha512-+jBxVvXVuggZOrm04NR8z+5+bgoW4VZyLzUO+hmPPW1mVFL/HaitLAkizfv4yg9TbG8lkfHWVMQ11yDqrVVCzA==",
5011 "dev": true 4937 "dev": true
5012 }, 4938 },
5013 "node_modules/@types/verror": { 4939 "node_modules/@types/verror": {
@@ -5018,9 +4944,9 @@
5018 "optional": true 4944 "optional": true
5019 }, 4945 },
5020 "node_modules/@types/webpack": { 4946 "node_modules/@types/webpack": {
5021 "version": "4.41.31", 4947 "version": "4.41.32",
5022 "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.31.tgz", 4948 "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz",
5023 "integrity": "sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ==", 4949 "integrity": "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==",
5024 "dev": true, 4950 "dev": true,
5025 "dependencies": { 4951 "dependencies": {
5026 "@types/node": "*", 4952 "@types/node": "*",
@@ -5074,9 +5000,9 @@
5074 } 5000 }
5075 }, 5001 },
5076 "node_modules/@types/yargs": { 5002 "node_modules/@types/yargs": {
5077 "version": "17.0.4", 5003 "version": "17.0.7",
5078 "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.4.tgz", 5004 "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.7.tgz",
5079 "integrity": "sha512-D/wihO9WFYqwsmJI0e0qS+U09wIQtYRSBJlXWjTFGjouEuOCy0BU4N/ZK5utb00S5lW/9LO7vOpvGDd8M06NvQ==", 5005 "integrity": "sha512-OvLKmpKdea1aWtqHv9bxVVcMoT6syAeK+198dfETIFkAevYRGwqh4H+KFxfjUETZuUuE5sQCAFwdOdoHUdo8eg==",
5080 "dev": true, 5006 "dev": true,
5081 "dependencies": { 5007 "dependencies": {
5082 "@types/yargs-parser": "*" 5008 "@types/yargs-parser": "*"
@@ -5089,13 +5015,13 @@
5089 "dev": true 5015 "dev": true
5090 }, 5016 },
5091 "node_modules/@typescript-eslint/eslint-plugin": { 5017 "node_modules/@typescript-eslint/eslint-plugin": {
5092 "version": "5.2.0", 5018 "version": "5.4.0",
5093 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.2.0.tgz", 5019 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz",
5094 "integrity": "sha512-qQwg7sqYkBF4CIQSyRQyqsYvP+g/J0To9ZPVNJpfxfekl5RmdvQnFFTVVwpRtaUDFNvjfe/34TgY/dpc3MgNTw==", 5020 "integrity": "sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==",
5095 "dev": true, 5021 "dev": true,
5096 "dependencies": { 5022 "dependencies": {
5097 "@typescript-eslint/experimental-utils": "5.2.0", 5023 "@typescript-eslint/experimental-utils": "5.4.0",
5098 "@typescript-eslint/scope-manager": "5.2.0", 5024 "@typescript-eslint/scope-manager": "5.4.0",
5099 "debug": "^4.3.2", 5025 "debug": "^4.3.2",
5100 "functional-red-black-tree": "^1.0.1", 5026 "functional-red-black-tree": "^1.0.1",
5101 "ignore": "^5.1.8", 5027 "ignore": "^5.1.8",
@@ -5121,15 +5047,15 @@
5121 } 5047 }
5122 }, 5048 },
5123 "node_modules/@typescript-eslint/experimental-utils": { 5049 "node_modules/@typescript-eslint/experimental-utils": {
5124 "version": "5.2.0", 5050 "version": "5.4.0",
5125 "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.2.0.tgz", 5051 "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz",
5126 "integrity": "sha512-fWyT3Agf7n7HuZZRpvUYdFYbPk3iDCq6fgu3ulia4c7yxmPnwVBovdSOX7RL+k8u6hLbrXcdAehlWUVpGh6IEw==", 5052 "integrity": "sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==",
5127 "dev": true, 5053 "dev": true,
5128 "dependencies": { 5054 "dependencies": {
5129 "@types/json-schema": "^7.0.9", 5055 "@types/json-schema": "^7.0.9",
5130 "@typescript-eslint/scope-manager": "5.2.0", 5056 "@typescript-eslint/scope-manager": "5.4.0",
5131 "@typescript-eslint/types": "5.2.0", 5057 "@typescript-eslint/types": "5.4.0",
5132 "@typescript-eslint/typescript-estree": "5.2.0", 5058 "@typescript-eslint/typescript-estree": "5.4.0",
5133 "eslint-scope": "^5.1.1", 5059 "eslint-scope": "^5.1.1",
5134 "eslint-utils": "^3.0.0" 5060 "eslint-utils": "^3.0.0"
5135 }, 5061 },
@@ -5145,14 +5071,14 @@
5145 } 5071 }
5146 }, 5072 },
5147 "node_modules/@typescript-eslint/parser": { 5073 "node_modules/@typescript-eslint/parser": {
5148 "version": "5.2.0", 5074 "version": "5.4.0",
5149 "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.2.0.tgz", 5075 "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz",
5150 "integrity": "sha512-Uyy4TjJBlh3NuA8/4yIQptyJb95Qz5PX//6p8n7zG0QnN4o3NF9Je3JHbVU7fxf5ncSXTmnvMtd/LDQWDk0YqA==", 5076 "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==",
5151 "dev": true, 5077 "dev": true,
5152 "dependencies": { 5078 "dependencies": {
5153 "@typescript-eslint/scope-manager": "5.2.0", 5079 "@typescript-eslint/scope-manager": "5.4.0",
5154 "@typescript-eslint/types": "5.2.0", 5080 "@typescript-eslint/types": "5.4.0",
5155 "@typescript-eslint/typescript-estree": "5.2.0", 5081 "@typescript-eslint/typescript-estree": "5.4.0",
5156 "debug": "^4.3.2" 5082 "debug": "^4.3.2"
5157 }, 5083 },
5158 "engines": { 5084 "engines": {
@@ -5172,13 +5098,13 @@
5172 } 5098 }
5173 }, 5099 },
5174 "node_modules/@typescript-eslint/scope-manager": { 5100 "node_modules/@typescript-eslint/scope-manager": {
5175 "version": "5.2.0", 5101 "version": "5.4.0",
5176 "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.2.0.tgz", 5102 "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz",
5177 "integrity": "sha512-RW+wowZqPzQw8MUFltfKYZfKXqA2qgyi6oi/31J1zfXJRpOn6tCaZtd9b5u9ubnDG2n/EMvQLeZrsLNPpaUiFQ==", 5103 "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==",
5178 "dev": true, 5104 "dev": true,
5179 "dependencies": { 5105 "dependencies": {
5180 "@typescript-eslint/types": "5.2.0", 5106 "@typescript-eslint/types": "5.4.0",
5181 "@typescript-eslint/visitor-keys": "5.2.0" 5107 "@typescript-eslint/visitor-keys": "5.4.0"
5182 }, 5108 },
5183 "engines": { 5109 "engines": {
5184 "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 5110 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -5189,9 +5115,9 @@
5189 } 5115 }
5190 }, 5116 },
5191 "node_modules/@typescript-eslint/types": { 5117 "node_modules/@typescript-eslint/types": {
5192 "version": "5.2.0", 5118 "version": "5.4.0",
5193 "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.2.0.tgz", 5119 "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz",
5194 "integrity": "sha512-cTk6x08qqosps6sPyP2j7NxyFPlCNsJwSDasqPNjEQ8JMD5xxj2NHxcLin5AJQ8pAVwpQ8BMI3bTxR0zxmK9qQ==", 5120 "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==",
5195 "dev": true, 5121 "dev": true,
5196 "engines": { 5122 "engines": {
5197 "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 5123 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -5202,13 +5128,13 @@
5202 } 5128 }
5203 }, 5129 },
5204 "node_modules/@typescript-eslint/typescript-estree": { 5130 "node_modules/@typescript-eslint/typescript-estree": {
5205 "version": "5.2.0", 5131 "version": "5.4.0",
5206 "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.2.0.tgz", 5132 "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz",
5207 "integrity": "sha512-RsdXq2XmVgKbm9nLsE3mjNUM7BTr/K4DYR9WfFVMUuozHWtH5gMpiNZmtrMG8GR385EOSQ3kC9HiEMJWimxd/g==", 5133 "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==",
5208 "dev": true, 5134 "dev": true,
5209 "dependencies": { 5135 "dependencies": {
5210 "@typescript-eslint/types": "5.2.0", 5136 "@typescript-eslint/types": "5.4.0",
5211 "@typescript-eslint/visitor-keys": "5.2.0", 5137 "@typescript-eslint/visitor-keys": "5.4.0",
5212 "debug": "^4.3.2", 5138 "debug": "^4.3.2",
5213 "globby": "^11.0.4", 5139 "globby": "^11.0.4",
5214 "is-glob": "^4.0.3", 5140 "is-glob": "^4.0.3",
@@ -5229,12 +5155,12 @@
5229 } 5155 }
5230 }, 5156 },
5231 "node_modules/@typescript-eslint/visitor-keys": { 5157 "node_modules/@typescript-eslint/visitor-keys": {
5232 "version": "5.2.0", 5158 "version": "5.4.0",
5233 "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.2.0.tgz", 5159 "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz",
5234 "integrity": "sha512-Nk7HizaXWWCUBfLA/rPNKMzXzWS8Wg9qHMuGtT+v2/YpPij4nVXrVJc24N/r5WrrmqK31jCrZxeHqIgqRzs0Xg==", 5160 "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==",
5235 "dev": true, 5161 "dev": true,
5236 "dependencies": { 5162 "dependencies": {
5237 "@typescript-eslint/types": "5.2.0", 5163 "@typescript-eslint/types": "5.4.0",
5238 "eslint-visitor-keys": "^3.0.0" 5164 "eslint-visitor-keys": "^3.0.0"
5239 }, 5165 },
5240 "engines": { 5166 "engines": {
@@ -5246,9 +5172,9 @@
5246 } 5172 }
5247 }, 5173 },
5248 "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { 5174 "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
5249 "version": "3.0.0", 5175 "version": "3.1.0",
5250 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", 5176 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
5251 "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", 5177 "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
5252 "dev": true, 5178 "dev": true,
5253 "engines": { 5179 "engines": {
5254 "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 5180 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -5261,13 +5187,13 @@
5261 "dev": true 5187 "dev": true
5262 }, 5188 },
5263 "node_modules/@vue/compiler-core": { 5189 "node_modules/@vue/compiler-core": {
5264 "version": "3.2.20", 5190 "version": "3.2.22",
5265 "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.20.tgz", 5191 "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.22.tgz",
5266 "integrity": "sha512-vcEXlKXoPwBXFP5aUTHN9GTZaDfwCofa9Yu9bbW2C5O/QSa9Esdt7OG4+0RRd3EHEMxUvEdj4RZrd/KpQeiJbA==", 5192 "integrity": "sha512-uAkovrVeTcjzpiM4ECmVaMrv/bjdgAaLzvjcGqQPBEyUrcqsCgccT9fHJ/+hWVGhyMahmBwLqcn4guULNx7sdw==",
5267 "dev": true, 5193 "dev": true,
5268 "dependencies": { 5194 "dependencies": {
5269 "@babel/parser": "^7.15.0", 5195 "@babel/parser": "^7.15.0",
5270 "@vue/shared": "3.2.20", 5196 "@vue/shared": "3.2.22",
5271 "estree-walker": "^2.0.2", 5197 "estree-walker": "^2.0.2",
5272 "source-map": "^0.6.1" 5198 "source-map": "^0.6.1"
5273 } 5199 }
@@ -5282,27 +5208,27 @@
5282 } 5208 }
5283 }, 5209 },
5284 "node_modules/@vue/compiler-dom": { 5210 "node_modules/@vue/compiler-dom": {
5285 "version": "3.2.20", 5211 "version": "3.2.22",
5286 "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.20.tgz", 5212 "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.22.tgz",
5287 "integrity": "sha512-QnI77ec/JtV7R0YBbcVayYTDCRcI9OCbxiUQK6izVyqQO0658n0zQuoNwe+bYgtqnvGAIqTR3FShTd5y4oOjdg==", 5213 "integrity": "sha512-VZdsw/VuO1ODs8K7NQwnMQzKITDkIFlYYC03SVnunuf6eNRxBPEonSyqbWNoo6qNaHAEBTG6VVcZC5xC9bAx1g==",
5288 "dev": true, 5214 "dev": true,
5289 "dependencies": { 5215 "dependencies": {
5290 "@vue/compiler-core": "3.2.20", 5216 "@vue/compiler-core": "3.2.22",
5291 "@vue/shared": "3.2.20" 5217 "@vue/shared": "3.2.22"
5292 } 5218 }
5293 }, 5219 },
5294 "node_modules/@vue/compiler-sfc": { 5220 "node_modules/@vue/compiler-sfc": {
5295 "version": "3.2.20", 5221 "version": "3.2.22",
5296 "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.20.tgz", 5222 "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.22.tgz",
5297 "integrity": "sha512-03aZo+6tQKiFLfunHKSPZvdK4Jsn/ftRCyaro8AQIWkuxJbvSosbKK6HTTn+D2c3nPScG155akJoxKENw7rftQ==", 5223 "integrity": "sha512-tWRQ5ge1tsTDhUwHgueicKJ8rYm6WUVAPTaIpFW3GSwZKcOEJ2rXdfkHFShNVGupeRALz2ET2H84OL0GeRxY0A==",
5298 "dev": true, 5224 "dev": true,
5299 "dependencies": { 5225 "dependencies": {
5300 "@babel/parser": "^7.15.0", 5226 "@babel/parser": "^7.15.0",
5301 "@vue/compiler-core": "3.2.20", 5227 "@vue/compiler-core": "3.2.22",
5302 "@vue/compiler-dom": "3.2.20", 5228 "@vue/compiler-dom": "3.2.22",
5303 "@vue/compiler-ssr": "3.2.20", 5229 "@vue/compiler-ssr": "3.2.22",
5304 "@vue/ref-transform": "3.2.20", 5230 "@vue/ref-transform": "3.2.22",
5305 "@vue/shared": "3.2.20", 5231 "@vue/shared": "3.2.22",
5306 "estree-walker": "^2.0.2", 5232 "estree-walker": "^2.0.2",
5307 "magic-string": "^0.25.7", 5233 "magic-string": "^0.25.7",
5308 "postcss": "^8.1.10", 5234 "postcss": "^8.1.10",
@@ -5319,32 +5245,32 @@
5319 } 5245 }
5320 }, 5246 },
5321 "node_modules/@vue/compiler-ssr": { 5247 "node_modules/@vue/compiler-ssr": {
5322 "version": "3.2.20", 5248 "version": "3.2.22",
5323 "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.20.tgz", 5249 "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.22.tgz",
5324 "integrity": "sha512-rzzVVYivm+EjbfiGQvNeyiYZWzr6Hkej97RZLZvcumacQlnKv9176Xo9rRyeWwFbBlxmtNdrVMslRXtipMXk2w==", 5250 "integrity": "sha512-Cl6aoLJtXzzBkk1sKod8S0WBJLts3+ugVC91d22gGpbkw/64WnF12tOZi7Rg54PPLi1NovqyNWPsLH/SAFcu+w==",
5325 "dev": true, 5251 "dev": true,
5326 "dependencies": { 5252 "dependencies": {
5327 "@vue/compiler-dom": "3.2.20", 5253 "@vue/compiler-dom": "3.2.22",
5328 "@vue/shared": "3.2.20" 5254 "@vue/shared": "3.2.22"
5329 } 5255 }
5330 }, 5256 },
5331 "node_modules/@vue/ref-transform": { 5257 "node_modules/@vue/ref-transform": {
5332 "version": "3.2.20", 5258 "version": "3.2.22",
5333 "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.20.tgz", 5259 "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.22.tgz",
5334 "integrity": "sha512-Y42d3PGlYZ1lXcF3dbd3+qU/C/a3wYEZ949fyOI5ptzkjDWlkfU6vn74fmOjsLjEcjs10BXK2qO99FqQIK2r1Q==", 5260 "integrity": "sha512-qalVWbq5xWWxLZ0L9OroBg/JZhzavQuCcDXblfErxyDEH6Xc5gIJ4feo1SVCICFzhAUgLgQTdSFLpgjBawbFpw==",
5335 "dev": true, 5261 "dev": true,
5336 "dependencies": { 5262 "dependencies": {
5337 "@babel/parser": "^7.15.0", 5263 "@babel/parser": "^7.15.0",
5338 "@vue/compiler-core": "3.2.20", 5264 "@vue/compiler-core": "3.2.22",
5339 "@vue/shared": "3.2.20", 5265 "@vue/shared": "3.2.22",
5340 "estree-walker": "^2.0.2", 5266 "estree-walker": "^2.0.2",
5341 "magic-string": "^0.25.7" 5267 "magic-string": "^0.25.7"
5342 } 5268 }
5343 }, 5269 },
5344 "node_modules/@vue/shared": { 5270 "node_modules/@vue/shared": {
5345 "version": "3.2.20", 5271 "version": "3.2.22",
5346 "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.20.tgz", 5272 "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.22.tgz",
5347 "integrity": "sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==", 5273 "integrity": "sha512-qWVav014mpjEtbWbEgl0q9pEyrrIySKum8UVYjwhC6njrKzknLZPvfuYdQyVbApsqr94tf/3dP4pCuZmmjdCWQ==",
5348 "dev": true 5274 "dev": true
5349 }, 5275 },
5350 "node_modules/@webassemblyjs/ast": { 5276 "node_modules/@webassemblyjs/ast": {
@@ -5564,9 +5490,9 @@
5564 } 5490 }
5565 }, 5491 },
5566 "node_modules/acorn": { 5492 "node_modules/acorn": {
5567 "version": "8.5.0", 5493 "version": "8.6.0",
5568 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", 5494 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
5569 "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", 5495 "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==",
5570 "dev": true, 5496 "dev": true,
5571 "bin": { 5497 "bin": {
5572 "acorn": "bin/acorn" 5498 "acorn": "bin/acorn"
@@ -6220,10 +6146,10 @@
6220 "node": ">=0.10.0" 6146 "node": ">=0.10.0"
6221 } 6147 }
6222 }, 6148 },
6223 "node_modules/ansi-html": { 6149 "node_modules/ansi-html-community": {
6224 "version": "0.0.7", 6150 "version": "0.0.8",
6225 "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", 6151 "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
6226 "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", 6152 "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
6227 "dev": true, 6153 "dev": true,
6228 "engines": [ 6154 "engines": [
6229 "node >= 0.8.0" 6155 "node >= 0.8.0"
@@ -6280,7 +6206,6 @@
6280 "version": "5.0.1", 6206 "version": "5.0.1",
6281 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 6207 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
6282 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 6208 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
6283 "dev": true,
6284 "engines": { 6209 "engines": {
6285 "node": ">=8" 6210 "node": ">=8"
6286 } 6211 }
@@ -6456,9 +6381,9 @@
6456 "dev": true 6381 "dev": true
6457 }, 6382 },
6458 "node_modules/app-builder-lib": { 6383 "node_modules/app-builder-lib": {
6459 "version": "22.14.5", 6384 "version": "22.14.10",
6460 "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.5.tgz", 6385 "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.10.tgz",
6461 "integrity": "sha512-k3VwKP4kpsnUaXoUkm1s4zaSHPHIMFnN4kPMU9yXaKmE1LfHHqBaEah5bXeTAX5V/BC41wFdg8CF5vOjvgy8Rg==", 6386 "integrity": "sha512-5g/0CztD/+OL3V6PH+hV5MeFDg1V827PoyPEnAzz4fXXhCzoBwDanyqKH9b7JwfHkLO6JqH5Des28qET3LkENg==",
6462 "dev": true, 6387 "dev": true,
6463 "dependencies": { 6388 "dependencies": {
6464 "@develar/schema-utils": "~2.6.5", 6389 "@develar/schema-utils": "~2.6.5",
@@ -6467,13 +6392,13 @@
6467 "7zip-bin": "~5.1.1", 6392 "7zip-bin": "~5.1.1",
6468 "async-exit-hook": "^2.0.1", 6393 "async-exit-hook": "^2.0.1",
6469 "bluebird-lst": "^1.0.9", 6394 "bluebird-lst": "^1.0.9",
6470 "builder-util": "22.14.5", 6395 "builder-util": "22.14.7",
6471 "builder-util-runtime": "8.9.1", 6396 "builder-util-runtime": "8.9.2",
6472 "chromium-pickle-js": "^0.2.0", 6397 "chromium-pickle-js": "^0.2.0",
6473 "debug": "^4.3.2", 6398 "debug": "^4.3.2",
6474 "ejs": "^3.1.6", 6399 "ejs": "^3.1.6",
6475 "electron-osx-sign": "^0.5.0", 6400 "electron-osx-sign": "^0.5.0",
6476 "electron-publish": "22.14.5", 6401 "electron-publish": "22.14.7",
6477 "form-data": "^4.0.0", 6402 "form-data": "^4.0.0",
6478 "fs-extra": "^10.0.0", 6403 "fs-extra": "^10.0.0",
6479 "hosted-git-info": "^4.0.2", 6404 "hosted-git-info": "^4.0.2",
@@ -6841,30 +6766,10 @@
6841 "node": ">= 6" 6766 "node": ">= 6"
6842 } 6767 }
6843 }, 6768 },
6844 "node_modules/asar/node_modules/glob": {
6845 "version": "7.2.0",
6846 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
6847 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
6848 "dev": true,
6849 "dependencies": {
6850 "fs.realpath": "^1.0.0",
6851 "inflight": "^1.0.4",
6852 "inherits": "2",
6853 "minimatch": "^3.0.4",
6854 "once": "^1.3.0",
6855 "path-is-absolute": "^1.0.0"
6856 },
6857 "engines": {
6858 "node": "*"
6859 },
6860 "funding": {
6861 "url": "https://github.com/sponsors/isaacs"
6862 }
6863 },
6864 "node_modules/asn1": { 6769 "node_modules/asn1": {
6865 "version": "0.2.4", 6770 "version": "0.2.6",
6866 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 6771 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
6867 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 6772 "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
6868 "optional": true, 6773 "optional": true,
6869 "dependencies": { 6774 "dependencies": {
6870 "safer-buffer": "~2.1.0" 6775 "safer-buffer": "~2.1.0"
@@ -6936,6 +6841,16 @@
6936 "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", 6841 "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
6937 "dev": true 6842 "dev": true
6938 }, 6843 },
6844 "node_modules/astral-regex": {
6845 "version": "2.0.0",
6846 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
6847 "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
6848 "dev": true,
6849 "optional": true,
6850 "engines": {
6851 "node": ">=8"
6852 }
6853 },
6939 "node_modules/async": { 6854 "node_modules/async": {
6940 "version": "3.2.2", 6855 "version": "3.2.2",
6941 "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", 6856 "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz",
@@ -7053,9 +6968,9 @@
7053 "optional": true 6968 "optional": true
7054 }, 6969 },
7055 "node_modules/axe-core": { 6970 "node_modules/axe-core": {
7056 "version": "4.3.4", 6971 "version": "4.3.5",
7057 "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.4.tgz", 6972 "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz",
7058 "integrity": "sha512-4Hk6iSA/H90rtiPoCpSkeJxNWCPBf7szwVvaUqrPdxo0j2Y04suHK9jPKXaE3WI7OET6wBSwsWw7FDc1DBq7iQ==", 6973 "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==",
7059 "dev": true, 6974 "dev": true,
7060 "engines": { 6975 "engines": {
7061 "node": ">=4" 6976 "node": ">=4"
@@ -7252,13 +7167,13 @@
7252 } 7167 }
7253 }, 7168 },
7254 "node_modules/babel-plugin-polyfill-corejs2": { 7169 "node_modules/babel-plugin-polyfill-corejs2": {
7255 "version": "0.2.3", 7170 "version": "0.3.0",
7256 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz", 7171 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz",
7257 "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==", 7172 "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==",
7258 "dev": true, 7173 "dev": true,
7259 "dependencies": { 7174 "dependencies": {
7260 "@babel/compat-data": "^7.13.11", 7175 "@babel/compat-data": "^7.13.11",
7261 "@babel/helper-define-polyfill-provider": "^0.2.4", 7176 "@babel/helper-define-polyfill-provider": "^0.3.0",
7262 "semver": "^6.1.1" 7177 "semver": "^6.1.1"
7263 }, 7178 },
7264 "peerDependencies": { 7179 "peerDependencies": {
@@ -7275,12 +7190,12 @@
7275 } 7190 }
7276 }, 7191 },
7277 "node_modules/babel-plugin-polyfill-corejs3": { 7192 "node_modules/babel-plugin-polyfill-corejs3": {
7278 "version": "0.3.0", 7193 "version": "0.4.0",
7279 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz", 7194 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz",
7280 "integrity": "sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==", 7195 "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==",
7281 "dev": true, 7196 "dev": true,
7282 "dependencies": { 7197 "dependencies": {
7283 "@babel/helper-define-polyfill-provider": "^0.2.4", 7198 "@babel/helper-define-polyfill-provider": "^0.3.0",
7284 "core-js-compat": "^3.18.0" 7199 "core-js-compat": "^3.18.0"
7285 }, 7200 },
7286 "peerDependencies": { 7201 "peerDependencies": {
@@ -7288,12 +7203,12 @@
7288 } 7203 }
7289 }, 7204 },
7290 "node_modules/babel-plugin-polyfill-regenerator": { 7205 "node_modules/babel-plugin-polyfill-regenerator": {
7291 "version": "0.2.3", 7206 "version": "0.3.0",
7292 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz", 7207 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz",
7293 "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==", 7208 "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==",
7294 "dev": true, 7209 "dev": true,
7295 "dependencies": { 7210 "dependencies": {
7296 "@babel/helper-define-polyfill-provider": "^0.2.4" 7211 "@babel/helper-define-polyfill-provider": "^0.3.0"
7297 }, 7212 },
7298 "peerDependencies": { 7213 "peerDependencies": {
7299 "@babel/core": "^7.0.0-0" 7214 "@babel/core": "^7.0.0-0"
@@ -7432,9 +7347,9 @@
7432 "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" 7347 "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
7433 }, 7348 },
7434 "node_modules/big-integer": { 7349 "node_modules/big-integer": {
7435 "version": "1.6.50", 7350 "version": "1.6.51",
7436 "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.50.tgz", 7351 "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
7437 "integrity": "sha512-+O2uoQWFRo8ysZNo/rjtri2jIwjr3XfeAgRjAUADRqGG+ZITvyn8J1kvXLTaKVr3hhGXk+f23tKfdzmklVM9vQ==", 7352 "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
7438 "engines": { 7353 "engines": {
7439 "node": ">=0.6" 7354 "node": ">=0.6"
7440 } 7355 }
@@ -7544,6 +7459,15 @@
7544 "node": ">= 0.8" 7459 "node": ">= 0.8"
7545 } 7460 }
7546 }, 7461 },
7462 "node_modules/body-parser/node_modules/bytes": {
7463 "version": "3.1.0",
7464 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
7465 "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
7466 "dev": true,
7467 "engines": {
7468 "node": ">= 0.8"
7469 }
7470 },
7547 "node_modules/body-parser/node_modules/debug": { 7471 "node_modules/body-parser/node_modules/debug": {
7548 "version": "2.6.9", 7472 "version": "2.6.9",
7549 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 7473 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -7623,6 +7547,15 @@
7623 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", 7547 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
7624 "dev": true 7548 "dev": true
7625 }, 7549 },
7550 "node_modules/body-parser/node_modules/toidentifier": {
7551 "version": "1.0.0",
7552 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
7553 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
7554 "dev": true,
7555 "engines": {
7556 "node": ">=0.6"
7557 }
7558 },
7626 "node_modules/body/node_modules/bytes": { 7559 "node_modules/body/node_modules/bytes": {
7627 "version": "1.0.0", 7560 "version": "1.0.0",
7628 "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", 7561 "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz",
@@ -7713,9 +7646,9 @@
7713 } 7646 }
7714 }, 7647 },
7715 "node_modules/boxen/node_modules/camelcase": { 7648 "node_modules/boxen/node_modules/camelcase": {
7716 "version": "6.2.0", 7649 "version": "6.2.1",
7717 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", 7650 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz",
7718 "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", 7651 "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==",
7719 "dev": true, 7652 "dev": true,
7720 "engines": { 7653 "engines": {
7721 "node": ">=10" 7654 "node": ">=10"
@@ -7849,11 +7782,6 @@
7849 "node": ">=0.10.0" 7782 "node": ">=0.10.0"
7850 } 7783 }
7851 }, 7784 },
7852 "node_modules/brcast": {
7853 "version": "3.0.2",
7854 "resolved": "https://registry.npmjs.org/brcast/-/brcast-3.0.2.tgz",
7855 "integrity": "sha512-f5XwwFCCuvgqP2nMH/hJ74FqnGmb4X3D+NC//HphxJzzhsZvSZa+Hk/syB7j3ZHpPDLMoYU8oBgviRWfNvEfKA=="
7856 },
7857 "node_modules/brorand": { 7785 "node_modules/brorand": {
7858 "version": "1.1.0", 7786 "version": "1.1.0",
7859 "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 7787 "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
@@ -7980,13 +7908,13 @@
7980 } 7908 }
7981 }, 7909 },
7982 "node_modules/browserslist": { 7910 "node_modules/browserslist": {
7983 "version": "4.17.6", 7911 "version": "4.18.1",
7984 "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", 7912 "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz",
7985 "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", 7913 "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==",
7986 "dev": true, 7914 "dev": true,
7987 "dependencies": { 7915 "dependencies": {
7988 "caniuse-lite": "^1.0.30001274", 7916 "caniuse-lite": "^1.0.30001280",
7989 "electron-to-chromium": "^1.3.886", 7917 "electron-to-chromium": "^1.3.896",
7990 "escalade": "^3.1.1", 7918 "escalade": "^3.1.1",
7991 "node-releases": "^2.0.1", 7919 "node-releases": "^2.0.1",
7992 "picocolors": "^1.0.0" 7920 "picocolors": "^1.0.0"
@@ -8135,9 +8063,9 @@
8135 } 8063 }
8136 }, 8064 },
8137 "node_modules/builder-util": { 8065 "node_modules/builder-util": {
8138 "version": "22.14.5", 8066 "version": "22.14.7",
8139 "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.5.tgz", 8067 "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.7.tgz",
8140 "integrity": "sha512-zqIHDFJwmA7jV7SC9aI+33MWwT2mWoijH+Ol9IntNAwuuRXoS+7XeJwnhLBXOhcDBzXT4kDzHnRk4JKeaygEYA==", 8068 "integrity": "sha512-M8ql8WPW/P9UKsF00YZjiP5h29MYrJ3svJx5suszC5EGwIdAztIhFyXoXKI3hPtDaR5b6EoWD9nLa5/Gr+QToQ==",
8141 "dev": true, 8069 "dev": true,
8142 "dependencies": { 8070 "dependencies": {
8143 "@types/debug": "^4.1.6", 8071 "@types/debug": "^4.1.6",
@@ -8145,11 +8073,13 @@
8145 "7zip-bin": "~5.1.1", 8073 "7zip-bin": "~5.1.1",
8146 "app-builder-bin": "3.7.1", 8074 "app-builder-bin": "3.7.1",
8147 "bluebird-lst": "^1.0.9", 8075 "bluebird-lst": "^1.0.9",
8148 "builder-util-runtime": "8.9.1", 8076 "builder-util-runtime": "8.9.2",
8149 "chalk": "^4.1.1", 8077 "chalk": "^4.1.1",
8150 "cross-spawn": "^7.0.3", 8078 "cross-spawn": "^7.0.3",
8151 "debug": "^4.3.2", 8079 "debug": "^4.3.2",
8152 "fs-extra": "^10.0.0", 8080 "fs-extra": "^10.0.0",
8081 "http-proxy-agent": "^5.0.0",
8082 "https-proxy-agent": "^5.0.0",
8153 "is-ci": "^3.0.0", 8083 "is-ci": "^3.0.0",
8154 "js-yaml": "^4.1.0", 8084 "js-yaml": "^4.1.0",
8155 "source-map-support": "^0.5.19", 8085 "source-map-support": "^0.5.19",
@@ -8158,10 +8088,9 @@
8158 } 8088 }
8159 }, 8089 },
8160 "node_modules/builder-util-runtime": { 8090 "node_modules/builder-util-runtime": {
8161 "version": "8.9.1", 8091 "version": "8.9.2",
8162 "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.1.tgz", 8092 "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz",
8163 "integrity": "sha512-c8a8J3wK6BIVLW7ls+7TRK9igspTbzWmUqxFbgK0m40Ggm6efUbxtWVCGIjc+dtchyr5qAMAUL6iEGRdS/6vwg==", 8093 "integrity": "sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A==",
8164 "dev": true,
8165 "dependencies": { 8094 "dependencies": {
8166 "debug": "^4.3.2", 8095 "debug": "^4.3.2",
8167 "sax": "^1.2.4" 8096 "sax": "^1.2.4"
@@ -8170,6 +8099,15 @@
8170 "node": ">=12.0.0" 8099 "node": ">=12.0.0"
8171 } 8100 }
8172 }, 8101 },
8102 "node_modules/builder-util/node_modules/@tootallnate/once": {
8103 "version": "2.0.0",
8104 "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
8105 "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
8106 "dev": true,
8107 "engines": {
8108 "node": ">= 10"
8109 }
8110 },
8173 "node_modules/builder-util/node_modules/ansi-styles": { 8111 "node_modules/builder-util/node_modules/ansi-styles": {
8174 "version": "4.3.0", 8112 "version": "4.3.0",
8175 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 8113 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -8228,6 +8166,20 @@
8228 "node": ">=8" 8166 "node": ">=8"
8229 } 8167 }
8230 }, 8168 },
8169 "node_modules/builder-util/node_modules/http-proxy-agent": {
8170 "version": "5.0.0",
8171 "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
8172 "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
8173 "dev": true,
8174 "dependencies": {
8175 "@tootallnate/once": "2",
8176 "agent-base": "6",
8177 "debug": "4"
8178 },
8179 "engines": {
8180 "node": ">= 6"
8181 }
8182 },
8231 "node_modules/builder-util/node_modules/supports-color": { 8183 "node_modules/builder-util/node_modules/supports-color": {
8232 "version": "7.2.0", 8184 "version": "7.2.0",
8233 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 8185 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -8259,9 +8211,9 @@
8259 "dev": true 8211 "dev": true
8260 }, 8212 },
8261 "node_modules/bytes": { 8213 "node_modules/bytes": {
8262 "version": "3.1.0", 8214 "version": "3.1.1",
8263 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 8215 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz",
8264 "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", 8216 "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==",
8265 "engines": { 8217 "engines": {
8266 "node": ">= 0.8" 8218 "node": ">= 0.8"
8267 } 8219 }
@@ -8295,26 +8247,6 @@
8295 "node": ">= 10" 8247 "node": ">= 10"
8296 } 8248 }
8297 }, 8249 },
8298 "node_modules/cacache/node_modules/glob": {
8299 "version": "7.2.0",
8300 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
8301 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
8302 "dev": true,
8303 "dependencies": {
8304 "fs.realpath": "^1.0.0",
8305 "inflight": "^1.0.4",
8306 "inherits": "2",
8307 "minimatch": "^3.0.4",
8308 "once": "^1.3.0",
8309 "path-is-absolute": "^1.0.0"
8310 },
8311 "engines": {
8312 "node": "*"
8313 },
8314 "funding": {
8315 "url": "https://github.com/sponsors/isaacs"
8316 }
8317 },
8318 "node_modules/cacache/node_modules/mkdirp": { 8250 "node_modules/cacache/node_modules/mkdirp": {
8319 "version": "1.0.4", 8251 "version": "1.0.4",
8320 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 8252 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
@@ -8512,9 +8444,9 @@
8512 } 8444 }
8513 }, 8445 },
8514 "node_modules/caniuse-lite": { 8446 "node_modules/caniuse-lite": {
8515 "version": "1.0.30001278", 8447 "version": "1.0.30001286",
8516 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", 8448 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz",
8517 "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", 8449 "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==",
8518 "dev": true, 8450 "dev": true,
8519 "funding": { 8451 "funding": {
8520 "type": "opencollective", 8452 "type": "opencollective",
@@ -8789,53 +8721,19 @@
8789 "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" 8721 "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
8790 }, 8722 },
8791 "node_modules/cld": { 8723 "node_modules/cld": {
8792 "version": "2.7.0", 8724 "version": "2.7.1",
8793 "resolved": "https://registry.npmjs.org/cld/-/cld-2.7.0.tgz", 8725 "resolved": "https://registry.npmjs.org/cld/-/cld-2.7.1.tgz",
8794 "integrity": "sha512-rM20jIISRqMYfZAlowCA4DwLLegJXqfCFdVb1vtS+RG7yKHn4FrYdFfUx2WGbmaqOQV/w4MRIszh43FH78/oRA==", 8726 "integrity": "sha512-4RusGBKlhW/f7hrv4wFf19n461aO1XCCC4/pCawTJNGaNT+i4OIeAwREY9oeqT0vJyBmtY2dM9IG4cQyu5Pcng==",
8795 "hasInstallScript": true, 8727 "hasInstallScript": true,
8796 "optional": true,
8797 "dependencies": { 8728 "dependencies": {
8798 "glob": "^5.0.10", 8729 "glob": "7",
8799 "node-addon-api": "*", 8730 "node-addon-api": "*",
8800 "rimraf": "^2.4.0", 8731 "underscore": "^1.12.1"
8801 "underscore": "^1.6.0"
8802 }, 8732 },
8803 "engines": { 8733 "engines": {
8804 "node": ">=12.0.0" 8734 "node": ">=12.0.0"
8805 } 8735 }
8806 }, 8736 },
8807 "node_modules/cld/node_modules/rimraf": {
8808 "version": "2.7.1",
8809 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
8810 "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
8811 "optional": true,
8812 "dependencies": {
8813 "glob": "^7.1.3"
8814 },
8815 "bin": {
8816 "rimraf": "bin.js"
8817 }
8818 },
8819 "node_modules/cld/node_modules/rimraf/node_modules/glob": {
8820 "version": "7.2.0",
8821 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
8822 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
8823 "optional": true,
8824 "dependencies": {
8825 "fs.realpath": "^1.0.0",
8826 "inflight": "^1.0.4",
8827 "inherits": "2",
8828 "minimatch": "^3.0.4",
8829 "once": "^1.3.0",
8830 "path-is-absolute": "^1.0.0"
8831 },
8832 "engines": {
8833 "node": "*"
8834 },
8835 "funding": {
8836 "url": "https://github.com/sponsors/isaacs"
8837 }
8838 },
8839 "node_modules/clean-css": { 8737 "node_modules/clean-css": {
8840 "version": "4.2.4", 8738 "version": "4.2.4",
8841 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", 8739 "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz",
@@ -8903,28 +8801,64 @@
8903 } 8801 }
8904 }, 8802 },
8905 "node_modules/cli-table": { 8803 "node_modules/cli-table": {
8906 "version": "0.3.6", 8804 "version": "0.3.8",
8907 "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", 8805 "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.8.tgz",
8908 "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", 8806 "integrity": "sha512-5IO15fJRzgM+hHZjvQlqD6UPRuVGWR4Ny5ZzaM5VJxJEQqSIEVyVh9dMAUN6CBAVfMc4/6CFEzbhnRftLRCyug==",
8909 "dependencies": { 8807 "dependencies": {
8910 "colors": "1.0.3" 8808 "colors": "1.0.3",
8809 "strip-ansi": "^6.0.1"
8911 }, 8810 },
8912 "engines": { 8811 "engines": {
8913 "node": ">= 0.2.0" 8812 "node": ">= 12"
8914 } 8813 }
8915 }, 8814 },
8916 "node_modules/cli-truncate": { 8815 "node_modules/cli-truncate": {
8917 "version": "1.1.0", 8816 "version": "2.1.0",
8918 "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", 8817 "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
8919 "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", 8818 "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
8920 "dev": true, 8819 "dev": true,
8921 "optional": true, 8820 "optional": true,
8922 "dependencies": { 8821 "dependencies": {
8923 "slice-ansi": "^1.0.0", 8822 "slice-ansi": "^3.0.0",
8924 "string-width": "^2.0.0" 8823 "string-width": "^4.2.0"
8925 }, 8824 },
8926 "engines": { 8825 "engines": {
8927 "node": ">=4" 8826 "node": ">=8"
8827 },
8828 "funding": {
8829 "url": "https://github.com/sponsors/sindresorhus"
8830 }
8831 },
8832 "node_modules/cli-truncate/node_modules/emoji-regex": {
8833 "version": "8.0.0",
8834 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
8835 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
8836 "dev": true,
8837 "optional": true
8838 },
8839 "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": {
8840 "version": "3.0.0",
8841 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
8842 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
8843 "dev": true,
8844 "optional": true,
8845 "engines": {
8846 "node": ">=8"
8847 }
8848 },
8849 "node_modules/cli-truncate/node_modules/string-width": {
8850 "version": "4.2.3",
8851 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
8852 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
8853 "dev": true,
8854 "optional": true,
8855 "dependencies": {
8856 "emoji-regex": "^8.0.0",
8857 "is-fullwidth-code-point": "^3.0.0",
8858 "strip-ansi": "^6.0.1"
8859 },
8860 "engines": {
8861 "node": ">=8"
8928 } 8862 }
8929 }, 8863 },
8930 "node_modules/cli-width": { 8864 "node_modules/cli-width": {
@@ -9533,9 +9467,9 @@
9533 } 9467 }
9534 }, 9468 },
9535 "node_modules/concurrently": { 9469 "node_modules/concurrently": {
9536 "version": "6.3.0", 9470 "version": "6.4.0",
9537 "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.3.0.tgz", 9471 "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.4.0.tgz",
9538 "integrity": "sha512-k4k1jQGHHKsfbqzkUszVf29qECBrkvBKkcPJEUDTyVR7tZd1G/JOfnst4g1sYbFvJ4UjHZisj1aWQR8yLKpGPw==", 9472 "integrity": "sha512-HZ3D0RTQMH3oS4gvtYj1P+NBc6PzE2McEra6yEFcQKrUQ9HvtTGU4Dbne083F034p+LRb7kWU0tPRNvSGs1UCQ==",
9539 "dev": true, 9473 "dev": true,
9540 "dependencies": { 9474 "dependencies": {
9541 "chalk": "^4.1.0", 9475 "chalk": "^4.1.0",
@@ -9927,26 +9861,6 @@
9927 "run-queue": "^1.0.0" 9861 "run-queue": "^1.0.0"
9928 } 9862 }
9929 }, 9863 },
9930 "node_modules/copy-concurrently/node_modules/glob": {
9931 "version": "7.2.0",
9932 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
9933 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
9934 "dev": true,
9935 "dependencies": {
9936 "fs.realpath": "^1.0.0",
9937 "inflight": "^1.0.4",
9938 "inherits": "2",
9939 "minimatch": "^3.0.4",
9940 "once": "^1.3.0",
9941 "path-is-absolute": "^1.0.0"
9942 },
9943 "engines": {
9944 "node": "*"
9945 },
9946 "funding": {
9947 "url": "https://github.com/sponsors/isaacs"
9948 }
9949 },
9950 "node_modules/copy-concurrently/node_modules/rimraf": { 9864 "node_modules/copy-concurrently/node_modules/rimraf": {
9951 "version": "2.7.1", 9865 "version": "2.7.1",
9952 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 9866 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -10010,9 +9924,9 @@
10010 } 9924 }
10011 }, 9925 },
10012 "node_modules/core-js-pure": { 9926 "node_modules/core-js-pure": {
10013 "version": "3.19.0", 9927 "version": "3.19.1",
10014 "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.0.tgz", 9928 "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz",
10015 "integrity": "sha512-UEQk8AxyCYvNAs6baNoPqDADv7BX0AmBLGxVsrAifPPx/C8EAzV4Q+2ZUJqVzfI2TQQEZITnwUkWcHpgc/IubQ==", 9929 "integrity": "sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==",
10016 "dev": true, 9930 "dev": true,
10017 "hasInstallScript": true, 9931 "hasInstallScript": true,
10018 "funding": { 9932 "funding": {
@@ -10192,6 +10106,16 @@
10192 "node": ">= 0.8" 10106 "node": ">= 0.8"
10193 } 10107 }
10194 }, 10108 },
10109 "node_modules/css-jss": {
10110 "version": "10.8.2",
10111 "resolved": "https://registry.npmjs.org/css-jss/-/css-jss-10.8.2.tgz",
10112 "integrity": "sha512-KjsoKnBV4C9p+F+zW9jNXCai0UYU5K+3eyo+lJX/fY8UBEQd/yNREnHsLD1VMMzBwHRvrA8eQHvqmAL+XNLYcw==",
10113 "dependencies": {
10114 "@babel/runtime": "^7.3.1",
10115 "jss": "10.8.2",
10116 "jss-preset-default": "10.8.2"
10117 }
10118 },
10195 "node_modules/css-select": { 10119 "node_modules/css-select": {
10196 "version": "4.1.3", 10120 "version": "4.1.3",
10197 "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", 10121 "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
@@ -10231,10 +10155,11 @@
10231 } 10155 }
10232 }, 10156 },
10233 "node_modules/css-vendor": { 10157 "node_modules/css-vendor": {
10234 "version": "0.3.8", 10158 "version": "2.0.8",
10235 "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-0.3.8.tgz", 10159 "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz",
10236 "integrity": "sha1-ZCHP0wNM5mT+dnOXL9ARn8KJQfo=", 10160 "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==",
10237 "dependencies": { 10161 "dependencies": {
10162 "@babel/runtime": "^7.8.3",
10238 "is-in-browser": "^1.0.2" 10163 "is-in-browser": "^1.0.2"
10239 } 10164 }
10240 }, 10165 },
@@ -10287,9 +10212,9 @@
10287 "dev": true 10212 "dev": true
10288 }, 10213 },
10289 "node_modules/csstype": { 10214 "node_modules/csstype": {
10290 "version": "3.0.9", 10215 "version": "3.0.10",
10291 "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", 10216 "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz",
10292 "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" 10217 "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA=="
10293 }, 10218 },
10294 "node_modules/currently-unhandled": { 10219 "node_modules/currently-unhandled": {
10295 "version": "0.4.1", 10220 "version": "0.4.1",
@@ -10355,9 +10280,9 @@
10355 } 10280 }
10356 }, 10281 },
10357 "node_modules/darkreader": { 10282 "node_modules/darkreader": {
10358 "version": "4.9.39", 10283 "version": "4.9.40",
10359 "resolved": "https://registry.npmjs.org/darkreader/-/darkreader-4.9.39.tgz", 10284 "resolved": "https://registry.npmjs.org/darkreader/-/darkreader-4.9.40.tgz",
10360 "integrity": "sha512-OikzTzTDasjq+e+PXRWZRxMA+PZddz9cDLiZGVUI48w1FbBDfXwwQyyWiO7eavdAQ1cV9dYA21g6KtdK/0OefA==", 10285 "integrity": "sha512-Dm8S5jkXSIxvq9WitcvuH4KexV9ZuzGqDMsFOm2VwXzRkMo9VIg8udjq2Mm7cM6SaQSp/zzH4VIWioX93iWayQ==",
10361 "funding": { 10286 "funding": {
10362 "type": "opencollective", 10287 "type": "opencollective",
10363 "url": "https://opencollective.com/darkreader" 10288 "url": "https://opencollective.com/darkreader"
@@ -10390,9 +10315,9 @@
10390 } 10315 }
10391 }, 10316 },
10392 "node_modules/date-fns": { 10317 "node_modules/date-fns": {
10393 "version": "2.25.0", 10318 "version": "2.26.0",
10394 "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", 10319 "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.26.0.tgz",
10395 "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==", 10320 "integrity": "sha512-VQI812dRi3cusdY/fhoBKvc6l2W8BPWU1FNVnFH9Nttjx4AFBRzfSVb/Eyc7jBT6e9sg1XtAGsYpBQ6c/jygbg==",
10396 "dev": true, 10321 "dev": true,
10397 "engines": { 10322 "engines": {
10398 "node": ">=0.11" 10323 "node": ">=0.11"
@@ -10782,26 +10707,6 @@
10782 "node": ">=0.10.0" 10707 "node": ">=0.10.0"
10783 } 10708 }
10784 }, 10709 },
10785 "node_modules/del/node_modules/glob": {
10786 "version": "7.2.0",
10787 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
10788 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
10789 "dev": true,
10790 "dependencies": {
10791 "fs.realpath": "^1.0.0",
10792 "inflight": "^1.0.4",
10793 "inherits": "2",
10794 "minimatch": "^3.0.4",
10795 "once": "^1.3.0",
10796 "path-is-absolute": "^1.0.0"
10797 },
10798 "engines": {
10799 "node": "*"
10800 },
10801 "funding": {
10802 "url": "https://github.com/sponsors/isaacs"
10803 }
10804 },
10805 "node_modules/del/node_modules/globby": { 10710 "node_modules/del/node_modules/globby": {
10806 "version": "6.1.0", 10711 "version": "6.1.0",
10807 "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", 10712 "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
@@ -11009,14 +10914,14 @@
11009 } 10914 }
11010 }, 10915 },
11011 "node_modules/dmg-builder": { 10916 "node_modules/dmg-builder": {
11012 "version": "22.14.5", 10917 "version": "22.14.10",
11013 "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.5.tgz", 10918 "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.10.tgz",
11014 "integrity": "sha512-1GvFGQE332bvPamcMwZDqWqfWfJTyyDLOsHMcGi0zs+Jh7JOn6/zuBkHJIWHdsj2QJbhzLVyd2/ZqttOKv7I8w==", 10919 "integrity": "sha512-DMLdhVNvIEBo0tzODoFalbdahIxlNXDL4JmxjwGYS69csPTqg0ev+6GOMgWmXhvrdEyN8hQWl1kTFjM/jZ+qBA==",
11015 "dev": true, 10920 "dev": true,
11016 "dependencies": { 10921 "dependencies": {
11017 "app-builder-lib": "22.14.5", 10922 "app-builder-lib": "22.14.10",
11018 "builder-util": "22.14.5", 10923 "builder-util": "22.14.7",
11019 "builder-util-runtime": "8.9.1", 10924 "builder-util-runtime": "8.9.2",
11020 "fs-extra": "^10.0.0", 10925 "fs-extra": "^10.0.0",
11021 "iconv-lite": "^0.6.2", 10926 "iconv-lite": "^0.6.2",
11022 "js-yaml": "^4.1.0" 10927 "js-yaml": "^4.1.0"
@@ -11026,9 +10931,9 @@
11026 } 10931 }
11027 }, 10932 },
11028 "node_modules/dmg-license": { 10933 "node_modules/dmg-license": {
11029 "version": "1.0.9", 10934 "version": "1.0.10",
11030 "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.9.tgz", 10935 "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.10.tgz",
11031 "integrity": "sha512-Rq6qMDaDou2+aPN2SYy0x7LDznoJ/XaG6oDcH5wXUp+WRWQMUYE6eM+F+nex+/LSXOp1uw4HLFoed0YbfU8R/Q==", 10936 "integrity": "sha512-SVeeyiOeinV5JCPHXMdKOgK1YVbak/4+8WL2rBnfqRYpA5FaeFaQnQWb25x628am1w70CbipGDv9S51biph63A==",
11032 "dev": true, 10937 "dev": true,
11033 "optional": true, 10938 "optional": true,
11034 "os": [ 10939 "os": [
@@ -11038,10 +10943,9 @@
11038 "@types/plist": "^3.0.1", 10943 "@types/plist": "^3.0.1",
11039 "@types/verror": "^1.10.3", 10944 "@types/verror": "^1.10.3",
11040 "ajv": "^6.10.0", 10945 "ajv": "^6.10.0",
11041 "cli-truncate": "^1.1.0",
11042 "crc": "^3.8.0", 10946 "crc": "^3.8.0",
11043 "iconv-corefoundation": "^1.1.6", 10947 "iconv-corefoundation": "^1.1.7",
11044 "plist": "^3.0.1", 10948 "plist": "^3.0.4",
11045 "smart-buffer": "^4.0.2", 10949 "smart-buffer": "^4.0.2",
11046 "verror": "^1.10.0" 10950 "verror": "^1.10.0"
11047 }, 10951 },
@@ -11366,9 +11270,9 @@
11366 } 11270 }
11367 }, 11271 },
11368 "node_modules/electron": { 11272 "node_modules/electron": {
11369 "version": "15.3.0", 11273 "version": "15.3.3",
11370 "resolved": "https://registry.npmjs.org/electron/-/electron-15.3.0.tgz", 11274 "resolved": "https://registry.npmjs.org/electron/-/electron-15.3.3.tgz",
11371 "integrity": "sha512-YLzaKCFmSniNlz9+NUTNs7ssPyDc+bYOCYZ0b/D6DjVkOeIFz4SR8EYKqlOc8TcqlDNu18BbWqz6zbJPyAAURg==", 11275 "integrity": "sha512-tr4UaMosN6+s8vSbx6OxqRXDTTCBjjJkmDMv0b0sg8f+cRFQeY0u7xYbULpXS4B1+hHJmdh7Nz40Qpv0bJXa6w==",
11372 "dev": true, 11276 "dev": true,
11373 "hasInstallScript": true, 11277 "hasInstallScript": true,
11374 "dependencies": { 11278 "dependencies": {
@@ -11384,17 +11288,17 @@
11384 } 11288 }
11385 }, 11289 },
11386 "node_modules/electron-builder": { 11290 "node_modules/electron-builder": {
11387 "version": "22.14.5", 11291 "version": "22.14.10",
11388 "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.5.tgz", 11292 "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.10.tgz",
11389 "integrity": "sha512-N73hSbXFz6Mz5Z6h6C5ly6CB+dUN6k1LuCDJjI8VF47bMXv/QE0HE+Kkb0GPKqTqM7Hsk/yIYX+kHCfSkR5FGg==", 11293 "integrity": "sha512-IGYziKc3/nz6P/HhsO6ls2ACIvkMOHUu5jKw+h4g/muT2iBUSNCuyh20VuLQnmR5ggo8uGVuv485GtJc/HP8ig==",
11390 "dev": true, 11294 "dev": true,
11391 "dependencies": { 11295 "dependencies": {
11392 "@types/yargs": "^17.0.1", 11296 "@types/yargs": "^17.0.1",
11393 "app-builder-lib": "22.14.5", 11297 "app-builder-lib": "22.14.10",
11394 "builder-util": "22.14.5", 11298 "builder-util": "22.14.7",
11395 "builder-util-runtime": "8.9.1", 11299 "builder-util-runtime": "8.9.2",
11396 "chalk": "^4.1.1", 11300 "chalk": "^4.1.1",
11397 "dmg-builder": "22.14.5", 11301 "dmg-builder": "22.14.10",
11398 "fs-extra": "^10.0.0", 11302 "fs-extra": "^10.0.0",
11399 "is-ci": "^3.0.0", 11303 "is-ci": "^3.0.0",
11400 "lazy-val": "^1.0.5", 11304 "lazy-val": "^1.0.5",
@@ -11481,9 +11385,9 @@
11481 } 11385 }
11482 }, 11386 },
11483 "node_modules/electron-dl": { 11387 "node_modules/electron-dl": {
11484 "version": "3.2.1", 11388 "version": "3.3.0",
11485 "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.2.1.tgz", 11389 "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.3.0.tgz",
11486 "integrity": "sha512-k5DFjocJlXbrjshO1zeWe/Gz7HkGwCgnehHPemiyzN2B/LfLlnbIX7sCj5F+huTwZ2l+nQehTI4IR37xvCn6FQ==", 11390 "integrity": "sha512-Zwaz/OMGPIfBLV2SQH4sTsdDOs/U4y5AOHfremMBXEpjIxX+SiTx845DZAvJJwgb5hfowyWOBLiJhd/emBNLLQ==",
11487 "dependencies": { 11391 "dependencies": {
11488 "ext-name": "^5.0.0", 11392 "ext-name": "^5.0.0",
11489 "pupa": "^2.0.1", 11393 "pupa": "^2.0.1",
@@ -11603,14 +11507,14 @@
11603 "dev": true 11507 "dev": true
11604 }, 11508 },
11605 "node_modules/electron-publish": { 11509 "node_modules/electron-publish": {
11606 "version": "22.14.5", 11510 "version": "22.14.7",
11607 "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.5.tgz", 11511 "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.7.tgz",
11608 "integrity": "sha512-h+NANRdaA0PqGF15GKvorseWPzh1PXa/zx4I37//PIokW8eKIov8ky23foUSb55ZFWUHGpxQJux7y2NCfBtQeg==", 11512 "integrity": "sha512-sqZX/64k0B7sQeaDzFDE6m7r2zOtFgdmWAFnkv10bLlbHagkH9AkwwcjiGBpIto7mUBp89ntL7Ij5QFvldqI4Q==",
11609 "dev": true, 11513 "dev": true,
11610 "dependencies": { 11514 "dependencies": {
11611 "@types/fs-extra": "^9.0.11", 11515 "@types/fs-extra": "^9.0.11",
11612 "builder-util": "22.14.5", 11516 "builder-util": "22.14.7",
11613 "builder-util-runtime": "8.9.1", 11517 "builder-util-runtime": "8.9.2",
11614 "chalk": "^4.1.1", 11518 "chalk": "^4.1.1",
11615 "fs-extra": "^10.0.0", 11519 "fs-extra": "^10.0.0",
11616 "lazy-val": "^1.0.5", 11520 "lazy-val": "^1.0.5",
@@ -11698,38 +11602,26 @@
11698 } 11602 }
11699 }, 11603 },
11700 "node_modules/electron-to-chromium": { 11604 "node_modules/electron-to-chromium": {
11701 "version": "1.3.890", 11605 "version": "1.3.904",
11702 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", 11606 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz",
11703 "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", 11607 "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==",
11704 "dev": true 11608 "dev": true
11705 }, 11609 },
11706 "node_modules/electron-updater": { 11610 "node_modules/electron-updater": {
11707 "version": "4.3.9", 11611 "version": "4.6.2",
11708 "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.3.9.tgz", 11612 "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.6.2.tgz",
11709 "integrity": "sha512-LCNfedSwZfS4Hza+pDyPR05LqHtGorCStaBgVpRnfKxOlZcvpYEX0AbMeH5XUtbtGRoH2V8osbbf2qKPNb7AsA==", 11613 "integrity": "sha512-KAloJQNXwW2j81n0o2KgBsiRsxp2OS15nty4nZLUjZYNuRyJ7yp2zeKPL4fVNGY6Ave491ht7/Dyz5OIykJf9g==",
11710 "dependencies": { 11614 "dependencies": {
11711 "@types/semver": "^7.3.5", 11615 "@types/semver": "^7.3.6",
11712 "builder-util-runtime": "8.7.5", 11616 "builder-util-runtime": "8.9.2",
11713 "fs-extra": "^10.0.0", 11617 "fs-extra": "^10.0.0",
11714 "js-yaml": "^4.1.0", 11618 "js-yaml": "^4.1.0",
11715 "lazy-val": "^1.0.4", 11619 "lazy-val": "^1.0.5",
11716 "lodash.escaperegexp": "^4.1.2", 11620 "lodash.escaperegexp": "^4.1.2",
11717 "lodash.isequal": "^4.5.0", 11621 "lodash.isequal": "^4.5.0",
11718 "semver": "^7.3.5" 11622 "semver": "^7.3.5"
11719 } 11623 }
11720 }, 11624 },
11721 "node_modules/electron-updater/node_modules/builder-util-runtime": {
11722 "version": "8.7.5",
11723 "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.5.tgz",
11724 "integrity": "sha512-fgUFHKtMNjdvH6PDRFntdIGUPgwZ69sXsAqEulCtoiqgWes5agrMq/Ud274zjJRTbckYh2PHh8/1CpFc6dpsbQ==",
11725 "dependencies": {
11726 "debug": "^4.3.2",
11727 "sax": "^1.2.4"
11728 },
11729 "engines": {
11730 "node": ">=12.0.0"
11731 }
11732 },
11733 "node_modules/electron-util": { 11625 "node_modules/electron-util": {
11734 "version": "0.12.3", 11626 "version": "0.12.3",
11735 "resolved": "https://registry.npmjs.org/electron-util/-/electron-util-0.12.3.tgz", 11627 "resolved": "https://registry.npmjs.org/electron-util/-/electron-util-0.12.3.tgz",
@@ -11752,9 +11644,9 @@
11752 } 11644 }
11753 }, 11645 },
11754 "node_modules/electron/node_modules/@types/node": { 11646 "node_modules/electron/node_modules/@types/node": {
11755 "version": "14.17.32", 11647 "version": "14.17.34",
11756 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.32.tgz", 11648 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.34.tgz",
11757 "integrity": "sha512-JcII3D5/OapPGx+eJ+Ik1SQGyt6WvuqdRfh9jUwL6/iHGjmyOriBDciBUu7lEIBTL2ijxwrR70WUnw5AEDmFvQ==", 11649 "integrity": "sha512-USUftMYpmuMzeWobskoPfzDi+vkpe0dvcOBRNOscFrGxVp4jomnRxWuVohgqBow2xyIPC0S3gjxV/5079jhmDg==",
11758 "dev": true 11650 "dev": true
11759 }, 11651 },
11760 "node_modules/elliptic": { 11652 "node_modules/elliptic": {
@@ -12168,12 +12060,12 @@
12168 } 12060 }
12169 }, 12061 },
12170 "node_modules/eslint": { 12062 "node_modules/eslint": {
12171 "version": "8.1.0", 12063 "version": "8.2.0",
12172 "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.1.0.tgz", 12064 "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz",
12173 "integrity": "sha512-JZvNneArGSUsluHWJ8g8MMs3CfIEzwaLx9KyH4tZ2i+R2/rPWzL8c0zg3rHdwYVpN/1sB9gqnjHwz9HoeJpGHw==", 12065 "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==",
12174 "dev": true, 12066 "dev": true,
12175 "dependencies": { 12067 "dependencies": {
12176 "@eslint/eslintrc": "^1.0.3", 12068 "@eslint/eslintrc": "^1.0.4",
12177 "@humanwhocodes/config-array": "^0.6.0", 12069 "@humanwhocodes/config-array": "^0.6.0",
12178 "ajv": "^6.10.0", 12070 "ajv": "^6.10.0",
12179 "chalk": "^4.0.0", 12071 "chalk": "^4.0.0",
@@ -12207,7 +12099,7 @@
12207 "progress": "^2.0.0", 12099 "progress": "^2.0.0",
12208 "regexpp": "^3.2.0", 12100 "regexpp": "^3.2.0",
12209 "semver": "^7.2.1", 12101 "semver": "^7.2.1",
12210 "strip-ansi": "^6.0.0", 12102 "strip-ansi": "^6.0.1",
12211 "strip-json-comments": "^3.1.0", 12103 "strip-json-comments": "^3.1.0",
12212 "text-table": "^0.2.0", 12104 "text-table": "^0.2.0",
12213 "v8-compile-cache": "^2.0.3" 12105 "v8-compile-cache": "^2.0.3"
@@ -12223,55 +12115,65 @@
12223 } 12115 }
12224 }, 12116 },
12225 "node_modules/eslint-config-airbnb": { 12117 "node_modules/eslint-config-airbnb": {
12226 "version": "18.2.1", 12118 "version": "19.0.0",
12227 "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz", 12119 "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.0.tgz",
12228 "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==", 12120 "integrity": "sha512-f5FzCDw8osQJtifOGazdBtYuDOH38FVQSOwHvSU0iFjAmkdl4zQ1jG+YV6sVNt4gqVubqJwn98zZQzDoaCwDyw==",
12229 "dev": true, 12121 "dev": true,
12230 "dependencies": { 12122 "dependencies": {
12231 "eslint-config-airbnb-base": "^14.2.1", 12123 "eslint-config-airbnb-base": "^15.0.0",
12232 "object.assign": "^4.1.2", 12124 "object.assign": "^4.1.2",
12233 "object.entries": "^1.1.2" 12125 "object.entries": "^1.1.5"
12234 }, 12126 },
12235 "engines": { 12127 "engines": {
12236 "node": ">= 6" 12128 "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0"
12237 }, 12129 },
12238 "peerDependencies": { 12130 "peerDependencies": {
12239 "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", 12131 "eslint": "^7.32.0 || ^8.2.0",
12240 "eslint-plugin-import": "^2.22.1", 12132 "eslint-plugin-import": "^2.25.3",
12241 "eslint-plugin-jsx-a11y": "^6.4.1", 12133 "eslint-plugin-jsx-a11y": "^6.5.1",
12242 "eslint-plugin-react": "^7.21.5", 12134 "eslint-plugin-react": "^7.27.0",
12243 "eslint-plugin-react-hooks": "^4 || ^3 || ^2.3.0 || ^1.7.0" 12135 "eslint-plugin-react-hooks": "^4.3.0"
12244 } 12136 }
12245 }, 12137 },
12246 "node_modules/eslint-config-airbnb-base": { 12138 "node_modules/eslint-config-airbnb-base": {
12247 "version": "14.2.1", 12139 "version": "15.0.0",
12248 "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", 12140 "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz",
12249 "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", 12141 "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==",
12250 "dev": true, 12142 "dev": true,
12251 "dependencies": { 12143 "dependencies": {
12252 "confusing-browser-globals": "^1.0.10", 12144 "confusing-browser-globals": "^1.0.10",
12253 "object.assign": "^4.1.2", 12145 "object.assign": "^4.1.2",
12254 "object.entries": "^1.1.2" 12146 "object.entries": "^1.1.5",
12147 "semver": "^6.3.0"
12255 }, 12148 },
12256 "engines": { 12149 "engines": {
12257 "node": ">= 6" 12150 "node": "^10.12.0 || >=12.0.0"
12258 }, 12151 },
12259 "peerDependencies": { 12152 "peerDependencies": {
12260 "eslint": "^5.16.0 || ^6.8.0 || ^7.2.0", 12153 "eslint": "^7.32.0 || ^8.2.0",
12261 "eslint-plugin-import": "^2.22.1" 12154 "eslint-plugin-import": "^2.25.2"
12155 }
12156 },
12157 "node_modules/eslint-config-airbnb-base/node_modules/semver": {
12158 "version": "6.3.0",
12159 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
12160 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
12161 "dev": true,
12162 "bin": {
12163 "semver": "bin/semver.js"
12262 } 12164 }
12263 }, 12165 },
12264 "node_modules/eslint-config-airbnb-typescript": { 12166 "node_modules/eslint-config-airbnb-typescript": {
12265 "version": "14.0.1", 12167 "version": "16.0.0",
12266 "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-14.0.1.tgz", 12168 "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-16.0.0.tgz",
12267 "integrity": "sha512-tF4GwC3sRrw8kEj4/yxX8F7AcLzj/1IESBnsCiFMplzYmxre459qm2z9DFkCpqBVQFSH6j2K4+VKVteX4m0GsQ==", 12169 "integrity": "sha512-qDOyD0YYZo5Us1YvOnWig2Ly/+IlQKmMZpnqKnJgVtHdK8SkjaSyVBHKbD41dEaQxk8vRVGBC94PuR2ceSwbLQ==",
12268 "dev": true, 12170 "dev": true,
12269 "dependencies": { 12171 "dependencies": {
12270 "eslint-config-airbnb-base": "14.2.1" 12172 "eslint-config-airbnb-base": "^15.0.0"
12271 }, 12173 },
12272 "peerDependencies": { 12174 "peerDependencies": {
12273 "@typescript-eslint/eslint-plugin": "^4.29.3", 12175 "@typescript-eslint/eslint-plugin": "^5.0.0",
12274 "@typescript-eslint/parser": "^4.29.3" 12176 "@typescript-eslint/parser": "^5.0.0"
12275 } 12177 }
12276 }, 12178 },
12277 "node_modules/eslint-config-prettier": { 12179 "node_modules/eslint-config-prettier": {
@@ -12396,9 +12298,9 @@
12396 } 12298 }
12397 }, 12299 },
12398 "node_modules/eslint-plugin-import": { 12300 "node_modules/eslint-plugin-import": {
12399 "version": "2.25.2", 12301 "version": "2.25.3",
12400 "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz", 12302 "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz",
12401 "integrity": "sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==", 12303 "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==",
12402 "dev": true, 12304 "dev": true,
12403 "dependencies": { 12305 "dependencies": {
12404 "array-includes": "^3.1.4", 12306 "array-includes": "^3.1.4",
@@ -12406,9 +12308,9 @@
12406 "debug": "^2.6.9", 12308 "debug": "^2.6.9",
12407 "doctrine": "^2.1.0", 12309 "doctrine": "^2.1.0",
12408 "eslint-import-resolver-node": "^0.3.6", 12310 "eslint-import-resolver-node": "^0.3.6",
12409 "eslint-module-utils": "^2.7.0", 12311 "eslint-module-utils": "^2.7.1",
12410 "has": "^1.0.3", 12312 "has": "^1.0.3",
12411 "is-core-module": "^2.7.0", 12313 "is-core-module": "^2.8.0",
12412 "is-glob": "^4.0.3", 12314 "is-glob": "^4.0.3",
12413 "minimatch": "^3.0.4", 12315 "minimatch": "^3.0.4",
12414 "object.values": "^1.1.5", 12316 "object.values": "^1.1.5",
@@ -12450,9 +12352,9 @@
12450 "dev": true 12352 "dev": true
12451 }, 12353 },
12452 "node_modules/eslint-plugin-jest": { 12354 "node_modules/eslint-plugin-jest": {
12453 "version": "25.2.2", 12355 "version": "25.2.4",
12454 "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.2.2.tgz", 12356 "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.2.4.tgz",
12455 "integrity": "sha512-frn5yhOF60U4kcqozO3zKTNZQUk+mfx037XOy2iiYL8FhorEkuCuL3/flzKcY1ECDP2WYT9ydmvlO3fRW9o4mg==", 12357 "integrity": "sha512-HRyinpgmEdkVr7pNPaYPHCoGqEzpgk79X8pg/xCeoAdurbyQjntJQ4pTzHl7BiVEBlam/F1Qsn+Dk0HtJO7Aaw==",
12456 "dev": true, 12358 "dev": true,
12457 "dependencies": { 12359 "dependencies": {
12458 "@typescript-eslint/experimental-utils": "^5.0.0" 12360 "@typescript-eslint/experimental-utils": "^5.0.0"
@@ -12467,32 +12369,36 @@
12467 "peerDependenciesMeta": { 12369 "peerDependenciesMeta": {
12468 "@typescript-eslint/eslint-plugin": { 12370 "@typescript-eslint/eslint-plugin": {
12469 "optional": true 12371 "optional": true
12372 },
12373 "jest": {
12374 "optional": true
12470 } 12375 }
12471 } 12376 }
12472 }, 12377 },
12473 "node_modules/eslint-plugin-jsx-a11y": { 12378 "node_modules/eslint-plugin-jsx-a11y": {
12474 "version": "6.4.1", 12379 "version": "6.5.1",
12475 "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", 12380 "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz",
12476 "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", 12381 "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==",
12477 "dev": true, 12382 "dev": true,
12478 "dependencies": { 12383 "dependencies": {
12479 "@babel/runtime": "^7.11.2", 12384 "@babel/runtime": "^7.16.3",
12480 "aria-query": "^4.2.2", 12385 "aria-query": "^4.2.2",
12481 "array-includes": "^3.1.1", 12386 "array-includes": "^3.1.4",
12482 "ast-types-flow": "^0.0.7", 12387 "ast-types-flow": "^0.0.7",
12483 "axe-core": "^4.0.2", 12388 "axe-core": "^4.3.5",
12484 "axobject-query": "^2.2.0", 12389 "axobject-query": "^2.2.0",
12485 "damerau-levenshtein": "^1.0.6", 12390 "damerau-levenshtein": "^1.0.7",
12486 "emoji-regex": "^9.0.0", 12391 "emoji-regex": "^9.2.2",
12487 "has": "^1.0.3", 12392 "has": "^1.0.3",
12488 "jsx-ast-utils": "^3.1.0", 12393 "jsx-ast-utils": "^3.2.1",
12489 "language-tags": "^1.0.5" 12394 "language-tags": "^1.0.5",
12395 "minimatch": "^3.0.4"
12490 }, 12396 },
12491 "engines": { 12397 "engines": {
12492 "node": ">=4.0" 12398 "node": ">=4.0"
12493 }, 12399 },
12494 "peerDependencies": { 12400 "peerDependencies": {
12495 "eslint": "^3 || ^4 || ^5 || ^6 || ^7" 12401 "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
12496 } 12402 }
12497 }, 12403 },
12498 "node_modules/eslint-plugin-prettier": { 12404 "node_modules/eslint-plugin-prettier": {
@@ -12517,43 +12423,43 @@
12517 } 12423 }
12518 }, 12424 },
12519 "node_modules/eslint-plugin-react": { 12425 "node_modules/eslint-plugin-react": {
12520 "version": "7.26.1", 12426 "version": "7.27.1",
12521 "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz", 12427 "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz",
12522 "integrity": "sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==", 12428 "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==",
12523 "dev": true, 12429 "dev": true,
12524 "dependencies": { 12430 "dependencies": {
12525 "array-includes": "^3.1.3", 12431 "array-includes": "^3.1.4",
12526 "array.prototype.flatmap": "^1.2.4", 12432 "array.prototype.flatmap": "^1.2.5",
12527 "doctrine": "^2.1.0", 12433 "doctrine": "^2.1.0",
12528 "estraverse": "^5.2.0", 12434 "estraverse": "^5.3.0",
12529 "jsx-ast-utils": "^2.4.1 || ^3.0.0", 12435 "jsx-ast-utils": "^2.4.1 || ^3.0.0",
12530 "minimatch": "^3.0.4", 12436 "minimatch": "^3.0.4",
12531 "object.entries": "^1.1.4", 12437 "object.entries": "^1.1.5",
12532 "object.fromentries": "^2.0.4", 12438 "object.fromentries": "^2.0.5",
12533 "object.hasown": "^1.0.0", 12439 "object.hasown": "^1.1.0",
12534 "object.values": "^1.1.4", 12440 "object.values": "^1.1.5",
12535 "prop-types": "^15.7.2", 12441 "prop-types": "^15.7.2",
12536 "resolve": "^2.0.0-next.3", 12442 "resolve": "^2.0.0-next.3",
12537 "semver": "^6.3.0", 12443 "semver": "^6.3.0",
12538 "string.prototype.matchall": "^4.0.5" 12444 "string.prototype.matchall": "^4.0.6"
12539 }, 12445 },
12540 "engines": { 12446 "engines": {
12541 "node": ">=4" 12447 "node": ">=4"
12542 }, 12448 },
12543 "peerDependencies": { 12449 "peerDependencies": {
12544 "eslint": "^3 || ^4 || ^5 || ^6 || ^7" 12450 "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
12545 } 12451 }
12546 }, 12452 },
12547 "node_modules/eslint-plugin-react-hooks": { 12453 "node_modules/eslint-plugin-react-hooks": {
12548 "version": "4.2.0", 12454 "version": "4.3.0",
12549 "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", 12455 "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz",
12550 "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", 12456 "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==",
12551 "dev": true, 12457 "dev": true,
12552 "engines": { 12458 "engines": {
12553 "node": ">=10" 12459 "node": ">=10"
12554 }, 12460 },
12555 "peerDependencies": { 12461 "peerDependencies": {
12556 "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" 12462 "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
12557 } 12463 }
12558 }, 12464 },
12559 "node_modules/eslint-plugin-react/node_modules/doctrine": { 12465 "node_modules/eslint-plugin-react/node_modules/doctrine": {
@@ -12591,9 +12497,9 @@
12591 } 12497 }
12592 }, 12498 },
12593 "node_modules/eslint-plugin-unicorn": { 12499 "node_modules/eslint-plugin-unicorn": {
12594 "version": "37.0.1", 12500 "version": "39.0.0",
12595 "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-37.0.1.tgz", 12501 "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-39.0.0.tgz",
12596 "integrity": "sha512-E1jq5u9ojnadisJcPi+hMXTGSiIzkIUMDvWsBudsCGXvKUB2aNSU2TcfyW2/jAS5A4ryBXfzxLykMxX1EdluSQ==", 12502 "integrity": "sha512-fd5RK2FtYjGcIx3wra7csIE/wkkmBo22T1gZtRTsLr1Mb+KsFKJ+JOdSqhHXQUrI/JTs/Mon64cEYzTgSCbltw==",
12597 "dev": true, 12503 "dev": true,
12598 "dependencies": { 12504 "dependencies": {
12599 "@babel/helper-validator-identifier": "^7.14.9", 12505 "@babel/helper-validator-identifier": "^7.14.9",
@@ -12792,9 +12698,9 @@
12792 } 12698 }
12793 }, 12699 },
12794 "node_modules/eslint/node_modules/eslint-visitor-keys": { 12700 "node_modules/eslint/node_modules/eslint-visitor-keys": {
12795 "version": "3.0.0", 12701 "version": "3.1.0",
12796 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", 12702 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
12797 "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", 12703 "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
12798 "dev": true, 12704 "dev": true,
12799 "engines": { 12705 "engines": {
12800 "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 12706 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -12892,9 +12798,9 @@
12892 } 12798 }
12893 }, 12799 },
12894 "node_modules/espree/node_modules/eslint-visitor-keys": { 12800 "node_modules/espree/node_modules/eslint-visitor-keys": {
12895 "version": "3.0.0", 12801 "version": "3.1.0",
12896 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", 12802 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
12897 "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", 12803 "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
12898 "dev": true, 12804 "dev": true,
12899 "engines": { 12805 "engines": {
12900 "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 12806 "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -13369,6 +13275,15 @@
13369 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", 13275 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
13370 "dev": true 13276 "dev": true
13371 }, 13277 },
13278 "node_modules/express/node_modules/toidentifier": {
13279 "version": "1.0.0",
13280 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
13281 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
13282 "dev": true,
13283 "engines": {
13284 "node": ">=0.6"
13285 }
13286 },
13372 "node_modules/ext": { 13287 "node_modules/ext": {
13373 "version": "1.6.0", 13288 "version": "1.6.0",
13374 "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", 13289 "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
@@ -13498,9 +13413,10 @@
13498 "dev": true 13413 "dev": true
13499 }, 13414 },
13500 "node_modules/extsprintf": { 13415 "node_modules/extsprintf": {
13501 "version": "1.4.0", 13416 "version": "1.4.1",
13502 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", 13417 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz",
13503 "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=", 13418 "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==",
13419 "dev": true,
13504 "engines": [ 13420 "engines": [
13505 "node >=0.6.0" 13421 "node >=0.6.0"
13506 ], 13422 ],
@@ -13922,9 +13838,9 @@
13922 } 13838 }
13923 }, 13839 },
13924 "node_modules/flatted": { 13840 "node_modules/flatted": {
13925 "version": "3.2.2", 13841 "version": "3.2.4",
13926 "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", 13842 "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz",
13927 "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", 13843 "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==",
13928 "dev": true 13844 "dev": true
13929 }, 13845 },
13930 "node_modules/flush-write-stream": { 13846 "node_modules/flush-write-stream": {
@@ -13943,9 +13859,9 @@
13943 "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" 13859 "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
13944 }, 13860 },
13945 "node_modules/follow-redirects": { 13861 "node_modules/follow-redirects": {
13946 "version": "1.14.4", 13862 "version": "1.14.5",
13947 "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", 13863 "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz",
13948 "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", 13864 "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==",
13949 "dev": true, 13865 "dev": true,
13950 "funding": [ 13866 "funding": [
13951 { 13867 {
@@ -14160,25 +14076,6 @@
14160 "node": ">=0.6" 14076 "node": ">=0.6"
14161 } 14077 }
14162 }, 14078 },
14163 "node_modules/fstream/node_modules/glob": {
14164 "version": "7.2.0",
14165 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
14166 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
14167 "dependencies": {
14168 "fs.realpath": "^1.0.0",
14169 "inflight": "^1.0.4",
14170 "inherits": "2",
14171 "minimatch": "^3.0.4",
14172 "once": "^1.3.0",
14173 "path-is-absolute": "^1.0.0"
14174 },
14175 "engines": {
14176 "node": "*"
14177 },
14178 "funding": {
14179 "url": "https://github.com/sponsors/isaacs"
14180 }
14181 },
14182 "node_modules/fstream/node_modules/rimraf": { 14079 "node_modules/fstream/node_modules/rimraf": {
14183 "version": "2.7.1", 14080 "version": "2.7.1",
14184 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 14081 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -14368,19 +14265,22 @@
14368 } 14265 }
14369 }, 14266 },
14370 "node_modules/glob": { 14267 "node_modules/glob": {
14371 "version": "5.0.15", 14268 "version": "7.2.0",
14372 "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 14269 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
14373 "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", 14270 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
14374 "optional": true,
14375 "dependencies": { 14271 "dependencies": {
14272 "fs.realpath": "^1.0.0",
14376 "inflight": "^1.0.4", 14273 "inflight": "^1.0.4",
14377 "inherits": "2", 14274 "inherits": "2",
14378 "minimatch": "2 || 3", 14275 "minimatch": "^3.0.4",
14379 "once": "^1.3.0", 14276 "once": "^1.3.0",
14380 "path-is-absolute": "^1.0.0" 14277 "path-is-absolute": "^1.0.0"
14381 }, 14278 },
14382 "engines": { 14279 "engines": {
14383 "node": "*" 14280 "node": "*"
14281 },
14282 "funding": {
14283 "url": "https://github.com/sponsors/isaacs"
14384 } 14284 }
14385 }, 14285 },
14386 "node_modules/glob-parent": { 14286 "node_modules/glob-parent": {
@@ -14416,26 +14316,6 @@
14416 "node": ">= 0.10" 14316 "node": ">= 0.10"
14417 } 14317 }
14418 }, 14318 },
14419 "node_modules/glob-stream/node_modules/glob": {
14420 "version": "7.2.0",
14421 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
14422 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
14423 "dev": true,
14424 "dependencies": {
14425 "fs.realpath": "^1.0.0",
14426 "inflight": "^1.0.4",
14427 "inherits": "2",
14428 "minimatch": "^3.0.4",
14429 "once": "^1.3.0",
14430 "path-is-absolute": "^1.0.0"
14431 },
14432 "engines": {
14433 "node": "*"
14434 },
14435 "funding": {
14436 "url": "https://github.com/sponsors/isaacs"
14437 }
14438 },
14439 "node_modules/glob-stream/node_modules/glob-parent": { 14319 "node_modules/glob-stream/node_modules/glob-parent": {
14440 "version": "3.1.0", 14320 "version": "3.1.0",
14441 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 14321 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
@@ -15232,32 +15112,6 @@
15232 "node": ">=10" 15112 "node": ">=10"
15233 } 15113 }
15234 }, 15114 },
15235 "node_modules/gulp-terser/node_modules/source-map": {
15236 "version": "0.7.3",
15237 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
15238 "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
15239 "dev": true,
15240 "engines": {
15241 "node": ">= 8"
15242 }
15243 },
15244 "node_modules/gulp-terser/node_modules/terser": {
15245 "version": "5.9.0",
15246 "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz",
15247 "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==",
15248 "dev": true,
15249 "dependencies": {
15250 "commander": "^2.20.0",
15251 "source-map": "~0.7.2",
15252 "source-map-support": "~0.5.20"
15253 },
15254 "bin": {
15255 "terser": "bin/terser"
15256 },
15257 "engines": {
15258 "node": ">=10"
15259 }
15260 },
15261 "node_modules/gulp-typescript": { 15115 "node_modules/gulp-typescript": {
15262 "version": "6.0.0-alpha.1", 15116 "version": "6.0.0-alpha.1",
15263 "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-6.0.0-alpha.1.tgz", 15117 "resolved": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-6.0.0-alpha.1.tgz",
@@ -15778,6 +15632,38 @@
15778 "tslib": "^2.0.3" 15632 "tslib": "^2.0.3"
15779 } 15633 }
15780 }, 15634 },
15635 "node_modules/html-minifier-terser/node_modules/source-map": {
15636 "version": "0.6.1",
15637 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
15638 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
15639 "dev": true,
15640 "engines": {
15641 "node": ">=0.10.0"
15642 }
15643 },
15644 "node_modules/html-minifier-terser/node_modules/terser": {
15645 "version": "4.8.0",
15646 "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
15647 "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
15648 "dev": true,
15649 "dependencies": {
15650 "commander": "^2.20.0",
15651 "source-map": "~0.6.1",
15652 "source-map-support": "~0.5.12"
15653 },
15654 "bin": {
15655 "terser": "bin/terser"
15656 },
15657 "engines": {
15658 "node": ">=6.0.0"
15659 }
15660 },
15661 "node_modules/html-minifier-terser/node_modules/terser/node_modules/commander": {
15662 "version": "2.20.3",
15663 "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
15664 "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
15665 "dev": true
15666 },
15781 "node_modules/html-minifier/node_modules/commander": { 15667 "node_modules/html-minifier/node_modules/commander": {
15782 "version": "2.17.1", 15668 "version": "2.17.1",
15783 "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", 15669 "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
@@ -15870,15 +15756,15 @@
15870 "dev": true 15756 "dev": true
15871 }, 15757 },
15872 "node_modules/http-errors": { 15758 "node_modules/http-errors": {
15873 "version": "1.8.0", 15759 "version": "1.8.1",
15874 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", 15760 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
15875 "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", 15761 "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
15876 "dependencies": { 15762 "dependencies": {
15877 "depd": "~1.1.2", 15763 "depd": "~1.1.2",
15878 "inherits": "2.0.4", 15764 "inherits": "2.0.4",
15879 "setprototypeof": "1.2.0", 15765 "setprototypeof": "1.2.0",
15880 "statuses": ">= 1.5.0 < 2", 15766 "statuses": ">= 1.5.0 < 2",
15881 "toidentifier": "1.0.0" 15767 "toidentifier": "1.0.1"
15882 }, 15768 },
15883 "engines": { 15769 "engines": {
15884 "node": ">= 0.6" 15770 "node": ">= 0.6"
@@ -16067,16 +15953,16 @@
16067 "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" 15953 "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ=="
16068 }, 15954 },
16069 "node_modules/iconv-corefoundation": { 15955 "node_modules/iconv-corefoundation": {
16070 "version": "1.1.6", 15956 "version": "1.1.7",
16071 "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.6.tgz", 15957 "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz",
16072 "integrity": "sha512-1NBe55C75bKGZaY9UHxvXG3G0gEp0ziht7quhuFrW3SPgZDw9HI6qvYXRSV5M/Eupyu8ljuJ6Cba+ec15PZ4Xw==", 15958 "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==",
16073 "dev": true, 15959 "dev": true,
16074 "optional": true, 15960 "optional": true,
16075 "os": [ 15961 "os": [
16076 "darwin" 15962 "darwin"
16077 ], 15963 ],
16078 "dependencies": { 15964 "dependencies": {
16079 "cli-truncate": "^1.1.0", 15965 "cli-truncate": "^2.1.0",
16080 "node-addon-api": "^1.6.3" 15966 "node-addon-api": "^1.6.3"
16081 }, 15967 },
16082 "engines": { 15968 "engines": {
@@ -16128,9 +16014,9 @@
16128 "dev": true 16014 "dev": true
16129 }, 16015 },
16130 "node_modules/ignore": { 16016 "node_modules/ignore": {
16131 "version": "5.1.8", 16017 "version": "5.1.9",
16132 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", 16018 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz",
16133 "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", 16019 "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==",
16134 "dev": true, 16020 "dev": true,
16135 "engines": { 16021 "engines": {
16136 "node": ">= 4" 16022 "node": ">= 4"
@@ -16481,9 +16367,9 @@
16481 } 16367 }
16482 }, 16368 },
16483 "node_modules/intl-messageformat": { 16369 "node_modules/intl-messageformat": {
16484 "version": "9.9.4", 16370 "version": "9.9.6",
16485 "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.9.4.tgz", 16371 "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.9.6.tgz",
16486 "integrity": "sha512-+Mz5LMTV+JCybFBym69z+XnE47wnIjHC31Jz7We6SE0yKyjf/neaWAFz8teuT6OUw/AW3Orr5LO4SHVNXl5keg==", 16372 "integrity": "sha512-xgoBydnw9zGUtgCiUcxNTzrRLzAbBIgWyKvMjL2jFNCx7H0148GGQWNVOpoiON5SlcFr8lyMWdbb0m+HjydanQ==",
16487 "dependencies": { 16373 "dependencies": {
16488 "@formatjs/fast-memoize": "1.2.0", 16374 "@formatjs/fast-memoize": "1.2.0",
16489 "@formatjs/icu-messageformat-parser": "2.0.14", 16375 "@formatjs/icu-messageformat-parser": "2.0.14",
@@ -16749,11 +16635,6 @@
16749 "node": ">=4" 16635 "node": ">=4"
16750 } 16636 }
16751 }, 16637 },
16752 "node_modules/is-function": {
16753 "version": "1.0.2",
16754 "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz",
16755 "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
16756 },
16757 "node_modules/is-generator-fn": { 16638 "node_modules/is-generator-fn": {
16758 "version": "2.1.0", 16639 "version": "2.1.0",
16759 "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", 16640 "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
@@ -17706,26 +17587,6 @@
17706 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 17587 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
17707 "dev": true 17588 "dev": true
17708 }, 17589 },
17709 "node_modules/jest-config/node_modules/glob": {
17710 "version": "7.2.0",
17711 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
17712 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
17713 "dev": true,
17714 "dependencies": {
17715 "fs.realpath": "^1.0.0",
17716 "inflight": "^1.0.4",
17717 "inherits": "2",
17718 "minimatch": "^3.0.4",
17719 "once": "^1.3.0",
17720 "path-is-absolute": "^1.0.0"
17721 },
17722 "engines": {
17723 "node": "*"
17724 },
17725 "funding": {
17726 "url": "https://github.com/sponsors/isaacs"
17727 }
17728 },
17729 "node_modules/jest-config/node_modules/has-flag": { 17590 "node_modules/jest-config/node_modules/has-flag": {
17730 "version": "4.0.0", 17591 "version": "4.0.0",
17731 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 17592 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -18662,26 +18523,6 @@
18662 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 18523 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
18663 "dev": true 18524 "dev": true
18664 }, 18525 },
18665 "node_modules/jest-runtime/node_modules/glob": {
18666 "version": "7.2.0",
18667 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
18668 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
18669 "dev": true,
18670 "dependencies": {
18671 "fs.realpath": "^1.0.0",
18672 "inflight": "^1.0.4",
18673 "inherits": "2",
18674 "minimatch": "^3.0.4",
18675 "once": "^1.3.0",
18676 "path-is-absolute": "^1.0.0"
18677 },
18678 "engines": {
18679 "node": "*"
18680 },
18681 "funding": {
18682 "url": "https://github.com/sponsors/isaacs"
18683 }
18684 },
18685 "node_modules/jest-runtime/node_modules/has-flag": { 18526 "node_modules/jest-runtime/node_modules/has-flag": {
18686 "version": "4.0.0", 18527 "version": "4.0.0",
18687 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 18528 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -18982,9 +18823,9 @@
18982 } 18823 }
18983 }, 18824 },
18984 "node_modules/jest-validate/node_modules/camelcase": { 18825 "node_modules/jest-validate/node_modules/camelcase": {
18985 "version": "6.2.0", 18826 "version": "6.2.1",
18986 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", 18827 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz",
18987 "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", 18828 "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==",
18988 "dev": true, 18829 "dev": true,
18989 "engines": { 18830 "engines": {
18990 "node": ">=10" 18831 "node": ">=10"
@@ -19549,6 +19390,12 @@
19549 "verror": "1.10.0" 19390 "verror": "1.10.0"
19550 } 19391 }
19551 }, 19392 },
19393 "node_modules/jsprim/node_modules/core-util-is": {
19394 "version": "1.0.2",
19395 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
19396 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
19397 "optional": true
19398 },
19552 "node_modules/jsprim/node_modules/extsprintf": { 19399 "node_modules/jsprim/node_modules/extsprintf": {
19553 "version": "1.3.0", 19400 "version": "1.3.0",
19554 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 19401 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
@@ -19558,6 +19405,20 @@
19558 ], 19405 ],
19559 "optional": true 19406 "optional": true
19560 }, 19407 },
19408 "node_modules/jsprim/node_modules/verror": {
19409 "version": "1.10.0",
19410 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
19411 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
19412 "engines": [
19413 "node >=0.6.0"
19414 ],
19415 "optional": true,
19416 "dependencies": {
19417 "assert-plus": "^1.0.0",
19418 "core-util-is": "1.0.2",
19419 "extsprintf": "^1.2.0"
19420 }
19421 },
19561 "node_modules/jss": { 19422 "node_modules/jss": {
19562 "version": "10.8.2", 19423 "version": "10.8.2",
19563 "resolved": "https://registry.npmjs.org/jss/-/jss-10.8.2.tgz", 19424 "resolved": "https://registry.npmjs.org/jss/-/jss-10.8.2.tgz",
@@ -19573,122 +19434,141 @@
19573 "url": "https://opencollective.com/jss" 19434 "url": "https://opencollective.com/jss"
19574 } 19435 }
19575 }, 19436 },
19576 "node_modules/jss-camel-case": { 19437 "node_modules/jss-plugin-camel-case": {
19577 "version": "6.1.0", 19438 "version": "10.8.2",
19578 "resolved": "https://registry.npmjs.org/jss-camel-case/-/jss-camel-case-6.1.0.tgz", 19439 "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.8.2.tgz",
19579 "integrity": "sha512-HPF2Q7wmNW1t79mCqSeU2vdd/vFFGpkazwvfHMOhPlMgXrJDzdj9viA2SaHk9ZbD5pfL63a8ylp4++irYbbzMQ==", 19440 "integrity": "sha512-2INyxR+1UdNuKf4v9It3tNfPvf7IPrtkiwzofeKuMd5D58/dxDJVUQYRVg/n460rTlHUfsEQx43hDrcxi9dSPA==",
19580 "dependencies": { 19441 "dependencies": {
19581 "hyphenate-style-name": "^1.0.2" 19442 "@babel/runtime": "^7.3.1",
19582 }, 19443 "hyphenate-style-name": "^1.0.3",
19583 "peerDependencies": { 19444 "jss": "10.8.2"
19584 "jss": "^9.7.0"
19585 } 19445 }
19586 }, 19446 },
19587 "node_modules/jss-compose": { 19447 "node_modules/jss-plugin-compose": {
19588 "version": "5.0.0", 19448 "version": "10.8.2",
19589 "resolved": "https://registry.npmjs.org/jss-compose/-/jss-compose-5.0.0.tgz", 19449 "resolved": "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.8.2.tgz",
19590 "integrity": "sha512-YofRYuiA0+VbeOw0VjgkyO380sA4+TWDrW52nSluD9n+1FWOlDzNbgpZ/Sb3Y46+DcAbOS21W5jo6SAqUEiuwA==", 19450 "integrity": "sha512-X7fDQJ6IlIJoT8A3zc++LuC1hmSGKVudb3LyXp+vHv8r2hzzfXEEZty3y2CaC5CGrWcLlYquXENjqLNmLYMgMA==",
19591 "dependencies": { 19451 "dependencies": {
19592 "warning": "^3.0.0" 19452 "@babel/runtime": "^7.3.1",
19593 }, 19453 "jss": "10.8.2",
19594 "peerDependencies": { 19454 "tiny-warning": "^1.0.2"
19595 "jss": "^9.0.0"
19596 } 19455 }
19597 }, 19456 },
19598 "node_modules/jss-default-unit": { 19457 "node_modules/jss-plugin-default-unit": {
19599 "version": "8.0.2", 19458 "version": "10.8.2",
19600 "resolved": "https://registry.npmjs.org/jss-default-unit/-/jss-default-unit-8.0.2.tgz", 19459 "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.8.2.tgz",
19601 "integrity": "sha512-WxNHrF/18CdoAGw2H0FqOEvJdREXVXLazn7PQYU7V6/BWkCV0GkmWsppNiExdw8dP4TU1ma1dT9zBNJ95feLmg==", 19460 "integrity": "sha512-UZ7cwT9NFYSG+SEy7noRU50s4zifulFdjkUNKE+u6mW7vFP960+RglWjTgMfh79G6OENZmaYnjHV/gcKV4nSxg==",
19602 "peerDependencies": { 19461 "dependencies": {
19603 "jss": "^9.4.0" 19462 "@babel/runtime": "^7.3.1",
19463 "jss": "10.8.2"
19604 } 19464 }
19605 }, 19465 },
19606 "node_modules/jss-expand": { 19466 "node_modules/jss-plugin-expand": {
19607 "version": "5.3.0", 19467 "version": "10.8.2",
19608 "resolved": "https://registry.npmjs.org/jss-expand/-/jss-expand-5.3.0.tgz", 19468 "resolved": "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.8.2.tgz",
19609 "integrity": "sha512-NiM4TbDVE0ykXSAw6dfFmB1LIqXP/jdd0ZMnlvlGgEMkMt+weJIl8Ynq1DsuBY9WwkNyzWktdqcEW2VN0RAtQg==", 19469 "integrity": "sha512-Iy4qsZbEcomXz5aBZJYGwnzK23vK3hqlwGleqmd19fY3L+WbqTmUnW8W0fWeXSuCkw2NknBTAJuEpFcgm3b0Pw==",
19610 "peerDependencies": { 19470 "dependencies": {
19611 "jss": "^9.4.0" 19471 "@babel/runtime": "^7.3.1",
19472 "jss": "10.8.2"
19612 } 19473 }
19613 }, 19474 },
19614 "node_modules/jss-extend": { 19475 "node_modules/jss-plugin-extend": {
19615 "version": "6.2.0", 19476 "version": "10.8.2",
19616 "resolved": "https://registry.npmjs.org/jss-extend/-/jss-extend-6.2.0.tgz", 19477 "resolved": "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.8.2.tgz",
19617 "integrity": "sha512-YszrmcB6o9HOsKPszK7NeDBNNjVyiW864jfoiHoMlgMIg2qlxKw70axZHqgczXHDcoyi/0/ikP1XaHDPRvYtEA==", 19478 "integrity": "sha512-NYu0cJ/Zb50ySPkegzbXQQfhXza0VpaRVXdXDex30yXqZpGcAdmhSg4HTv8vzHiL1v3uIOm641FYQX9WvLgSWw==",
19618 "dependencies": { 19479 "dependencies": {
19619 "warning": "^3.0.0" 19480 "@babel/runtime": "^7.3.1",
19620 }, 19481 "jss": "10.8.2",
19621 "peerDependencies": { 19482 "tiny-warning": "^1.0.2"
19622 "jss": "^9.7.0"
19623 } 19483 }
19624 }, 19484 },
19625 "node_modules/jss-global": { 19485 "node_modules/jss-plugin-global": {
19626 "version": "3.0.0", 19486 "version": "10.8.2",
19627 "resolved": "https://registry.npmjs.org/jss-global/-/jss-global-3.0.0.tgz", 19487 "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.8.2.tgz",
19628 "integrity": "sha512-wxYn7vL+TImyQYGAfdplg7yaxnPQ9RaXY/cIA8hawaVnmmWxDHzBK32u1y+RAvWboa3lW83ya3nVZ/C+jyjZ5Q==", 19488 "integrity": "sha512-UaYMSPsYZ7s/ECGoj4KoHC2jwQd5iQ7K+FFGnCAILdQrv7hPmvM2Ydg45ThT/sH46DqktCRV2SqjRuxeBH8nRA==",
19629 "peerDependencies": { 19489 "dependencies": {
19630 "jss": "^9.0.0" 19490 "@babel/runtime": "^7.3.1",
19491 "jss": "10.8.2"
19631 } 19492 }
19632 }, 19493 },
19633 "node_modules/jss-nested": { 19494 "node_modules/jss-plugin-nested": {
19634 "version": "6.0.1", 19495 "version": "10.8.2",
19635 "resolved": "https://registry.npmjs.org/jss-nested/-/jss-nested-6.0.1.tgz", 19496 "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.8.2.tgz",
19636 "integrity": "sha512-rn964TralHOZxoyEgeq3hXY8hyuCElnvQoVrQwKHVmu55VRDd6IqExAx9be5HgK0yN/+hQdgAXQl/GUrBbbSTA==", 19497 "integrity": "sha512-acRvuPJOb930fuYmhkJaa994EADpt8TxI63Iyg96C8FJ9T2xRyU5T6R1IYKRwUiqZo+2Sr7fdGzRTDD4uBZaMA==",
19637 "dependencies": { 19498 "dependencies": {
19638 "warning": "^3.0.0" 19499 "@babel/runtime": "^7.3.1",
19639 }, 19500 "jss": "10.8.2",
19640 "peerDependencies": { 19501 "tiny-warning": "^1.0.2"
19641 "jss": "^9.0.0"
19642 } 19502 }
19643 }, 19503 },
19644 "node_modules/jss-preset-default": { 19504 "node_modules/jss-plugin-props-sort": {
19645 "version": "4.5.0", 19505 "version": "10.8.2",
19646 "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-4.5.0.tgz", 19506 "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.8.2.tgz",
19647 "integrity": "sha512-qZbpRVtHT7hBPpZEBPFfafZKWmq3tA/An5RNqywDsZQGrlinIF/mGD9lmj6jGqu8GrED2SMHZ3pPKLmjCZoiaQ==", 19507 "integrity": "sha512-wqdcjayKRWBZnNpLUrXvsWqh+5J5YToAQ+8HNBNw0kZxVvCDwzhK2Nx6AKs7p+5/MbAh2PLgNW5Ym/ysbVAuqQ==",
19648 "dependencies": { 19508 "dependencies": {
19649 "jss-camel-case": "^6.1.0", 19509 "@babel/runtime": "^7.3.1",
19650 "jss-compose": "^5.0.0", 19510 "jss": "10.8.2"
19651 "jss-default-unit": "^8.0.2",
19652 "jss-expand": "^5.3.0",
19653 "jss-extend": "^6.2.0",
19654 "jss-global": "^3.0.0",
19655 "jss-nested": "^6.0.1",
19656 "jss-props-sort": "^6.0.0",
19657 "jss-template": "^1.0.1",
19658 "jss-vendor-prefixer": "^7.0.0"
19659 },
19660 "peerDependencies": {
19661 "jss": "^9.7.0"
19662 } 19511 }
19663 }, 19512 },
19664 "node_modules/jss-props-sort": { 19513 "node_modules/jss-plugin-rule-value-function": {
19665 "version": "6.0.0", 19514 "version": "10.8.2",
19666 "resolved": "https://registry.npmjs.org/jss-props-sort/-/jss-props-sort-6.0.0.tgz", 19515 "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.8.2.tgz",
19667 "integrity": "sha512-E89UDcrphmI0LzmvYk25Hp4aE5ZBsXqMWlkFXS0EtPkunJkRr+WXdCNYbXbksIPnKlBenGB9OxzQY+mVc70S+g==", 19516 "integrity": "sha512-bW0EKAs+0HXpb6BKJhrn94IDdiWb0CnSluTkh0rGEgyzY/nmD1uV/Wf6KGlesGOZ9gmJzQy+9FFdxIUID1c9Ug==",
19668 "peerDependencies": { 19517 "dependencies": {
19669 "jss": "^9.0.0" 19518 "@babel/runtime": "^7.3.1",
19519 "jss": "10.8.2",
19520 "tiny-warning": "^1.0.2"
19670 } 19521 }
19671 }, 19522 },
19672 "node_modules/jss-template": { 19523 "node_modules/jss-plugin-rule-value-observable": {
19673 "version": "1.0.1", 19524 "version": "10.8.2",
19674 "resolved": "https://registry.npmjs.org/jss-template/-/jss-template-1.0.1.tgz", 19525 "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.8.2.tgz",
19675 "integrity": "sha512-m5BqEWha17fmIVXm1z8xbJhY6GFJxNB9H68GVnCWPyGYfxiAgY9WTQyvDAVj+pYRgrXSOfN5V1T4+SzN1sJTeg==", 19526 "integrity": "sha512-NaJCfsEg8/6l/E8HstwL2w8kHj2LHhwoG4fXxefmdvNKmJMwBpnjech5dEPL72It4bZfIIYoynWbyxo3Q0ZKQQ==",
19676 "dependencies": { 19527 "dependencies": {
19677 "warning": "^3.0.0" 19528 "@babel/runtime": "^7.3.1",
19678 }, 19529 "jss": "10.8.2",
19679 "peerDependencies": { 19530 "symbol-observable": "^1.2.0"
19680 "jss": "^9.0.0"
19681 } 19531 }
19682 }, 19532 },
19683 "node_modules/jss-vendor-prefixer": { 19533 "node_modules/jss-plugin-template": {
19684 "version": "7.0.0", 19534 "version": "10.8.2",
19685 "resolved": "https://registry.npmjs.org/jss-vendor-prefixer/-/jss-vendor-prefixer-7.0.0.tgz", 19535 "resolved": "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.8.2.tgz",
19686 "integrity": "sha512-Agd+FKmvsI0HLcYXkvy8GYOw3AAASBUpsmIRvVQheps+JWaN892uFOInTr0DRydwaD91vSSUCU4NssschvF7MA==", 19536 "integrity": "sha512-oTVwYRUCuCLslHxuH73F15kFmDxc4YEJIn8kHBnNpGr99ZbQdRIgPabosVTfkgE8czuyTx0KM5u8zEeuL+v66A==",
19687 "dependencies": { 19537 "dependencies": {
19688 "css-vendor": "^0.3.8" 19538 "@babel/runtime": "^7.3.1",
19689 }, 19539 "jss": "10.8.2",
19690 "peerDependencies": { 19540 "tiny-warning": "^1.0.2"
19691 "jss": "^9.0.0" 19541 }
19542 },
19543 "node_modules/jss-plugin-vendor-prefixer": {
19544 "version": "10.8.2",
19545 "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.8.2.tgz",
19546 "integrity": "sha512-DeGv18QsSiYLSVIEB2+l0af6OToUe0JB+trpzUxyqD2QRC/5AzzDrCrYffO5AHZ81QbffYvSN/pkfZaTWpRXlg==",
19547 "dependencies": {
19548 "@babel/runtime": "^7.3.1",
19549 "css-vendor": "^2.0.8",
19550 "jss": "10.8.2"
19551 }
19552 },
19553 "node_modules/jss-preset-default": {
19554 "version": "10.8.2",
19555 "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.8.2.tgz",
19556 "integrity": "sha512-mgkr6DAZuvkEleHFEpOkm8Y+sTdK/r0HH8PxToLHgaWHbYS0JAb0g1tBSUMG24kFj98VOYLTllK1o0J4lWU/uw==",
19557 "dependencies": {
19558 "@babel/runtime": "^7.3.1",
19559 "jss": "10.8.2",
19560 "jss-plugin-camel-case": "10.8.2",
19561 "jss-plugin-compose": "10.8.2",
19562 "jss-plugin-default-unit": "10.8.2",
19563 "jss-plugin-expand": "10.8.2",
19564 "jss-plugin-extend": "10.8.2",
19565 "jss-plugin-global": "10.8.2",
19566 "jss-plugin-nested": "10.8.2",
19567 "jss-plugin-props-sort": "10.8.2",
19568 "jss-plugin-rule-value-function": "10.8.2",
19569 "jss-plugin-rule-value-observable": "10.8.2",
19570 "jss-plugin-template": "10.8.2",
19571 "jss-plugin-vendor-prefixer": "10.8.2"
19692 } 19572 }
19693 }, 19573 },
19694 "node_modules/jsx-ast-utils": { 19574 "node_modules/jsx-ast-utils": {
@@ -20438,9 +20318,9 @@
20438 } 20318 }
20439 }, 20319 },
20440 "node_modules/loglevel": { 20320 "node_modules/loglevel": {
20441 "version": "1.7.1", 20321 "version": "1.8.0",
20442 "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", 20322 "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz",
20443 "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", 20323 "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==",
20444 "dev": true, 20324 "dev": true,
20445 "engines": { 20325 "engines": {
20446 "node": ">= 0.6.0" 20326 "node": ">= 0.6.0"
@@ -21012,9 +20892,9 @@
21012 "dev": true 20892 "dev": true
21013 }, 20893 },
21014 "node_modules/mime": { 20894 "node_modules/mime": {
21015 "version": "2.5.2", 20895 "version": "2.6.0",
21016 "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", 20896 "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
21017 "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", 20897 "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
21018 "dev": true, 20898 "dev": true,
21019 "bin": { 20899 "bin": {
21020 "mime": "cli.js" 20900 "mime": "cli.js"
@@ -21024,19 +20904,19 @@
21024 } 20904 }
21025 }, 20905 },
21026 "node_modules/mime-db": { 20906 "node_modules/mime-db": {
21027 "version": "1.50.0", 20907 "version": "1.51.0",
21028 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", 20908 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
21029 "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", 20909 "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==",
21030 "engines": { 20910 "engines": {
21031 "node": ">= 0.6" 20911 "node": ">= 0.6"
21032 } 20912 }
21033 }, 20913 },
21034 "node_modules/mime-types": { 20914 "node_modules/mime-types": {
21035 "version": "2.1.33", 20915 "version": "2.1.34",
21036 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", 20916 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
21037 "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", 20917 "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
21038 "dependencies": { 20918 "dependencies": {
21039 "mime-db": "1.50.0" 20919 "mime-db": "1.51.0"
21040 }, 20920 },
21041 "engines": { 20921 "engines": {
21042 "node": ">= 0.6" 20922 "node": ">= 0.6"
@@ -21326,32 +21206,48 @@
21326 } 21206 }
21327 }, 21207 },
21328 "node_modules/mobx-react": { 21208 "node_modules/mobx-react": {
21329 "version": "5.4.4", 21209 "version": "6.3.1",
21330 "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-5.4.4.tgz", 21210 "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-6.3.1.tgz",
21331 "integrity": "sha512-2mTzpyEjVB/RGk2i6KbcmP4HWcAUFox5ZRCrGvSyz49w20I4C4qql63grPpYrS9E9GKwgydBHQlA4y665LuRCQ==", 21211 "integrity": "sha512-IOxdJGnRSNSJrL2uGpWO5w9JH5q5HoxEqwOF4gye1gmZYdjoYkkMzSGMDnRCUpN/BNzZcFoMdHXrjvkwO7KgaQ==",
21332 "dependencies": { 21212 "dependencies": {
21333 "hoist-non-react-statics": "^3.0.0", 21213 "mobx-react-lite": "^2.2.0"
21334 "react-lifecycles-compat": "^3.0.2"
21335 }, 21214 },
21336 "peerDependencies": { 21215 "peerDependencies": {
21337 "mobx": "^4.0.0 || ^5.0.0", 21216 "mobx": "^5.15.4 || ^4.15.4",
21338 "react": "^0.13.0 || ^0.14.0 || ^15.0.0 || ^16.0.0" 21217 "react": "^16.8.0 || 16.9.0-alpha.0"
21339 } 21218 }
21340 }, 21219 },
21341 "node_modules/mobx-react-form": { 21220 "node_modules/mobx-react-form": {
21342 "version": "1.35.1", 21221 "version": "2.0.9",
21343 "resolved": "https://registry.npmjs.org/mobx-react-form/-/mobx-react-form-1.35.1.tgz", 21222 "resolved": "https://registry.npmjs.org/mobx-react-form/-/mobx-react-form-2.0.9.tgz",
21344 "integrity": "sha1-iSrsZykiThHCl4+4LmetxOgOOmo=", 21223 "integrity": "sha512-YLbtXVUF6BtifeVr6XWJ76dQWJs3T/+aPNI/DKvNs1Opcl4jNCzENahqlqNsNI+RgXZbP36zck//IGWBNZsr0A==",
21345 "dependencies": { 21224 "dependencies": {
21346 "lodash": "^4.16.2" 21225 "lodash": "^4.17.11"
21347 }, 21226 },
21348 "engines": { 21227 "engines": {
21349 "node": ">=6.0.0" 21228 "node": ">=8.0.0"
21350 }, 21229 },
21351 "peerDependencies": { 21230 "peerDependencies": {
21352 "mobx": "^2.5.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" 21231 "mobx": "^2.5.0 || ^3.0.0 || ^4.0.0 || ^5.0.0"
21353 } 21232 }
21354 }, 21233 },
21234 "node_modules/mobx-react-lite": {
21235 "version": "2.2.2",
21236 "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-2.2.2.tgz",
21237 "integrity": "sha512-2SlXALHIkyUPDsV4VTKVR9DW7K3Ksh1aaIv3NrNJygTbhXe2A9GrcKHZ2ovIiOp/BXilOcTYemfHHZubP431dg==",
21238 "peerDependencies": {
21239 "mobx": "^4.0.0 || ^5.0.0",
21240 "react": "^16.8.0"
21241 },
21242 "peerDependenciesMeta": {
21243 "react-dom": {
21244 "optional": true
21245 },
21246 "react-native": {
21247 "optional": true
21248 }
21249 }
21250 },
21355 "node_modules/mobx-react-router": { 21251 "node_modules/mobx-react-router": {
21356 "version": "3.1.2", 21252 "version": "3.1.2",
21357 "resolved": "https://registry.npmjs.org/mobx-react-router/-/mobx-react-router-3.1.2.tgz", 21253 "resolved": "https://registry.npmjs.org/mobx-react-router/-/mobx-react-router-3.1.2.tgz",
@@ -21705,26 +21601,6 @@
21705 "run-queue": "^1.0.3" 21601 "run-queue": "^1.0.3"
21706 } 21602 }
21707 }, 21603 },
21708 "node_modules/move-concurrently/node_modules/glob": {
21709 "version": "7.2.0",
21710 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
21711 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
21712 "dev": true,
21713 "dependencies": {
21714 "fs.realpath": "^1.0.0",
21715 "inflight": "^1.0.4",
21716 "inherits": "2",
21717 "minimatch": "^3.0.4",
21718 "once": "^1.3.0",
21719 "path-is-absolute": "^1.0.0"
21720 },
21721 "engines": {
21722 "node": "*"
21723 },
21724 "funding": {
21725 "url": "https://github.com/sponsors/isaacs"
21726 }
21727 },
21728 "node_modules/move-concurrently/node_modules/rimraf": { 21604 "node_modules/move-concurrently/node_modules/rimraf": {
21729 "version": "2.7.1", 21605 "version": "2.7.1",
21730 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 21606 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -21982,8 +21858,7 @@
21982 "node_modules/node-addon-api": { 21858 "node_modules/node-addon-api": {
21983 "version": "4.2.0", 21859 "version": "4.2.0",
21984 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.2.0.tgz", 21860 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.2.0.tgz",
21985 "integrity": "sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q==", 21861 "integrity": "sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q=="
21986 "optional": true
21987 }, 21862 },
21988 "node_modules/node-cookie": { 21863 "node_modules/node-cookie": {
21989 "version": "2.1.2", 21864 "version": "2.1.2",
@@ -22020,9 +21895,9 @@
22020 "integrity": "sha512-pFhMAqdN1avrFwtZs66HxYiVnbnH9wjXB4m8IKs5Z9+r7U5voqxT+EDbVkRfge+V7JnkOgKhN4HfKBn1o5g9Wg==" 21895 "integrity": "sha512-pFhMAqdN1avrFwtZs66HxYiVnbnH9wjXB4m8IKs5Z9+r7U5voqxT+EDbVkRfge+V7JnkOgKhN4HfKBn1o5g9Wg=="
22021 }, 21896 },
22022 "node_modules/node-fetch": { 21897 "node_modules/node-fetch": {
22023 "version": "2.6.5", 21898 "version": "2.6.6",
22024 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", 21899 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz",
22025 "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", 21900 "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==",
22026 "dependencies": { 21901 "dependencies": {
22027 "whatwg-url": "^5.0.0" 21902 "whatwg-url": "^5.0.0"
22028 }, 21903 },
@@ -22087,26 +21962,6 @@
22087 "node": ">= 10.12.0" 21962 "node": ">= 10.12.0"
22088 } 21963 }
22089 }, 21964 },
22090 "node_modules/node-gyp/node_modules/glob": {
22091 "version": "7.2.0",
22092 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
22093 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
22094 "dev": true,
22095 "dependencies": {
22096 "fs.realpath": "^1.0.0",
22097 "inflight": "^1.0.4",
22098 "inherits": "2",
22099 "minimatch": "^3.0.4",
22100 "once": "^1.3.0",
22101 "path-is-absolute": "^1.0.0"
22102 },
22103 "engines": {
22104 "node": "*"
22105 },
22106 "funding": {
22107 "url": "https://github.com/sponsors/isaacs"
22108 }
22109 },
22110 "node_modules/node-int64": { 21965 "node_modules/node-int64": {
22111 "version": "0.4.0", 21966 "version": "0.4.0",
22112 "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", 21967 "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -22163,19 +22018,23 @@
22163 }, 22018 },
22164 "node_modules/node-mac-permissions": { 22019 "node_modules/node-mac-permissions": {
22165 "version": "2.2.0", 22020 "version": "2.2.0",
22166 "resolved": "https://registry.npmjs.org/node-mac-permissions/-/node-mac-permissions-2.2.0.tgz", 22021 "resolved": "git+ssh://git@github.com/vraravam/node-mac-permissions.git#3cffec37379e6584627d831611a8ff12b57bbcdb",
22167 "integrity": "sha512-oLEZY46M47A/rcMacPEqo/5z6u7alXdMXhtE7xPDyMixZF35Grl9KGx3N2adE3//lEtGL6Tig98p+1gkonkwQg==", 22022 "integrity": "sha512-kl87EmBwDK4Rn/uI/WsjMvqpr8Ivk5ptNU/HYEie/5uBqQdW3jWCHnlL5guCbNprXtLM5a+ROT1TiFNMkIM+fQ==",
22168 "hasInstallScript": true, 22023 "hasInstallScript": true,
22024 "license": "MIT",
22169 "optional": true, 22025 "optional": true,
22026 "os": [
22027 "darwin"
22028 ],
22170 "dependencies": { 22029 "dependencies": {
22171 "bindings": "^1.5.0", 22030 "bindings": "^1.5.0",
22172 "node-addon-api": "^2.0.0" 22031 "node-addon-api": "^3.0.2"
22173 } 22032 }
22174 }, 22033 },
22175 "node_modules/node-mac-permissions/node_modules/node-addon-api": { 22034 "node_modules/node-mac-permissions/node_modules/node-addon-api": {
22176 "version": "2.0.2", 22035 "version": "3.2.1",
22177 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", 22036 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
22178 "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", 22037 "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
22179 "optional": true 22038 "optional": true
22180 }, 22039 },
22181 "node_modules/node-modules-regexp": { 22040 "node_modules/node-modules-regexp": {
@@ -22221,25 +22080,6 @@
22221 "minipass": "^2.6.0" 22080 "minipass": "^2.6.0"
22222 } 22081 }
22223 }, 22082 },
22224 "node_modules/node-pre-gyp/node_modules/glob": {
22225 "version": "7.2.0",
22226 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
22227 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
22228 "dependencies": {
22229 "fs.realpath": "^1.0.0",
22230 "inflight": "^1.0.4",
22231 "inherits": "2",
22232 "minimatch": "^3.0.4",
22233 "once": "^1.3.0",
22234 "path-is-absolute": "^1.0.0"
22235 },
22236 "engines": {
22237 "node": "*"
22238 },
22239 "funding": {
22240 "url": "https://github.com/sponsors/isaacs"
22241 }
22242 },
22243 "node_modules/node-pre-gyp/node_modules/minipass": { 22083 "node_modules/node-pre-gyp/node_modules/minipass": {
22244 "version": "2.9.0", 22084 "version": "2.9.0",
22245 "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", 22085 "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
@@ -24678,12 +24518,12 @@
24678 } 24518 }
24679 }, 24519 },
24680 "node_modules/raw-body": { 24520 "node_modules/raw-body": {
24681 "version": "2.4.1", 24521 "version": "2.4.2",
24682 "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", 24522 "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz",
24683 "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", 24523 "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==",
24684 "dependencies": { 24524 "dependencies": {
24685 "bytes": "3.1.0", 24525 "bytes": "3.1.1",
24686 "http-errors": "1.7.3", 24526 "http-errors": "1.8.1",
24687 "iconv-lite": "0.4.24", 24527 "iconv-lite": "0.4.24",
24688 "unpipe": "1.0.0" 24528 "unpipe": "1.0.0"
24689 }, 24529 },
@@ -24691,21 +24531,6 @@
24691 "node": ">= 0.8" 24531 "node": ">= 0.8"
24692 } 24532 }
24693 }, 24533 },
24694 "node_modules/raw-body/node_modules/http-errors": {
24695 "version": "1.7.3",
24696 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
24697 "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
24698 "dependencies": {
24699 "depd": "~1.1.2",
24700 "inherits": "2.0.4",
24701 "setprototypeof": "1.1.1",
24702 "statuses": ">= 1.5.0 < 2",
24703 "toidentifier": "1.0.0"
24704 },
24705 "engines": {
24706 "node": ">= 0.6"
24707 }
24708 },
24709 "node_modules/raw-body/node_modules/iconv-lite": { 24534 "node_modules/raw-body/node_modules/iconv-lite": {
24710 "version": "0.4.24", 24535 "version": "0.4.24",
24711 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 24536 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -24717,11 +24542,6 @@
24717 "node": ">=0.10.0" 24542 "node": ">=0.10.0"
24718 } 24543 }
24719 }, 24544 },
24720 "node_modules/raw-body/node_modules/setprototypeof": {
24721 "version": "1.1.1",
24722 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
24723 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
24724 },
24725 "node_modules/rc": { 24545 "node_modules/rc": {
24726 "version": "1.2.8", 24546 "version": "1.2.8",
24727 "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 24547 "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
@@ -24781,6 +24601,11 @@
24781 "react": "^16.3.0 || ^17.0.1" 24601 "react": "^16.3.0 || ^17.0.1"
24782 } 24602 }
24783 }, 24603 },
24604 "node_modules/react-display-name": {
24605 "version": "0.2.5",
24606 "resolved": "https://registry.npmjs.org/react-display-name/-/react-display-name-0.2.5.tgz",
24607 "integrity": "sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg=="
24608 },
24784 "node_modules/react-dom": { 24609 "node_modules/react-dom": {
24785 "version": "17.0.2", 24610 "version": "17.0.2",
24786 "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 24611 "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
@@ -24823,19 +24648,19 @@
24823 } 24648 }
24824 }, 24649 },
24825 "node_modules/react-intl": { 24650 "node_modules/react-intl": {
24826 "version": "5.21.0", 24651 "version": "5.21.2",
24827 "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.21.0.tgz", 24652 "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.21.2.tgz",
24828 "integrity": "sha512-tRXg0JrMFpHgOokj+gFXvEbm4ZEePnidfVWFh3fbYc2FlJGnwxLjsvzCvRVv2qyNMHCy8xX6frRGe52WDOiYOg==", 24653 "integrity": "sha512-pRKndhmjbFOq9CoJHHnUgXYf1tz9t3nIfInZg5TQ9EqYs9PPlkHBp4WtFDcFcW5UGV/QX4no6irpfXFsVKNWUA==",
24829 "dependencies": { 24654 "dependencies": {
24830 "@formatjs/ecma402-abstract": "1.10.0", 24655 "@formatjs/ecma402-abstract": "1.10.0",
24831 "@formatjs/icu-messageformat-parser": "2.0.14", 24656 "@formatjs/icu-messageformat-parser": "2.0.14",
24832 "@formatjs/intl": "1.15.0", 24657 "@formatjs/intl": "1.15.2",
24833 "@formatjs/intl-displaynames": "5.2.5", 24658 "@formatjs/intl-displaynames": "5.2.5",
24834 "@formatjs/intl-listformat": "6.3.5", 24659 "@formatjs/intl-listformat": "6.3.5",
24835 "@types/hoist-non-react-statics": "^3.3.1", 24660 "@types/hoist-non-react-statics": "^3.3.1",
24836 "@types/react": "16 || 17", 24661 "@types/react": "16 || 17",
24837 "hoist-non-react-statics": "^3.3.2", 24662 "hoist-non-react-statics": "^3.3.2",
24838 "intl-messageformat": "9.9.4", 24663 "intl-messageformat": "9.9.6",
24839 "tslib": "^2.1.0" 24664 "tslib": "^2.1.0"
24840 }, 24665 },
24841 "peerDependencies": { 24666 "peerDependencies": {
@@ -24854,40 +24679,24 @@
24854 "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 24679 "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
24855 }, 24680 },
24856 "node_modules/react-jss": { 24681 "node_modules/react-jss": {
24857 "version": "8.6.1", 24682 "version": "10.8.2",
24858 "resolved": "https://registry.npmjs.org/react-jss/-/react-jss-8.6.1.tgz", 24683 "resolved": "https://registry.npmjs.org/react-jss/-/react-jss-10.8.2.tgz",
24859 "integrity": "sha512-SH6XrJDJkAphp602J14JTy3puB2Zxz1FkM3bKVE8wON+va99jnUTKWnzGECb3NfIn9JPR5vHykge7K3/A747xQ==", 24684 "integrity": "sha512-/lLFIv1H6GA5RkvNb7TdXcJMBaSvSpfmSYsDisj4WI7MmqXUouoKfkZUJzG7CWq8xnIxik0WWYjFcGOvx0Sasw==",
24860 "dependencies": { 24685 "dependencies": {
24861 "hoist-non-react-statics": "^2.5.0", 24686 "@babel/runtime": "^7.3.1",
24862 "jss": "^9.7.0", 24687 "@emotion/is-prop-valid": "^0.7.3",
24863 "jss-preset-default": "^4.3.0", 24688 "css-jss": "10.8.2",
24689 "hoist-non-react-statics": "^3.2.0",
24690 "is-in-browser": "^1.1.3",
24691 "jss": "10.8.2",
24692 "jss-preset-default": "10.8.2",
24864 "prop-types": "^15.6.0", 24693 "prop-types": "^15.6.0",
24865 "theming": "^1.3.0" 24694 "shallow-equal": "^1.2.0",
24866 }, 24695 "theming": "^3.3.0",
24867 "engines": { 24696 "tiny-warning": "^1.0.2"
24868 "node": ">=4"
24869 }, 24697 },
24870 "peerDependencies": { 24698 "peerDependencies": {
24871 "react": ">=0.13" 24699 "react": ">=16.8.6"
24872 }
24873 },
24874 "node_modules/react-jss/node_modules/hoist-non-react-statics": {
24875 "version": "2.5.5",
24876 "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
24877 "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
24878 },
24879 "node_modules/react-jss/node_modules/jss": {
24880 "version": "9.8.7",
24881 "resolved": "https://registry.npmjs.org/jss/-/jss-9.8.7.tgz",
24882 "integrity": "sha512-awj3XRZYxbrmmrx9LUSj5pXSUfm12m8xzi/VKeqI1ZwWBtQ0kVPTs3vYs32t4rFw83CgFDukA8wKzOE9sMQnoQ==",
24883 "hasInstallScript": true,
24884 "dependencies": {
24885 "is-in-browser": "^1.1.3",
24886 "symbol-observable": "^1.1.0",
24887 "warning": "^3.0.0"
24888 },
24889 "engines": {
24890 "node": ">=4"
24891 } 24700 }
24892 }, 24701 },
24893 "node_modules/react-lifecycles-compat": { 24702 "node_modules/react-lifecycles-compat": {
@@ -24910,9 +24719,9 @@
24910 } 24719 }
24911 }, 24720 },
24912 "node_modules/react-modal": { 24721 "node_modules/react-modal": {
24913 "version": "3.14.3", 24722 "version": "3.14.4",
24914 "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.14.3.tgz", 24723 "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.14.4.tgz",
24915 "integrity": "sha512-+C2KODVKyu20zHXPJxfOOcf571L1u/EpFlH+oS/3YDn8rgVE51QZuxuuIwabJ8ZFnOEHaD+r6XNjqwtxZnXO0g==", 24724 "integrity": "sha512-8surmulejafYCH9wfUmFyj4UfbSJwjcgbS9gf3oOItu4Hwd6ivJyVBETI0yHRhpJKCLZMUtnhzk76wXTsNL6Qg==",
24916 "dependencies": { 24725 "dependencies": {
24917 "exenv": "^1.2.0", 24726 "exenv": "^1.2.0",
24918 "prop-types": "^15.7.2", 24727 "prop-types": "^15.7.2",
@@ -25963,26 +25772,6 @@
25963 "url": "https://github.com/sponsors/isaacs" 25772 "url": "https://github.com/sponsors/isaacs"
25964 } 25773 }
25965 }, 25774 },
25966 "node_modules/rimraf/node_modules/glob": {
25967 "version": "7.2.0",
25968 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
25969 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
25970 "devOptional": true,
25971 "dependencies": {
25972 "fs.realpath": "^1.0.0",
25973 "inflight": "^1.0.4",
25974 "inherits": "2",
25975 "minimatch": "^3.0.4",
25976 "once": "^1.3.0",
25977 "path-is-absolute": "^1.0.0"
25978 },
25979 "engines": {
25980 "node": "*"
25981 },
25982 "funding": {
25983 "url": "https://github.com/sponsors/isaacs"
25984 }
25985 },
25986 "node_modules/ripemd160": { 25775 "node_modules/ripemd160": {
25987 "version": "2.0.2", 25776 "version": "2.0.2",
25988 "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 25777 "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
@@ -26665,6 +26454,14 @@
26665 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 26454 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
26666 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 26455 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
26667 }, 26456 },
26457 "node_modules/serve-static/node_modules/toidentifier": {
26458 "version": "1.0.0",
26459 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
26460 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
26461 "engines": {
26462 "node": ">=0.6"
26463 }
26464 },
26668 "node_modules/set-blocking": { 26465 "node_modules/set-blocking": {
26669 "version": "2.0.0", 26466 "version": "2.0.0",
26670 "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 26467 "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -26731,6 +26528,11 @@
26731 "node": ">=8" 26528 "node": ">=8"
26732 } 26529 }
26733 }, 26530 },
26531 "node_modules/shallow-equal": {
26532 "version": "1.2.1",
26533 "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
26534 "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
26535 },
26734 "node_modules/shebang-command": { 26536 "node_modules/shebang-command": {
26735 "version": "2.0.0", 26537 "version": "2.0.0",
26736 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 26538 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -26764,9 +26566,9 @@
26764 } 26566 }
26765 }, 26567 },
26766 "node_modules/signal-exit": { 26568 "node_modules/signal-exit": {
26767 "version": "3.0.5", 26569 "version": "3.0.6",
26768 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", 26570 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz",
26769 "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" 26571 "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ=="
26770 }, 26572 },
26771 "node_modules/simple-encryptor": { 26573 "node_modules/simple-encryptor": {
26772 "version": "2.0.0", 26574 "version": "2.0.0",
@@ -26816,16 +26618,64 @@
26816 } 26618 }
26817 }, 26619 },
26818 "node_modules/slice-ansi": { 26620 "node_modules/slice-ansi": {
26819 "version": "1.0.0", 26621 "version": "3.0.0",
26820 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", 26622 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
26821 "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", 26623 "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
26822 "dev": true, 26624 "dev": true,
26823 "optional": true, 26625 "optional": true,
26824 "dependencies": { 26626 "dependencies": {
26825 "is-fullwidth-code-point": "^2.0.0" 26627 "ansi-styles": "^4.0.0",
26628 "astral-regex": "^2.0.0",
26629 "is-fullwidth-code-point": "^3.0.0"
26826 }, 26630 },
26827 "engines": { 26631 "engines": {
26828 "node": ">=4" 26632 "node": ">=8"
26633 }
26634 },
26635 "node_modules/slice-ansi/node_modules/ansi-styles": {
26636 "version": "4.3.0",
26637 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
26638 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
26639 "dev": true,
26640 "optional": true,
26641 "dependencies": {
26642 "color-convert": "^2.0.1"
26643 },
26644 "engines": {
26645 "node": ">=8"
26646 },
26647 "funding": {
26648 "url": "https://github.com/chalk/ansi-styles?sponsor=1"
26649 }
26650 },
26651 "node_modules/slice-ansi/node_modules/color-convert": {
26652 "version": "2.0.1",
26653 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
26654 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
26655 "dev": true,
26656 "optional": true,
26657 "dependencies": {
26658 "color-name": "~1.1.4"
26659 },
26660 "engines": {
26661 "node": ">=7.0.0"
26662 }
26663 },
26664 "node_modules/slice-ansi/node_modules/color-name": {
26665 "version": "1.1.4",
26666 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
26667 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
26668 "dev": true,
26669 "optional": true
26670 },
26671 "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
26672 "version": "3.0.0",
26673 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
26674 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
26675 "dev": true,
26676 "optional": true,
26677 "engines": {
26678 "node": ">=8"
26829 } 26679 }
26830 }, 26680 },
26831 "node_modules/smart-buffer": { 26681 "node_modules/smart-buffer": {
@@ -27134,9 +26984,9 @@
27134 } 26984 }
27135 }, 26985 },
27136 "node_modules/source-map-support": { 26986 "node_modules/source-map-support": {
27137 "version": "0.5.20", 26987 "version": "0.5.21",
27138 "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", 26988 "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
27139 "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", 26989 "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
27140 "dev": true, 26990 "dev": true,
27141 "dependencies": { 26991 "dependencies": {
27142 "buffer-from": "^1.0.0", 26992 "buffer-from": "^1.0.0",
@@ -27205,9 +27055,9 @@
27205 } 27055 }
27206 }, 27056 },
27207 "node_modules/spdx-license-ids": { 27057 "node_modules/spdx-license-ids": {
27208 "version": "3.0.10", 27058 "version": "3.0.11",
27209 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", 27059 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
27210 "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", 27060 "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
27211 "dev": true 27061 "dev": true
27212 }, 27062 },
27213 "node_modules/spdy": { 27063 "node_modules/spdy": {
@@ -27355,26 +27205,6 @@
27355 } 27205 }
27356 } 27206 }
27357 }, 27207 },
27358 "node_modules/sqlite3/node_modules/glob": {
27359 "version": "7.2.0",
27360 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
27361 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
27362 "optional": true,
27363 "dependencies": {
27364 "fs.realpath": "^1.0.0",
27365 "inflight": "^1.0.4",
27366 "inherits": "2",
27367 "minimatch": "^3.0.4",
27368 "once": "^1.3.0",
27369 "path-is-absolute": "^1.0.0"
27370 },
27371 "engines": {
27372 "node": "*"
27373 },
27374 "funding": {
27375 "url": "https://github.com/sponsors/isaacs"
27376 }
27377 },
27378 "node_modules/sqlite3/node_modules/node-addon-api": { 27208 "node_modules/sqlite3/node_modules/node-addon-api": {
27379 "version": "3.2.1", 27209 "version": "3.2.1",
27380 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", 27210 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
@@ -27802,7 +27632,6 @@
27802 "version": "6.0.1", 27632 "version": "6.0.1",
27803 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 27633 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
27804 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 27634 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
27805 "dev": true,
27806 "dependencies": { 27635 "dependencies": {
27807 "ansi-regex": "^5.0.1" 27636 "ansi-regex": "^5.0.1"
27808 }, 27637 },
@@ -28082,20 +27911,28 @@
28082 } 27911 }
28083 }, 27912 },
28084 "node_modules/terser": { 27913 "node_modules/terser": {
28085 "version": "4.8.0", 27914 "version": "5.10.0",
28086 "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", 27915 "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
28087 "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", 27916 "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
28088 "dev": true, 27917 "dev": true,
28089 "dependencies": { 27918 "dependencies": {
28090 "commander": "^2.20.0", 27919 "commander": "^2.20.0",
28091 "source-map": "~0.6.1", 27920 "source-map": "~0.7.2",
28092 "source-map-support": "~0.5.12" 27921 "source-map-support": "~0.5.20"
28093 }, 27922 },
28094 "bin": { 27923 "bin": {
28095 "terser": "bin/terser" 27924 "terser": "bin/terser"
28096 }, 27925 },
28097 "engines": { 27926 "engines": {
28098 "node": ">=6.0.0" 27927 "node": ">=10"
27928 },
27929 "peerDependencies": {
27930 "acorn": "^8.5.0"
27931 },
27932 "peerDependenciesMeta": {
27933 "acorn": {
27934 "optional": true
27935 }
28099 } 27936 }
28100 }, 27937 },
28101 "node_modules/terser-webpack-plugin": { 27938 "node_modules/terser-webpack-plugin": {
@@ -28150,26 +27987,6 @@
28150 "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 27987 "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
28151 "dev": true 27988 "dev": true
28152 }, 27989 },
28153 "node_modules/terser-webpack-plugin/node_modules/glob": {
28154 "version": "7.2.0",
28155 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
28156 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
28157 "dev": true,
28158 "dependencies": {
28159 "fs.realpath": "^1.0.0",
28160 "inflight": "^1.0.4",
28161 "inherits": "2",
28162 "minimatch": "^3.0.4",
28163 "once": "^1.3.0",
28164 "path-is-absolute": "^1.0.0"
28165 },
28166 "engines": {
28167 "node": "*"
28168 },
28169 "funding": {
28170 "url": "https://github.com/sponsors/isaacs"
28171 }
28172 },
28173 "node_modules/terser-webpack-plugin/node_modules/lru-cache": { 27990 "node_modules/terser-webpack-plugin/node_modules/lru-cache": {
28174 "version": "5.1.1", 27991 "version": "5.1.1",
28175 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 27992 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -28218,6 +28035,23 @@
28218 "figgy-pudding": "^3.5.1" 28035 "figgy-pudding": "^3.5.1"
28219 } 28036 }
28220 }, 28037 },
28038 "node_modules/terser-webpack-plugin/node_modules/terser": {
28039 "version": "4.8.0",
28040 "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
28041 "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
28042 "dev": true,
28043 "dependencies": {
28044 "commander": "^2.20.0",
28045 "source-map": "~0.6.1",
28046 "source-map-support": "~0.5.12"
28047 },
28048 "bin": {
28049 "terser": "bin/terser"
28050 },
28051 "engines": {
28052 "node": ">=6.0.0"
28053 }
28054 },
28221 "node_modules/terser-webpack-plugin/node_modules/y18n": { 28055 "node_modules/terser-webpack-plugin/node_modules/y18n": {
28222 "version": "4.0.3", 28056 "version": "4.0.3",
28223 "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", 28057 "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
@@ -28231,12 +28065,12 @@
28231 "dev": true 28065 "dev": true
28232 }, 28066 },
28233 "node_modules/terser/node_modules/source-map": { 28067 "node_modules/terser/node_modules/source-map": {
28234 "version": "0.6.1", 28068 "version": "0.7.3",
28235 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 28069 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
28236 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 28070 "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
28237 "dev": true, 28071 "dev": true,
28238 "engines": { 28072 "engines": {
28239 "node": ">=0.10.0" 28073 "node": ">= 8"
28240 } 28074 }
28241 }, 28075 },
28242 "node_modules/test-exclude": { 28076 "node_modules/test-exclude": {
@@ -28253,26 +28087,6 @@
28253 "node": ">=8" 28087 "node": ">=8"
28254 } 28088 }
28255 }, 28089 },
28256 "node_modules/test-exclude/node_modules/glob": {
28257 "version": "7.2.0",
28258 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
28259 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
28260 "dev": true,
28261 "dependencies": {
28262 "fs.realpath": "^1.0.0",
28263 "inflight": "^1.0.4",
28264 "inherits": "2",
28265 "minimatch": "^3.0.4",
28266 "once": "^1.3.0",
28267 "path-is-absolute": "^1.0.0"
28268 },
28269 "engines": {
28270 "node": "*"
28271 },
28272 "funding": {
28273 "url": "https://github.com/sponsors/isaacs"
28274 }
28275 },
28276 "node_modules/text-extensions": { 28090 "node_modules/text-extensions": {
28277 "version": "1.9.0", 28091 "version": "1.9.0",
28278 "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", 28092 "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
@@ -28294,17 +28108,20 @@
28294 "dev": true 28108 "dev": true
28295 }, 28109 },
28296 "node_modules/theming": { 28110 "node_modules/theming": {
28297 "version": "1.3.0", 28111 "version": "3.3.0",
28298 "resolved": "https://registry.npmjs.org/theming/-/theming-1.3.0.tgz", 28112 "resolved": "https://registry.npmjs.org/theming/-/theming-3.3.0.tgz",
28299 "integrity": "sha512-ya5Ef7XDGbTPBv5ENTwrwkPUexrlPeiAg/EI9kdlUAZhNlRbCdhMKRgjNX1IcmsmiPcqDQZE6BpSaH+cr31FKw==", 28113 "integrity": "sha512-u6l4qTJRDaWZsqa8JugaNt7Xd8PPl9+gonZaIe28vAhqgHMIG/DOyFPqiKN/gQLQYj05tHv+YQdNILL4zoiAVA==",
28300 "dependencies": { 28114 "dependencies": {
28301 "brcast": "^3.0.1", 28115 "hoist-non-react-statics": "^3.3.0",
28302 "is-function": "^1.0.1", 28116 "prop-types": "^15.5.8",
28303 "is-plain-object": "^2.0.1", 28117 "react-display-name": "^0.2.4",
28304 "prop-types": "^15.5.8" 28118 "tiny-warning": "^1.0.2"
28119 },
28120 "engines": {
28121 "node": ">=8"
28305 }, 28122 },
28306 "peerDependencies": { 28123 "peerDependencies": {
28307 "react": ">=0.15" 28124 "react": ">=16.3"
28308 } 28125 }
28309 }, 28126 },
28310 "node_modules/throat": { 28127 "node_modules/throat": {
@@ -28623,9 +28440,9 @@
28623 } 28440 }
28624 }, 28441 },
28625 "node_modules/toidentifier": { 28442 "node_modules/toidentifier": {
28626 "version": "1.0.0", 28443 "version": "1.0.1",
28627 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 28444 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
28628 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", 28445 "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
28629 "engines": { 28446 "engines": {
28630 "node": ">=0.6" 28447 "node": ">=0.6"
28631 } 28448 }
@@ -28922,9 +28739,9 @@
28922 } 28739 }
28923 }, 28740 },
28924 "node_modules/tsconfig-paths": { 28741 "node_modules/tsconfig-paths": {
28925 "version": "3.11.0", 28742 "version": "3.12.0",
28926 "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", 28743 "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz",
28927 "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", 28744 "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==",
28928 "dev": true, 28745 "dev": true,
28929 "dependencies": { 28746 "dependencies": {
28930 "@types/json5": "^0.0.29", 28747 "@types/json5": "^0.0.29",
@@ -29110,9 +28927,9 @@
29110 } 28927 }
29111 }, 28928 },
29112 "node_modules/typescript": { 28929 "node_modules/typescript": {
29113 "version": "4.2.4", 28930 "version": "4.5.2",
29114 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", 28931 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
29115 "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", 28932 "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==",
29116 "dev": true, 28933 "dev": true,
29117 "bin": { 28934 "bin": {
29118 "tsc": "bin/tsc", 28935 "tsc": "bin/tsc",
@@ -29123,9 +28940,9 @@
29123 } 28940 }
29124 }, 28941 },
29125 "node_modules/uglify-js": { 28942 "node_modules/uglify-js": {
29126 "version": "3.14.2", 28943 "version": "3.14.3",
29127 "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", 28944 "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz",
29128 "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==", 28945 "integrity": "sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==",
29129 "dev": true, 28946 "dev": true,
29130 "bin": { 28947 "bin": {
29131 "uglifyjs": "bin/uglifyjs" 28948 "uglifyjs": "bin/uglifyjs"
@@ -29171,8 +28988,7 @@
29171 "node_modules/underscore": { 28988 "node_modules/underscore": {
29172 "version": "1.13.1", 28989 "version": "1.13.1",
29173 "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", 28990 "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
29174 "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", 28991 "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g=="
29175 "optional": true
29176 }, 28992 },
29177 "node_modules/undertaker": { 28993 "node_modules/undertaker": {
29178 "version": "1.3.0", 28994 "version": "1.3.0",
@@ -29753,26 +29569,6 @@
29753 "node-gyp": "^7.1.2" 29569 "node-gyp": "^7.1.2"
29754 } 29570 }
29755 }, 29571 },
29756 "node_modules/usocket/node_modules/glob": {
29757 "version": "7.2.0",
29758 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
29759 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
29760 "optional": true,
29761 "dependencies": {
29762 "fs.realpath": "^1.0.0",
29763 "inflight": "^1.0.4",
29764 "inherits": "2",
29765 "minimatch": "^3.0.4",
29766 "once": "^1.3.0",
29767 "path-is-absolute": "^1.0.0"
29768 },
29769 "engines": {
29770 "node": "*"
29771 },
29772 "funding": {
29773 "url": "https://github.com/sponsors/isaacs"
29774 }
29775 },
29776 "node_modules/usocket/node_modules/node-gyp": { 29572 "node_modules/usocket/node_modules/node-gyp": {
29777 "version": "7.1.2", 29573 "version": "7.1.2",
29778 "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", 29574 "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
@@ -29907,9 +29703,9 @@
29907 } 29703 }
29908 }, 29704 },
29909 "node_modules/validator": { 29705 "node_modules/validator": {
29910 "version": "13.6.0", 29706 "version": "13.7.0",
29911 "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", 29707 "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
29912 "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==", 29708 "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==",
29913 "engines": { 29709 "engines": {
29914 "node": ">= 0.10" 29710 "node": ">= 0.10"
29915 } 29711 }
@@ -29932,23 +29728,25 @@
29932 } 29728 }
29933 }, 29729 },
29934 "node_modules/verror": { 29730 "node_modules/verror": {
29935 "version": "1.10.0", 29731 "version": "1.10.1",
29936 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 29732 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz",
29937 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 29733 "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==",
29938 "engines": [ 29734 "dev": true,
29939 "node >=0.6.0"
29940 ],
29941 "optional": true, 29735 "optional": true,
29942 "dependencies": { 29736 "dependencies": {
29943 "assert-plus": "^1.0.0", 29737 "assert-plus": "^1.0.0",
29944 "core-util-is": "1.0.2", 29738 "core-util-is": "1.0.2",
29945 "extsprintf": "^1.2.0" 29739 "extsprintf": "^1.2.0"
29740 },
29741 "engines": {
29742 "node": ">=0.6.0"
29946 } 29743 }
29947 }, 29744 },
29948 "node_modules/verror/node_modules/core-util-is": { 29745 "node_modules/verror/node_modules/core-util-is": {
29949 "version": "1.0.2", 29746 "version": "1.0.2",
29950 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 29747 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
29951 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 29748 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
29749 "dev": true,
29952 "optional": true 29750 "optional": true
29953 }, 29751 },
29954 "node_modules/vinyl": { 29752 "node_modules/vinyl": {
@@ -30820,12 +30618,12 @@
30820 } 30618 }
30821 }, 30619 },
30822 "node_modules/webpack-dev-server": { 30620 "node_modules/webpack-dev-server": {
30823 "version": "3.11.2", 30621 "version": "3.11.3",
30824 "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", 30622 "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
30825 "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", 30623 "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
30826 "dev": true, 30624 "dev": true,
30827 "dependencies": { 30625 "dependencies": {
30828 "ansi-html": "0.0.7", 30626 "ansi-html-community": "0.0.8",
30829 "bonjour": "^3.5.0", 30627 "bonjour": "^3.5.0",
30830 "chokidar": "^2.1.8", 30628 "chokidar": "^2.1.8",
30831 "compression": "^1.7.4", 30629 "compression": "^1.7.4",
@@ -31879,9 +31677,9 @@
31879 } 31677 }
31880 }, 31678 },
31881 "node_modules/yargs-unparser/node_modules/camelcase": { 31679 "node_modules/yargs-unparser/node_modules/camelcase": {
31882 "version": "6.2.0", 31680 "version": "6.2.1",
31883 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", 31681 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz",
31884 "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", 31682 "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==",
31885 "dev": true, 31683 "dev": true,
31886 "engines": { 31684 "engines": {
31887 "node": ">=10" 31685 "node": ">=10"
@@ -32289,26 +32087,26 @@
32289 } 32087 }
32290 }, 32088 },
32291 "@babel/compat-data": { 32089 "@babel/compat-data": {
32292 "version": "7.16.0", 32090 "version": "7.16.4",
32293 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.0.tgz", 32091 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz",
32294 "integrity": "sha512-DGjt2QZse5SGd9nfOSqO4WLJ8NN/oHkijbXbPrxuoJO3oIPJL3TciZs9FX+cOHNiY9E9l0opL8g7BmLe3T+9ew==", 32092 "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==",
32295 "dev": true 32093 "dev": true
32296 }, 32094 },
32297 "@babel/core": { 32095 "@babel/core": {
32298 "version": "7.15.8", 32096 "version": "7.16.0",
32299 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.8.tgz", 32097 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz",
32300 "integrity": "sha512-3UG9dsxvYBMYwRv+gS41WKHno4K60/9GPy1CJaH6xy3Elq8CTtvtjT5R5jmNhXfCYLX2mTw+7/aq5ak/gOE0og==", 32098 "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==",
32301 "dev": true, 32099 "dev": true,
32302 "requires": { 32100 "requires": {
32303 "@babel/code-frame": "^7.15.8", 32101 "@babel/code-frame": "^7.16.0",
32304 "@babel/generator": "^7.15.8", 32102 "@babel/generator": "^7.16.0",
32305 "@babel/helper-compilation-targets": "^7.15.4", 32103 "@babel/helper-compilation-targets": "^7.16.0",
32306 "@babel/helper-module-transforms": "^7.15.8", 32104 "@babel/helper-module-transforms": "^7.16.0",
32307 "@babel/helpers": "^7.15.4", 32105 "@babel/helpers": "^7.16.0",
32308 "@babel/parser": "^7.15.8", 32106 "@babel/parser": "^7.16.0",
32309 "@babel/template": "^7.15.4", 32107 "@babel/template": "^7.16.0",
32310 "@babel/traverse": "^7.15.4", 32108 "@babel/traverse": "^7.16.0",
32311 "@babel/types": "^7.15.6", 32109 "@babel/types": "^7.16.0",
32312 "convert-source-map": "^1.7.0", 32110 "convert-source-map": "^1.7.0",
32313 "debug": "^4.1.0", 32111 "debug": "^4.1.0",
32314 "gensync": "^1.0.0-beta.2", 32112 "gensync": "^1.0.0-beta.2",
@@ -32326,9 +32124,9 @@
32326 } 32124 }
32327 }, 32125 },
32328 "@babel/eslint-parser": { 32126 "@babel/eslint-parser": {
32329 "version": "7.16.0", 32127 "version": "7.16.3",
32330 "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.0.tgz", 32128 "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.16.3.tgz",
32331 "integrity": "sha512-c+AsYOHjI+FgCa+ifLd8sDXp4U4mjkfFgL9NdQWhuA731kAUJs0WdJIXET4A14EJAR9Jv9FFF/MzPWJfV9Oirw==", 32129 "integrity": "sha512-iB4ElZT0jAt7PKVaeVulOECdGe6UnmA/O0P9jlF5g5GBOwDVbna8AXhHRu4s27xQf6OkveyA8iTDv1jHdDejgQ==",
32332 "dev": true, 32130 "dev": true,
32333 "requires": { 32131 "requires": {
32334 "eslint-scope": "^5.1.1", 32132 "eslint-scope": "^5.1.1",
@@ -32375,14 +32173,14 @@
32375 } 32173 }
32376 }, 32174 },
32377 "@babel/helper-compilation-targets": { 32175 "@babel/helper-compilation-targets": {
32378 "version": "7.16.0", 32176 "version": "7.16.3",
32379 "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.0.tgz", 32177 "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz",
32380 "integrity": "sha512-S7iaOT1SYlqK0sQaCi21RX4+13hmdmnxIEAnQUB/eh7GeAnRjOUgTYpLkUOiRXzD+yog1JxP0qyAQZ7ZxVxLVg==", 32178 "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==",
32381 "dev": true, 32179 "dev": true,
32382 "requires": { 32180 "requires": {
32383 "@babel/compat-data": "^7.16.0", 32181 "@babel/compat-data": "^7.16.0",
32384 "@babel/helper-validator-option": "^7.14.5", 32182 "@babel/helper-validator-option": "^7.14.5",
32385 "browserslist": "^4.16.6", 32183 "browserslist": "^4.17.5",
32386 "semver": "^6.3.0" 32184 "semver": "^6.3.0"
32387 }, 32185 },
32388 "dependencies": { 32186 "dependencies": {
@@ -32419,9 +32217,9 @@
32419 } 32217 }
32420 }, 32218 },
32421 "@babel/helper-define-polyfill-provider": { 32219 "@babel/helper-define-polyfill-provider": {
32422 "version": "0.2.4", 32220 "version": "0.3.0",
32423 "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.4.tgz", 32221 "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz",
32424 "integrity": "sha512-OrpPZ97s+aPi6h2n1OXzdhVis1SGSsMU2aMHgLcOKfsp4/v1NWpx3CWT3lBj5eeBq9cDkPkh+YCfdF7O12uNDQ==", 32222 "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==",
32425 "dev": true, 32223 "dev": true,
32426 "requires": { 32224 "requires": {
32427 "@babel/helper-compilation-targets": "^7.13.0", 32225 "@babel/helper-compilation-targets": "^7.13.0",
@@ -32530,9 +32328,9 @@
32530 "dev": true 32328 "dev": true
32531 }, 32329 },
32532 "@babel/helper-remap-async-to-generator": { 32330 "@babel/helper-remap-async-to-generator": {
32533 "version": "7.16.0", 32331 "version": "7.16.4",
32534 "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.0.tgz", 32332 "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz",
32535 "integrity": "sha512-MLM1IOMe9aQBqMWxcRw8dcb9jlM86NIw7KA0Wri91Xkfied+dE0QuBFSBjMNvqzmS0OSIDsMNC24dBEkPUi7ew==", 32333 "integrity": "sha512-vGERmmhR+s7eH5Y/cp8PCVzj4XEjerq8jooMfxFdA5xVtAk9Sh4AQsrWgiErUEBjtGrBtOFKDUcWQFW4/dFwMA==",
32536 "dev": true, 32334 "dev": true,
32537 "requires": { 32335 "requires": {
32538 "@babel/helper-annotate-as-pure": "^7.16.0", 32336 "@babel/helper-annotate-as-pure": "^7.16.0",
@@ -32604,14 +32402,14 @@
32604 } 32402 }
32605 }, 32403 },
32606 "@babel/helpers": { 32404 "@babel/helpers": {
32607 "version": "7.15.4", 32405 "version": "7.16.3",
32608 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", 32406 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz",
32609 "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", 32407 "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==",
32610 "dev": true, 32408 "dev": true,
32611 "requires": { 32409 "requires": {
32612 "@babel/template": "^7.15.4", 32410 "@babel/template": "^7.16.0",
32613 "@babel/traverse": "^7.15.4", 32411 "@babel/traverse": "^7.16.3",
32614 "@babel/types": "^7.15.4" 32412 "@babel/types": "^7.16.0"
32615 } 32413 }
32616 }, 32414 },
32617 "@babel/highlight": { 32415 "@babel/highlight": {
@@ -32626,9 +32424,9 @@
32626 } 32424 }
32627 }, 32425 },
32628 "@babel/parser": { 32426 "@babel/parser": {
32629 "version": "7.16.2", 32427 "version": "7.16.4",
32630 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.2.tgz", 32428 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz",
32631 "integrity": "sha512-RUVpT0G2h6rOZwqLDTrKk7ksNv7YpAilTnYe1/Q+eDjxEceRMKVWbCsX7t8h6C1qCFi/1Y8WZjcEPBAFG27GPw==", 32429 "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==",
32632 "dev": true 32430 "dev": true
32633 }, 32431 },
32634 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { 32432 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
@@ -32652,13 +32450,13 @@
32652 } 32450 }
32653 }, 32451 },
32654 "@babel/plugin-proposal-async-generator-functions": { 32452 "@babel/plugin-proposal-async-generator-functions": {
32655 "version": "7.16.0", 32453 "version": "7.16.4",
32656 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.0.tgz", 32454 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.4.tgz",
32657 "integrity": "sha512-nyYmIo7ZqKsY6P4lnVmBlxp9B3a96CscbLotlsNuktMHahkDwoPYEjXrZHU0Tj844Z9f1IthVxQln57mhkcExw==", 32455 "integrity": "sha512-/CUekqaAaZCQHleSK/9HajvcD/zdnJiKRiuUFq8ITE+0HsPzquf53cpFiqAwl/UfmJbR6n5uGPQSPdrmKOvHHg==",
32658 "dev": true, 32456 "dev": true,
32659 "requires": { 32457 "requires": {
32660 "@babel/helper-plugin-utils": "^7.14.5", 32458 "@babel/helper-plugin-utils": "^7.14.5",
32661 "@babel/helper-remap-async-to-generator": "^7.16.0", 32459 "@babel/helper-remap-async-to-generator": "^7.16.4",
32662 "@babel/plugin-syntax-async-generators": "^7.8.4" 32460 "@babel/plugin-syntax-async-generators": "^7.8.4"
32663 } 32461 }
32664 }, 32462 },
@@ -32684,9 +32482,9 @@
32684 } 32482 }
32685 }, 32483 },
32686 "@babel/plugin-proposal-decorators": { 32484 "@babel/plugin-proposal-decorators": {
32687 "version": "7.16.0", 32485 "version": "7.16.4",
32688 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.0.tgz", 32486 "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.4.tgz",
32689 "integrity": "sha512-ttvhKuVnQwoNQrcTd1oe6o49ahaZ1kns1fsJKzTVOaS/FJDJoK4qzgVS68xzJhYUMgTnbXW6z/T6rlP3lL7tJw==", 32487 "integrity": "sha512-RESBNX16eNqnBeEVR5sCJpnW0mHiNLNNvGA8PrRuK/4ZJ4TO+6bHleRUuGQYDERVySOKtOhSya/C4MIhwAMAgg==",
32690 "dev": true, 32488 "dev": true,
32691 "requires": { 32489 "requires": {
32692 "@babel/helper-create-class-features-plugin": "^7.16.0", 32490 "@babel/helper-create-class-features-plugin": "^7.16.0",
@@ -32902,9 +32700,9 @@
32902 } 32700 }
32903 }, 32701 },
32904 "@babel/plugin-syntax-jsx": { 32702 "@babel/plugin-syntax-jsx": {
32905 "version": "7.14.5", 32703 "version": "7.16.0",
32906 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", 32704 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz",
32907 "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", 32705 "integrity": "sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg==",
32908 "dev": true, 32706 "dev": true,
32909 "requires": { 32707 "requires": {
32910 "@babel/helper-plugin-utils": "^7.14.5" 32708 "@babel/helper-plugin-utils": "^7.14.5"
@@ -32983,9 +32781,9 @@
32983 } 32781 }
32984 }, 32782 },
32985 "@babel/plugin-syntax-typescript": { 32783 "@babel/plugin-syntax-typescript": {
32986 "version": "7.14.5", 32784 "version": "7.16.0",
32987 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz", 32785 "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.0.tgz",
32988 "integrity": "sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q==", 32786 "integrity": "sha512-Xv6mEXqVdaqCBfJFyeab0fH2DnUoMsDmhamxsSi4j8nLd4Vtw213WMJr55xxqipC/YVWyPY3K0blJncPYji+dQ==",
32989 "dev": true, 32787 "dev": true,
32990 "requires": { 32788 "requires": {
32991 "@babel/helper-plugin-utils": "^7.14.5" 32789 "@babel/helper-plugin-utils": "^7.14.5"
@@ -33203,9 +33001,9 @@
33203 } 33001 }
33204 }, 33002 },
33205 "@babel/plugin-transform-parameters": { 33003 "@babel/plugin-transform-parameters": {
33206 "version": "7.16.0", 33004 "version": "7.16.3",
33207 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.0.tgz", 33005 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz",
33208 "integrity": "sha512-XgnQEm1CevKROPx+udOi/8f8TiGhrUWiHiaUCIp47tE0tpFDjzXNTZc9E5CmCwxNjXTWEVqvRfWZYOTFvMa/ZQ==", 33006 "integrity": "sha512-3MaDpJrOXT1MZ/WCmkOFo7EtmVVC8H4EUZVrHvFOsmwkk4lOjQj8rzv8JKUZV4YoQKeoIgk07GO+acPU9IMu/w==",
33209 "dev": true, 33007 "dev": true,
33210 "requires": { 33008 "requires": {
33211 "@babel/helper-plugin-utils": "^7.14.5" 33009 "@babel/helper-plugin-utils": "^7.14.5"
@@ -33221,43 +33019,43 @@
33221 } 33019 }
33222 }, 33020 },
33223 "@babel/plugin-transform-react-display-name": { 33021 "@babel/plugin-transform-react-display-name": {
33224 "version": "7.15.1", 33022 "version": "7.16.0",
33225 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz", 33023 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz",
33226 "integrity": "sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q==", 33024 "integrity": "sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg==",
33227 "dev": true, 33025 "dev": true,
33228 "requires": { 33026 "requires": {
33229 "@babel/helper-plugin-utils": "^7.14.5" 33027 "@babel/helper-plugin-utils": "^7.14.5"
33230 } 33028 }
33231 }, 33029 },
33232 "@babel/plugin-transform-react-jsx": { 33030 "@babel/plugin-transform-react-jsx": {
33233 "version": "7.14.9", 33031 "version": "7.16.0",
33234 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz", 33032 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz",
33235 "integrity": "sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==", 33033 "integrity": "sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw==",
33236 "dev": true, 33034 "dev": true,
33237 "requires": { 33035 "requires": {
33238 "@babel/helper-annotate-as-pure": "^7.14.5", 33036 "@babel/helper-annotate-as-pure": "^7.16.0",
33239 "@babel/helper-module-imports": "^7.14.5", 33037 "@babel/helper-module-imports": "^7.16.0",
33240 "@babel/helper-plugin-utils": "^7.14.5", 33038 "@babel/helper-plugin-utils": "^7.14.5",
33241 "@babel/plugin-syntax-jsx": "^7.14.5", 33039 "@babel/plugin-syntax-jsx": "^7.16.0",
33242 "@babel/types": "^7.14.9" 33040 "@babel/types": "^7.16.0"
33243 } 33041 }
33244 }, 33042 },
33245 "@babel/plugin-transform-react-jsx-development": { 33043 "@babel/plugin-transform-react-jsx-development": {
33246 "version": "7.14.5", 33044 "version": "7.16.0",
33247 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.14.5.tgz", 33045 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz",
33248 "integrity": "sha512-rdwG/9jC6QybWxVe2UVOa7q6cnTpw8JRRHOxntG/h6g/guAOe6AhtQHJuJh5FwmnXIT1bdm5vC2/5huV8ZOorQ==", 33046 "integrity": "sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw==",
33249 "dev": true, 33047 "dev": true,
33250 "requires": { 33048 "requires": {
33251 "@babel/plugin-transform-react-jsx": "^7.14.5" 33049 "@babel/plugin-transform-react-jsx": "^7.16.0"
33252 } 33050 }
33253 }, 33051 },
33254 "@babel/plugin-transform-react-pure-annotations": { 33052 "@babel/plugin-transform-react-pure-annotations": {
33255 "version": "7.14.5", 33053 "version": "7.16.0",
33256 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.14.5.tgz", 33054 "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz",
33257 "integrity": "sha512-3X4HpBJimNxW4rhUy/SONPyNQHp5YRr0HhJdT2OH1BRp0of7u3Dkirc7x9FRJMKMqTBI079VZ1hzv7Ouuz///g==", 33055 "integrity": "sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA==",
33258 "dev": true, 33056 "dev": true,
33259 "requires": { 33057 "requires": {
33260 "@babel/helper-annotate-as-pure": "^7.14.5", 33058 "@babel/helper-annotate-as-pure": "^7.16.0",
33261 "@babel/helper-plugin-utils": "^7.14.5" 33059 "@babel/helper-plugin-utils": "^7.14.5"
33262 } 33060 }
33263 }, 33061 },
@@ -33345,18 +33143,18 @@
33345 } 33143 }
33346 }, 33144 },
33347 "@babel/preset-env": { 33145 "@babel/preset-env": {
33348 "version": "7.16.0", 33146 "version": "7.16.4",
33349 "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.0.tgz", 33147 "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.4.tgz",
33350 "integrity": "sha512-cdTu/W0IrviamtnZiTfixPfIncr2M1VqRrkjzZWlr1B4TVYimCFK5jkyOdP4qw2MrlKHi+b3ORj6x8GoCew8Dg==", 33148 "integrity": "sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA==",
33351 "dev": true, 33149 "dev": true,
33352 "requires": { 33150 "requires": {
33353 "@babel/compat-data": "^7.16.0", 33151 "@babel/compat-data": "^7.16.4",
33354 "@babel/helper-compilation-targets": "^7.16.0", 33152 "@babel/helper-compilation-targets": "^7.16.3",
33355 "@babel/helper-plugin-utils": "^7.14.5", 33153 "@babel/helper-plugin-utils": "^7.14.5",
33356 "@babel/helper-validator-option": "^7.14.5", 33154 "@babel/helper-validator-option": "^7.14.5",
33357 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.0", 33155 "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2",
33358 "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", 33156 "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0",
33359 "@babel/plugin-proposal-async-generator-functions": "^7.16.0", 33157 "@babel/plugin-proposal-async-generator-functions": "^7.16.4",
33360 "@babel/plugin-proposal-class-properties": "^7.16.0", 33158 "@babel/plugin-proposal-class-properties": "^7.16.0",
33361 "@babel/plugin-proposal-class-static-block": "^7.16.0", 33159 "@babel/plugin-proposal-class-static-block": "^7.16.0",
33362 "@babel/plugin-proposal-dynamic-import": "^7.16.0", 33160 "@babel/plugin-proposal-dynamic-import": "^7.16.0",
@@ -33406,7 +33204,7 @@
33406 "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0", 33204 "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.0",
33407 "@babel/plugin-transform-new-target": "^7.16.0", 33205 "@babel/plugin-transform-new-target": "^7.16.0",
33408 "@babel/plugin-transform-object-super": "^7.16.0", 33206 "@babel/plugin-transform-object-super": "^7.16.0",
33409 "@babel/plugin-transform-parameters": "^7.16.0", 33207 "@babel/plugin-transform-parameters": "^7.16.3",
33410 "@babel/plugin-transform-property-literals": "^7.16.0", 33208 "@babel/plugin-transform-property-literals": "^7.16.0",
33411 "@babel/plugin-transform-regenerator": "^7.16.0", 33209 "@babel/plugin-transform-regenerator": "^7.16.0",
33412 "@babel/plugin-transform-reserved-words": "^7.16.0", 33210 "@babel/plugin-transform-reserved-words": "^7.16.0",
@@ -33419,10 +33217,10 @@
33419 "@babel/plugin-transform-unicode-regex": "^7.16.0", 33217 "@babel/plugin-transform-unicode-regex": "^7.16.0",
33420 "@babel/preset-modules": "^0.1.5", 33218 "@babel/preset-modules": "^0.1.5",
33421 "@babel/types": "^7.16.0", 33219 "@babel/types": "^7.16.0",
33422 "babel-plugin-polyfill-corejs2": "^0.2.3", 33220 "babel-plugin-polyfill-corejs2": "^0.3.0",
33423 "babel-plugin-polyfill-corejs3": "^0.3.0", 33221 "babel-plugin-polyfill-corejs3": "^0.4.0",
33424 "babel-plugin-polyfill-regenerator": "^0.2.3", 33222 "babel-plugin-polyfill-regenerator": "^0.3.0",
33425 "core-js-compat": "^3.19.0", 33223 "core-js-compat": "^3.19.1",
33426 "semver": "^6.3.0" 33224 "semver": "^6.3.0"
33427 }, 33225 },
33428 "dependencies": { 33226 "dependencies": {
@@ -33448,23 +33246,23 @@
33448 } 33246 }
33449 }, 33247 },
33450 "@babel/preset-react": { 33248 "@babel/preset-react": {
33451 "version": "7.14.5", 33249 "version": "7.16.0",
33452 "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.14.5.tgz", 33250 "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.0.tgz",
33453 "integrity": "sha512-XFxBkjyObLvBaAvkx1Ie95Iaq4S/GUEIrejyrntQ/VCMKUYvKLoyKxOBzJ2kjA3b6rC9/KL6KXfDC2GqvLiNqQ==", 33251 "integrity": "sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw==",
33454 "dev": true, 33252 "dev": true,
33455 "requires": { 33253 "requires": {
33456 "@babel/helper-plugin-utils": "^7.14.5", 33254 "@babel/helper-plugin-utils": "^7.14.5",
33457 "@babel/helper-validator-option": "^7.14.5", 33255 "@babel/helper-validator-option": "^7.14.5",
33458 "@babel/plugin-transform-react-display-name": "^7.14.5", 33256 "@babel/plugin-transform-react-display-name": "^7.16.0",
33459 "@babel/plugin-transform-react-jsx": "^7.14.5", 33257 "@babel/plugin-transform-react-jsx": "^7.16.0",
33460 "@babel/plugin-transform-react-jsx-development": "^7.14.5", 33258 "@babel/plugin-transform-react-jsx-development": "^7.16.0",
33461 "@babel/plugin-transform-react-pure-annotations": "^7.14.5" 33259 "@babel/plugin-transform-react-pure-annotations": "^7.16.0"
33462 } 33260 }
33463 }, 33261 },
33464 "@babel/register": { 33262 "@babel/register": {
33465 "version": "7.15.3", 33263 "version": "7.16.0",
33466 "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.15.3.tgz", 33264 "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.16.0.tgz",
33467 "integrity": "sha512-mj4IY1ZJkorClxKTImccn4T81+UKTo4Ux0+OFSV9hME1ooqS9UV+pJ6BjD0qXPK4T3XW/KNa79XByjeEMZz+fw==", 33265 "integrity": "sha512-lzl4yfs0zVXnooeLE0AAfYaT7F3SPA8yB2Bj4W1BiZwLbMS3MZH35ZvCWSRHvneUugwuM+Wsnrj7h0F7UmU3NQ==",
33468 "dev": true, 33266 "dev": true,
33469 "requires": { 33267 "requires": {
33470 "clone-deep": "^4.0.1", 33268 "clone-deep": "^4.0.1",
@@ -33475,20 +33273,20 @@
33475 } 33273 }
33476 }, 33274 },
33477 "@babel/runtime": { 33275 "@babel/runtime": {
33478 "version": "7.15.4", 33276 "version": "7.16.3",
33479 "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", 33277 "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.3.tgz",
33480 "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", 33278 "integrity": "sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ==",
33481 "requires": { 33279 "requires": {
33482 "regenerator-runtime": "^0.13.4" 33280 "regenerator-runtime": "^0.13.4"
33483 } 33281 }
33484 }, 33282 },
33485 "@babel/runtime-corejs3": { 33283 "@babel/runtime-corejs3": {
33486 "version": "7.15.4", 33284 "version": "7.16.3",
33487 "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.4.tgz", 33285 "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz",
33488 "integrity": "sha512-lWcAqKeB624/twtTc3w6w/2o9RqJPaNBhPGK6DKLSiwuVWC7WFkypWyNg+CpZoyJH0jVzv1uMtXZ/5/lQOLtCg==", 33286 "integrity": "sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ==",
33489 "dev": true, 33287 "dev": true,
33490 "requires": { 33288 "requires": {
33491 "core-js-pure": "^3.16.0", 33289 "core-js-pure": "^3.19.0",
33492 "regenerator-runtime": "^0.13.4" 33290 "regenerator-runtime": "^0.13.4"
33493 } 33291 }
33494 }, 33292 },
@@ -33504,9 +33302,9 @@
33504 } 33302 }
33505 }, 33303 },
33506 "@babel/traverse": { 33304 "@babel/traverse": {
33507 "version": "7.16.0", 33305 "version": "7.16.3",
33508 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.0.tgz", 33306 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz",
33509 "integrity": "sha512-qQ84jIs1aRQxaGaxSysII9TuDaguZ5yVrEuC0BN2vcPlalwfLovVmCjbFDPECPXcYM/wLvNFfp8uDOliLxIoUQ==", 33307 "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==",
33510 "dev": true, 33308 "dev": true,
33511 "requires": { 33309 "requires": {
33512 "@babel/code-frame": "^7.16.0", 33310 "@babel/code-frame": "^7.16.0",
@@ -33514,7 +33312,7 @@
33514 "@babel/helper-function-name": "^7.16.0", 33312 "@babel/helper-function-name": "^7.16.0",
33515 "@babel/helper-hoist-variables": "^7.16.0", 33313 "@babel/helper-hoist-variables": "^7.16.0",
33516 "@babel/helper-split-export-declaration": "^7.16.0", 33314 "@babel/helper-split-export-declaration": "^7.16.0",
33517 "@babel/parser": "^7.16.0", 33315 "@babel/parser": "^7.16.3",
33518 "@babel/types": "^7.16.0", 33316 "@babel/types": "^7.16.0",
33519 "debug": "^4.1.0", 33317 "debug": "^4.1.0",
33520 "globals": "^11.1.0" 33318 "globals": "^11.1.0"
@@ -33537,16 +33335,16 @@
33537 "dev": true 33335 "dev": true
33538 }, 33336 },
33539 "@commitlint/cli": { 33337 "@commitlint/cli": {
33540 "version": "14.1.0", 33338 "version": "15.0.0",
33541 "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-14.1.0.tgz", 33339 "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-15.0.0.tgz",
33542 "integrity": "sha512-Orq62jkl9qAGvjFqhehtAqjGY/duJ8hIRPPIHmGR2jIB96D4VTmazS3ZvqJz2Q9kKr61mLAk/171zm0FVzQCYA==", 33340 "integrity": "sha512-Y5xmDCweytqzo4N4lOI2YRiuX35xTjcs8n5hUceBH8eyK0YbwtgWX50BJOH2XbkwEmII9blNhlBog6AdQsqicg==",
33543 "dev": true, 33341 "dev": true,
33544 "requires": { 33342 "requires": {
33545 "@commitlint/format": "^14.1.0", 33343 "@commitlint/format": "^15.0.0",
33546 "@commitlint/lint": "^14.1.0", 33344 "@commitlint/lint": "^15.0.0",
33547 "@commitlint/load": "^14.1.0", 33345 "@commitlint/load": "^15.0.0",
33548 "@commitlint/read": "^14.0.0", 33346 "@commitlint/read": "^15.0.0",
33549 "@commitlint/types": "^14.0.0", 33347 "@commitlint/types": "^15.0.0",
33550 "lodash": "^4.17.19", 33348 "lodash": "^4.17.19",
33551 "resolve-from": "5.0.0", 33349 "resolve-from": "5.0.0",
33552 "resolve-global": "1.0.0", 33350 "resolve-global": "1.0.0",
@@ -33554,37 +33352,37 @@
33554 } 33352 }
33555 }, 33353 },
33556 "@commitlint/config-conventional": { 33354 "@commitlint/config-conventional": {
33557 "version": "14.1.0", 33355 "version": "15.0.0",
33558 "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-14.1.0.tgz", 33356 "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-15.0.0.tgz",
33559 "integrity": "sha512-JuhCqkEv8jyqmd54EpXPsQFpYc/8k7sfP1UziRdEvZSJUCLxz+8Pk4cNS0oF1BtjaWO7ITgXPlIZg47PyApGmg==", 33357 "integrity": "sha512-eZBRL8Lk3hMNHp1wUMYj0qrZQEsST1ai7KHR8J1IDD9aHgT7L2giciibuQ+Og7vxVhR5WtYDvh9xirXFVPaSkQ==",
33560 "dev": true, 33358 "dev": true,
33561 "requires": { 33359 "requires": {
33562 "conventional-changelog-conventionalcommits": "^4.3.1" 33360 "conventional-changelog-conventionalcommits": "^4.3.1"
33563 } 33361 }
33564 }, 33362 },
33565 "@commitlint/ensure": { 33363 "@commitlint/ensure": {
33566 "version": "14.1.0", 33364 "version": "15.0.0",
33567 "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-14.1.0.tgz", 33365 "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-15.0.0.tgz",
33568 "integrity": "sha512-xrYvFdqVepT3XA1BmSh88eKbvYKtLuQu98QLfgxVmwS99Kj3yW0sT3D7jGvNsynbIx2dhbXofDyubf/DKkpFrQ==", 33366 "integrity": "sha512-7DV4iNIald3vycwaWBNGk5FbonaNzOlU8nBe5m5AgU2dIeNKuXwLm+zzJzG27j0Ho56rgz//3F6RIvmsoxY9ZA==",
33569 "dev": true, 33367 "dev": true,
33570 "requires": { 33368 "requires": {
33571 "@commitlint/types": "^14.0.0", 33369 "@commitlint/types": "^15.0.0",
33572 "lodash": "^4.17.19" 33370 "lodash": "^4.17.19"
33573 } 33371 }
33574 }, 33372 },
33575 "@commitlint/execute-rule": { 33373 "@commitlint/execute-rule": {
33576 "version": "14.0.0", 33374 "version": "15.0.0",
33577 "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-14.0.0.tgz", 33375 "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-15.0.0.tgz",
33578 "integrity": "sha512-Hh/HLpCBDlrD3Rx2x2pDBx6CU+OtVqGXh7mbFpNihAVx6B0zyZqm/vv0cdwdhfGW5OEn1BhCqHf1ZOvL/DwdWA==", 33376 "integrity": "sha512-pyE4ApxjbWhb1TXz5vRiGwI2ssdMMgZbaaheZq1/7WC0xRnqnIhE1yUC1D2q20qPtvkZPstTYvMiRVtF+DvjUg==",
33579 "dev": true 33377 "dev": true
33580 }, 33378 },
33581 "@commitlint/format": { 33379 "@commitlint/format": {
33582 "version": "14.1.0", 33380 "version": "15.0.0",
33583 "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-14.1.0.tgz", 33381 "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-15.0.0.tgz",
33584 "integrity": "sha512-sF6engqqHjvxGctWRKjFs/HQeNowlpbVmmoP481b2UMQnVQnjjfXJvQsoLpaqFUvgc2sHM4L85F8BmAw+iHG1w==", 33382 "integrity": "sha512-bPhAfqwRhPk92WiuY0ktEJNpRRHSCd+Eg1MdhGyL9Bl3U25E5zvuInA+dNctnzZiOBSH/37ZaD0eOKCpQE6acg==",
33585 "dev": true, 33383 "dev": true,
33586 "requires": { 33384 "requires": {
33587 "@commitlint/types": "^14.0.0", 33385 "@commitlint/types": "^15.0.0",
33588 "chalk": "^4.0.0" 33386 "chalk": "^4.0.0"
33589 }, 33387 },
33590 "dependencies": { 33388 "dependencies": {
@@ -33640,36 +33438,36 @@
33640 } 33438 }
33641 }, 33439 },
33642 "@commitlint/is-ignored": { 33440 "@commitlint/is-ignored": {
33643 "version": "14.0.0", 33441 "version": "15.0.0",
33644 "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-14.0.0.tgz", 33442 "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-15.0.0.tgz",
33645 "integrity": "sha512-nJltYjXTa+mk+6SPe35nOZCCvt3Gh5mbDz008KQ4OPcn1GX1NG+pEgz1Kx3agDp/pc+JGnsrr5GV00gygIoloA==", 33443 "integrity": "sha512-edtnkf2QZ/7e/YCJDgn1WDw9wfF1WfOitW5YEoSOb4SxjJEb/oE87kxNPZ2j8mnDMuunspcMfGHeg6fRlwaEWg==",
33646 "dev": true, 33444 "dev": true,
33647 "requires": { 33445 "requires": {
33648 "@commitlint/types": "^14.0.0", 33446 "@commitlint/types": "^15.0.0",
33649 "semver": "7.3.5" 33447 "semver": "7.3.5"
33650 } 33448 }
33651 }, 33449 },
33652 "@commitlint/lint": { 33450 "@commitlint/lint": {
33653 "version": "14.1.0", 33451 "version": "15.0.0",
33654 "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-14.1.0.tgz", 33452 "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-15.0.0.tgz",
33655 "integrity": "sha512-CApGJEOtWU/CcuPD8HkOR1jdUYpjKutGPaeby9nSFzJhwl/UQOjxc4Nd+2g2ygsMi5l3N4j2sWQYEgccpFC3lA==", 33453 "integrity": "sha512-hUi2+Im/2dJ5FBvWnodypTkg+5haCgsDzB0fyMApWLUA1IucYUAqRCQCW5em1Mhk9Crw1pd5YzFNikhIclkqCw==",
33656 "dev": true, 33454 "dev": true,
33657 "requires": { 33455 "requires": {
33658 "@commitlint/is-ignored": "^14.0.0", 33456 "@commitlint/is-ignored": "^15.0.0",
33659 "@commitlint/parse": "^14.0.0", 33457 "@commitlint/parse": "^15.0.0",
33660 "@commitlint/rules": "^14.1.0", 33458 "@commitlint/rules": "^15.0.0",
33661 "@commitlint/types": "^14.0.0" 33459 "@commitlint/types": "^15.0.0"
33662 } 33460 }
33663 }, 33461 },
33664 "@commitlint/load": { 33462 "@commitlint/load": {
33665 "version": "14.1.0", 33463 "version": "15.0.0",
33666 "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-14.1.0.tgz", 33464 "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-15.0.0.tgz",
33667 "integrity": "sha512-p+HbgjhkqLsnxyjOUdEYHztHCp8n2oLVUJTmRPuP5FXLNevh6Gwmxf+NYC2J0sgD084aV2CFi3qu1W4yHWIknA==", 33465 "integrity": "sha512-Ak1YPeOhvxmY3ioe0o6m1yLGvUAYb4BdfGgShU8jiTCmU3Mnmms0Xh/kfQz8AybhezCC3AmVTyBLaBZxOHR8kg==",
33668 "dev": true, 33466 "dev": true,
33669 "requires": { 33467 "requires": {
33670 "@commitlint/execute-rule": "^14.0.0", 33468 "@commitlint/execute-rule": "^15.0.0",
33671 "@commitlint/resolve-extends": "^14.1.0", 33469 "@commitlint/resolve-extends": "^15.0.0",
33672 "@commitlint/types": "^14.0.0", 33470 "@commitlint/types": "^15.0.0",
33673 "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2", 33471 "@endemolshinegroup/cosmiconfig-typescript-loader": "^3.0.2",
33674 "chalk": "^4.0.0", 33472 "chalk": "^4.0.0",
33675 "cosmiconfig": "^7.0.0", 33473 "cosmiconfig": "^7.0.0",
@@ -33726,48 +33524,42 @@
33726 "requires": { 33524 "requires": {
33727 "has-flag": "^4.0.0" 33525 "has-flag": "^4.0.0"
33728 } 33526 }
33729 },
33730 "typescript": {
33731 "version": "4.4.4",
33732 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
33733 "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
33734 "dev": true
33735 } 33527 }
33736 } 33528 }
33737 }, 33529 },
33738 "@commitlint/message": { 33530 "@commitlint/message": {
33739 "version": "14.0.0", 33531 "version": "15.0.0",
33740 "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-14.0.0.tgz", 33532 "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-15.0.0.tgz",
33741 "integrity": "sha512-316Pum+bwDcZamOQw0DXSY17Dq9EjvL1zKdYIZqneu4lnXN6uFfi53Y/sP5crW6zlLdnuTHe1MnuewXPLHfH1Q==", 33533 "integrity": "sha512-L8euabzboKavPuDJsdIYAY2wx97LbiGEYsckMo6NmV8pOun50c8hQx6ouXFSAx4pp+mX9yUGmMiVqfrk2LKDJQ==",
33742 "dev": true 33534 "dev": true
33743 }, 33535 },
33744 "@commitlint/parse": { 33536 "@commitlint/parse": {
33745 "version": "14.0.0", 33537 "version": "15.0.0",
33746 "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-14.0.0.tgz", 33538 "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-15.0.0.tgz",
33747 "integrity": "sha512-49qkk0TcwdxJPZUX8MElEzMlRFIL/cg64P4pk8HotFEm2HYdbxxZp6v3cbVw5WOsnRA0frrs+NNoOcIT83ccMQ==", 33539 "integrity": "sha512-7fweM67tZfBNS7zw1KTuuT5K2u9nGytUJqFqT/1Ln3Na9cBCsoAqR47mfsNOTlRCgGwakm4xiQ7BpS2gN0OGuw==",
33748 "dev": true, 33540 "dev": true,
33749 "requires": { 33541 "requires": {
33750 "@commitlint/types": "^14.0.0", 33542 "@commitlint/types": "^15.0.0",
33751 "conventional-changelog-angular": "^5.0.11", 33543 "conventional-changelog-angular": "^5.0.11",
33752 "conventional-commits-parser": "^3.2.2" 33544 "conventional-commits-parser": "^3.2.2"
33753 } 33545 }
33754 }, 33546 },
33755 "@commitlint/read": { 33547 "@commitlint/read": {
33756 "version": "14.0.0", 33548 "version": "15.0.0",
33757 "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-14.0.0.tgz", 33549 "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-15.0.0.tgz",
33758 "integrity": "sha512-WXXcSLBqwXTqnEmB0lbU2TrayDJ2G3qI/lxy1ianVmpQol8p9BjodAA6bYxtYYHdQFVXUrIsclzFP/naWG+hlQ==", 33550 "integrity": "sha512-5yI1o2HKZFVe7RTjL7IhuhHMKar/MDNY34vEHqqz9gMI7BK/rdP8uVb4Di1efl2V0UPnwID0nPKWESjQ8Ti0gw==",
33759 "dev": true, 33551 "dev": true,
33760 "requires": { 33552 "requires": {
33761 "@commitlint/top-level": "^14.0.0", 33553 "@commitlint/top-level": "^15.0.0",
33762 "@commitlint/types": "^14.0.0", 33554 "@commitlint/types": "^15.0.0",
33763 "fs-extra": "^10.0.0", 33555 "fs-extra": "^10.0.0",
33764 "git-raw-commits": "^2.0.0" 33556 "git-raw-commits": "^2.0.0"
33765 } 33557 }
33766 }, 33558 },
33767 "@commitlint/resolve-extends": { 33559 "@commitlint/resolve-extends": {
33768 "version": "14.1.0", 33560 "version": "15.0.0",
33769 "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-14.1.0.tgz", 33561 "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-15.0.0.tgz",
33770 "integrity": "sha512-ko80k6QB6E6/OvGNWy4u7gzzWyluDT3VDNL2kfZaDywsnrYntUKyT4Do97gQ7orttITzj2GRtk3KWClVz4rUUQ==", 33562 "integrity": "sha512-7apfRJjgJsKja7lHsPfEFixKjA/fk/UeD3owkOw1174yYu4u8xBDLSeU3IinGPdMuF9m245eX8wo7vLUy+EBSg==",
33771 "dev": true, 33563 "dev": true,
33772 "requires": { 33564 "requires": {
33773 "import-fresh": "^3.0.0", 33565 "import-fresh": "^3.0.0",
@@ -33777,37 +33569,37 @@
33777 } 33569 }
33778 }, 33570 },
33779 "@commitlint/rules": { 33571 "@commitlint/rules": {
33780 "version": "14.1.0", 33572 "version": "15.0.0",
33781 "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-14.1.0.tgz", 33573 "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-15.0.0.tgz",
33782 "integrity": "sha512-6jmv414/1JzGzDI/DS+snAMhcL6roQKPdg0WB3kWTWN52EvWXBFm0HIMGt2H/FlRKxozwVXlQN60/1fNIl98xA==", 33574 "integrity": "sha512-SqXfp6QUlwBS+0IZm4FEA/NmmAwcFQIkG3B05BtemOVWXQdZ8j1vV6hDwvA9oMPCmUSrrGpHOtZK7HaHhng2yA==",
33783 "dev": true, 33575 "dev": true,
33784 "requires": { 33576 "requires": {
33785 "@commitlint/ensure": "^14.1.0", 33577 "@commitlint/ensure": "^15.0.0",
33786 "@commitlint/message": "^14.0.0", 33578 "@commitlint/message": "^15.0.0",
33787 "@commitlint/to-lines": "^14.0.0", 33579 "@commitlint/to-lines": "^15.0.0",
33788 "@commitlint/types": "^14.0.0", 33580 "@commitlint/types": "^15.0.0",
33789 "execa": "^5.0.0" 33581 "execa": "^5.0.0"
33790 } 33582 }
33791 }, 33583 },
33792 "@commitlint/to-lines": { 33584 "@commitlint/to-lines": {
33793 "version": "14.0.0", 33585 "version": "15.0.0",
33794 "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-14.0.0.tgz", 33586 "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-15.0.0.tgz",
33795 "integrity": "sha512-uIXk54oJDuYyLpI208s3+cGmJ323yvSJ9LB7yUDMWUeJi2LgRxE2EBZL995kLQdnoAsBBXcLq+VDyppg5bV/cg==", 33587 "integrity": "sha512-mY3MNA9ujPqVpiJjTYG9MDsYCobue5PJFO0MfcIzS1mCVvngH8ZFTPAh1fT5t+t1h876boS88+9WgqjRvbYItw==",
33796 "dev": true 33588 "dev": true
33797 }, 33589 },
33798 "@commitlint/top-level": { 33590 "@commitlint/top-level": {
33799 "version": "14.0.0", 33591 "version": "15.0.0",
33800 "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-14.0.0.tgz", 33592 "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-15.0.0.tgz",
33801 "integrity": "sha512-MZDKZfWfl9g4KozgWBGTCrI2cXkMHnBFlhwvEfrAu5G8wd5aL1f2uWEUMnBMjUikmhVj99i1pzge4XFWHQ29wQ==", 33593 "integrity": "sha512-7Gz3t7xcuuUw1d1Nou6YLaztzp2Em+qZ6YdCzrqYc+aquca3Vt0O696nuiBDU/oE+tls4Hx2CNpAbWhTgEwB5A==",
33802 "dev": true, 33594 "dev": true,
33803 "requires": { 33595 "requires": {
33804 "find-up": "^5.0.0" 33596 "find-up": "^5.0.0"
33805 } 33597 }
33806 }, 33598 },
33807 "@commitlint/types": { 33599 "@commitlint/types": {
33808 "version": "14.0.0", 33600 "version": "15.0.0",
33809 "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-14.0.0.tgz", 33601 "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-15.0.0.tgz",
33810 "integrity": "sha512-sIls1nP2uSbGL466edYlh8mn7O/WP4i3bcvP+2DMhkscRCSgaPhNRWDilhYVsHt2Vu1HTQ27uT0Bj5/Lt2+EcQ==", 33602 "integrity": "sha512-OMSLX+QJnyNoTwws54ULv9sOvuw9GdVezln76oyUd4YbMMJyaav62aSXDuCdWyL2sm9hTkSzyEi52PNaIj/vqw==",
33811 "dev": true, 33603 "dev": true,
33812 "requires": { 33604 "requires": {
33813 "chalk": "^4.0.0" 33605 "chalk": "^4.0.0"
@@ -33983,6 +33775,19 @@
33983 } 33775 }
33984 } 33776 }
33985 }, 33777 },
33778 "@emotion/is-prop-valid": {
33779 "version": "0.7.3",
33780 "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz",
33781 "integrity": "sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA==",
33782 "requires": {
33783 "@emotion/memoize": "0.7.1"
33784 }
33785 },
33786 "@emotion/memoize": {
33787 "version": "0.7.1",
33788 "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.1.tgz",
33789 "integrity": "sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg=="
33790 },
33986 "@endemolshinegroup/cosmiconfig-typescript-loader": { 33791 "@endemolshinegroup/cosmiconfig-typescript-loader": {
33987 "version": "3.0.2", 33792 "version": "3.0.2",
33988 "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz", 33793 "resolved": "https://registry.npmjs.org/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz",
@@ -34018,9 +33823,9 @@
34018 } 33823 }
34019 }, 33824 },
34020 "@eslint/eslintrc": { 33825 "@eslint/eslintrc": {
34021 "version": "1.0.3", 33826 "version": "1.0.4",
34022 "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.3.tgz", 33827 "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz",
34023 "integrity": "sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==", 33828 "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==",
34024 "dev": true, 33829 "dev": true,
34025 "requires": { 33830 "requires": {
34026 "ajv": "^6.12.4", 33831 "ajv": "^6.12.4",
@@ -34029,20 +33834,11 @@
34029 "globals": "^13.9.0", 33834 "globals": "^13.9.0",
34030 "ignore": "^4.0.6", 33835 "ignore": "^4.0.6",
34031 "import-fresh": "^3.2.1", 33836 "import-fresh": "^3.2.1",
34032 "js-yaml": "^3.13.1", 33837 "js-yaml": "^4.1.0",
34033 "minimatch": "^3.0.4", 33838 "minimatch": "^3.0.4",
34034 "strip-json-comments": "^3.1.1" 33839 "strip-json-comments": "^3.1.1"
34035 }, 33840 },
34036 "dependencies": { 33841 "dependencies": {
34037 "argparse": {
34038 "version": "1.0.10",
34039 "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
34040 "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
34041 "dev": true,
34042 "requires": {
34043 "sprintf-js": "~1.0.2"
34044 }
34045 },
34046 "globals": { 33842 "globals": {
34047 "version": "13.12.0", 33843 "version": "13.12.0",
34048 "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz", 33844 "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
@@ -34058,22 +33854,6 @@
34058 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 33854 "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
34059 "dev": true 33855 "dev": true
34060 }, 33856 },
34061 "js-yaml": {
34062 "version": "3.14.1",
34063 "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
34064 "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
34065 "dev": true,
34066 "requires": {
34067 "argparse": "^1.0.7",
34068 "esprima": "^4.0.0"
34069 }
34070 },
34071 "sprintf-js": {
34072 "version": "1.0.3",
34073 "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
34074 "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
34075 "dev": true
34076 },
34077 "strip-json-comments": { 33857 "strip-json-comments": {
34078 "version": "3.1.1", 33858 "version": "3.1.1",
34079 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 33859 "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -34113,9 +33893,9 @@
34113 }, 33893 },
34114 "dependencies": { 33894 "dependencies": {
34115 "@types/node": { 33895 "@types/node": {
34116 "version": "14.17.32", 33896 "version": "14.17.34",
34117 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.32.tgz", 33897 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.34.tgz",
34118 "integrity": "sha512-JcII3D5/OapPGx+eJ+Ik1SQGyt6WvuqdRfh9jUwL6/iHGjmyOriBDciBUu7lEIBTL2ijxwrR70WUnw5AEDmFvQ==", 33898 "integrity": "sha512-USUftMYpmuMzeWobskoPfzDi+vkpe0dvcOBRNOscFrGxVp4jomnRxWuVohgqBow2xyIPC0S3gjxV/5079jhmDg==",
34119 "dev": true 33899 "dev": true
34120 }, 33900 },
34121 "ansi-styles": { 33901 "ansi-styles": {
@@ -34172,12 +33952,6 @@
34172 "requires": { 33952 "requires": {
34173 "has-flag": "^4.0.0" 33953 "has-flag": "^4.0.0"
34174 } 33954 }
34175 },
34176 "typescript": {
34177 "version": "4.4.4",
34178 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
34179 "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
34180 "dev": true
34181 } 33955 }
34182 } 33956 }
34183 }, 33957 },
@@ -34218,16 +33992,16 @@
34218 } 33992 }
34219 }, 33993 },
34220 "@formatjs/intl": { 33994 "@formatjs/intl": {
34221 "version": "1.15.0", 33995 "version": "1.15.2",
34222 "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-1.15.0.tgz", 33996 "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-1.15.2.tgz",
34223 "integrity": "sha512-8apTN/j7+pF02U1pUbsORgvWHjVEXH6eXj1y1iw/bbPoVWqfTsUSj/u9hL9MMoLI04RnOQiuK2nIh0cKeOnh1Q==", 33997 "integrity": "sha512-QYk0lUSrYprn2Lyui6iDhmHnSiXFTqKAMiveYOJPYQtcaWRwkCbcB0SALTZDc2kITrYxiP4/AS7ESF/0+SYSLQ==",
34224 "requires": { 33998 "requires": {
34225 "@formatjs/ecma402-abstract": "1.10.0", 33999 "@formatjs/ecma402-abstract": "1.10.0",
34226 "@formatjs/fast-memoize": "1.2.0", 34000 "@formatjs/fast-memoize": "1.2.0",
34227 "@formatjs/icu-messageformat-parser": "2.0.14", 34001 "@formatjs/icu-messageformat-parser": "2.0.14",
34228 "@formatjs/intl-displaynames": "5.2.5", 34002 "@formatjs/intl-displaynames": "5.2.5",
34229 "@formatjs/intl-listformat": "6.3.5", 34003 "@formatjs/intl-listformat": "6.3.5",
34230 "intl-messageformat": "9.9.4", 34004 "intl-messageformat": "9.9.6",
34231 "tslib": "^2.1.0" 34005 "tslib": "^2.1.0"
34232 } 34006 }
34233 }, 34007 },
@@ -34320,12 +34094,6 @@
34320 "requires": { 34094 "requires": {
34321 "has-flag": "^4.0.0" 34095 "has-flag": "^4.0.0"
34322 } 34096 }
34323 },
34324 "typescript": {
34325 "version": "4.4.4",
34326 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
34327 "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==",
34328 "dev": true
34329 } 34097 }
34330 } 34098 }
34331 }, 34099 },
@@ -34362,9 +34130,9 @@
34362 } 34130 }
34363 }, 34131 },
34364 "@humanwhocodes/object-schema": { 34132 "@humanwhocodes/object-schema": {
34365 "version": "1.2.0", 34133 "version": "1.2.1",
34366 "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", 34134 "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
34367 "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", 34135 "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
34368 "dev": true 34136 "dev": true
34369 }, 34137 },
34370 "@istanbuljs/load-nyc-config": { 34138 "@istanbuljs/load-nyc-config": {
@@ -34706,20 +34474,6 @@
34706 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 34474 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
34707 "dev": true 34475 "dev": true
34708 }, 34476 },
34709 "glob": {
34710 "version": "7.2.0",
34711 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
34712 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
34713 "dev": true,
34714 "requires": {
34715 "fs.realpath": "^1.0.0",
34716 "inflight": "^1.0.4",
34717 "inherits": "2",
34718 "minimatch": "^3.0.4",
34719 "once": "^1.3.0",
34720 "path-is-absolute": "^1.0.0"
34721 }
34722 },
34723 "has-flag": { 34477 "has-flag": {
34724 "version": "4.0.0", 34478 "version": "4.0.0",
34725 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 34479 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -35000,9 +34754,9 @@
35000 } 34754 }
35001 }, 34755 },
35002 "@mdi/js": { 34756 "@mdi/js": {
35003 "version": "6.4.95", 34757 "version": "6.5.95",
35004 "resolved": "https://registry.npmjs.org/@mdi/js/-/js-6.4.95.tgz", 34758 "resolved": "https://registry.npmjs.org/@mdi/js/-/js-6.5.95.tgz",
35005 "integrity": "sha512-b1/P//1D2KOzta8YRGyoSLGsAlWyUHfxzVBhV4e/ppnjM4DfBgay/vWz7Eg5Ee80JZ4zsQz8h54X+KOahtBk5Q==" 34759 "integrity": "sha512-x/bwEoAGP+Mo10Dfk5audNIPi7Yz8ZBrILcbXLW3ShOI/njpgodzpgpC2WYK3D2ZSC392peRRemIFb/JsyzzYQ=="
35006 }, 34760 },
35007 "@mdi/react": { 34761 "@mdi/react": {
35008 "version": "1.5.0", 34762 "version": "1.5.0",
@@ -35305,9 +35059,9 @@
35305 } 35059 }
35306 }, 35060 },
35307 "@sinonjs/fake-timers": { 35061 "@sinonjs/fake-timers": {
35308 "version": "8.0.1", 35062 "version": "8.1.0",
35309 "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz", 35063 "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz",
35310 "integrity": "sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew==", 35064 "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==",
35311 "dev": true, 35065 "dev": true,
35312 "requires": { 35066 "requires": {
35313 "@sinonjs/commons": "^1.7.0" 35067 "@sinonjs/commons": "^1.7.0"
@@ -35561,9 +35315,9 @@
35561 "dev": true 35315 "dev": true
35562 }, 35316 },
35563 "@types/lodash": { 35317 "@types/lodash": {
35564 "version": "4.14.176", 35318 "version": "4.14.177",
35565 "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz", 35319 "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.177.tgz",
35566 "integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==", 35320 "integrity": "sha512-0fDwydE2clKe9MNfvXHBHF9WEahRuj+msTuQqOmAApNORFvhMYZKNGGJdCzuhheVjMps/ti0Ak/iJPACMaevvw==",
35567 "dev": true 35321 "dev": true
35568 }, 35322 },
35569 "@types/mime-types": { 35323 "@types/mime-types": {
@@ -35606,9 +35360,9 @@
35606 "dev": true 35360 "dev": true
35607 }, 35361 },
35608 "@types/node": { 35362 "@types/node": {
35609 "version": "16.11.6", 35363 "version": "16.11.9",
35610 "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", 35364 "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.9.tgz",
35611 "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", 35365 "integrity": "sha512-MKmdASMf3LtPzwLyRrFjtFFZ48cMf8jmX5VRYrDQiJa8Ybu5VAmkqBWqKU8fdCwD8ysw4mQ9nrEHvzg6gunR7A==",
35612 "dev": true 35366 "dev": true
35613 }, 35367 },
35614 "@types/normalize-package-data": { 35368 "@types/normalize-package-data": {
@@ -35635,9 +35389,9 @@
35635 } 35389 }
35636 }, 35390 },
35637 "@types/prettier": { 35391 "@types/prettier": {
35638 "version": "2.4.1", 35392 "version": "2.4.2",
35639 "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz", 35393 "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz",
35640 "integrity": "sha512-Fo79ojj3vdEZOHg3wR9ksAMRz4P3S5fDB5e/YWZiFnyFQI1WY2Vftu9XoXVVtJfxB7Bpce/QTqWSSntkz2Znrw==", 35394 "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==",
35641 "dev": true 35395 "dev": true
35642 }, 35396 },
35643 "@types/prop-types": { 35397 "@types/prop-types": {
@@ -35646,9 +35400,9 @@
35646 "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" 35400 "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ=="
35647 }, 35401 },
35648 "@types/react": { 35402 "@types/react": {
35649 "version": "17.0.33", 35403 "version": "17.0.35",
35650 "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.33.tgz", 35404 "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.35.tgz",
35651 "integrity": "sha512-pLWntxXpDPaU+RTAuSGWGSEL2FRTNyRQOjSWDke/rxRg14ncsZvx8AKWMWZqvc1UOaJIAoObdZhAWvRaHFi5rw==", 35405 "integrity": "sha512-r3C8/TJuri/SLZiiwwxQoLAoavaczARfT9up9b4Jr65+ErAUX3MIkU0oMOQnrpfgHme8zIqZLX7O5nnjm5Wayw==",
35652 "requires": { 35406 "requires": {
35653 "@types/prop-types": "*", 35407 "@types/prop-types": "*",
35654 "@types/scheduler": "*", 35408 "@types/scheduler": "*",
@@ -35656,9 +35410,9 @@
35656 } 35410 }
35657 }, 35411 },
35658 "@types/react-dom": { 35412 "@types/react-dom": {
35659 "version": "17.0.10", 35413 "version": "17.0.11",
35660 "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.10.tgz", 35414 "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.11.tgz",
35661 "integrity": "sha512-8oz3NAUId2z/zQdFI09IMhQPNgIbiP8Lslhv39DIDamr846/0spjZK0vnrMak0iB8EKb9QFTTIdg2Wj2zH5a3g==", 35415 "integrity": "sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q==",
35662 "dev": true, 35416 "dev": true,
35663 "requires": { 35417 "requires": {
35664 "@types/react": "*" 35418 "@types/react": "*"
@@ -35704,9 +35458,9 @@
35704 "dev": true 35458 "dev": true
35705 }, 35459 },
35706 "@types/tar": { 35460 "@types/tar": {
35707 "version": "6.1.0", 35461 "version": "6.1.1",
35708 "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.0.tgz", 35462 "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.1.tgz",
35709 "integrity": "sha512-uTZKMW7ZkdTJXX4+Bsp0ko9N7B5/NJ5wJRW14XTb6KNN+9i2NPel6iPKp8rTQahMW46BM9tM52dTeMSldB55og==", 35463 "integrity": "sha512-8mto3YZfVpqB1CHMaYz1TUYIQfZFbh/QbEq5Hsn6D0ilCfqRVCdalmc89B7vi3jhl9UYIk+dWDABShNfOkv5HA==",
35710 "dev": true, 35464 "dev": true,
35711 "requires": { 35465 "requires": {
35712 "@types/minipass": "*", 35466 "@types/minipass": "*",
@@ -35731,15 +35485,15 @@
35731 } 35485 }
35732 }, 35486 },
35733 "@types/uuid": { 35487 "@types/uuid": {
35734 "version": "8.3.1", 35488 "version": "8.3.3",
35735 "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", 35489 "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.3.tgz",
35736 "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==", 35490 "integrity": "sha512-0LbEEx1zxrYB3pgpd1M5lEhLcXjKJnYghvhTRgaBeUivLHMDM1TzF3IJ6hXU2+8uA4Xz+5BA63mtZo5DjVT8iA==",
35737 "dev": true 35491 "dev": true
35738 }, 35492 },
35739 "@types/validator": { 35493 "@types/validator": {
35740 "version": "13.6.6", 35494 "version": "13.7.0",
35741 "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.6.6.tgz", 35495 "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.7.0.tgz",
35742 "integrity": "sha512-+qogUELb4gMhrMjSh/seKmGVvN+uQLfyqJAqYRWqVHsvBsUO2xDBCL8CJ/ZSukbd8vXaoYbpIssAmfLEzzBHEw==", 35496 "integrity": "sha512-+jBxVvXVuggZOrm04NR8z+5+bgoW4VZyLzUO+hmPPW1mVFL/HaitLAkizfv4yg9TbG8lkfHWVMQ11yDqrVVCzA==",
35743 "dev": true 35497 "dev": true
35744 }, 35498 },
35745 "@types/verror": { 35499 "@types/verror": {
@@ -35750,9 +35504,9 @@
35750 "optional": true 35504 "optional": true
35751 }, 35505 },
35752 "@types/webpack": { 35506 "@types/webpack": {
35753 "version": "4.41.31", 35507 "version": "4.41.32",
35754 "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.31.tgz", 35508 "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.32.tgz",
35755 "integrity": "sha512-/i0J7sepXFIp1ZT7FjUGi1eXMCg8HCCzLJEQkKsOtbJFontsJLolBcDC+3qxn5pPwiCt1G0ZdRmYRzNBtvpuGQ==", 35509 "integrity": "sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg==",
35756 "dev": true, 35510 "dev": true,
35757 "requires": { 35511 "requires": {
35758 "@types/node": "*", 35512 "@types/node": "*",
@@ -35801,9 +35555,9 @@
35801 } 35555 }
35802 }, 35556 },
35803 "@types/yargs": { 35557 "@types/yargs": {
35804 "version": "17.0.4", 35558 "version": "17.0.7",
35805 "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.4.tgz", 35559 "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.7.tgz",
35806 "integrity": "sha512-D/wihO9WFYqwsmJI0e0qS+U09wIQtYRSBJlXWjTFGjouEuOCy0BU4N/ZK5utb00S5lW/9LO7vOpvGDd8M06NvQ==", 35560 "integrity": "sha512-OvLKmpKdea1aWtqHv9bxVVcMoT6syAeK+198dfETIFkAevYRGwqh4H+KFxfjUETZuUuE5sQCAFwdOdoHUdo8eg==",
35807 "dev": true, 35561 "dev": true,
35808 "requires": { 35562 "requires": {
35809 "@types/yargs-parser": "*" 35563 "@types/yargs-parser": "*"
@@ -35816,13 +35570,13 @@
35816 "dev": true 35570 "dev": true
35817 }, 35571 },
35818 "@typescript-eslint/eslint-plugin": { 35572 "@typescript-eslint/eslint-plugin": {
35819 "version": "5.2.0", 35573 "version": "5.4.0",
35820 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.2.0.tgz", 35574 "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.4.0.tgz",
35821 "integrity": "sha512-qQwg7sqYkBF4CIQSyRQyqsYvP+g/J0To9ZPVNJpfxfekl5RmdvQnFFTVVwpRtaUDFNvjfe/34TgY/dpc3MgNTw==", 35575 "integrity": "sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg==",
35822 "dev": true, 35576 "dev": true,
35823 "requires": { 35577 "requires": {
35824 "@typescript-eslint/experimental-utils": "5.2.0", 35578 "@typescript-eslint/experimental-utils": "5.4.0",
35825 "@typescript-eslint/scope-manager": "5.2.0", 35579 "@typescript-eslint/scope-manager": "5.4.0",
35826 "debug": "^4.3.2", 35580 "debug": "^4.3.2",
35827 "functional-red-black-tree": "^1.0.1", 35581 "functional-red-black-tree": "^1.0.1",
35828 "ignore": "^5.1.8", 35582 "ignore": "^5.1.8",
@@ -35832,55 +35586,55 @@
35832 } 35586 }
35833 }, 35587 },
35834 "@typescript-eslint/experimental-utils": { 35588 "@typescript-eslint/experimental-utils": {
35835 "version": "5.2.0", 35589 "version": "5.4.0",
35836 "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.2.0.tgz", 35590 "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.4.0.tgz",
35837 "integrity": "sha512-fWyT3Agf7n7HuZZRpvUYdFYbPk3iDCq6fgu3ulia4c7yxmPnwVBovdSOX7RL+k8u6hLbrXcdAehlWUVpGh6IEw==", 35591 "integrity": "sha512-Nz2JDIQUdmIGd6p33A+naQmwfkU5KVTLb/5lTk+tLVTDacZKoGQisj8UCxk7onJcrgjIvr8xWqkYI+DbI3TfXg==",
35838 "dev": true, 35592 "dev": true,
35839 "requires": { 35593 "requires": {
35840 "@types/json-schema": "^7.0.9", 35594 "@types/json-schema": "^7.0.9",
35841 "@typescript-eslint/scope-manager": "5.2.0", 35595 "@typescript-eslint/scope-manager": "5.4.0",
35842 "@typescript-eslint/types": "5.2.0", 35596 "@typescript-eslint/types": "5.4.0",
35843 "@typescript-eslint/typescript-estree": "5.2.0", 35597 "@typescript-eslint/typescript-estree": "5.4.0",
35844 "eslint-scope": "^5.1.1", 35598 "eslint-scope": "^5.1.1",
35845 "eslint-utils": "^3.0.0" 35599 "eslint-utils": "^3.0.0"
35846 } 35600 }
35847 }, 35601 },
35848 "@typescript-eslint/parser": { 35602 "@typescript-eslint/parser": {
35849 "version": "5.2.0", 35603 "version": "5.4.0",
35850 "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.2.0.tgz", 35604 "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.4.0.tgz",
35851 "integrity": "sha512-Uyy4TjJBlh3NuA8/4yIQptyJb95Qz5PX//6p8n7zG0QnN4o3NF9Je3JHbVU7fxf5ncSXTmnvMtd/LDQWDk0YqA==", 35605 "integrity": "sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==",
35852 "dev": true, 35606 "dev": true,
35853 "requires": { 35607 "requires": {
35854 "@typescript-eslint/scope-manager": "5.2.0", 35608 "@typescript-eslint/scope-manager": "5.4.0",
35855 "@typescript-eslint/types": "5.2.0", 35609 "@typescript-eslint/types": "5.4.0",
35856 "@typescript-eslint/typescript-estree": "5.2.0", 35610 "@typescript-eslint/typescript-estree": "5.4.0",
35857 "debug": "^4.3.2" 35611 "debug": "^4.3.2"
35858 } 35612 }
35859 }, 35613 },
35860 "@typescript-eslint/scope-manager": { 35614 "@typescript-eslint/scope-manager": {
35861 "version": "5.2.0", 35615 "version": "5.4.0",
35862 "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.2.0.tgz", 35616 "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz",
35863 "integrity": "sha512-RW+wowZqPzQw8MUFltfKYZfKXqA2qgyi6oi/31J1zfXJRpOn6tCaZtd9b5u9ubnDG2n/EMvQLeZrsLNPpaUiFQ==", 35617 "integrity": "sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==",
35864 "dev": true, 35618 "dev": true,
35865 "requires": { 35619 "requires": {
35866 "@typescript-eslint/types": "5.2.0", 35620 "@typescript-eslint/types": "5.4.0",
35867 "@typescript-eslint/visitor-keys": "5.2.0" 35621 "@typescript-eslint/visitor-keys": "5.4.0"
35868 } 35622 }
35869 }, 35623 },
35870 "@typescript-eslint/types": { 35624 "@typescript-eslint/types": {
35871 "version": "5.2.0", 35625 "version": "5.4.0",
35872 "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.2.0.tgz", 35626 "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.4.0.tgz",
35873 "integrity": "sha512-cTk6x08qqosps6sPyP2j7NxyFPlCNsJwSDasqPNjEQ8JMD5xxj2NHxcLin5AJQ8pAVwpQ8BMI3bTxR0zxmK9qQ==", 35627 "integrity": "sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==",
35874 "dev": true 35628 "dev": true
35875 }, 35629 },
35876 "@typescript-eslint/typescript-estree": { 35630 "@typescript-eslint/typescript-estree": {
35877 "version": "5.2.0", 35631 "version": "5.4.0",
35878 "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.2.0.tgz", 35632 "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz",
35879 "integrity": "sha512-RsdXq2XmVgKbm9nLsE3mjNUM7BTr/K4DYR9WfFVMUuozHWtH5gMpiNZmtrMG8GR385EOSQ3kC9HiEMJWimxd/g==", 35633 "integrity": "sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==",
35880 "dev": true, 35634 "dev": true,
35881 "requires": { 35635 "requires": {
35882 "@typescript-eslint/types": "5.2.0", 35636 "@typescript-eslint/types": "5.4.0",
35883 "@typescript-eslint/visitor-keys": "5.2.0", 35637 "@typescript-eslint/visitor-keys": "5.4.0",
35884 "debug": "^4.3.2", 35638 "debug": "^4.3.2",
35885 "globby": "^11.0.4", 35639 "globby": "^11.0.4",
35886 "is-glob": "^4.0.3", 35640 "is-glob": "^4.0.3",
@@ -35889,19 +35643,19 @@
35889 } 35643 }
35890 }, 35644 },
35891 "@typescript-eslint/visitor-keys": { 35645 "@typescript-eslint/visitor-keys": {
35892 "version": "5.2.0", 35646 "version": "5.4.0",
35893 "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.2.0.tgz", 35647 "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz",
35894 "integrity": "sha512-Nk7HizaXWWCUBfLA/rPNKMzXzWS8Wg9qHMuGtT+v2/YpPij4nVXrVJc24N/r5WrrmqK31jCrZxeHqIgqRzs0Xg==", 35648 "integrity": "sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==",
35895 "dev": true, 35649 "dev": true,
35896 "requires": { 35650 "requires": {
35897 "@typescript-eslint/types": "5.2.0", 35651 "@typescript-eslint/types": "5.4.0",
35898 "eslint-visitor-keys": "^3.0.0" 35652 "eslint-visitor-keys": "^3.0.0"
35899 }, 35653 },
35900 "dependencies": { 35654 "dependencies": {
35901 "eslint-visitor-keys": { 35655 "eslint-visitor-keys": {
35902 "version": "3.0.0", 35656 "version": "3.1.0",
35903 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", 35657 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
35904 "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", 35658 "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
35905 "dev": true 35659 "dev": true
35906 } 35660 }
35907 } 35661 }
@@ -35913,13 +35667,13 @@
35913 "dev": true 35667 "dev": true
35914 }, 35668 },
35915 "@vue/compiler-core": { 35669 "@vue/compiler-core": {
35916 "version": "3.2.20", 35670 "version": "3.2.22",
35917 "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.20.tgz", 35671 "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.22.tgz",
35918 "integrity": "sha512-vcEXlKXoPwBXFP5aUTHN9GTZaDfwCofa9Yu9bbW2C5O/QSa9Esdt7OG4+0RRd3EHEMxUvEdj4RZrd/KpQeiJbA==", 35672 "integrity": "sha512-uAkovrVeTcjzpiM4ECmVaMrv/bjdgAaLzvjcGqQPBEyUrcqsCgccT9fHJ/+hWVGhyMahmBwLqcn4guULNx7sdw==",
35919 "dev": true, 35673 "dev": true,
35920 "requires": { 35674 "requires": {
35921 "@babel/parser": "^7.15.0", 35675 "@babel/parser": "^7.15.0",
35922 "@vue/shared": "3.2.20", 35676 "@vue/shared": "3.2.22",
35923 "estree-walker": "^2.0.2", 35677 "estree-walker": "^2.0.2",
35924 "source-map": "^0.6.1" 35678 "source-map": "^0.6.1"
35925 }, 35679 },
@@ -35933,27 +35687,27 @@
35933 } 35687 }
35934 }, 35688 },
35935 "@vue/compiler-dom": { 35689 "@vue/compiler-dom": {
35936 "version": "3.2.20", 35690 "version": "3.2.22",
35937 "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.20.tgz", 35691 "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.22.tgz",
35938 "integrity": "sha512-QnI77ec/JtV7R0YBbcVayYTDCRcI9OCbxiUQK6izVyqQO0658n0zQuoNwe+bYgtqnvGAIqTR3FShTd5y4oOjdg==", 35692 "integrity": "sha512-VZdsw/VuO1ODs8K7NQwnMQzKITDkIFlYYC03SVnunuf6eNRxBPEonSyqbWNoo6qNaHAEBTG6VVcZC5xC9bAx1g==",
35939 "dev": true, 35693 "dev": true,
35940 "requires": { 35694 "requires": {
35941 "@vue/compiler-core": "3.2.20", 35695 "@vue/compiler-core": "3.2.22",
35942 "@vue/shared": "3.2.20" 35696 "@vue/shared": "3.2.22"
35943 } 35697 }
35944 }, 35698 },
35945 "@vue/compiler-sfc": { 35699 "@vue/compiler-sfc": {
35946 "version": "3.2.20", 35700 "version": "3.2.22",
35947 "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.20.tgz", 35701 "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.22.tgz",
35948 "integrity": "sha512-03aZo+6tQKiFLfunHKSPZvdK4Jsn/ftRCyaro8AQIWkuxJbvSosbKK6HTTn+D2c3nPScG155akJoxKENw7rftQ==", 35702 "integrity": "sha512-tWRQ5ge1tsTDhUwHgueicKJ8rYm6WUVAPTaIpFW3GSwZKcOEJ2rXdfkHFShNVGupeRALz2ET2H84OL0GeRxY0A==",
35949 "dev": true, 35703 "dev": true,
35950 "requires": { 35704 "requires": {
35951 "@babel/parser": "^7.15.0", 35705 "@babel/parser": "^7.15.0",
35952 "@vue/compiler-core": "3.2.20", 35706 "@vue/compiler-core": "3.2.22",
35953 "@vue/compiler-dom": "3.2.20", 35707 "@vue/compiler-dom": "3.2.22",
35954 "@vue/compiler-ssr": "3.2.20", 35708 "@vue/compiler-ssr": "3.2.22",
35955 "@vue/ref-transform": "3.2.20", 35709 "@vue/ref-transform": "3.2.22",
35956 "@vue/shared": "3.2.20", 35710 "@vue/shared": "3.2.22",
35957 "estree-walker": "^2.0.2", 35711 "estree-walker": "^2.0.2",
35958 "magic-string": "^0.25.7", 35712 "magic-string": "^0.25.7",
35959 "postcss": "^8.1.10", 35713 "postcss": "^8.1.10",
@@ -35969,32 +35723,32 @@
35969 } 35723 }
35970 }, 35724 },
35971 "@vue/compiler-ssr": { 35725 "@vue/compiler-ssr": {
35972 "version": "3.2.20", 35726 "version": "3.2.22",
35973 "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.20.tgz", 35727 "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.22.tgz",
35974 "integrity": "sha512-rzzVVYivm+EjbfiGQvNeyiYZWzr6Hkej97RZLZvcumacQlnKv9176Xo9rRyeWwFbBlxmtNdrVMslRXtipMXk2w==", 35728 "integrity": "sha512-Cl6aoLJtXzzBkk1sKod8S0WBJLts3+ugVC91d22gGpbkw/64WnF12tOZi7Rg54PPLi1NovqyNWPsLH/SAFcu+w==",
35975 "dev": true, 35729 "dev": true,
35976 "requires": { 35730 "requires": {
35977 "@vue/compiler-dom": "3.2.20", 35731 "@vue/compiler-dom": "3.2.22",
35978 "@vue/shared": "3.2.20" 35732 "@vue/shared": "3.2.22"
35979 } 35733 }
35980 }, 35734 },
35981 "@vue/ref-transform": { 35735 "@vue/ref-transform": {
35982 "version": "3.2.20", 35736 "version": "3.2.22",
35983 "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.20.tgz", 35737 "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.22.tgz",
35984 "integrity": "sha512-Y42d3PGlYZ1lXcF3dbd3+qU/C/a3wYEZ949fyOI5ptzkjDWlkfU6vn74fmOjsLjEcjs10BXK2qO99FqQIK2r1Q==", 35738 "integrity": "sha512-qalVWbq5xWWxLZ0L9OroBg/JZhzavQuCcDXblfErxyDEH6Xc5gIJ4feo1SVCICFzhAUgLgQTdSFLpgjBawbFpw==",
35985 "dev": true, 35739 "dev": true,
35986 "requires": { 35740 "requires": {
35987 "@babel/parser": "^7.15.0", 35741 "@babel/parser": "^7.15.0",
35988 "@vue/compiler-core": "3.2.20", 35742 "@vue/compiler-core": "3.2.22",
35989 "@vue/shared": "3.2.20", 35743 "@vue/shared": "3.2.22",
35990 "estree-walker": "^2.0.2", 35744 "estree-walker": "^2.0.2",
35991 "magic-string": "^0.25.7" 35745 "magic-string": "^0.25.7"
35992 } 35746 }
35993 }, 35747 },
35994 "@vue/shared": { 35748 "@vue/shared": {
35995 "version": "3.2.20", 35749 "version": "3.2.22",
35996 "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.20.tgz", 35750 "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.22.tgz",
35997 "integrity": "sha512-FbpX+hD5BvXCQerEYO7jtAGHlhAkhTQ4KIV73kmLWNlawWhTiVuQxizgVb0BOkX5oG9cIRZ42EG++d/k/Efp0w==", 35751 "integrity": "sha512-qWVav014mpjEtbWbEgl0q9pEyrrIySKum8UVYjwhC6njrKzknLZPvfuYdQyVbApsqr94tf/3dP4pCuZmmjdCWQ==",
35998 "dev": true 35752 "dev": true
35999 }, 35753 },
36000 "@webassemblyjs/ast": { 35754 "@webassemblyjs/ast": {
@@ -36211,9 +35965,9 @@
36211 } 35965 }
36212 }, 35966 },
36213 "acorn": { 35967 "acorn": {
36214 "version": "8.5.0", 35968 "version": "8.6.0",
36215 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz", 35969 "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
36216 "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==", 35970 "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==",
36217 "dev": true 35971 "dev": true
36218 }, 35972 },
36219 "acorn-globals": { 35973 "acorn-globals": {
@@ -36702,10 +36456,10 @@
36702 "ansi-wrap": "0.1.0" 36456 "ansi-wrap": "0.1.0"
36703 } 36457 }
36704 }, 36458 },
36705 "ansi-html": { 36459 "ansi-html-community": {
36706 "version": "0.0.7", 36460 "version": "0.0.8",
36707 "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", 36461 "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
36708 "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", 36462 "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==",
36709 "dev": true 36463 "dev": true
36710 }, 36464 },
36711 "ansi-inverse": { 36465 "ansi-inverse": {
@@ -36743,8 +36497,7 @@
36743 "ansi-regex": { 36497 "ansi-regex": {
36744 "version": "5.0.1", 36498 "version": "5.0.1",
36745 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 36499 "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
36746 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 36500 "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
36747 "dev": true
36748 }, 36501 },
36749 "ansi-reset": { 36502 "ansi-reset": {
36750 "version": "0.1.1", 36503 "version": "0.1.1",
@@ -36883,9 +36636,9 @@
36883 "dev": true 36636 "dev": true
36884 }, 36637 },
36885 "app-builder-lib": { 36638 "app-builder-lib": {
36886 "version": "22.14.5", 36639 "version": "22.14.10",
36887 "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.5.tgz", 36640 "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.14.10.tgz",
36888 "integrity": "sha512-k3VwKP4kpsnUaXoUkm1s4zaSHPHIMFnN4kPMU9yXaKmE1LfHHqBaEah5bXeTAX5V/BC41wFdg8CF5vOjvgy8Rg==", 36641 "integrity": "sha512-5g/0CztD/+OL3V6PH+hV5MeFDg1V827PoyPEnAzz4fXXhCzoBwDanyqKH9b7JwfHkLO6JqH5Des28qET3LkENg==",
36889 "dev": true, 36642 "dev": true,
36890 "requires": { 36643 "requires": {
36891 "@develar/schema-utils": "~2.6.5", 36644 "@develar/schema-utils": "~2.6.5",
@@ -36894,13 +36647,13 @@
36894 "7zip-bin": "~5.1.1", 36647 "7zip-bin": "~5.1.1",
36895 "async-exit-hook": "^2.0.1", 36648 "async-exit-hook": "^2.0.1",
36896 "bluebird-lst": "^1.0.9", 36649 "bluebird-lst": "^1.0.9",
36897 "builder-util": "22.14.5", 36650 "builder-util": "22.14.7",
36898 "builder-util-runtime": "8.9.1", 36651 "builder-util-runtime": "8.9.2",
36899 "chromium-pickle-js": "^0.2.0", 36652 "chromium-pickle-js": "^0.2.0",
36900 "debug": "^4.3.2", 36653 "debug": "^4.3.2",
36901 "ejs": "^3.1.6", 36654 "ejs": "^3.1.6",
36902 "electron-osx-sign": "^0.5.0", 36655 "electron-osx-sign": "^0.5.0",
36903 "electron-publish": "22.14.5", 36656 "electron-publish": "22.14.7",
36904 "form-data": "^4.0.0", 36657 "form-data": "^4.0.0",
36905 "fs-extra": "^10.0.0", 36658 "fs-extra": "^10.0.0",
36906 "hosted-git-info": "^4.0.2", 36659 "hosted-git-info": "^4.0.2",
@@ -37175,27 +36928,13 @@
37175 "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", 36928 "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
37176 "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", 36929 "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
37177 "dev": true 36930 "dev": true
37178 },
37179 "glob": {
37180 "version": "7.2.0",
37181 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
37182 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
37183 "dev": true,
37184 "requires": {
37185 "fs.realpath": "^1.0.0",
37186 "inflight": "^1.0.4",
37187 "inherits": "2",
37188 "minimatch": "^3.0.4",
37189 "once": "^1.3.0",
37190 "path-is-absolute": "^1.0.0"
37191 }
37192 } 36931 }
37193 } 36932 }
37194 }, 36933 },
37195 "asn1": { 36934 "asn1": {
37196 "version": "0.2.4", 36935 "version": "0.2.6",
37197 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", 36936 "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
37198 "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", 36937 "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
37199 "optional": true, 36938 "optional": true,
37200 "requires": { 36939 "requires": {
37201 "safer-buffer": "~2.1.0" 36940 "safer-buffer": "~2.1.0"
@@ -37265,6 +37004,13 @@
37265 "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", 37004 "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
37266 "dev": true 37005 "dev": true
37267 }, 37006 },
37007 "astral-regex": {
37008 "version": "2.0.0",
37009 "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
37010 "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
37011 "dev": true,
37012 "optional": true
37013 },
37268 "async": { 37014 "async": {
37269 "version": "3.2.2", 37015 "version": "3.2.2",
37270 "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz", 37016 "resolved": "https://registry.npmjs.org/async/-/async-3.2.2.tgz",
@@ -37355,9 +37101,9 @@
37355 "optional": true 37101 "optional": true
37356 }, 37102 },
37357 "axe-core": { 37103 "axe-core": {
37358 "version": "4.3.4", 37104 "version": "4.3.5",
37359 "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.4.tgz", 37105 "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz",
37360 "integrity": "sha512-4Hk6iSA/H90rtiPoCpSkeJxNWCPBf7szwVvaUqrPdxo0j2Y04suHK9jPKXaE3WI7OET6wBSwsWw7FDc1DBq7iQ==", 37106 "integrity": "sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA==",
37361 "dev": true 37107 "dev": true
37362 }, 37108 },
37363 "axios": { 37109 "axios": {
@@ -37516,13 +37262,13 @@
37516 } 37262 }
37517 }, 37263 },
37518 "babel-plugin-polyfill-corejs2": { 37264 "babel-plugin-polyfill-corejs2": {
37519 "version": "0.2.3", 37265 "version": "0.3.0",
37520 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.3.tgz", 37266 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz",
37521 "integrity": "sha512-NDZ0auNRzmAfE1oDDPW2JhzIMXUk+FFe2ICejmt5T4ocKgiQx3e0VCRx9NCAidcMtL2RUZaWtXnmjTCkx0tcbA==", 37267 "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==",
37522 "dev": true, 37268 "dev": true,
37523 "requires": { 37269 "requires": {
37524 "@babel/compat-data": "^7.13.11", 37270 "@babel/compat-data": "^7.13.11",
37525 "@babel/helper-define-polyfill-provider": "^0.2.4", 37271 "@babel/helper-define-polyfill-provider": "^0.3.0",
37526 "semver": "^6.1.1" 37272 "semver": "^6.1.1"
37527 }, 37273 },
37528 "dependencies": { 37274 "dependencies": {
@@ -37535,22 +37281,22 @@
37535 } 37281 }
37536 }, 37282 },
37537 "babel-plugin-polyfill-corejs3": { 37283 "babel-plugin-polyfill-corejs3": {
37538 "version": "0.3.0", 37284 "version": "0.4.0",
37539 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.3.0.tgz", 37285 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz",
37540 "integrity": "sha512-JLwi9vloVdXLjzACL80j24bG6/T1gYxwowG44dg6HN/7aTPdyPbJJidf6ajoA3RPHHtW0j9KMrSOLpIZpAnPpg==", 37286 "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==",
37541 "dev": true, 37287 "dev": true,
37542 "requires": { 37288 "requires": {
37543 "@babel/helper-define-polyfill-provider": "^0.2.4", 37289 "@babel/helper-define-polyfill-provider": "^0.3.0",
37544 "core-js-compat": "^3.18.0" 37290 "core-js-compat": "^3.18.0"
37545 } 37291 }
37546 }, 37292 },
37547 "babel-plugin-polyfill-regenerator": { 37293 "babel-plugin-polyfill-regenerator": {
37548 "version": "0.2.3", 37294 "version": "0.3.0",
37549 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.3.tgz", 37295 "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz",
37550 "integrity": "sha512-JVE78oRZPKFIeUqFGrSORNzQnrDwZR16oiWeGM8ZyjBn2XAT5OjP+wXx5ESuo33nUsFUEJYjtklnsKbxW5L+7g==", 37296 "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==",
37551 "dev": true, 37297 "dev": true,
37552 "requires": { 37298 "requires": {
37553 "@babel/helper-define-polyfill-provider": "^0.2.4" 37299 "@babel/helper-define-polyfill-provider": "^0.3.0"
37554 } 37300 }
37555 }, 37301 },
37556 "babel-preset-current-node-syntax": { 37302 "babel-preset-current-node-syntax": {
@@ -37654,9 +37400,9 @@
37654 "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" 37400 "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
37655 }, 37401 },
37656 "big-integer": { 37402 "big-integer": {
37657 "version": "1.6.50", 37403 "version": "1.6.51",
37658 "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.50.tgz", 37404 "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
37659 "integrity": "sha512-+O2uoQWFRo8ysZNo/rjtri2jIwjr3XfeAgRjAUADRqGG+ZITvyn8J1kvXLTaKVr3hhGXk+f23tKfdzmklVM9vQ==" 37405 "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
37660 }, 37406 },
37661 "big.js": { 37407 "big.js": {
37662 "version": "5.2.2", 37408 "version": "5.2.2",
@@ -37772,6 +37518,12 @@
37772 "type-is": "~1.6.17" 37518 "type-is": "~1.6.17"
37773 }, 37519 },
37774 "dependencies": { 37520 "dependencies": {
37521 "bytes": {
37522 "version": "3.1.0",
37523 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
37524 "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
37525 "dev": true
37526 },
37775 "debug": { 37527 "debug": {
37776 "version": "2.6.9", 37528 "version": "2.6.9",
37777 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 37529 "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -37838,6 +37590,12 @@
37838 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 37590 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
37839 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", 37591 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
37840 "dev": true 37592 "dev": true
37593 },
37594 "toidentifier": {
37595 "version": "1.0.0",
37596 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
37597 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
37598 "dev": true
37841 } 37599 }
37842 } 37600 }
37843 }, 37601 },
@@ -37894,9 +37652,9 @@
37894 } 37652 }
37895 }, 37653 },
37896 "camelcase": { 37654 "camelcase": {
37897 "version": "6.2.0", 37655 "version": "6.2.1",
37898 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", 37656 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz",
37899 "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", 37657 "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==",
37900 "dev": true 37658 "dev": true
37901 }, 37659 },
37902 "chalk": { 37660 "chalk": {
@@ -37996,11 +37754,6 @@
37996 "to-regex": "^3.0.1" 37754 "to-regex": "^3.0.1"
37997 } 37755 }
37998 }, 37756 },
37999 "brcast": {
38000 "version": "3.0.2",
38001 "resolved": "https://registry.npmjs.org/brcast/-/brcast-3.0.2.tgz",
38002 "integrity": "sha512-f5XwwFCCuvgqP2nMH/hJ74FqnGmb4X3D+NC//HphxJzzhsZvSZa+Hk/syB7j3ZHpPDLMoYU8oBgviRWfNvEfKA=="
38003 },
38004 "brorand": { 37757 "brorand": {
38005 "version": "1.1.0", 37758 "version": "1.1.0",
38006 "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 37759 "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
@@ -38112,13 +37865,13 @@
38112 } 37865 }
38113 }, 37866 },
38114 "browserslist": { 37867 "browserslist": {
38115 "version": "4.17.6", 37868 "version": "4.18.1",
38116 "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.6.tgz", 37869 "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.18.1.tgz",
38117 "integrity": "sha512-uPgz3vyRTlEiCv4ee9KlsKgo2V6qPk7Jsn0KAn2OBqbqKo3iNcPEC1Ti6J4dwnz+aIRfEEEuOzC9IBk8tXUomw==", 37870 "integrity": "sha512-8ScCzdpPwR2wQh8IT82CA2VgDwjHyqMovPBZSNH54+tm4Jk2pCuv90gmAdH6J84OCRWi0b4gMe6O6XPXuJnjgQ==",
38118 "dev": true, 37871 "dev": true,
38119 "requires": { 37872 "requires": {
38120 "caniuse-lite": "^1.0.30001274", 37873 "caniuse-lite": "^1.0.30001280",
38121 "electron-to-chromium": "^1.3.886", 37874 "electron-to-chromium": "^1.3.896",
38122 "escalade": "^3.1.1", 37875 "escalade": "^3.1.1",
38123 "node-releases": "^2.0.1", 37876 "node-releases": "^2.0.1",
38124 "picocolors": "^1.0.0" 37877 "picocolors": "^1.0.0"
@@ -38222,9 +37975,9 @@
38222 "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" 37975 "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s="
38223 }, 37976 },
38224 "builder-util": { 37977 "builder-util": {
38225 "version": "22.14.5", 37978 "version": "22.14.7",
38226 "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.5.tgz", 37979 "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.14.7.tgz",
38227 "integrity": "sha512-zqIHDFJwmA7jV7SC9aI+33MWwT2mWoijH+Ol9IntNAwuuRXoS+7XeJwnhLBXOhcDBzXT4kDzHnRk4JKeaygEYA==", 37980 "integrity": "sha512-M8ql8WPW/P9UKsF00YZjiP5h29MYrJ3svJx5suszC5EGwIdAztIhFyXoXKI3hPtDaR5b6EoWD9nLa5/Gr+QToQ==",
38228 "dev": true, 37981 "dev": true,
38229 "requires": { 37982 "requires": {
38230 "@types/debug": "^4.1.6", 37983 "@types/debug": "^4.1.6",
@@ -38232,11 +37985,13 @@
38232 "7zip-bin": "~5.1.1", 37985 "7zip-bin": "~5.1.1",
38233 "app-builder-bin": "3.7.1", 37986 "app-builder-bin": "3.7.1",
38234 "bluebird-lst": "^1.0.9", 37987 "bluebird-lst": "^1.0.9",
38235 "builder-util-runtime": "8.9.1", 37988 "builder-util-runtime": "8.9.2",
38236 "chalk": "^4.1.1", 37989 "chalk": "^4.1.1",
38237 "cross-spawn": "^7.0.3", 37990 "cross-spawn": "^7.0.3",
38238 "debug": "^4.3.2", 37991 "debug": "^4.3.2",
38239 "fs-extra": "^10.0.0", 37992 "fs-extra": "^10.0.0",
37993 "http-proxy-agent": "^5.0.0",
37994 "https-proxy-agent": "^5.0.0",
38240 "is-ci": "^3.0.0", 37995 "is-ci": "^3.0.0",
38241 "js-yaml": "^4.1.0", 37996 "js-yaml": "^4.1.0",
38242 "source-map-support": "^0.5.19", 37997 "source-map-support": "^0.5.19",
@@ -38244,6 +37999,12 @@
38244 "temp-file": "^3.4.0" 37999 "temp-file": "^3.4.0"
38245 }, 38000 },
38246 "dependencies": { 38001 "dependencies": {
38002 "@tootallnate/once": {
38003 "version": "2.0.0",
38004 "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
38005 "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==",
38006 "dev": true
38007 },
38247 "ansi-styles": { 38008 "ansi-styles": {
38248 "version": "4.3.0", 38009 "version": "4.3.0",
38249 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 38010 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -38284,6 +38045,17 @@
38284 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 38045 "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
38285 "dev": true 38046 "dev": true
38286 }, 38047 },
38048 "http-proxy-agent": {
38049 "version": "5.0.0",
38050 "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
38051 "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==",
38052 "dev": true,
38053 "requires": {
38054 "@tootallnate/once": "2",
38055 "agent-base": "6",
38056 "debug": "4"
38057 }
38058 },
38287 "supports-color": { 38059 "supports-color": {
38288 "version": "7.2.0", 38060 "version": "7.2.0",
38289 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 38061 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -38296,10 +38068,9 @@
38296 } 38068 }
38297 }, 38069 },
38298 "builder-util-runtime": { 38070 "builder-util-runtime": {
38299 "version": "8.9.1", 38071 "version": "8.9.2",
38300 "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.1.tgz", 38072 "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.9.2.tgz",
38301 "integrity": "sha512-c8a8J3wK6BIVLW7ls+7TRK9igspTbzWmUqxFbgK0m40Ggm6efUbxtWVCGIjc+dtchyr5qAMAUL6iEGRdS/6vwg==", 38073 "integrity": "sha512-rhuKm5vh7E0aAmT6i8aoSfEjxzdYEFX7zDApK+eNgOhjofnWb74d9SRJv0H/8nsgOkos0TZ4zxW0P8J4N7xQ2A==",
38302 "dev": true,
38303 "requires": { 38074 "requires": {
38304 "debug": "^4.3.2", 38075 "debug": "^4.3.2",
38305 "sax": "^1.2.4" 38076 "sax": "^1.2.4"
@@ -38318,9 +38089,9 @@
38318 "dev": true 38089 "dev": true
38319 }, 38090 },
38320 "bytes": { 38091 "bytes": {
38321 "version": "3.1.0", 38092 "version": "3.1.1",
38322 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 38093 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz",
38323 "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 38094 "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg=="
38324 }, 38095 },
38325 "cacache": { 38096 "cacache": {
38326 "version": "15.3.0", 38097 "version": "15.3.0",
@@ -38348,20 +38119,6 @@
38348 "unique-filename": "^1.1.1" 38119 "unique-filename": "^1.1.1"
38349 }, 38120 },
38350 "dependencies": { 38121 "dependencies": {
38351 "glob": {
38352 "version": "7.2.0",
38353 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
38354 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
38355 "dev": true,
38356 "requires": {
38357 "fs.realpath": "^1.0.0",
38358 "inflight": "^1.0.4",
38359 "inherits": "2",
38360 "minimatch": "^3.0.4",
38361 "once": "^1.3.0",
38362 "path-is-absolute": "^1.0.0"
38363 }
38364 },
38365 "mkdirp": { 38122 "mkdirp": {
38366 "version": "1.0.4", 38123 "version": "1.0.4",
38367 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 38124 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
@@ -38516,9 +38273,9 @@
38516 } 38273 }
38517 }, 38274 },
38518 "caniuse-lite": { 38275 "caniuse-lite": {
38519 "version": "1.0.30001278", 38276 "version": "1.0.30001286",
38520 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001278.tgz", 38277 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001286.tgz",
38521 "integrity": "sha512-mpF9KeH8u5cMoEmIic/cr7PNS+F5LWBk0t2ekGT60lFf0Wq+n9LspAj0g3P+o7DQhD3sUdlMln4YFAWhFYn9jg==", 38278 "integrity": "sha512-zaEMRH6xg8ESMi2eQ3R4eZ5qw/hJiVsO/HlLwniIwErij0JDr9P+8V4dtx1l+kLq6j3yy8l8W4fst1lBnat5wQ==",
38522 "dev": true 38279 "dev": true
38523 }, 38280 },
38524 "caseless": { 38281 "caseless": {
@@ -38753,42 +38510,13 @@
38753 "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" 38510 "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA=="
38754 }, 38511 },
38755 "cld": { 38512 "cld": {
38756 "version": "2.7.0", 38513 "version": "2.7.1",
38757 "resolved": "https://registry.npmjs.org/cld/-/cld-2.7.0.tgz", 38514 "resolved": "https://registry.npmjs.org/cld/-/cld-2.7.1.tgz",
38758 "integrity": "sha512-rM20jIISRqMYfZAlowCA4DwLLegJXqfCFdVb1vtS+RG7yKHn4FrYdFfUx2WGbmaqOQV/w4MRIszh43FH78/oRA==", 38515 "integrity": "sha512-4RusGBKlhW/f7hrv4wFf19n461aO1XCCC4/pCawTJNGaNT+i4OIeAwREY9oeqT0vJyBmtY2dM9IG4cQyu5Pcng==",
38759 "optional": true,
38760 "requires": { 38516 "requires": {
38761 "glob": "^5.0.10", 38517 "glob": "7",
38762 "node-addon-api": "*", 38518 "node-addon-api": "*",
38763 "rimraf": "^2.4.0", 38519 "underscore": "^1.12.1"
38764 "underscore": "^1.6.0"
38765 },
38766 "dependencies": {
38767 "rimraf": {
38768 "version": "2.7.1",
38769 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
38770 "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
38771 "optional": true,
38772 "requires": {
38773 "glob": "^7.1.3"
38774 },
38775 "dependencies": {
38776 "glob": {
38777 "version": "7.2.0",
38778 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
38779 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
38780 "optional": true,
38781 "requires": {
38782 "fs.realpath": "^1.0.0",
38783 "inflight": "^1.0.4",
38784 "inherits": "2",
38785 "minimatch": "^3.0.4",
38786 "once": "^1.3.0",
38787 "path-is-absolute": "^1.0.0"
38788 }
38789 }
38790 }
38791 }
38792 } 38520 }
38793 }, 38521 },
38794 "clean-css": { 38522 "clean-css": {
@@ -38839,22 +38567,51 @@
38839 } 38567 }
38840 }, 38568 },
38841 "cli-table": { 38569 "cli-table": {
38842 "version": "0.3.6", 38570 "version": "0.3.8",
38843 "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", 38571 "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.8.tgz",
38844 "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", 38572 "integrity": "sha512-5IO15fJRzgM+hHZjvQlqD6UPRuVGWR4Ny5ZzaM5VJxJEQqSIEVyVh9dMAUN6CBAVfMc4/6CFEzbhnRftLRCyug==",
38845 "requires": { 38573 "requires": {
38846 "colors": "1.0.3" 38574 "colors": "1.0.3",
38575 "strip-ansi": "^6.0.1"
38847 } 38576 }
38848 }, 38577 },
38849 "cli-truncate": { 38578 "cli-truncate": {
38850 "version": "1.1.0", 38579 "version": "2.1.0",
38851 "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz", 38580 "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
38852 "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==", 38581 "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
38853 "dev": true, 38582 "dev": true,
38854 "optional": true, 38583 "optional": true,
38855 "requires": { 38584 "requires": {
38856 "slice-ansi": "^1.0.0", 38585 "slice-ansi": "^3.0.0",
38857 "string-width": "^2.0.0" 38586 "string-width": "^4.2.0"
38587 },
38588 "dependencies": {
38589 "emoji-regex": {
38590 "version": "8.0.0",
38591 "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
38592 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
38593 "dev": true,
38594 "optional": true
38595 },
38596 "is-fullwidth-code-point": {
38597 "version": "3.0.0",
38598 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
38599 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
38600 "dev": true,
38601 "optional": true
38602 },
38603 "string-width": {
38604 "version": "4.2.3",
38605 "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
38606 "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
38607 "dev": true,
38608 "optional": true,
38609 "requires": {
38610 "emoji-regex": "^8.0.0",
38611 "is-fullwidth-code-point": "^3.0.0",
38612 "strip-ansi": "^6.0.1"
38613 }
38614 }
38858 } 38615 }
38859 }, 38616 },
38860 "cli-width": { 38617 "cli-width": {
@@ -39363,9 +39120,9 @@
39363 } 39120 }
39364 }, 39121 },
39365 "concurrently": { 39122 "concurrently": {
39366 "version": "6.3.0", 39123 "version": "6.4.0",
39367 "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.3.0.tgz", 39124 "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.4.0.tgz",
39368 "integrity": "sha512-k4k1jQGHHKsfbqzkUszVf29qECBrkvBKkcPJEUDTyVR7tZd1G/JOfnst4g1sYbFvJ4UjHZisj1aWQR8yLKpGPw==", 39125 "integrity": "sha512-HZ3D0RTQMH3oS4gvtYj1P+NBc6PzE2McEra6yEFcQKrUQ9HvtTGU4Dbne083F034p+LRb7kWU0tPRNvSGs1UCQ==",
39369 "dev": true, 39126 "dev": true,
39370 "requires": { 39127 "requires": {
39371 "chalk": "^4.1.0", 39128 "chalk": "^4.1.0",
@@ -39678,20 +39435,6 @@
39678 "run-queue": "^1.0.0" 39435 "run-queue": "^1.0.0"
39679 }, 39436 },
39680 "dependencies": { 39437 "dependencies": {
39681 "glob": {
39682 "version": "7.2.0",
39683 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
39684 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
39685 "dev": true,
39686 "requires": {
39687 "fs.realpath": "^1.0.0",
39688 "inflight": "^1.0.4",
39689 "inherits": "2",
39690 "minimatch": "^3.0.4",
39691 "once": "^1.3.0",
39692 "path-is-absolute": "^1.0.0"
39693 }
39694 },
39695 "rimraf": { 39438 "rimraf": {
39696 "version": "2.7.1", 39439 "version": "2.7.1",
39697 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 39440 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -39745,9 +39488,9 @@
39745 } 39488 }
39746 }, 39489 },
39747 "core-js-pure": { 39490 "core-js-pure": {
39748 "version": "3.19.0", 39491 "version": "3.19.1",
39749 "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.0.tgz", 39492 "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz",
39750 "integrity": "sha512-UEQk8AxyCYvNAs6baNoPqDADv7BX0AmBLGxVsrAifPPx/C8EAzV4Q+2ZUJqVzfI2TQQEZITnwUkWcHpgc/IubQ==", 39493 "integrity": "sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==",
39751 "dev": true 39494 "dev": true
39752 }, 39495 },
39753 "core-util-is": { 39496 "core-util-is": {
@@ -39900,6 +39643,16 @@
39900 "uid-safe": "2.1.5" 39643 "uid-safe": "2.1.5"
39901 } 39644 }
39902 }, 39645 },
39646 "css-jss": {
39647 "version": "10.8.2",
39648 "resolved": "https://registry.npmjs.org/css-jss/-/css-jss-10.8.2.tgz",
39649 "integrity": "sha512-KjsoKnBV4C9p+F+zW9jNXCai0UYU5K+3eyo+lJX/fY8UBEQd/yNREnHsLD1VMMzBwHRvrA8eQHvqmAL+XNLYcw==",
39650 "requires": {
39651 "@babel/runtime": "^7.3.1",
39652 "jss": "10.8.2",
39653 "jss-preset-default": "10.8.2"
39654 }
39655 },
39903 "css-select": { 39656 "css-select": {
39904 "version": "4.1.3", 39657 "version": "4.1.3",
39905 "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", 39658 "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
@@ -39932,10 +39685,11 @@
39932 } 39685 }
39933 }, 39686 },
39934 "css-vendor": { 39687 "css-vendor": {
39935 "version": "0.3.8", 39688 "version": "2.0.8",
39936 "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-0.3.8.tgz", 39689 "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz",
39937 "integrity": "sha1-ZCHP0wNM5mT+dnOXL9ARn8KJQfo=", 39690 "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==",
39938 "requires": { 39691 "requires": {
39692 "@babel/runtime": "^7.8.3",
39939 "is-in-browser": "^1.0.2" 39693 "is-in-browser": "^1.0.2"
39940 } 39694 }
39941 }, 39695 },
@@ -39978,9 +39732,9 @@
39978 } 39732 }
39979 }, 39733 },
39980 "csstype": { 39734 "csstype": {
39981 "version": "3.0.9", 39735 "version": "3.0.10",
39982 "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", 39736 "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz",
39983 "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" 39737 "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA=="
39984 }, 39738 },
39985 "currently-unhandled": { 39739 "currently-unhandled": {
39986 "version": "0.4.1", 39740 "version": "0.4.1",
@@ -40035,9 +39789,9 @@
40035 "dev": true 39789 "dev": true
40036 }, 39790 },
40037 "darkreader": { 39791 "darkreader": {
40038 "version": "4.9.39", 39792 "version": "4.9.40",
40039 "resolved": "https://registry.npmjs.org/darkreader/-/darkreader-4.9.39.tgz", 39793 "resolved": "https://registry.npmjs.org/darkreader/-/darkreader-4.9.40.tgz",
40040 "integrity": "sha512-OikzTzTDasjq+e+PXRWZRxMA+PZddz9cDLiZGVUI48w1FbBDfXwwQyyWiO7eavdAQ1cV9dYA21g6KtdK/0OefA==" 39794 "integrity": "sha512-Dm8S5jkXSIxvq9WitcvuH4KexV9ZuzGqDMsFOm2VwXzRkMo9VIg8udjq2Mm7cM6SaQSp/zzH4VIWioX93iWayQ=="
40041 }, 39795 },
40042 "dashdash": { 39796 "dashdash": {
40043 "version": "1.14.1", 39797 "version": "1.14.1",
@@ -40060,9 +39814,9 @@
40060 } 39814 }
40061 }, 39815 },
40062 "date-fns": { 39816 "date-fns": {
40063 "version": "2.25.0", 39817 "version": "2.26.0",
40064 "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.25.0.tgz", 39818 "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.26.0.tgz",
40065 "integrity": "sha512-ovYRFnTrbGPD4nqaEqescPEv1mNwvt+UTqI3Ay9SzNtey9NZnYu6E2qCcBBgJ6/2VF1zGGygpyTDITqpQQ5e+w==", 39819 "integrity": "sha512-VQI812dRi3cusdY/fhoBKvc6l2W8BPWU1FNVnFH9Nttjx4AFBRzfSVb/Eyc7jBT6e9sg1XtAGsYpBQ6c/jygbg==",
40066 "dev": true 39820 "dev": true
40067 }, 39821 },
40068 "dbus-next": { 39822 "dbus-next": {
@@ -40362,20 +40116,6 @@
40362 "array-uniq": "^1.0.1" 40116 "array-uniq": "^1.0.1"
40363 } 40117 }
40364 }, 40118 },
40365 "glob": {
40366 "version": "7.2.0",
40367 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
40368 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
40369 "dev": true,
40370 "requires": {
40371 "fs.realpath": "^1.0.0",
40372 "inflight": "^1.0.4",
40373 "inherits": "2",
40374 "minimatch": "^3.0.4",
40375 "once": "^1.3.0",
40376 "path-is-absolute": "^1.0.0"
40377 }
40378 },
40379 "globby": { 40119 "globby": {
40380 "version": "6.1.0", 40120 "version": "6.1.0",
40381 "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", 40121 "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
@@ -40543,14 +40283,14 @@
40543 } 40283 }
40544 }, 40284 },
40545 "dmg-builder": { 40285 "dmg-builder": {
40546 "version": "22.14.5", 40286 "version": "22.14.10",
40547 "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.5.tgz", 40287 "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.14.10.tgz",
40548 "integrity": "sha512-1GvFGQE332bvPamcMwZDqWqfWfJTyyDLOsHMcGi0zs+Jh7JOn6/zuBkHJIWHdsj2QJbhzLVyd2/ZqttOKv7I8w==", 40288 "integrity": "sha512-DMLdhVNvIEBo0tzODoFalbdahIxlNXDL4JmxjwGYS69csPTqg0ev+6GOMgWmXhvrdEyN8hQWl1kTFjM/jZ+qBA==",
40549 "dev": true, 40289 "dev": true,
40550 "requires": { 40290 "requires": {
40551 "app-builder-lib": "22.14.5", 40291 "app-builder-lib": "22.14.10",
40552 "builder-util": "22.14.5", 40292 "builder-util": "22.14.7",
40553 "builder-util-runtime": "8.9.1", 40293 "builder-util-runtime": "8.9.2",
40554 "dmg-license": "^1.0.9", 40294 "dmg-license": "^1.0.9",
40555 "fs-extra": "^10.0.0", 40295 "fs-extra": "^10.0.0",
40556 "iconv-lite": "^0.6.2", 40296 "iconv-lite": "^0.6.2",
@@ -40558,19 +40298,18 @@
40558 } 40298 }
40559 }, 40299 },
40560 "dmg-license": { 40300 "dmg-license": {
40561 "version": "1.0.9", 40301 "version": "1.0.10",
40562 "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.9.tgz", 40302 "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.10.tgz",
40563 "integrity": "sha512-Rq6qMDaDou2+aPN2SYy0x7LDznoJ/XaG6oDcH5wXUp+WRWQMUYE6eM+F+nex+/LSXOp1uw4HLFoed0YbfU8R/Q==", 40303 "integrity": "sha512-SVeeyiOeinV5JCPHXMdKOgK1YVbak/4+8WL2rBnfqRYpA5FaeFaQnQWb25x628am1w70CbipGDv9S51biph63A==",
40564 "dev": true, 40304 "dev": true,
40565 "optional": true, 40305 "optional": true,
40566 "requires": { 40306 "requires": {
40567 "@types/plist": "^3.0.1", 40307 "@types/plist": "^3.0.1",
40568 "@types/verror": "^1.10.3", 40308 "@types/verror": "^1.10.3",
40569 "ajv": "^6.10.0", 40309 "ajv": "^6.10.0",
40570 "cli-truncate": "^1.1.0",
40571 "crc": "^3.8.0", 40310 "crc": "^3.8.0",
40572 "iconv-corefoundation": "^1.1.6", 40311 "iconv-corefoundation": "^1.1.7",
40573 "plist": "^3.0.1", 40312 "plist": "^3.0.4",
40574 "smart-buffer": "^4.0.2", 40313 "smart-buffer": "^4.0.2",
40575 "verror": "^1.10.0" 40314 "verror": "^1.10.0"
40576 } 40315 }
@@ -40851,9 +40590,9 @@
40851 } 40590 }
40852 }, 40591 },
40853 "electron": { 40592 "electron": {
40854 "version": "15.3.0", 40593 "version": "15.3.3",
40855 "resolved": "https://registry.npmjs.org/electron/-/electron-15.3.0.tgz", 40594 "resolved": "https://registry.npmjs.org/electron/-/electron-15.3.3.tgz",
40856 "integrity": "sha512-YLzaKCFmSniNlz9+NUTNs7ssPyDc+bYOCYZ0b/D6DjVkOeIFz4SR8EYKqlOc8TcqlDNu18BbWqz6zbJPyAAURg==", 40595 "integrity": "sha512-tr4UaMosN6+s8vSbx6OxqRXDTTCBjjJkmDMv0b0sg8f+cRFQeY0u7xYbULpXS4B1+hHJmdh7Nz40Qpv0bJXa6w==",
40857 "dev": true, 40596 "dev": true,
40858 "requires": { 40597 "requires": {
40859 "@electron/get": "^1.13.0", 40598 "@electron/get": "^1.13.0",
@@ -40862,25 +40601,25 @@
40862 }, 40601 },
40863 "dependencies": { 40602 "dependencies": {
40864 "@types/node": { 40603 "@types/node": {
40865 "version": "14.17.32", 40604 "version": "14.17.34",
40866 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.32.tgz", 40605 "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.34.tgz",
40867 "integrity": "sha512-JcII3D5/OapPGx+eJ+Ik1SQGyt6WvuqdRfh9jUwL6/iHGjmyOriBDciBUu7lEIBTL2ijxwrR70WUnw5AEDmFvQ==", 40606 "integrity": "sha512-USUftMYpmuMzeWobskoPfzDi+vkpe0dvcOBRNOscFrGxVp4jomnRxWuVohgqBow2xyIPC0S3gjxV/5079jhmDg==",
40868 "dev": true 40607 "dev": true
40869 } 40608 }
40870 } 40609 }
40871 }, 40610 },
40872 "electron-builder": { 40611 "electron-builder": {
40873 "version": "22.14.5", 40612 "version": "22.14.10",
40874 "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.5.tgz", 40613 "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.14.10.tgz",
40875 "integrity": "sha512-N73hSbXFz6Mz5Z6h6C5ly6CB+dUN6k1LuCDJjI8VF47bMXv/QE0HE+Kkb0GPKqTqM7Hsk/yIYX+kHCfSkR5FGg==", 40614 "integrity": "sha512-IGYziKc3/nz6P/HhsO6ls2ACIvkMOHUu5jKw+h4g/muT2iBUSNCuyh20VuLQnmR5ggo8uGVuv485GtJc/HP8ig==",
40876 "dev": true, 40615 "dev": true,
40877 "requires": { 40616 "requires": {
40878 "@types/yargs": "^17.0.1", 40617 "@types/yargs": "^17.0.1",
40879 "app-builder-lib": "22.14.5", 40618 "app-builder-lib": "22.14.10",
40880 "builder-util": "22.14.5", 40619 "builder-util": "22.14.7",
40881 "builder-util-runtime": "8.9.1", 40620 "builder-util-runtime": "8.9.2",
40882 "chalk": "^4.1.1", 40621 "chalk": "^4.1.1",
40883 "dmg-builder": "22.14.5", 40622 "dmg-builder": "22.14.10",
40884 "fs-extra": "^10.0.0", 40623 "fs-extra": "^10.0.0",
40885 "is-ci": "^3.0.0", 40624 "is-ci": "^3.0.0",
40886 "lazy-val": "^1.0.5", 40625 "lazy-val": "^1.0.5",
@@ -40941,9 +40680,9 @@
40941 } 40680 }
40942 }, 40681 },
40943 "electron-dl": { 40682 "electron-dl": {
40944 "version": "3.2.1", 40683 "version": "3.3.0",
40945 "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.2.1.tgz", 40684 "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.3.0.tgz",
40946 "integrity": "sha512-k5DFjocJlXbrjshO1zeWe/Gz7HkGwCgnehHPemiyzN2B/LfLlnbIX7sCj5F+huTwZ2l+nQehTI4IR37xvCn6FQ==", 40685 "integrity": "sha512-Zwaz/OMGPIfBLV2SQH4sTsdDOs/U4y5AOHfremMBXEpjIxX+SiTx845DZAvJJwgb5hfowyWOBLiJhd/emBNLLQ==",
40947 "requires": { 40686 "requires": {
40948 "ext-name": "^5.0.0", 40687 "ext-name": "^5.0.0",
40949 "pupa": "^2.0.1", 40688 "pupa": "^2.0.1",
@@ -41043,14 +40782,14 @@
41043 } 40782 }
41044 }, 40783 },
41045 "electron-publish": { 40784 "electron-publish": {
41046 "version": "22.14.5", 40785 "version": "22.14.7",
41047 "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.5.tgz", 40786 "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.14.7.tgz",
41048 "integrity": "sha512-h+NANRdaA0PqGF15GKvorseWPzh1PXa/zx4I37//PIokW8eKIov8ky23foUSb55ZFWUHGpxQJux7y2NCfBtQeg==", 40787 "integrity": "sha512-sqZX/64k0B7sQeaDzFDE6m7r2zOtFgdmWAFnkv10bLlbHagkH9AkwwcjiGBpIto7mUBp89ntL7Ij5QFvldqI4Q==",
41049 "dev": true, 40788 "dev": true,
41050 "requires": { 40789 "requires": {
41051 "@types/fs-extra": "^9.0.11", 40790 "@types/fs-extra": "^9.0.11",
41052 "builder-util": "22.14.5", 40791 "builder-util": "22.14.7",
41053 "builder-util-runtime": "8.9.1", 40792 "builder-util-runtime": "8.9.2",
41054 "chalk": "^4.1.1", 40793 "chalk": "^4.1.1",
41055 "fs-extra": "^10.0.0", 40794 "fs-extra": "^10.0.0",
41056 "lazy-val": "^1.0.5", 40795 "lazy-val": "^1.0.5",
@@ -41119,35 +40858,24 @@
41119 } 40858 }
41120 }, 40859 },
41121 "electron-to-chromium": { 40860 "electron-to-chromium": {
41122 "version": "1.3.890", 40861 "version": "1.3.904",
41123 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.890.tgz", 40862 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.904.tgz",
41124 "integrity": "sha512-VWlVXSkv0cA/OOehrEyqjUTHwV8YXCPTfPvbtoeU2aHR21vI4Ejh5aC4AxUwOmbLbBgb6Gd3URZahoCxtBqCYQ==", 40863 "integrity": "sha512-x5uZWXcVNYkTh4JubD7KSC1VMKz0vZwJUqVwY3ihsW0bst1BXDe494Uqbg3Y0fDGVjJqA8vEeGuvO5foyH2+qw==",
41125 "dev": true 40864 "dev": true
41126 }, 40865 },
41127 "electron-updater": { 40866 "electron-updater": {
41128 "version": "4.3.9", 40867 "version": "4.6.2",
41129 "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.3.9.tgz", 40868 "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-4.6.2.tgz",
41130 "integrity": "sha512-LCNfedSwZfS4Hza+pDyPR05LqHtGorCStaBgVpRnfKxOlZcvpYEX0AbMeH5XUtbtGRoH2V8osbbf2qKPNb7AsA==", 40869 "integrity": "sha512-KAloJQNXwW2j81n0o2KgBsiRsxp2OS15nty4nZLUjZYNuRyJ7yp2zeKPL4fVNGY6Ave491ht7/Dyz5OIykJf9g==",
41131 "requires": { 40870 "requires": {
41132 "@types/semver": "^7.3.5", 40871 "@types/semver": "^7.3.6",
41133 "builder-util-runtime": "8.7.5", 40872 "builder-util-runtime": "8.9.2",
41134 "fs-extra": "^10.0.0", 40873 "fs-extra": "^10.0.0",
41135 "js-yaml": "^4.1.0", 40874 "js-yaml": "^4.1.0",
41136 "lazy-val": "^1.0.4", 40875 "lazy-val": "^1.0.5",
41137 "lodash.escaperegexp": "^4.1.2", 40876 "lodash.escaperegexp": "^4.1.2",
41138 "lodash.isequal": "^4.5.0", 40877 "lodash.isequal": "^4.5.0",
41139 "semver": "^7.3.5" 40878 "semver": "^7.3.5"
41140 },
41141 "dependencies": {
41142 "builder-util-runtime": {
41143 "version": "8.7.5",
41144 "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.5.tgz",
41145 "integrity": "sha512-fgUFHKtMNjdvH6PDRFntdIGUPgwZ69sXsAqEulCtoiqgWes5agrMq/Ud274zjJRTbckYh2PHh8/1CpFc6dpsbQ==",
41146 "requires": {
41147 "debug": "^4.3.2",
41148 "sax": "^1.2.4"
41149 }
41150 }
41151 } 40879 }
41152 }, 40880 },
41153 "electron-util": { 40881 "electron-util": {
@@ -41510,12 +41238,12 @@
41510 } 41238 }
41511 }, 41239 },
41512 "eslint": { 41240 "eslint": {
41513 "version": "8.1.0", 41241 "version": "8.2.0",
41514 "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.1.0.tgz", 41242 "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.2.0.tgz",
41515 "integrity": "sha512-JZvNneArGSUsluHWJ8g8MMs3CfIEzwaLx9KyH4tZ2i+R2/rPWzL8c0zg3rHdwYVpN/1sB9gqnjHwz9HoeJpGHw==", 41243 "integrity": "sha512-erw7XmM+CLxTOickrimJ1SiF55jiNlVSp2qqm0NuBWPtHYQCegD5ZMaW0c3i5ytPqL+SSLaCxdvQXFPLJn+ABw==",
41516 "dev": true, 41244 "dev": true,
41517 "requires": { 41245 "requires": {
41518 "@eslint/eslintrc": "^1.0.3", 41246 "@eslint/eslintrc": "^1.0.4",
41519 "@humanwhocodes/config-array": "^0.6.0", 41247 "@humanwhocodes/config-array": "^0.6.0",
41520 "ajv": "^6.10.0", 41248 "ajv": "^6.10.0",
41521 "chalk": "^4.0.0", 41249 "chalk": "^4.0.0",
@@ -41549,7 +41277,7 @@
41549 "progress": "^2.0.0", 41277 "progress": "^2.0.0",
41550 "regexpp": "^3.2.0", 41278 "regexpp": "^3.2.0",
41551 "semver": "^7.2.1", 41279 "semver": "^7.2.1",
41552 "strip-ansi": "^6.0.0", 41280 "strip-ansi": "^6.0.1",
41553 "strip-json-comments": "^3.1.0", 41281 "strip-json-comments": "^3.1.0",
41554 "text-table": "^0.2.0", 41282 "text-table": "^0.2.0",
41555 "v8-compile-cache": "^2.0.3" 41283 "v8-compile-cache": "^2.0.3"
@@ -41621,9 +41349,9 @@
41621 } 41349 }
41622 }, 41350 },
41623 "eslint-visitor-keys": { 41351 "eslint-visitor-keys": {
41624 "version": "3.0.0", 41352 "version": "3.1.0",
41625 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", 41353 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
41626 "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", 41354 "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
41627 "dev": true 41355 "dev": true
41628 }, 41356 },
41629 "globals": { 41357 "globals": {
@@ -41671,34 +41399,43 @@
41671 } 41399 }
41672 }, 41400 },
41673 "eslint-config-airbnb": { 41401 "eslint-config-airbnb": {
41674 "version": "18.2.1", 41402 "version": "19.0.0",
41675 "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz", 41403 "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.0.tgz",
41676 "integrity": "sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==", 41404 "integrity": "sha512-f5FzCDw8osQJtifOGazdBtYuDOH38FVQSOwHvSU0iFjAmkdl4zQ1jG+YV6sVNt4gqVubqJwn98zZQzDoaCwDyw==",
41677 "dev": true, 41405 "dev": true,
41678 "requires": { 41406 "requires": {
41679 "eslint-config-airbnb-base": "^14.2.1", 41407 "eslint-config-airbnb-base": "^15.0.0",
41680 "object.assign": "^4.1.2", 41408 "object.assign": "^4.1.2",
41681 "object.entries": "^1.1.2" 41409 "object.entries": "^1.1.5"
41682 } 41410 }
41683 }, 41411 },
41684 "eslint-config-airbnb-base": { 41412 "eslint-config-airbnb-base": {
41685 "version": "14.2.1", 41413 "version": "15.0.0",
41686 "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", 41414 "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz",
41687 "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", 41415 "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==",
41688 "dev": true, 41416 "dev": true,
41689 "requires": { 41417 "requires": {
41690 "confusing-browser-globals": "^1.0.10", 41418 "confusing-browser-globals": "^1.0.10",
41691 "object.assign": "^4.1.2", 41419 "object.assign": "^4.1.2",
41692 "object.entries": "^1.1.2" 41420 "object.entries": "^1.1.5",
41421 "semver": "^6.3.0"
41422 },
41423 "dependencies": {
41424 "semver": {
41425 "version": "6.3.0",
41426 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
41427 "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
41428 "dev": true
41429 }
41693 } 41430 }
41694 }, 41431 },
41695 "eslint-config-airbnb-typescript": { 41432 "eslint-config-airbnb-typescript": {
41696 "version": "14.0.1", 41433 "version": "16.0.0",
41697 "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-14.0.1.tgz", 41434 "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-16.0.0.tgz",
41698 "integrity": "sha512-tF4GwC3sRrw8kEj4/yxX8F7AcLzj/1IESBnsCiFMplzYmxre459qm2z9DFkCpqBVQFSH6j2K4+VKVteX4m0GsQ==", 41435 "integrity": "sha512-qDOyD0YYZo5Us1YvOnWig2Ly/+IlQKmMZpnqKnJgVtHdK8SkjaSyVBHKbD41dEaQxk8vRVGBC94PuR2ceSwbLQ==",
41699 "dev": true, 41436 "dev": true,
41700 "requires": { 41437 "requires": {
41701 "eslint-config-airbnb-base": "14.2.1" 41438 "eslint-config-airbnb-base": "^15.0.0"
41702 } 41439 }
41703 }, 41440 },
41704 "eslint-config-prettier": { 41441 "eslint-config-prettier": {
@@ -41800,9 +41537,9 @@
41800 } 41537 }
41801 }, 41538 },
41802 "eslint-plugin-import": { 41539 "eslint-plugin-import": {
41803 "version": "2.25.2", 41540 "version": "2.25.3",
41804 "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz", 41541 "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz",
41805 "integrity": "sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==", 41542 "integrity": "sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==",
41806 "dev": true, 41543 "dev": true,
41807 "requires": { 41544 "requires": {
41808 "array-includes": "^3.1.4", 41545 "array-includes": "^3.1.4",
@@ -41810,9 +41547,9 @@
41810 "debug": "^2.6.9", 41547 "debug": "^2.6.9",
41811 "doctrine": "^2.1.0", 41548 "doctrine": "^2.1.0",
41812 "eslint-import-resolver-node": "^0.3.6", 41549 "eslint-import-resolver-node": "^0.3.6",
41813 "eslint-module-utils": "^2.7.0", 41550 "eslint-module-utils": "^2.7.1",
41814 "has": "^1.0.3", 41551 "has": "^1.0.3",
41815 "is-core-module": "^2.7.0", 41552 "is-core-module": "^2.8.0",
41816 "is-glob": "^4.0.3", 41553 "is-glob": "^4.0.3",
41817 "minimatch": "^3.0.4", 41554 "minimatch": "^3.0.4",
41818 "object.values": "^1.1.5", 41555 "object.values": "^1.1.5",
@@ -41847,31 +41584,32 @@
41847 } 41584 }
41848 }, 41585 },
41849 "eslint-plugin-jest": { 41586 "eslint-plugin-jest": {
41850 "version": "25.2.2", 41587 "version": "25.2.4",
41851 "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.2.2.tgz", 41588 "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.2.4.tgz",
41852 "integrity": "sha512-frn5yhOF60U4kcqozO3zKTNZQUk+mfx037XOy2iiYL8FhorEkuCuL3/flzKcY1ECDP2WYT9ydmvlO3fRW9o4mg==", 41589 "integrity": "sha512-HRyinpgmEdkVr7pNPaYPHCoGqEzpgk79X8pg/xCeoAdurbyQjntJQ4pTzHl7BiVEBlam/F1Qsn+Dk0HtJO7Aaw==",
41853 "dev": true, 41590 "dev": true,
41854 "requires": { 41591 "requires": {
41855 "@typescript-eslint/experimental-utils": "^5.0.0" 41592 "@typescript-eslint/experimental-utils": "^5.0.0"
41856 } 41593 }
41857 }, 41594 },
41858 "eslint-plugin-jsx-a11y": { 41595 "eslint-plugin-jsx-a11y": {
41859 "version": "6.4.1", 41596 "version": "6.5.1",
41860 "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz", 41597 "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz",
41861 "integrity": "sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==", 41598 "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==",
41862 "dev": true, 41599 "dev": true,
41863 "requires": { 41600 "requires": {
41864 "@babel/runtime": "^7.11.2", 41601 "@babel/runtime": "^7.16.3",
41865 "aria-query": "^4.2.2", 41602 "aria-query": "^4.2.2",
41866 "array-includes": "^3.1.1", 41603 "array-includes": "^3.1.4",
41867 "ast-types-flow": "^0.0.7", 41604 "ast-types-flow": "^0.0.7",
41868 "axe-core": "^4.0.2", 41605 "axe-core": "^4.3.5",
41869 "axobject-query": "^2.2.0", 41606 "axobject-query": "^2.2.0",
41870 "damerau-levenshtein": "^1.0.6", 41607 "damerau-levenshtein": "^1.0.7",
41871 "emoji-regex": "^9.0.0", 41608 "emoji-regex": "^9.2.2",
41872 "has": "^1.0.3", 41609 "has": "^1.0.3",
41873 "jsx-ast-utils": "^3.1.0", 41610 "jsx-ast-utils": "^3.2.1",
41874 "language-tags": "^1.0.5" 41611 "language-tags": "^1.0.5",
41612 "minimatch": "^3.0.4"
41875 } 41613 }
41876 }, 41614 },
41877 "eslint-plugin-prettier": { 41615 "eslint-plugin-prettier": {
@@ -41884,25 +41622,25 @@
41884 } 41622 }
41885 }, 41623 },
41886 "eslint-plugin-react": { 41624 "eslint-plugin-react": {
41887 "version": "7.26.1", 41625 "version": "7.27.1",
41888 "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.26.1.tgz", 41626 "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz",
41889 "integrity": "sha512-Lug0+NOFXeOE+ORZ5pbsh6mSKjBKXDXItUD2sQoT+5Yl0eoT82DqnXeTMfUare4QVCn9QwXbfzO/dBLjLXwVjQ==", 41627 "integrity": "sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==",
41890 "dev": true, 41628 "dev": true,
41891 "requires": { 41629 "requires": {
41892 "array-includes": "^3.1.3", 41630 "array-includes": "^3.1.4",
41893 "array.prototype.flatmap": "^1.2.4", 41631 "array.prototype.flatmap": "^1.2.5",
41894 "doctrine": "^2.1.0", 41632 "doctrine": "^2.1.0",
41895 "estraverse": "^5.2.0", 41633 "estraverse": "^5.3.0",
41896 "jsx-ast-utils": "^2.4.1 || ^3.0.0", 41634 "jsx-ast-utils": "^2.4.1 || ^3.0.0",
41897 "minimatch": "^3.0.4", 41635 "minimatch": "^3.0.4",
41898 "object.entries": "^1.1.4", 41636 "object.entries": "^1.1.5",
41899 "object.fromentries": "^2.0.4", 41637 "object.fromentries": "^2.0.5",
41900 "object.hasown": "^1.0.0", 41638 "object.hasown": "^1.1.0",
41901 "object.values": "^1.1.4", 41639 "object.values": "^1.1.5",
41902 "prop-types": "^15.7.2", 41640 "prop-types": "^15.7.2",
41903 "resolve": "^2.0.0-next.3", 41641 "resolve": "^2.0.0-next.3",
41904 "semver": "^6.3.0", 41642 "semver": "^6.3.0",
41905 "string.prototype.matchall": "^4.0.5" 41643 "string.prototype.matchall": "^4.0.6"
41906 }, 41644 },
41907 "dependencies": { 41645 "dependencies": {
41908 "doctrine": { 41646 "doctrine": {
@@ -41933,15 +41671,15 @@
41933 } 41671 }
41934 }, 41672 },
41935 "eslint-plugin-react-hooks": { 41673 "eslint-plugin-react-hooks": {
41936 "version": "4.2.0", 41674 "version": "4.3.0",
41937 "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz", 41675 "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz",
41938 "integrity": "sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ==", 41676 "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==",
41939 "dev": true 41677 "dev": true
41940 }, 41678 },
41941 "eslint-plugin-unicorn": { 41679 "eslint-plugin-unicorn": {
41942 "version": "37.0.1", 41680 "version": "39.0.0",
41943 "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-37.0.1.tgz", 41681 "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-39.0.0.tgz",
41944 "integrity": "sha512-E1jq5u9ojnadisJcPi+hMXTGSiIzkIUMDvWsBudsCGXvKUB2aNSU2TcfyW2/jAS5A4ryBXfzxLykMxX1EdluSQ==", 41682 "integrity": "sha512-fd5RK2FtYjGcIx3wra7csIE/wkkmBo22T1gZtRTsLr1Mb+KsFKJ+JOdSqhHXQUrI/JTs/Mon64cEYzTgSCbltw==",
41945 "dev": true, 41683 "dev": true,
41946 "requires": { 41684 "requires": {
41947 "@babel/helper-validator-identifier": "^7.14.9", 41685 "@babel/helper-validator-identifier": "^7.14.9",
@@ -42032,9 +41770,9 @@
42032 }, 41770 },
42033 "dependencies": { 41771 "dependencies": {
42034 "eslint-visitor-keys": { 41772 "eslint-visitor-keys": {
42035 "version": "3.0.0", 41773 "version": "3.1.0",
42036 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz", 41774 "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
42037 "integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==", 41775 "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
42038 "dev": true 41776 "dev": true
42039 } 41777 }
42040 } 41778 }
@@ -42423,6 +42161,12 @@
42423 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 42161 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
42424 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", 42162 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
42425 "dev": true 42163 "dev": true
42164 },
42165 "toidentifier": {
42166 "version": "1.0.0",
42167 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
42168 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
42169 "dev": true
42426 } 42170 }
42427 } 42171 }
42428 }, 42172 },
@@ -42540,9 +42284,10 @@
42540 } 42284 }
42541 }, 42285 },
42542 "extsprintf": { 42286 "extsprintf": {
42543 "version": "1.4.0", 42287 "version": "1.4.1",
42544 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", 42288 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz",
42545 "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=", 42289 "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==",
42290 "dev": true,
42546 "optional": true 42291 "optional": true
42547 }, 42292 },
42548 "fancy-log": { 42293 "fancy-log": {
@@ -42888,9 +42633,9 @@
42888 } 42633 }
42889 }, 42634 },
42890 "flatted": { 42635 "flatted": {
42891 "version": "3.2.2", 42636 "version": "3.2.4",
42892 "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", 42637 "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz",
42893 "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", 42638 "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==",
42894 "dev": true 42639 "dev": true
42895 }, 42640 },
42896 "flush-write-stream": { 42641 "flush-write-stream": {
@@ -42909,9 +42654,9 @@
42909 "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" 42654 "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
42910 }, 42655 },
42911 "follow-redirects": { 42656 "follow-redirects": {
42912 "version": "1.14.4", 42657 "version": "1.14.5",
42913 "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", 42658 "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz",
42914 "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", 42659 "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==",
42915 "dev": true 42660 "dev": true
42916 }, 42661 },
42917 "for-in": { 42662 "for-in": {
@@ -43073,19 +42818,6 @@
43073 "rimraf": "2" 42818 "rimraf": "2"
43074 }, 42819 },
43075 "dependencies": { 42820 "dependencies": {
43076 "glob": {
43077 "version": "7.2.0",
43078 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
43079 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
43080 "requires": {
43081 "fs.realpath": "^1.0.0",
43082 "inflight": "^1.0.4",
43083 "inherits": "2",
43084 "minimatch": "^3.0.4",
43085 "once": "^1.3.0",
43086 "path-is-absolute": "^1.0.0"
43087 }
43088 },
43089 "rimraf": { 42821 "rimraf": {
43090 "version": "2.7.1", 42822 "version": "2.7.1",
43091 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 42823 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -43231,14 +42963,14 @@
43231 } 42963 }
43232 }, 42964 },
43233 "glob": { 42965 "glob": {
43234 "version": "5.0.15", 42966 "version": "7.2.0",
43235 "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 42967 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
43236 "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", 42968 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
43237 "optional": true,
43238 "requires": { 42969 "requires": {
42970 "fs.realpath": "^1.0.0",
43239 "inflight": "^1.0.4", 42971 "inflight": "^1.0.4",
43240 "inherits": "2", 42972 "inherits": "2",
43241 "minimatch": "2 || 3", 42973 "minimatch": "^3.0.4",
43242 "once": "^1.3.0", 42974 "once": "^1.3.0",
43243 "path-is-absolute": "^1.0.0" 42975 "path-is-absolute": "^1.0.0"
43244 } 42976 }
@@ -43270,20 +43002,6 @@
43270 "unique-stream": "^2.0.2" 43002 "unique-stream": "^2.0.2"
43271 }, 43003 },
43272 "dependencies": { 43004 "dependencies": {
43273 "glob": {
43274 "version": "7.2.0",
43275 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
43276 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
43277 "dev": true,
43278 "requires": {
43279 "fs.realpath": "^1.0.0",
43280 "inflight": "^1.0.4",
43281 "inherits": "2",
43282 "minimatch": "^3.0.4",
43283 "once": "^1.3.0",
43284 "path-is-absolute": "^1.0.0"
43285 }
43286 },
43287 "glob-parent": { 43005 "glob-parent": {
43288 "version": "3.1.0", 43006 "version": "3.1.0",
43289 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 43007 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
@@ -43948,25 +43666,6 @@
43948 "terser": "^5.9.0", 43666 "terser": "^5.9.0",
43949 "through2": "^4.0.2", 43667 "through2": "^4.0.2",
43950 "vinyl-sourcemaps-apply": "^0.2.1" 43668 "vinyl-sourcemaps-apply": "^0.2.1"
43951 },
43952 "dependencies": {
43953 "source-map": {
43954 "version": "0.7.3",
43955 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
43956 "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
43957 "dev": true
43958 },
43959 "terser": {
43960 "version": "5.9.0",
43961 "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz",
43962 "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==",
43963 "dev": true,
43964 "requires": {
43965 "commander": "^2.20.0",
43966 "source-map": "~0.7.2",
43967 "source-map-support": "~0.5.20"
43968 }
43969 }
43970 } 43669 }
43971 }, 43670 },
43972 "gulp-typescript": { 43671 "gulp-typescript": {
@@ -44405,6 +44104,31 @@
44405 "dot-case": "^3.0.4", 44104 "dot-case": "^3.0.4",
44406 "tslib": "^2.0.3" 44105 "tslib": "^2.0.3"
44407 } 44106 }
44107 },
44108 "source-map": {
44109 "version": "0.6.1",
44110 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
44111 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
44112 "dev": true
44113 },
44114 "terser": {
44115 "version": "4.8.0",
44116 "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
44117 "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
44118 "dev": true,
44119 "requires": {
44120 "commander": "^2.20.0",
44121 "source-map": "~0.6.1",
44122 "source-map-support": "~0.5.12"
44123 },
44124 "dependencies": {
44125 "commander": {
44126 "version": "2.20.3",
44127 "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
44128 "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
44129 "dev": true
44130 }
44131 }
44408 } 44132 }
44409 } 44133 }
44410 }, 44134 },
@@ -44450,15 +44174,15 @@
44450 "dev": true 44174 "dev": true
44451 }, 44175 },
44452 "http-errors": { 44176 "http-errors": {
44453 "version": "1.8.0", 44177 "version": "1.8.1",
44454 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", 44178 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
44455 "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", 44179 "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
44456 "requires": { 44180 "requires": {
44457 "depd": "~1.1.2", 44181 "depd": "~1.1.2",
44458 "inherits": "2.0.4", 44182 "inherits": "2.0.4",
44459 "setprototypeof": "1.2.0", 44183 "setprototypeof": "1.2.0",
44460 "statuses": ">= 1.5.0 < 2", 44184 "statuses": ">= 1.5.0 < 2",
44461 "toidentifier": "1.0.0" 44185 "toidentifier": "1.0.1"
44462 } 44186 }
44463 }, 44187 },
44464 "http-parser-js": { 44188 "http-parser-js": {
@@ -44606,13 +44330,13 @@
44606 "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" 44330 "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ=="
44607 }, 44331 },
44608 "iconv-corefoundation": { 44332 "iconv-corefoundation": {
44609 "version": "1.1.6", 44333 "version": "1.1.7",
44610 "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.6.tgz", 44334 "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz",
44611 "integrity": "sha512-1NBe55C75bKGZaY9UHxvXG3G0gEp0ziht7quhuFrW3SPgZDw9HI6qvYXRSV5M/Eupyu8ljuJ6Cba+ec15PZ4Xw==", 44335 "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==",
44612 "dev": true, 44336 "dev": true,
44613 "optional": true, 44337 "optional": true,
44614 "requires": { 44338 "requires": {
44615 "cli-truncate": "^1.1.0", 44339 "cli-truncate": "^2.1.0",
44616 "node-addon-api": "^1.6.3" 44340 "node-addon-api": "^1.6.3"
44617 }, 44341 },
44618 "dependencies": { 44342 "dependencies": {
@@ -44646,9 +44370,9 @@
44646 "dev": true 44370 "dev": true
44647 }, 44371 },
44648 "ignore": { 44372 "ignore": {
44649 "version": "5.1.8", 44373 "version": "5.1.9",
44650 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", 44374 "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.9.tgz",
44651 "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", 44375 "integrity": "sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==",
44652 "dev": true 44376 "dev": true
44653 }, 44377 },
44654 "ignore-walk": { 44378 "ignore-walk": {
@@ -44915,9 +44639,9 @@
44915 "dev": true 44639 "dev": true
44916 }, 44640 },
44917 "intl-messageformat": { 44641 "intl-messageformat": {
44918 "version": "9.9.4", 44642 "version": "9.9.6",
44919 "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.9.4.tgz", 44643 "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.9.6.tgz",
44920 "integrity": "sha512-+Mz5LMTV+JCybFBym69z+XnE47wnIjHC31Jz7We6SE0yKyjf/neaWAFz8teuT6OUw/AW3Orr5LO4SHVNXl5keg==", 44644 "integrity": "sha512-xgoBydnw9zGUtgCiUcxNTzrRLzAbBIgWyKvMjL2jFNCx7H0148GGQWNVOpoiON5SlcFr8lyMWdbb0m+HjydanQ==",
44921 "requires": { 44645 "requires": {
44922 "@formatjs/fast-memoize": "1.2.0", 44646 "@formatjs/fast-memoize": "1.2.0",
44923 "@formatjs/icu-messageformat-parser": "2.0.14", 44647 "@formatjs/icu-messageformat-parser": "2.0.14",
@@ -45108,11 +44832,6 @@
45108 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 44832 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
45109 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 44833 "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
45110 }, 44834 },
45111 "is-function": {
45112 "version": "1.0.2",
45113 "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz",
45114 "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
45115 },
45116 "is-generator-fn": { 44835 "is-generator-fn": {
45117 "version": "2.1.0", 44836 "version": "2.1.0",
45118 "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", 44837 "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
@@ -45798,20 +45517,6 @@
45798 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 45517 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
45799 "dev": true 45518 "dev": true
45800 }, 45519 },
45801 "glob": {
45802 "version": "7.2.0",
45803 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
45804 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
45805 "dev": true,
45806 "requires": {
45807 "fs.realpath": "^1.0.0",
45808 "inflight": "^1.0.4",
45809 "inherits": "2",
45810 "minimatch": "^3.0.4",
45811 "once": "^1.3.0",
45812 "path-is-absolute": "^1.0.0"
45813 }
45814 },
45815 "has-flag": { 45520 "has-flag": {
45816 "version": "4.0.0", 45521 "version": "4.0.0",
45817 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 45522 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -46524,20 +46229,6 @@
46524 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 46229 "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
46525 "dev": true 46230 "dev": true
46526 }, 46231 },
46527 "glob": {
46528 "version": "7.2.0",
46529 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
46530 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
46531 "dev": true,
46532 "requires": {
46533 "fs.realpath": "^1.0.0",
46534 "inflight": "^1.0.4",
46535 "inherits": "2",
46536 "minimatch": "^3.0.4",
46537 "once": "^1.3.0",
46538 "path-is-absolute": "^1.0.0"
46539 }
46540 },
46541 "has-flag": { 46232 "has-flag": {
46542 "version": "4.0.0", 46233 "version": "4.0.0",
46543 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 46234 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -46769,9 +46460,9 @@
46769 } 46460 }
46770 }, 46461 },
46771 "camelcase": { 46462 "camelcase": {
46772 "version": "6.2.0", 46463 "version": "6.2.1",
46773 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", 46464 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz",
46774 "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", 46465 "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==",
46775 "dev": true 46466 "dev": true
46776 }, 46467 },
46777 "chalk": { 46468 "chalk": {
@@ -47201,11 +46892,28 @@
47201 "verror": "1.10.0" 46892 "verror": "1.10.0"
47202 }, 46893 },
47203 "dependencies": { 46894 "dependencies": {
46895 "core-util-is": {
46896 "version": "1.0.2",
46897 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
46898 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
46899 "optional": true
46900 },
47204 "extsprintf": { 46901 "extsprintf": {
47205 "version": "1.3.0", 46902 "version": "1.3.0",
47206 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 46903 "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
47207 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", 46904 "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
47208 "optional": true 46905 "optional": true
46906 },
46907 "verror": {
46908 "version": "1.10.0",
46909 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
46910 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
46911 "optional": true,
46912 "requires": {
46913 "assert-plus": "^1.0.0",
46914 "core-util-is": "1.0.2",
46915 "extsprintf": "^1.2.0"
46916 }
47209 } 46917 }
47210 } 46918 }
47211 }, 46919 },
@@ -47220,89 +46928,141 @@
47220 "tiny-warning": "^1.0.2" 46928 "tiny-warning": "^1.0.2"
47221 } 46929 }
47222 }, 46930 },
47223 "jss-camel-case": { 46931 "jss-plugin-camel-case": {
47224 "version": "6.1.0", 46932 "version": "10.8.2",
47225 "resolved": "https://registry.npmjs.org/jss-camel-case/-/jss-camel-case-6.1.0.tgz", 46933 "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.8.2.tgz",
47226 "integrity": "sha512-HPF2Q7wmNW1t79mCqSeU2vdd/vFFGpkazwvfHMOhPlMgXrJDzdj9viA2SaHk9ZbD5pfL63a8ylp4++irYbbzMQ==", 46934 "integrity": "sha512-2INyxR+1UdNuKf4v9It3tNfPvf7IPrtkiwzofeKuMd5D58/dxDJVUQYRVg/n460rTlHUfsEQx43hDrcxi9dSPA==",
47227 "requires": { 46935 "requires": {
47228 "hyphenate-style-name": "^1.0.2" 46936 "@babel/runtime": "^7.3.1",
46937 "hyphenate-style-name": "^1.0.3",
46938 "jss": "10.8.2"
47229 } 46939 }
47230 }, 46940 },
47231 "jss-compose": { 46941 "jss-plugin-compose": {
47232 "version": "5.0.0", 46942 "version": "10.8.2",
47233 "resolved": "https://registry.npmjs.org/jss-compose/-/jss-compose-5.0.0.tgz", 46943 "resolved": "https://registry.npmjs.org/jss-plugin-compose/-/jss-plugin-compose-10.8.2.tgz",
47234 "integrity": "sha512-YofRYuiA0+VbeOw0VjgkyO380sA4+TWDrW52nSluD9n+1FWOlDzNbgpZ/Sb3Y46+DcAbOS21W5jo6SAqUEiuwA==", 46944 "integrity": "sha512-X7fDQJ6IlIJoT8A3zc++LuC1hmSGKVudb3LyXp+vHv8r2hzzfXEEZty3y2CaC5CGrWcLlYquXENjqLNmLYMgMA==",
47235 "requires": { 46945 "requires": {
47236 "warning": "^3.0.0" 46946 "@babel/runtime": "^7.3.1",
46947 "jss": "10.8.2",
46948 "tiny-warning": "^1.0.2"
47237 } 46949 }
47238 }, 46950 },
47239 "jss-default-unit": { 46951 "jss-plugin-default-unit": {
47240 "version": "8.0.2", 46952 "version": "10.8.2",
47241 "resolved": "https://registry.npmjs.org/jss-default-unit/-/jss-default-unit-8.0.2.tgz", 46953 "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.8.2.tgz",
47242 "integrity": "sha512-WxNHrF/18CdoAGw2H0FqOEvJdREXVXLazn7PQYU7V6/BWkCV0GkmWsppNiExdw8dP4TU1ma1dT9zBNJ95feLmg==" 46954 "integrity": "sha512-UZ7cwT9NFYSG+SEy7noRU50s4zifulFdjkUNKE+u6mW7vFP960+RglWjTgMfh79G6OENZmaYnjHV/gcKV4nSxg==",
46955 "requires": {
46956 "@babel/runtime": "^7.3.1",
46957 "jss": "10.8.2"
46958 }
47243 }, 46959 },
47244 "jss-expand": { 46960 "jss-plugin-expand": {
47245 "version": "5.3.0", 46961 "version": "10.8.2",
47246 "resolved": "https://registry.npmjs.org/jss-expand/-/jss-expand-5.3.0.tgz", 46962 "resolved": "https://registry.npmjs.org/jss-plugin-expand/-/jss-plugin-expand-10.8.2.tgz",
47247 "integrity": "sha512-NiM4TbDVE0ykXSAw6dfFmB1LIqXP/jdd0ZMnlvlGgEMkMt+weJIl8Ynq1DsuBY9WwkNyzWktdqcEW2VN0RAtQg==" 46963 "integrity": "sha512-Iy4qsZbEcomXz5aBZJYGwnzK23vK3hqlwGleqmd19fY3L+WbqTmUnW8W0fWeXSuCkw2NknBTAJuEpFcgm3b0Pw==",
46964 "requires": {
46965 "@babel/runtime": "^7.3.1",
46966 "jss": "10.8.2"
46967 }
47248 }, 46968 },
47249 "jss-extend": { 46969 "jss-plugin-extend": {
47250 "version": "6.2.0", 46970 "version": "10.8.2",
47251 "resolved": "https://registry.npmjs.org/jss-extend/-/jss-extend-6.2.0.tgz", 46971 "resolved": "https://registry.npmjs.org/jss-plugin-extend/-/jss-plugin-extend-10.8.2.tgz",
47252 "integrity": "sha512-YszrmcB6o9HOsKPszK7NeDBNNjVyiW864jfoiHoMlgMIg2qlxKw70axZHqgczXHDcoyi/0/ikP1XaHDPRvYtEA==", 46972 "integrity": "sha512-NYu0cJ/Zb50ySPkegzbXQQfhXza0VpaRVXdXDex30yXqZpGcAdmhSg4HTv8vzHiL1v3uIOm641FYQX9WvLgSWw==",
47253 "requires": { 46973 "requires": {
47254 "warning": "^3.0.0" 46974 "@babel/runtime": "^7.3.1",
46975 "jss": "10.8.2",
46976 "tiny-warning": "^1.0.2"
47255 } 46977 }
47256 }, 46978 },
47257 "jss-global": { 46979 "jss-plugin-global": {
47258 "version": "3.0.0", 46980 "version": "10.8.2",
47259 "resolved": "https://registry.npmjs.org/jss-global/-/jss-global-3.0.0.tgz", 46981 "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.8.2.tgz",
47260 "integrity": "sha512-wxYn7vL+TImyQYGAfdplg7yaxnPQ9RaXY/cIA8hawaVnmmWxDHzBK32u1y+RAvWboa3lW83ya3nVZ/C+jyjZ5Q==" 46982 "integrity": "sha512-UaYMSPsYZ7s/ECGoj4KoHC2jwQd5iQ7K+FFGnCAILdQrv7hPmvM2Ydg45ThT/sH46DqktCRV2SqjRuxeBH8nRA==",
46983 "requires": {
46984 "@babel/runtime": "^7.3.1",
46985 "jss": "10.8.2"
46986 }
47261 }, 46987 },
47262 "jss-nested": { 46988 "jss-plugin-nested": {
47263 "version": "6.0.1", 46989 "version": "10.8.2",
47264 "resolved": "https://registry.npmjs.org/jss-nested/-/jss-nested-6.0.1.tgz", 46990 "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.8.2.tgz",
47265 "integrity": "sha512-rn964TralHOZxoyEgeq3hXY8hyuCElnvQoVrQwKHVmu55VRDd6IqExAx9be5HgK0yN/+hQdgAXQl/GUrBbbSTA==", 46991 "integrity": "sha512-acRvuPJOb930fuYmhkJaa994EADpt8TxI63Iyg96C8FJ9T2xRyU5T6R1IYKRwUiqZo+2Sr7fdGzRTDD4uBZaMA==",
47266 "requires": { 46992 "requires": {
47267 "warning": "^3.0.0" 46993 "@babel/runtime": "^7.3.1",
46994 "jss": "10.8.2",
46995 "tiny-warning": "^1.0.2"
47268 } 46996 }
47269 }, 46997 },
47270 "jss-preset-default": { 46998 "jss-plugin-props-sort": {
47271 "version": "4.5.0", 46999 "version": "10.8.2",
47272 "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-4.5.0.tgz", 47000 "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.8.2.tgz",
47273 "integrity": "sha512-qZbpRVtHT7hBPpZEBPFfafZKWmq3tA/An5RNqywDsZQGrlinIF/mGD9lmj6jGqu8GrED2SMHZ3pPKLmjCZoiaQ==", 47001 "integrity": "sha512-wqdcjayKRWBZnNpLUrXvsWqh+5J5YToAQ+8HNBNw0kZxVvCDwzhK2Nx6AKs7p+5/MbAh2PLgNW5Ym/ysbVAuqQ==",
47274 "requires": { 47002 "requires": {
47275 "jss-camel-case": "^6.1.0", 47003 "@babel/runtime": "^7.3.1",
47276 "jss-compose": "^5.0.0", 47004 "jss": "10.8.2"
47277 "jss-default-unit": "^8.0.2", 47005 }
47278 "jss-expand": "^5.3.0",
47279 "jss-extend": "^6.2.0",
47280 "jss-global": "^3.0.0",
47281 "jss-nested": "^6.0.1",
47282 "jss-props-sort": "^6.0.0",
47283 "jss-template": "^1.0.1",
47284 "jss-vendor-prefixer": "^7.0.0"
47285 }
47286 },
47287 "jss-props-sort": {
47288 "version": "6.0.0",
47289 "resolved": "https://registry.npmjs.org/jss-props-sort/-/jss-props-sort-6.0.0.tgz",
47290 "integrity": "sha512-E89UDcrphmI0LzmvYk25Hp4aE5ZBsXqMWlkFXS0EtPkunJkRr+WXdCNYbXbksIPnKlBenGB9OxzQY+mVc70S+g=="
47291 }, 47006 },
47292 "jss-template": { 47007 "jss-plugin-rule-value-function": {
47293 "version": "1.0.1", 47008 "version": "10.8.2",
47294 "resolved": "https://registry.npmjs.org/jss-template/-/jss-template-1.0.1.tgz", 47009 "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.8.2.tgz",
47295 "integrity": "sha512-m5BqEWha17fmIVXm1z8xbJhY6GFJxNB9H68GVnCWPyGYfxiAgY9WTQyvDAVj+pYRgrXSOfN5V1T4+SzN1sJTeg==", 47010 "integrity": "sha512-bW0EKAs+0HXpb6BKJhrn94IDdiWb0CnSluTkh0rGEgyzY/nmD1uV/Wf6KGlesGOZ9gmJzQy+9FFdxIUID1c9Ug==",
47296 "requires": { 47011 "requires": {
47297 "warning": "^3.0.0" 47012 "@babel/runtime": "^7.3.1",
47013 "jss": "10.8.2",
47014 "tiny-warning": "^1.0.2"
47298 } 47015 }
47299 }, 47016 },
47300 "jss-vendor-prefixer": { 47017 "jss-plugin-rule-value-observable": {
47301 "version": "7.0.0", 47018 "version": "10.8.2",
47302 "resolved": "https://registry.npmjs.org/jss-vendor-prefixer/-/jss-vendor-prefixer-7.0.0.tgz", 47019 "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-observable/-/jss-plugin-rule-value-observable-10.8.2.tgz",
47303 "integrity": "sha512-Agd+FKmvsI0HLcYXkvy8GYOw3AAASBUpsmIRvVQheps+JWaN892uFOInTr0DRydwaD91vSSUCU4NssschvF7MA==", 47020 "integrity": "sha512-NaJCfsEg8/6l/E8HstwL2w8kHj2LHhwoG4fXxefmdvNKmJMwBpnjech5dEPL72It4bZfIIYoynWbyxo3Q0ZKQQ==",
47304 "requires": { 47021 "requires": {
47305 "css-vendor": "^0.3.8" 47022 "@babel/runtime": "^7.3.1",
47023 "jss": "10.8.2",
47024 "symbol-observable": "^1.2.0"
47025 }
47026 },
47027 "jss-plugin-template": {
47028 "version": "10.8.2",
47029 "resolved": "https://registry.npmjs.org/jss-plugin-template/-/jss-plugin-template-10.8.2.tgz",
47030 "integrity": "sha512-oTVwYRUCuCLslHxuH73F15kFmDxc4YEJIn8kHBnNpGr99ZbQdRIgPabosVTfkgE8czuyTx0KM5u8zEeuL+v66A==",
47031 "requires": {
47032 "@babel/runtime": "^7.3.1",
47033 "jss": "10.8.2",
47034 "tiny-warning": "^1.0.2"
47035 }
47036 },
47037 "jss-plugin-vendor-prefixer": {
47038 "version": "10.8.2",
47039 "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.8.2.tgz",
47040 "integrity": "sha512-DeGv18QsSiYLSVIEB2+l0af6OToUe0JB+trpzUxyqD2QRC/5AzzDrCrYffO5AHZ81QbffYvSN/pkfZaTWpRXlg==",
47041 "requires": {
47042 "@babel/runtime": "^7.3.1",
47043 "css-vendor": "^2.0.8",
47044 "jss": "10.8.2"
47045 }
47046 },
47047 "jss-preset-default": {
47048 "version": "10.8.2",
47049 "resolved": "https://registry.npmjs.org/jss-preset-default/-/jss-preset-default-10.8.2.tgz",
47050 "integrity": "sha512-mgkr6DAZuvkEleHFEpOkm8Y+sTdK/r0HH8PxToLHgaWHbYS0JAb0g1tBSUMG24kFj98VOYLTllK1o0J4lWU/uw==",
47051 "requires": {
47052 "@babel/runtime": "^7.3.1",
47053 "jss": "10.8.2",
47054 "jss-plugin-camel-case": "10.8.2",
47055 "jss-plugin-compose": "10.8.2",
47056 "jss-plugin-default-unit": "10.8.2",
47057 "jss-plugin-expand": "10.8.2",
47058 "jss-plugin-extend": "10.8.2",
47059 "jss-plugin-global": "10.8.2",
47060 "jss-plugin-nested": "10.8.2",
47061 "jss-plugin-props-sort": "10.8.2",
47062 "jss-plugin-rule-value-function": "10.8.2",
47063 "jss-plugin-rule-value-observable": "10.8.2",
47064 "jss-plugin-template": "10.8.2",
47065 "jss-plugin-vendor-prefixer": "10.8.2"
47306 } 47066 }
47307 }, 47067 },
47308 "jsx-ast-utils": { 47068 "jsx-ast-utils": {
@@ -47901,9 +47661,9 @@
47901 } 47661 }
47902 }, 47662 },
47903 "loglevel": { 47663 "loglevel": {
47904 "version": "1.7.1", 47664 "version": "1.8.0",
47905 "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", 47665 "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz",
47906 "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", 47666 "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==",
47907 "dev": true 47667 "dev": true
47908 }, 47668 },
47909 "long": { 47669 "long": {
@@ -48358,22 +48118,22 @@
48358 } 48118 }
48359 }, 48119 },
48360 "mime": { 48120 "mime": {
48361 "version": "2.5.2", 48121 "version": "2.6.0",
48362 "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", 48122 "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
48363 "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", 48123 "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
48364 "dev": true 48124 "dev": true
48365 }, 48125 },
48366 "mime-db": { 48126 "mime-db": {
48367 "version": "1.50.0", 48127 "version": "1.51.0",
48368 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", 48128 "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz",
48369 "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" 48129 "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g=="
48370 }, 48130 },
48371 "mime-types": { 48131 "mime-types": {
48372 "version": "2.1.33", 48132 "version": "2.1.34",
48373 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", 48133 "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz",
48374 "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", 48134 "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==",
48375 "requires": { 48135 "requires": {
48376 "mime-db": "1.50.0" 48136 "mime-db": "1.51.0"
48377 } 48137 }
48378 }, 48138 },
48379 "mimic-fn": { 48139 "mimic-fn": {
@@ -48603,22 +48363,26 @@
48603 } 48363 }
48604 }, 48364 },
48605 "mobx-react": { 48365 "mobx-react": {
48606 "version": "5.4.4", 48366 "version": "6.3.1",
48607 "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-5.4.4.tgz", 48367 "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-6.3.1.tgz",
48608 "integrity": "sha512-2mTzpyEjVB/RGk2i6KbcmP4HWcAUFox5ZRCrGvSyz49w20I4C4qql63grPpYrS9E9GKwgydBHQlA4y665LuRCQ==", 48368 "integrity": "sha512-IOxdJGnRSNSJrL2uGpWO5w9JH5q5HoxEqwOF4gye1gmZYdjoYkkMzSGMDnRCUpN/BNzZcFoMdHXrjvkwO7KgaQ==",
48609 "requires": { 48369 "requires": {
48610 "hoist-non-react-statics": "^3.0.0", 48370 "mobx-react-lite": "^2.2.0"
48611 "react-lifecycles-compat": "^3.0.2"
48612 } 48371 }
48613 }, 48372 },
48614 "mobx-react-form": { 48373 "mobx-react-form": {
48615 "version": "1.35.1", 48374 "version": "2.0.9",
48616 "resolved": "https://registry.npmjs.org/mobx-react-form/-/mobx-react-form-1.35.1.tgz", 48375 "resolved": "https://registry.npmjs.org/mobx-react-form/-/mobx-react-form-2.0.9.tgz",
48617 "integrity": "sha1-iSrsZykiThHCl4+4LmetxOgOOmo=", 48376 "integrity": "sha512-YLbtXVUF6BtifeVr6XWJ76dQWJs3T/+aPNI/DKvNs1Opcl4jNCzENahqlqNsNI+RgXZbP36zck//IGWBNZsr0A==",
48618 "requires": { 48377 "requires": {
48619 "lodash": "^4.16.2" 48378 "lodash": "^4.17.11"
48620 } 48379 }
48621 }, 48380 },
48381 "mobx-react-lite": {
48382 "version": "2.2.2",
48383 "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-2.2.2.tgz",
48384 "integrity": "sha512-2SlXALHIkyUPDsV4VTKVR9DW7K3Ksh1aaIv3NrNJygTbhXe2A9GrcKHZ2ovIiOp/BXilOcTYemfHHZubP431dg=="
48385 },
48622 "mobx-react-router": { 48386 "mobx-react-router": {
48623 "version": "3.1.2", 48387 "version": "3.1.2",
48624 "resolved": "https://registry.npmjs.org/mobx-react-router/-/mobx-react-router-3.1.2.tgz", 48388 "resolved": "https://registry.npmjs.org/mobx-react-router/-/mobx-react-router-3.1.2.tgz",
@@ -48872,20 +48636,6 @@
48872 "run-queue": "^1.0.3" 48636 "run-queue": "^1.0.3"
48873 }, 48637 },
48874 "dependencies": { 48638 "dependencies": {
48875 "glob": {
48876 "version": "7.2.0",
48877 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
48878 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
48879 "dev": true,
48880 "requires": {
48881 "fs.realpath": "^1.0.0",
48882 "inflight": "^1.0.4",
48883 "inherits": "2",
48884 "minimatch": "^3.0.4",
48885 "once": "^1.3.0",
48886 "path-is-absolute": "^1.0.0"
48887 }
48888 },
48889 "rimraf": { 48639 "rimraf": {
48890 "version": "2.7.1", 48640 "version": "2.7.1",
48891 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 48641 "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -49089,8 +48839,7 @@
49089 "node-addon-api": { 48839 "node-addon-api": {
49090 "version": "4.2.0", 48840 "version": "4.2.0",
49091 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.2.0.tgz", 48841 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.2.0.tgz",
49092 "integrity": "sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q==", 48842 "integrity": "sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q=="
49093 "optional": true
49094 }, 48843 },
49095 "node-cookie": { 48844 "node-cookie": {
49096 "version": "2.1.2", 48845 "version": "2.1.2",
@@ -49126,9 +48875,9 @@
49126 "integrity": "sha512-pFhMAqdN1avrFwtZs66HxYiVnbnH9wjXB4m8IKs5Z9+r7U5voqxT+EDbVkRfge+V7JnkOgKhN4HfKBn1o5g9Wg==" 48875 "integrity": "sha512-pFhMAqdN1avrFwtZs66HxYiVnbnH9wjXB4m8IKs5Z9+r7U5voqxT+EDbVkRfge+V7JnkOgKhN4HfKBn1o5g9Wg=="
49127 }, 48876 },
49128 "node-fetch": { 48877 "node-fetch": {
49129 "version": "2.6.5", 48878 "version": "2.6.6",
49130 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", 48879 "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz",
49131 "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", 48880 "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==",
49132 "requires": { 48881 "requires": {
49133 "whatwg-url": "^5.0.0" 48882 "whatwg-url": "^5.0.0"
49134 }, 48883 },
@@ -49181,22 +48930,6 @@
49181 "semver": "^7.3.5", 48930 "semver": "^7.3.5",
49182 "tar": "^6.1.2", 48931 "tar": "^6.1.2",
49183 "which": "^2.0.2" 48932 "which": "^2.0.2"
49184 },
49185 "dependencies": {
49186 "glob": {
49187 "version": "7.2.0",
49188 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
49189 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
49190 "dev": true,
49191 "requires": {
49192 "fs.realpath": "^1.0.0",
49193 "inflight": "^1.0.4",
49194 "inherits": "2",
49195 "minimatch": "^3.0.4",
49196 "once": "^1.3.0",
49197 "path-is-absolute": "^1.0.0"
49198 }
49199 }
49200 } 48933 }
49201 }, 48934 },
49202 "node-int64": { 48935 "node-int64": {
@@ -49256,19 +48989,19 @@
49256 } 48989 }
49257 }, 48990 },
49258 "node-mac-permissions": { 48991 "node-mac-permissions": {
49259 "version": "2.2.0", 48992 "version": "git+ssh://git@github.com/vraravam/node-mac-permissions.git#3cffec37379e6584627d831611a8ff12b57bbcdb",
49260 "resolved": "https://registry.npmjs.org/node-mac-permissions/-/node-mac-permissions-2.2.0.tgz", 48993 "integrity": "sha512-kl87EmBwDK4Rn/uI/WsjMvqpr8Ivk5ptNU/HYEie/5uBqQdW3jWCHnlL5guCbNprXtLM5a+ROT1TiFNMkIM+fQ==",
49261 "integrity": "sha512-oLEZY46M47A/rcMacPEqo/5z6u7alXdMXhtE7xPDyMixZF35Grl9KGx3N2adE3//lEtGL6Tig98p+1gkonkwQg==", 48994 "from": "node-mac-permissions@git@github.com:vraravam/node-mac-permissions.git#3cffec37379e6584627d831611a8ff12b57bbcdb",
49262 "optional": true, 48995 "optional": true,
49263 "requires": { 48996 "requires": {
49264 "bindings": "^1.5.0", 48997 "bindings": "^1.5.0",
49265 "node-addon-api": "^2.0.0" 48998 "node-addon-api": "^3.0.2"
49266 }, 48999 },
49267 "dependencies": { 49000 "dependencies": {
49268 "node-addon-api": { 49001 "node-addon-api": {
49269 "version": "2.0.2", 49002 "version": "3.2.1",
49270 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", 49003 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
49271 "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", 49004 "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==",
49272 "optional": true 49005 "optional": true
49273 } 49006 }
49274 } 49007 }
@@ -49309,19 +49042,6 @@
49309 "minipass": "^2.6.0" 49042 "minipass": "^2.6.0"
49310 } 49043 }
49311 }, 49044 },
49312 "glob": {
49313 "version": "7.2.0",
49314 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
49315 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
49316 "requires": {
49317 "fs.realpath": "^1.0.0",
49318 "inflight": "^1.0.4",
49319 "inherits": "2",
49320 "minimatch": "^3.0.4",
49321 "once": "^1.3.0",
49322 "path-is-absolute": "^1.0.0"
49323 }
49324 },
49325 "minipass": { 49045 "minipass": {
49326 "version": "2.9.0", 49046 "version": "2.9.0",
49327 "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", 49047 "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
@@ -51260,28 +50980,16 @@
51260 "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 50980 "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
51261 }, 50981 },
51262 "raw-body": { 50982 "raw-body": {
51263 "version": "2.4.1", 50983 "version": "2.4.2",
51264 "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", 50984 "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz",
51265 "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", 50985 "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==",
51266 "requires": { 50986 "requires": {
51267 "bytes": "3.1.0", 50987 "bytes": "3.1.1",
51268 "http-errors": "1.7.3", 50988 "http-errors": "1.8.1",
51269 "iconv-lite": "0.4.24", 50989 "iconv-lite": "0.4.24",
51270 "unpipe": "1.0.0" 50990 "unpipe": "1.0.0"
51271 }, 50991 },
51272 "dependencies": { 50992 "dependencies": {
51273 "http-errors": {
51274 "version": "1.7.3",
51275 "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
51276 "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==",
51277 "requires": {
51278 "depd": "~1.1.2",
51279 "inherits": "2.0.4",
51280 "setprototypeof": "1.1.1",
51281 "statuses": ">= 1.5.0 < 2",
51282 "toidentifier": "1.0.0"
51283 }
51284 },
51285 "iconv-lite": { 50993 "iconv-lite": {
51286 "version": "0.4.24", 50994 "version": "0.4.24",
51287 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 50995 "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -51289,11 +50997,6 @@
51289 "requires": { 50997 "requires": {
51290 "safer-buffer": ">= 2.1.2 < 3" 50998 "safer-buffer": ">= 2.1.2 < 3"
51291 } 50999 }
51292 },
51293 "setprototypeof": {
51294 "version": "1.1.1",
51295 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
51296 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
51297 } 51000 }
51298 } 51001 }
51299 }, 51002 },
@@ -51340,6 +51043,11 @@
51340 "tween-functions": "^1.2.0" 51043 "tween-functions": "^1.2.0"
51341 } 51044 }
51342 }, 51045 },
51046 "react-display-name": {
51047 "version": "0.2.5",
51048 "resolved": "https://registry.npmjs.org/react-display-name/-/react-display-name-0.2.5.tgz",
51049 "integrity": "sha512-I+vcaK9t4+kypiSgaiVWAipqHRXYmZIuAiS8vzFvXHHXVigg/sMKwlRgLy6LH2i3rmP+0Vzfl5lFsFRwF1r3pg=="
51050 },
51343 "react-dom": { 51051 "react-dom": {
51344 "version": "17.0.2", 51052 "version": "17.0.2",
51345 "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", 51053 "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
@@ -51369,19 +51077,19 @@
51369 } 51077 }
51370 }, 51078 },
51371 "react-intl": { 51079 "react-intl": {
51372 "version": "5.21.0", 51080 "version": "5.21.2",
51373 "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.21.0.tgz", 51081 "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.21.2.tgz",
51374 "integrity": "sha512-tRXg0JrMFpHgOokj+gFXvEbm4ZEePnidfVWFh3fbYc2FlJGnwxLjsvzCvRVv2qyNMHCy8xX6frRGe52WDOiYOg==", 51082 "integrity": "sha512-pRKndhmjbFOq9CoJHHnUgXYf1tz9t3nIfInZg5TQ9EqYs9PPlkHBp4WtFDcFcW5UGV/QX4no6irpfXFsVKNWUA==",
51375 "requires": { 51083 "requires": {
51376 "@formatjs/ecma402-abstract": "1.10.0", 51084 "@formatjs/ecma402-abstract": "1.10.0",
51377 "@formatjs/icu-messageformat-parser": "2.0.14", 51085 "@formatjs/icu-messageformat-parser": "2.0.14",
51378 "@formatjs/intl": "1.15.0", 51086 "@formatjs/intl": "1.15.2",
51379 "@formatjs/intl-displaynames": "5.2.5", 51087 "@formatjs/intl-displaynames": "5.2.5",
51380 "@formatjs/intl-listformat": "6.3.5", 51088 "@formatjs/intl-listformat": "6.3.5",
51381 "@types/hoist-non-react-statics": "^3.3.1", 51089 "@types/hoist-non-react-statics": "^3.3.1",
51382 "@types/react": "16 || 17", 51090 "@types/react": "16 || 17",
51383 "hoist-non-react-statics": "^3.3.2", 51091 "hoist-non-react-statics": "^3.3.2",
51384 "intl-messageformat": "9.9.4", 51092 "intl-messageformat": "9.9.6",
51385 "tslib": "^2.1.0" 51093 "tslib": "^2.1.0"
51386 } 51094 }
51387 }, 51095 },
@@ -51391,32 +51099,21 @@
51391 "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 51099 "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
51392 }, 51100 },
51393 "react-jss": { 51101 "react-jss": {
51394 "version": "8.6.1", 51102 "version": "10.8.2",
51395 "resolved": "https://registry.npmjs.org/react-jss/-/react-jss-8.6.1.tgz", 51103 "resolved": "https://registry.npmjs.org/react-jss/-/react-jss-10.8.2.tgz",
51396 "integrity": "sha512-SH6XrJDJkAphp602J14JTy3puB2Zxz1FkM3bKVE8wON+va99jnUTKWnzGECb3NfIn9JPR5vHykge7K3/A747xQ==", 51104 "integrity": "sha512-/lLFIv1H6GA5RkvNb7TdXcJMBaSvSpfmSYsDisj4WI7MmqXUouoKfkZUJzG7CWq8xnIxik0WWYjFcGOvx0Sasw==",
51397 "requires": { 51105 "requires": {
51398 "hoist-non-react-statics": "^2.5.0", 51106 "@babel/runtime": "^7.3.1",
51399 "jss": "^9.7.0", 51107 "@emotion/is-prop-valid": "^0.7.3",
51400 "jss-preset-default": "^4.3.0", 51108 "css-jss": "10.8.2",
51109 "hoist-non-react-statics": "^3.2.0",
51110 "is-in-browser": "^1.1.3",
51111 "jss": "10.8.2",
51112 "jss-preset-default": "10.8.2",
51401 "prop-types": "^15.6.0", 51113 "prop-types": "^15.6.0",
51402 "theming": "^1.3.0" 51114 "shallow-equal": "^1.2.0",
51403 }, 51115 "theming": "^3.3.0",
51404 "dependencies": { 51116 "tiny-warning": "^1.0.2"
51405 "hoist-non-react-statics": {
51406 "version": "2.5.5",
51407 "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
51408 "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
51409 },
51410 "jss": {
51411 "version": "9.8.7",
51412 "resolved": "https://registry.npmjs.org/jss/-/jss-9.8.7.tgz",
51413 "integrity": "sha512-awj3XRZYxbrmmrx9LUSj5pXSUfm12m8xzi/VKeqI1ZwWBtQ0kVPTs3vYs32t4rFw83CgFDukA8wKzOE9sMQnoQ==",
51414 "requires": {
51415 "is-in-browser": "^1.1.3",
51416 "symbol-observable": "^1.1.0",
51417 "warning": "^3.0.0"
51418 }
51419 }
51420 } 51117 }
51421 }, 51118 },
51422 "react-lifecycles-compat": { 51119 "react-lifecycles-compat": {
@@ -51435,9 +51132,9 @@
51435 } 51132 }
51436 }, 51133 },
51437 "react-modal": { 51134 "react-modal": {
51438 "version": "3.14.3", 51135 "version": "3.14.4",
51439 "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.14.3.tgz", 51136 "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.14.4.tgz",
51440 "integrity": "sha512-+C2KODVKyu20zHXPJxfOOcf571L1u/EpFlH+oS/3YDn8rgVE51QZuxuuIwabJ8ZFnOEHaD+r6XNjqwtxZnXO0g==", 51137 "integrity": "sha512-8surmulejafYCH9wfUmFyj4UfbSJwjcgbS9gf3oOItu4Hwd6ivJyVBETI0yHRhpJKCLZMUtnhzk76wXTsNL6Qg==",
51441 "requires": { 51138 "requires": {
51442 "exenv": "^1.2.0", 51139 "exenv": "^1.2.0",
51443 "prop-types": "^15.7.2", 51140 "prop-types": "^15.7.2",
@@ -52277,22 +51974,6 @@
52277 "devOptional": true, 51974 "devOptional": true,
52278 "requires": { 51975 "requires": {
52279 "glob": "^7.1.3" 51976 "glob": "^7.1.3"
52280 },
52281 "dependencies": {
52282 "glob": {
52283 "version": "7.2.0",
52284 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
52285 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
52286 "devOptional": true,
52287 "requires": {
52288 "fs.realpath": "^1.0.0",
52289 "inflight": "^1.0.4",
52290 "inherits": "2",
52291 "minimatch": "^3.0.4",
52292 "once": "^1.3.0",
52293 "path-is-absolute": "^1.0.0"
52294 }
52295 }
52296 } 51977 }
52297 }, 51978 },
52298 "ripemd160": { 51979 "ripemd160": {
@@ -52852,6 +52533,11 @@
52852 "version": "1.1.1", 52533 "version": "1.1.1",
52853 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 52534 "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
52854 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 52535 "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
52536 },
52537 "toidentifier": {
52538 "version": "1.0.0",
52539 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
52540 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
52855 } 52541 }
52856 } 52542 }
52857 }, 52543 },
@@ -52908,6 +52594,11 @@
52908 "kind-of": "^6.0.2" 52594 "kind-of": "^6.0.2"
52909 } 52595 }
52910 }, 52596 },
52597 "shallow-equal": {
52598 "version": "1.2.1",
52599 "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
52600 "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
52601 },
52911 "shebang-command": { 52602 "shebang-command": {
52912 "version": "2.0.0", 52603 "version": "2.0.0",
52913 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 52604 "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -52932,9 +52623,9 @@
52932 } 52623 }
52933 }, 52624 },
52934 "signal-exit": { 52625 "signal-exit": {
52935 "version": "3.0.5", 52626 "version": "3.0.6",
52936 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", 52627 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz",
52937 "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" 52628 "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ=="
52938 }, 52629 },
52939 "simple-encryptor": { 52630 "simple-encryptor": {
52940 "version": "2.0.0", 52631 "version": "2.0.0",
@@ -52983,13 +52674,51 @@
52983 "dev": true 52674 "dev": true
52984 }, 52675 },
52985 "slice-ansi": { 52676 "slice-ansi": {
52986 "version": "1.0.0", 52677 "version": "3.0.0",
52987 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", 52678 "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
52988 "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", 52679 "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
52989 "dev": true, 52680 "dev": true,
52990 "optional": true, 52681 "optional": true,
52991 "requires": { 52682 "requires": {
52992 "is-fullwidth-code-point": "^2.0.0" 52683 "ansi-styles": "^4.0.0",
52684 "astral-regex": "^2.0.0",
52685 "is-fullwidth-code-point": "^3.0.0"
52686 },
52687 "dependencies": {
52688 "ansi-styles": {
52689 "version": "4.3.0",
52690 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
52691 "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
52692 "dev": true,
52693 "optional": true,
52694 "requires": {
52695 "color-convert": "^2.0.1"
52696 }
52697 },
52698 "color-convert": {
52699 "version": "2.0.1",
52700 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
52701 "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
52702 "dev": true,
52703 "optional": true,
52704 "requires": {
52705 "color-name": "~1.1.4"
52706 }
52707 },
52708 "color-name": {
52709 "version": "1.1.4",
52710 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
52711 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
52712 "dev": true,
52713 "optional": true
52714 },
52715 "is-fullwidth-code-point": {
52716 "version": "3.0.0",
52717 "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
52718 "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
52719 "dev": true,
52720 "optional": true
52721 }
52993 } 52722 }
52994 }, 52723 },
52995 "smart-buffer": { 52724 "smart-buffer": {
@@ -53244,9 +52973,9 @@
53244 } 52973 }
53245 }, 52974 },
53246 "source-map-support": { 52975 "source-map-support": {
53247 "version": "0.5.20", 52976 "version": "0.5.21",
53248 "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", 52977 "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
53249 "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", 52978 "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
53250 "dev": true, 52979 "dev": true,
53251 "requires": { 52980 "requires": {
53252 "buffer-from": "^1.0.0", 52981 "buffer-from": "^1.0.0",
@@ -53311,9 +53040,9 @@
53311 } 53040 }
53312 }, 53041 },
53313 "spdx-license-ids": { 53042 "spdx-license-ids": {
53314 "version": "3.0.10", 53043 "version": "3.0.11",
53315 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", 53044 "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz",
53316 "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", 53045 "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==",
53317 "dev": true 53046 "dev": true
53318 }, 53047 },
53319 "spdy": { 53048 "spdy": {
@@ -53435,20 +53164,6 @@
53435 "node-pre-gyp": "^0.11.0" 53164 "node-pre-gyp": "^0.11.0"
53436 }, 53165 },
53437 "dependencies": { 53166 "dependencies": {
53438 "glob": {
53439 "version": "7.2.0",
53440 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
53441 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
53442 "optional": true,
53443 "requires": {
53444 "fs.realpath": "^1.0.0",
53445 "inflight": "^1.0.4",
53446 "inherits": "2",
53447 "minimatch": "^3.0.4",
53448 "once": "^1.3.0",
53449 "path-is-absolute": "^1.0.0"
53450 }
53451 },
53452 "node-addon-api": { 53167 "node-addon-api": {
53453 "version": "3.2.1", 53168 "version": "3.2.1",
53454 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", 53169 "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
@@ -53795,7 +53510,6 @@
53795 "version": "6.0.1", 53510 "version": "6.0.1",
53796 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 53511 "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
53797 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 53512 "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
53798 "dev": true,
53799 "requires": { 53513 "requires": {
53800 "ansi-regex": "^5.0.1" 53514 "ansi-regex": "^5.0.1"
53801 } 53515 }
@@ -54017,20 +53731,20 @@
54017 } 53731 }
54018 }, 53732 },
54019 "terser": { 53733 "terser": {
54020 "version": "4.8.0", 53734 "version": "5.10.0",
54021 "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", 53735 "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
54022 "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", 53736 "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
54023 "dev": true, 53737 "dev": true,
54024 "requires": { 53738 "requires": {
54025 "commander": "^2.20.0", 53739 "commander": "^2.20.0",
54026 "source-map": "~0.6.1", 53740 "source-map": "~0.7.2",
54027 "source-map-support": "~0.5.12" 53741 "source-map-support": "~0.5.20"
54028 }, 53742 },
54029 "dependencies": { 53743 "dependencies": {
54030 "source-map": { 53744 "source-map": {
54031 "version": "0.6.1", 53745 "version": "0.7.3",
54032 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 53746 "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
54033 "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 53747 "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
54034 "dev": true 53748 "dev": true
54035 } 53749 }
54036 } 53750 }
@@ -54081,20 +53795,6 @@
54081 "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 53795 "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
54082 "dev": true 53796 "dev": true
54083 }, 53797 },
54084 "glob": {
54085 "version": "7.2.0",
54086 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
54087 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
54088 "dev": true,
54089 "requires": {
54090 "fs.realpath": "^1.0.0",
54091 "inflight": "^1.0.4",
54092 "inherits": "2",
54093 "minimatch": "^3.0.4",
54094 "once": "^1.3.0",
54095 "path-is-absolute": "^1.0.0"
54096 }
54097 },
54098 "lru-cache": { 53798 "lru-cache": {
54099 "version": "5.1.1", 53799 "version": "5.1.1",
54100 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 53800 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
@@ -54137,6 +53837,17 @@
54137 "figgy-pudding": "^3.5.1" 53837 "figgy-pudding": "^3.5.1"
54138 } 53838 }
54139 }, 53839 },
53840 "terser": {
53841 "version": "4.8.0",
53842 "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
53843 "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
53844 "dev": true,
53845 "requires": {
53846 "commander": "^2.20.0",
53847 "source-map": "~0.6.1",
53848 "source-map-support": "~0.5.12"
53849 }
53850 },
54140 "y18n": { 53851 "y18n": {
54141 "version": "4.0.3", 53852 "version": "4.0.3",
54142 "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", 53853 "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
@@ -54160,22 +53871,6 @@
54160 "@istanbuljs/schema": "^0.1.2", 53871 "@istanbuljs/schema": "^0.1.2",
54161 "glob": "^7.1.4", 53872 "glob": "^7.1.4",
54162 "minimatch": "^3.0.4" 53873 "minimatch": "^3.0.4"
54163 },
54164 "dependencies": {
54165 "glob": {
54166 "version": "7.2.0",
54167 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
54168 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
54169 "dev": true,
54170 "requires": {
54171 "fs.realpath": "^1.0.0",
54172 "inflight": "^1.0.4",
54173 "inherits": "2",
54174 "minimatch": "^3.0.4",
54175 "once": "^1.3.0",
54176 "path-is-absolute": "^1.0.0"
54177 }
54178 }
54179 } 53874 }
54180 }, 53875 },
54181 "text-extensions": { 53876 "text-extensions": {
@@ -54196,14 +53891,14 @@
54196 "dev": true 53891 "dev": true
54197 }, 53892 },
54198 "theming": { 53893 "theming": {
54199 "version": "1.3.0", 53894 "version": "3.3.0",
54200 "resolved": "https://registry.npmjs.org/theming/-/theming-1.3.0.tgz", 53895 "resolved": "https://registry.npmjs.org/theming/-/theming-3.3.0.tgz",
54201 "integrity": "sha512-ya5Ef7XDGbTPBv5ENTwrwkPUexrlPeiAg/EI9kdlUAZhNlRbCdhMKRgjNX1IcmsmiPcqDQZE6BpSaH+cr31FKw==", 53896 "integrity": "sha512-u6l4qTJRDaWZsqa8JugaNt7Xd8PPl9+gonZaIe28vAhqgHMIG/DOyFPqiKN/gQLQYj05tHv+YQdNILL4zoiAVA==",
54202 "requires": { 53897 "requires": {
54203 "brcast": "^3.0.1", 53898 "hoist-non-react-statics": "^3.3.0",
54204 "is-function": "^1.0.1", 53899 "prop-types": "^15.5.8",
54205 "is-plain-object": "^2.0.1", 53900 "react-display-name": "^0.2.4",
54206 "prop-types": "^15.5.8" 53901 "tiny-warning": "^1.0.2"
54207 } 53902 }
54208 }, 53903 },
54209 "throat": { 53904 "throat": {
@@ -54482,9 +54177,9 @@
54482 } 54177 }
54483 }, 54178 },
54484 "toidentifier": { 54179 "toidentifier": {
54485 "version": "1.0.0", 54180 "version": "1.0.1",
54486 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 54181 "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
54487 "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 54182 "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
54488 }, 54183 },
54489 "tough-cookie": { 54184 "tough-cookie": {
54490 "version": "4.0.0", 54185 "version": "4.0.0",
@@ -54697,9 +54392,9 @@
54697 } 54392 }
54698 }, 54393 },
54699 "tsconfig-paths": { 54394 "tsconfig-paths": {
54700 "version": "3.11.0", 54395 "version": "3.12.0",
54701 "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.11.0.tgz", 54396 "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz",
54702 "integrity": "sha512-7ecdYDnIdmv639mmDwslG6KQg1Z9STTz1j7Gcz0xa+nshh/gKDAHcPxRbWOsA3SPp0tXP2leTcY9Kw+NAkfZzA==", 54397 "integrity": "sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==",
54703 "dev": true, 54398 "dev": true,
54704 "requires": { 54399 "requires": {
54705 "@types/json5": "^0.0.29", 54400 "@types/json5": "^0.0.29",
@@ -54849,15 +54544,15 @@
54849 } 54544 }
54850 }, 54545 },
54851 "typescript": { 54546 "typescript": {
54852 "version": "4.2.4", 54547 "version": "4.5.2",
54853 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", 54548 "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz",
54854 "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", 54549 "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==",
54855 "dev": true 54550 "dev": true
54856 }, 54551 },
54857 "uglify-js": { 54552 "uglify-js": {
54858 "version": "3.14.2", 54553 "version": "3.14.3",
54859 "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.2.tgz", 54554 "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.3.tgz",
54860 "integrity": "sha512-rtPMlmcO4agTUfz10CbgJ1k6UAoXM2gWb3GoMPPZB/+/Ackf8lNWk11K4rYi2D0apgoFRLtQOZhb+/iGNJq26A==", 54555 "integrity": "sha512-mic3aOdiq01DuSVx0TseaEzMIVqebMZ0Z3vaeDhFEh9bsc24hV1TFvN74reA2vs08D0ZWfNjAcJ3UbVLaBss+g==",
54861 "dev": true 54556 "dev": true
54862 }, 54557 },
54863 "uid-safe": { 54558 "uid-safe": {
@@ -54888,8 +54583,7 @@
54888 "underscore": { 54583 "underscore": {
54889 "version": "1.13.1", 54584 "version": "1.13.1",
54890 "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", 54585 "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
54891 "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", 54586 "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g=="
54892 "optional": true
54893 }, 54587 },
54894 "undertaker": { 54588 "undertaker": {
54895 "version": "1.3.0", 54589 "version": "1.3.0",
@@ -55366,20 +55060,6 @@
55366 "node-gyp": "^7.1.2" 55060 "node-gyp": "^7.1.2"
55367 }, 55061 },
55368 "dependencies": { 55062 "dependencies": {
55369 "glob": {
55370 "version": "7.2.0",
55371 "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
55372 "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
55373 "optional": true,
55374 "requires": {
55375 "fs.realpath": "^1.0.0",
55376 "inflight": "^1.0.4",
55377 "inherits": "2",
55378 "minimatch": "^3.0.4",
55379 "once": "^1.3.0",
55380 "path-is-absolute": "^1.0.0"
55381 }
55382 },
55383 "node-gyp": { 55063 "node-gyp": {
55384 "version": "7.1.2", 55064 "version": "7.1.2",
55385 "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", 55065 "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
@@ -55499,9 +55179,9 @@
55499 } 55179 }
55500 }, 55180 },
55501 "validator": { 55181 "validator": {
55502 "version": "13.6.0", 55182 "version": "13.7.0",
55503 "resolved": "https://registry.npmjs.org/validator/-/validator-13.6.0.tgz", 55183 "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
55504 "integrity": "sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==" 55184 "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw=="
55505 }, 55185 },
55506 "value-or-function": { 55186 "value-or-function": {
55507 "version": "3.0.0", 55187 "version": "3.0.0",
@@ -55515,9 +55195,10 @@
55515 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 55195 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
55516 }, 55196 },
55517 "verror": { 55197 "verror": {
55518 "version": "1.10.0", 55198 "version": "1.10.1",
55519 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 55199 "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz",
55520 "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 55200 "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==",
55201 "dev": true,
55521 "optional": true, 55202 "optional": true,
55522 "requires": { 55203 "requires": {
55523 "assert-plus": "^1.0.0", 55204 "assert-plus": "^1.0.0",
@@ -55529,6 +55210,7 @@
55529 "version": "1.0.2", 55210 "version": "1.0.2",
55530 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 55211 "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
55531 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 55212 "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
55213 "dev": true,
55532 "optional": true 55214 "optional": true
55533 } 55215 }
55534 } 55216 }
@@ -56310,12 +55992,12 @@
56310 } 55992 }
56311 }, 55993 },
56312 "webpack-dev-server": { 55994 "webpack-dev-server": {
56313 "version": "3.11.2", 55995 "version": "3.11.3",
56314 "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", 55996 "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
56315 "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", 55997 "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
56316 "dev": true, 55998 "dev": true,
56317 "requires": { 55999 "requires": {
56318 "ansi-html": "0.0.7", 56000 "ansi-html-community": "0.0.8",
56319 "bonjour": "^3.5.0", 56001 "bonjour": "^3.5.0",
56320 "chokidar": "^2.1.8", 56002 "chokidar": "^2.1.8",
56321 "compression": "^1.7.4", 56003 "compression": "^1.7.4",
@@ -57081,9 +56763,9 @@
57081 }, 56763 },
57082 "dependencies": { 56764 "dependencies": {
57083 "camelcase": { 56765 "camelcase": {
57084 "version": "6.2.0", 56766 "version": "6.2.1",
57085 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", 56767 "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz",
57086 "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", 56768 "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==",
57087 "dev": true 56769 "dev": true
57088 }, 56770 },
57089 "decamelize": { 56771 "decamelize": {
diff --git a/package.json b/package.json
index 7cd375949..a8619bf15 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
3 "productName": "Ferdi", 3 "productName": "Ferdi",
4 "desktopName": "ferdi.desktop", 4 "desktopName": "ferdi.desktop",
5 "appId": "com.kytwb.ferdi", 5 "appId": "com.kytwb.ferdi",
6 "version": "5.6.3", 6 "version": "5.6.4-nightly.34",
7 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", 7 "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.",
8 "copyright": "kytwb", 8 "copyright": "kytwb",
9 "main": "index.js", 9 "main": "index.js",
@@ -35,8 +35,8 @@
35 "contributors": "all-contributors", 35 "contributors": "all-contributors",
36 "reformat-files": "./node_modules/.bin/prettier --ignore-path .eslintignore --write --require-pragma \"**/*.{js,jsx,scss}\"", 36 "reformat-files": "./node_modules/.bin/prettier --ignore-path .eslintignore --write --require-pragma \"**/*.{js,jsx,scss}\"",
37 "apply-branding": "ts-node ./src/i18n/apply-branding.ts", 37 "apply-branding": "ts-node ./src/i18n/apply-branding.ts",
38 "update-submodules": "git submodule update --remote --force", 38 "update-submodules": "git submodule update --init --recursive --remote --rebase --force",
39 "prepare-code": "npm run lint && npm run reformat-files && npm run manage-translations && npm run apply-branding", 39 "prepare-code": "npm run lint:fix && npm run reformat-files && npm run manage-translations && npm run apply-branding",
40 "link-readme": "ts-node scripts/link-readme.ts", 40 "link-readme": "ts-node scripts/link-readme.ts",
41 "minify-images": "./scripts/minify-images.sh", 41 "minify-images": "./scripts/minify-images.sh",
42 "start:server": "ts-node src/internal-server/test.ts", 42 "start:server": "ts-node src/internal-server/test.ts",
@@ -66,6 +66,7 @@
66 "auto-launch": "^5.0.5", 66 "auto-launch": "^5.0.5",
67 "btoa": "^1.2.1", 67 "btoa": "^1.2.1",
68 "classnames": "^2.3.1", 68 "classnames": "^2.3.1",
69 "cld": "^2.7.1",
69 "color": "^4.0.1", 70 "color": "^4.0.1",
70 "csstype": "^3.0.9", 71 "csstype": "^3.0.9",
71 "darkreader": "^4.9.39", 72 "darkreader": "^4.9.39",
@@ -75,7 +76,7 @@
75 "electron-fetch": "^1.7.4", 76 "electron-fetch": "^1.7.4",
76 "electron-find": "^1.0.7", 77 "electron-find": "^1.0.7",
77 "electron-react-titlebar": "^1.1.0", 78 "electron-react-titlebar": "^1.1.0",
78 "electron-updater": "^4.3.9", 79 "electron-updater": "^4.6.2",
79 "electron-window-state": "^5.0.3", 80 "electron-window-state": "^5.0.3",
80 "fast-folder-size": "^1.5.0", 81 "fast-folder-size": "^1.5.0",
81 "fs-extra": "^10.0.0", 82 "fs-extra": "^10.0.0",
@@ -87,8 +88,8 @@
87 "minimist": "^1.2.5", 88 "minimist": "^1.2.5",
88 "mobx": "^5.15.0", 89 "mobx": "^5.15.0",
89 "mobx-localstorage": "^1.2.0", 90 "mobx-localstorage": "^1.2.0",
90 "mobx-react": "^5.4.2", 91 "mobx-react": "^6.3.1",
91 "mobx-react-form": "1.35.1", 92 "mobx-react-form": "^2.0.9",
92 "mobx-react-router": "^3.1.2", 93 "mobx-react-router": "^3.1.2",
93 "moment": "^2.29.1", 94 "moment": "^2.29.1",
94 "ms": "^2.1.3", 95 "ms": "^2.1.3",
@@ -104,7 +105,7 @@
104 "react-dropzone": "^11.4.2", 105 "react-dropzone": "^11.4.2",
105 "react-electron-web-view": "^2.0.1", 106 "react-electron-web-view": "^2.0.1",
106 "react-intl": "^5.21.0", 107 "react-intl": "^5.21.0",
107 "react-jss": "^8.6.1", 108 "react-jss": "^10.8.2",
108 "react-loader": "^2.4.7", 109 "react-loader": "^2.4.7",
109 "react-modal": "^3.14.3", 110 "react-modal": "^3.14.3",
110 "react-router": "^3.2.6", 111 "react-router": "^3.2.6",
@@ -121,14 +122,14 @@
121 "ws": "^8.2.3" 122 "ws": "^8.2.3"
122 }, 123 },
123 "devDependencies": { 124 "devDependencies": {
124 "@babel/eslint-parser": "^7.16.0", 125 "@babel/eslint-parser": "^7.16.3",
125 "@babel/plugin-proposal-class-properties": "^7.14.5", 126 "@babel/plugin-proposal-class-properties": "^7.14.5",
126 "@babel/plugin-proposal-decorators": "^7.16.0", 127 "@babel/plugin-proposal-decorators": "^7.16.0",
127 "@babel/preset-env": "^7.16.0", 128 "@babel/preset-env": "^7.16.0",
128 "@babel/preset-react": "^7.14.5", 129 "@babel/preset-react": "^7.14.5",
129 "@babel/register": "^7.15.3", 130 "@babel/register": "^7.15.3",
130 "@commitlint/cli": "^14.1.0", 131 "@commitlint/cli": "^15.0.0",
131 "@commitlint/config-conventional": "^14.1.0", 132 "@commitlint/config-conventional": "^15.0.0",
132 "@formatjs/cli": "^4.4.0", 133 "@formatjs/cli": "^4.4.0",
133 "@types/color": "^3.0.2", 134 "@types/color": "^3.0.2",
134 "@types/expect.js": "^0.3.29", 135 "@types/expect.js": "^0.3.29",
@@ -144,8 +145,8 @@
144 "@types/tar": "^6.1.0", 145 "@types/tar": "^6.1.0",
145 "@types/uuid": "^8.3.1", 146 "@types/uuid": "^8.3.1",
146 "@types/validator": "^13.6.4", 147 "@types/validator": "^13.6.4",
147 "@typescript-eslint/eslint-plugin": "^5.1.0", 148 "@typescript-eslint/eslint-plugin": "^5.3.1",
148 "@typescript-eslint/parser": "^5.1.0", 149 "@typescript-eslint/parser": "^5.3.1",
149 "all-contributors-cli": "^6.20.0", 150 "all-contributors-cli": "^6.20.0",
150 "babel-plugin-formatjs": "^10.3.11", 151 "babel-plugin-formatjs": "^10.3.11",
151 "commitizen": "^4.2.4", 152 "commitizen": "^4.2.4",
@@ -153,20 +154,20 @@
153 "cross-env": "^7.0.3", 154 "cross-env": "^7.0.3",
154 "cz-conventional-changelog": "^3.3.0", 155 "cz-conventional-changelog": "^3.3.0",
155 "dotenv": "^10.0.0", 156 "dotenv": "^10.0.0",
156 "electron": "15.3.0", 157 "electron": "15.3.3",
157 "electron-builder": "22.14.5", 158 "electron-builder": "22.14.10",
158 "electron-notarize": "^1.1.1", 159 "electron-notarize": "^1.1.1",
159 "eslint": "^8.1.0", 160 "eslint": "^8.2.0",
160 "eslint-config-airbnb": "^18.2.1", 161 "eslint-config-airbnb": "^19.0.0",
161 "eslint-config-airbnb-typescript": "^14.0.1", 162 "eslint-config-airbnb-typescript": "^16.0.0",
162 "eslint-config-prettier": "^8.3.0", 163 "eslint-config-prettier": "^8.3.0",
163 "eslint-plugin-import": "^2.25.2", 164 "eslint-plugin-import": "^2.25.3",
164 "eslint-plugin-jest": "^25.2.2", 165 "eslint-plugin-jest": "^25.2.4",
165 "eslint-plugin-jsx-a11y": "^6.4.1", 166 "eslint-plugin-jsx-a11y": "^6.5.1",
166 "eslint-plugin-prettier": "^4.0.0", 167 "eslint-plugin-prettier": "^4.0.0",
167 "eslint-plugin-react": "^7.26.1", 168 "eslint-plugin-react": "^7.27.0",
168 "eslint-plugin-react-hooks": "^4.2.0", 169 "eslint-plugin-react-hooks": "^4.3.0",
169 "eslint-plugin-unicorn": "^37.0.1", 170 "eslint-plugin-unicorn": "^39.0.0",
170 "expect.js": "^0.3.1", 171 "expect.js": "^0.3.1",
171 "gulp": "^4.0.2", 172 "gulp": "^4.0.2",
172 "gulp-babel": "^8.0.0", 173 "gulp-babel": "^8.0.0",
@@ -196,15 +197,14 @@
196 "ts-loader": "^5.4.5", 197 "ts-loader": "^5.4.5",
197 "ts-mocha": "^8.0.0", 198 "ts-mocha": "^8.0.0",
198 "ts-node": "^10.2.1", 199 "ts-node": "^10.2.1",
199 "typescript": "4.2.4", 200 "typescript": "4.5.2",
200 "wait-on": "^6.0.0", 201 "wait-on": "^6.0.0",
201 "webpack": "^4.46.0", 202 "webpack": "^4.46.0",
202 "webpack-cli": "^3.3.12", 203 "webpack-cli": "^3.3.12",
203 "webpack-dev-server": "^3.11.2" 204 "webpack-dev-server": "^3.11.2"
204 }, 205 },
205 "optionalDependencies": { 206 "optionalDependencies": {
206 "cld": "^2.7.0", 207 "node-mac-permissions": "git@github.com:vraravam/node-mac-permissions.git#3cffec37379e6584627d831611a8ff12b57bbcdb"
207 "node-mac-permissions": "^2.2.0"
208 }, 208 },
209 "config": { 209 "config": {
210 "commitizen": { 210 "commitizen": {
diff --git a/recipes b/recipes
Subproject 1e2a7c3ba221baa1bca04db8f9231a3a9d35e1a Subproject be4c5abcae4ef3d49bec8dba632381989af0531
diff --git a/src/I18n.js b/src/I18n.tsx
index b10c5a94b..5d969da1f 100644
--- a/src/I18n.js
+++ b/src/I18n.tsx
@@ -1,16 +1,22 @@
1import { Component } from 'react'; 1import { Component, ReactNode } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
4import { IntlProvider } from 'react-intl'; 3import { IntlProvider } from 'react-intl';
5 4
6import { oneOrManyChildElements } from './prop-types'; 5import { generatedTranslations } from './i18n/translations';
7import translations from './i18n/translations';
8import UserStore from './stores/UserStore'; 6import UserStore from './stores/UserStore';
9import AppStore from './stores/AppStore'; 7import AppStore from './stores/AppStore';
10 8
11@inject('stores') 9const translations = generatedTranslations();
12@observer 10
13class I18N extends Component { 11type Props = {
12 stores: {
13 app: typeof AppStore;
14 user: typeof UserStore;
15 };
16 children: ReactNode;
17};
18
19class I18N extends Component<Props> {
14 componentDidUpdate() { 20 componentDidUpdate() {
15 window['ferdi'].menu.rebuild(); 21 window['ferdi'].menu.rebuild();
16 } 22 }
@@ -31,12 +37,4 @@ class I18N extends Component {
31 } 37 }
32} 38}
33 39
34I18N.wrappedComponent.propTypes = { 40export default inject('stores')(observer(I18N));
35 stores: PropTypes.shape({
36 app: PropTypes.instanceOf(AppStore).isRequired,
37 user: PropTypes.instanceOf(UserStore).isRequired,
38 }).isRequired,
39 children: oneOrManyChildElements.isRequired,
40};
41
42export default I18N;
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.ts
index 6bbf572fa..2fd1a8d0d 100644
--- a/src/api/server/ServerApi.js
+++ b/src/api/server/ServerApi.ts
@@ -1,3 +1,4 @@
1/* eslint-disable import/no-import-module-exports */
1/* eslint-disable global-require */ 2/* eslint-disable global-require */
2import { join } from 'path'; 3import { join } from 'path';
3import tar from 'tar'; 4import tar from 'tar';
@@ -10,6 +11,7 @@ import {
10 pathExistsSync, 11 pathExistsSync,
11 readJsonSync, 12 readJsonSync,
12 removeSync, 13 removeSync,
14 PathOrFileDescriptor,
13} from 'fs-extra'; 15} from 'fs-extra';
14import fetch from 'electron-fetch'; 16import fetch from 'electron-fetch';
15 17
@@ -39,12 +41,12 @@ const debug = require('debug')('Ferdi:ServerApi');
39module.paths.unshift(getDevRecipeDirectory(), getRecipeDirectory()); 41module.paths.unshift(getDevRecipeDirectory(), getRecipeDirectory());
40 42
41export default class ServerApi { 43export default class ServerApi {
42 recipePreviews = []; 44 recipePreviews: any[] = [];
43 45
44 recipes = []; 46 recipes: any[] = [];
45 47
46 // User 48 // User
47 async login(email, passwordHash) { 49 async login(email: string, passwordHash: string) {
48 const request = await sendAuthRequest( 50 const request = await sendAuthRequest(
49 `${apiBase()}/auth/login`, 51 `${apiBase()}/auth/login`,
50 { 52 {
@@ -56,7 +58,7 @@ export default class ServerApi {
56 false, 58 false,
57 ); 59 );
58 if (!request.ok) { 60 if (!request.ok) {
59 throw request; 61 throw new Error(request.statusText);
60 } 62 }
61 const u = await request.json(); 63 const u = await request.json();
62 64
@@ -64,7 +66,7 @@ export default class ServerApi {
64 return u.token; 66 return u.token;
65 } 67 }
66 68
67 async signup(data) { 69 async signup(data: any) {
68 const request = await sendAuthRequest( 70 const request = await sendAuthRequest(
69 `${apiBase()}/auth/signup`, 71 `${apiBase()}/auth/signup`,
70 { 72 {
@@ -74,7 +76,7 @@ export default class ServerApi {
74 false, 76 false,
75 ); 77 );
76 if (!request.ok) { 78 if (!request.ok) {
77 throw request; 79 throw new Error(request.statusText);
78 } 80 }
79 const u = await request.json(); 81 const u = await request.json();
80 82
@@ -82,20 +84,20 @@ export default class ServerApi {
82 return u.token; 84 return u.token;
83 } 85 }
84 86
85 async inviteUser(data) { 87 async inviteUser(data: any) {
86 const request = await sendAuthRequest(`${apiBase()}/invite`, { 88 const request = await sendAuthRequest(`${apiBase()}/invite`, {
87 method: 'POST', 89 method: 'POST',
88 body: JSON.stringify(data), 90 body: JSON.stringify(data),
89 }); 91 });
90 if (!request.ok) { 92 if (!request.ok) {
91 throw request; 93 throw new Error(request.statusText);
92 } 94 }
93 95
94 debug('ServerApi::inviteUser'); 96 debug('ServerApi::inviteUser');
95 return true; 97 return true;
96 } 98 }
97 99
98 async retrievePassword(email) { 100 async retrievePassword(email: string) {
99 const request = await sendAuthRequest( 101 const request = await sendAuthRequest(
100 `${apiBase()}/auth/password`, 102 `${apiBase()}/auth/password`,
101 { 103 {
@@ -107,7 +109,7 @@ export default class ServerApi {
107 false, 109 false,
108 ); 110 );
109 if (!request.ok) { 111 if (!request.ok) {
110 throw request; 112 throw new Error(request.statusText);
111 } 113 }
112 const r = await request.json(); 114 const r = await request.json();
113 115
@@ -122,7 +124,7 @@ export default class ServerApi {
122 124
123 const request = await sendAuthRequest(`${apiBase()}/me`); 125 const request = await sendAuthRequest(`${apiBase()}/me`);
124 if (!request.ok) { 126 if (!request.ok) {
125 throw request; 127 throw new Error(request.statusText);
126 } 128 }
127 const data = await request.json(); 129 const data = await request.json();
128 130
@@ -132,13 +134,13 @@ export default class ServerApi {
132 return user; 134 return user;
133 } 135 }
134 136
135 async updateUserInfo(data) { 137 async updateUserInfo(data: any) {
136 const request = await sendAuthRequest(`${apiBase()}/me`, { 138 const request = await sendAuthRequest(`${apiBase()}/me`, {
137 method: 'PUT', 139 method: 'PUT',
138 body: JSON.stringify(data), 140 body: JSON.stringify(data),
139 }); 141 });
140 if (!request.ok) { 142 if (!request.ok) {
141 throw request; 143 throw new Error(request.statusText);
142 } 144 }
143 const updatedData = await request.json(); 145 const updatedData = await request.json();
144 146
@@ -154,7 +156,7 @@ export default class ServerApi {
154 method: 'DELETE', 156 method: 'DELETE',
155 }); 157 });
156 if (!request.ok) { 158 if (!request.ok) {
157 throw request; 159 throw new Error(request.statusText);
158 } 160 }
159 const data = await request.json(); 161 const data = await request.json();
160 162
@@ -170,7 +172,7 @@ export default class ServerApi {
170 172
171 const request = await sendAuthRequest(`${apiBase()}/me/services`); 173 const request = await sendAuthRequest(`${apiBase()}/me/services`);
172 if (!request.ok) { 174 if (!request.ok) {
173 throw request; 175 throw new Error(request.statusText);
174 } 176 }
175 const data = await request.json(); 177 const data = await request.json();
176 178
@@ -180,13 +182,13 @@ export default class ServerApi {
180 return filteredServices; 182 return filteredServices;
181 } 183 }
182 184
183 async createService(recipeId, data) { 185 async createService(recipeId: string, data: { iconFile: any }) {
184 const request = await sendAuthRequest(`${apiBase()}/service`, { 186 const request = await sendAuthRequest(`${apiBase()}/service`, {
185 method: 'POST', 187 method: 'POST',
186 body: JSON.stringify({ recipeId, ...data }), 188 body: JSON.stringify({ recipeId, ...data }),
187 }); 189 });
188 if (!request.ok) { 190 if (!request.ok) {
189 throw request; 191 throw new Error(request.statusText);
190 } 192 }
191 const serviceData = await request.json(); 193 const serviceData = await request.json();
192 194
@@ -207,7 +209,7 @@ export default class ServerApi {
207 return service; 209 return service;
208 } 210 }
209 211
210 async updateService(serviceId, rawData) { 212 async updateService(serviceId: string, rawData: any) {
211 const data = rawData; 213 const data = rawData;
212 214
213 if (data.iconFile) { 215 if (data.iconFile) {
@@ -220,7 +222,7 @@ export default class ServerApi {
220 }); 222 });
221 223
222 if (!request.ok) { 224 if (!request.ok) {
223 throw request; 225 throw new Error(request.statusText);
224 } 226 }
225 227
226 const serviceData = await request.json(); 228 const serviceData = await request.json();
@@ -233,12 +235,13 @@ export default class ServerApi {
233 return service; 235 return service;
234 } 236 }
235 237
236 async uploadServiceIcon(serviceId, icon) { 238 async uploadServiceIcon(serviceId: string, icon: string | Blob) {
237 const formData = new FormData(); 239 const formData = new FormData();
238 formData.append('icon', icon); 240 formData.append('icon', icon);
239 241
240 const requestData = prepareAuthRequest({ 242 const requestData = prepareAuthRequest({
241 method: 'PUT', 243 method: 'PUT',
244 // @ts-expect-error Argument of type '{ method: string; body: FormData; }' is not assignable to parameter of type '{ method: string; }'.
242 body: formData, 245 body: formData,
243 }); 246 });
244 247
@@ -246,11 +249,12 @@ export default class ServerApi {
246 249
247 const request = await window.fetch( 250 const request = await window.fetch(
248 `${apiBase()}/service/${serviceId}`, 251 `${apiBase()}/service/${serviceId}`,
252 // @ts-expect-error Argument of type '{ method: string; } & { mode: string; headers: any; }' is not assignable to parameter of type 'RequestInit | undefined'.
249 requestData, 253 requestData,
250 ); 254 );
251 255
252 if (!request.ok) { 256 if (!request.ok) {
253 throw request; 257 throw new Error(request.statusText);
254 } 258 }
255 259
256 const serviceData = await request.json(); 260 const serviceData = await request.json();
@@ -258,25 +262,25 @@ export default class ServerApi {
258 return serviceData.data; 262 return serviceData.data;
259 } 263 }
260 264
261 async reorderService(data) { 265 async reorderService(data: any) {
262 const request = await sendAuthRequest(`${apiBase()}/service/reorder`, { 266 const request = await sendAuthRequest(`${apiBase()}/service/reorder`, {
263 method: 'PUT', 267 method: 'PUT',
264 body: JSON.stringify(data), 268 body: JSON.stringify(data),
265 }); 269 });
266 if (!request.ok) { 270 if (!request.ok) {
267 throw request; 271 throw new Error(request.statusText);
268 } 272 }
269 const serviceData = await request.json(); 273 const serviceData = await request.json();
270 debug('ServerApi::reorderService resolves', serviceData); 274 debug('ServerApi::reorderService resolves', serviceData);
271 return serviceData; 275 return serviceData;
272 } 276 }
273 277
274 async deleteService(id) { 278 async deleteService(id: string) {
275 const request = await sendAuthRequest(`${apiBase()}/service/${id}`, { 279 const request = await sendAuthRequest(`${apiBase()}/service/${id}`, {
276 method: 'DELETE', 280 method: 'DELETE',
277 }); 281 });
278 if (!request.ok) { 282 if (!request.ok) {
279 throw request; 283 throw new Error(request.statusText);
280 } 284 }
281 const data = await request.json(); 285 const data = await request.json();
282 286
@@ -290,7 +294,7 @@ export default class ServerApi {
290 async getDefaultFeatures() { 294 async getDefaultFeatures() {
291 const request = await sendAuthRequest(`${apiBase()}/features/default`); 295 const request = await sendAuthRequest(`${apiBase()}/features/default`);
292 if (!request.ok) { 296 if (!request.ok) {
293 throw request; 297 throw new Error(request.statusText);
294 } 298 }
295 const data = await request.json(); 299 const data = await request.json();
296 300
@@ -306,7 +310,7 @@ export default class ServerApi {
306 310
307 const request = await sendAuthRequest(`${apiBase()}/features`); 311 const request = await sendAuthRequest(`${apiBase()}/features`);
308 if (!request.ok) { 312 if (!request.ok) {
309 throw request; 313 throw new Error(request.statusText);
310 } 314 }
311 const data = await request.json(); 315 const data = await request.json();
312 316
@@ -340,13 +344,13 @@ export default class ServerApi {
340 return this.recipes; 344 return this.recipes;
341 } 345 }
342 346
343 async getRecipeUpdates(recipeVersions) { 347 async getRecipeUpdates(recipeVersions: any) {
344 const request = await sendAuthRequest(`${apiBase()}/recipes/update`, { 348 const request = await sendAuthRequest(`${apiBase()}/recipes/update`, {
345 method: 'POST', 349 method: 'POST',
346 body: JSON.stringify(recipeVersions), 350 body: JSON.stringify(recipeVersions),
347 }); 351 });
348 if (!request.ok) { 352 if (!request.ok) {
349 throw request; 353 throw new Error(request.statusText);
350 } 354 }
351 const recipes = await request.json(); 355 const recipes = await request.json();
352 debug('ServerApi::getRecipeUpdates resolves', recipes); 356 debug('ServerApi::getRecipeUpdates resolves', recipes);
@@ -356,7 +360,7 @@ export default class ServerApi {
356 // Recipes Previews 360 // Recipes Previews
357 async getRecipePreviews() { 361 async getRecipePreviews() {
358 const request = await sendAuthRequest(`${apiBase()}/recipes`); 362 const request = await sendAuthRequest(`${apiBase()}/recipes`);
359 if (!request.ok) throw request; 363 if (!request.ok) throw new Error(request.statusText);
360 const data = await request.json(); 364 const data = await request.json();
361 const recipePreviews = this._mapRecipePreviewModel(data); 365 const recipePreviews = this._mapRecipePreviewModel(data);
362 debug('ServerApi::getRecipes resolves', recipePreviews); 366 debug('ServerApi::getRecipes resolves', recipePreviews);
@@ -366,7 +370,7 @@ export default class ServerApi {
366 async getFeaturedRecipePreviews() { 370 async getFeaturedRecipePreviews() {
367 // TODO: If we are hitting the internal-server, we need to return an empty list, else we can hit the remote server and get the data 371 // TODO: If we are hitting the internal-server, we need to return an empty list, else we can hit the remote server and get the data
368 const request = await sendAuthRequest(`${apiBase()}/recipes/popular`); 372 const request = await sendAuthRequest(`${apiBase()}/recipes/popular`);
369 if (!request.ok) throw request; 373 if (!request.ok) throw new Error(request.statusText);
370 374
371 const data = await request.json(); 375 const data = await request.json();
372 const recipePreviews = this._mapRecipePreviewModel(data); 376 const recipePreviews = this._mapRecipePreviewModel(data);
@@ -374,10 +378,10 @@ export default class ServerApi {
374 return recipePreviews; 378 return recipePreviews;
375 } 379 }
376 380
377 async searchRecipePreviews(needle) { 381 async searchRecipePreviews(needle: string) {
378 const url = `${apiBase()}/recipes/search?needle=${needle}`; 382 const url = `${apiBase()}/recipes/search?needle=${needle}`;
379 const request = await sendAuthRequest(url); 383 const request = await sendAuthRequest(url);
380 if (!request.ok) throw request; 384 if (!request.ok) throw new Error(request.statusText);
381 385
382 const data = await request.json(); 386 const data = await request.json();
383 const recipePreviews = this._mapRecipePreviewModel(data); 387 const recipePreviews = this._mapRecipePreviewModel(data);
@@ -385,7 +389,7 @@ export default class ServerApi {
385 return recipePreviews; 389 return recipePreviews;
386 } 390 }
387 391
388 async getRecipePackage(recipeId) { 392 async getRecipePackage(recipeId: string) {
389 try { 393 try {
390 const recipesDirectory = userDataRecipesPath(); 394 const recipesDirectory = userDataRecipesPath();
391 const recipeTempDirectory = join(recipesDirectory, 'temp', recipeId); 395 const recipeTempDirectory = join(recipesDirectory, 'temp', recipeId);
@@ -395,7 +399,7 @@ export default class ServerApi {
395 399
396 ensureDirSync(recipeTempDirectory); 400 ensureDirSync(recipeTempDirectory);
397 401
398 let archivePath; 402 let archivePath: PathOrFileDescriptor;
399 403
400 if (pathExistsSync(internalRecipeFile)) { 404 if (pathExistsSync(internalRecipeFile)) {
401 debug('[ServerApi::getRecipePackage] Using internal recipe file'); 405 debug('[ServerApi::getRecipePackage] Using internal recipe file');
@@ -415,6 +419,7 @@ export default class ServerApi {
415 419
416 await sleep(10); 420 await sleep(10);
417 421
422 // @ts-expect-error No overload matches this call.
418 await tar.x({ 423 await tar.x({
419 file: archivePath, 424 file: archivePath,
420 cwd: recipeTempDirectory, 425 cwd: recipeTempDirectory,
@@ -454,7 +459,7 @@ export default class ServerApi {
454 false, 459 false,
455 ); 460 );
456 if (!request.ok) { 461 if (!request.ok) {
457 throw request; 462 throw new Error(request.statusText);
458 } 463 }
459 debug('ServerApi::healthCheck resolves'); 464 debug('ServerApi::healthCheck resolves');
460 } 465 }
@@ -467,7 +472,7 @@ export default class ServerApi {
467 472
468 if (Object.prototype.hasOwnProperty.call(config, 'services')) { 473 if (Object.prototype.hasOwnProperty.call(config, 'services')) {
469 const services = await Promise.all( 474 const services = await Promise.all(
470 config.services.map(async s => { 475 config.services.map(async (s: { service: any }) => {
471 const service = s; 476 const service = s;
472 const request = await sendAuthRequest( 477 const request = await sendAuthRequest(
473 `${apiBase()}/recipes/${s.service}`, 478 `${apiBase()}/recipes/${s.service}`,
@@ -475,6 +480,7 @@ export default class ServerApi {
475 480
476 if (request.status === 200) { 481 if (request.status === 200) {
477 const data = await request.json(); 482 const data = await request.json();
483 // @ts-expect-error Property 'recipe' does not exist on type '{ service: any; }'.
478 service.recipe = new RecipePreviewModel(data); 484 service.recipe = new RecipePreviewModel(data);
479 } 485 }
480 486
@@ -493,18 +499,18 @@ export default class ServerApi {
493 } 499 }
494 500
495 // Helper 501 // Helper
496 async _mapServiceModels(services) { 502 async _mapServiceModels(services: any[]) {
497 const recipes = services.map(s => s.recipeId); 503 const recipes = services.map((s: { recipeId: string }) => s.recipeId);
498 await this._bulkRecipeCheck(recipes); 504 await this._bulkRecipeCheck(recipes);
499 /* eslint-disable no-return-await */ 505 /* eslint-disable no-return-await */
500 return Promise.all( 506 return Promise.all(
501 services.map(async service => await this._prepareServiceModel(service)), 507 services.map(async (service: any) => this._prepareServiceModel(service)),
502 ); 508 );
503 /* eslint-enable no-return-await */ 509 /* eslint-enable no-return-await */
504 } 510 }
505 511
506 async _prepareServiceModel(service) { 512 async _prepareServiceModel(service: { recipeId: string }) {
507 let recipe; 513 let recipe: undefined;
508 try { 514 try {
509 recipe = this.recipes.find(r => r.id === service.recipeId); 515 recipe = this.recipes.find(r => r.id === service.recipeId);
510 516
@@ -520,14 +526,15 @@ export default class ServerApi {
520 } 526 }
521 } 527 }
522 528
523 async _bulkRecipeCheck(unfilteredRecipes) { 529 async _bulkRecipeCheck(unfilteredRecipes: any[]) {
524 // Filter recipe duplicates as we don't need to download 3 Slack recipes 530 // Filter recipe duplicates as we don't need to download 3 Slack recipes
525 const recipes = unfilteredRecipes.filter( 531 const recipes = unfilteredRecipes.filter(
526 (elem, pos, arr) => arr.indexOf(elem) === pos, 532 (elem: any, pos: number, arr: string | any[]) =>
533 arr.indexOf(elem) === pos,
527 ); 534 );
528 535
529 return Promise.all( 536 return Promise.all(
530 recipes.map(async recipeId => { 537 recipes.map(async (recipeId: string) => {
531 let recipe = this.recipes.find(r => r.id === recipeId); 538 let recipe = this.recipes.find(r => r.id === recipeId);
532 539
533 if (!recipe) { 540 if (!recipe) {
@@ -553,7 +560,7 @@ export default class ServerApi {
553 ).catch(error => console.error("Can't load recipe", error)); 560 ).catch(error => console.error("Can't load recipe", error));
554 } 561 }
555 562
556 _mapRecipePreviewModel(recipes) { 563 _mapRecipePreviewModel(recipes: any[]) {
557 return recipes 564 return recipes
558 .map(recipe => { 565 .map(recipe => {
559 try { 566 try {
diff --git a/src/api/utils/auth.ts b/src/api/utils/auth.ts
index 98295d1a4..899881e88 100644
--- a/src/api/utils/auth.ts
+++ b/src/api/utils/auth.ts
@@ -31,7 +31,7 @@ export const prepareAuthRequest = (
31 31
32export const sendAuthRequest = ( 32export const sendAuthRequest = (
33 url: RequestInfo, 33 url: RequestInfo,
34 options: { method: string } | undefined, 34 options?: { method: string; headers?: any; body?: any },
35 auth?: boolean, 35 auth?: boolean,
36) => 36) =>
37 // @ts-expect-error Argument of type '{ method: string; } & { mode: string; headers: any; }' is not assignable to parameter of type 'RequestInit | undefined'. 37 // @ts-expect-error Argument of type '{ method: string; } & { mode: string; headers: any; }' is not assignable to parameter of type 'RequestInit | undefined'.
diff --git a/src/assets/images/logo-beard-only.svg b/src/assets/images/logo-beard-only.svg
new file mode 100644
index 000000000..bb6e47939
--- /dev/null
+++ b/src/assets/images/logo-beard-only.svg
@@ -0,0 +1,12 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3<svg width="100%" height="100%" viewBox="0 0 1000 1000" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
4 <g id="Logo" transform="matrix(13.3662,0,0,13.3662,20.0535,18.5803)">
5 <g id="Lower-beard" serif:id="Lower beard" transform="matrix(0.0748156,0,0,0.0748156,-1.50032,-1.39009)">
6 <path d="M503.642,629.673C527.496,629.947 576.943,631.918 581,640C594.482,666.859 531.448,825.299 503.284,841.639L503.282,843C502.598,843 501.881,842.874 501.133,842.629C500.391,842.874 499.679,843 499,843L498.998,841.659C470.575,825.433 406.168,666.87 419.745,640C423.831,631.913 474.528,629.944 498.642,629.673L498.642,629.638C499.424,629.64 500.255,629.644 501.132,629.65C502.017,629.644 502.855,629.64 503.642,629.638L503.642,629.673Z" style="fill:white;"/>
7 </g>
8 <g id="Upper-beard" serif:id="Upper beard" transform="matrix(0.0748156,0,0,0.0748156,-1.50032,-1.39009)">
9 <path d="M498.733,357.203C547.473,355.78 574.716,313.221 627.233,336.042C700.337,367.808 723.258,456.308 806.959,474.341C838.428,481.121 857.323,456.253 877.092,437.581C883.524,431.506 893.049,418.562 896.807,419.813C900.441,421.022 900.267,433.842 898.85,440.69C896.129,453.836 892.451,467.441 884.685,478.393C874.137,493.269 860.132,505.776 845.238,516.299C802.136,546.753 740.569,558.817 688.631,557.703C652.806,556.934 612.989,546.685 579.942,534.342C549.791,523.08 533.28,483.381 498.234,482.887C463.111,483.381 446.563,523.08 416.345,534.342C383.226,546.685 343.32,556.934 307.416,557.703C255.363,558.817 193.659,546.753 150.461,516.299C135.535,505.776 121.498,493.269 110.927,478.393C103.144,467.441 99.458,453.836 96.731,440.69C95.311,433.842 95.136,421.022 98.778,419.813C102.545,418.562 112.091,431.506 118.537,437.581C138.35,456.253 157.286,481.121 188.826,474.341C272.712,456.308 295.684,367.808 368.949,336.042C421.583,313.221 449.854,355.78 498.733,357.203Z" style="fill:rgb(254,254,254);fill-rule:nonzero;"/>
10 </g>
11 </g>
12</svg>
diff --git a/src/components/auth/AuthLayout.js b/src/components/auth/AuthLayout.js
index f26282cfc..94ff5d54d 100644
--- a/src/components/auth/AuthLayout.js
+++ b/src/components/auth/AuthLayout.js
@@ -19,7 +19,6 @@ import AppUpdateInfoBar from '../AppUpdateInfoBar';
19import { GITHUB_FERDI_URL } from '../../config'; 19import { GITHUB_FERDI_URL } from '../../config';
20import { Icon } from '../ui/icon'; 20import { Icon } from '../ui/icon';
21 21
22@observer
23class AuthLayout extends Component { 22class AuthLayout extends Component {
24 static propTypes = { 23 static propTypes = {
25 children: oneOrManyChildElements.isRequired, 24 children: oneOrManyChildElements.isRequired,
@@ -107,4 +106,4 @@ class AuthLayout extends Component {
107 } 106 }
108} 107}
109 108
110export default injectIntl(AuthLayout); 109export default injectIntl(observer(AuthLayout));
diff --git a/src/components/auth/ChangeServer.js b/src/components/auth/ChangeServer.js
index 9aeebc5c8..4c69b2821 100644
--- a/src/components/auth/ChangeServer.js
+++ b/src/components/auth/ChangeServer.js
@@ -6,6 +6,7 @@ import Form from '../../lib/Form';
6import Input from '../ui/Input'; 6import Input from '../ui/Input';
7import Select from '../ui/Select'; 7import Select from '../ui/Select';
8import Button from '../ui/Button'; 8import Button from '../ui/Button';
9import Link from '../ui/Link';
9import Infobox from '../ui/Infobox'; 10import Infobox from '../ui/Infobox';
10import { url, required } from '../../helpers/validation-helpers'; 11import { url, required } from '../../helpers/validation-helpers';
11import { LIVE_FERDI_API, LIVE_FRANZ_API } from '../../config'; 12import { LIVE_FERDI_API, LIVE_FRANZ_API } from '../../config';
@@ -34,7 +35,6 @@ const messages = defineMessages({
34 }, 35 },
35}); 36});
36 37
37@observer
38class ChangeServer extends Component { 38class ChangeServer extends Component {
39 static propTypes = { 39 static propTypes = {
40 onSubmit: PropTypes.func.isRequired, 40 onSubmit: PropTypes.func.isRequired,
@@ -106,6 +106,7 @@ class ChangeServer extends Component {
106 return ( 106 return (
107 <div className="auth__container"> 107 <div className="auth__container">
108 <form className="franz-form auth__form" onSubmit={e => this.submit(e)}> 108 <form className="franz-form auth__form" onSubmit={e => this.submit(e)}>
109 <Link to='/auth/welcome'><img src="./assets/images/logo.svg" className="auth__logo" alt="" /></Link>
109 <h1>{intl.formatMessage(messages.headline)}</h1> 110 <h1>{intl.formatMessage(messages.headline)}</h1>
110 {form.$('server').value === this.franzServer && ( 111 {form.$('server').value === this.franzServer && (
111 <Infobox type="warning"> 112 <Infobox type="warning">
@@ -131,4 +132,4 @@ class ChangeServer extends Component {
131 } 132 }
132} 133}
133 134
134export default injectIntl(ChangeServer); 135export default injectIntl(observer(ChangeServer));
diff --git a/src/components/auth/Import.js b/src/components/auth/Import.js
index fe2fe9872..8f70318ed 100644
--- a/src/components/auth/Import.js
+++ b/src/components/auth/Import.js
@@ -28,7 +28,6 @@ const messages = defineMessages({
28 }, 28 },
29}); 29});
30 30
31@observer
32class Import extends Component { 31class Import extends Component {
33 static propTypes = { 32 static propTypes = {
34 services: MobxPropTypes.arrayOrObservableArray.isRequired, 33 services: MobxPropTypes.arrayOrObservableArray.isRequired,
@@ -166,4 +165,4 @@ class Import extends Component {
166 } 165 }
167} 166}
168 167
169export default injectIntl(Import); 168export default injectIntl(observer(Import));
diff --git a/src/components/auth/Invite.js b/src/components/auth/Invite.js
index f23417870..a23af7c6b 100644
--- a/src/components/auth/Invite.js
+++ b/src/components/auth/Invite.js
@@ -43,7 +43,6 @@ const messages = defineMessages({
43 }, 43 },
44}); 44});
45 45
46@observer
47class Invite extends Component { 46class Invite extends Component {
48 static propTypes = { 47 static propTypes = {
49 onSubmit: PropTypes.func.isRequired, 48 onSubmit: PropTypes.func.isRequired,
@@ -125,8 +124,8 @@ class Invite extends Component {
125 .some(emailValue => emailValue.trim() !== ''); 124 .some(emailValue => emailValue.trim() !== '');
126 125
127 const sendButtonClassName = classnames({ 126 const sendButtonClassName = classnames({
128 'auth__button': true, 127 auth__button: true,
129 'invite__embed--button': embed 128 'invite__embed--button': embed,
130 }); 129 });
131 130
132 const renderForm = ( 131 const renderForm = (
@@ -198,4 +197,4 @@ class Invite extends Component {
198 } 197 }
199} 198}
200 199
201export default injectIntl(Invite); 200export default injectIntl(observer(Invite));
diff --git a/src/components/auth/Locked.js b/src/components/auth/Locked.js
index 5b36b9fc2..ac1bc4e8c 100644
--- a/src/components/auth/Locked.js
+++ b/src/components/auth/Locked.js
@@ -7,7 +7,6 @@ import { defineMessages, injectIntl } from 'react-intl';
7import Form from '../../lib/Form'; 7import Form from '../../lib/Form';
8import Input from '../ui/Input'; 8import Input from '../ui/Input';
9import Button from '../ui/Button'; 9import Button from '../ui/Button';
10import Infobox from '../ui/Infobox';
11import { isMac } from '../../environment'; 10import { isMac } from '../../environment';
12 11
13import { globalError as globalErrorPropType } from '../../prop-types'; 12import { globalError as globalErrorPropType } from '../../prop-types';
@@ -17,11 +16,6 @@ const messages = defineMessages({
17 id: 'locked.headline', 16 id: 'locked.headline',
18 defaultMessage: 'Locked', 17 defaultMessage: 'Locked',
19 }, 18 },
20 info: {
21 id: 'locked.info',
22 defaultMessage:
23 'Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.',
24 },
25 touchId: { 19 touchId: {
26 id: 'locked.touchId', 20 id: 'locked.touchId',
27 defaultMessage: 'Unlock with Touch ID', 21 defaultMessage: 'Unlock with Touch ID',
@@ -48,7 +42,6 @@ const messages = defineMessages({
48 }, 42 },
49}); 43});
50 44
51@observer
52class Locked extends Component { 45class Locked extends Component {
53 static propTypes = { 46 static propTypes = {
54 onSubmit: PropTypes.func.isRequired, 47 onSubmit: PropTypes.func.isRequired,
@@ -108,7 +101,6 @@ class Locked extends Component {
108 <form className="franz-form auth__form" onSubmit={e => this.submit(e)}> 101 <form className="franz-form auth__form" onSubmit={e => this.submit(e)}>
109 <img src="./assets/images/logo.svg" className="auth__logo" alt="" /> 102 <img src="./assets/images/logo.svg" className="auth__logo" alt="" />
110 <h1>{intl.formatMessage(messages.headline)}</h1> 103 <h1>{intl.formatMessage(messages.headline)}</h1>
111 <Infobox type="warning">{intl.formatMessage(messages.info)}</Infobox>
112 104
113 {touchIdEnabled && ( 105 {touchIdEnabled && (
114 <> 106 <>
@@ -149,4 +141,4 @@ class Locked extends Component {
149 } 141 }
150} 142}
151 143
152export default injectIntl(Locked); 144export default injectIntl(observer(Locked));
diff --git a/src/components/auth/Login.js b/src/components/auth/Login.js
index 956205258..bd01f25cd 100644
--- a/src/components/auth/Login.js
+++ b/src/components/auth/Login.js
@@ -5,14 +5,12 @@ import { observer, inject } from 'mobx-react';
5import { defineMessages, injectIntl } from 'react-intl'; 5import { defineMessages, injectIntl } from 'react-intl';
6 6
7import { LIVE_FRANZ_API } from '../../config'; 7import { LIVE_FRANZ_API } from '../../config';
8import { API_VERSION, isDevMode, useLiveAPI } from '../../environment-remote'; 8import { API_VERSION } from '../../environment-remote';
9import Form from '../../lib/Form'; 9import Form from '../../lib/Form';
10import { required, email } from '../../helpers/validation-helpers'; 10import { required, email } from '../../helpers/validation-helpers';
11import serverlessLogin from '../../helpers/serverless-helpers';
12import Input from '../ui/Input'; 11import Input from '../ui/Input';
13import Button from '../ui/Button'; 12import Button from '../ui/Button';
14import Link from '../ui/Link'; 13import Link from '../ui/Link';
15import Infobox from '../ui/Infobox';
16 14
17import { globalError as globalErrorPropType } from '../../prop-types'; 15import { globalError as globalErrorPropType } from '../../prop-types';
18 16
@@ -57,22 +55,12 @@ const messages = defineMessages({
57 id: 'login.link.signup', 55 id: 'login.link.signup',
58 defaultMessage: 'Create a free account', 56 defaultMessage: 'Create a free account',
59 }, 57 },
60 changeServer: {
61 id: 'login.changeServer',
62 defaultMessage: 'Change server',
63 },
64 serverless: {
65 id: 'services.serverless',
66 defaultMessage: 'Use Ferdi without an Account',
67 },
68 passwordLink: { 58 passwordLink: {
69 id: 'login.link.password', 59 id: 'login.link.password',
70 defaultMessage: 'Reset password', 60 defaultMessage: 'Reset password',
71 }, 61 },
72}); 62});
73 63
74@inject('actions')
75@observer
76class Login extends Component { 64class Login extends Component {
77 static propTypes = { 65 static propTypes = {
78 onSubmit: PropTypes.func.isRequired, 66 onSubmit: PropTypes.func.isRequired,
@@ -81,9 +69,7 @@ class Login extends Component {
81 isServerLogout: PropTypes.bool.isRequired, 69 isServerLogout: PropTypes.bool.isRequired,
82 signupRoute: PropTypes.string.isRequired, 70 signupRoute: PropTypes.string.isRequired,
83 passwordRoute: PropTypes.string.isRequired, 71 passwordRoute: PropTypes.string.isRequired,
84 changeServerRoute: PropTypes.string.isRequired,
85 error: globalErrorPropType.isRequired, 72 error: globalErrorPropType.isRequired,
86 actions: PropTypes.object.isRequired,
87 }; 73 };
88 74
89 form = new Form( 75 form = new Form(
@@ -105,8 +91,6 @@ class Login extends Component {
105 this.props.intl, 91 this.props.intl,
106 ); 92 );
107 93
108 emailField = null;
109
110 submit(e) { 94 submit(e) {
111 e.preventDefault(); 95 e.preventDefault();
112 this.form.submit({ 96 this.form.submit({
@@ -117,10 +101,6 @@ class Login extends Component {
117 }); 101 });
118 } 102 }
119 103
120 useLocalServer() {
121 serverlessLogin(this.props.actions);
122 }
123
124 render() { 104 render() {
125 const { form } = this; 105 const { form } = this;
126 const { intl } = this.props; 106 const { intl } = this.props;
@@ -130,21 +110,14 @@ class Login extends Component {
130 isServerLogout, 110 isServerLogout,
131 signupRoute, 111 signupRoute,
132 passwordRoute, 112 passwordRoute,
133 changeServerRoute,
134 error, 113 error,
135 } = this.props; 114 } = this.props;
136 115
137 return ( 116 return (
138 <div className="auth__container"> 117 <div className="auth__container">
139 <form className="franz-form auth__form" onSubmit={e => this.submit(e)}> 118 <form className="franz-form auth__form" onSubmit={e => this.submit(e)}>
140 <img src="./assets/images/logo.svg" className="auth__logo" alt="" /> 119 <Link to='/auth/welcome'><img src="./assets/images/logo.svg" className="auth__logo" alt="" /></Link>
141 <h1>{intl.formatMessage(messages.headline)}</h1> 120 <h1>{intl.formatMessage(messages.headline)}</h1>
142 {isDevMode && !useLiveAPI && (
143 <Infobox type="warning">
144 In Dev Mode your data is not persistent. Please use the live app
145 for accessing the production API.
146 </Infobox>
147 )}
148 {isTokenExpired && ( 121 {isTokenExpired && (
149 <p className="error-message center"> 122 <p className="error-message center">
150 {intl.formatMessage(messages.tokenExpired)} 123 {intl.formatMessage(messages.tokenExpired)}
@@ -155,13 +128,7 @@ class Login extends Component {
155 {intl.formatMessage(messages.serverLogout)} 128 {intl.formatMessage(messages.serverLogout)}
156 </p> 129 </p>
157 )} 130 )}
158 <Input 131 <Input field={form.$('email')} focus />
159 field={form.$('email')}
160 ref={element => {
161 this.emailField = element;
162 }}
163 focus
164 />
165 <Input field={form.$('password')} showPasswordToggle /> 132 <Input field={form.$('password')} showPasswordToggle />
166 {error.code === 'invalid-credentials' && ( 133 {error.code === 'invalid-credentials' && (
167 <> 134 <>
@@ -205,12 +172,6 @@ class Login extends Component {
205 )} 172 )}
206 </form> 173 </form>
207 <div className="auth__links"> 174 <div className="auth__links">
208 <Link to={changeServerRoute}>
209 {intl.formatMessage(messages.changeServer)}
210 </Link>
211 <a onClick={this.useLocalServer.bind(this)}>
212 {intl.formatMessage(messages.serverless)}
213 </a>
214 <Link to={signupRoute}> 175 <Link to={signupRoute}>
215 {intl.formatMessage(messages.signupLink)} 176 {intl.formatMessage(messages.signupLink)}
216 </Link> 177 </Link>
@@ -223,4 +184,4 @@ class Login extends Component {
223 } 184 }
224} 185}
225 186
226export default injectIntl(Login); 187export default injectIntl(inject('actions')(observer(Login)));
diff --git a/src/components/auth/Password.js b/src/components/auth/Password.js
index d5bc7fa80..49930f6bd 100644
--- a/src/components/auth/Password.js
+++ b/src/components/auth/Password.js
@@ -38,7 +38,6 @@ const messages = defineMessages({
38 }, 38 },
39}); 39});
40 40
41@observer
42class Password extends Component { 41class Password extends Component {
43 static propTypes = { 42 static propTypes = {
44 onSubmit: PropTypes.func.isRequired, 43 onSubmit: PropTypes.func.isRequired,
@@ -79,7 +78,7 @@ class Password extends Component {
79 return ( 78 return (
80 <div className="auth__container"> 79 <div className="auth__container">
81 <form className="franz-form auth__form" onSubmit={e => this.submit(e)}> 80 <form className="franz-form auth__form" onSubmit={e => this.submit(e)}>
82 <img src="./assets/images/logo.svg" className="auth__logo" alt="" /> 81 <Link to='/auth/welcome'><img src="./assets/images/logo.svg" className="auth__logo" alt="" /></Link>
83 <h1>{intl.formatMessage(messages.headline)}</h1> 82 <h1>{intl.formatMessage(messages.headline)}</h1>
84 {status.length > 0 && status.includes('sent') && ( 83 {status.length > 0 && status.includes('sent') && (
85 <Infobox type="success" icon="checkbox-marked-circle-outline"> 84 <Infobox type="success" icon="checkbox-marked-circle-outline">
@@ -119,4 +118,4 @@ class Password extends Component {
119 } 118 }
120} 119}
121 120
122export default injectIntl(Password); 121export default injectIntl(observer(Password));
diff --git a/src/components/auth/SetupAssistant.js b/src/components/auth/SetupAssistant.js
index 1665bf837..a24f4e4d5 100644
--- a/src/components/auth/SetupAssistant.js
+++ b/src/components/auth/SetupAssistant.js
@@ -9,7 +9,7 @@ import { Input } from '../ui/input/index';
9import { Button } from '../ui/button/index'; 9import { Button } from '../ui/button/index';
10import { Badge } from '../ui/badge'; 10import { Badge } from '../ui/badge';
11import Modal from '../ui/Modal'; 11import Modal from '../ui/Modal';
12import Infobox from '../ui/Infobox'; 12import * as Infobox from '../ui/Infobox';
13import Appear from '../ui/effects/Appear'; 13import Appear from '../ui/effects/Appear';
14import globalMessages from '../../i18n/globalMessages'; 14import globalMessages from '../../i18n/globalMessages';
15 15
@@ -131,8 +131,6 @@ const styles = theme => ({
131 }, 131 },
132}); 132});
133 133
134@injectSheet(styles)
135@observer
136class SetupAssistant extends Component { 134class SetupAssistant extends Component {
137 static propTypes = { 135 static propTypes = {
138 classes: PropTypes.object.isRequired, 136 classes: PropTypes.object.isRequired,
@@ -327,4 +325,6 @@ class SetupAssistant extends Component {
327 } 325 }
328} 326}
329 327
330export default injectIntl(SetupAssistant); 328export default injectIntl(
329 injectSheet(styles, { injectTheme: true })(observer(SetupAssistant)),
330);
diff --git a/src/components/auth/Signup.js b/src/components/auth/Signup.js
index 00625a3ac..00b387b25 100644
--- a/src/components/auth/Signup.js
+++ b/src/components/auth/Signup.js
@@ -4,14 +4,11 @@ import PropTypes from 'prop-types';
4import { observer, inject } from 'mobx-react'; 4import { observer, inject } from 'mobx-react';
5import { defineMessages, injectIntl } from 'react-intl'; 5import { defineMessages, injectIntl } from 'react-intl';
6 6
7import { isDevMode, useLiveAPI } from '../../environment-remote';
8import Form from '../../lib/Form'; 7import Form from '../../lib/Form';
9import { required, email, minLength } from '../../helpers/validation-helpers'; 8import { required, email, minLength } from '../../helpers/validation-helpers';
10import serverlessLogin from '../../helpers/serverless-helpers';
11import Input from '../ui/Input'; 9import Input from '../ui/Input';
12import Button from '../ui/Button'; 10import Button from '../ui/Button';
13import Link from '../ui/Link'; 11import Link from '../ui/Link';
14import Infobox from '../ui/Infobox';
15 12
16import { globalError as globalErrorPropType } from '../../prop-types'; 13import { globalError as globalErrorPropType } from '../../prop-types';
17import { termsBase } from '../../api/apiBase'; 14import { termsBase } from '../../api/apiBase';
@@ -61,30 +58,18 @@ const messages = defineMessages({
61 id: 'signup.link.login', 58 id: 'signup.link.login',
62 defaultMessage: 'Already have an account, sign in?', 59 defaultMessage: 'Already have an account, sign in?',
63 }, 60 },
64 changeServer: {
65 id: 'login.changeServer',
66 defaultMessage: 'Change server',
67 },
68 serverless: {
69 id: 'services.serverless',
70 defaultMessage: 'Use Ferdi without an Account',
71 },
72 emailDuplicate: { 61 emailDuplicate: {
73 id: 'signup.emailDuplicate', 62 id: 'signup.emailDuplicate',
74 defaultMessage: 'A user with that email address already exists', 63 defaultMessage: 'A user with that email address already exists',
75 }, 64 },
76}); 65});
77 66
78@inject('actions')
79@observer
80class Signup extends Component { 67class Signup extends Component {
81 static propTypes = { 68 static propTypes = {
82 onSubmit: PropTypes.func.isRequired, 69 onSubmit: PropTypes.func.isRequired,
83 isSubmitting: PropTypes.bool.isRequired, 70 isSubmitting: PropTypes.bool.isRequired,
84 loginRoute: PropTypes.string.isRequired, 71 loginRoute: PropTypes.string.isRequired,
85 changeServerRoute: PropTypes.string.isRequired,
86 error: globalErrorPropType.isRequired, 72 error: globalErrorPropType.isRequired,
87 actions: PropTypes.object.isRequired,
88 }; 73 };
89 74
90 form = new Form( 75 form = new Form(
@@ -126,14 +111,10 @@ class Signup extends Component {
126 }); 111 });
127 } 112 }
128 113
129 useLocalServer() {
130 serverlessLogin(this.props.actions);
131 }
132
133 render() { 114 render() {
134 const { form } = this; 115 const { form } = this;
135 const { intl } = this.props; 116 const { intl } = this.props;
136 const { isSubmitting, loginRoute, error, changeServerRoute } = this.props; 117 const { isSubmitting, loginRoute, error } = this.props;
137 118
138 return ( 119 return (
139 <div className="auth__scroll-container"> 120 <div className="auth__scroll-container">
@@ -142,14 +123,8 @@ class Signup extends Component {
142 className="franz-form auth__form" 123 className="franz-form auth__form"
143 onSubmit={e => this.submit(e)} 124 onSubmit={e => this.submit(e)}
144 > 125 >
145 <img src="./assets/images/logo.svg" className="auth__logo" alt="" /> 126 <Link to='/auth/welcome'><img src="./assets/images/logo.svg" className="auth__logo" alt="" /></Link>
146 <h1>{intl.formatMessage(messages.headline)}</h1> 127 <h1>{intl.formatMessage(messages.headline)}</h1>
147 {isDevMode && !useLiveAPI && (
148 <Infobox type="warning">
149 In Dev Mode your data is not persistent. Please use the live app
150 for accesing the production API.
151 </Infobox>
152 )}
153 <div className="grid__row"> 128 <div className="grid__row">
154 <Input field={form.$('firstname')} focus /> 129 <Input field={form.$('firstname')} focus />
155 <Input field={form.$('lastname')} /> 130 <Input field={form.$('lastname')} />
@@ -201,12 +176,6 @@ class Signup extends Component {
201 </p> 176 </p>
202 </form> 177 </form>
203 <div className="auth__links"> 178 <div className="auth__links">
204 <Link to={changeServerRoute}>
205 {intl.formatMessage(messages.changeServer)}
206 </Link>
207 <a onClick={this.useLocalServer.bind(this)}>
208 {intl.formatMessage(messages.serverless)}
209 </a>
210 <Link to={loginRoute}> 179 <Link to={loginRoute}>
211 {intl.formatMessage(messages.loginLink)} 180 {intl.formatMessage(messages.loginLink)}
212 </Link> 181 </Link>
@@ -217,4 +186,4 @@ class Signup extends Component {
217 } 186 }
218} 187}
219 188
220export default injectIntl(Signup); 189export default injectIntl(inject('actions')(observer(Signup)));
diff --git a/src/components/auth/Welcome.js b/src/components/auth/Welcome.js
index 809ec67a7..4f7a5ce30 100644
--- a/src/components/auth/Welcome.js
+++ b/src/components/auth/Welcome.js
@@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
4import { observer, PropTypes as MobxPropTypes, inject } from 'mobx-react'; 4import { observer, PropTypes as MobxPropTypes, inject } from 'mobx-react';
5import { defineMessages, injectIntl } from 'react-intl'; 5import { defineMessages, injectIntl } from 'react-intl';
6import serverlessLogin from '../../helpers/serverless-helpers'; 6import serverlessLogin from '../../helpers/serverless-helpers';
7import { shuffleArray } from '../../helpers/array-helpers';
7 8
8import Link from '../ui/Link'; 9import Link from '../ui/Link';
9 10
@@ -16,14 +17,16 @@ const messages = defineMessages({
16 id: 'welcome.loginButton', 17 id: 'welcome.loginButton',
17 defaultMessage: 'Login to your account', 18 defaultMessage: 'Login to your account',
18 }, 19 },
20 changeServer: {
21 id: 'login.changeServer',
22 defaultMessage: 'Change server'
23 },
19 serverless: { 24 serverless: {
20 id: 'services.serverless', 25 id: 'services.serverless',
21 defaultMessage: 'Use Ferdi without an Account', 26 defaultMessage: 'Use Ferdi without an Account',
22 }, 27 },
23}); 28});
24 29
25@inject('actions')
26@observer
27class Login extends Component { 30class Login extends Component {
28 static propTypes = { 31 static propTypes = {
29 loginRoute: PropTypes.string.isRequired, 32 loginRoute: PropTypes.string.isRequired,
@@ -39,8 +42,10 @@ class Login extends Component {
39 42
40 render() { 43 render() {
41 const { intl } = this.props; 44 const { intl } = this.props;
42 const { loginRoute, signupRoute, changeServerRoute, recipes } = this.props; 45 const { loginRoute, signupRoute, changeServerRoute } = this.props;
43 46 let { recipes } = this.props;
47 recipes = shuffleArray(recipes);
48 recipes.length = 8 * 2;
44 return ( 49 return (
45 <div className="welcome"> 50 <div className="welcome">
46 <div className="welcome__content"> 51 <div className="welcome__content">
@@ -61,25 +66,22 @@ class Login extends Component {
61 <Link to={loginRoute} className="button"> 66 <Link to={loginRoute} className="button">
62 {intl.formatMessage(messages.loginButton)} 67 {intl.formatMessage(messages.loginButton)}
63 </Link> 68 </Link>
64 <br />
65 <br />
66 <a className="button" onClick={this.useLocalServer.bind(this)}>
67 {intl.formatMessage(messages.serverless)}
68 </a>
69 <br />
70 <br />
71
72 <Link to={changeServerRoute}> 69 <Link to={changeServerRoute}>
73 <span 70 <span
74 style={{ 71 style={{
75 textAlign: 'center', 72 color: '#fff'
76 width: '100%',
77 cursor: 'pointer',
78 }} 73 }}
79 > 74 >
80 Change server 75 {intl.formatMessage(messages.changeServer)}
81 </span> 76 </span>
82 </Link> 77 </Link>
78 <br />
79 <br />
80 <hr />
81 <br />
82 <a className="button" onClick={this.useLocalServer.bind(this)}>
83 {intl.formatMessage(messages.serverless)}
84 </a>
83 </div> 85 </div>
84 <div className="welcome__featured-services"> 86 <div className="welcome__featured-services">
85 {recipes.map(recipe => ( 87 {recipes.map(recipe => (
@@ -93,4 +95,4 @@ class Login extends Component {
93 } 95 }
94} 96}
95 97
96export default injectIntl(Login); 98export default injectIntl(inject('actions')(observer(Login)));
diff --git a/src/components/layout/AppLayout.js b/src/components/layout/AppLayout.js
index a31419a5e..084d93ecd 100644
--- a/src/components/layout/AppLayout.js
+++ b/src/components/layout/AppLayout.js
@@ -74,8 +74,6 @@ const toggleFullScreen = () => {
74 ipcRenderer.send('window.toolbar-double-clicked'); 74 ipcRenderer.send('window.toolbar-double-clicked');
75}; 75};
76 76
77@injectSheet(styles)
78@observer
79class AppLayout extends Component { 77class AppLayout extends Component {
80 static propTypes = { 78 static propTypes = {
81 classes: PropTypes.object.isRequired, 79 classes: PropTypes.object.isRequired,
@@ -208,4 +206,6 @@ class AppLayout extends Component {
208 } 206 }
209} 207}
210 208
211export default injectIntl(AppLayout); 209export default injectIntl(
210 injectSheet(styles, { injectTheme: true })(observer(AppLayout)),
211);
diff --git a/src/components/layout/Sidebar.js b/src/components/layout/Sidebar.js
index 728613f42..4f67a8719 100644
--- a/src/components/layout/Sidebar.js
+++ b/src/components/layout/Sidebar.js
@@ -66,8 +66,6 @@ const messages = defineMessages({
66 }, 66 },
67}); 67});
68 68
69@inject('stores', 'actions')
70@observer
71class Sidebar extends Component { 69class Sidebar extends Component {
72 static propTypes = { 70 static propTypes = {
73 openSettings: PropTypes.func.isRequired, 71 openSettings: PropTypes.func.isRequired,
@@ -262,4 +260,4 @@ class Sidebar extends Component {
262 } 260 }
263} 261}
264 262
265export default injectIntl(Sidebar); 263export default injectIntl(inject('stores', 'actions')(observer(Sidebar)));
diff --git a/src/components/services/content/ConnectionLostBanner.js b/src/components/services/content/ConnectionLostBanner.js
index 5111a081a..5adb22c84 100644
--- a/src/components/services/content/ConnectionLostBanner.js
+++ b/src/components/services/content/ConnectionLostBanner.js
@@ -1,4 +1,4 @@
1import { createRef, Component } from 'react'; 1import { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss'; 4import injectSheet from 'react-jss';
@@ -68,8 +68,6 @@ const styles = theme => ({
68 }, 68 },
69}); 69});
70 70
71@injectSheet(styles)
72@observer
73class ConnectionLostBanner extends Component { 71class ConnectionLostBanner extends Component {
74 static propTypes = { 72 static propTypes = {
75 classes: PropTypes.object.isRequired, 73 classes: PropTypes.object.isRequired,
@@ -77,8 +75,6 @@ class ConnectionLostBanner extends Component {
77 reload: PropTypes.func.isRequired, 75 reload: PropTypes.func.isRequired,
78 }; 76 };
79 77
80 inputRef = createRef();
81
82 render() { 78 render() {
83 const { classes, name, reload } = this.props; 79 const { classes, name, reload } = this.props;
84 80
@@ -105,4 +101,4 @@ class ConnectionLostBanner extends Component {
105 } 101 }
106} 102}
107 103
108export default injectIntl(ConnectionLostBanner); 104export default injectIntl(injectSheet(styles)(observer(ConnectionLostBanner)));
diff --git a/src/components/services/content/ErrorHandlers/WebviewErrorHandler.js b/src/components/services/content/ErrorHandlers/WebviewErrorHandler.js
index 5c93de80f..d605b3a52 100644
--- a/src/components/services/content/ErrorHandlers/WebviewErrorHandler.js
+++ b/src/components/services/content/ErrorHandlers/WebviewErrorHandler.js
@@ -31,8 +31,6 @@ const messages = defineMessages({
31 }, 31 },
32}); 32});
33 33
34@injectSheet(styles)
35@observer
36class WebviewErrorHandler extends Component { 34class WebviewErrorHandler extends Component {
37 static propTypes = { 35 static propTypes = {
38 name: PropTypes.string.isRequired, 36 name: PropTypes.string.isRequired,
@@ -71,4 +69,6 @@ class WebviewErrorHandler extends Component {
71 } 69 }
72} 70}
73 71
74export default injectIntl(WebviewErrorHandler); 72export default injectIntl(
73 injectSheet(styles, { injectTheme: true })(observer(WebviewErrorHandler)),
74);
diff --git a/src/components/services/content/ServiceDisabled.js b/src/components/services/content/ServiceDisabled.js
index 476b23235..b4658618e 100644
--- a/src/components/services/content/ServiceDisabled.js
+++ b/src/components/services/content/ServiceDisabled.js
@@ -16,17 +16,12 @@ const messages = defineMessages({
16 }, 16 },
17}); 17});
18 18
19@observer
20class ServiceDisabled extends Component { 19class ServiceDisabled extends Component {
21 static propTypes = { 20 static propTypes = {
22 name: PropTypes.string.isRequired, 21 name: PropTypes.string.isRequired,
23 enable: PropTypes.func.isRequired, 22 enable: PropTypes.func.isRequired,
24 }; 23 };
25 24
26 countdownInterval = null;
27
28 countdownIntervalTimeout = 1000;
29
30 render() { 25 render() {
31 const { name, enable } = this.props; 26 const { name, enable } = this.props;
32 const { intl } = this.props; 27 const { intl } = this.props;
@@ -44,4 +39,4 @@ class ServiceDisabled extends Component {
44 } 39 }
45} 40}
46 41
47export default injectIntl(ServiceDisabled); 42export default injectIntl(observer(ServiceDisabled));
diff --git a/src/components/services/content/ServiceView.js b/src/components/services/content/ServiceView.js
index 1bc1fbf5f..3ea36ae97 100644
--- a/src/components/services/content/ServiceView.js
+++ b/src/components/services/content/ServiceView.js
@@ -1,3 +1,4 @@
1/* eslint-disable react/jsx-no-useless-fragment */
1import { Component, Fragment } from 'react'; 2import { Component, Fragment } from 'react';
2import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
3import { autorun } from 'mobx'; 4import { autorun } from 'mobx';
@@ -15,8 +16,6 @@ import SettingsStore from '../../../stores/SettingsStore';
15import WebControlsScreen from '../../../features/webControls/containers/WebControlsScreen'; 16import WebControlsScreen from '../../../features/webControls/containers/WebControlsScreen';
16import { CUSTOM_WEBSITE_RECIPE_ID } from '../../../config'; 17import { CUSTOM_WEBSITE_RECIPE_ID } from '../../../config';
17 18
18@inject('stores', 'actions')
19@observer
20class ServiceView extends Component { 19class ServiceView extends Component {
21 static propTypes = { 20 static propTypes = {
22 service: PropTypes.instanceOf(ServiceModel).isRequired, 21 service: PropTypes.instanceOf(ServiceModel).isRequired,
@@ -65,17 +64,6 @@ class ServiceView extends Component {
65 clearTimeout(this.hibernationTimer); 64 clearTimeout(this.hibernationTimer);
66 } 65 }
67 66
68 updateTargetUrl = event => {
69 let visible = true;
70 if (event.url === '' || event.url === '#') {
71 visible = false;
72 }
73 this.setState({
74 targetUrl: event.url,
75 statusBarVisible: visible,
76 });
77 };
78
79 render() { 67 render() {
80 const { 68 const {
81 detachService, 69 detachService,
@@ -121,6 +109,7 @@ class ServiceView extends Component {
121 {service.isEnabled && 109 {service.isEnabled &&
122 service.isLoading && 110 service.isLoading &&
123 service.isFirstLoad && 111 service.isFirstLoad &&
112 !service.isHibernating &&
124 !service.isServiceAccessRestricted && ( 113 !service.isServiceAccessRestricted && (
125 <WebviewLoader loaded={false} name={service.name} /> 114 <WebviewLoader loaded={false} name={service.name} />
126 )} 115 )}
@@ -157,12 +146,12 @@ class ServiceView extends Component {
157 /> 146 />
158 </> 147 </>
159 ) : ( 148 ) : (
160 <div> 149 <div style={{display: 'flex', flexDirection: 'column', justifyContent: 'center', alignItems: 'center', textAlign: 'center' }}>
161 <span role="img" aria-label="Sleeping Emoji"> 150 <span role="img" aria-label="Sleeping Emoji" style={{fontSize: 42}}>
162 😴 151 😴
163 </span>{' '} 152 </span><br/><br/>
164 This service is currently hibernating. If this page doesn&#x27;t 153 This service is currently hibernating.<br/>
165 close soon, please try reloading Ferdi. 154 Try switching services or reloading Ferdi.
166 </div> 155 </div>
167 )} 156 )}
168 </> 157 </>
@@ -173,4 +162,4 @@ class ServiceView extends Component {
173 } 162 }
174} 163}
175 164
176export default ServiceView; 165export default inject('stores', 'actions')(observer(ServiceView));
diff --git a/src/components/services/content/ServiceWebview.js b/src/components/services/content/ServiceWebview.js
index 187785f82..12aaf70b7 100644
--- a/src/components/services/content/ServiceWebview.js
+++ b/src/components/services/content/ServiceWebview.js
@@ -9,7 +9,6 @@ import ServiceModel from '../../../models/Service';
9 9
10const debug = require('debug')('Ferdi:Services'); 10const debug = require('debug')('Ferdi:Services');
11 11
12@observer
13class ServiceWebview extends Component { 12class ServiceWebview extends Component {
14 static propTypes = { 13 static propTypes = {
15 service: PropTypes.instanceOf(ServiceModel).isRequired, 14 service: PropTypes.instanceOf(ServiceModel).isRequired,
@@ -31,11 +30,13 @@ class ServiceWebview extends Component {
31 debug('Service logged a message:', e.message); 30 debug('Service logged a message:', e.message);
32 }); 31 });
33 this.webview.view.addEventListener('did-navigate', () => { 32 this.webview.view.addEventListener('did-navigate', () => {
34 document.title = `Ferdi - ${this.props.service.name} ${ 33 if (this.props.service._webview) {
35 this.props.service.dialogTitle 34 document.title = `Ferdi - ${this.props.service.name} ${
36 ? ` - ${this.props.service.dialogTitle}` 35 this.props.service.dialogTitle
37 : '' 36 ? ` - ${this.props.service.dialogTitle}`
38 } ${`- ${this.props.service._webview.getTitle()}`}`; 37 : ''
38 } ${`- ${this.props.service._webview.getTitle()}`}`;
39 }
39 }); 40 });
40 } 41 }
41 }, 42 },
@@ -108,10 +109,10 @@ class ServiceWebview extends Component {
108 nodeintegration 109 nodeintegration
109 webpreferences={`spellcheck=${ 110 webpreferences={`spellcheck=${
110 isSpellcheckerEnabled ? 1 : 0 111 isSpellcheckerEnabled ? 1 : 0
111 }, contextIsolation=1, enableRemoteModule=1`} 112 }, contextIsolation=1, nativeWindowOpen=1, enableRemoteModule=1`}
112 /> 113 />
113 ); 114 );
114 } 115 }
115} 116}
116 117
117export default ServiceWebview; 118export default observer(ServiceWebview);
diff --git a/src/components/services/content/Services.js b/src/components/services/content/Services.js
index 1edf31bd3..cbc70563d 100644
--- a/src/components/services/content/Services.js
+++ b/src/components/services/content/Services.js
@@ -12,10 +12,6 @@ import Appear from '../../ui/effects/Appear';
12import serverlessLogin from '../../../helpers/serverless-helpers'; 12import serverlessLogin from '../../../helpers/serverless-helpers';
13 13
14const messages = defineMessages({ 14const messages = defineMessages({
15 welcome: {
16 id: 'services.welcome',
17 defaultMessage: 'Welcome to Ferdi',
18 },
19 getStarted: { 15 getStarted: {
20 id: 'services.getStarted', 16 id: 'services.getStarted',
21 defaultMessage: 'Get started', 17 defaultMessage: 'Get started',
@@ -44,9 +40,6 @@ const styles = {
44 }, 40 },
45}; 41};
46 42
47@injectSheet(styles)
48@inject('actions')
49@observer
50class Services extends Component { 43class Services extends Component {
51 static propTypes = { 44 static propTypes = {
52 services: MobxPropTypes.arrayOrObservableArray, 45 services: MobxPropTypes.arrayOrObservableArray,
@@ -132,11 +125,10 @@ class Services extends Component {
132 <Appear timeout={1500} transitionName="slideUp"> 125 <Appear timeout={1500} transitionName="slideUp">
133 <div className="services__no-service"> 126 <div className="services__no-service">
134 <img 127 <img
135 src="./assets/images/logo.svg" 128 src="./assets/images/logo-beard-only.svg"
136 alt="Logo" 129 alt="Logo"
137 style={{ maxHeight: '50vh' }} 130 style={{ maxHeight: '50vh' }}
138 /> 131 />
139 <h1>{intl.formatMessage(messages.welcome)}</h1>
140 {!isLoggedIn && ( 132 {!isLoggedIn && (
141 <> 133 <>
142 <p>{intl.formatMessage(messages.login)}</p> 134 <p>{intl.formatMessage(messages.login)}</p>
@@ -197,4 +189,8 @@ class Services extends Component {
197 } 189 }
198} 190}
199 191
200export default injectIntl(Services); 192export default injectIntl(
193 injectSheet(styles, { injectTheme: true })(
194 inject('actions')(observer(Services)),
195 ),
196);
diff --git a/src/components/services/content/WebviewCrashHandler.js b/src/components/services/content/WebviewCrashHandler.js
index 3607435b3..1ca5ba415 100644
--- a/src/components/services/content/WebviewCrashHandler.js
+++ b/src/components/services/content/WebviewCrashHandler.js
@@ -26,7 +26,6 @@ const messages = defineMessages({
26 }, 26 },
27}); 27});
28 28
29@observer
30class WebviewCrashHandler extends Component { 29class WebviewCrashHandler extends Component {
31 static propTypes = { 30 static propTypes = {
32 name: PropTypes.string.isRequired, 31 name: PropTypes.string.isRequired,
@@ -81,4 +80,4 @@ class WebviewCrashHandler extends Component {
81 } 80 }
82} 81}
83 82
84export default injectIntl(WebviewCrashHandler); 83export default injectIntl(observer(WebviewCrashHandler));
diff --git a/src/components/services/tabs/TabBarSortableList.js b/src/components/services/tabs/TabBarSortableList.js
index 3049b6efa..e01461e5c 100644
--- a/src/components/services/tabs/TabBarSortableList.js
+++ b/src/components/services/tabs/TabBarSortableList.js
@@ -5,7 +5,6 @@ import { SortableContainer } from 'react-sortable-hoc';
5 5
6import TabItem from './TabItem'; 6import TabItem from './TabItem';
7 7
8@observer
9class TabBarSortableList extends Component { 8class TabBarSortableList extends Component {
10 static propTypes = { 9 static propTypes = {
11 services: MobxPropTypes.arrayOrObservableArray.isRequired, 10 services: MobxPropTypes.arrayOrObservableArray.isRequired,
@@ -75,4 +74,4 @@ class TabBarSortableList extends Component {
75 } 74 }
76} 75}
77 76
78export default SortableContainer(TabBarSortableList); 77export default SortableContainer(observer(TabBarSortableList));
diff --git a/src/components/services/tabs/TabItem.js b/src/components/services/tabs/TabItem.js
index 5381d7c2b..f5ced7a31 100644
--- a/src/components/services/tabs/TabItem.js
+++ b/src/components/services/tabs/TabItem.js
@@ -114,9 +114,6 @@ const styles = {
114 }, 114 },
115}; 115};
116 116
117@injectSheet(styles)
118@inject('stores')
119@observer
120class TabItem extends Component { 117class TabItem extends Component {
121 static propTypes = { 118 static propTypes = {
122 classes: PropTypes.object.isRequired, 119 classes: PropTypes.object.isRequired,
@@ -239,6 +236,7 @@ class TabItem extends Component {
239 label: intl.formatMessage(messages.reload), 236 label: intl.formatMessage(messages.reload),
240 click: reload, 237 click: reload,
241 accelerator: `${cmdOrCtrlShortcutKey()}+R`, 238 accelerator: `${cmdOrCtrlShortcutKey()}+R`,
239 enabled: service.isEnabled,
242 }, 240 },
243 { 241 {
244 label: intl.formatMessage(globalMessages.edit), 242 label: intl.formatMessage(globalMessages.edit),
@@ -256,6 +254,7 @@ class TabItem extends Component {
256 : intl.formatMessage(messages.enableNotifications), 254 : intl.formatMessage(messages.enableNotifications),
257 click: () => toggleNotifications(), 255 click: () => toggleNotifications(),
258 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+N`, 256 accelerator: `${cmdOrCtrlShortcutKey()}+${altKey()}+N`,
257 enabled: service.isEnabled,
259 }, 258 },
260 { 259 {
261 label: service.isMuted 260 label: service.isMuted
@@ -263,6 +262,7 @@ class TabItem extends Component {
263 : intl.formatMessage(messages.disableAudio), 262 : intl.formatMessage(messages.disableAudio),
264 click: () => toggleAudio(), 263 click: () => toggleAudio(),
265 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+A`, 264 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+A`,
265 enabled: service.isEnabled,
266 }, 266 },
267 { 267 {
268 label: service.isDarkModeEnabled 268 label: service.isDarkModeEnabled
@@ -270,13 +270,14 @@ class TabItem extends Component {
270 : intl.formatMessage(messages.enableDarkMode), 270 : intl.formatMessage(messages.enableDarkMode),
271 click: () => toggleDarkMode(), 271 click: () => toggleDarkMode(),
272 accelerator: `${shiftKey()}+${altKey()}+D`, 272 accelerator: `${shiftKey()}+${altKey()}+D`,
273 enabled: service.isEnabled,
273 }, 274 },
274 { 275 {
275 label: intl.formatMessage( 276 label: intl.formatMessage(
276 service.isEnabled ? messages.disableService : messages.enableService, 277 service.isEnabled ? messages.disableService : messages.enableService,
277 ), 278 ),
278 click: () => (service.isEnabled ? disableService() : enableService()), 279 click: () => (service.isEnabled ? disableService() : enableService()),
279 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+S`, 280 accelerator: `${cmdOrCtrlShortcutKey()}+${shiftKey()}+S`,
280 }, 281 },
281 { 282 {
282 label: intl.formatMessage( 283 label: intl.formatMessage(
@@ -287,7 +288,7 @@ class TabItem extends Component {
287 // eslint-disable-next-line no-confusing-arrow 288 // eslint-disable-next-line no-confusing-arrow
288 click: () => 289 click: () =>
289 service.isHibernating ? wakeUpService() : hibernateService(), 290 service.isHibernating ? wakeUpService() : hibernateService(),
290 enabled: service.canHibernate, 291 enabled: service.isEnabled && service.canHibernate,
291 }, 292 },
292 { 293 {
293 type: 'separator', 294 type: 'separator',
@@ -402,4 +403,10 @@ class TabItem extends Component {
402 } 403 }
403} 404}
404 405
405export default injectIntl(SortableElement(TabItem)); 406export default injectIntl(
407 SortableElement(
408 injectSheet(styles, { injectTheme: true })(
409 inject('stores')(observer(TabItem)),
410 ),
411 ),
412);
diff --git a/src/components/services/tabs/Tabbar.js b/src/components/services/tabs/Tabbar.js
index 94d6f33c1..d9e11df41 100644
--- a/src/components/services/tabs/Tabbar.js
+++ b/src/components/services/tabs/Tabbar.js
@@ -4,7 +4,6 @@ import { observer, PropTypes as MobxPropTypes } from 'mobx-react';
4 4
5import TabBarSortableList from './TabBarSortableList'; 5import TabBarSortableList from './TabBarSortableList';
6 6
7@observer
8class TabBar extends Component { 7class TabBar extends Component {
9 static propTypes = { 8 static propTypes = {
10 services: MobxPropTypes.arrayOrObservableArray.isRequired, 9 services: MobxPropTypes.arrayOrObservableArray.isRequired,
@@ -120,4 +119,4 @@ class TabBar extends Component {
120 } 119 }
121} 120}
122 121
123export default TabBar; 122export default observer(TabBar);
diff --git a/src/components/settings/SettingsLayout.js b/src/components/settings/SettingsLayout.js
index e9119a944..de13e95ab 100644
--- a/src/components/settings/SettingsLayout.js
+++ b/src/components/settings/SettingsLayout.js
@@ -16,7 +16,6 @@ const messages = defineMessages({
16 }, 16 },
17}); 17});
18 18
19@observer
20class SettingsLayout extends Component { 19class SettingsLayout extends Component {
21 static propTypes = { 20 static propTypes = {
22 navigation: PropTypes.element.isRequired, 21 navigation: PropTypes.element.isRequired,
@@ -78,4 +77,4 @@ class SettingsLayout extends Component {
78 } 77 }
79} 78}
80 79
81export default injectIntl(SettingsLayout); 80export default injectIntl(observer(SettingsLayout));
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js
index 6c489e64b..d0c56af05 100644
--- a/src/components/settings/account/AccountDashboard.js
+++ b/src/components/settings/account/AccountDashboard.js
@@ -64,7 +64,6 @@ const messages = defineMessages({
64 }, 64 },
65}); 65});
66 66
67@observer
68class AccountDashboard extends Component { 67class AccountDashboard extends Component {
69 static propTypes = { 68 static propTypes = {
70 user: MobxPropTypes.observableObject.isRequired, 69 user: MobxPropTypes.observableObject.isRequired,
@@ -229,4 +228,4 @@ class AccountDashboard extends Component {
229 } 228 }
230} 229}
231 230
232export default injectIntl(AccountDashboard); 231export default injectIntl(observer(AccountDashboard));
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js
index dbb1365b0..2fdb6e574 100644
--- a/src/components/settings/navigation/SettingsNavigation.js
+++ b/src/components/settings/navigation/SettingsNavigation.js
@@ -42,8 +42,6 @@ const messages = defineMessages({
42 }, 42 },
43}); 43});
44 44
45@inject('stores', 'actions')
46@observer
47class SettingsNavigation extends Component { 45class SettingsNavigation extends Component {
48 static propTypes = { 46 static propTypes = {
49 stores: PropTypes.shape({ 47 stores: PropTypes.shape({
@@ -175,4 +173,4 @@ class SettingsNavigation extends Component {
175 } 173 }
176} 174}
177 175
178export default injectIntl(SettingsNavigation); 176export default injectIntl(inject('stores', 'actions')(observer(SettingsNavigation)));
diff --git a/src/components/settings/recipes/RecipeItem.js b/src/components/settings/recipes/RecipeItem.js
index 1e910e6dc..df5b42222 100644
--- a/src/components/settings/recipes/RecipeItem.js
+++ b/src/components/settings/recipes/RecipeItem.js
@@ -4,7 +4,6 @@ import { observer } from 'mobx-react';
4 4
5import RecipePreviewModel from '../../../models/RecipePreview'; 5import RecipePreviewModel from '../../../models/RecipePreview';
6 6
7@observer
8class RecipeItem extends Component { 7class RecipeItem extends Component {
9 static propTypes = { 8 static propTypes = {
10 recipe: PropTypes.instanceOf(RecipePreviewModel).isRequired, 9 recipe: PropTypes.instanceOf(RecipePreviewModel).isRequired,
@@ -31,4 +30,4 @@ class RecipeItem extends Component {
31 } 30 }
32} 31}
33 32
34export default RecipeItem; 33export default observer(RecipeItem);
diff --git a/src/components/settings/recipes/RecipesDashboard.js b/src/components/settings/recipes/RecipesDashboard.js
index dcf7a4784..0ba295369 100644
--- a/src/components/settings/recipes/RecipesDashboard.js
+++ b/src/components/settings/recipes/RecipesDashboard.js
@@ -51,7 +51,8 @@ const messages = defineMessages({
51 }, 51 },
52 customRecipeIntro: { 52 customRecipeIntro: {
53 id: 'settings.recipes.customService.intro', 53 id: 'settings.recipes.customService.intro',
54 defaultMessage: 'To add a custom service, copy the service recipe to:', 54 defaultMessage:
55 'To add a custom service, copy the service recipe folder inside:',
55 }, 56 },
56 openFolder: { 57 openFolder: {
57 id: 'settings.recipes.customService.openFolder', 58 id: 'settings.recipes.customService.openFolder',
@@ -104,8 +105,6 @@ const styles = {
104 }, 105 },
105}; 106};
106 107
107@injectSheet(styles)
108@observer
109class RecipesDashboard extends Component { 108class RecipesDashboard extends Component {
110 static propTypes = { 109 static propTypes = {
111 recipes: MobxPropTypes.arrayOrObservableArray.isRequired, 110 recipes: MobxPropTypes.arrayOrObservableArray.isRequired,
@@ -236,28 +235,6 @@ class RecipesDashboard extends Component {
236 <H3>{intl.formatMessage(messages.headlineCommunityRecipes)}</H3> 235 <H3>{intl.formatMessage(messages.headlineCommunityRecipes)}</H3>
237 )} 236 )}
238 <div className="recipes__list"> 237 <div className="recipes__list">
239 {recipes.length === 0 && recipeFilter !== 'dev' && (
240 <div className="align-middle settings__empty-state">
241 <span className="emoji">
242 <img src="./assets/images/emoji/dontknow.png" alt="" />
243 </span>
244
245 <p className="settings__empty-state-text">
246 {intl.formatMessage(messages.nothingFound)}
247 </p>
248
249 <RecipeItem
250 key={customWebsiteRecipe.id}
251 recipe={customWebsiteRecipe}
252 onClick={() =>
253 isLoggedIn &&
254 showAddServiceInterface({
255 recipeId: customWebsiteRecipe.id,
256 })
257 }
258 />
259 </div>
260 )}
261 {communityRecipes.map(recipe => ( 238 {communityRecipes.map(recipe => (
262 <RecipeItem 239 <RecipeItem
263 key={recipe.id} 240 key={recipe.id}
@@ -269,6 +246,25 @@ class RecipesDashboard extends Component {
269 /> 246 />
270 ))} 247 ))}
271 </div> 248 </div>
249 {recipes.length === 0 && recipeFilter !== 'dev' && (
250 <div className="align-middle settings__empty-state">
251 {customWebsiteRecipe && customWebsiteRecipe.id && (
252 <RecipeItem
253 key={customWebsiteRecipe.id}
254 recipe={customWebsiteRecipe}
255 onClick={() =>
256 isLoggedIn &&
257 showAddServiceInterface({
258 recipeId: customWebsiteRecipe.id,
259 })
260 }
261 />
262 )}
263 <p className="settings__empty-state-text">
264 {intl.formatMessage(messages.nothingFound)}
265 </p>
266 </div>
267 )}
272 {recipeFilter === 'dev' && devRecipes.length > 0 && ( 268 {recipeFilter === 'dev' && devRecipes.length > 0 && (
273 <div className={classes.devRecipeList}> 269 <div className={classes.devRecipeList}>
274 <H3>{intl.formatMessage(messages.headlineDevRecipes)}</H3> 270 <H3>{intl.formatMessage(messages.headlineDevRecipes)}</H3>
@@ -294,4 +290,6 @@ class RecipesDashboard extends Component {
294 } 290 }
295} 291}
296 292
297export default injectIntl(RecipesDashboard); 293export default injectIntl(
294 injectSheet(styles, { injectTheme: true })(observer(RecipesDashboard)),
295);
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js
index 2c451d7bf..f0e791b87 100644
--- a/src/components/settings/services/EditServiceForm.js
+++ b/src/components/settings/services/EditServiceForm.js
@@ -134,7 +134,6 @@ const messages = defineMessages({
134 }, 134 },
135}); 135});
136 136
137@observer
138class EditServiceForm extends Component { 137class EditServiceForm extends Component {
139 static propTypes = { 138 static propTypes = {
140 recipe: PropTypes.instanceOf(Recipe).isRequired, 139 recipe: PropTypes.instanceOf(Recipe).isRequired,
@@ -182,6 +181,7 @@ class EditServiceForm extends Component {
182 this.setState({ isValidatingCustomUrl: true }); 181 this.setState({ isValidatingCustomUrl: true });
183 try { 182 try {
184 values.customUrl = normalizeUrl(values.customUrl, { 183 values.customUrl = normalizeUrl(values.customUrl, {
184 stripAuthentication: false,
185 stripWWW: false, 185 stripWWW: false,
186 removeTrailingSlash: false, 186 removeTrailingSlash: false,
187 }); 187 });
@@ -499,4 +499,4 @@ class EditServiceForm extends Component {
499 } 499 }
500} 500}
501 501
502export default injectIntl(EditServiceForm); 502export default injectIntl(observer(EditServiceForm));
diff --git a/src/components/settings/services/ServiceError.js b/src/components/settings/services/ServiceError.js
index 6dd53a102..bcbbca3de 100644
--- a/src/components/settings/services/ServiceError.js
+++ b/src/components/settings/services/ServiceError.js
@@ -25,7 +25,6 @@ const messages = defineMessages({
25 }, 25 },
26}); 26});
27 27
28@observer
29class ServiceError extends Component { 28class ServiceError extends Component {
30 render() { 29 render() {
31 const { intl } = this.props; 30 const { intl } = this.props;
@@ -60,4 +59,4 @@ class ServiceError extends Component {
60 } 59 }
61} 60}
62 61
63export default injectIntl(ServiceError); 62export default injectIntl(observer(ServiceError));
diff --git a/src/components/settings/services/ServiceItem.js b/src/components/settings/services/ServiceItem.js
index d83e5fd56..23250ad09 100644
--- a/src/components/settings/services/ServiceItem.js
+++ b/src/components/settings/services/ServiceItem.js
@@ -24,7 +24,6 @@ const messages = defineMessages({
24 }, 24 },
25}); 25});
26 26
27@observer
28class ServiceItem extends Component { 27class ServiceItem extends Component {
29 static propTypes = { 28 static propTypes = {
30 service: PropTypes.instanceOf(ServiceModel).isRequired, 29 service: PropTypes.instanceOf(ServiceModel).isRequired,
@@ -91,4 +90,4 @@ class ServiceItem extends Component {
91 } 90 }
92} 91}
93 92
94export default injectIntl(ServiceItem); 93export default injectIntl(observer(ServiceItem));
diff --git a/src/components/settings/services/ServicesDashboard.js b/src/components/settings/services/ServicesDashboard.js
index aae6eb855..b405593fd 100644
--- a/src/components/settings/services/ServicesDashboard.js
+++ b/src/components/settings/services/ServicesDashboard.js
@@ -27,7 +27,7 @@ const messages = defineMessages({
27 noServiceFound: { 27 noServiceFound: {
28 id: 'settings.services.nothingFound', 28 id: 'settings.services.nothingFound',
29 defaultMessage: 29 defaultMessage:
30 'Sorry, but no service matched your search term - but you can still probably add it using the "Custom Website" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.', 30 'Sorry, but no service matched your search term.',
31 }, 31 },
32 discoverServices: { 32 discoverServices: {
33 id: 'settings.services.discoverServices', 33 id: 'settings.services.discoverServices',
@@ -51,7 +51,6 @@ const messages = defineMessages({
51 }, 51 },
52}); 52});
53 53
54@observer
55class ServicesDashboard extends Component { 54class ServicesDashboard extends Component {
56 static propTypes = { 55 static propTypes = {
57 services: MobxPropTypes.arrayOrObservableArray.isRequired, 56 services: MobxPropTypes.arrayOrObservableArray.isRequired,
@@ -188,4 +187,4 @@ class ServicesDashboard extends Component {
188 } 187 }
189} 188}
190 189
191export default injectIntl(ServicesDashboard); 190export default injectIntl(observer(ServicesDashboard));
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index 7e86ea79a..1757ac297 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -5,7 +5,7 @@ import { observer } from 'mobx-react';
5import prettyBytes from 'pretty-bytes'; 5import prettyBytes from 'pretty-bytes';
6import { defineMessages, injectIntl } from 'react-intl'; 6import { defineMessages, injectIntl } from 'react-intl';
7 7
8import { mdiGithub, mdiInformation, mdiOpenInNew } from '@mdi/js'; 8import { mdiGithub, mdiOpenInNew } from '@mdi/js';
9import Form from '../../../lib/Form'; 9import Form from '../../../lib/Form';
10import Button from '../../ui/Button'; 10import Button from '../../ui/Button';
11import Toggle from '../../ui/Toggle'; 11import Toggle from '../../ui/Toggle';
@@ -17,6 +17,8 @@ import {
17 DEFAULT_APP_SETTINGS, 17 DEFAULT_APP_SETTINGS,
18 FRANZ_TRANSLATION, 18 FRANZ_TRANSLATION,
19 GITHUB_FRANZ_URL, 19 GITHUB_FRANZ_URL,
20 SPLIT_COLUMNS_MAX,
21 SPLIT_COLUMNS_MIN,
20} from '../../../config'; 22} from '../../../config';
21import { isMac, isWindows, lockFerdiShortcutKey } from '../../../environment'; 23import { isMac, isWindows, lockFerdiShortcutKey } from '../../../environment';
22import { 24import {
@@ -173,16 +175,14 @@ const messages = defineMessages({
173 id: 'settings.app.restartRequired', 175 id: 'settings.app.restartRequired',
174 defaultMessage: 'Changes require restart', 176 defaultMessage: 'Changes require restart',
175 }, 177 },
176 languageDisclaimer: { 178 numberOfColumns: {
177 id: 'settings.app.languageDisclaimer', 179 id: 'settings.app.form.splitColumns',
178 defaultMessage: 180 defaultMessage: 'Number of columns',
179 'Official translations are English & German. All other languages are community based translations.',
180 }, 181 },
181}); 182});
182 183
183const Hr = () => <hr style={{ marginBottom: 20 }} />; 184const Hr = () => <hr style={{ marginBottom: 20 }} />;
184 185
185@observer
186class EditSettingsForm extends Component { 186class EditSettingsForm extends Component {
187 static propTypes = { 187 static propTypes = {
188 checkForUpdates: PropTypes.func.isRequired, 188 checkForUpdates: PropTypes.func.isRequired,
@@ -200,6 +200,7 @@ class EditSettingsForm extends Component {
200 automaticUpdates: PropTypes.bool.isRequired, 200 automaticUpdates: PropTypes.bool.isRequired,
201 isDarkmodeEnabled: PropTypes.bool.isRequired, 201 isDarkmodeEnabled: PropTypes.bool.isRequired,
202 isAdaptableDarkModeEnabled: PropTypes.bool.isRequired, 202 isAdaptableDarkModeEnabled: PropTypes.bool.isRequired,
203 isSplitModeEnabled: PropTypes.bool.isRequired,
203 isNightlyEnabled: PropTypes.bool.isRequired, 204 isNightlyEnabled: PropTypes.bool.isRequired,
204 hasAddedTodosAsService: PropTypes.bool.isRequired, 205 hasAddedTodosAsService: PropTypes.bool.isRequired,
205 isOnline: PropTypes.bool.isRequired, 206 isOnline: PropTypes.bool.isRequired,
@@ -246,6 +247,7 @@ class EditSettingsForm extends Component {
246 getCacheSize, 247 getCacheSize,
247 automaticUpdates, 248 automaticUpdates,
248 isDarkmodeEnabled, 249 isDarkmodeEnabled,
250 isSplitModeEnabled,
249 isTodosActivated, 251 isTodosActivated,
250 isNightlyEnabled, 252 isNightlyEnabled,
251 hasAddedTodosAsService, 253 hasAddedTodosAsService,
@@ -412,10 +414,8 @@ class EditSettingsForm extends Component {
412 414
413 <Hr /> 415 <Hr />
414 416
415 <> 417 <Toggle field={form.$('keepAllWorkspacesLoaded')} />
416 <Toggle field={form.$('keepAllWorkspacesLoaded')} /> 418 <Hr />
417 <Hr />
418 </>
419 419
420 {!hasAddedTodosAsService && ( 420 {!hasAddedTodosAsService && (
421 <> 421 <>
@@ -540,6 +540,16 @@ class EditSettingsForm extends Component {
540 <Hr /> 540 <Hr />
541 541
542 <Toggle field={form.$('splitMode')} /> 542 <Toggle field={form.$('splitMode')} />
543 {isSplitModeEnabled && (
544 <Input
545 type="number"
546 min={SPLIT_COLUMNS_MIN}
547 max={SPLIT_COLUMNS_MAX}
548 placeholder={`${SPLIT_COLUMNS_MIN}-${SPLIT_COLUMNS_MAX}`}
549 onChange={e => this.submit(e)}
550 field={form.$('splitColumns')}
551 />
552 )}
543 553
544 <Hr /> 554 <Hr />
545 555
@@ -800,27 +810,22 @@ class EditSettingsForm extends Component {
800 )} 810 )}
801 <p className="settings__message"> 811 <p className="settings__message">
802 <Icon icon={mdiGithub} /> 812 <Icon icon={mdiGithub} />
803 <span> 813 Ferdi is based on{' '}
804 Ferdi is based on{' '} 814 <a
805 <a 815 href={`${GITHUB_FRANZ_URL}/franz`}
806 href={`${GITHUB_FRANZ_URL}/franz`} 816 target="_blank"
807 target="_blank" 817 rel="noreferrer"
808 rel="noreferrer" 818 >
809 > 819 Franz
810 Franz 820 </a>
811 </a> 821 , a project published under the{' '}
812 , a project published under the{' '} 822 <a
813 <a 823 href={`${GITHUB_FRANZ_URL}/franz/blob/master/LICENSE`}
814 href={`${GITHUB_FRANZ_URL}/franz/blob/master/LICENSE`} 824 target="_blank"
815 target="_blank" 825 rel="noreferrer"
816 rel="noreferrer" 826 >
817 > 827 Apache-2.0 License
818 Apache-2.0 License 828 </a>
819 </a>
820 </span>
821 <br />
822 <Icon icon={mdiInformation} />
823 {intl.formatMessage(messages.languageDisclaimer)}
824 </p> 829 </p>
825 </div> 830 </div>
826 )} 831 )}
@@ -831,4 +836,4 @@ class EditSettingsForm extends Component {
831 } 836 }
832} 837}
833 838
834export default injectIntl(EditSettingsForm); 839export default injectIntl(observer(EditSettingsForm));
diff --git a/src/components/settings/supportFerdi/SupportFerdiDashboard.tsx b/src/components/settings/supportFerdi/SupportFerdiDashboard.tsx
index 88e936b71..acebc979f 100644
--- a/src/components/settings/supportFerdi/SupportFerdiDashboard.tsx
+++ b/src/components/settings/supportFerdi/SupportFerdiDashboard.tsx
@@ -1,7 +1,5 @@
1import { defineMessages, useIntl } from 'react-intl'; 1import { defineMessages, useIntl } from 'react-intl';
2import { BrowserWindow } from '@electron/remote';
3import { mdiOpenInNew } from '@mdi/js'; 2import { mdiOpenInNew } from '@mdi/js';
4import InfoBar from '../../ui/InfoBar';
5import { Icon } from '../../ui/icon'; 3import { Icon } from '../../ui/icon';
6 4
7const messages = defineMessages({ 5const messages = defineMessages({
@@ -9,10 +7,6 @@ const messages = defineMessages({
9 id: 'settings.supportFerdi.headline', 7 id: 'settings.supportFerdi.headline',
10 defaultMessage: 'About Ferdi', 8 defaultMessage: 'About Ferdi',
11 }, 9 },
12 title: {
13 id: 'settings.supportFerdi.title',
14 defaultMessage: 'Do you like Ferdi?',
15 },
16 aboutIntro: { 10 aboutIntro: {
17 id: 'settings.supportFerdi.aboutIntro', 11 id: 'settings.supportFerdi.aboutIntro',
18 defaultMessage: 12 defaultMessage:
@@ -62,26 +56,8 @@ const messages = defineMessages({
62 id: 'settings.supportFerdi.textGitHubSponsors', 56 id: 'settings.supportFerdi.textGitHubSponsors',
63 defaultMessage: 'GitHub Sponsors', 57 defaultMessage: 'GitHub Sponsors',
64 }, 58 },
65 openSurvey: {
66 id: 'settings.supportFerdi.openSurvey',
67 defaultMessage: 'Open survey',
68 },
69 bannerText: {
70 id: 'settings.supportFerdi.bannerText',
71 defaultMessage: 'Do you want to help us improve Ferdi?',
72 },
73}); 59});
74 60
75const openSurveyWindow = () => {
76 let win = new BrowserWindow({ width: 670, height: 400 });
77 win.on('closed', () => {
78 // @ts-expect-error Type 'null' is not assignable to type 'BrowserWindow'.
79 win = null;
80 });
81
82 win.loadURL('https://rp28.typeform.com/to/E3phJT');
83};
84
85const SupportFerdiDashboard = () => { 61const SupportFerdiDashboard = () => {
86 const intl = useIntl(); 62 const intl = useIntl();
87 63
@@ -95,7 +71,6 @@ const SupportFerdiDashboard = () => {
95 </span> 71 </span>
96 </div> 72 </div>
97 <div className="settings__body"> 73 <div className="settings__body">
98 <h1>{intl.formatMessage(messages.title)}</h1>
99 <div> 74 <div>
100 <p className="settings__support-badges"> 75 <p className="settings__support-badges">
101 <a 76 <a
@@ -219,14 +194,6 @@ const SupportFerdiDashboard = () => {
219 </p> 194 </p>
220 </div> 195 </div>
221 </div> 196 </div>
222 <InfoBar
223 sticky
224 type="primary"
225 ctaLabel={intl.formatMessage(messages.openSurvey)}
226 onClick={openSurveyWindow}
227 >
228 {intl.formatMessage(messages.bannerText)}
229 </InfoBar>
230 </div> 197 </div>
231 ); 198 );
232}; 199};
diff --git a/src/components/settings/team/TeamDashboard.js b/src/components/settings/team/TeamDashboard.js
index 4a1a02571..802284051 100644
--- a/src/components/settings/team/TeamDashboard.js
+++ b/src/components/settings/team/TeamDashboard.js
@@ -90,8 +90,6 @@ const styles = {
90 }, 90 },
91}; 91};
92 92
93@injectSheet(styles)
94@observer
95class TeamDashboard extends Component { 93class TeamDashboard extends Component {
96 static propTypes = { 94 static propTypes = {
97 isLoading: PropTypes.bool.isRequired, 95 isLoading: PropTypes.bool.isRequired,
@@ -136,40 +134,34 @@ class TeamDashboard extends Component {
136 </Infobox> 134 </Infobox>
137 )} 135 )}
138 136
139 {!userInfoRequestFailed && ( 137 {!userInfoRequestFailed && !isLoading && (
140 <> 138 <>
141 {!isLoading && ( 139 <h1
142 <> 140 className={classnames({
143 <> 141 [classes.headline]: true,
144 <h1 142 [classes.headlineWithSpacing]: true,
145 className={classnames({ 143 })}
146 [classes.headline]: true, 144 >
147 [classes.headlineWithSpacing]: true, 145 {intl.formatMessage(messages.contentHeadline)}
148 })} 146 </h1>
149 > 147 <div className={classes.container}>
150 {intl.formatMessage(messages.contentHeadline)} 148 <div className={classes.content}>
151 </h1> 149 <p>{intl.formatMessage(messages.intro)}</p>
152 <div className={classes.container}> 150 <p>{intl.formatMessage(messages.copy)}</p>
153 <div className={classes.content}> 151 </div>
154 <p>{intl.formatMessage(messages.intro)}</p> 152 <img
155 <p>{intl.formatMessage(messages.copy)}</p> 153 className={classes.image}
156 </div> 154 src="https://cdn.franzinfra.com/announcements/assets/teams.png"
157 <img 155 alt="Ferdi for Teams"
158 className={classes.image} 156 />
159 src="https://cdn.franzinfra.com/announcements/assets/teams.png" 157 </div>
160 alt="Ferdi for Teams" 158 <div className={classes.buttonContainer}>
161 /> 159 <Button
162 </div> 160 label={intl.formatMessage(messages.manageButton)}
163 <div className={classes.buttonContainer}> 161 onClick={openTeamManagement}
164 <Button 162 className={classes.cta}
165 label={intl.formatMessage(messages.manageButton)} 163 />
166 onClick={openTeamManagement} 164 </div>
167 className={classes.cta}
168 />
169 </div>
170 </>
171 </>
172 )}
173 </> 165 </>
174 )} 166 )}
175 </div> 167 </div>
@@ -203,4 +195,6 @@ class TeamDashboard extends Component {
203 } 195 }
204} 196}
205 197
206export default injectIntl(TeamDashboard); 198export default injectIntl(
199 injectSheet(styles, { injectTheme: true })(observer(TeamDashboard)),
200);
diff --git a/src/components/settings/user/EditUserForm.js b/src/components/settings/user/EditUserForm.js
index 1b8a4f25a..95498d9bb 100644
--- a/src/components/settings/user/EditUserForm.js
+++ b/src/components/settings/user/EditUserForm.js
@@ -37,7 +37,6 @@ const messages = defineMessages({
37 }, 37 },
38}); 38});
39 39
40@observer
41class EditUserForm extends Component { 40class EditUserForm extends Component {
42 static propTypes = { 41 static propTypes = {
43 status: MobxPropTypes.observableArray.isRequired, 42 status: MobxPropTypes.observableArray.isRequired,
@@ -128,4 +127,4 @@ class EditUserForm extends Component {
128 } 127 }
129} 128}
130 129
131export default injectIntl(EditUserForm); 130export default injectIntl(observer(EditUserForm));
diff --git a/src/components/ui/AppLoader/index.tsx b/src/components/ui/AppLoader/index.tsx
index c7c290a57..e80371e47 100644
--- a/src/components/ui/AppLoader/index.tsx
+++ b/src/components/ui/AppLoader/index.tsx
@@ -1,7 +1,7 @@
1import { Component } from 'react'; 1import { Component } from 'react';
2import injectSheet, { withTheme } from 'react-jss';
3import classnames from 'classnames'; 2import classnames from 'classnames';
4 3
4import injectStyle from 'react-jss';
5import FullscreenLoader from '../FullscreenLoader'; 5import FullscreenLoader from '../FullscreenLoader';
6import { shuffleArray } from '../../../helpers/array-helpers'; 6import { shuffleArray } from '../../../helpers/array-helpers';
7 7
@@ -24,8 +24,6 @@ type Props = {
24 texts: string[]; 24 texts: string[];
25}; 25};
26 26
27@injectSheet(styles)
28@withTheme
29class AppLoader extends Component<Props> { 27class AppLoader extends Component<Props> {
30 static defaultProps = { 28 static defaultProps = {
31 texts: textList, 29 texts: textList,
@@ -57,7 +55,6 @@ class AppLoader extends Component<Props> {
57 55
58 return ( 56 return (
59 <FullscreenLoader 57 <FullscreenLoader
60 title="Ferdi"
61 className={classes.component} 58 className={classes.component}
62 spinnerColor={theme.colorAppLoaderSpinner} 59 spinnerColor={theme.colorAppLoaderSpinner}
63 > 60 >
@@ -77,4 +74,4 @@ class AppLoader extends Component<Props> {
77 } 74 }
78} 75}
79 76
80export default AppLoader; 77export default injectStyle(styles, { injectTheme: true })(AppLoader);
diff --git a/src/components/ui/Button.js b/src/components/ui/Button.js
index 67c801d98..a52f1cadb 100644
--- a/src/components/ui/Button.js
+++ b/src/components/ui/Button.js
@@ -4,8 +4,6 @@ import { observer, inject } from 'mobx-react';
4import Loader from 'react-loader'; 4import Loader from 'react-loader';
5import classnames from 'classnames'; 5import classnames from 'classnames';
6 6
7@inject('stores')
8@observer
9class Button extends Component { 7class Button extends Component {
10 static propTypes = { 8 static propTypes = {
11 className: PropTypes.string, 9 className: PropTypes.string,
@@ -35,8 +33,6 @@ class Button extends Component {
35 htmlForm: '', 33 htmlForm: '',
36 }; 34 };
37 35
38 element = null;
39
40 render() { 36 render() {
41 const { 37 const {
42 label, 38 label,
@@ -92,4 +88,4 @@ class Button extends Component {
92 } 88 }
93} 89}
94 90
95export default Button; 91export default inject('stores')(observer(Button));
diff --git a/src/components/ui/FAB.tsx b/src/components/ui/FAB.tsx
index 583c9d556..cb9c5f126 100644
--- a/src/components/ui/FAB.tsx
+++ b/src/components/ui/FAB.tsx
@@ -14,7 +14,6 @@ type Props = {
14 htmlForm: string; 14 htmlForm: string;
15}; 15};
16 16
17@observer
18class Button extends Component<Props> { 17class Button extends Component<Props> {
19 static defaultProps = { 18 static defaultProps = {
20 disabled: false, 19 disabled: false,
@@ -23,8 +22,6 @@ class Button extends Component<Props> {
23 htmlForm: '', 22 htmlForm: '',
24 }; 23 };
25 24
26 element = null;
27
28 render() { 25 render() {
29 const { className, disabled, onClick, type, children, htmlForm } = 26 const { className, disabled, onClick, type, children, htmlForm } =
30 this.props; 27 this.props;
@@ -48,4 +45,4 @@ class Button extends Component<Props> {
48 } 45 }
49} 46}
50 47
51export default Button; 48export default observer(Button);
diff --git a/src/components/ui/FullscreenLoader/index.js b/src/components/ui/FullscreenLoader/index.js
index f5943f3f3..39b6c5a4c 100644
--- a/src/components/ui/FullscreenLoader/index.js
+++ b/src/components/ui/FullscreenLoader/index.js
@@ -1,16 +1,13 @@
1import { Component } from 'react'; 1import { Component } from 'react';
2import PropTypes from 'prop-types'; 2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import injectSheet, { withTheme } from 'react-jss'; 4import injectStyle from 'react-jss';
5import classnames from 'classnames'; 5import classnames from 'classnames';
6 6
7import Loader from '../Loader'; 7import Loader from '../Loader';
8 8
9import styles from './styles'; 9import styles from './styles';
10 10
11@withTheme
12@injectSheet(styles)
13@observer
14class FullscreenLoader extends Component { 11class FullscreenLoader extends Component {
15 static propTypes = { 12 static propTypes = {
16 className: PropTypes.string, 13 className: PropTypes.string,
@@ -48,4 +45,6 @@ class FullscreenLoader extends Component {
48 } 45 }
49} 46}
50 47
51export default FullscreenLoader; 48export default injectStyle(styles, { injectTheme: true })(
49 observer(FullscreenLoader),
50);
diff --git a/src/components/ui/ImageUpload.tsx b/src/components/ui/ImageUpload.tsx
index 118e6b206..b07e211c2 100644
--- a/src/components/ui/ImageUpload.tsx
+++ b/src/components/ui/ImageUpload.tsx
@@ -2,7 +2,7 @@ import { Component } from 'react';
2import { observer } from 'mobx-react'; 2import { observer } from 'mobx-react';
3import { Field } from 'mobx-react-form'; 3import { Field } from 'mobx-react-form';
4import classnames from 'classnames'; 4import classnames from 'classnames';
5import Dropzone, { DropzoneRef } from 'react-dropzone'; 5import Dropzone from 'react-dropzone';
6import { mdiDelete, mdiFileImage } from '@mdi/js'; 6import { mdiDelete, mdiFileImage } from '@mdi/js';
7import { isWindows } from '../../environment'; 7import { isWindows } from '../../environment';
8import { Icon } from './icon'; 8import { Icon } from './icon';
@@ -15,7 +15,6 @@ type Props = {
15 textUpload: string; 15 textUpload: string;
16}; 16};
17 17
18@observer
19class ImageUpload extends Component<Props> { 18class ImageUpload extends Component<Props> {
20 static defaultProps = { 19 static defaultProps = {
21 multiple: false, 20 multiple: false,
@@ -25,8 +24,6 @@ class ImageUpload extends Component<Props> {
25 path: null, 24 path: null,
26 }; 25 };
27 26
28 dropzoneRef: DropzoneRef | null = null;
29
30 onDrop(acceptedFiles) { 27 onDrop(acceptedFiles) {
31 const { field } = this.props; 28 const { field } = this.props;
32 29
@@ -85,9 +82,6 @@ class ImageUpload extends Component<Props> {
85 </> 82 </>
86 ) : ( 83 ) : (
87 <Dropzone 84 <Dropzone
88 ref={node => {
89 this.dropzoneRef = node;
90 }}
91 onDrop={this.onDrop.bind(this)} 85 onDrop={this.onDrop.bind(this)}
92 multiple={multiple} 86 multiple={multiple}
93 accept="image/jpeg, image/png, image/svg+xml" 87 accept="image/jpeg, image/png, image/svg+xml"
@@ -107,4 +101,4 @@ class ImageUpload extends Component<Props> {
107 } 101 }
108} 102}
109 103
110export default ImageUpload; 104export default observer(ImageUpload);
diff --git a/src/components/ui/InfoBar.js b/src/components/ui/InfoBar.js
index 89b085907..c1a6013c2 100644
--- a/src/components/ui/InfoBar.js
+++ b/src/components/ui/InfoBar.js
@@ -16,7 +16,6 @@ const messages = defineMessages({
16 }, 16 },
17}); 17});
18 18
19@observer
20class InfoBar extends Component { 19class InfoBar extends Component {
21 static propTypes = { 20 static propTypes = {
22 // eslint-disable-next-line react/forbid-prop-types 21 // eslint-disable-next-line react/forbid-prop-types
@@ -102,4 +101,4 @@ class InfoBar extends Component {
102 } 101 }
103} 102}
104 103
105export default injectIntl(InfoBar); 104export default injectIntl(observer(InfoBar));
diff --git a/src/components/ui/Infobox.js b/src/components/ui/Infobox.js
index c0ba8f13c..6634a6808 100644
--- a/src/components/ui/Infobox.js
+++ b/src/components/ui/Infobox.js
@@ -19,7 +19,6 @@ const messages = defineMessages({
19 }, 19 },
20}); 20});
21 21
22@observer
23class Infobox extends Component { 22class Infobox extends Component {
24 static propTypes = { 23 static propTypes = {
25 // eslint-disable-next-line react/forbid-prop-types 24 // eslint-disable-next-line react/forbid-prop-types
@@ -112,4 +111,4 @@ class Infobox extends Component {
112 } 111 }
113} 112}
114 113
115export default injectIntl(Infobox); 114export default injectIntl(observer(Infobox));
diff --git a/src/components/ui/Input.js b/src/components/ui/Input.js
index 8d37d7a05..fa1b44699 100644
--- a/src/components/ui/Input.js
+++ b/src/components/ui/Input.js
@@ -5,7 +5,9 @@ import { Field } from 'mobx-react-form';
5import classnames from 'classnames'; 5import classnames from 'classnames';
6import { defineMessages, injectIntl } from 'react-intl'; 6import { defineMessages, injectIntl } from 'react-intl';
7 7
8import { mdiEye, mdiEyeOff } from '@mdi/js';
8import { scorePassword as scorePasswordFunc } from '../../helpers/password-helpers'; 9import { scorePassword as scorePasswordFunc } from '../../helpers/password-helpers';
10import { Icon } from './icon';
9 11
10const messages = defineMessages({ 12const messages = defineMessages({
11 passwordToggle: { 13 passwordToggle: {
@@ -14,7 +16,6 @@ const messages = defineMessages({
14 }, 16 },
15}); 17});
16 18
17@observer
18class Input extends Component { 19class Input extends Component {
19 static propTypes = { 20 static propTypes = {
20 field: PropTypes.instanceOf(Field).isRequired, 21 field: PropTypes.instanceOf(Field).isRequired,
@@ -115,9 +116,6 @@ class Input extends Component {
115 type="button" 116 type="button"
116 className={classnames({ 117 className={classnames({
117 'franz-form__input-modifier': true, 118 'franz-form__input-modifier': true,
118 mdi: true,
119 'mdi-eye': !this.state.showPassword,
120 'mdi-eye-off': this.state.showPassword,
121 })} 119 })}
122 onClick={() => 120 onClick={() =>
123 this.setState(prevState => ({ 121 this.setState(prevState => ({
@@ -126,7 +124,9 @@ class Input extends Component {
126 } 124 }
127 tabIndex={-1} 125 tabIndex={-1}
128 aria-label={intl.formatMessage(messages.passwordToggle)} 126 aria-label={intl.formatMessage(messages.passwordToggle)}
129 /> 127 >
128 <Icon icon={this.state.showPassword ? mdiEye : mdiEyeOff} />
129 </button>
130 )} 130 )}
131 {scorePassword && ( 131 {scorePassword && (
132 <div className="franz-form__password-score"> 132 <div className="franz-form__password-score">
@@ -152,4 +152,4 @@ class Input extends Component {
152 } 152 }
153} 153}
154 154
155export default injectIntl(Input); 155export default injectIntl(observer(Input));
diff --git a/src/components/ui/Link.js b/src/components/ui/Link.js
index 40766c984..565547736 100644
--- a/src/components/ui/Link.js
+++ b/src/components/ui/Link.js
@@ -9,8 +9,6 @@ import { matchRoute } from '../../helpers/routing-helpers';
9import { openExternalUrl } from '../../helpers/url-helpers'; 9import { openExternalUrl } from '../../helpers/url-helpers';
10 10
11// TODO: create container component for this component 11// TODO: create container component for this component
12@inject('stores')
13@observer
14class Link extends Component { 12class Link extends Component {
15 onClick(e) { 13 onClick(e) {
16 if (this.props.disabled) { 14 if (this.props.disabled) {
@@ -60,7 +58,7 @@ class Link extends Component {
60 } 58 }
61} 59}
62 60
63Link.wrappedComponent.propTypes = { 61Link.propTypes = {
64 stores: PropTypes.shape({ 62 stores: PropTypes.shape({
65 router: PropTypes.instanceOf(RouterStore).isRequired, 63 router: PropTypes.instanceOf(RouterStore).isRequired,
66 }).isRequired, 64 }).isRequired,
@@ -75,7 +73,7 @@ Link.wrappedComponent.propTypes = {
75 disabled: PropTypes.bool, 73 disabled: PropTypes.bool,
76}; 74};
77 75
78Link.wrappedComponent.defaultProps = { 76Link.defaultProps = {
79 className: '', 77 className: '',
80 activeClassName: '', 78 activeClassName: '',
81 strictFilter: false, 79 strictFilter: false,
@@ -84,4 +82,4 @@ Link.wrappedComponent.defaultProps = {
84 style: {}, 82 style: {},
85}; 83};
86 84
87export default Link; 85export default inject('stores')(observer(Link));
diff --git a/src/components/ui/Loader.tsx b/src/components/ui/Loader.tsx
index 1173c11e7..171d0e290 100644
--- a/src/components/ui/Loader.tsx
+++ b/src/components/ui/Loader.tsx
@@ -12,8 +12,6 @@ type Props = {
12 stores: FerdiStores; 12 stores: FerdiStores;
13}; 13};
14 14
15@inject('stores')
16@observer
17class LoaderComponent extends Component<Props> { 15class LoaderComponent extends Component<Props> {
18 static defaultProps = { 16 static defaultProps = {
19 loaded: false, 17 loaded: false,
@@ -43,4 +41,4 @@ class LoaderComponent extends Component<Props> {
43 } 41 }
44} 42}
45 43
46export default LoaderComponent; 44export default inject('stores')(observer(LoaderComponent));
diff --git a/src/components/ui/Modal/index.tsx b/src/components/ui/Modal/index.tsx
index f2f4461b8..c3c78b419 100644
--- a/src/components/ui/Modal/index.tsx
+++ b/src/components/ui/Modal/index.tsx
@@ -18,7 +18,6 @@ type Props = {
18 showClose: boolean; 18 showClose: boolean;
19}; 19};
20 20
21@injectCSS(styles)
22class Modal extends Component<Props> { 21class Modal extends Component<Props> {
23 static defaultProps = { 22 static defaultProps = {
24 className: null, 23 className: null,
@@ -64,4 +63,4 @@ class Modal extends Component<Props> {
64 } 63 }
65} 64}
66 65
67export default Modal; 66export default injectCSS(styles)(Modal);
diff --git a/src/components/ui/Radio.tsx b/src/components/ui/Radio.tsx
index 594ea70e4..a033a5fe0 100644
--- a/src/components/ui/Radio.tsx
+++ b/src/components/ui/Radio.tsx
@@ -10,7 +10,6 @@ type Props = {
10 showLabel: boolean; 10 showLabel: boolean;
11}; 11};
12 12
13@observer
14class Radio extends Component<Props> { 13class Radio extends Component<Props> {
15 static defaultProps = { 14 static defaultProps = {
16 focus: false, 15 focus: false,
@@ -74,4 +73,4 @@ class Radio extends Component<Props> {
74 } 73 }
75} 74}
76 75
77export default Radio; 76export default observer(Radio);
diff --git a/src/components/ui/SearchInput.tsx b/src/components/ui/SearchInput.tsx
index 49a50a4a0..6a6a1692e 100644
--- a/src/components/ui/SearchInput.tsx
+++ b/src/components/ui/SearchInput.tsx
@@ -17,7 +17,6 @@ type Props = {
17 autoFocus: boolean; 17 autoFocus: boolean;
18}; 18};
19 19
20@observer
21class SearchInput extends Component<Props> { 20class SearchInput extends Component<Props> {
22 static defaultProps = { 21 static defaultProps = {
23 value: '', 22 value: '',
@@ -115,4 +114,4 @@ class SearchInput extends Component<Props> {
115 } 114 }
116} 115}
117 116
118export default SearchInput; 117export default observer(SearchInput);
diff --git a/src/components/ui/Select.js b/src/components/ui/Select.js
index a560da332..0fc32e573 100644
--- a/src/components/ui/Select.js
+++ b/src/components/ui/Select.js
@@ -4,7 +4,6 @@ import { observer } from 'mobx-react';
4import { Field } from 'mobx-react-form'; 4import { Field } from 'mobx-react-form';
5import classnames from 'classnames'; 5import classnames from 'classnames';
6 6
7@observer
8class Select extends Component { 7class Select extends Component {
9 static propTypes = { 8 static propTypes = {
10 field: PropTypes.instanceOf(Field).isRequired, 9 field: PropTypes.instanceOf(Field).isRequired,
@@ -98,4 +97,4 @@ class Select extends Component {
98 } 97 }
99} 98}
100 99
101export default Select; 100export default observer(Select);
diff --git a/src/components/ui/ServiceIcon.js b/src/components/ui/ServiceIcon.js
index f067f8955..d403d107d 100644
--- a/src/components/ui/ServiceIcon.js
+++ b/src/components/ui/ServiceIcon.js
@@ -24,8 +24,6 @@ const styles = theme => ({
24 }, 24 },
25}); 25});
26 26
27@injectSheet(styles)
28@observer
29class ServiceIcon extends Component { 27class ServiceIcon extends Component {
30 static propTypes = { 28 static propTypes = {
31 classes: PropTypes.object.isRequired, 29 classes: PropTypes.object.isRequired,
@@ -56,4 +54,6 @@ class ServiceIcon extends Component {
56 } 54 }
57} 55}
58 56
59export default ServiceIcon; 57export default injectSheet(styles, { injectTheme: true })(
58 observer(ServiceIcon),
59);
diff --git a/src/components/ui/Slider.js b/src/components/ui/Slider.js
index dea6e0563..a581e7a65 100644
--- a/src/components/ui/Slider.js
+++ b/src/components/ui/Slider.js
@@ -4,7 +4,6 @@ import { observer } from 'mobx-react';
4import classnames from 'classnames'; 4import classnames from 'classnames';
5import { Field } from 'mobx-react-form'; 5import { Field } from 'mobx-react-form';
6 6
7@observer
8class Slider extends Component { 7class Slider extends Component {
9 static propTypes = { 8 static propTypes = {
10 field: PropTypes.instanceOf(Field).isRequired, 9 field: PropTypes.instanceOf(Field).isRequired,
@@ -64,4 +63,4 @@ class Slider extends Component {
64 } 63 }
65} 64}
66 65
67export default Slider; 66export default observer(Slider);
diff --git a/src/components/ui/StatusBarTargetUrl.js b/src/components/ui/StatusBarTargetUrl.js
index 38b436742..d8d329d52 100644
--- a/src/components/ui/StatusBarTargetUrl.js
+++ b/src/components/ui/StatusBarTargetUrl.js
@@ -5,7 +5,6 @@ import classnames from 'classnames';
5 5
6import Appear from './effects/Appear'; 6import Appear from './effects/Appear';
7 7
8@observer
9class StatusBarTargetUrl extends Component { 8class StatusBarTargetUrl extends Component {
10 static propTypes = { 9 static propTypes = {
11 className: PropTypes.string, 10 className: PropTypes.string,
@@ -33,4 +32,4 @@ class StatusBarTargetUrl extends Component {
33 } 32 }
34} 33}
35 34
36export default StatusBarTargetUrl; 35export default observer(StatusBarTargetUrl);
diff --git a/src/components/ui/Tabs/Tabs.js b/src/components/ui/Tabs/Tabs.js
index 77803974b..5d2da6293 100644
--- a/src/components/ui/Tabs/Tabs.js
+++ b/src/components/ui/Tabs/Tabs.js
@@ -5,7 +5,6 @@ import classnames from 'classnames';
5 5
6import { oneOrManyChildElements } from '../../../prop-types'; 6import { oneOrManyChildElements } from '../../../prop-types';
7 7
8@observer
9class Tab extends Component { 8class Tab extends Component {
10 constructor(props) { 9 constructor(props) {
11 super(props); 10 super(props);
@@ -69,4 +68,4 @@ class Tab extends Component {
69 } 68 }
70} 69}
71 70
72export default Tab; 71export default observer(Tab);
diff --git a/src/components/ui/Toggle.js b/src/components/ui/Toggle.js
index dfc319735..a82be690e 100644
--- a/src/components/ui/Toggle.js
+++ b/src/components/ui/Toggle.js
@@ -4,7 +4,6 @@ import { observer } from 'mobx-react';
4import classnames from 'classnames'; 4import classnames from 'classnames';
5import { Field } from 'mobx-react-form'; 5import { Field } from 'mobx-react-form';
6 6
7@observer
8class Toggle extends Component { 7class Toggle extends Component {
9 static propTypes = { 8 static propTypes = {
10 field: PropTypes.instanceOf(Field).isRequired, 9 field: PropTypes.instanceOf(Field).isRequired,
@@ -69,4 +68,4 @@ class Toggle extends Component {
69 } 68 }
70} 69}
71 70
72export default Toggle; 71export default observer(Toggle);
diff --git a/src/components/ui/ToggleRaw.js b/src/components/ui/ToggleRaw.js
index 74292a870..e482b97b4 100644
--- a/src/components/ui/ToggleRaw.js
+++ b/src/components/ui/ToggleRaw.js
@@ -6,7 +6,6 @@ import PropTypes from 'prop-types';
6import { observer } from 'mobx-react'; 6import { observer } from 'mobx-react';
7import classnames from 'classnames'; 7import classnames from 'classnames';
8 8
9@observer
10class ToggleRaw extends Component { 9class ToggleRaw extends Component {
11 static propTypes = { 10 static propTypes = {
12 onChange: PropTypes.func.isRequired, 11 onChange: PropTypes.func.isRequired,
@@ -74,4 +73,4 @@ class ToggleRaw extends Component {
74 } 73 }
75} 74}
76 75
77export default ToggleRaw; 76export default observer(ToggleRaw);
diff --git a/src/components/ui/WebviewLoader/index.js b/src/components/ui/WebviewLoader/index.js
index 8d4513172..20945d191 100644
--- a/src/components/ui/WebviewLoader/index.js
+++ b/src/components/ui/WebviewLoader/index.js
@@ -14,8 +14,6 @@ const messages = defineMessages({
14 }, 14 },
15}); 15});
16 16
17@injectSheet(styles)
18@observer
19class WebviewLoader extends Component { 17class WebviewLoader extends Component {
20 static propTypes = { 18 static propTypes = {
21 name: PropTypes.string.isRequired, 19 name: PropTypes.string.isRequired,
@@ -34,4 +32,6 @@ class WebviewLoader extends Component {
34 } 32 }
35} 33}
36 34
37export default injectIntl(WebviewLoader); 35export default injectIntl(
36 injectSheet(styles, { injectTheme: true })(observer(WebviewLoader)),
37);
diff --git a/src/components/ui/badge/ProBadge.tsx b/src/components/ui/badge/ProBadge.tsx
index dc1e76f7f..410748a64 100644
--- a/src/components/ui/badge/ProBadge.tsx
+++ b/src/components/ui/badge/ProBadge.tsx
@@ -1,14 +1,13 @@
1import { mdiStar } from '@mdi/js'; 1import { mdiStar } from '@mdi/js';
2import classnames from 'classnames'; 2import classnames from 'classnames';
3import { Component } from 'react'; 3import { Component } from 'react';
4import injectStyle from 'react-jss'; 4import injectStyle, { WithStylesProps } from 'react-jss';
5 5
6import { Theme } from '../../../themes'; 6import { Theme } from '../../../themes';
7import { Icon } from '../icon'; 7import { Icon } from '../icon';
8import { Badge } from './index'; 8import { Badge } from './index';
9import { IWithStyle } from '../typings/generic';
10 9
11interface IProps extends IWithStyle { 10interface IProps extends WithStylesProps<typeof styles> {
12 badgeClasses?: string; 11 badgeClasses?: string;
13 iconClasses?: string; 12 iconClasses?: string;
14 inverted?: boolean; 13 inverted?: boolean;
@@ -61,4 +60,6 @@ class ProBadgeComponent extends Component<IProps> {
61 } 60 }
62} 61}
63 62
64export const ProBadge = injectStyle(styles)(ProBadgeComponent); 63export const ProBadge = injectStyle(styles, { injectTheme: true })(
64 ProBadgeComponent,
65);
diff --git a/src/components/ui/badge/index.tsx b/src/components/ui/badge/index.tsx
index 61bede937..a7ed866a5 100644
--- a/src/components/ui/badge/index.tsx
+++ b/src/components/ui/badge/index.tsx
@@ -1,11 +1,10 @@
1import classnames from 'classnames'; 1import classnames from 'classnames';
2import { Component, ReactNode } from 'react'; 2import { Component, ReactNode } from 'react';
3import injectStyle from 'react-jss'; 3import injectStyle, { WithStylesProps } from 'react-jss';
4 4
5import { Theme } from '../../../themes'; 5import { Theme } from '../../../themes';
6import { IWithStyle } from '../typings/generic';
7 6
8interface IProps extends IWithStyle { 7interface IProps extends WithStylesProps<typeof styles> {
9 type: string; 8 type: string;
10 className?: string; 9 className?: string;
11 children: ReactNode; 10 children: ReactNode;
@@ -68,4 +67,4 @@ class BadgeComponent extends Component<IProps> {
68 } 67 }
69} 68}
70 69
71export const Badge = injectStyle(styles)(BadgeComponent); 70export const Badge = injectStyle(styles, { injectTheme: true })(BadgeComponent);
diff --git a/src/components/ui/button/index.tsx b/src/components/ui/button/index.tsx
index 12e5e4449..d91b1ee19 100644
--- a/src/components/ui/button/index.tsx
+++ b/src/components/ui/button/index.tsx
@@ -2,11 +2,11 @@ import Icon from '@mdi/react';
2import classnames from 'classnames'; 2import classnames from 'classnames';
3import { Property } from 'csstype'; 3import { Property } from 'csstype';
4import { Component, MouseEvent } from 'react'; 4import { Component, MouseEvent } from 'react';
5import injectStyle, { withTheme } from 'react-jss'; 5import injectStyle, { WithStylesProps } from 'react-jss';
6import Loader from 'react-loader'; 6import Loader from 'react-loader';
7 7
8import { Theme } from '../../../themes'; 8import { Theme } from '../../../themes';
9import { IFormField, IWithStyle } from '../typings/generic'; 9import { IFormField } from '../typings/generic';
10 10
11type ButtonType = 11type ButtonType =
12 | 'primary' 12 | 'primary'
@@ -16,7 +16,7 @@ type ButtonType =
16 | 'warning' 16 | 'warning'
17 | 'inverted'; 17 | 'inverted';
18 18
19interface IProps extends IFormField, IWithStyle { 19interface IProps extends IFormField, WithStylesProps<typeof styles> {
20 className?: string; 20 className?: string;
21 disabled?: boolean; 21 disabled?: boolean;
22 id?: string; 22 id?: string;
@@ -179,7 +179,7 @@ class ButtonComponent extends Component<IProps> {
179 const { 179 const {
180 classes, 180 classes,
181 className, 181 className,
182 theme, 182 // theme,
183 disabled, 183 disabled,
184 id, 184 id,
185 label, 185 label,
@@ -213,7 +213,7 @@ class ButtonComponent extends Component<IProps> {
213 loaded={false} 213 loaded={false}
214 width={4} 214 width={4}
215 scale={0.45} 215 scale={0.45}
216 color={theme.buttonLoaderColor[buttonType!]} 216 // color={theme.buttonLoaderColor[buttonType!]}
217 parentClassName={classes.loader} 217 parentClassName={classes.loader}
218 /> 218 />
219 )} 219 )}
@@ -262,4 +262,6 @@ class ButtonComponent extends Component<IProps> {
262 } 262 }
263} 263}
264 264
265export const Button = injectStyle(styles)(withTheme(ButtonComponent)); 265export const Button = injectStyle(styles, { injectTheme: true })(
266 ButtonComponent,
267);
diff --git a/src/components/ui/error/index.tsx b/src/components/ui/error/index.tsx
index 8439bfc8b..ff3bc31c6 100644
--- a/src/components/ui/error/index.tsx
+++ b/src/components/ui/error/index.tsx
@@ -17,4 +17,4 @@ class ErrorComponent extends Component<IProps> {
17 } 17 }
18} 18}
19 19
20export const Error = injectSheet(styles)(ErrorComponent); 20export const Error = injectSheet(styles, { injectTheme: true })(ErrorComponent);
diff --git a/src/components/ui/headline/index.tsx b/src/components/ui/headline/index.tsx
index ea2949102..d9954c38f 100644
--- a/src/components/ui/headline/index.tsx
+++ b/src/components/ui/headline/index.tsx
@@ -1,11 +1,11 @@
1import classnames from 'classnames'; 1import classnames from 'classnames';
2import { Component, createElement, ReactNode } from 'react'; 2import { Component, createElement, ReactNode } from 'react';
3import injectStyle from 'react-jss'; 3import injectStyle, { WithStylesProps } from 'react-jss';
4 4
5import { Theme } from '../../../themes'; 5import { Theme } from '../../../themes';
6import { IWithStyle, Omit } from '../typings/generic'; 6import { Omit } from '../typings/generic';
7 7
8interface IProps extends IWithStyle { 8interface IProps extends WithStylesProps<typeof styles> {
9 level?: number; 9 level?: number;
10 className?: string; 10 className?: string;
11 children: string | ReactNode; 11 children: string | ReactNode;
@@ -55,9 +55,9 @@ class HeadlineComponent extends Component<IProps> {
55 } 55 }
56} 56}
57 57
58const Headline = injectStyle(styles)(HeadlineComponent); 58const Headline = injectStyle(styles, { injectTheme: true })(HeadlineComponent);
59 59
60const createH = (level: number) => (props: Omit<IProps, 'classes' | 'theme'>) => 60const createH = (level: number) => (props: Omit<IProps, 'classes'>) =>
61 ( 61 (
62 <Headline level={level} {...props}> 62 <Headline level={level} {...props}>
63 {props.children} 63 {props.children}
diff --git a/src/components/ui/icon/index.tsx b/src/components/ui/icon/index.tsx
index 85bb61d13..52f61d2d7 100644
--- a/src/components/ui/icon/index.tsx
+++ b/src/components/ui/icon/index.tsx
@@ -1,12 +1,11 @@
1import MdiIcon from '@mdi/react'; 1import MdiIcon from '@mdi/react';
2import classnames from 'classnames'; 2import classnames from 'classnames';
3import { Component } from 'react'; 3import { Component } from 'react';
4import injectStyle from 'react-jss'; 4import injectStyle, { WithStylesProps } from 'react-jss';
5 5
6import { Theme } from '../../../themes'; 6import { Theme } from '../../../themes';
7import { IWithStyle } from '../typings/generic';
8 7
9interface IProps extends IWithStyle { 8interface IProps extends WithStylesProps<typeof styles> {
10 icon: string; 9 icon: string;
11 size?: number; 10 size?: number;
12 className?: string; 11 className?: string;
@@ -43,4 +42,4 @@ class IconComponent extends Component<IProps> {
43 } 42 }
44} 43}
45 44
46export const Icon = injectStyle(styles)(IconComponent); 45export const Icon = injectStyle(styles, { injectTheme: true })(IconComponent);
diff --git a/src/components/ui/infobox/index.tsx b/src/components/ui/infobox/index.tsx
index 87940c4d4..c0767a342 100644
--- a/src/components/ui/infobox/index.tsx
+++ b/src/components/ui/infobox/index.tsx
@@ -1,13 +1,12 @@
1import { mdiClose } from '@mdi/js'; 1import { mdiClose } from '@mdi/js';
2import classnames from 'classnames'; 2import classnames from 'classnames';
3import { Component, ReactNode } from 'react'; 3import { Component, ReactNode } from 'react';
4import injectStyle from 'react-jss'; 4import injectStyle, { WithStylesProps } from 'react-jss';
5 5
6import { Theme } from '../../../themes'; 6import { Theme } from '../../../themes';
7import { Icon } from '../icon'; 7import { Icon } from '../icon';
8import { IWithStyle } from '../typings/generic';
9 8
10interface IProps extends IWithStyle { 9interface IProps extends WithStylesProps<typeof styles> {
11 icon?: string; 10 icon?: string;
12 type?: string; 11 type?: string;
13 dismissable?: boolean; 12 dismissable?: boolean;
@@ -58,7 +57,6 @@ const styles = (theme: Theme) => ({
58 position: 'relative', 57 position: 'relative',
59 overflow: 'hidden', 58 overflow: 'hidden',
60 height: 'auto', 59 height: 'auto',
61 marginBottom: 30,
62 }, 60 },
63 infobox: { 61 infobox: {
64 alignItems: 'center', 62 alignItems: 'center',
@@ -69,6 +67,7 @@ const styles = (theme: Theme) => ({
69 top: 0, 67 top: 0,
70 transition: infoBoxTransition, 68 transition: infoBoxTransition,
71 opacity: 1, 69 opacity: 1,
70 marginBottom: 30,
72 }, 71 },
73 dismissing: { 72 dismissing: {
74 // position: 'absolute', 73 // position: 'absolute',
@@ -202,4 +201,6 @@ class InfoboxComponent extends Component<IProps, IState> {
202 } 201 }
203} 202}
204 203
205export const Infobox = injectStyle(styles)(InfoboxComponent); 204export const Infobox = injectStyle(styles, { injectTheme: true })(
205 InfoboxComponent,
206);
diff --git a/src/components/ui/input/index.tsx b/src/components/ui/input/index.tsx
index c46cafc5c..bfbee33b9 100644
--- a/src/components/ui/input/index.tsx
+++ b/src/components/ui/input/index.tsx
@@ -2,9 +2,9 @@ import { mdiEye, mdiEyeOff } from '@mdi/js';
2import Icon from '@mdi/react'; 2import Icon from '@mdi/react';
3import classnames from 'classnames'; 3import classnames from 'classnames';
4import { Component, createRef, InputHTMLAttributes } from 'react'; 4import { Component, createRef, InputHTMLAttributes } from 'react';
5import injectSheet from 'react-jss'; 5import injectSheet, { WithStylesProps } from 'react-jss';
6 6
7import { IFormField, IWithStyle } from '../typings/generic'; 7import { IFormField } from '../typings/generic';
8 8
9import { Error } from '../error'; 9import { Error } from '../error';
10import { Label } from '../label'; 10import { Label } from '../label';
@@ -20,7 +20,7 @@ interface IData {
20interface IProps 20interface IProps
21 extends InputHTMLAttributes<HTMLInputElement>, 21 extends InputHTMLAttributes<HTMLInputElement>,
22 IFormField, 22 IFormField,
23 IWithStyle { 23 WithStylesProps<typeof styles> {
24 focus?: boolean; 24 focus?: boolean;
25 prefix?: string; 25 prefix?: string;
26 suffix?: string; 26 suffix?: string;
@@ -205,4 +205,4 @@ class InputComponent extends Component<IProps, IState> {
205 } 205 }
206} 206}
207 207
208export const Input = injectSheet(styles)(InputComponent); 208export const Input = injectSheet(styles, { injectTheme: true })(InputComponent);
diff --git a/src/components/ui/label/index.tsx b/src/components/ui/label/index.tsx
index 4d86f23f7..dcc14bff4 100644
--- a/src/components/ui/label/index.tsx
+++ b/src/components/ui/label/index.tsx
@@ -1,15 +1,16 @@
1import classnames from 'classnames'; 1import classnames from 'classnames';
2import { Classes } from 'jss';
3import { Component, LabelHTMLAttributes } from 'react'; 2import { Component, LabelHTMLAttributes } from 'react';
4import injectSheet from 'react-jss'; 3import injectSheet, { WithStylesProps } from 'react-jss';
5 4
6import { IFormField } from '../typings/generic'; 5import { IFormField } from '../typings/generic';
7 6
8import styles from './styles'; 7import styles from './styles';
9 8
10interface ILabel extends IFormField, LabelHTMLAttributes<HTMLLabelElement> { 9interface ILabel
11 classes: Classes; 10 extends IFormField,
12 isRequired: boolean; 11 LabelHTMLAttributes<HTMLLabelElement>,
12 WithStylesProps<typeof styles> {
13 isRequired?: boolean;
13} 14}
14 15
15class LabelComponent extends Component<ILabel> { 16class LabelComponent extends Component<ILabel> {
@@ -49,4 +50,4 @@ class LabelComponent extends Component<ILabel> {
49 } 50 }
50} 51}
51 52
52export const Label = injectSheet(styles)(LabelComponent); 53export const Label = injectSheet(styles, { injectTheme: true })(LabelComponent);
diff --git a/src/components/ui/loader/index.tsx b/src/components/ui/loader/index.tsx
index 0607bd48b..d56995ccc 100644
--- a/src/components/ui/loader/index.tsx
+++ b/src/components/ui/loader/index.tsx
@@ -1,25 +1,25 @@
1import classnames from 'classnames'; 1import classnames from 'classnames';
2import { Component } from 'react'; 2import { Component } from 'react';
3import injectStyle, { withTheme } from 'react-jss'; 3import injectStyle, { WithStylesProps } from 'react-jss';
4import ReactLoader from 'react-loader'; 4import ReactLoader from 'react-loader';
5 5
6import { IWithStyle } from '../typings/generic'; 6interface IProps extends WithStylesProps<typeof styles> {
7
8interface IProps extends IWithStyle {
9 className?: string; 7 className?: string;
10 color?: string; 8 color?: string;
11} 9}
12 10
13const styles = () => ({ 11const styles = theme => ({
14 container: { 12 container: {
15 position: 'relative', 13 position: 'relative',
16 height: 60, 14 height: 60,
17 }, 15 },
16 loader: {},
17 color: theme.colorText,
18}); 18});
19 19
20class LoaderComponent extends Component<IProps> { 20class LoaderComponent extends Component<IProps> {
21 render() { 21 render() {
22 const { classes, className, color, theme } = this.props; 22 const { classes, className, color } = this.props;
23 23
24 return ( 24 return (
25 <div 25 <div
@@ -33,7 +33,7 @@ class LoaderComponent extends Component<IProps> {
33 loaded={false} 33 loaded={false}
34 width={4} 34 width={4}
35 scale={0.75} 35 scale={0.75}
36 color={color || theme.colorText} 36 color={color || classes.color}
37 parentClassName={classes.loader} 37 parentClassName={classes.loader}
38 /> 38 />
39 </div> 39 </div>
@@ -41,4 +41,6 @@ class LoaderComponent extends Component<IProps> {
41 } 41 }
42} 42}
43 43
44export const Loader = injectStyle(styles)(withTheme(LoaderComponent)); 44export const Loader = injectStyle(styles, { injectTheme: true })(
45 LoaderComponent,
46);
diff --git a/src/components/ui/select/index.tsx b/src/components/ui/select/index.tsx
index 2605503a3..ac509aa7c 100644
--- a/src/components/ui/select/index.tsx
+++ b/src/components/ui/select/index.tsx
@@ -6,10 +6,10 @@ import {
6import Icon from '@mdi/react'; 6import Icon from '@mdi/react';
7import classnames from 'classnames'; 7import classnames from 'classnames';
8import { ChangeEvent, Component, createRef } from 'react'; 8import { ChangeEvent, Component, createRef } from 'react';
9import injectStyle from 'react-jss'; 9import injectStyle, { WithStylesProps } from 'react-jss';
10 10
11import { Theme } from '../../../themes'; 11import { Theme } from '../../../themes';
12import { IFormField, IWithStyle } from '../typings/generic'; 12import { IFormField } from '../typings/generic';
13 13
14import { Error } from '../error'; 14import { Error } from '../error';
15import { Label } from '../label'; 15import { Label } from '../label';
@@ -23,7 +23,7 @@ interface IData {
23 [index: string]: string; 23 [index: string]: string;
24} 24}
25 25
26interface IProps extends IFormField, IWithStyle { 26interface IProps extends IFormField, WithStylesProps<typeof styles> {
27 actionText: string; 27 actionText: string;
28 className?: string; 28 className?: string;
29 inputClassName?: string; 29 inputClassName?: string;
@@ -146,6 +146,7 @@ const styles = (theme: Theme) => ({
146 disabled: { 146 disabled: {
147 opacity: theme.selectDisabledOpacity, 147 opacity: theme.selectDisabledOpacity,
148 }, 148 },
149 input: {},
149}); 150});
150 151
151class SelectComponent extends Component<IProps> { 152class SelectComponent extends Component<IProps> {
@@ -457,4 +458,6 @@ class SelectComponent extends Component<IProps> {
457 } 458 }
458} 459}
459 460
460export const Select = injectStyle(styles)(SelectComponent); 461export const Select = injectStyle(styles, { injectTheme: true })(
462 SelectComponent,
463);
diff --git a/src/components/ui/textarea/index.tsx b/src/components/ui/textarea/index.tsx
index 1b16698eb..a47465806 100644
--- a/src/components/ui/textarea/index.tsx
+++ b/src/components/ui/textarea/index.tsx
@@ -1,8 +1,8 @@
1import classnames from 'classnames'; 1import classnames from 'classnames';
2import { Component, createRef, TextareaHTMLAttributes } from 'react'; 2import { Component, createRef, TextareaHTMLAttributes } from 'react';
3import injectSheet from 'react-jss'; 3import injectSheet, { WithStylesProps } from 'react-jss';
4 4
5import { IFormField, IWithStyle } from '../typings/generic'; 5import { IFormField } from '../typings/generic';
6 6
7import { Error } from '../error'; 7import { Error } from '../error';
8import { Label } from '../label'; 8import { Label } from '../label';
@@ -17,7 +17,7 @@ interface IData {
17interface IProps 17interface IProps
18 extends TextareaHTMLAttributes<HTMLTextAreaElement>, 18 extends TextareaHTMLAttributes<HTMLTextAreaElement>,
19 IFormField, 19 IFormField,
20 IWithStyle { 20 WithStylesProps<typeof styles> {
21 focus?: boolean; 21 focus?: boolean;
22 data: IData; 22 data: IData;
23 textareaClassName?: string; 23 textareaClassName?: string;
@@ -123,4 +123,6 @@ class TextareaComponent extends Component<IProps> {
123 } 123 }
124} 124}
125 125
126export const Textarea = injectSheet(styles)(TextareaComponent); 126export const Textarea = injectSheet(styles, { injectTheme: true })(
127 TextareaComponent,
128);
diff --git a/src/components/ui/toggle/index.tsx b/src/components/ui/toggle/index.tsx
index 7b6ba147f..856581a21 100644
--- a/src/components/ui/toggle/index.tsx
+++ b/src/components/ui/toggle/index.tsx
@@ -1,10 +1,10 @@
1import classnames from 'classnames'; 1import classnames from 'classnames';
2import { Property } from 'csstype'; 2import { Property } from 'csstype';
3import { Component, InputHTMLAttributes } from 'react'; 3import { Component, InputHTMLAttributes } from 'react';
4import injectStyle from 'react-jss'; 4import injectStyle, { WithStylesProps } from 'react-jss';
5 5
6import { Theme } from '../../../themes'; 6import { Theme } from '../../../themes';
7import { IFormField, IWithStyle } from '../typings/generic'; 7import { IFormField } from '../typings/generic';
8 8
9import { Error } from '../error'; 9import { Error } from '../error';
10import { Label } from '../label'; 10import { Label } from '../label';
@@ -13,7 +13,7 @@ import { Wrapper } from '../wrapper';
13interface IProps 13interface IProps
14 extends InputHTMLAttributes<HTMLInputElement>, 14 extends InputHTMLAttributes<HTMLInputElement>,
15 IFormField, 15 IFormField,
16 IWithStyle { 16 WithStylesProps<typeof styles> {
17 className?: string; 17 className?: string;
18} 18}
19 19
@@ -122,4 +122,6 @@ class ToggleComponent extends Component<IProps> {
122 } 122 }
123} 123}
124 124
125export const Toggle = injectStyle(styles)(ToggleComponent); 125export const Toggle = injectStyle(styles, { injectTheme: true })(
126 ToggleComponent,
127);
diff --git a/src/components/ui/typings/generic.ts b/src/components/ui/typings/generic.ts
index 65b996d59..3aec0bc40 100644
--- a/src/components/ui/typings/generic.ts
+++ b/src/components/ui/typings/generic.ts
@@ -1,7 +1,3 @@
1import { Classes } from 'jss';
2
3import { Theme } from '../../../themes';
4
5export interface IFormField { 1export interface IFormField {
6 showLabel?: boolean; 2 showLabel?: boolean;
7 label?: string; 3 label?: string;
@@ -10,10 +6,5 @@ export interface IFormField {
10 noMargin?: boolean; 6 noMargin?: boolean;
11} 7}
12 8
13export interface IWithStyle {
14 classes: Classes;
15 theme: Theme;
16}
17
18export type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N; 9export type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
19export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; 10export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
diff --git a/src/components/ui/wrapper/index.tsx b/src/components/ui/wrapper/index.tsx
index ffcd6fe0b..bc385d319 100644
--- a/src/components/ui/wrapper/index.tsx
+++ b/src/components/ui/wrapper/index.tsx
@@ -1,9 +1,8 @@
1import classnames from 'classnames'; 1import classnames from 'classnames';
2import { Component, ReactNode } from 'react'; 2import { Component, ReactNode } from 'react';
3import injectStyle from 'react-jss'; 3import injectStyle, { WithStylesProps } from 'react-jss';
4import { IWithStyle } from '../typings/generic';
5 4
6interface IProps extends IWithStyle { 5interface IProps extends WithStylesProps<typeof styles> {
7 children: ReactNode; 6 children: ReactNode;
8 className?: string; 7 className?: string;
9 identifier: string; 8 identifier: string;
@@ -34,4 +33,6 @@ class WrapperComponent extends Component<IProps> {
34 } 33 }
35} 34}
36 35
37export const Wrapper = injectStyle(styles)(WrapperComponent); 36export const Wrapper = injectStyle(styles, { injectTheme: true })(
37 WrapperComponent,
38);
diff --git a/src/components/util/ErrorBoundary/index.js b/src/components/util/ErrorBoundary/index.js
index cddcd91c2..6a8b126f1 100644
--- a/src/components/util/ErrorBoundary/index.js
+++ b/src/components/util/ErrorBoundary/index.js
@@ -18,7 +18,6 @@ const messages = defineMessages({
18 }, 18 },
19}); 19});
20 20
21@injectSheet(styles)
22class ErrorBoundary extends Component { 21class ErrorBoundary extends Component {
23 state = { 22 state = {
24 hasError: false, 23 hasError: false,
@@ -56,4 +55,6 @@ class ErrorBoundary extends Component {
56 } 55 }
57} 56}
58 57
59export default injectIntl(ErrorBoundary); 58export default injectIntl(
59 injectSheet(styles, { injectTheme: true })(ErrorBoundary),
60);
diff --git a/src/config.ts b/src/config.ts
index fb073c062..9600cc088 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -86,7 +86,7 @@ const TODO_TICKTICK_URL = 'https://ticktick.com/signin';
86const TODO_MSTODO_URL = 'https://todo.microsoft.com/?app#'; 86const TODO_MSTODO_URL = 'https://todo.microsoft.com/?app#';
87const TODO_HABITICA_URL = 'https://habitica.com/login'; 87const TODO_HABITICA_URL = 'https://habitica.com/login';
88const TODO_NOZBE_URL = 'https://app.nozbe.com/#login'; 88const TODO_NOZBE_URL = 'https://app.nozbe.com/#login';
89const TODO_RTM_URL = 'https://www.rememberthemilk.com/login/'; 89const TODO_RTM_URL = 'https://www.rememberthemilk.com/';
90const TODO_ANYDO_URL = 'https://desktop.any.do/'; 90const TODO_ANYDO_URL = 'https://desktop.any.do/';
91const TODO_GOOGLETASKS_URL = 91const TODO_GOOGLETASKS_URL =
92 'https://tasks.google.com/embed/?origin=https%3A%2F%2Fcalendar.google.com&fullWidth=1'; 92 'https://tasks.google.com/embed/?origin=https%3A%2F%2Fcalendar.google.com&fullWidth=1';
@@ -172,6 +172,9 @@ export const CUSTOM_WEBSITE_RECIPE_ID = 'franz-custom-website';
172 172
173export const DEFAULT_SERVICE_ORDER = 99; // something high enough that it gets added to the end of the already-added services on the left sidebar 173export const DEFAULT_SERVICE_ORDER = 99; // something high enough that it gets added to the end of the already-added services on the left sidebar
174 174
175export const SPLIT_COLUMNS_MIN = 1;
176export const SPLIT_COLUMNS_MAX = 5;
177
175export const DEFAULT_APP_SETTINGS = { 178export const DEFAULT_APP_SETTINGS = {
176 autoLaunchOnStart: false, 179 autoLaunchOnStart: false,
177 autoLaunchInBackground: false, 180 autoLaunchInBackground: false,
@@ -193,6 +196,7 @@ export const DEFAULT_APP_SETTINGS = {
193 spellcheckerLanguage: 'en-us', 196 spellcheckerLanguage: 'en-us',
194 darkMode: false, 197 darkMode: false,
195 splitMode: false, 198 splitMode: false,
199 splitColumns: 3,
196 fallbackLocale: 'en-US', 200 fallbackLocale: 'en-US',
197 beta: false, 201 beta: false,
198 isAppMuted: false, 202 isAppMuted: false,
diff --git a/src/containers/auth/AuthLayoutContainer.js b/src/containers/auth/AuthLayoutContainer.js
index aa36e3969..e6d6dcf8a 100644
--- a/src/containers/auth/AuthLayoutContainer.js
+++ b/src/containers/auth/AuthLayoutContainer.js
@@ -14,8 +14,6 @@ import AppLoader from '../../components/ui/AppLoader';
14import { oneOrManyChildElements } from '../../prop-types'; 14import { oneOrManyChildElements } from '../../prop-types';
15import FeaturesStore from '../../stores/FeaturesStore'; 15import FeaturesStore from '../../stores/FeaturesStore';
16 16
17@inject('stores', 'actions')
18@observer
19class AuthLayoutContainer extends Component { 17class AuthLayoutContainer extends Component {
20 static propTypes = { 18 static propTypes = {
21 children: oneOrManyChildElements.isRequired, 19 children: oneOrManyChildElements.isRequired,
@@ -71,7 +69,7 @@ class AuthLayoutContainer extends Component {
71 } 69 }
72} 70}
73 71
74AuthLayoutContainer.wrappedComponent.propTypes = { 72AuthLayoutContainer.propTypes = {
75 stores: PropTypes.shape({ 73 stores: PropTypes.shape({
76 app: PropTypes.instanceOf(AppStore).isRequired, 74 app: PropTypes.instanceOf(AppStore).isRequired,
77 features: PropTypes.instanceOf(FeaturesStore).isRequired, 75 features: PropTypes.instanceOf(FeaturesStore).isRequired,
@@ -85,4 +83,4 @@ AuthLayoutContainer.wrappedComponent.propTypes = {
85 }).isRequired, 83 }).isRequired,
86}; 84};
87 85
88export default AuthLayoutContainer; 86export default inject('stores', 'actions')(observer(AuthLayoutContainer));
diff --git a/src/containers/auth/ChangeServerScreen.js b/src/containers/auth/ChangeServerScreen.js
index dcc913c39..60bfde088 100644
--- a/src/containers/auth/ChangeServerScreen.js
+++ b/src/containers/auth/ChangeServerScreen.js
@@ -5,8 +5,6 @@ import { RouterStore } from 'mobx-react-router';
5import ChangeServer from '../../components/auth/ChangeServer'; 5import ChangeServer from '../../components/auth/ChangeServer';
6import SettingsStore from '../../stores/SettingsStore'; 6import SettingsStore from '../../stores/SettingsStore';
7 7
8@inject('stores', 'actions')
9@observer
10class ChangeServerScreen extends Component { 8class ChangeServerScreen extends Component {
11 constructor(props) { 9 constructor(props) {
12 super(props); 10 super(props);
@@ -34,7 +32,7 @@ class ChangeServerScreen extends Component {
34 } 32 }
35} 33}
36 34
37ChangeServerScreen.wrappedComponent.propTypes = { 35ChangeServerScreen.propTypes = {
38 actions: PropTypes.shape({ 36 actions: PropTypes.shape({
39 settings: PropTypes.instanceOf(SettingsStore).isRequired, 37 settings: PropTypes.instanceOf(SettingsStore).isRequired,
40 }).isRequired, 38 }).isRequired,
@@ -44,4 +42,4 @@ ChangeServerScreen.wrappedComponent.propTypes = {
44 }).isRequired, 42 }).isRequired,
45}; 43};
46 44
47export default ChangeServerScreen; 45export default inject('stores', 'actions')(observer(ChangeServerScreen));
diff --git a/src/containers/auth/ImportScreen.js b/src/containers/auth/ImportScreen.js
index 46e2d41f0..c01c3d355 100644
--- a/src/containers/auth/ImportScreen.js
+++ b/src/containers/auth/ImportScreen.js
@@ -5,8 +5,6 @@ import { RouterStore } from 'mobx-react-router';
5import Import from '../../components/auth/Import'; 5import Import from '../../components/auth/Import';
6import UserStore from '../../stores/UserStore'; 6import UserStore from '../../stores/UserStore';
7 7
8@inject('stores', 'actions')
9@observer
10class ImportScreen extends Component { 8class ImportScreen extends Component {
11 render() { 9 render() {
12 const { actions, stores } = this.props; 10 const { actions, stores } = this.props;
@@ -26,7 +24,7 @@ class ImportScreen extends Component {
26 } 24 }
27} 25}
28 26
29ImportScreen.wrappedComponent.propTypes = { 27ImportScreen.propTypes = {
30 actions: PropTypes.shape({ 28 actions: PropTypes.shape({
31 user: PropTypes.instanceOf(UserStore).isRequired, 29 user: PropTypes.instanceOf(UserStore).isRequired,
32 }).isRequired, 30 }).isRequired,
@@ -36,4 +34,4 @@ ImportScreen.wrappedComponent.propTypes = {
36 }).isRequired, 34 }).isRequired,
37}; 35};
38 36
39export default ImportScreen; 37export default inject('stores', 'actions')(observer(ImportScreen));
diff --git a/src/containers/auth/InviteScreen.js b/src/containers/auth/InviteScreen.js
index e252242ae..fc66227cc 100644
--- a/src/containers/auth/InviteScreen.js
+++ b/src/containers/auth/InviteScreen.js
@@ -3,8 +3,6 @@ import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 3import { inject, observer } from 'mobx-react';
4import Invite from '../../components/auth/Invite'; 4import Invite from '../../components/auth/Invite';
5 5
6@inject('stores', 'actions')
7@observer
8class InviteScreen extends Component { 6class InviteScreen extends Component {
9 render() { 7 render() {
10 const { actions } = this.props; 8 const { actions } = this.props;
@@ -13,7 +11,7 @@ class InviteScreen extends Component {
13 } 11 }
14} 12}
15 13
16InviteScreen.wrappedComponent.propTypes = { 14InviteScreen.propTypes = {
17 actions: PropTypes.shape({ 15 actions: PropTypes.shape({
18 user: PropTypes.shape({ 16 user: PropTypes.shape({
19 invite: PropTypes.func.isRequired, 17 invite: PropTypes.func.isRequired,
@@ -21,4 +19,4 @@ InviteScreen.wrappedComponent.propTypes = {
21 }).isRequired, 19 }).isRequired,
22}; 20};
23 21
24export default InviteScreen; 22export default inject('stores', 'actions')(observer(InviteScreen));
diff --git a/src/containers/auth/LockedScreen.js b/src/containers/auth/LockedScreen.js
index 945e41284..d99a4051b 100644
--- a/src/containers/auth/LockedScreen.js
+++ b/src/containers/auth/LockedScreen.js
@@ -7,8 +7,6 @@ import SettingsStore from '../../stores/SettingsStore';
7import { hash } from '../../helpers/password-helpers'; 7import { hash } from '../../helpers/password-helpers';
8import UserStore from '../../stores/UserStore'; 8import UserStore from '../../stores/UserStore';
9 9
10@inject('stores', 'actions')
11@observer
12class LockedScreen extends Component { 10class LockedScreen extends Component {
13 state = { 11 state = {
14 error: false, 12 error: false,
@@ -61,22 +59,20 @@ class LockedScreen extends Component {
61 return ( 59 return (
62 <div className="auth"> 60 <div className="auth">
63 <div className="auth__layout"> 61 <div className="auth__layout">
64 <div className="auth__container"> 62 <Locked
65 <Locked 63 onSubmit={this.onSubmit}
66 onSubmit={this.onSubmit} 64 unlock={this.unlock}
67 unlock={this.unlock} 65 useTouchIdToUnlock={useTouchIdToUnlock}
68 useTouchIdToUnlock={useTouchIdToUnlock} 66 isSubmitting={stores.user.loginRequest.isExecuting}
69 isSubmitting={stores.user.loginRequest.isExecuting} 67 error={this.state.error || {}}
70 error={this.state.error || {}} 68 />
71 />
72 </div>
73 </div> 69 </div>
74 </div> 70 </div>
75 ); 71 );
76 } 72 }
77} 73}
78 74
79LockedScreen.wrappedComponent.propTypes = { 75LockedScreen.propTypes = {
80 actions: PropTypes.shape({ 76 actions: PropTypes.shape({
81 settings: PropTypes.instanceOf(SettingsStore).isRequired, 77 settings: PropTypes.instanceOf(SettingsStore).isRequired,
82 }).isRequired, 78 }).isRequired,
@@ -86,4 +82,4 @@ LockedScreen.wrappedComponent.propTypes = {
86 }).isRequired, 82 }).isRequired,
87}; 83};
88 84
89export default LockedScreen; 85export default inject('stores', 'actions')(observer(LockedScreen));
diff --git a/src/containers/auth/LoginScreen.js b/src/containers/auth/LoginScreen.js
index 3f8c67fa8..f8351f458 100644
--- a/src/containers/auth/LoginScreen.js
+++ b/src/containers/auth/LoginScreen.js
@@ -6,8 +6,6 @@ import UserStore from '../../stores/UserStore';
6 6
7import { globalError as globalErrorPropType } from '../../prop-types'; 7import { globalError as globalErrorPropType } from '../../prop-types';
8 8
9@inject('stores', 'actions')
10@observer
11class LoginScreen extends Component { 9class LoginScreen extends Component {
12 static propTypes = { 10 static propTypes = {
13 error: globalErrorPropType.isRequired, 11 error: globalErrorPropType.isRequired,
@@ -25,14 +23,13 @@ class LoginScreen extends Component {
25 } 23 }
26 signupRoute={stores.user.signupRoute} 24 signupRoute={stores.user.signupRoute}
27 passwordRoute={stores.user.passwordRoute} 25 passwordRoute={stores.user.passwordRoute}
28 changeServerRoute={stores.user.changeServerRoute}
29 error={error} 26 error={error}
30 /> 27 />
31 ); 28 );
32 } 29 }
33} 30}
34 31
35LoginScreen.wrappedComponent.propTypes = { 32LoginScreen.propTypes = {
36 actions: PropTypes.shape({ 33 actions: PropTypes.shape({
37 user: PropTypes.instanceOf(UserStore).isRequired, 34 user: PropTypes.instanceOf(UserStore).isRequired,
38 }).isRequired, 35 }).isRequired,
@@ -41,4 +38,4 @@ LoginScreen.wrappedComponent.propTypes = {
41 }).isRequired, 38 }).isRequired,
42}; 39};
43 40
44export default LoginScreen; 41export default inject('stores', 'actions')(observer(LoginScreen));
diff --git a/src/containers/auth/PasswordScreen.js b/src/containers/auth/PasswordScreen.js
index 836d4cc88..4b2c1b4a2 100644
--- a/src/containers/auth/PasswordScreen.js
+++ b/src/containers/auth/PasswordScreen.js
@@ -4,8 +4,6 @@ import { inject, observer } from 'mobx-react';
4import Password from '../../components/auth/Password'; 4import Password from '../../components/auth/Password';
5import UserStore from '../../stores/UserStore'; 5import UserStore from '../../stores/UserStore';
6 6
7@inject('stores', 'actions')
8@observer
9class PasswordScreen extends Component { 7class PasswordScreen extends Component {
10 render() { 8 render() {
11 const { actions, stores } = this.props; 9 const { actions, stores } = this.props;
@@ -22,7 +20,7 @@ class PasswordScreen extends Component {
22 } 20 }
23} 21}
24 22
25PasswordScreen.wrappedComponent.propTypes = { 23PasswordScreen.propTypes = {
26 actions: PropTypes.shape({ 24 actions: PropTypes.shape({
27 user: PropTypes.instanceOf(UserStore).isRequired, 25 user: PropTypes.instanceOf(UserStore).isRequired,
28 }).isRequired, 26 }).isRequired,
@@ -31,4 +29,4 @@ PasswordScreen.wrappedComponent.propTypes = {
31 }).isRequired, 29 }).isRequired,
32}; 30};
33 31
34export default PasswordScreen; 32export default inject('stores', 'actions')(observer(PasswordScreen));
diff --git a/src/containers/auth/SetupAssistantScreen.js b/src/containers/auth/SetupAssistantScreen.js
index 8cdd95a88..42c3d6019 100644
--- a/src/containers/auth/SetupAssistantScreen.js
+++ b/src/containers/auth/SetupAssistantScreen.js
@@ -4,18 +4,12 @@ import PropTypes from 'prop-types';
4import { inject, observer } from 'mobx-react'; 4import { inject, observer } from 'mobx-react';
5 5
6import { RouterStore } from 'mobx-react-router'; 6import { RouterStore } from 'mobx-react-router';
7import {
8 DEFAULT_TODO_RECIPE_ID,
9 DEFAULT_TODO_SERVICE_NAME,
10} from '../../config';
11import { sleep } from '../../helpers/async-helpers'; 7import { sleep } from '../../helpers/async-helpers';
12import SetupAssistant from '../../components/auth/SetupAssistant'; 8import SetupAssistant from '../../components/auth/SetupAssistant';
13import ServicesStore from '../../stores/ServicesStore'; 9import ServicesStore from '../../stores/ServicesStore';
14import RecipesStore from '../../stores/RecipesStore'; 10import RecipesStore from '../../stores/RecipesStore';
15import UserStore from '../../stores/UserStore'; 11import UserStore from '../../stores/UserStore';
16 12
17@inject('stores', 'actions')
18@observer
19class SetupAssistantScreen extends Component { 13class SetupAssistantScreen extends Component {
20 constructor(props) { 14 constructor(props) {
21 super(props); 15 super(props);
@@ -65,9 +59,7 @@ class SetupAssistantScreen extends Component {
65 }; 59 };
66 60
67 async setupServices(serviceConfig) { 61 async setupServices(serviceConfig) {
68 const { 62 const { stores: { services, router } } = this.props;
69 stores: { services },
70 } = this.props;
71 63
72 this.setState({ 64 this.setState({
73 isSettingUpServices: true, 65 isSettingUpServices: true,
@@ -93,19 +85,13 @@ class SetupAssistantScreen extends Component {
93 await sleep(100); 85 await sleep(100);
94 } 86 }
95 87
96 // Add todo service
97 await services._createService({
98 recipeId: DEFAULT_TODO_RECIPE_ID,
99 serviceData: {
100 name: DEFAULT_TODO_SERVICE_NAME,
101 },
102 redirect: false,
103 skipCleanup: true,
104 });
105
106 this.setState({ 88 this.setState({
107 isSettingUpServices: false, 89 isSettingUpServices: false,
108 }); 90 });
91
92 await sleep(100);
93
94 router.push("/");
109 } 95 }
110 96
111 render() { 97 render() {
@@ -120,7 +106,7 @@ class SetupAssistantScreen extends Component {
120 } 106 }
121} 107}
122 108
123SetupAssistantScreen.wrappedComponent.propTypes = { 109SetupAssistantScreen.propTypes = {
124 stores: PropTypes.shape({ 110 stores: PropTypes.shape({
125 services: PropTypes.instanceOf(ServicesStore), 111 services: PropTypes.instanceOf(ServicesStore),
126 router: PropTypes.instanceOf(RouterStore).isRequired, 112 router: PropTypes.instanceOf(RouterStore).isRequired,
@@ -134,4 +120,4 @@ SetupAssistantScreen.wrappedComponent.propTypes = {
134 }).isRequired, 120 }).isRequired,
135}; 121};
136 122
137export default SetupAssistantScreen; 123export default inject('stores', 'actions')(observer(SetupAssistantScreen));
diff --git a/src/containers/auth/SignupScreen.js b/src/containers/auth/SignupScreen.js
index 3b19f3c50..3824e47d5 100644
--- a/src/containers/auth/SignupScreen.js
+++ b/src/containers/auth/SignupScreen.js
@@ -8,8 +8,6 @@ import FeaturesStore from '../../stores/FeaturesStore';
8 8
9import { globalError as globalErrorPropType } from '../../prop-types'; 9import { globalError as globalErrorPropType } from '../../prop-types';
10 10
11@inject('stores', 'actions')
12@observer
13class SignupScreen extends Component { 11class SignupScreen extends Component {
14 static propTypes = { 12 static propTypes = {
15 error: globalErrorPropType.isRequired, 13 error: globalErrorPropType.isRequired,
@@ -29,14 +27,13 @@ class SignupScreen extends Component {
29 onSubmit={values => this.onSignup(values)} 27 onSubmit={values => this.onSignup(values)}
30 isSubmitting={stores.user.signupRequest.isExecuting} 28 isSubmitting={stores.user.signupRequest.isExecuting}
31 loginRoute={stores.user.loginRoute} 29 loginRoute={stores.user.loginRoute}
32 changeServerRoute={stores.user.changeServerRoute}
33 error={error} 30 error={error}
34 /> 31 />
35 ); 32 );
36 } 33 }
37} 34}
38 35
39SignupScreen.wrappedComponent.propTypes = { 36SignupScreen.propTypes = {
40 actions: PropTypes.shape({ 37 actions: PropTypes.shape({
41 user: PropTypes.instanceOf(UserStore).isRequired, 38 user: PropTypes.instanceOf(UserStore).isRequired,
42 }).isRequired, 39 }).isRequired,
@@ -46,4 +43,4 @@ SignupScreen.wrappedComponent.propTypes = {
46 }).isRequired, 43 }).isRequired,
47}; 44};
48 45
49export default SignupScreen; 46export default inject('stores', 'actions')(observer(SignupScreen));
diff --git a/src/containers/auth/WelcomeScreen.js b/src/containers/auth/WelcomeScreen.js
index 7a23d9ba9..18b6b2eda 100644
--- a/src/containers/auth/WelcomeScreen.js
+++ b/src/containers/auth/WelcomeScreen.js
@@ -6,8 +6,6 @@ import Welcome from '../../components/auth/Welcome';
6import UserStore from '../../stores/UserStore'; 6import UserStore from '../../stores/UserStore';
7import RecipePreviewsStore from '../../stores/RecipePreviewsStore'; 7import RecipePreviewsStore from '../../stores/RecipePreviewsStore';
8 8
9@inject('stores', 'actions')
10@observer
11class LoginScreen extends Component { 9class LoginScreen extends Component {
12 render() { 10 render() {
13 const { user, recipePreviews } = this.props.stores; 11 const { user, recipePreviews } = this.props.stores;
@@ -23,11 +21,11 @@ class LoginScreen extends Component {
23 } 21 }
24} 22}
25 23
26LoginScreen.wrappedComponent.propTypes = { 24LoginScreen.propTypes = {
27 stores: PropTypes.shape({ 25 stores: PropTypes.shape({
28 user: PropTypes.instanceOf(UserStore).isRequired, 26 user: PropTypes.instanceOf(UserStore).isRequired,
29 recipePreviews: PropTypes.instanceOf(RecipePreviewsStore).isRequired, 27 recipePreviews: PropTypes.instanceOf(RecipePreviewsStore).isRequired,
30 }).isRequired, 28 }).isRequired,
31}; 29};
32 30
33export default LoginScreen; 31export default inject('stores', 'actions')(observer(LoginScreen));
diff --git a/src/containers/layout/AppLayoutContainer.js b/src/containers/layout/AppLayoutContainer.js
index 50a28803f..9b0edc85e 100644
--- a/src/containers/layout/AppLayoutContainer.js
+++ b/src/containers/layout/AppLayoutContainer.js
@@ -24,8 +24,6 @@ import WorkspaceDrawer from '../../features/workspaces/components/WorkspaceDrawe
24import { workspaceStore } from '../../features/workspaces'; 24import { workspaceStore } from '../../features/workspaces';
25import WorkspacesStore from '../../features/workspaces/store'; 25import WorkspacesStore from '../../features/workspaces/store';
26 26
27@inject('stores', 'actions')
28@observer
29class AppLayoutContainer extends Component { 27class AppLayoutContainer extends Component {
30 static defaultProps = { 28 static defaultProps = {
31 children: null, 29 children: null,
@@ -171,7 +169,7 @@ class AppLayoutContainer extends Component {
171 } 169 }
172} 170}
173 171
174AppLayoutContainer.wrappedComponent.propTypes = { 172AppLayoutContainer.propTypes = {
175 stores: PropTypes.shape({ 173 stores: PropTypes.shape({
176 services: PropTypes.instanceOf(ServicesStore).isRequired, 174 services: PropTypes.instanceOf(ServicesStore).isRequired,
177 features: PropTypes.instanceOf(FeaturesStore).isRequired, 175 features: PropTypes.instanceOf(FeaturesStore).isRequired,
@@ -194,4 +192,4 @@ AppLayoutContainer.wrappedComponent.propTypes = {
194 children: oneOrManyChildElements, 192 children: oneOrManyChildElements,
195}; 193};
196 194
197export default AppLayoutContainer; 195export default inject('stores', 'actions')(observer(AppLayoutContainer));
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js
index f7c9b8164..aae230577 100644
--- a/src/containers/settings/AccountScreen.js
+++ b/src/containers/settings/AccountScreen.js
@@ -12,8 +12,6 @@ import ErrorBoundary from '../../components/util/ErrorBoundary';
12import { LIVE_FRANZ_API } from '../../config'; 12import { LIVE_FRANZ_API } from '../../config';
13import { WEBSITE } from '../../environment-remote'; 13import { WEBSITE } from '../../environment-remote';
14 14
15@inject('stores', 'actions')
16@observer
17class AccountScreen extends Component { 15class AccountScreen extends Component {
18 onCloseWindow() { 16 onCloseWindow() {
19 const { user, features } = this.props.stores; 17 const { user, features } = this.props.stores;
@@ -74,7 +72,7 @@ class AccountScreen extends Component {
74 } 72 }
75} 73}
76 74
77AccountScreen.wrappedComponent.propTypes = { 75AccountScreen.propTypes = {
78 stores: PropTypes.shape({ 76 stores: PropTypes.shape({
79 user: PropTypes.instanceOf(UserStore).isRequired, 77 user: PropTypes.instanceOf(UserStore).isRequired,
80 features: PropTypes.instanceOf(FeaturesStore).isRequired, 78 features: PropTypes.instanceOf(FeaturesStore).isRequired,
@@ -87,4 +85,4 @@ AccountScreen.wrappedComponent.propTypes = {
87 }).isRequired, 85 }).isRequired,
88}; 86};
89 87
90export default AccountScreen; 88export default inject('stores', 'actions')(observer(AccountScreen));
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js
index ddf7fab36..24b827993 100644
--- a/src/containers/settings/EditServiceScreen.js
+++ b/src/containers/settings/EditServiceScreen.js
@@ -111,8 +111,6 @@ const messages = defineMessages({
111 }, 111 },
112}); 112});
113 113
114@inject('stores', 'actions')
115@observer
116class EditServiceScreen extends Component { 114class EditServiceScreen extends Component {
117 onSubmit(data) { 115 onSubmit(data) {
118 const { action } = this.props.router.params; 116 const { action } = this.props.router.params;
@@ -438,7 +436,7 @@ class EditServiceScreen extends Component {
438 } 436 }
439} 437}
440 438
441EditServiceScreen.wrappedComponent.propTypes = { 439EditServiceScreen.propTypes = {
442 stores: PropTypes.shape({ 440 stores: PropTypes.shape({
443 user: PropTypes.instanceOf(UserStore).isRequired, 441 user: PropTypes.instanceOf(UserStore).isRequired,
444 recipes: PropTypes.instanceOf(RecipesStore).isRequired, 442 recipes: PropTypes.instanceOf(RecipesStore).isRequired,
@@ -451,4 +449,6 @@ EditServiceScreen.wrappedComponent.propTypes = {
451 }).isRequired, 449 }).isRequired,
452}; 450};
453 451
454export default injectIntl(EditServiceScreen); 452export default injectIntl(
453 inject('stores', 'actions')(observer(EditServiceScreen)),
454);
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js
index 64f5b2e01..ddf6876b9 100644
--- a/src/containers/settings/EditSettingsScreen.js
+++ b/src/containers/settings/EditSettingsScreen.js
@@ -20,6 +20,8 @@ import {
20 DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED, 20 DEFAULT_SETTING_KEEP_ALL_WORKSPACES_LOADED,
21 DEFAULT_IS_FEATURE_ENABLED_BY_USER, 21 DEFAULT_IS_FEATURE_ENABLED_BY_USER,
22 WAKE_UP_STRATEGIES, 22 WAKE_UP_STRATEGIES,
23 SPLIT_COLUMNS_MIN,
24 SPLIT_COLUMNS_MAX,
23} from '../../config'; 25} from '../../config';
24import { isMac } from '../../environment'; 26import { isMac } from '../../environment';
25 27
@@ -169,6 +171,10 @@ const messages = defineMessages({
169 id: 'settings.app.form.splitMode', 171 id: 'settings.app.form.splitMode',
170 defaultMessage: 'Enable Split View Mode', 172 defaultMessage: 'Enable Split View Mode',
171 }, 173 },
174 splitColumns: {
175 id: 'settings.app.form.splitColumns',
176 defaultMessage: 'Number of columns',
177 },
172 serviceRibbonWidth: { 178 serviceRibbonWidth: {
173 id: 'settings.app.form.serviceRibbonWidth', 179 id: 'settings.app.form.serviceRibbonWidth',
174 defaultMessage: 'Sidebar width', 180 defaultMessage: 'Sidebar width',
@@ -239,8 +245,6 @@ const messages = defineMessages({
239 }, 245 },
240}); 246});
241 247
242@inject('stores', 'actions')
243@observer
244class EditSettingsScreen extends Component { 248class EditSettingsScreen extends Component {
245 constructor(props) { 249 constructor(props) {
246 super(props); 250 super(props);
@@ -310,6 +314,7 @@ class EditSettingsScreen extends Component {
310 adaptableDarkMode: Boolean(settingsData.adaptableDarkMode), 314 adaptableDarkMode: Boolean(settingsData.adaptableDarkMode),
311 universalDarkMode: Boolean(settingsData.universalDarkMode), 315 universalDarkMode: Boolean(settingsData.universalDarkMode),
312 splitMode: Boolean(settingsData.splitMode), 316 splitMode: Boolean(settingsData.splitMode),
317 splitColumns: Number(settingsData.splitColumns),
313 serviceRibbonWidth: Number(settingsData.serviceRibbonWidth), 318 serviceRibbonWidth: Number(settingsData.serviceRibbonWidth),
314 iconSize: Number(settingsData.iconSize), 319 iconSize: Number(settingsData.iconSize),
315 enableLongPressServiceHint: Boolean( 320 enableLongPressServiceHint: Boolean(
@@ -613,6 +618,13 @@ class EditSettingsScreen extends Component {
613 value: settings.all.app.splitMode, 618 value: settings.all.app.splitMode,
614 default: DEFAULT_APP_SETTINGS.splitMode, 619 default: DEFAULT_APP_SETTINGS.splitMode,
615 }, 620 },
621 splitColumns: {
622 label: `${intl.formatMessage(
623 messages.splitColumns,
624 )} (${SPLIT_COLUMNS_MIN}-${SPLIT_COLUMNS_MAX})`,
625 value: settings.all.app.splitColumns,
626 default: DEFAULT_APP_SETTINGS.splitColumns,
627 },
616 serviceRibbonWidth: { 628 serviceRibbonWidth: {
617 label: intl.formatMessage(messages.serviceRibbonWidth), 629 label: intl.formatMessage(messages.serviceRibbonWidth),
618 value: settings.all.app.serviceRibbonWidth, 630 value: settings.all.app.serviceRibbonWidth,
@@ -725,6 +737,7 @@ class EditSettingsScreen extends Component {
725 isAdaptableDarkModeEnabled={ 737 isAdaptableDarkModeEnabled={
726 this.props.stores.settings.app.adaptableDarkMode 738 this.props.stores.settings.app.adaptableDarkMode
727 } 739 }
740 isSplitModeEnabled={this.props.stores.settings.app.splitMode}
728 isTodosActivated={this.props.stores.todos.isFeatureEnabledByUser} 741 isTodosActivated={this.props.stores.todos.isFeatureEnabledByUser}
729 isUsingCustomTodoService={ 742 isUsingCustomTodoService={
730 this.props.stores.todos.isUsingCustomTodoService 743 this.props.stores.todos.isUsingCustomTodoService
@@ -738,7 +751,7 @@ class EditSettingsScreen extends Component {
738 } 751 }
739} 752}
740 753
741EditSettingsScreen.wrappedComponent.propTypes = { 754EditSettingsScreen.propTypes = {
742 stores: PropTypes.shape({ 755 stores: PropTypes.shape({
743 app: PropTypes.instanceOf(AppStore).isRequired, 756 app: PropTypes.instanceOf(AppStore).isRequired,
744 user: PropTypes.instanceOf(UserStore).isRequired, 757 user: PropTypes.instanceOf(UserStore).isRequired,
@@ -756,4 +769,6 @@ EditSettingsScreen.wrappedComponent.propTypes = {
756 }).isRequired, 769 }).isRequired,
757}; 770};
758 771
759export default injectIntl(EditSettingsScreen); 772export default injectIntl(
773 inject('stores', 'actions')(observer(EditSettingsScreen)),
774);
diff --git a/src/containers/settings/EditUserScreen.js b/src/containers/settings/EditUserScreen.js
index 1dc0aa8e6..baa2d7b71 100644
--- a/src/containers/settings/EditUserScreen.js
+++ b/src/containers/settings/EditUserScreen.js
@@ -49,8 +49,6 @@ const messages = defineMessages({
49 }, 49 },
50}); 50});
51 51
52@inject('stores', 'actions')
53@observer
54class EditUserScreen extends Component { 52class EditUserScreen extends Component {
55 componentWillUnmount() { 53 componentWillUnmount() {
56 this.props.actions.user.resetStatus(); 54 this.props.actions.user.resetStatus();
@@ -150,7 +148,7 @@ class EditUserScreen extends Component {
150 } 148 }
151} 149}
152 150
153EditUserScreen.wrappedComponent.propTypes = { 151EditUserScreen.propTypes = {
154 stores: PropTypes.shape({ 152 stores: PropTypes.shape({
155 user: PropTypes.instanceOf(UserStore).isRequired, 153 user: PropTypes.instanceOf(UserStore).isRequired,
156 }).isRequired, 154 }).isRequired,
@@ -159,4 +157,6 @@ EditUserScreen.wrappedComponent.propTypes = {
159 }).isRequired, 157 }).isRequired,
160}; 158};
161 159
162export default injectIntl(EditUserScreen); 160export default injectIntl(
161 inject('stores', 'actions')(observer(EditUserScreen)),
162);
diff --git a/src/containers/settings/InviteScreen.js b/src/containers/settings/InviteScreen.js
index 592b4b11c..86723554c 100644
--- a/src/containers/settings/InviteScreen.js
+++ b/src/containers/settings/InviteScreen.js
@@ -6,8 +6,6 @@ import Invite from '../../components/auth/Invite';
6import ErrorBoundary from '../../components/util/ErrorBoundary'; 6import ErrorBoundary from '../../components/util/ErrorBoundary';
7import UserStore from '../../stores/UserStore'; 7import UserStore from '../../stores/UserStore';
8 8
9@inject('stores', 'actions')
10@observer
11class InviteScreen extends Component { 9class InviteScreen extends Component {
12 componentWillUnmount() { 10 componentWillUnmount() {
13 this.props.stores.user.inviteRequest.reset(); 11 this.props.stores.user.inviteRequest.reset();
@@ -32,7 +30,7 @@ class InviteScreen extends Component {
32 } 30 }
33} 31}
34 32
35InviteScreen.wrappedComponent.propTypes = { 33InviteScreen.propTypes = {
36 actions: PropTypes.shape({ 34 actions: PropTypes.shape({
37 user: PropTypes.instanceOf(UserStore).isRequired, 35 user: PropTypes.instanceOf(UserStore).isRequired,
38 }).isRequired, 36 }).isRequired,
@@ -41,4 +39,4 @@ InviteScreen.wrappedComponent.propTypes = {
41 }).isRequired, 39 }).isRequired,
42}; 40};
43 41
44export default InviteScreen; 42export default inject('stores', 'actions')(observer(InviteScreen));
diff --git a/src/containers/settings/RecipesScreen.js b/src/containers/settings/RecipesScreen.js
index 7f55e54c5..6b629d3d8 100644
--- a/src/containers/settings/RecipesScreen.js
+++ b/src/containers/settings/RecipesScreen.js
@@ -19,8 +19,6 @@ import RecipePreview from '../../models/RecipePreview';
19import AppStore from '../../stores/AppStore'; 19import AppStore from '../../stores/AppStore';
20import { openPath } from '../../helpers/url-helpers'; 20import { openPath } from '../../helpers/url-helpers';
21 21
22@inject('stores', 'actions')
23@observer
24class RecipesScreen extends Component { 22class RecipesScreen extends Component {
25 static propTypes = { 23 static propTypes = {
26 params: PropTypes.shape({ 24 params: PropTypes.shape({
@@ -182,7 +180,7 @@ class RecipesScreen extends Component {
182 } 180 }
183} 181}
184 182
185RecipesScreen.wrappedComponent.propTypes = { 183RecipesScreen.propTypes = {
186 stores: PropTypes.shape({ 184 stores: PropTypes.shape({
187 recipePreviews: PropTypes.instanceOf(RecipePreviewsStore).isRequired, 185 recipePreviews: PropTypes.instanceOf(RecipePreviewsStore).isRequired,
188 recipes: PropTypes.instanceOf(RecipeStore).isRequired, 186 recipes: PropTypes.instanceOf(RecipeStore).isRequired,
@@ -198,4 +196,4 @@ RecipesScreen.wrappedComponent.propTypes = {
198 }).isRequired, 196 }).isRequired,
199}; 197};
200 198
201export default RecipesScreen; 199export default inject('stores', 'actions')(observer(RecipesScreen));
diff --git a/src/containers/settings/ServicesScreen.js b/src/containers/settings/ServicesScreen.js
index a657b6e6c..2970b2a54 100644
--- a/src/containers/settings/ServicesScreen.js
+++ b/src/containers/settings/ServicesScreen.js
@@ -10,8 +10,6 @@ import ServiceStore from '../../stores/ServicesStore';
10import ServicesDashboard from '../../components/settings/services/ServicesDashboard'; 10import ServicesDashboard from '../../components/settings/services/ServicesDashboard';
11import ErrorBoundary from '../../components/util/ErrorBoundary'; 11import ErrorBoundary from '../../components/util/ErrorBoundary';
12 12
13@inject('stores', 'actions')
14@observer
15class ServicesScreen extends Component { 13class ServicesScreen extends Component {
16 componentWillUnmount() { 14 componentWillUnmount() {
17 this.props.actions.service.resetFilter(); 15 this.props.actions.service.resetFilter();
@@ -57,7 +55,7 @@ class ServicesScreen extends Component {
57 } 55 }
58} 56}
59 57
60ServicesScreen.wrappedComponent.propTypes = { 58ServicesScreen.propTypes = {
61 stores: PropTypes.shape({ 59 stores: PropTypes.shape({
62 user: PropTypes.instanceOf(UserStore).isRequired, 60 user: PropTypes.instanceOf(UserStore).isRequired,
63 services: PropTypes.instanceOf(ServiceStore).isRequired, 61 services: PropTypes.instanceOf(ServiceStore).isRequired,
@@ -68,4 +66,4 @@ ServicesScreen.wrappedComponent.propTypes = {
68 }).isRequired, 66 }).isRequired,
69}; 67};
70 68
71export default ServicesScreen; 69export default inject('stores', 'actions')(observer(ServicesScreen));
diff --git a/src/containers/settings/SettingsWindow.js b/src/containers/settings/SettingsWindow.js
index 35db3a434..0e6ce4df3 100644
--- a/src/containers/settings/SettingsWindow.js
+++ b/src/containers/settings/SettingsWindow.js
@@ -11,8 +11,6 @@ import ErrorBoundary from '../../components/util/ErrorBoundary';
11import { workspaceStore } from '../../features/workspaces'; 11import { workspaceStore } from '../../features/workspaces';
12import UIStore from '../../stores/UIStore'; 12import UIStore from '../../stores/UIStore';
13 13
14@inject('stores', 'actions')
15@observer
16class SettingsContainer extends Component { 14class SettingsContainer extends Component {
17 portalRoot = document.querySelector('#portalContainer'); 15 portalRoot = document.querySelector('#portalContainer');
18 16
@@ -48,7 +46,7 @@ class SettingsContainer extends Component {
48 } 46 }
49} 47}
50 48
51SettingsContainer.wrappedComponent.propTypes = { 49SettingsContainer.propTypes = {
52 children: PropTypes.element.isRequired, 50 children: PropTypes.element.isRequired,
53 stores: PropTypes.shape({ 51 stores: PropTypes.shape({
54 services: PropTypes.instanceOf(ServicesStore).isRequired, 52 services: PropTypes.instanceOf(ServicesStore).isRequired,
@@ -58,4 +56,4 @@ SettingsContainer.wrappedComponent.propTypes = {
58 }).isRequired, 56 }).isRequired,
59}; 57};
60 58
61export default SettingsContainer; 59export default inject('stores', 'actions')(observer(SettingsContainer));
diff --git a/src/containers/settings/SupportScreen.js b/src/containers/settings/SupportScreen.js
index d3600f8ea..b4ad952b2 100644
--- a/src/containers/settings/SupportScreen.js
+++ b/src/containers/settings/SupportScreen.js
@@ -6,7 +6,6 @@ import SupportFerdi from '../../components/settings/supportFerdi/SupportFerdiDas
6import ErrorBoundary from '../../components/util/ErrorBoundary'; 6import ErrorBoundary from '../../components/util/ErrorBoundary';
7import AppStore from '../../stores/AppStore'; 7import AppStore from '../../stores/AppStore';
8 8
9@inject('actions')
10class SupportScreen extends Component { 9class SupportScreen extends Component {
11 constructor(props) { 10 constructor(props) {
12 super(props); 11 super(props);
@@ -27,10 +26,10 @@ class SupportScreen extends Component {
27 } 26 }
28} 27}
29 28
30SupportScreen.wrappedComponent.propTypes = { 29SupportScreen.propTypes = {
31 actions: PropTypes.shape({ 30 actions: PropTypes.shape({
32 app: PropTypes.instanceOf(AppStore).isRequired, 31 app: PropTypes.instanceOf(AppStore).isRequired,
33 }).isRequired, 32 }).isRequired,
34}; 33};
35 34
36export default SupportScreen; 35export default inject('actions')(SupportScreen);
diff --git a/src/containers/settings/TeamScreen.js b/src/containers/settings/TeamScreen.js
index 928262a59..0a8b92b47 100644
--- a/src/containers/settings/TeamScreen.js
+++ b/src/containers/settings/TeamScreen.js
@@ -10,8 +10,6 @@ import TeamDashboard from '../../components/settings/team/TeamDashboard';
10import ErrorBoundary from '../../components/util/ErrorBoundary'; 10import ErrorBoundary from '../../components/util/ErrorBoundary';
11import { DEV_API_FRANZ_WEBSITE } from '../../config'; 11import { DEV_API_FRANZ_WEBSITE } from '../../config';
12 12
13@inject('stores', 'actions')
14@observer
15class TeamScreen extends Component { 13class TeamScreen extends Component {
16 handleWebsiteLink(route) { 14 handleWebsiteLink(route) {
17 const { actions, stores } = this.props; 15 const { actions, stores } = this.props;
@@ -44,7 +42,7 @@ class TeamScreen extends Component {
44 } 42 }
45} 43}
46 44
47TeamScreen.wrappedComponent.propTypes = { 45TeamScreen.propTypes = {
48 stores: PropTypes.shape({ 46 stores: PropTypes.shape({
49 user: PropTypes.instanceOf(UserStore).isRequired, 47 user: PropTypes.instanceOf(UserStore).isRequired,
50 app: PropTypes.instanceOf(AppStore).isRequired, 48 app: PropTypes.instanceOf(AppStore).isRequired,
@@ -56,4 +54,4 @@ TeamScreen.wrappedComponent.propTypes = {
56 }).isRequired, 54 }).isRequired,
57}; 55};
58 56
59export default TeamScreen; 57export default inject('stores', 'actions')(observer(TeamScreen));
diff --git a/src/electron/ipc-api/download.ts b/src/electron/ipc-api/download.ts
index af15b157e..95f211e52 100644
--- a/src/electron/ipc-api/download.ts
+++ b/src/electron/ipc-api/download.ts
@@ -48,7 +48,7 @@ export default (params: { mainWindow: BrowserWindow }) => {
48 48
49 debug('File blob saved to', saveDialog.filePath); 49 debug('File blob saved to', saveDialog.filePath);
50 } catch (error) { 50 } catch (error) {
51 console.log(error); 51 console.error(error);
52 } 52 }
53 } 53 }
54 } catch (error) { 54 } catch (error) {
diff --git a/src/features/appearance/index.ts b/src/features/appearance/index.ts
index 21c9554ed..122fa2411 100644
--- a/src/features/appearance/index.ts
+++ b/src/features/appearance/index.ts
@@ -38,7 +38,6 @@ function generateAccentStyle(accentColorStr) {
38 .theme__dark .app .sidebar .sidebar__button.is-active, 38 .theme__dark .app .sidebar .sidebar__button.is-active,
39 .sidebar .sidebar__button.is-muted, 39 .sidebar .sidebar__button.is-muted,
40 .sidebar .sidebar__button.is-active, 40 .sidebar .sidebar__button.is-active,
41 .tab-item.is-active,
42 .settings .account .invoices .invoices__action button, 41 .settings .account .invoices .invoices__action button,
43 .settings-navigation .settings-navigation__link.is-active .badge, 42 .settings-navigation .settings-navigation__link.is-active .badge,
44 a.link, 43 a.link,
@@ -56,12 +55,10 @@ function generateAccentStyle(accentColorStr) {
56 .settings-navigation .settings-navigation__link.is-active, 55 .settings-navigation .settings-navigation__link.is-active,
57 a.button, 56 a.button,
58 button.button, 57 button.button,
59 .auth,
60 .info-bar, 58 .info-bar,
61 .info-bar.info-bar--primary, 59 .info-bar.info-bar--primary,
62 .infobox.infobox--primary, 60 .infobox.infobox--primary,
63 .theme__dark .badge.badge--primary, 61 .theme__dark .badge.badge--primary,
64 .theme__dark,
65 .badge.badge--primary, 62 .badge.badge--primary,
66 .content-tabs .content-tabs__tabs .content-tabs__item.is-active, 63 .content-tabs .content-tabs__tabs .content-tabs__item.is-active,
67 #electron-app-title-bar .toolbar-dropdown:not(.open) > .toolbar-button > button:hover, 64 #electron-app-title-bar .toolbar-dropdown:not(.open) > .toolbar-button > button:hover,
@@ -80,7 +77,7 @@ function generateAccentStyle(accentColorStr) {
80 border-right-color: ${accentColorStr}; 77 border-right-color: ${accentColorStr};
81 } 78 }
82 79
83 .franz-form .franz-form__radio.is-selected { 80 .franz-form .franz-form__radio.is-selected, .tab-item.is-active {
84 border-color: ${accentColorStr}; 81 border-color: ${accentColorStr};
85 } 82 }
86 83
@@ -109,12 +106,17 @@ function generateAccentStyle(accentColorStr) {
109 } 106 }
110 107
111 .tab-item.is-active { 108 .tab-item.is-active {
112 background: ${accentColor.lighten(0.35).hex()}; 109 background: ${accentColor.lightness(90).hex()};
113 } 110 }
114 `; 111 `;
115} 112}
116 113
117function generateServiceRibbonWidthStyle(widthStr, iconSizeStr, vertical, isLabelEnabled) { 114function generateServiceRibbonWidthStyle(
115 widthStr,
116 iconSizeStr,
117 vertical,
118 isLabelEnabled,
119) {
118 const width = Number(widthStr); 120 const width = Number(widthStr);
119 const iconSize = Number(iconSizeStr) - iconSizeBias; 121 const iconSize = Number(iconSizeStr) - iconSizeBias;
120 let fontSize = 11; 122 let fontSize = 11;
@@ -122,33 +124,33 @@ function generateServiceRibbonWidthStyle(widthStr, iconSizeStr, vertical, isLabe
122 let sidebarSizeBias = 22; 124 let sidebarSizeBias = 22;
123 const tabItemWidthBias = 2; 125 const tabItemWidthBias = 2;
124 126
125 switch(width){ 127 switch (width) {
126 case (35): 128 case 35:
127 fontSize = 9; 129 fontSize = 9;
128 tabItemHeightBias = 25; 130 tabItemHeightBias = 25;
129 sidebarSizeBias = 48; 131 sidebarSizeBias = 48;
130 break; 132 break;
131 case (45): 133 case 45:
132 fontSize = 10; 134 fontSize = 10;
133 tabItemHeightBias = 21; 135 tabItemHeightBias = 21;
134 sidebarSizeBias = 44; 136 sidebarSizeBias = 44;
135 break; 137 break;
136 case (55): 138 case 55:
137 fontSize = 11; 139 fontSize = 11;
138 tabItemHeightBias = 13; 140 tabItemHeightBias = 13;
139 sidebarSizeBias = 37; 141 sidebarSizeBias = 37;
140 break; 142 break;
141 case (80): 143 case 80:
142 fontSize = 11; 144 fontSize = 11;
143 tabItemHeightBias = 3; 145 tabItemHeightBias = 3;
144 sidebarSizeBias = 27; 146 sidebarSizeBias = 27;
145 break; 147 break;
146 case (90): 148 case 90:
147 fontSize = 12; 149 fontSize = 12;
148 tabItemHeightBias = 0; 150 tabItemHeightBias = 0;
149 sidebarSizeBias = 25; 151 sidebarSizeBias = 25;
150 break; 152 break;
151 case (100): 153 case 100:
152 fontSize = 13; 154 fontSize = 13;
153 tabItemHeightBias = 2; 155 tabItemHeightBias = 2;
154 sidebarSizeBias = 25; 156 sidebarSizeBias = 25;
@@ -159,11 +161,14 @@ function generateServiceRibbonWidthStyle(widthStr, iconSizeStr, vertical, isLabe
159 sidebarSizeBias = 37; 161 sidebarSizeBias = 37;
160 } 162 }
161 163
162 if(!isLabelEnabled){ 164 if (!isLabelEnabled) {
163 sidebarSizeBias = 22; 165 sidebarSizeBias = 22;
164 tabItemHeightBias = -5; 166 tabItemHeightBias = -5;
165 } 167 }
166 168
169 // Due to the lowest values for SIDEBAR_WIDTH and ICON_SIZES, this can be computed to a negative value
170 const minimumAdjustedIconSize = Math.max(width / 2 + iconSize, 2);
171
167 return vertical 172 return vertical
168 ? ` 173 ? `
169 .sidebar { 174 .sidebar {
@@ -171,13 +176,13 @@ function generateServiceRibbonWidthStyle(widthStr, iconSizeStr, vertical, isLabe
171 overflow: hidden !important; 176 overflow: hidden !important;
172 } 177 }
173 .tab-item { 178 .tab-item {
174 width: ${width - tabItemWidthBias}px !important; 179 height: ${width - tabItemWidthBias}px !important;
175 height: ${width + iconSize + tabItemHeightBias}px !important; 180 width: ${width + iconSize + tabItemHeightBias}px !important;
176 min-height: unset; 181 min-height: unset;
177 overflow: hidden !important; 182 overflow: hidden !important;
178 } 183 }
179 .tab-item .tab-item__icon { 184 .tab-item .tab-item__icon {
180 width: ${width / 2 + iconSize}px !important; 185 width: ${minimumAdjustedIconSize}px !important;
181 } 186 }
182 .sidebar__button { 187 .sidebar__button {
183 font-size: ${width / 3}px !important; 188 font-size: ${width / 3}px !important;
@@ -210,7 +215,7 @@ function generateServiceRibbonWidthStyle(widthStr, iconSizeStr, vertical, isLabe
210 height: min-content !important; 215 height: min-content !important;
211 } 216 }
212 .tab-item .tab-item__icon { 217 .tab-item .tab-item__icon {
213 width: ${width / 2 + iconSize}px !important; 218 width: ${minimumAdjustedIconSize}px !important;
214 } 219 }
215 .sidebar__button { 220 .sidebar__button {
216 font-size: ${width / 3}px !important; 221 font-size: ${width / 3}px !important;
@@ -314,7 +319,7 @@ function generateStyle(settings) {
314 serviceRibbonWidth, 319 serviceRibbonWidth,
315 iconSize, 320 iconSize,
316 useVerticalStyle, 321 useVerticalStyle,
317 showServiceName 322 showServiceName,
318 ); 323 );
319 } 324 }
320 if (showDragArea) { 325 if (showDragArea) {
diff --git a/src/features/basicAuth/Component.js b/src/features/basicAuth/Component.js
index 652233e55..89b0a4e72 100644
--- a/src/features/basicAuth/Component.js
+++ b/src/features/basicAuth/Component.js
@@ -22,8 +22,6 @@ const messages = defineMessages({
22 }, 22 },
23}); 23});
24 24
25@injectSheet(styles)
26@observer
27class BasicAuthModal extends Component { 25class BasicAuthModal extends Component {
28 static propTypes = { 26 static propTypes = {
29 classes: PropTypes.object.isRequired, 27 classes: PropTypes.object.isRequired,
@@ -97,4 +95,6 @@ class BasicAuthModal extends Component {
97 ); 95 );
98 } 96 }
99} 97}
100export default injectIntl(BasicAuthModal); 98export default injectIntl(
99 injectSheet(styles, { injectTheme: true })(observer(BasicAuthModal)),
100);
diff --git a/src/features/basicAuth/index.ts b/src/features/basicAuth/index.ts
index 149ab6c19..8e8fa186c 100644
--- a/src/features/basicAuth/index.ts
+++ b/src/features/basicAuth/index.ts
@@ -1,7 +1,5 @@
1import { AuthInfo, BrowserWindow, ipcRenderer } from 'electron'; 1import { AuthInfo, BrowserWindow, ipcRenderer } from 'electron';
2 2
3import BasicAuthComponent from './Component';
4
5import { state as ModalState } from './store'; 3import { state as ModalState } from './store';
6 4
7const debug = require('debug')('Ferdi:feature:basicAuth'); 5const debug = require('debug')('Ferdi:feature:basicAuth');
@@ -31,4 +29,4 @@ export function mainIpcHandler(mainWindow: BrowserWindow, authInfo: AuthInfo) {
31 }); 29 });
32} 30}
33 31
34export const Component = BasicAuthComponent; 32export { default as Component } from './Component';
diff --git a/src/features/communityRecipes/store.ts b/src/features/communityRecipes/store.ts
index a8d358ba0..c7a51c311 100644
--- a/src/features/communityRecipes/store.ts
+++ b/src/features/communityRecipes/store.ts
@@ -26,7 +26,7 @@ export class CommunityRecipesStore extends FeatureStore {
26 (recipePreview: { isDevRecipe: boolean; author: any[] }) => { 26 (recipePreview: { isDevRecipe: boolean; author: any[] }) => {
27 // TODO: Need to figure out if this is even necessary/used 27 // TODO: Need to figure out if this is even necessary/used
28 recipePreview.isDevRecipe = !!recipePreview.author.some( 28 recipePreview.isDevRecipe = !!recipePreview.author.some(
29 (author: { email: any }) => 29 (author: { email: string }) =>
30 author.email === this.stores.user.data.email, 30 author.email === this.stores.user.data.email,
31 ); 31 );
32 32
diff --git a/src/features/nightlyBuilds/Component.js b/src/features/nightlyBuilds/Component.js
index 64f782c8f..216e35f65 100644
--- a/src/features/nightlyBuilds/Component.js
+++ b/src/features/nightlyBuilds/Component.js
@@ -29,14 +29,20 @@ const messages = defineMessages({
29 }, 29 },
30}); 30});
31 31
32const styles = () => ({ 32const styles = theme => ({
33 modal: {
34 width: '80%',
35 maxWidth: 600,
36 background: theme.styleTypes.primary.contrast,
37 paddingTop: 30,
38 },
33 info: { 39 info: {
34 paddingTop: 20,
35 paddingBottom: 20, 40 paddingBottom: 20,
36 }, 41 },
37 headline: { 42 headline: {
38 fontSize: 20, 43 fontSize: 20,
39 marginBottom: 20, 44 marginBottom: 20,
45 marginTop: -27,
40 }, 46 },
41 buttonContainer: { 47 buttonContainer: {
42 display: 'flex', 48 display: 'flex',
@@ -53,9 +59,6 @@ const styles = () => ({
53 }, 59 },
54}); 60});
55 61
56@injectSheet(styles)
57@inject('stores', 'actions')
58@observer
59class NightlyBuildsModal extends Component { 62class NightlyBuildsModal extends Component {
60 close() { 63 close() {
61 ModalState.isModalVisible = false; 64 ModalState.isModalVisible = false;
@@ -91,6 +94,7 @@ class NightlyBuildsModal extends Component {
91 return ( 94 return (
92 <Modal 95 <Modal
93 isOpen={isModalVisible} 96 isOpen={isModalVisible}
97 className={`${classes.modal} nightly-builds`}
94 shouldCloseOnOverlayClick 98 shouldCloseOnOverlayClick
95 close={this.close.bind(this)} 99 close={this.close.bind(this)}
96 > 100 >
@@ -119,7 +123,7 @@ class NightlyBuildsModal extends Component {
119 } 123 }
120} 124}
121 125
122NightlyBuildsModal.wrappedComponent.propTypes = { 126NightlyBuildsModal.propTypes = {
123 stores: PropTypes.shape({ 127 stores: PropTypes.shape({
124 settings: PropTypes.instanceOf(SettingsStore).isRequired, 128 settings: PropTypes.instanceOf(SettingsStore).isRequired,
125 }).isRequired, 129 }).isRequired,
@@ -131,4 +135,8 @@ NightlyBuildsModal.wrappedComponent.propTypes = {
131 classes: PropTypes.object.isRequired, 135 classes: PropTypes.object.isRequired,
132}; 136};
133 137
134export default injectIntl(NightlyBuildsModal); 138export default injectIntl(
139 injectSheet(styles)(
140 inject('stores', 'actions')(observer(NightlyBuildsModal)),
141 ),
142);
diff --git a/src/features/publishDebugInfo/Component.js b/src/features/publishDebugInfo/Component.js
index 30bdc13b6..2b9af01a7 100644
--- a/src/features/publishDebugInfo/Component.js
+++ b/src/features/publishDebugInfo/Component.js
@@ -8,7 +8,7 @@ import { state as ModalState } from './store';
8import { H1 } from '../../components/ui/headline'; 8import { H1 } from '../../components/ui/headline';
9import { sendAuthRequest } from '../../api/utils/auth'; 9import { sendAuthRequest } from '../../api/utils/auth';
10import Button from '../../components/ui/Button'; 10import Button from '../../components/ui/Button';
11import Input from '../../components/ui/Input'; 11import { Input } from '../../components/ui/input/index';
12import Modal from '../../components/ui/Modal'; 12import Modal from '../../components/ui/Modal';
13import { DEBUG_API } from '../../config'; 13import { DEBUG_API } from '../../config';
14import AppStore from '../../stores/AppStore'; 14import AppStore from '../../stores/AppStore';
@@ -50,11 +50,18 @@ const messages = defineMessages({
50}); 50});
51 51
52const styles = theme => ({ 52const styles = theme => ({
53 container: { 53 modal: {
54 minWidth: '70vw', 54 width: '80%',
55 maxWidth: 600,
56 background: theme.styleTypes.primary.contrast,
57 paddingTop: 30,
58 },
59 headline: {
60 fontSize: 20,
61 marginBottom: 20,
62 marginTop: -27,
55 }, 63 },
56 info: { 64 info: {
57 paddingTop: 20,
58 paddingBottom: 20, 65 paddingBottom: 20,
59 }, 66 },
60 link: { 67 link: {
@@ -67,32 +74,9 @@ const styles = theme => ({
67 marginTop: 10, 74 marginTop: 10,
68 cursor: 'pointer', 75 cursor: 'pointer',
69 }, 76 },
70 url: {
71 marginTop: 20,
72 width: '100%',
73
74 '& div': {
75 fontFamily:
76 'SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace',
77 },
78
79 '& input': {
80 width: '100%',
81 padding: 15,
82 borderRadius: 6,
83 border: `solid 1px ${theme.styleTypes.primary.accent}`,
84 },
85 },
86}); 77});
87 78
88@injectSheet(styles)
89@inject('stores', 'actions')
90@observer
91class PublishDebugLogModal extends Component { 79class PublishDebugLogModal extends Component {
92 static propTypes = {
93 classes: PropTypes.object.isRequired,
94 };
95
96 state = { 80 state = {
97 log: null, 81 log: null,
98 error: false, 82 error: false,
@@ -102,6 +86,11 @@ class PublishDebugLogModal extends Component {
102 // Close this modal 86 // Close this modal
103 close() { 87 close() {
104 ModalState.isModalVisible = false; 88 ModalState.isModalVisible = false;
89 this.setState({
90 log: null,
91 error: false,
92 isSendingLog: false
93 });
105 } 94 }
106 95
107 async publishDebugInfo() { 96 async publishDebugInfo() {
@@ -157,77 +146,76 @@ class PublishDebugLogModal extends Component {
157 <Modal 146 <Modal
158 isOpen={isModalVisible} 147 isOpen={isModalVisible}
159 shouldCloseOnOverlayClick 148 shouldCloseOnOverlayClick
149 className={`${classes.modal} publish-debug`}
160 close={() => this.close()} 150 close={() => this.close()}
161 > 151 >
162 <div className={classes.container}> 152 <H1 className={classes.headline}>{intl.formatMessage(messages.title)}</H1>
163 <H1>{intl.formatMessage(messages.title)}</H1> 153 {log && (
164 {log && ( 154 <>
165 <> 155 <p className={classes.info}>
166 <p className={classes.info}> 156 {intl.formatMessage(messages.published)}
167 {intl.formatMessage(messages.published)} 157 </p>
168 </p> 158 <Input
169 <Input 159 showLabel={false}
170 className={classes.url} 160 value={`${DEBUG_API}/${log}`}
171 showLabel={false} 161 readonly
172 field={{ 162 />
173 type: 'url', 163 </>
174 value: `${DEBUG_API}/${log}`, 164 )}
175 disabled: true, 165
176 }} 166 {error && (
177 readonly 167 <p className={classes.info}>{intl.formatMessage(messages.error)}</p>
178 /> 168 )}
179 </> 169
180 )} 170 {!log && !error && (
181 171 <>
182 {error && ( 172 <p className={classes.info}>
183 <p className={classes.info}>{intl.formatMessage(messages.error)}</p> 173 {intl.formatMessage(messages.info)}
184 )} 174 </p>
185 175
186 {!log && !error && ( 176 <a
187 <> 177 href={`${DEBUG_API}/privacy.html`}
188 <p className={classes.info}> 178 target="_blank"
189 {intl.formatMessage(messages.info)} 179 className={classes.link}
190 </p> 180 rel="noreferrer"
191 181 >
192 <a 182 {intl.formatMessage(messages.privacy)}
193 href={`${DEBUG_API}/privacy.html`} 183 </a>
194 target="_blank" 184 <a
195 className={classes.link} 185 href={`${DEBUG_API}/terms.html`}
196 rel="noreferrer" 186 target="_blank"
197 > 187 className={classes.link}
198 {intl.formatMessage(messages.privacy)} 188 rel="noreferrer"
199 </a> 189 >
200 <a 190 {intl.formatMessage(messages.terms)}
201 href={`${DEBUG_API}/terms.html`} 191 </a>
202 target="_blank" 192
203 className={classes.link} 193 <Button
204 rel="noreferrer" 194 type="button"
205 > 195 label={intl.formatMessage(messages.publish)}
206 {intl.formatMessage(messages.terms)} 196 className={classes.button}
207 </a> 197 onClick={() => this.publishDebugInfo()}
208 198 disabled={isSendingLog}
209 <Button 199 />
210 type="button" 200 </>
211 label={intl.formatMessage(messages.publish)} 201 )}
212 className={classes.button}
213 onClick={() => this.publishDebugInfo()}
214 disabled={isSendingLog}
215 />
216 </>
217 )}
218 </div>
219 </Modal> 202 </Modal>
220 ); 203 );
221 } 204 }
222} 205}
223 206
224PublishDebugLogModal.wrappedComponent.propTypes = { 207PublishDebugLogModal.propTypes = {
225 stores: PropTypes.shape({ 208 stores: PropTypes.shape({
226 app: PropTypes.instanceOf(AppStore).isRequired, 209 app: PropTypes.instanceOf(AppStore).isRequired,
227 }).isRequired, 210 }).isRequired,
228 actions: PropTypes.shape({ 211 actions: PropTypes.shape({
229 service: PropTypes.instanceOf(ServicesStore).isRequired, 212 service: PropTypes.instanceOf(ServicesStore).isRequired,
230 }).isRequired, 213 }).isRequired,
214 classes: PropTypes.object.isRequired,
231}; 215};
232 216
233export default injectIntl(PublishDebugLogModal); 217export default injectIntl(
218 injectSheet(styles, { injectTheme: true })(
219 inject('stores', 'actions')(observer(PublishDebugLogModal)),
220 ),
221);
diff --git a/src/features/publishDebugInfo/index.js b/src/features/publishDebugInfo/index.ts
index 43841b530..43841b530 100644
--- a/src/features/publishDebugInfo/index.js
+++ b/src/features/publishDebugInfo/index.ts
diff --git a/src/features/quickSwitch/Component.js b/src/features/quickSwitch/Component.js
index d5cb9179f..9e66c444d 100644
--- a/src/features/quickSwitch/Component.js
+++ b/src/features/quickSwitch/Component.js
@@ -34,7 +34,6 @@ const styles = theme => ({
34 width: '80%', 34 width: '80%',
35 maxWidth: 600, 35 maxWidth: 600,
36 background: theme.styleTypes.primary.contrast, 36 background: theme.styleTypes.primary.contrast,
37 color: theme.styleTypes.primary.accent,
38 paddingTop: 30, 37 paddingTop: 30,
39 }, 38 },
40 headline: { 39 headline: {
@@ -51,9 +50,6 @@ const styles = theme => ({
51 service: { 50 service: {
52 background: theme.styleTypes.primary.contrast, 51 background: theme.styleTypes.primary.contrast,
53 color: theme.colorText, 52 color: theme.colorText,
54 borderColor: theme.styleTypes.primary.accent,
55 borderStyle: 'solid',
56 borderWidth: 1,
57 borderRadius: 6, 53 borderRadius: 6,
58 padding: '3px 25px', 54 padding: '3px 25px',
59 marginBottom: 10, 55 marginBottom: 10,
@@ -63,13 +59,11 @@ const styles = theme => ({
63 marginBottom: 0, 59 marginBottom: 0,
64 }, 60 },
65 '&:hover': { 61 '&:hover': {
66 background: theme.styleTypes.primary.accent,
67 color: theme.styleTypes.primary.contrast,
68 cursor: 'pointer', 62 cursor: 'pointer',
69 }, 63 },
70 }, 64 },
71 activeService: { 65 activeService: {
72 background: theme.styleTypes.primary.accent, 66 background: `${theme.styleTypes.primary.accent} !important`,
73 color: theme.styleTypes.primary.contrast, 67 color: theme.styleTypes.primary.contrast,
74 cursor: 'pointer', 68 cursor: 'pointer',
75 }, 69 },
@@ -81,9 +75,6 @@ const styles = theme => ({
81 }, 75 },
82}); 76});
83 77
84@injectSheet(styles)
85@inject('stores', 'actions')
86@observer
87class QuickSwitchModal extends Component { 78class QuickSwitchModal extends Component {
88 static propTypes = { 79 static propTypes = {
89 classes: PropTypes.object.isRequired, 80 classes: PropTypes.object.isRequired,
@@ -99,8 +90,6 @@ class QuickSwitchModal extends Component {
99 90
100 ARROW_UP = 38; 91 ARROW_UP = 38;
101 92
102 SHIFT = 16;
103
104 ENTER = 13; 93 ENTER = 13;
105 94
106 TAB = 9; 95 TAB = 9;
@@ -149,7 +138,7 @@ class QuickSwitchModal extends Component {
149 service.name.toLowerCase().search(this.state.search.toLowerCase()) !== 138 service.name.toLowerCase().search(this.state.search.toLowerCase()) !==
150 -1, 139 -1,
151 ); 140 );
152 } else { 141 } else if (this.props.stores.services.allDisplayed.length > 0) {
153 // Add the currently active service first 142 // Add the currently active service first
154 const currentService = this.props.stores.services.active; 143 const currentService = this.props.stores.services.active;
155 if (currentService) { 144 if (currentService) {
@@ -351,13 +340,18 @@ class QuickSwitchModal extends Component {
351 } 340 }
352} 341}
353 342
354QuickSwitchModal.wrappedComponent.propTypes = { 343QuickSwitchModal.propTypes = {
355 stores: PropTypes.shape({ 344 stores: PropTypes.shape({
356 services: PropTypes.instanceOf(ServicesStore).isRequired, 345 services: PropTypes.instanceOf(ServicesStore).isRequired,
357 }).isRequired, 346 }).isRequired,
358 actions: PropTypes.shape({ 347 actions: PropTypes.shape({
359 service: PropTypes.instanceOf(ServicesStore).isRequired, 348 service: PropTypes.instanceOf(ServicesStore).isRequired,
360 }).isRequired, 349 }).isRequired,
350 classes: PropTypes.object.isRequired,
361}; 351};
362 352
363export default injectIntl(QuickSwitchModal); 353export default injectIntl(
354 injectSheet(styles, { injectTheme: true })(
355 inject('stores', 'actions')(observer(QuickSwitchModal)),
356 ),
357);
diff --git a/src/features/todos/components/TodosWebview.js b/src/features/todos/components/TodosWebview.js
index 1d423544b..780864b91 100644
--- a/src/features/todos/components/TodosWebview.js
+++ b/src/features/todos/components/TodosWebview.js
@@ -48,8 +48,6 @@ const styles = theme => ({
48 }, 48 },
49}); 49});
50 50
51@injectSheet(styles)
52@observer
53class TodosWebview extends Component { 51class TodosWebview extends Component {
54 static propTypes = { 52 static propTypes = {
55 classes: PropTypes.object.isRequired, 53 classes: PropTypes.object.isRequired,
@@ -128,7 +126,6 @@ class TodosWebview extends Component {
128 const { handleClientMessage } = this.props; 126 const { handleClientMessage } = this.props;
129 if (!this.webview) return; 127 if (!this.webview) return;
130 this.webview.addEventListener('ipc-message', e => { 128 this.webview.addEventListener('ipc-message', e => {
131 // console.log(e);
132 handleClientMessage({ channel: e.channel, message: e.args[0] }); 129 handleClientMessage({ channel: e.channel, message: e.args[0] });
133 }); 130 });
134 } 131 }
@@ -201,4 +198,6 @@ class TodosWebview extends Component {
201 } 198 }
202} 199}
203 200
204export default TodosWebview; 201export default injectSheet(styles, { injectTheme: true })(
202 observer(TodosWebview),
203);
diff --git a/src/features/todos/containers/TodosScreen.js b/src/features/todos/containers/TodosScreen.js
index 536810d2d..b97506767 100644
--- a/src/features/todos/containers/TodosScreen.js
+++ b/src/features/todos/containers/TodosScreen.js
@@ -10,8 +10,6 @@ import { TODOS_MIN_WIDTH } from '../../../config';
10import { todoActions } from '../actions'; 10import { todoActions } from '../actions';
11import ServicesStore from '../../../stores/ServicesStore'; 11import ServicesStore from '../../../stores/ServicesStore';
12 12
13@inject('stores', 'actions')
14@observer
15class TodosScreen extends Component { 13class TodosScreen extends Component {
16 render() { 14 render() {
17 if ( 15 if (
@@ -44,9 +42,9 @@ class TodosScreen extends Component {
44 } 42 }
45} 43}
46 44
47export default TodosScreen; 45export default inject('stores', 'actions')(observer(TodosScreen));
48 46
49TodosScreen.wrappedComponent.propTypes = { 47TodosScreen.propTypes = {
50 stores: PropTypes.shape({ 48 stores: PropTypes.shape({
51 features: PropTypes.instanceOf(FeaturesStore).isRequired, 49 features: PropTypes.instanceOf(FeaturesStore).isRequired,
52 services: PropTypes.instanceOf(ServicesStore).isRequired, 50 services: PropTypes.instanceOf(ServicesStore).isRequired,
diff --git a/src/features/todos/store.js b/src/features/todos/store.js
index d158ed480..2bf4e8fab 100644
--- a/src/features/todos/store.js
+++ b/src/features/todos/store.js
@@ -187,10 +187,6 @@ export default class TodoStore extends FeatureStore {
187 break; 187 break;
188 default: 188 default:
189 debug('Other message received', channel, message); 189 debug('Other message received', channel, message);
190 console.log(
191 'this.stores.services.isTodosServiceAdded',
192 this.stores.services.isTodosServiceAdded,
193 );
194 if (this.stores.services.isTodosServiceAdded) { 190 if (this.stores.services.isTodosServiceAdded) {
195 this.actions.service.handleIPCMessage({ 191 this.actions.service.handleIPCMessage({
196 serviceId: this.stores.services.isTodosServiceAdded.id, 192 serviceId: this.stores.services.isTodosServiceAdded.id,
diff --git a/src/features/webControls/components/WebControls.js b/src/features/webControls/components/WebControls.js
index 5650d4cd1..99d78eda0 100644
--- a/src/features/webControls/components/WebControls.js
+++ b/src/features/webControls/components/WebControls.js
@@ -94,8 +94,6 @@ const styles = theme => ({
94 }, 94 },
95}); 95});
96 96
97@injectSheet(styles)
98@observer
99class WebControls extends Component { 97class WebControls extends Component {
100 static propTypes = { 98 static propTypes = {
101 classes: PropTypes.object.isRequired, 99 classes: PropTypes.object.isRequired,
@@ -238,4 +236,6 @@ class WebControls extends Component {
238 } 236 }
239} 237}
240 238
241export default injectIntl(WebControls); 239export default injectIntl(
240 injectSheet(styles, { injectTheme: true })(observer(WebControls)),
241);
diff --git a/src/features/webControls/containers/WebControlsScreen.js b/src/features/webControls/containers/WebControlsScreen.js
index 6fba5db86..3dac6997c 100644
--- a/src/features/webControls/containers/WebControlsScreen.js
+++ b/src/features/webControls/containers/WebControlsScreen.js
@@ -16,8 +16,6 @@ const URL_EVENTS = [
16 'did-navigate-in-page', 16 'did-navigate-in-page',
17]; 17];
18 18
19@inject('stores', 'actions')
20@observer
21class WebControlsScreen extends Component { 19class WebControlsScreen extends Component {
22 @observable url = ''; 20 @observable url = '';
23 21
@@ -125,9 +123,9 @@ class WebControlsScreen extends Component {
125 } 123 }
126} 124}
127 125
128export default WebControlsScreen; 126export default inject('stores', 'actions')(observer(WebControlsScreen));
129 127
130WebControlsScreen.wrappedComponent.propTypes = { 128WebControlsScreen.propTypes = {
131 service: PropTypes.instanceOf(Service).isRequired, 129 service: PropTypes.instanceOf(Service).isRequired,
132 stores: PropTypes.shape({ 130 stores: PropTypes.shape({
133 services: PropTypes.instanceOf(ServicesStore).isRequired, 131 services: PropTypes.instanceOf(ServicesStore).isRequired,
diff --git a/src/features/workspaces/components/CreateWorkspaceForm.js b/src/features/workspaces/components/CreateWorkspaceForm.js
index 75f6d9f4a..898afb22e 100644
--- a/src/features/workspaces/components/CreateWorkspaceForm.js
+++ b/src/features/workspaces/components/CreateWorkspaceForm.js
@@ -21,7 +21,7 @@ const messages = defineMessages({
21 }, 21 },
22}); 22});
23 23
24const styles = () => ({ 24const styles = {
25 form: { 25 form: {
26 display: 'flex', 26 display: 'flex',
27 }, 27 },
@@ -32,10 +32,8 @@ const styles = () => ({
32 submitButton: { 32 submitButton: {
33 height: 'inherit', 33 height: 'inherit',
34 }, 34 },
35}); 35};
36 36
37@injectSheet(styles)
38@observer
39class CreateWorkspaceForm extends Component { 37class CreateWorkspaceForm extends Component {
40 static propTypes = { 38 static propTypes = {
41 classes: PropTypes.object.isRequired, 39 classes: PropTypes.object.isRequired,
@@ -82,7 +80,7 @@ class CreateWorkspaceForm extends Component {
82 focus={workspaceStore.isUserAllowedToUseFeature} 80 focus={workspaceStore.isUserAllowedToUseFeature}
83 /> 81 />
84 <Button 82 <Button
85 className={classes.submitButton} 83 className={`${classes.submitButton} franz-form__button`}
86 type="submit" 84 type="submit"
87 label={intl.formatMessage(messages.submitButton)} 85 label={intl.formatMessage(messages.submitButton)}
88 onClick={this.submitForm.bind(this, form)} 86 onClick={this.submitForm.bind(this, form)}
@@ -94,4 +92,6 @@ class CreateWorkspaceForm extends Component {
94 } 92 }
95} 93}
96 94
97export default injectIntl(CreateWorkspaceForm); 95export default injectIntl(
96 injectSheet(styles, { injectTheme: true })(observer(CreateWorkspaceForm)),
97);
diff --git a/src/features/workspaces/components/EditWorkspaceForm.js b/src/features/workspaces/components/EditWorkspaceForm.js
index fa3ea4289..26b3f83af 100644
--- a/src/features/workspaces/components/EditWorkspaceForm.js
+++ b/src/features/workspaces/components/EditWorkspaceForm.js
@@ -5,6 +5,7 @@ import { defineMessages, injectIntl } from 'react-intl';
5import { Link } from 'react-router'; 5import { Link } from 'react-router';
6import injectSheet from 'react-jss'; 6import injectSheet from 'react-jss';
7 7
8import { Infobox } from '../../../components/ui/infobox/index';
8import { Input } from '../../../components/ui/input/index'; 9import { Input } from '../../../components/ui/input/index';
9import { Button } from '../../../components/ui/button/index'; 10import { Button } from '../../../components/ui/button/index';
10import Workspace from '../models/Workspace'; 11import Workspace from '../models/Workspace';
@@ -58,7 +59,7 @@ const messages = defineMessages({
58 }, 59 },
59}); 60});
60 61
61const styles = () => ({ 62const styles = {
62 nameInput: { 63 nameInput: {
63 height: 'auto', 64 height: 'auto',
64 }, 65 },
@@ -68,10 +69,8 @@ const styles = () => ({
68 keepLoadedInfo: { 69 keepLoadedInfo: {
69 marginBottom: '2rem !important', 70 marginBottom: '2rem !important',
70 }, 71 },
71}); 72};
72 73
73@injectSheet(styles)
74@observer
75class EditWorkspaceForm extends Component { 74class EditWorkspaceForm extends Component {
76 static propTypes = { 75 static propTypes = {
77 classes: PropTypes.object.isRequired, 76 classes: PropTypes.object.isRequired,
@@ -94,7 +93,8 @@ class EditWorkspaceForm extends Component {
94 } 93 }
95 94
96 prepareWorkspaceForm(workspace) { 95 prepareWorkspaceForm(workspace) {
97 const { intl } = this.props; 96 const { intl, updateWorkspaceRequest } = this.props;
97 updateWorkspaceRequest.reset();
98 return new Form({ 98 return new Form({
99 fields: { 99 fields: {
100 name: { 100 name: {
@@ -116,6 +116,7 @@ class EditWorkspaceForm extends Component {
116 } 116 }
117 117
118 save(form) { 118 save(form) {
119 this.props.updateWorkspaceRequest.reset();
119 form.submit({ 120 form.submit({
120 onSuccess: async f => { 121 onSuccess: async f => {
121 const { onSave } = this.props; 122 const { onSave } = this.props;
@@ -167,6 +168,14 @@ class EditWorkspaceForm extends Component {
167 <span className="settings__header-item">{workspace.name}</span> 168 <span className="settings__header-item">{workspace.name}</span>
168 </div> 169 </div>
169 <div className="settings__body"> 170 <div className="settings__body">
171 {updateWorkspaceRequest.error && (
172 <Infobox
173 icon="alert"
174 type="danger"
175 >
176 Error while saving workspace
177 </Infobox>
178 )}
170 <div className={classes.nameInput}> 179 <div className={classes.nameInput}>
171 <Input {...form.$('name').bind()} /> 180 <Input {...form.$('name').bind()} />
172 <Toggle field={form.$('keepLoaded')} /> 181 <Toggle field={form.$('keepLoaded')} />
@@ -230,4 +239,6 @@ class EditWorkspaceForm extends Component {
230 } 239 }
231} 240}
232 241
233export default injectIntl(EditWorkspaceForm); 242export default injectIntl(
243 injectSheet(styles, { injectTheme: true })(observer(EditWorkspaceForm)),
244);
diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js
index d66e0f10d..4fd2b1153 100644
--- a/src/features/workspaces/components/WorkspaceDrawer.js
+++ b/src/features/workspaces/components/WorkspaceDrawer.js
@@ -88,8 +88,6 @@ const styles = theme => ({
88 }, 88 },
89}); 89});
90 90
91@injectSheet(styles)
92@observer
93class WorkspaceDrawer extends Component { 91class WorkspaceDrawer extends Component {
94 static propTypes = { 92 static propTypes = {
95 classes: PropTypes.object.isRequired, 93 classes: PropTypes.object.isRequired,
@@ -175,4 +173,6 @@ class WorkspaceDrawer extends Component {
175 } 173 }
176} 174}
177 175
178export default injectIntl(WorkspaceDrawer); 176export default injectIntl(
177 injectSheet(styles, { injectTheme: true })(observer(WorkspaceDrawer)),
178);
diff --git a/src/features/workspaces/components/WorkspaceDrawerItem.js b/src/features/workspaces/components/WorkspaceDrawerItem.js
index d3c9fa767..22c0a39d9 100644
--- a/src/features/workspaces/components/WorkspaceDrawerItem.js
+++ b/src/features/workspaces/components/WorkspaceDrawerItem.js
@@ -65,8 +65,6 @@ const styles = theme => ({
65 }, 65 },
66}); 66});
67 67
68@injectSheet(styles)
69@observer
70class WorkspaceDrawerItem extends Component { 68class WorkspaceDrawerItem extends Component {
71 static propTypes = { 69 static propTypes = {
72 classes: PropTypes.object.isRequired, 70 classes: PropTypes.object.isRequired,
@@ -150,4 +148,6 @@ class WorkspaceDrawerItem extends Component {
150 } 148 }
151} 149}
152 150
153export default injectIntl(WorkspaceDrawerItem); 151export default injectIntl(
152 injectSheet(styles, { injectTheme: true })(observer(WorkspaceDrawerItem)),
153);
diff --git a/src/features/workspaces/components/WorkspaceItem.tsx b/src/features/workspaces/components/WorkspaceItem.tsx
index 6fb02d2f5..f46375c7a 100644
--- a/src/features/workspaces/components/WorkspaceItem.tsx
+++ b/src/features/workspaces/components/WorkspaceItem.tsx
@@ -22,8 +22,6 @@ type Props = {
22 onItemClick: (workspace) => void; 22 onItemClick: (workspace) => void;
23}; 23};
24 24
25@injectSheet(styles)
26@observer
27class WorkspaceItem extends Component<Props> { 25class WorkspaceItem extends Component<Props> {
28 static propTypes = { 26 static propTypes = {
29 classes: PropTypes.object.isRequired, 27 classes: PropTypes.object.isRequired,
@@ -42,4 +40,6 @@ class WorkspaceItem extends Component<Props> {
42 } 40 }
43} 41}
44 42
45export default WorkspaceItem; 43export default injectSheet(styles, { injectTheme: true })(
44 observer(WorkspaceItem),
45);
diff --git a/src/features/workspaces/components/WorkspaceServiceListItem.tsx b/src/features/workspaces/components/WorkspaceServiceListItem.tsx
index 6e012eb1e..46fda0103 100644
--- a/src/features/workspaces/components/WorkspaceServiceListItem.tsx
+++ b/src/features/workspaces/components/WorkspaceServiceListItem.tsx
@@ -36,8 +36,6 @@ type Props = {
36 service: any; 36 service: any;
37}; 37};
38 38
39@injectSheet(styles)
40@observer
41class WorkspaceServiceListItem extends Component<Props> { 39class WorkspaceServiceListItem extends Component<Props> {
42 render() { 40 render() {
43 const { classes, isInWorkspace, onToggle, service } = this.props; 41 const { classes, isInWorkspace, onToggle, service } = this.props;
@@ -63,4 +61,6 @@ class WorkspaceServiceListItem extends Component<Props> {
63 } 61 }
64} 62}
65 63
66export default WorkspaceServiceListItem; 64export default injectSheet(styles, { injectTheme: true })(
65 observer(WorkspaceServiceListItem),
66);
diff --git a/src/features/workspaces/components/WorkspaceSwitchingIndicator.js b/src/features/workspaces/components/WorkspaceSwitchingIndicator.js
index ff4e9475a..b2e0adfe7 100644
--- a/src/features/workspaces/components/WorkspaceSwitchingIndicator.js
+++ b/src/features/workspaces/components/WorkspaceSwitchingIndicator.js
@@ -53,8 +53,6 @@ const styles = theme => ({
53 }, 53 },
54}); 54});
55 55
56@injectSheet(styles)
57@observer
58class WorkspaceSwitchingIndicator extends Component { 56class WorkspaceSwitchingIndicator extends Component {
59 static propTypes = { 57 static propTypes = {
60 classes: PropTypes.object.isRequired, 58 classes: PropTypes.object.isRequired,
@@ -85,4 +83,8 @@ class WorkspaceSwitchingIndicator extends Component {
85 } 83 }
86} 84}
87 85
88export default injectIntl(WorkspaceSwitchingIndicator); 86export default injectIntl(
87 injectSheet(styles, { injectTheme: true })(
88 observer(WorkspaceSwitchingIndicator),
89 ),
90);
diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js
index d41536f31..9c2f65731 100644
--- a/src/features/workspaces/components/WorkspacesDashboard.js
+++ b/src/features/workspaces/components/WorkspacesDashboard.js
@@ -1,3 +1,4 @@
1/* eslint-disable react/jsx-no-useless-fragment */
1import { Component } from 'react'; 2import { Component } from 'react';
2import PropTypes from 'prop-types'; 3import PropTypes from 'prop-types';
3import { observer, PropTypes as MobxPropTypes, inject } from 'mobx-react'; 4import { observer, PropTypes as MobxPropTypes, inject } from 'mobx-react';
@@ -48,7 +49,7 @@ const messages = defineMessages({
48 }, 49 },
49}); 50});
50 51
51const styles = () => ({ 52const styles = {
52 table: { 53 table: {
53 width: '100%', 54 width: '100%',
54 '& td': { 55 '& td': {
@@ -66,11 +67,8 @@ const styles = () => ({
66 margin: [-8, 0, 0, 20], 67 margin: [-8, 0, 0, 20],
67 alignSelf: 'center', 68 alignSelf: 'center',
68 }, 69 },
69}); 70};
70 71
71@inject('stores')
72@injectSheet(styles)
73@observer
74class WorkspacesDashboard extends Component { 72class WorkspacesDashboard extends Component {
75 static propTypes = { 73 static propTypes = {
76 classes: PropTypes.object.isRequired, 74 classes: PropTypes.object.isRequired,
@@ -189,9 +187,13 @@ class WorkspacesDashboard extends Component {
189 } 187 }
190} 188}
191 189
192export default injectIntl(WorkspacesDashboard); 190export default injectIntl(
191 inject('stores')(
192 injectSheet(styles, { injectTheme: true })(observer(WorkspacesDashboard)),
193 ),
194);
193 195
194WorkspacesDashboard.wrappedComponent.propTypes = { 196WorkspacesDashboard.propTypes = {
195 stores: PropTypes.shape({ 197 stores: PropTypes.shape({
196 ui: PropTypes.instanceOf(UIStore).isRequired, 198 ui: PropTypes.instanceOf(UIStore).isRequired,
197 }).isRequired, 199 }).isRequired,
diff --git a/src/features/workspaces/containers/EditWorkspaceScreen.tsx b/src/features/workspaces/containers/EditWorkspaceScreen.tsx
index 8e8f8179d..0351ddafb 100644
--- a/src/features/workspaces/containers/EditWorkspaceScreen.tsx
+++ b/src/features/workspaces/containers/EditWorkspaceScreen.tsx
@@ -17,8 +17,6 @@ type Props = {
17 }; 17 };
18}; 18};
19 19
20@inject('stores', 'actions')
21@observer
22class EditWorkspaceScreen extends Component<Props> { 20class EditWorkspaceScreen extends Component<Props> {
23 // @ts-expect-error Not all code paths return a value. 21 // @ts-expect-error Not all code paths return a value.
24 onDelete = () => { 22 onDelete = () => {
@@ -58,4 +56,4 @@ class EditWorkspaceScreen extends Component<Props> {
58 } 56 }
59} 57}
60 58
61export default EditWorkspaceScreen; 59export default inject('stores', 'actions')(observer(EditWorkspaceScreen));
diff --git a/src/features/workspaces/containers/WorkspacesScreen.tsx b/src/features/workspaces/containers/WorkspacesScreen.tsx
index a07e92439..33808b69d 100644
--- a/src/features/workspaces/containers/WorkspacesScreen.tsx
+++ b/src/features/workspaces/containers/WorkspacesScreen.tsx
@@ -17,8 +17,6 @@ type Props = {
17 }; 17 };
18}; 18};
19 19
20@inject('stores', 'actions')
21@observer
22class WorkspacesScreen extends Component<Props> { 20class WorkspacesScreen extends Component<Props> {
23 render() { 21 render() {
24 const { actions } = this.props; 22 const { actions } = this.props;
@@ -38,4 +36,4 @@ class WorkspacesScreen extends Component<Props> {
38 } 36 }
39} 37}
40 38
41export default WorkspacesScreen; 39export default inject('stores', 'actions')(observer(WorkspacesScreen));
diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js
index 17ec17b3a..d6b790bd3 100644
--- a/src/features/workspaces/store.js
+++ b/src/features/workspaces/store.js
@@ -199,7 +199,7 @@ export default class WorkspacesStore extends FeatureStore {
199 : 'none'; 199 : 'none';
200 } 200 }
201 } 201 }
202 }, 1000); 202 }, 500);
203 }; 203 };
204 204
205 @action _deactivateActiveWorkspace = () => { 205 @action _deactivateActiveWorkspace = () => {
@@ -221,7 +221,7 @@ export default class WorkspacesStore extends FeatureStore {
221 wrapper.style.display = ''; 221 wrapper.style.display = '';
222 } 222 }
223 } 223 }
224 }, 1000); 224 }, 500);
225 }; 225 };
226 226
227 @action _toggleWorkspaceDrawer = () => { 227 @action _toggleWorkspaceDrawer = () => {
diff --git a/src/helpers/async-helpers.ts b/src/helpers/async-helpers.ts
index 6b1f24b5a..56051b065 100644
--- a/src/helpers/async-helpers.ts
+++ b/src/helpers/async-helpers.ts
@@ -1,3 +1,4 @@
1export function sleep(ms: number = 0) { 1export function sleep(ms: number = 0) {
2 // eslint-disable-next-line no-promise-executor-return
2 return new Promise(r => setTimeout(r, ms)); 3 return new Promise(r => setTimeout(r, ms));
3} 4}
diff --git a/src/helpers/recipe-helpers.ts b/src/helpers/recipe-helpers.ts
index d482dffab..93c107cc5 100644
--- a/src/helpers/recipe-helpers.ts
+++ b/src/helpers/recipe-helpers.ts
@@ -1,3 +1,4 @@
1/* eslint-disable import/no-import-module-exports */
1/* eslint-disable global-require */ 2/* eslint-disable global-require */
2import { parse } from 'path'; 3import { parse } from 'path';
3import { userDataRecipesPath } from '../environment-remote'; 4import { userDataRecipesPath } from '../environment-remote';
diff --git a/src/i18n/locales/af.json b/src/i18n/locales/af.json
index 4ec106205..213c78f31 100644
--- a/src/i18n/locales/af.json
+++ b/src/i18n/locales/af.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Send invites", 61 "invite.submit.label": "Send invites",
62 "invite.successInfo": "Invitations sent successfully", 62 "invite.successInfo": "Invitations sent successfully",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Welcome to Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Updates", 255 "settings.app.headlineUpdates": "Updates",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Available services", 290 "settings.recipes.headline": "Available services",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Discover services", 346 "settings.services.discoverServices": "Discover services",
349 "settings.services.headline": "Your services", 347 "settings.services.headline": "Your services",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Service is disabled", 351 "settings.services.tooltip.isDisabled": "Service is disabled",
354 "settings.services.tooltip.isMuted": "All sounds are muted", 352 "settings.services.tooltip.isMuted": "All sounds are muted",
355 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 353 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
356 "settings.services.updatedInfo": "Your changes have been saved", 354 "settings.services.updatedInfo": "Your changes have been saved",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "About Ferdi", 356 "settings.supportFerdi.headline": "About Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
diff --git a/src/i18n/locales/ar.json b/src/i18n/locales/ar.json
index 7cbb47907..56f8348b1 100644
--- a/src/i18n/locales/ar.json
+++ b/src/i18n/locales/ar.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "إرسال الدعوات", 61 "invite.submit.label": "إرسال الدعوات",
62 "invite.successInfo": "تم إرسال الدعوات بنجاح", 62 "invite.successInfo": "تم إرسال الدعوات بنجاح",
63 "locked.headline": "مقÙÙ„", 63 "locked.headline": "مقÙÙ„",
64 "locked.info": "Ùردي مقÙÙ„ حاليا. الرجاء Ùتح Ùردي بكلمة المرور الخاصة بك لرؤية رسائلك.",
65 "locked.invalidCredentials": "كلمة المرور غير صالحة", 64 "locked.invalidCredentials": "كلمة المرور غير صالحة",
66 "locked.password.label": "كلمة المرور", 65 "locked.password.label": "كلمة المرور",
67 "locked.submit.label": "Ùتح القÙÙ„", 66 "locked.submit.label": "Ùتح القÙÙ„",
@@ -168,7 +167,6 @@
168 "services.login": "الرجاء تسجيل الدخول لاستخدام Ùردي.", 167 "services.login": "الرجاء تسجيل الدخول لاستخدام Ùردي.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "استخدام Ùردي بدون حساب", 169 "services.serverless": "استخدام Ùردي بدون حساب",
171 "services.welcome": "مرحبا بكم ÙÙŠ Ùردي",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "الحساب غير متوÙر", 171 "settings.account.accountUnavailable": "الحساب غير متوÙر",
174 "settings.account.accountUnavailableInfo": "أنت تستخدم Ùردي بدون حساب. إذا كنت ترغب ÙÙŠ استخدام Ùردي مع حساب والحÙاظ على مزامنة خدماتك عبر مختل٠الحواسيب، الرجاء تحديد خادم ÙÙŠ علامة تبويب الإعدادات ثم سجل الدخول.", 172 "settings.account.accountUnavailableInfo": "أنت تستخدم Ùردي بدون حساب. إذا كنت ترغب ÙÙŠ استخدام Ùردي مع حساب والحÙاظ على مزامنة خدماتك عبر مختل٠الحواسيب، الرجاء تحديد خادم ÙÙŠ علامة تبويب الإعدادات ثم سجل الدخول.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "إظهار المنطقة القابلة للسحب على الناÙذة", 240 "settings.app.form.showDragArea": "إظهار المنطقة القابلة للسحب على الناÙذة",
243 "settings.app.form.showMessagesBadgesWhenMuted": "إظهار شارة رسالة غير مقروءة عند تعطيل الإشعارات", 241 "settings.app.form.showMessagesBadgesWhenMuted": "إظهار شارة رسالة غير مقروءة عند تعطيل الإشعارات",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "البدء بناÙذة مصغرة", 245 "settings.app.form.startMinimized": "البدء بناÙذة مصغرة",
247 "settings.app.form.universalDarkMode": "تمكين الوضع المظلم الكامل", 246 "settings.app.form.universalDarkMode": "تمكين الوضع المظلم الكامل",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "التحديثات", 255 "settings.app.headlineUpdates": "التحديثات",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "الترجمات الرسمية هي الإنكليزية والألمانية. وجميع اللغات الأخرى مبنية على ترجمات مساهمين.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "كلمة المرور", 259 "settings.app.lockedPassword": "كلمة المرور",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "وصÙات طر٠ثالث مخصصة", 285 "settings.recipes.customService.headline.customRecipes": "وصÙات طر٠ثالث مخصصة",
288 "settings.recipes.customService.headline.devRecipes": "وصÙات خدمة التطوير الخاصة بك", 286 "settings.recipes.customService.headline.devRecipes": "وصÙات خدمة التطوير الخاصة بك",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "وثائق المطور", 288 "settings.recipes.customService.openDevDocs": "وثائق المطور",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "الخدمات المتاحة", 290 "settings.recipes.headline": "الخدمات المتاحة",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "اكتش٠الخدمات", 346 "settings.services.discoverServices": "اكتش٠الخدمات",
349 "settings.services.headline": "خدماتك", 347 "settings.services.headline": "خدماتك",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "تعذرَ تحميل خدماتك", 350 "settings.services.servicesRequestFailed": "تعذرَ تحميل خدماتك",
353 "settings.services.tooltip.isDisabled": "الخدمة معطّلة", 351 "settings.services.tooltip.isDisabled": "الخدمة معطّلة",
354 "settings.services.tooltip.isMuted": "تم كتم جميع الأصوات", 352 "settings.services.tooltip.isMuted": "تم كتم جميع الأصوات",
355 "settings.services.tooltip.notificationsDisabled": "الإشعارات Ù…Ùعَطَّلة", 353 "settings.services.tooltip.notificationsDisabled": "الإشعارات Ù…Ùعَطَّلة",
356 "settings.services.updatedInfo": "تم Ø­Ùظ التغييرات الخاصة بك", 354 "settings.services.updatedInfo": "تم Ø­Ùظ التغييرات الخاصة بك",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "حول Ùردي", 356 "settings.supportFerdi.headline": "حول Ùردي",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Ùريق أدارة Ùرانز", 367 "settings.team.contentHeadline": "Ùريق أدارة Ùرانز",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Ùريق", 369 "settings.team.headline": "Ùريق",
diff --git a/src/i18n/locales/be.json b/src/i18n/locales/be.json
index a3e1e83a7..cfc587ffd 100644
--- a/src/i18n/locales/be.json
+++ b/src/i18n/locales/be.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Send invites", 61 "invite.submit.label": "Send invites",
62 "invite.successInfo": "Invitations sent successfully", 62 "invite.successInfo": "Invitations sent successfully",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Welcome to Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Updates", 255 "settings.app.headlineUpdates": "Updates",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Available services", 290 "settings.recipes.headline": "Available services",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Discover services", 346 "settings.services.discoverServices": "Discover services",
349 "settings.services.headline": "Your services", 347 "settings.services.headline": "Your services",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Service is disabled", 351 "settings.services.tooltip.isDisabled": "Service is disabled",
354 "settings.services.tooltip.isMuted": "All sounds are muted", 352 "settings.services.tooltip.isMuted": "All sounds are muted",
355 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 353 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
356 "settings.services.updatedInfo": "Your changes have been saved", 354 "settings.services.updatedInfo": "Your changes have been saved",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "About Ferdi", 356 "settings.supportFerdi.headline": "About Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
diff --git a/src/i18n/locales/bs.json b/src/i18n/locales/bs.json
index 4ec106205..213c78f31 100644
--- a/src/i18n/locales/bs.json
+++ b/src/i18n/locales/bs.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Send invites", 61 "invite.submit.label": "Send invites",
62 "invite.successInfo": "Invitations sent successfully", 62 "invite.successInfo": "Invitations sent successfully",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Welcome to Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Updates", 255 "settings.app.headlineUpdates": "Updates",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Available services", 290 "settings.recipes.headline": "Available services",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Discover services", 346 "settings.services.discoverServices": "Discover services",
349 "settings.services.headline": "Your services", 347 "settings.services.headline": "Your services",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Service is disabled", 351 "settings.services.tooltip.isDisabled": "Service is disabled",
354 "settings.services.tooltip.isMuted": "All sounds are muted", 352 "settings.services.tooltip.isMuted": "All sounds are muted",
355 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 353 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
356 "settings.services.updatedInfo": "Your changes have been saved", 354 "settings.services.updatedInfo": "Your changes have been saved",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "About Ferdi", 356 "settings.supportFerdi.headline": "About Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
diff --git a/src/i18n/locales/ca.json b/src/i18n/locales/ca.json
index 734289614..b8e7187b4 100644
--- a/src/i18n/locales/ca.json
+++ b/src/i18n/locales/ca.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Enviar invitacions", 61 "invite.submit.label": "Enviar invitacions",
62 "invite.successInfo": "Invitacions enviades correctament", 62 "invite.successInfo": "Invitacions enviades correctament",
63 "locked.headline": "Bloquejat", 63 "locked.headline": "Bloquejat",
64 "locked.info": "Actualment, Ferdi està bloquejat. Desbloqueu Ferdi amb la vostra contrasenya per veure els vostres missatges.",
65 "locked.invalidCredentials": "Contrasenya incorrecte", 64 "locked.invalidCredentials": "Contrasenya incorrecte",
66 "locked.password.label": "Contrasenya", 65 "locked.password.label": "Contrasenya",
67 "locked.submit.label": "Desbloqueja", 66 "locked.submit.label": "Desbloqueja",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Benvingut a Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Mostra la insígnia de missatges no llegits quan les notificacions estiguin desactivades", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Mostra la insígnia de missatges no llegits quan les notificacions estiguin desactivades",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Actualitzacions", 255 "settings.app.headlineUpdates": "Actualitzacions",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Contrasenya", 259 "settings.app.lockedPassword": "Contrasenya",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Serveis disponibles", 290 "settings.recipes.headline": "Serveis disponibles",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Descobrir serveis", 346 "settings.services.discoverServices": "Descobrir serveis",
349 "settings.services.headline": "Els vostres serveis", 347 "settings.services.headline": "Els vostres serveis",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "El servei està desactivat", 351 "settings.services.tooltip.isDisabled": "El servei està desactivat",
354 "settings.services.tooltip.isMuted": "Tots els sons estan desactivats", 352 "settings.services.tooltip.isMuted": "Tots els sons estan desactivats",
355 "settings.services.tooltip.notificationsDisabled": "Les notificacions estan desactivades", 353 "settings.services.tooltip.notificationsDisabled": "Les notificacions estan desactivades",
356 "settings.services.updatedInfo": "S'han desat els canvis", 354 "settings.services.updatedInfo": "S'han desat els canvis",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "Sobre Ferdi", 356 "settings.supportFerdi.headline": "Sobre Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Equip", 369 "settings.team.headline": "Equip",
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json
index 8a5f7037e..a1d8c68b2 100644
--- a/src/i18n/locales/cs.json
+++ b/src/i18n/locales/cs.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Poslat pozvánky", 61 "invite.submit.label": "Poslat pozvánky",
62 "invite.successInfo": "Pozvánky byly úspěšně odeslány.", 62 "invite.successInfo": "Pozvánky byly úspěšně odeslány.",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Vítejte v programu Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Zobrazit odznak pro nepÅ™eÄtené zprávy když jsou upozornÄ›ní vypnutá", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Zobrazit odznak pro nepÅ™eÄtené zprávy když jsou upozornÄ›ní vypnutá",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Aktualizace", 255 "settings.app.headlineUpdates": "Aktualizace",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Dostupné služby", 290 "settings.recipes.headline": "Dostupné služby",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Objevte služby", 346 "settings.services.discoverServices": "Objevte služby",
349 "settings.services.headline": "Vaše služby", 347 "settings.services.headline": "Vaše služby",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Služba je zakázána", 351 "settings.services.tooltip.isDisabled": "Služba je zakázána",
354 "settings.services.tooltip.isMuted": "Všechny zvuky jsou ztišeny", 352 "settings.services.tooltip.isMuted": "Všechny zvuky jsou ztišeny",
355 "settings.services.tooltip.notificationsDisabled": "Oznámení jsou zakázána", 353 "settings.services.tooltip.notificationsDisabled": "Oznámení jsou zakázána",
356 "settings.services.updatedInfo": "Vaše změny byly uloženy", 354 "settings.services.updatedInfo": "Vaše změny byly uloženy",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "O aplikaci", 356 "settings.supportFerdi.headline": "O aplikaci",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Tým", 369 "settings.team.headline": "Tým",
diff --git a/src/i18n/locales/da.json b/src/i18n/locales/da.json
index ef78a2269..0463d22e1 100644
--- a/src/i18n/locales/da.json
+++ b/src/i18n/locales/da.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Send invitationer", 61 "invite.submit.label": "Send invitationer",
62 "invite.successInfo": "Invitationer sendt", 62 "invite.successInfo": "Invitationer sendt",
63 "locked.headline": "LÃ¥st", 63 "locked.headline": "LÃ¥st",
64 "locked.info": "Ferdi er i øjeblikket låst. Lås Ferdi op med din adgangskode for at se dine beskeder.",
65 "locked.invalidCredentials": "Ugyldig adgangskode", 64 "locked.invalidCredentials": "Ugyldig adgangskode",
66 "locked.password.label": "Adgangskode", 65 "locked.password.label": "Adgangskode",
67 "locked.submit.label": "LÃ¥s op", 66 "locked.submit.label": "LÃ¥s op",
@@ -168,7 +167,6 @@
168 "services.login": "Log ind for at bruge Ferdi.", 167 "services.login": "Log ind for at bruge Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Brug Ferdi uden en konto", 169 "services.serverless": "Brug Ferdi uden en konto",
171 "services.welcome": "Velkommen til Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Konto utilgængelig", 171 "settings.account.accountUnavailable": "Konto utilgængelig",
174 "settings.account.accountUnavailableInfo": "Du bruger Ferdi uden en konto. Hvis du ønsker at bruge Ferdi med en konto og holde dine tjenester synkroniseret på tværs af enheder, vælg en server under fanen Indstillinger, og log derefter ind.", 172 "settings.account.accountUnavailableInfo": "Du bruger Ferdi uden en konto. Hvis du ønsker at bruge Ferdi med en konto og holde dine tjenester synkroniseret på tværs af enheder, vælg en server under fanen Indstillinger, og log derefter ind.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Vis trækområde i vinduet", 240 "settings.app.form.showDragArea": "Vis trækområde i vinduet",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Vis ulæst beskedikon når notifikationer er deaktiveret", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Vis ulæst beskedikon når notifikationer er deaktiveret",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimeret", 245 "settings.app.form.startMinimized": "Start minimeret",
247 "settings.app.form.universalDarkMode": "Aktiver universel mørk tilstand", 246 "settings.app.form.universalDarkMode": "Aktiver universel mørk tilstand",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Opdateringer", 255 "settings.app.headlineUpdates": "Opdateringer",
257 "settings.app.hibernateInfo": "Som standard vil Ferdi holde alle dine tjenester åbne og indlæste i baggrunden, så de er klar, når du vil bruge dem. Du kan vælge at sætte dine tjenester i dvale efter en angivet mængde tid. Dette er nyttigt til at spare hukommelse eller forhindre tjenester i at bremse din computer.", 256 "settings.app.hibernateInfo": "Som standard vil Ferdi holde alle dine tjenester åbne og indlæste i baggrunden, så de er klar, når du vil bruge dem. Du kan vælge at sætte dine tjenester i dvale efter en angivet mængde tid. Dette er nyttigt til at spare hukommelse eller forhindre tjenester i at bremse din computer.",
258 "settings.app.inactivityLockInfo": "Minutter af inaktivitet, hvorefter Ferdi automatisk skal låse. Brug 0 for at deaktivere", 257 "settings.app.inactivityLockInfo": "Minutter af inaktivitet, hvorefter Ferdi automatisk skal låse. Brug 0 for at deaktivere",
259 "settings.app.languageDisclaimer": "Officielle oversættelser er engelske og tyske. Alle andre sprog er fællesskabsstyrede oversættelser.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Adgangskode", 259 "settings.app.lockedPassword": "Adgangskode",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Fællesskabstyrede Tredjepartsopskrifter", 284 "settings.recipes.customService.headline.communityRecipes": "Fællesskabstyrede Tredjepartsopskrifter",
287 "settings.recipes.customService.headline.customRecipes": "Brugerdefinerede Tredjepartsopskrifter", 285 "settings.recipes.customService.headline.customRecipes": "Brugerdefinerede Tredjepartsopskrifter",
288 "settings.recipes.customService.headline.devRecipes": "Dine Udviklingsopskrifter", 286 "settings.recipes.customService.headline.devRecipes": "Dine Udviklingsopskrifter",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Udvikler Dokumentation", 288 "settings.recipes.customService.openDevDocs": "Udvikler Dokumentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Tilgængelige tjenester", 290 "settings.recipes.headline": "Tilgængelige tjenester",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Opdag tjenester", 346 "settings.services.discoverServices": "Opdag tjenester",
349 "settings.services.headline": "Dine tjenester", 347 "settings.services.headline": "Dine tjenester",
350 "settings.services.noServicesAdded": "Start med at tilføje en tjeneste.", 348 "settings.services.noServicesAdded": "Start med at tilføje en tjeneste.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Kunne ikke indlæse dine tjenester", 350 "settings.services.servicesRequestFailed": "Kunne ikke indlæse dine tjenester",
353 "settings.services.tooltip.isDisabled": "Tjenesten er deaktiveret", 351 "settings.services.tooltip.isDisabled": "Tjenesten er deaktiveret",
354 "settings.services.tooltip.isMuted": "Alle lyde er slået fra", 352 "settings.services.tooltip.isMuted": "Alle lyde er slået fra",
355 "settings.services.tooltip.notificationsDisabled": "Notifikationer er slået fra", 353 "settings.services.tooltip.notificationsDisabled": "Notifikationer er slået fra",
356 "settings.services.updatedInfo": "Dine ændringer er blevet gemt", 354 "settings.services.updatedInfo": "Dine ændringer er blevet gemt",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi er et \"open source\" og fællesskabsstyret program.</p><p>Tak til de personer, der gør dette muligt:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi er et \"open source\" og fællesskabsstyret program.</p><p>Tak til de personer, der gør dette muligt:</p>",
358 "settings.supportFerdi.bannerText": "Vil du hjælpe os med at forbedre Ferdi?",
359 "settings.supportFerdi.headline": "Om Ferdi", 356 "settings.supportFerdi.headline": "Om Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "Hvis du har lyst til at støtte Ferdi's udviklere med en donation, kan du gøre det på både,", 357 "settings.supportFerdi.textDonation": "Hvis du har lyst til at støtte Ferdi's udviklere med en donation, kan du gøre det på både,",
362 "settings.supportFerdi.textDonationAnd": "og", 358 "settings.supportFerdi.textDonationAnd": "og",
363 "settings.supportFerdi.textExpenses": "Omend frivillige gør det meste af arbejdet, er vi stadig nødt til at betale for servere og certifikater. Som et fællesskab er vi fuldt ud gennemsigtige med hensyn til de midler, vi indsamler og bruger - se vores", 359 "settings.supportFerdi.textExpenses": "Omend frivillige gør det meste af arbejdet, er vi stadig nødt til at betale for servere og certifikater. Som et fællesskab er vi fuldt ud gennemsigtige med hensyn til de midler, vi indsamler og bruger - se vores",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Støtte er altid velkommen. Du kan finde en liste over den hjælp, vi har brug for", 364 "settings.supportFerdi.textSupportWelcome": "Støtte er altid velkommen. Du kan finde en liste over den hjælp, vi har brug for",
369 "settings.supportFerdi.textSupportWelcomeHere": "her", 365 "settings.supportFerdi.textSupportWelcomeHere": "her",
370 "settings.supportFerdi.textVolunteers": "Udviklingen af Ferdi sker af frivillige. Folk, der bruger Ferdi som dig. De vedligeholder, retter og forbedrer Ferdi i deres fritid.", 366 "settings.supportFerdi.textVolunteers": "Udviklingen af Ferdi sker af frivillige. Folk, der bruger Ferdi som dig. De vedligeholder, retter og forbedrer Ferdi i deres fritid.",
371 "settings.supportFerdi.title": "Kan du lide Ferdi?",
372 "settings.team.contentHeadline": "Franz Teamstyring", 367 "settings.team.contentHeadline": "Franz Teamstyring",
373 "settings.team.copy": "Franz's teamstyring giver dig mulighed for at administrere Franz abonnementer for flere brugere. Husk på, at hvis du har et Franz Premium-abonnement, får du ingen fordele ved at bruge Ferdi: Den eneste grund til, at du stadig har adgang til teamstyring er, at du kan administrere dine gamle Franz Teams, og så du ikke mister nogen funktionalitet i forvaltningen af din konto.", 368 "settings.team.copy": "Franz's teamstyring giver dig mulighed for at administrere Franz abonnementer for flere brugere. Husk på, at hvis du har et Franz Premium-abonnement, får du ingen fordele ved at bruge Ferdi: Den eneste grund til, at du stadig har adgang til teamstyring er, at du kan administrere dine gamle Franz Teams, og så du ikke mister nogen funktionalitet i forvaltningen af din konto.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index 30acbcb29..bdbcac154 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Einladungen schicken", 61 "invite.submit.label": "Einladungen schicken",
62 "invite.successInfo": "Die Einladungen wurden erfolgreich versendet", 62 "invite.successInfo": "Die Einladungen wurden erfolgreich versendet",
63 "locked.headline": "Gesperrt", 63 "locked.headline": "Gesperrt",
64 "locked.info": "Ferdi ist zur Zeit gesperrt. Bitte entsperre Ferdi mit deinem Passwort, um deine Nachrichten zu sehen.",
65 "locked.invalidCredentials": "Passwort ungültig", 64 "locked.invalidCredentials": "Passwort ungültig",
66 "locked.password.label": "Passwort", 65 "locked.password.label": "Passwort",
67 "locked.submit.label": "Entsperren", 66 "locked.submit.label": "Entsperren",
@@ -168,7 +167,6 @@
168 "services.login": "Bitte melde dich an, um Ferdi zu benutzen.", 167 "services.login": "Bitte melde dich an, um Ferdi zu benutzen.",
169 "services.serverInfo": "Optional können Sie Ihren Ferdi Server wechseln, indem Sie auf das Zahnrad in der unteren linken Ecke klicken. Wenn Sie von einem der gehosteten Server auf Ferdi ohne Konto umschalten beachten Sie bitte, dass Sie Ihre Daten von diesem Server exportieren und anschließend über das Hilfe-Menü importieren können, um alle Ihre Arbeitsbereiche und konfigurierten Dienste wiederzubeleben!", 168 "services.serverInfo": "Optional können Sie Ihren Ferdi Server wechseln, indem Sie auf das Zahnrad in der unteren linken Ecke klicken. Wenn Sie von einem der gehosteten Server auf Ferdi ohne Konto umschalten beachten Sie bitte, dass Sie Ihre Daten von diesem Server exportieren und anschließend über das Hilfe-Menü importieren können, um alle Ihre Arbeitsbereiche und konfigurierten Dienste wiederzubeleben!",
170 "services.serverless": "Ferdi ohne ein Konto verwenden", 169 "services.serverless": "Ferdi ohne ein Konto verwenden",
171 "services.welcome": "Willkommen bei Ferdi!",
172 "settings.account.account.editButton": "Konto bearbeiten", 170 "settings.account.account.editButton": "Konto bearbeiten",
173 "settings.account.accountUnavailable": "Konto nicht verfügbar", 171 "settings.account.accountUnavailable": "Konto nicht verfügbar",
174 "settings.account.accountUnavailableInfo": "Du verwendest Ferdi ohne ein Konto. Wenn du Ferdi mit einem Konto verwenden möchtest und deine Dienste über alle verschiedene Computer hinweg synchronisieren möchtest, wählen bitte einen Server in den Einstellungen und melde dich danach an.", 172 "settings.account.accountUnavailableInfo": "Du verwendest Ferdi ohne ein Konto. Wenn du Ferdi mit einem Konto verwenden möchtest und deine Dienste über alle verschiedene Computer hinweg synchronisieren möchtest, wählen bitte einen Server in den Einstellungen und melde dich danach an.",
@@ -205,17 +203,17 @@
205 "settings.app.form.automaticUpdates": "Updates aktivieren", 203 "settings.app.form.automaticUpdates": "Updates aktivieren",
206 "settings.app.form.beta": "Beta-Versionen einbeziehen", 204 "settings.app.form.beta": "Beta-Versionen einbeziehen",
207 "settings.app.form.clipboardNotifications": "Keine Benachrichtigungen für Zwischenablagenereignisse anzeigen", 205 "settings.app.form.clipboardNotifications": "Keine Benachrichtigungen für Zwischenablagenereignisse anzeigen",
208 "settings.app.form.closeToSystemTray": "Ferdi in Infobereich minimieren", 206 "settings.app.form.closeToSystemTray": "Ferdi in den Infobereich schließen",
209 "settings.app.form.confirmOnQuit": "Beim Beenden von Ferdi bestätigen", 207 "settings.app.form.confirmOnQuit": "Beim Beenden von Ferdi bestätigen",
210 "settings.app.form.customTodoServer": "Eigener Todo Server", 208 "settings.app.form.customTodoServer": "Eigener Todo Server",
211 "settings.app.form.darkMode": "Dark Mode aktivieren", 209 "settings.app.form.darkMode": "Dark Mode aktivieren",
212 "settings.app.form.enableGPUAcceleration": "Hardwarebeschleunigung aktivieren", 210 "settings.app.form.enableGPUAcceleration": "Hardwarebeschleunigung aktivieren",
213 "settings.app.form.enableGlobalHideShortcut": "Enable Global shortcut to hide Ferdi", 211 "settings.app.form.enableGlobalHideShortcut": "Globale Verknüpfung zum Verstecken von Ferdi aktivieren",
214 "settings.app.form.enableLock": "Passwort-Sperre aktivieren", 212 "settings.app.form.enableLock": "Passwort-Sperre aktivieren",
215 "settings.app.form.enableLongPressServiceHint": "Enable service shortcut hint on long press", 213 "settings.app.form.enableLongPressServiceHint": "Aktivieren von Tastaturenkürzel Hinweisen bei langem Drücken",
216 "settings.app.form.enableMenuBar": "Ferdi immer in der Menüleiste anzeigen", 214 "settings.app.form.enableMenuBar": "Ferdi immer in der Menüleiste anzeigen",
217 "settings.app.form.enableSpellchecking": "Rechtschreibprüfung aktivieren", 215 "settings.app.form.enableSpellchecking": "Rechtschreibprüfung aktivieren",
218 "settings.app.form.enableSystemTray": "Always show Ferdi in System Tray", 216 "settings.app.form.enableSystemTray": "Ferdi immer im Infobereich anzeigen",
219 "settings.app.form.enableTodos": "Ferdi Todos aktivieren", 217 "settings.app.form.enableTodos": "Ferdi Todos aktivieren",
220 "settings.app.form.hibernateOnStartup": "Behalte Dienste im Ruhezustand beim Start", 218 "settings.app.form.hibernateOnStartup": "Behalte Dienste im Ruhezustand beim Start",
221 "settings.app.form.hibernationStrategy": "\"Service Hibernation\"-Strategie", 219 "settings.app.form.hibernationStrategy": "\"Service Hibernation\"-Strategie",
@@ -241,13 +239,14 @@
241 "settings.app.form.showDisabledServices": "Deaktivierte Services-Tabs anzeigen", 239 "settings.app.form.showDisabledServices": "Deaktivierte Services-Tabs anzeigen",
242 "settings.app.form.showDragArea": "Zeige ziehbare Fläche im Fenster", 240 "settings.app.form.showDragArea": "Zeige ziehbare Fläche im Fenster",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Ungelesene Nachrichten zeigen, wenn die Benachrichtigungen deaktiviert sind", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Ungelesene Nachrichten zeigen, wenn die Benachrichtigungen deaktiviert sind",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Dienstname unter dem Symbol anzeigen",
245 "settings.app.form.splitMode": "Enable Split View Mode", 243 "settings.app.form.splitColumns": "Anzahl der Spalten",
244 "settings.app.form.splitMode": "Split-Ansichtsmodus aktivieren",
246 "settings.app.form.startMinimized": "Minimiert starten", 245 "settings.app.form.startMinimized": "Minimiert starten",
247 "settings.app.form.universalDarkMode": "Universellen Dark Mode aktivieren", 246 "settings.app.form.universalDarkMode": "Universellen Dark Mode aktivieren",
248 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 247 "settings.app.form.useTouchIdToUnlock": "Verwenden von Touch ID zum Entsperren von Ferdi erlauben",
249 "settings.app.form.useVerticalStyle": "Use horizontal style", 248 "settings.app.form.useVerticalStyle": "Horizontaler Stil verwenden",
250 "settings.app.form.wakeUpStrategy": "Wake up strategy", 249 "settings.app.form.wakeUpStrategy": "Aufwachstrategie",
251 "settings.app.headlineAdvanced": "Erweitert", 250 "settings.app.headlineAdvanced": "Erweitert",
252 "settings.app.headlineAppearance": "Darstellung", 251 "settings.app.headlineAppearance": "Darstellung",
253 "settings.app.headlineGeneral": "Allgemeines", 252 "settings.app.headlineGeneral": "Allgemeines",
@@ -256,18 +255,17 @@
256 "settings.app.headlineUpdates": "Updates", 255 "settings.app.headlineUpdates": "Updates",
257 "settings.app.hibernateInfo": "Standardmäßig öffnet Ferdi alle deine Dienste im Hintergrund, sodass diese bereit sind, wenn du sie verwenden möchtest. \"Service Hibernation\" wird deine Dienste nach einer bestimmten Zeitspanne schließen. Dies ist nützlich, um RAM zu sparen oder Dienste davon abzuhalten, deinen Computer zu verlangsamen.", 256 "settings.app.hibernateInfo": "Standardmäßig öffnet Ferdi alle deine Dienste im Hintergrund, sodass diese bereit sind, wenn du sie verwenden möchtest. \"Service Hibernation\" wird deine Dienste nach einer bestimmten Zeitspanne schließen. Dies ist nützlich, um RAM zu sparen oder Dienste davon abzuhalten, deinen Computer zu verlangsamen.",
258 "settings.app.inactivityLockInfo": "Minuten der Inaktivität, nach denen Ferdi automatisch sperren soll. Verwenden Sie 0, um dies zu deaktivieren", 257 "settings.app.inactivityLockInfo": "Minuten der Inaktivität, nach denen Ferdi automatisch sperren soll. Verwenden Sie 0, um dies zu deaktivieren",
259 "settings.app.languageDisclaimer": "Offizielle Übersetzungen: Englisch & Deutsch. Alle anderen Sprachen sind Übersetzungen der Ferdi Community.", 258 "settings.app.lockInfo": "Die Passwort-Sperre erlaubt es dir, deine Nachrichten zu schützen.\nMit der Passwort-Sperre wirst du sowohl beim Starten von Ferdi als auch wenn du das Programm manuell sperrst darum gebeten, dein Passwort einzugeben.\nDu kannst Ferdi über das Sperrsymbol in der unteren linken Ecke oder mit dem Shortcut {lockShortcut} sperren.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Passwort", 259 "settings.app.lockedPassword": "Passwort",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Bitte stelle sicher, dass du ein Passwort setzt, an welches du dich erinnern kannst.\nSolltest du dieses Passwort vergessen, musst du Ferdi neu installieren.",
263 "settings.app.restartRequired": "Änderungen werden erst nach einem Neustart wirksam.", 261 "settings.app.restartRequired": "Änderungen werden erst nach einem Neustart wirksam.",
264 "settings.app.scheduledDNDInfo": "Die geplante \"Nicht-stören\"-Funktion erlaubt es dir eine Zeitspanne festzulegen, in der du keine Benachrichtigungen von Ferdi erhalten möchtest.", 262 "settings.app.scheduledDNDInfo": "Die geplante \"Nicht-stören\"-Funktion erlaubt es dir eine Zeitspanne festzulegen, in der du keine Benachrichtigungen von Ferdi erhalten möchtest.",
265 "settings.app.scheduledDNDTimeInfo": "Zeiten im 24-Stunden-Format (z.B. 18:00). Endzeit kann vor Beginn der Startzeit sein (z.B. 17:00 Uhr, Ende 09:00), um die Funktion über Nacht zu aktivieren.", 263 "settings.app.scheduledDNDTimeInfo": "Zeiten im 24-Stunden-Format (z.B. 18:00). Endzeit kann vor Beginn der Startzeit sein (z.B. 17:00 Uhr, Ende 09:00), um die Funktion über Nacht zu aktivieren.",
266 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!", 264 "settings.app.sentryInfo": "Das Senden von Telemetrie-Daten ermöglicht es uns, Fehler in Ferdi zu finden - es werden keine persönlichen Informationen gesendet wie z.B. Nachrichten!",
267 "settings.app.spellCheckerLanguageInfo": "Ferdi verwendet den eingebauten Rechtschreibprüfer deines Macs, um nach Tippfehlern zu suchen. Wenn du die zu überprüfenden Sprachen ändern möchtest, kannst du das in deinen Systemeinstellungen tun.", 265 "settings.app.spellCheckerLanguageInfo": "Ferdi verwendet den eingebauten Rechtschreibprüfer deines Macs, um nach Tippfehlern zu suchen. Wenn du die zu überprüfenden Sprachen ändern möchtest, kannst du das in deinen Systemeinstellungen tun.",
268 "settings.app.subheadlineCache": "Cache", 266 "settings.app.subheadlineCache": "Cache",
269 "settings.app.subheadlineFerdiProfile": "Ferdi Profile", 267 "settings.app.subheadlineFerdiProfile": "Ferdi Profil",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.", 268 "settings.app.todoServerInfo": "Dieser Server wird für die \"Ferdi Todo\"-Funktion verwendet.",
271 "settings.app.translationHelp": "Hilf uns, Ferdi in Deine Sprache zu übersetzen.", 269 "settings.app.translationHelp": "Hilf uns, Ferdi in Deine Sprache zu übersetzen.",
272 "settings.app.universalDarkModeInfo": "Universeller Dark Mode versucht dynamisch Dienste abzudunkeln, die vom normalen Dark Mode noch nicht unterstützt werden.", 270 "settings.app.universalDarkModeInfo": "Universeller Dark Mode versucht dynamisch Dienste abzudunkeln, die vom normalen Dark Mode noch nicht unterstützt werden.",
273 "settings.app.updateStatusAvailable": "Update verfügbar, lädt herunter ...", 271 "settings.app.updateStatusAvailable": "Update verfügbar, lädt herunter ...",
@@ -286,12 +284,12 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Benutzerdefinierte Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Benutzerdefinierte Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Eigene Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Eigene Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "Um ein benutzerdefiniertes Service hinzuzufügen, kopiere das Dienst-Rezept nach:",
290 "settings.recipes.customService.openDevDocs": "Entwicklerdokumentation", 288 "settings.recipes.customService.openDevDocs": "Entwicklerdokumentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Ordner öffnen",
292 "settings.recipes.headline": "Verfügbare Dienste", 290 "settings.recipes.headline": "Verfügbare Dienste",
293 "settings.recipes.missingService": "Fehlt ein Dienst?", 291 "settings.recipes.missingService": "Fehlt ein Dienst?",
294 "settings.recipes.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 292 "settings.recipes.nothingFound": "Leider hat kein Dienst zu deinem Suchbegriff gepasst - aber du kannst ihn wahrscheinlich trotzdem über die Option \"Eigene Website\" hinzufügen. Bitte beachte, dass die Website möglicherweise weitere Dienste anzeigt, die seit deiner aktuellen Version zu Ferdi hinzugefügt wurden. Um diese neuen Dienste zu erhalten, erwäge bitte ein Upgrade auf eine neuere Version von Ferdi.",
295 "settings.recipes.servicesSuccessfulAddedInfo": "Dienst erfolgreich hinzugefügt", 293 "settings.recipes.servicesSuccessfulAddedInfo": "Dienst erfolgreich hinzugefügt",
296 "settings.searchService": "Dienst suchen", 294 "settings.searchService": "Dienst suchen",
297 "settings.service.error.goBack": "Zurück zu den Diensten", 295 "settings.service.error.goBack": "Zurück zu den Diensten",
@@ -304,7 +302,7 @@
304 "settings.service.form.darkReaderBrightness": "Dark Reader Helligkeit", 302 "settings.service.form.darkReaderBrightness": "Dark Reader Helligkeit",
305 "settings.service.form.darkReaderContrast": "Dark Reader Kontrast", 303 "settings.service.form.darkReaderContrast": "Dark Reader Kontrast",
306 "settings.service.form.darkReaderSepia": "Dark Reader Sepia", 304 "settings.service.form.darkReaderSepia": "Dark Reader Sepia",
307 "settings.service.form.deleteButton": "Delete service", 305 "settings.service.form.deleteButton": "Dienst löschen",
308 "settings.service.form.editServiceHeadline": "{name} bearbeiten", 306 "settings.service.form.editServiceHeadline": "{name} bearbeiten",
309 "settings.service.form.enableAudio": "Audio aktivieren", 307 "settings.service.form.enableAudio": "Audio aktivieren",
310 "settings.service.form.enableBadge": "Nachrichten-Badge anzeigen", 308 "settings.service.form.enableBadge": "Nachrichten-Badge anzeigen",
@@ -312,7 +310,7 @@
312 "settings.service.form.enableHibernation": "Ruhezustand aktivieren", 310 "settings.service.form.enableHibernation": "Ruhezustand aktivieren",
313 "settings.service.form.enableNotification": "Benachrichtigungen aktivieren", 311 "settings.service.form.enableNotification": "Benachrichtigungen aktivieren",
314 "settings.service.form.enableService": "Dienst aktivieren", 312 "settings.service.form.enableService": "Dienst aktivieren",
315 "settings.service.form.enableWakeUp": "Enable wake up", 313 "settings.service.form.enableWakeUp": "Aufwecken aktivieren",
316 "settings.service.form.headlineBadges": "Nachrichten-Badge", 314 "settings.service.form.headlineBadges": "Nachrichten-Badge",
317 "settings.service.form.headlineDarkReaderSettings": "Dark Reader Einstellungen", 315 "settings.service.form.headlineDarkReaderSettings": "Dark Reader Einstellungen",
318 "settings.service.form.headlineGeneral": "Allgemeines", 316 "settings.service.form.headlineGeneral": "Allgemeines",
@@ -325,18 +323,18 @@
325 "settings.service.form.isHibernatedEnabledInfo": "Wenn aktiviert, wird ein Dienst nach einer Zeitspanne heruntergefahren, um Systemressourcen zu sparen.", 323 "settings.service.form.isHibernatedEnabledInfo": "Wenn aktiviert, wird ein Dienst nach einer Zeitspanne heruntergefahren, um Systemressourcen zu sparen.",
326 "settings.service.form.isMutedInfo": "Sämtliche Wiedergabe von Tönen wird deaktiviert", 324 "settings.service.form.isMutedInfo": "Sämtliche Wiedergabe von Tönen wird deaktiviert",
327 "settings.service.form.name": "Name", 325 "settings.service.form.name": "Name",
328 "settings.service.form.onlyShowFavoritesInUnreadCount": "Only show Favorites in unread count", 326 "settings.service.form.onlyShowFavoritesInUnreadCount": "Nur Favoriten in ungelesener Anzahl anzeigen",
329 "settings.service.form.openDarkmodeCss": "Öffne darkmode.css", 327 "settings.service.form.openDarkmodeCss": "Öffne darkmode.css",
330 "settings.service.form.openUserCss": "Öffne user.css", 328 "settings.service.form.openUserCss": "Öffne user.css",
331 "settings.service.form.openUserJs": "Öffne user.js", 329 "settings.service.form.openUserJs": "Öffne user.js",
332 "settings.service.form.proxy.headline": "HTTP-/HTTPS-Proxy-Einstellungen", 330 "settings.service.form.proxy.headline": "HTTP-/HTTPS-Proxy-Einstellungen",
333 "settings.service.form.proxy.host": "Proxy Host/IP", 331 "settings.service.form.proxy.host": "Proxy Host/IP",
334 "settings.service.form.proxy.info": "Proxy settings will not be synchronized with the Ferdi servers.", 332 "settings.service.form.proxy.info": "Proxy-Einstellungen werden nicht mit den Ferdi Servern synchronisiert.",
335 "settings.service.form.proxy.isEnabled": "Proxy-Server verwenden", 333 "settings.service.form.proxy.isEnabled": "Proxy-Server verwenden",
336 "settings.service.form.proxy.password": "Password (optional)", 334 "settings.service.form.proxy.password": "Passwort (optional)",
337 "settings.service.form.proxy.port": "Port", 335 "settings.service.form.proxy.port": "Port",
338 "settings.service.form.proxy.restartInfo": "Bitte starte Ferdi nach dem Ändern der Proxy-Einstellungen neu.", 336 "settings.service.form.proxy.restartInfo": "Bitte starte Ferdi nach dem Ändern der Proxy-Einstellungen neu.",
339 "settings.service.form.proxy.user": "User (optional)", 337 "settings.service.form.proxy.user": "Benutzer (optional)",
340 "settings.service.form.recipeFileInfo": "Deine \"user\" Dateien werden in die Webseite eingefügt, so dass du die Dienste in beliebiger Weise anpassen können. \"user\" Dateien werden nur lokal gespeichert und nicht auf andere Computer, welche das gleiche Konto nutzen, übertragen.", 338 "settings.service.form.recipeFileInfo": "Deine \"user\" Dateien werden in die Webseite eingefügt, so dass du die Dienste in beliebiger Weise anpassen können. \"user\" Dateien werden nur lokal gespeichert und nicht auf andere Computer, welche das gleiche Konto nutzen, übertragen.",
341 "settings.service.form.saveButton": "Dienst speichern", 339 "settings.service.form.saveButton": "Dienst speichern",
342 "settings.service.form.tabHosted": "Gehostet", 340 "settings.service.form.tabHosted": "Gehostet",
@@ -348,31 +346,28 @@
348 "settings.services.discoverServices": "Dienste entdecken", 346 "settings.services.discoverServices": "Dienste entdecken",
349 "settings.services.headline": "Deine Dienste", 347 "settings.services.headline": "Deine Dienste",
350 "settings.services.noServicesAdded": "Beginne indem du einen Dienst hinzufügst.", 348 "settings.services.noServicesAdded": "Beginne indem du einen Dienst hinzufügst.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Dienste konnten nicht geladen werden", 350 "settings.services.servicesRequestFailed": "Dienste konnten nicht geladen werden",
353 "settings.services.tooltip.isDisabled": "Dienst ist deaktiviert", 351 "settings.services.tooltip.isDisabled": "Dienst ist deaktiviert",
354 "settings.services.tooltip.isMuted": "Alle Töne sind deaktiviert", 352 "settings.services.tooltip.isMuted": "Alle Töne sind deaktiviert",
355 "settings.services.tooltip.notificationsDisabled": "Benachrichtigungen deaktiviert", 353 "settings.services.tooltip.notificationsDisabled": "Benachrichtigungen deaktiviert",
356 "settings.services.updatedInfo": "Deine Änderungen wurden gespeichert", 354 "settings.services.updatedInfo": "Deine Änderungen wurden gespeichert",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi ist eine Open-Source und von der Community-geführte Anwendung.</p><p>Danke an die Personen, die das möglich machen:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi ist eine Open-Source und von der Community-geführte Anwendung.</p><p>Danke an die Personen, die das möglich machen:</p>",
358 "settings.supportFerdi.bannerText": "Willst du uns helfen, Ferdi zu verbessern?",
359 "settings.supportFerdi.headline": "Ãœber Ferdi", 356 "settings.supportFerdi.headline": "Ãœber Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "Wenn du Lust hast, die Entwicklung von Ferdi mit einer Spende zu unterstützen, kannst du dies auf folgenden Seiten tun,", 357 "settings.supportFerdi.textDonation": "Wenn du Lust hast, die Entwicklung von Ferdi mit einer Spende zu unterstützen, kannst du dies auf folgenden Seiten tun,",
362 "settings.supportFerdi.textDonationAnd": "und", 358 "settings.supportFerdi.textDonationAnd": "und",
363 "settings.supportFerdi.textExpenses": "Während die meiste Arbeit von Freiwilligen geleistet wird, müssen wir dennoch für Server und Zertifikate bezahlen. Als Community sind wir völlig transparent über die Gelder, die wir sammeln und ausgeben - siehe unsere", 359 "settings.supportFerdi.textExpenses": "Während die meiste Arbeit von Freiwilligen geleistet wird, müssen wir dennoch für Server und Zertifikate bezahlen. Als Community sind wir völlig transparent über die Gelder, die wir sammeln und ausgeben - siehe unsere",
364 "settings.supportFerdi.textGitHubSponsors": "GitHub Sponsoren", 360 "settings.supportFerdi.textGitHubSponsors": "GitHub Sponsoren",
365 "settings.supportFerdi.textListContributors": "Full list of contributors", 361 "settings.supportFerdi.textListContributors": "Vollständige Liste an Mitwirkenden Personen",
366 "settings.supportFerdi.textListContributorsHere": "hier", 362 "settings.supportFerdi.textListContributorsHere": "hier",
367 "settings.supportFerdi.textOpenCollective": "Open Collective", 363 "settings.supportFerdi.textOpenCollective": "Open Collective",
368 "settings.supportFerdi.textSupportWelcome": "Unterstützung ist immer willkommen. Du findest eine Liste über Unterstützungen die wir benötigen", 364 "settings.supportFerdi.textSupportWelcome": "Unterstützung ist immer willkommen. Du findest eine Liste über Unterstützungen die wir benötigen",
369 "settings.supportFerdi.textSupportWelcomeHere": "hier", 365 "settings.supportFerdi.textSupportWelcomeHere": "hier",
370 "settings.supportFerdi.textVolunteers": "Die Entwicklung von Ferdi wird von Freiwilligen vorangetrieben. Menschen, die Ferdi benutzen, wie Du. Sie überprüfen, reparieren und verbessern Ferdi in ihrer Freizeit.", 366 "settings.supportFerdi.textVolunteers": "Die Entwicklung von Ferdi wird von Freiwilligen vorangetrieben. Menschen, die Ferdi benutzen, wie Du. Sie überprüfen, reparieren und verbessern Ferdi in ihrer Freizeit.",
371 "settings.supportFerdi.title": "Gefällt dir Ferdi?",
372 "settings.team.contentHeadline": "Franz Team-Management", 367 "settings.team.contentHeadline": "Franz Team-Management",
373 "settings.team.copy": "Mit Franz's Team Management kannst du Franz Abonnements für mehrere Benutzer verwalten. Bitte beachte, dass dir ein Franz Premium-Abonnement keine Vorteile bei der Nutzung von Ferdi bringt: Der einzige Grund, warum du noch Zugriff auf das Team Management hast, ist, damit du weiterhin Franz Teams verwalten kannst und damit du keine Funktionalität bei der Verwaltung deines Kontos verlierst.", 368 "settings.team.copy": "Mit Franz's Team Management kannst du Franz Abonnements für mehrere Benutzer verwalten. Bitte beachte, dass dir ein Franz Premium-Abonnement keine Vorteile bei der Nutzung von Ferdi bringt: Der einzige Grund, warum du noch Zugriff auf das Team Management hast, ist, damit du weiterhin Franz Teams verwalten kannst und damit du keine Funktionalität bei der Verwaltung deines Kontos verlierst.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
375 "settings.team.intro": "You are currently using Franz Servers, which is why you have access to Team Management.", 370 "settings.team.intro": "Du nutzt derzeit den Franz Server und hast deshalb Zugriff auf das Team Management.",
376 "settings.team.manageAction": "Verwalte dein Team auf meetfranz.com", 371 "settings.team.manageAction": "Verwalte dein Team auf meetfranz.com",
377 "settings.team.teamsUnavailable": "Teams sind nicht verfügbar", 372 "settings.team.teamsUnavailable": "Teams sind nicht verfügbar",
378 "settings.team.teamsUnavailableInfo": "Teams sind derzeit nur bei der Verwendung des Franz Servers und nach der Zahlung für Franz Professional verfügbar.\nBitte ändern Sie Ihren Server auf https://api.franzinfra.com, um Teams zu verwenden.", 373 "settings.team.teamsUnavailableInfo": "Teams sind derzeit nur bei der Verwendung des Franz Servers und nach der Zahlung für Franz Professional verfügbar.\nBitte ändern Sie Ihren Server auf https://api.franzinfra.com, um Teams zu verwenden.",
@@ -400,7 +395,7 @@
400 "settings.workspaces.tryReloadWorkspaces": "Erneut versuchen", 395 "settings.workspaces.tryReloadWorkspaces": "Erneut versuchen",
401 "settings.workspaces.updatedInfo": "Deine Änderungen wurden gespeichert", 396 "settings.workspaces.updatedInfo": "Deine Änderungen wurden gespeichert",
402 "settings.workspaces.workspaceFeatureHeadline": "Weniger ist mehr: Ferdi Workspaces", 397 "settings.workspaces.workspaceFeatureHeadline": "Weniger ist mehr: Ferdi Workspaces",
403 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", 398 "settings.workspaces.workspaceFeatureInfo": "Mit Ferdi Workspaces hast du alles im Blick, was gerade wichtig ist - und nur das. Erstelle unterschiedliche Sets von Services, und wechsle jederzeit zwischen ihnen hin und her. Du entscheidest welche Services du wann und wo brauchst, um ungestört arbeiten zu können - oder zu Hause besser abzuschalten.",
404 "settings.workspaces.workspacesRequestFailed": "Workspaces konnte nicht geladen werden", 399 "settings.workspaces.workspacesRequestFailed": "Workspaces konnte nicht geladen werden",
405 "setupAssistant.headline": "Los geht's", 400 "setupAssistant.headline": "Los geht's",
406 "setupAssistant.subheadline": "Wähle von unseren meistgenutzten Diensten und bekomm deine Nachrichten wieder in den Griff.", 401 "setupAssistant.subheadline": "Wähle von unseren meistgenutzten Diensten und bekomm deine Nachrichten wieder in den Griff.",
@@ -425,7 +420,7 @@
425 "signup.password.label": "Passwort", 420 "signup.password.label": "Passwort",
426 "signup.submit.label": "Konto erstellen", 421 "signup.submit.label": "Konto erstellen",
427 "tabs.item.confirmDeleteService": "Willst du den {serviceName} Dienst wirklich löschen?", 422 "tabs.item.confirmDeleteService": "Willst du den {serviceName} Dienst wirklich löschen?",
428 "tabs.item.deleteService": "Delete service", 423 "tabs.item.deleteService": "Dienst löschen",
429 "tabs.item.disableAudio": "Audio deaktivieren", 424 "tabs.item.disableAudio": "Audio deaktivieren",
430 "tabs.item.disableDarkMode": "Dunkler Modus deaktivieren", 425 "tabs.item.disableDarkMode": "Dunkler Modus deaktivieren",
431 "tabs.item.disableNotifications": "Benachrichtigungen deaktivieren", 426 "tabs.item.disableNotifications": "Benachrichtigungen deaktivieren",
@@ -434,14 +429,14 @@
434 "tabs.item.enableDarkMode": "Dunkler Modus aktivieren", 429 "tabs.item.enableDarkMode": "Dunkler Modus aktivieren",
435 "tabs.item.enableNotification": "Benachrichtigungen aktivieren", 430 "tabs.item.enableNotification": "Benachrichtigungen aktivieren",
436 "tabs.item.enableService": "Dienst aktivieren", 431 "tabs.item.enableService": "Dienst aktivieren",
437 "tabs.item.hibernateService": "Hibernate service", 432 "tabs.item.hibernateService": "Ruhezustand",
438 "tabs.item.reload": "Neu laden", 433 "tabs.item.reload": "Neu laden",
439 "tabs.item.wakeUpService": "Wake up service", 434 "tabs.item.wakeUpService": "Aufweckdienst",
440 "validation.email": "{field} is not valid", 435 "validation.email": "{field} ist ungültig",
441 "validation.minLength": "{field} should be at least {length} characters long", 436 "validation.minLength": "{field} muss mindestens {length} Zeichen lang sein",
442 "validation.oneRequired": "Mindestens ein Wert wird benötigt", 437 "validation.oneRequired": "Mindestens ein Wert wird benötigt",
443 "validation.required": "{field} is required", 438 "validation.required": "{field} ist erforderlich",
444 "validation.url": "{field} is not a valid URL", 439 "validation.url": "{field} ist keine gültige URL",
445 "webControls.back": "Zurück", 440 "webControls.back": "Zurück",
446 "webControls.forward": "Vorwärts", 441 "webControls.forward": "Vorwärts",
447 "webControls.goHome": "Startseite", 442 "webControls.goHome": "Startseite",
@@ -454,7 +449,7 @@
454 "workspaceDrawer.headline": "Arbeitsbereiche", 449 "workspaceDrawer.headline": "Arbeitsbereiche",
455 "workspaceDrawer.item.contextMenuEdit": "Bearbeiten", 450 "workspaceDrawer.item.contextMenuEdit": "Bearbeiten",
456 "workspaceDrawer.item.noServicesAddedYet": "Noch keine Services hinzugefügt", 451 "workspaceDrawer.item.noServicesAddedYet": "Noch keine Services hinzugefügt",
457 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", 452 "workspaceDrawer.workspaceFeatureInfo": "<p>Mit Ferdi Workspaces hast du alles im Blick, was gerade wichtig ist - und nur das. Erstelle unterschiedliche Sets von Services, und wechsle jederzeit zwischen ihnen hin und her.</p><p>Du entscheidest welche Services du wann und wo brauchst, um ungestört arbeiten zu können - oder zu Hause besser abzuschalten.</p>",
458 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", 453 "workspaceDrawer.workspacesSettingsTooltip": "Workspace-Einstellungen bearbeiten",
459 "workspaces.switchingIndicator.switchingTo": "Wechsle zu" 454 "workspaces.switchingIndicator.switchingTo": "Wechsle zu"
460} 455}
diff --git a/src/i18n/locales/el.json b/src/i18n/locales/el.json
index b42188fbf..df98bbf22 100644
--- a/src/i18n/locales/el.json
+++ b/src/i18n/locales/el.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Αποστολή Ï€Ïοσκλήσεων", 61 "invite.submit.label": "Αποστολή Ï€Ïοσκλήσεων",
62 "invite.successInfo": "Επιτυχής αποστολή Ï€Ïοσκλήσεων", 62 "invite.successInfo": "Επιτυχής αποστολή Ï€Ïοσκλήσεων",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Καλώς οÏίσατε στον Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "ΠÏοβολή του εικονιδίου μη αναγνωσμένου μηνÏματος όταν οι ειδοποιήσεις είναι απενεÏγοποιημένες", 241 "settings.app.form.showMessagesBadgesWhenMuted": "ΠÏοβολή του εικονιδίου μη αναγνωσμένου μηνÏματος όταν οι ειδοποιήσεις είναι απενεÏγοποιημένες",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "ΕνημεÏώσεις", 255 "settings.app.headlineUpdates": "ΕνημεÏώσεις",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Διαθέσιμες υπηÏεσίες", 290 "settings.recipes.headline": "Διαθέσιμες υπηÏεσίες",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "ΑνακαλÏψτε υπηÏεσίες", 346 "settings.services.discoverServices": "ΑνακαλÏψτε υπηÏεσίες",
349 "settings.services.headline": "Οι υπηÏεσίες σας", 347 "settings.services.headline": "Οι υπηÏεσίες σας",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Η υπηÏεσία είναι απενεÏγοποιημένη", 351 "settings.services.tooltip.isDisabled": "Η υπηÏεσία είναι απενεÏγοποιημένη",
354 "settings.services.tooltip.isMuted": "Όλοι οι ήχοι είναι απενεÏγοποιημένοι", 352 "settings.services.tooltip.isMuted": "Όλοι οι ήχοι είναι απενεÏγοποιημένοι",
355 "settings.services.tooltip.notificationsDisabled": "Οι ειδοποιήσεις είναι απενεÏγοποιημένες", 353 "settings.services.tooltip.notificationsDisabled": "Οι ειδοποιήσεις είναι απενεÏγοποιημένες",
356 "settings.services.updatedInfo": "Οι αλλαγές σας έχουν αποθηκευτεί", 354 "settings.services.updatedInfo": "Οι αλλαγές σας έχουν αποθηκευτεί",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "Σχετικά με το Ferdi", 356 "settings.supportFerdi.headline": "Σχετικά με το Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Ομάδα", 369 "settings.team.headline": "Ομάδα",
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 2544d2a00..db528ac47 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Send invites", 61 "invite.submit.label": "Send invites",
62 "invite.successInfo": "Invitations sent successfully", 62 "invite.successInfo": "Invitations sent successfully",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Welcome to Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Updates", 255 "settings.app.headlineUpdates": "Updates",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Available services", 290 "settings.recipes.headline": "Available services",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Discover services", 346 "settings.services.discoverServices": "Discover services",
349 "settings.services.headline": "Your services", 347 "settings.services.headline": "Your services",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Service is disabled", 351 "settings.services.tooltip.isDisabled": "Service is disabled",
354 "settings.services.tooltip.isMuted": "All sounds are muted", 352 "settings.services.tooltip.isMuted": "All sounds are muted",
355 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 353 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
356 "settings.services.updatedInfo": "Your changes have been saved", 354 "settings.services.updatedInfo": "Your changes have been saved",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "About Ferdi", 356 "settings.supportFerdi.headline": "About Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json
index e85ebf772..87f94cfd6 100644
--- a/src/i18n/locales/es.json
+++ b/src/i18n/locales/es.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Enviar invitaciones", 61 "invite.submit.label": "Enviar invitaciones",
62 "invite.successInfo": "Invitaciones enviadas correctamente", 62 "invite.successInfo": "Invitaciones enviadas correctamente",
63 "locked.headline": "Bloqueado", 63 "locked.headline": "Bloqueado",
64 "locked.info": "Ferdi está actualmente bloqueado. Por favor, desbloquea Ferdi con tu contraseña para ver tus mensajes.",
65 "locked.invalidCredentials": "Contraseña incorrecta", 64 "locked.invalidCredentials": "Contraseña incorrecta",
66 "locked.password.label": "Contraseña", 65 "locked.password.label": "Contraseña",
67 "locked.submit.label": "Desbloquear", 66 "locked.submit.label": "Desbloquear",
@@ -168,7 +167,6 @@
168 "services.login": "Iniciar sesión para usar Ferdi.", 167 "services.login": "Iniciar sesión para usar Ferdi.",
169 "services.serverInfo": "Opcionalmente, puede cambiar su servidor Ferdi haciendo clic en el engranaje en la esquina inferior izquierda. Si está cambiando (de uno de los servidores alojados) a usar Ferdi sin una cuenta, por favor tenga en cuenta que puede exportar sus datos desde ese servidor y posteriormente importarlos usando el menú Ayuda para restaurar todos sus espacios de trabajo y servicios configurados!", 168 "services.serverInfo": "Opcionalmente, puede cambiar su servidor Ferdi haciendo clic en el engranaje en la esquina inferior izquierda. Si está cambiando (de uno de los servidores alojados) a usar Ferdi sin una cuenta, por favor tenga en cuenta que puede exportar sus datos desde ese servidor y posteriormente importarlos usando el menú Ayuda para restaurar todos sus espacios de trabajo y servicios configurados!",
170 "services.serverless": "Usar Ferdi sin una cuenta", 169 "services.serverless": "Usar Ferdi sin una cuenta",
171 "services.welcome": "Bienvenido a Ferdi",
172 "settings.account.account.editButton": "Editar cuenta", 170 "settings.account.account.editButton": "Editar cuenta",
173 "settings.account.accountUnavailable": "La cuenta no está disponible", 171 "settings.account.accountUnavailable": "La cuenta no está disponible",
174 "settings.account.accountUnavailableInfo": "Estás usando Ferdi sin una cuenta. Si desea utilizar Ferdi con una cuenta y así mantener sus servicios sincronizados entre instalaciones, debe seleccionar un servidor en la Configuración e iniciar sesión.", 172 "settings.account.accountUnavailableInfo": "Estás usando Ferdi sin una cuenta. Si desea utilizar Ferdi con una cuenta y así mantener sus servicios sincronizados entre instalaciones, debe seleccionar un servidor en la Configuración e iniciar sesión.",
@@ -241,7 +239,8 @@
241 "settings.app.form.showDisabledServices": "Mostrar pestañas de servicios desactivados", 239 "settings.app.form.showDisabledServices": "Mostrar pestañas de servicios desactivados",
242 "settings.app.form.showDragArea": "Mostrar área arrastrable en la ventana", 240 "settings.app.form.showDragArea": "Mostrar área arrastrable en la ventana",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Mostrar la insignia de mensajes sin leer cuando las notificaciones están desactivadas", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Mostrar la insignia de mensajes sin leer cuando las notificaciones están desactivadas",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Mostrar el nombre del servicio debajo del icono",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Activar el modo de vista separada", 244 "settings.app.form.splitMode": "Activar el modo de vista separada",
246 "settings.app.form.startMinimized": "Iniciar minimizado", 245 "settings.app.form.startMinimized": "Iniciar minimizado",
247 "settings.app.form.universalDarkMode": "Activar modo oscuro universal", 246 "settings.app.form.universalDarkMode": "Activar modo oscuro universal",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Actualizaciones", 255 "settings.app.headlineUpdates": "Actualizaciones",
257 "settings.app.hibernateInfo": "Por defecto, Ferdi mantendrá todos sus servicios abiertos y cargados en segundo plano para que estén listos cuando los necesite. La hibernación del servicio desactivará los mismos tras el tiempo especificado. Esto es útil para ahorrar RAM y evitar que los servicios ralentizen su sistema.", 256 "settings.app.hibernateInfo": "Por defecto, Ferdi mantendrá todos sus servicios abiertos y cargados en segundo plano para que estén listos cuando los necesite. La hibernación del servicio desactivará los mismos tras el tiempo especificado. Esto es útil para ahorrar RAM y evitar que los servicios ralentizen su sistema.",
258 "settings.app.inactivityLockInfo": "Minutos de inactividad, tras los cuales Ferdi debe bloquear automáticamente. Utilice 0 para desactivar", 257 "settings.app.inactivityLockInfo": "Minutos de inactividad, tras los cuales Ferdi debe bloquear automáticamente. Utilice 0 para desactivar",
259 "settings.app.languageDisclaimer": "Las traducciones oficiales son en inglés y alemán. Todos los demás idiomas son traducciones basadas en la comunidad.",
260 "settings.app.lockInfo": "El bloqueo de contraseña le permite mantener los mensajes protegidos.\nSi activa el bloqueo de contraseña, se le pedirá introducirla cada vez que inicie o bloquee Ferdi usando el símbolo de la esquina inferior izquierda o bien el acceso directo {lockShortcut}.", 258 "settings.app.lockInfo": "El bloqueo de contraseña le permite mantener los mensajes protegidos.\nSi activa el bloqueo de contraseña, se le pedirá introducirla cada vez que inicie o bloquee Ferdi usando el símbolo de la esquina inferior izquierda o bien el acceso directo {lockShortcut}.",
261 "settings.app.lockedPassword": "Contraseña", 259 "settings.app.lockedPassword": "Contraseña",
262 "settings.app.lockedPasswordInfo": "Por favor, asegúrese de establecer una contraseña que usted pueda recordar.\nSi pierde esta contraseña, tendrá que reinstalar Ferdi.", 260 "settings.app.lockedPasswordInfo": "Por favor, asegúrese de establecer una contraseña que usted pueda recordar.\nSi pierde esta contraseña, tendrá que reinstalar Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Recetas de terceros comunitarios", 284 "settings.recipes.customService.headline.communityRecipes": "Recetas de terceros comunitarios",
287 "settings.recipes.customService.headline.customRecipes": "Recetas de terceros comunitarios", 285 "settings.recipes.customService.headline.customRecipes": "Recetas de terceros comunitarios",
288 "settings.recipes.customService.headline.devRecipes": "Sus recetas de Servicio de Desarrollo", 286 "settings.recipes.customService.headline.devRecipes": "Sus recetas de Servicio de Desarrollo",
289 "settings.recipes.customService.intro": "Para añadir un servicio personalizado, copie la receta de servicio a:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Documentación para desarrolladores", 288 "settings.recipes.customService.openDevDocs": "Documentación para desarrolladores",
291 "settings.recipes.customService.openFolder": "Abrir carpeta", 289 "settings.recipes.customService.openFolder": "Abrir carpeta",
292 "settings.recipes.headline": "Servicios disponibles", 290 "settings.recipes.headline": "Servicios disponibles",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Descubrir servicios", 346 "settings.services.discoverServices": "Descubrir servicios",
349 "settings.services.headline": "Tus servicios", 347 "settings.services.headline": "Tus servicios",
350 "settings.services.noServicesAdded": "Empieze añadiendo un servicio.", 348 "settings.services.noServicesAdded": "Empieze añadiendo un servicio.",
351 "settings.services.nothingFound": "Lo sentimos, pero no pudimos encontrar ningún servicio similar a tu búsqueda, sin embargo: puedes agregarlo utilizando la opción de \"Sitio web personalizado\". \nRecuerda que pueden aparecer más servicios de los que has agregado a Ferdi desde la versión que estás utilizando. Para poder utilizar los nuevos servicios disponibles, considera actualizar a la versión más reciente.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "No pudo cargar tus servicios", 350 "settings.services.servicesRequestFailed": "No pudo cargar tus servicios",
353 "settings.services.tooltip.isDisabled": "El servicio está desactivado", 351 "settings.services.tooltip.isDisabled": "El servicio está desactivado",
354 "settings.services.tooltip.isMuted": "Todos los sonidos están silenciados", 352 "settings.services.tooltip.isMuted": "Todos los sonidos están silenciados",
355 "settings.services.tooltip.notificationsDisabled": "Las notificaciones están desactivadas", 353 "settings.services.tooltip.notificationsDisabled": "Las notificaciones están desactivadas",
356 "settings.services.updatedInfo": "Tus cambios han sido guardados", 354 "settings.services.updatedInfo": "Tus cambios han sido guardados",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi es una aplicación de código abierto y líder en la comunidad.</p><p>Gracias a la gente que lo hace possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi es una aplicación de código abierto y líder en la comunidad.</p><p>Gracias a la gente que lo hace possbile:</p>",
358 "settings.supportFerdi.bannerText": "¿Quieres ayudarnos a mejorar Ferdi?",
359 "settings.supportFerdi.headline": "Acerca de Ferdi", 356 "settings.supportFerdi.headline": "Acerca de Ferdi",
360 "settings.supportFerdi.openSurvey": "Abrir encuesta",
361 "settings.supportFerdi.textDonation": "Si desea apoyar el desarrollo de Ferdi con una donación, puede hacerlo en ambos,", 357 "settings.supportFerdi.textDonation": "Si desea apoyar el desarrollo de Ferdi con una donación, puede hacerlo en ambos,",
362 "settings.supportFerdi.textDonationAnd": "y", 358 "settings.supportFerdi.textDonationAnd": "y",
363 "settings.supportFerdi.textExpenses": "Si bien los voluntarios hacen la mayor parte del trabajo, todavía tenemos que pagar los servidores y los certificados. Como comunidad, somos completamente transparentes con los fondos que recaudamos y gastamos; consulte nuestra", 359 "settings.supportFerdi.textExpenses": "Si bien los voluntarios hacen la mayor parte del trabajo, todavía tenemos que pagar los servidores y los certificados. Como comunidad, somos completamente transparentes con los fondos que recaudamos y gastamos; consulte nuestra",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "El apoyo siempre es bienvenido. Puede encontrar una lista de la ayuda que necesitamos", 364 "settings.supportFerdi.textSupportWelcome": "El apoyo siempre es bienvenido. Puede encontrar una lista de la ayuda que necesitamos",
369 "settings.supportFerdi.textSupportWelcomeHere": "aquí", 365 "settings.supportFerdi.textSupportWelcomeHere": "aquí",
370 "settings.supportFerdi.textVolunteers": "El desarrollo de Ferdi lo realizan voluntarios. La gente que usa Ferdi como tú. Mantienen, arreglan y mejoran a Ferdi en su tiempo libre.", 366 "settings.supportFerdi.textVolunteers": "El desarrollo de Ferdi lo realizan voluntarios. La gente que usa Ferdi como tú. Mantienen, arreglan y mejoran a Ferdi en su tiempo libre.",
371 "settings.supportFerdi.title": "¿Te gusta Ferdi?",
372 "settings.team.contentHeadline": "Administración de Equipo", 367 "settings.team.contentHeadline": "Administración de Equipo",
373 "settings.team.copy": "La gestión de equipos de Franz's te permite administrar suscripciones de Franz para múltiples usuarios. Por favor, ten en cuenta que tener una suscripción a Franz Premium no te dará ninguna ventaja en el uso de Ferdi: la única razón por la que todavía tienes acceso a la Gestión de Equipos es para que puedas gestionar tus equipos de Franz y para que no pierdas ninguna funcionalidad en la gestión de tu cuenta.", 368 "settings.team.copy": "La gestión de equipos de Franz's te permite administrar suscripciones de Franz para múltiples usuarios. Por favor, ten en cuenta que tener una suscripción a Franz Premium no te dará ninguna ventaja en el uso de Ferdi: la única razón por la que todavía tienes acceso a la Gestión de Equipos es para que puedas gestionar tus equipos de Franz y para que no pierdas ninguna funcionalidad en la gestión de tu cuenta.",
374 "settings.team.headline": "Equipo", 369 "settings.team.headline": "Equipo",
diff --git a/src/i18n/locales/fa.json b/src/i18n/locales/fa.json
index be8b1be20..db528ac47 100644
--- a/src/i18n/locales/fa.json
+++ b/src/i18n/locales/fa.json
@@ -1,346 +1,455 @@
1{ 1{
2 "app.errorHandler.action": "بارگذاری مجدد", 2 "app.errorHandler.action": "Reload",
3 "app.errorHandler.headline": "اشتباهی رخ داده", 3 "app.errorHandler.headline": "Something went wrong.",
4 "connectionLostBanner.cta": "بارگذاری مجدد سرور", 4 "changeserver.customServerLabel": "Custom server",
5 "changeserver.headline": "Change server",
6 "changeserver.label": "Server",
7 "changeserver.urlError": "Enter a valid URL",
8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
9 "connectionLostBanner.cta": "Reload Service",
5 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
6 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
7 "feature.announcements.changelog.headline": "تغییرات Ùرَنز {version}", 12 "feature.basicAuth.signIn": "Sign In",
8 "feature.shareFranz.action.email": "ارسال به صورت ایمیل", 13 "feature.nightlyBuilds.activate": "Activate",
9 "feature.shareFranz.action.facebook": "اشتراک‌گذاری در Ùیس بوک", 14 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
10 "feature.shareFranz.action.twitter": "اشتراک‌گذاری در توییتر", 15 "feature.nightlyBuilds.title": "Nightly Builds",
11 "feature.shareFranz.headline": "Ferdi is better together!", 16 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
12 "feature.shareFranz.shareText.email": "من {count} تا سرویس تو Ùرَنز اضاÙÙ‡ کردم! برنامه رایگان برای واتسآپ، اسکایپ، مسنجر، اسلک رو از سایت www.getferdi.com دانلود Ú©Ù†.", 17 "feature.publishDebugInfo.info": "Publishing your debug information helps us find issues and errors in Ferdi. By publishing your debug information you accept Ferdi Debugger's privacy policy and terms of service",
13 "feature.shareFranz.shareText.twitter": "من {count} تا سرویس تو Ùرَنز اضاÙÙ‡ کردم! برنامه رایگان برای واتسآپ، اسکایپ، مسنجر، اسلک رو از سایت www.getferdi.com دانلود Ú©Ù† /cc @FerdiMessenger", 18 "feature.publishDebugInfo.privacy": "Privacy policy",
14 "feature.shareFranz.text": "به دوستات بگو Ùرَنز چقدر باحاله Ùˆ بهمون Ú©Ù…Ú© Ú©Ù† گسترش پیدا کنیم.", 19 "feature.publishDebugInfo.publish": "Accept and publish",
15 "global.api.unhealthy": "به سرویس های آنلاین Ùرَنز متصل نشدی", 20 "feature.publishDebugInfo.published": "Your debug log was published and is now availible at",
16 "global.edit": "ویرایش", 21 "feature.publishDebugInfo.terms": "Terms of service",
17 "global.franzProRequired": "Ferdi Professional Required", 22 "feature.publishDebugInfo.title": "Publish debug information",
18 "global.notConnectedToTheInternet": "اینترنت وصل نیست", 23 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
19 "global.quit": "خروج ", 24 "feature.quickSwitch.search": "Search...",
20 "global.settings": "تنظیمات", 25 "feature.quickSwitch.title": "QuickSwitch",
21 "global.spellchecker.useDefault": "استÙاده از پیشÙرض سیستم ({default})", 26 "global.api.unhealthy": "Can't connect to Ferdi online services",
22 "global.spellchecking.autodetect": "تشخیص خودکار زبان", 27 "global.cancel": "Cancel",
23 "global.spellchecking.autodetect.short": "خودکار", 28 "global.edit": "Edit",
24 "global.spellchecking.language": "زبان غلط یاب املایی", 29 "global.no": "No",
25 "global.submit": "ارسال ", 30 "global.notConnectedToTheInternet": "You are not connected to the internet.",
26 "import.headline": "جانشانی سرویس های Ùرانز 4", 31 "global.ok": "Ok",
27 "import.notSupportedHeadline": "این سرویس ها در Ferdi ۵ پشتیبانی نمیشوند.", 32 "global.quit": "Quit",
28 "import.skip.label": "میخواهم سرویس ها را به صورت دستی اضاÙÙ‡ کنم.", 33 "global.quitConfirmation": "Do you really want to quit Ferdi?",
29 "import.submit.label": "جانشانی سرویس ها", 34 "global.save": "Save",
30 "infobar.buttonChangelog": "چه خبر ؟", 35 "global.settings": "Settings",
31 "infobar.buttonInstallUpdate": "باز کردن مجدد و نصب به روز رسانی", 36 "global.spellchecker.useDefault": "Use System Default ({default})",
32 "infobar.buttonReloadServices": "بارگذاری مجدد سرویس ها", 37 "global.spellchecking.autodetect": "Detect language automatically",
33 "infobar.requiredRequestsFailed": "بارگذاری سرویس ها و اطلاعات کاربر ممکن نیست", 38 "global.spellchecking.autodetect.short": "Automatic",
34 "infobar.servicesUpdated": "سرویس های شما به روز رسانی شدند.", 39 "global.spellchecking.language": "Spell checking language",
35 "infobar.updateAvailable": "یک به روز رسانی جدید برای Ferdi آماده است.", 40 "global.submit": "Submit",
36 "invite.email.label": "نشانی ایمیل", 41 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
37 "invite.headline.friends": "دعوت Û³ Ù†Ùر از دوستان یا همکارانتان.", 42 "global.userAgentPref": "User Agent",
38 "invite.name.label": "نام ", 43 "global.yes": "Yes",
39 "invite.skip.label": "بعدا انجام میدم ", 44 "import.headline": "Import your Ferdi 4 services",
40 "invite.submit.label": "Ùرستادن دعوت نامه ها ", 45 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
41 "invite.successInfo": "دعوتنامه ها با موÙقیت ارسال شدند .", 46 "import.skip.label": "I want to add services manually",
42 "login.email.label": "نشانی ایمیل", 47 "import.submit.label": "Import {count} services",
43 "login.headline": "ورود ", 48 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.",
44 "login.invalidCredentials": "ایمیل یا رمز عبور معتبر نیست ", 49 "infobar.buttonChangelog": "What is new?",
45 "login.link.password": "تنظیم مجدد رمز عبور ", 50 "infobar.buttonInstallUpdate": "Restart & install update",
46 "login.link.signup": "ساختن یک حساب رایگان ", 51 "infobar.buttonReloadServices": "Reload services",
47 "login.password.label": "رمز عبور ", 52 "infobar.hide": "Hide",
48 "login.serverLogout": "این ارتباط منقضی شده است، لطÙا دوباره وارد شوید.", 53 "infobar.requiredRequestsFailed": "Could not load services and user information",
49 "login.submit.label": "ورود ", 54 "infobar.servicesUpdated": "Your services have been updated.",
50 "login.tokenExpired": "ارتباط شما منقضی شده، لطÙا دوباره وارد شوید.", 55 "infobar.updateAvailable": "A new update for Ferdi is available.",
56 "infobox.dismiss": "Dismiss",
57 "invite.email.label": "Email address",
58 "invite.headline.friends": "Invite 3 of your friends or colleagues",
59 "invite.name.label": "Name",
60 "invite.skip.label": "I want to do this later",
61 "invite.submit.label": "Send invites",
62 "invite.successInfo": "Invitations sent successfully",
63 "locked.headline": "Locked",
64 "locked.invalidCredentials": "Password invalid",
65 "locked.password.label": "Password",
66 "locked.submit.label": "Unlock",
67 "locked.touchId": "Unlock with Touch ID",
68 "locked.touchIdPrompt": "unlock via Touch ID",
69 "locked.unlockWithPassword": "Unlock with Password",
70 "login.changeServer": "Change server",
71 "login.customServerQuestion": "Using a Franz account to log in?",
72 "login.customServerSuggestion": "Try importing your Franz account into Ferdi",
73 "login.email.label": "Email address",
74 "login.headline": "Sign in",
75 "login.invalidCredentials": "Email or password not valid",
76 "login.link.password": "Reset password",
77 "login.link.signup": "Create a free account",
78 "login.password.label": "Password",
79 "login.serverLogout": "Your session expired, please login again.",
80 "login.submit.label": "Sign in",
81 "login.tokenExpired": "Your session expired, please login again.",
51 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 82 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
52 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 83 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
53 "menu.app.about": "درباره Ùرانز", 84 "menu.app.about": "About Ferdi",
54 "menu.app.announcement": "چه خبر؟", 85 "menu.app.autohideMenuBar": "Auto-hide menu bar",
55 "menu.app.checkForUpdates": "بررسی وجود نسخه جدید ", 86 "menu.app.checkForUpdates": "Check for updates",
56 "menu.app.hide": "مخÙی‌کردن ", 87 "menu.app.hide": "Hide",
57 "menu.app.hideOthers": "مخÙÛŒ کردن بقیه ", 88 "menu.app.hideOthers": "Hide Others",
58 "menu.app.unhide": "آشکارسازی", 89 "menu.app.unhide": "Unhide",
59 "menu.edit": "ویرایش ", 90 "menu.edit": "Edit",
60 "menu.edit.copy": "کپی", 91 "menu.edit.copy": "Copy",
61 "menu.edit.cut": "برش ", 92 "menu.edit.cut": "Cut",
62 "menu.edit.delete": "حذ٠", 93 "menu.edit.delete": "Delete",
63 "menu.edit.emojiSymbols": "شکلک و نماد ها", 94 "menu.edit.emojiSymbols": "Emoji & Symbols",
64 "menu.edit.paste": "چسباندن ", 95 "menu.edit.findInPage": "Find in Page",
65 "menu.edit.pasteAndMatchStyle": "بچسبان و با استایل هماهنگ کن.", 96 "menu.edit.paste": "Paste",
66 "menu.edit.redo": "انجام دوباره ", 97 "menu.edit.pasteAndMatchStyle": "Paste And Match Style",
67 "menu.edit.selectAll": "انتخاب همه ", 98 "menu.edit.redo": "Redo",
68 "menu.edit.speech": "سخنرانی", 99 "menu.edit.selectAll": "Select All",
69 "menu.edit.startDictation": "شروع به دیکته کردن", 100 "menu.edit.speech": "Speech",
70 "menu.edit.startSpeaking": "شروع به حر٠زدن", 101 "menu.edit.startDictation": "Start Dictation",
71 "menu.edit.stopSpeaking": "متوق٠سازی حر٠زدن", 102 "menu.edit.startSpeaking": "Start Speaking",
72 "menu.edit.undo": "برگشت", 103 "menu.edit.stopSpeaking": "Stop Speaking",
73 "menu.file": "Ùایل", 104 "menu.edit.undo": "Undo",
74 "menu.help": "راهنما", 105 "menu.file": "File",
75 "menu.help.changelog": "تغییرات", 106 "menu.help": "Help",
107 "menu.help.changelog": "Changelog",
76 "menu.help.debugInfo": "Copy Debug Information", 108 "menu.help.debugInfo": "Copy Debug Information",
77 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", 109 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.",
78 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information", 110 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information",
79 "menu.help.learnMore": "بیشتر بدانید ", 111 "menu.help.importExportData": "Import/Export Configuration Data",
80 "menu.help.privacy": "قوانین شخصی سازی", 112 "menu.help.learnMore": "Learn More",
81 "menu.help.support": "پشتیبانی", 113 "menu.help.privacy": "Privacy Statement",
82 "menu.help.tos": "شرایط ارائهٔ خدمات ", 114 "menu.help.publishDebugInfo": "Publish Debug Information",
83 "menu.services": "سرویس‌ها ", 115 "menu.help.support": "Support",
84 "menu.services.activatePreviousService": "Ùعالسازی سرویس قبلی", 116 "menu.help.tos": "Terms of Service",
85 "menu.services.addNewService": "Add New Service", 117 "menu.services": "Services",
118 "menu.services.activatePreviousService": "Activate previous service",
119 "menu.services.addNewService": "Add New Service...",
86 "menu.services.goHome": "Home", 120 "menu.services.goHome": "Home",
87 "menu.services.setNextServiceActive": "Ùعالسازی سرویس بعدی", 121 "menu.services.setNextServiceActive": "Activate next service",
88 "menu.todos": "Todos", 122 "menu.todos": "Todos",
89 "menu.todos.enableTodos": "Enable Todos", 123 "menu.todos.enableTodos": "Enable Todos",
90 "menu.view": "نمایش", 124 "menu.view": "View",
91 "menu.view.reloadFerdi": "بارگذاری مجدد Ùرَنز", 125 "menu.view.back": "Back",
92 "menu.view.reloadService": "بارگذاری مجدد سرور", 126 "menu.view.forward": "Forward",
127 "menu.view.lockFerdi": "Lock Ferdi",
128 "menu.view.openQuickSwitch": "Open Quick Switch",
129 "menu.view.reloadFerdi": "Reload Ferdi",
130 "menu.view.reloadService": "Reload Service",
93 "menu.view.reloadTodos": "Reload ToDos", 131 "menu.view.reloadTodos": "Reload ToDos",
94 "menu.view.resetZoom": "اندازه واقعی‌ ", 132 "menu.view.resetZoom": "Actual Size",
95 "menu.view.toggleDevTools": "ابزارهای گسترش دهنده", 133 "menu.view.toggleDarkMode": "Toggle Dark Mode",
96 "menu.view.toggleFullScreen": "تغییر وضعیت تمام صÙحه", 134 "menu.view.toggleDevTools": "Toggle Developer Tools",
97 "menu.view.toggleServiceDevTools": "تغییر سرویس ابزارهای توسعه", 135 "menu.view.toggleFullScreen": "Toggle Full Screen",
136 "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools",
98 "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools", 137 "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools",
99 "menu.view.zoomIn": "بزرگنمایی", 138 "menu.view.zoomIn": "Zoom In",
100 "menu.view.zoomOut": "کوچک‌نمایی", 139 "menu.view.zoomOut": "Zoom Out",
101 "menu.window": "پنجره ", 140 "menu.window": "Window",
102 "menu.window.close": "بستن ", 141 "menu.window.close": "Close",
103 "menu.window.minimize": "به زیر بردن", 142 "menu.window.minimize": "Minimize",
104 "menu.workspaces": "Ùضای کاری", 143 "menu.workspaces": "Workspaces",
105 "menu.workspaces.addNewWorkspace": "اÙزودن Ùضای کاری جدید...", 144 "menu.workspaces.addNewWorkspace": "Add New Workspace...",
106 "menu.workspaces.closeWorkspaceDrawer": "بستن کشوی Ùضای کاری", 145 "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer",
107 "menu.workspaces.defaultWorkspace": "تمامی سرویس ها", 146 "menu.workspaces.defaultWorkspace": "All services",
108 "menu.workspaces.openWorkspaceDrawer": "بازکردن کشوی Ùضای کاری", 147 "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer",
109 "password.email.label": "نشانی ایمیل", 148 "password.email.label": "Email address",
110 "password.headline": "تنظیم مجدد رمز عبور ", 149 "password.headline": "Reset password",
111 "password.link.login": "وارد شدن به اکانت خود", 150 "password.link.login": "Sign in to your account",
112 "password.link.signup": "ساخت یک حساب کاربری", 151 "password.link.signup": "Create a free account",
113 "password.noUser": "هیچ کاربری با این نشانی ایمیل یاÙت نشد ", 152 "password.noUser": "No user with that email address was found",
114 "password.successInfo": "لطÙا ایمیل خود را Ú†Ú© کنید", 153 "password.successInfo": "Your new password was sent to your email address",
115 "pricing.features.accountSync": "Account Synchronisation", 154 "service.crashHandler.action": "Reload {name}",
116 "pricing.features.adFree": "Forever ad-free", 155 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
117 "pricing.features.appDelays": "No Waiting Screens", 156 "service.crashHandler.headline": "Oh no!",
118 "pricing.features.appDelaysEnabled": "Occasional Waiting Screens", 157 "service.crashHandler.text": "{name} has caused an error.",
119 "pricing.features.customWebsites": "Add Custom Websites", 158 "service.disabledHandler.action": "Enable {name}",
120 "pricing.features.desktopNotifications": "Desktop Notifications", 159 "service.disabledHandler.headline": "{name} is disabled",
121 "pricing.features.onPremise": "On-premise & other Hosted Services", 160 "service.errorHandler.action": "Reload {name}",
122 "pricing.features.recipes": "Choose from more than 70 Services", 161 "service.errorHandler.editAction": "Edit {name}",
123 "pricing.features.serviceProxies": "Service Proxies", 162 "service.errorHandler.headline": "Oh no!",
124 "pricing.features.spellchecker": "Spellchecker support", 163 "service.errorHandler.message": "Error",
125 "pricing.features.teamManagement": "Team Management", 164 "service.errorHandler.text": "{name} has failed to load.",
126 "pricing.features.thirdPartyServices": "Install 3rd party services", 165 "service.webviewLoader.loading": "Loading {service}",
127 "pricing.features.unlimitedServices": "Add unlimited services", 166 "services.getStarted": "Get started",
128 "pricing.features.upToSixServices": "Add up to 6 services", 167 "services.login": "Please login to use Ferdi.",
129 "pricing.features.upToThreeServices": "Add up to 3 services", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
130 "pricing.features.workspaces": "Workspaces", 169 "services.serverless": "Use Ferdi without an Account",
131 "service.crashHandler.action": "بارگذاری مجدد {name}", 170 "settings.account.account.editButton": "Edit account",
132 "service.crashHandler.autoReload": "در حال بازیابی{نام} در{ثانیه} ثانیه به طور خودکار", 171 "settings.account.accountUnavailable": "Account is unavailable",
133 "service.crashHandler.headline": "وای نه! ", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
134 "service.crashHandler.text": "{نام} با مشکل مواجه شد", 173 "settings.account.buttonSave": "Update profile",
135 "service.disabledHandler.action": "{نام} Ùعال Ú©Ù†", 174 "settings.account.deleteAccount": "Delete account",
136 "service.disabledHandler.headline": "{نام} غیرÙعال است", 175 "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
137 "service.errorHandler.action": "بارگذاری مجدد {name}", 176 "settings.account.deleteInfo": "If you don't need your Ferdi account any longer, you can delete your account and all related data here.",
138 "service.errorHandler.editAction": "ویرایش {نام}", 177 "settings.account.headline": "Account",
139 "service.errorHandler.headline": "وای نه! ", 178 "settings.account.headlineAccount": "Account information",
140 "service.errorHandler.message": "خطا ", 179 "settings.account.headlineDangerZone": "Danger Zone",
141 "service.errorHandler.text": "{name} بارگذاری نشد.", 180 "settings.account.headlineInvoices": "Invoices",
142 "service.webviewLoader.loading": "در حال بارگذاری", 181 "settings.account.headlinePassword": "Change password",
143 "services.getStarted": "شروع ", 182 "settings.account.headlineProfile": "Update profile",
144 "services.welcome": "به Ùرانز خوش آمدید", 183 "settings.account.successInfo": "Your changes have been saved",
145 "settings.account.account.editButton": "ویرایش حساب کاربری", 184 "settings.account.tryReloadServices": "Try again",
146 "settings.account.accountType.basic": "اکانت ساده", 185 "settings.account.tryReloadUserInfoRequest": "Try again",
147 "settings.account.accountType.premium": "پشتیبانی پیشرÙته اکانت", 186 "settings.account.userInfoRequestFailed": "Could not load user information",
148 "settings.account.buttonSave": "بروز رسانی پروÙایل", 187 "settings.account.yourLicense": "Your Ferdi License:",
149 "settings.account.deleteAccount": "حذ٠حساب", 188 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})",
150 "settings.account.deleteEmailSent": "شما یک ایمیل حاوی لینک غیر Ùعال سازی اکانت خود را دریاÙت کرده اید. اکانت شما به هیچ وجه بازیابی نخواهد شد !", 189 "settings.app.buttonClearAllCache": "Clear cache",
151 "settings.account.deleteInfo": "چنانچه دیگر به به اکانت Ùرانز خود نیاز ندارید ØŒ میتوانید اکانت خود Ùˆ تمامی اطلاعات خود در اینجا را حذ٠کنید.", 190 "settings.app.buttonInstallUpdate": "Restart & install update",
152 "settings.account.headline": "حساب ", 191 "settings.app.buttonOpenFerdiProfileFolder": "Open Profile folder",
153 "settings.account.headlineAccount": "اطلاعات حساب ", 192 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder",
154 "settings.account.headlineDangerZone": "منطقه خطرناک", 193 "settings.app.buttonSearchForUpdate": "Check for updates",
155 "settings.account.headlineInvoices": "Ùاکتورها", 194 "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.",
156 "settings.account.headlinePassword": "تغییر کلمه عبور", 195 "settings.app.cacheNotCleared": "Couldn't clear all cache",
157 "settings.account.headlineProfile": "بروزرسانی پروÙایل", 196 "settings.app.closeSettings": "Close settings",
158 "settings.account.successInfo": "تغییرات شما ذخیره شد!", 197 "settings.app.currentVersion": "Current version:",
159 "settings.account.tryReloadServices": "تلاش مجدد ", 198 "settings.app.form.accentColor": "Accent color",
160 "settings.account.tryReloadUserInfoRequest": "تلاش مجدد ", 199 "settings.app.form.adaptableDarkMode": "Synchronize dark mode with my OS's dark mode setting",
161 "settings.account.userInfoRequestFailed": "نمی‌توان اطلاعات کاربر را بارگذاری کرد.", 200 "settings.app.form.alwaysShowWorkspaces": "Always show workspace drawer",
162 "settings.account.yourLicense": "Your Ferdi License", 201 "settings.app.form.autoLaunchInBackground": "Open in background",
163 "settings.app.buttonClearAllCache": "پاک کردن حاÙظه پنهان", 202 "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start",
164 "settings.app.buttonInstallUpdate": "باز کردن مجدد و نصب به روز رسانی ", 203 "settings.app.form.automaticUpdates": "Enable updates",
165 "settings.app.buttonSearchForUpdate": "بررسی بروزرسانی", 204 "settings.app.form.beta": "Include beta versions",
166 "settings.app.cacheInfo": "حاÙظه ÛŒ پنهانی Ùرانز هم اکنون {سایز} از Ùضای شما استÙاده میکند .", 205 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
167 "settings.app.currentVersion": "نسخهٔ Ùعلی", 206 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
168 "settings.app.form.autoLaunchInBackground": "باز کردن در پس زمینه", 207 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
169 "settings.app.form.autoLaunchOnStart": "باز شدن Ùرانز در استارت ", 208 "settings.app.form.customTodoServer": "Custom Todo Server",
170 "settings.app.form.beta": "شامل نسخه های بتا ", 209 "settings.app.form.darkMode": "Enable Dark Mode",
171 "settings.app.form.darkMode": "Ùعالسازی حالت شب", 210 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
172 "settings.app.form.enableGPUAcceleration": "Ùعال سازی شتاب GPU", 211 "settings.app.form.enableGlobalHideShortcut": "Enable Global shortcut to hide Ferdi",
173 "settings.app.form.enableSpellchecking": "Ùعال‌سازی غلط‌یابی املایی", 212 "settings.app.form.enableLock": "Enable Password Lock",
174 "settings.app.form.enableSystemTray": "Ùرانز را در system tray نشان بده", 213 "settings.app.form.enableLongPressServiceHint": "Enable service shortcut hint on long press",
214 "settings.app.form.enableMenuBar": "Always show Ferdi in Menu Bar",
215 "settings.app.form.enableSpellchecking": "Enable spell checking",
216 "settings.app.form.enableSystemTray": "Always show Ferdi in System Tray",
175 "settings.app.form.enableTodos": "Enable Ferdi Todos", 217 "settings.app.form.enableTodos": "Enable Ferdi Todos",
218 "settings.app.form.hibernateOnStartup": "Keep services in hibernation on startup",
219 "settings.app.form.hibernationStrategy": "Hibernation strategy",
220 "settings.app.form.iconSize": "Service icon size",
221 "settings.app.form.inactivityLock": "Lock after inactivity",
176 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", 222 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded",
177 "settings.app.form.language": "زبان", 223 "settings.app.form.language": "Language",
178 "settings.app.form.minimizeToSystemTray": "Ùرانز را در system tray بخوابان", 224 "settings.app.form.lockPassword": "Password",
179 "settings.app.form.runInBackground": "Ùرانز را در پشت زمینه Ù†Ú¯Ù‡ دار زمانی Ú©Ù‡ پنجره آن بسته میشود", 225 "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray",
180 "settings.app.form.showDisabledServices": "سرویس های غیرÙعال را نشان بده ", 226 "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour",
181 "settings.app.form.showMessagesBadgesWhenMuted": "نماد پیام خوانده نشده را زمانی Ú©Ù‡ نوتیÙیکیشن ها غیرÙعالند نشان بده", 227 "settings.app.form.notifyTaskBarOnMessage": "Notify TaskBar/Dock on new message",
182 "settings.app.headlineAdvanced": "پیشرÙته ", 228 "settings.app.form.passwordToggle": "Password toggle",
183 "settings.app.headlineAppearance": "ظاهر ", 229 "settings.app.form.predefinedTodoServer": "Todo Server",
184 "settings.app.headlineGeneral": "عمومی ", 230 "settings.app.form.privateNotifications": "Don't show message content in notifications",
185 "settings.app.headlineLanguage": "زبان ", 231 "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume",
186 "settings.app.headlineUpdates": "به‌روزرسانی‌ها ", 232 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
187 "settings.app.languageDisclaimer": "ترجمه های رسمی به زبان انگلیسی و آلمانی هستند. ترجمه های بقیه زبانها مردم پایه هستند.", 233 "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb",
188 "settings.app.restartRequired": "تغییر ملزومات ریستارت", 234 "settings.app.form.scheduledDNDEnd": "To",
189 "settings.app.subheadlineCache": "حاÙظه‌ی نهان", 235 "settings.app.form.scheduledDNDStart": "From",
190 "settings.app.translationHelp": "به ما Ú©Ù…Ú© کنید Ùرانز را به زبان شما ترجمه کنیم.", 236 "settings.app.form.searchEngine": "Search engine",
191 "settings.app.updateStatusAvailable": "بروزرسانی موجود است ، در حال دانلود...", 237 "settings.app.form.sentry": "Send telemetry data",
192 "settings.app.updateStatusSearching": "در حال جستجو برای بروزرسانی", 238 "settings.app.form.serviceRibbonWidth": "Sidebar width",
193 "settings.app.updateStatusUpToDate": "شما از آخرین نسخه Ùرانز استÙاده میکنید", 239 "settings.app.form.showDisabledServices": "Display disabled services tabs",
194 "settings.invite.headline": "دعوت دوستان", 240 "settings.app.form.showDragArea": "Show draggable area on window",
195 "settings.navigation.account": "حساب ", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
196 "settings.navigation.availableServices": "سرویس های موجود", 242 "settings.app.form.showServiceName": "Display service name under the icon",
197 "settings.navigation.inviteFriends": "دعوت دوستان", 243 "settings.app.form.splitColumns": "Number of columns",
198 "settings.navigation.logout": "خروج از سیستم ", 244 "settings.app.form.splitMode": "Enable Split View Mode",
199 "settings.navigation.team": "مدیریت گروه", 245 "settings.app.form.startMinimized": "Start minimized",
200 "settings.navigation.yourServices": "سرویس های شما", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
201 "settings.navigation.yourWorkspaces": "Ùضای کاری شما", 247 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
202 "settings.recipes.all": "همه سرویس ها", 248 "settings.app.form.useVerticalStyle": "Use horizontal style",
249 "settings.app.form.wakeUpStrategy": "Wake up strategy",
250 "settings.app.headlineAdvanced": "Advanced",
251 "settings.app.headlineAppearance": "Appearance",
252 "settings.app.headlineGeneral": "General",
253 "settings.app.headlineLanguage": "Language",
254 "settings.app.headlinePrivacy": "Privacy",
255 "settings.app.headlineUpdates": "Updates",
256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
259 "settings.app.lockedPassword": "Password",
260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
261 "settings.app.restartRequired": "Changes require restart",
262 "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.",
263 "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.",
264 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!",
265 "settings.app.spellCheckerLanguageInfo": "Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.",
266 "settings.app.subheadlineCache": "Cache",
267 "settings.app.subheadlineFerdiProfile": "Ferdi Profile",
268 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.",
269 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
270 "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.",
271 "settings.app.updateStatusAvailable": "Update available, downloading...",
272 "settings.app.updateStatusSearching": "Is searching for update",
273 "settings.app.updateStatusUpToDate": "You are using the latest version of Ferdi",
274 "settings.invite.headline": "Invite Friends",
275 "settings.navigation.account": "Account",
276 "settings.navigation.availableServices": "Available services",
277 "settings.navigation.logout": "Logout",
278 "settings.navigation.supportFerdi": "About Ferdi",
279 "settings.navigation.team": "Manage Team",
280 "settings.navigation.yourServices": "Your services",
281 "settings.navigation.yourWorkspaces": "Your workspaces",
282 "settings.recipes.all": "All services",
203 "settings.recipes.custom": "Custom Services", 283 "settings.recipes.custom": "Custom Services",
204 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
205 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
206 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
207 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
208 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
209 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
210 "settings.recipes.headline": "سرویس های موجود", 290 "settings.recipes.headline": "Available services",
211 "settings.recipes.missingService": "سرویسی را نیاز دارید ؟", 291 "settings.recipes.missingService": "Missing a service?",
212 "settings.recipes.nothingFound": "متاسÙیم ØŒ اما هیچ سرویسی با آنچه Ú©Ù‡ جستجو کردید مطابقت نداشت .", 292 "settings.recipes.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.",
213 "settings.recipes.servicesSuccessfulAddedInfo": "سرویس با موÙقیت اضاÙÙ‡ شد", 293 "settings.recipes.servicesSuccessfulAddedInfo": "Service successfully added",
214 "settings.searchService": "جستجوی سرویس ها", 294 "settings.searchService": "Search service",
215 "settings.service.error.goBack": "بازگشت به سرویس ها", 295 "settings.service.error.goBack": "Back to services",
216 "settings.service.error.headline": "خطا ", 296 "settings.service.error.headline": "Error",
217 "settings.service.error.message": "دستورالعمل سرویس بارگذاری نشد.", 297 "settings.service.error.message": "Could not load service recipe.",
218 "settings.service.form.addServiceHeadline": "اضاÙÙ‡ کردن {نام}", 298 "settings.service.form.addServiceHeadline": "Add {name}",
219 "settings.service.form.availableServices": "سرویس های موجود", 299 "settings.service.form.availableServices": "Available services",
220 "settings.service.form.customUrl": "سرور سÙارشی", 300 "settings.service.form.customUrl": "Custom server",
221 "settings.service.form.customUrlPremiumInfo": "برای اضاÙÙ‡ کردن سرویس هایی Ú©Ù‡ خود دارید ØŒ نیاز به پشتیبانی پیشرÙته Ùرانز را دارید", 301 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.",
222 "settings.service.form.customUrlValidationError": "نتوانستیم سرور {نام} را تایید اعتبار کنیم", 302 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness",
223 "settings.service.form.deleteButton": "حذ٠سرویس", 303 "settings.service.form.darkReaderContrast": "Dark Reader Contrast",
224 "settings.service.form.editServiceHeadline": "ویرایش {name}", 304 "settings.service.form.darkReaderSepia": "Dark Reader Sepia",
225 "settings.service.form.enableAudio": "Ùعال‌سازی صدا", 305 "settings.service.form.deleteButton": "Delete service",
226 "settings.service.form.enableBadge": "نماد پیام خوانده نشده را نشان بده ", 306 "settings.service.form.editServiceHeadline": "Edit {name}",
227 "settings.service.form.enableDarkMode": "Ùعالسازی حالت شب", 307 "settings.service.form.enableAudio": "Enable audio",
308 "settings.service.form.enableBadge": "Show unread message badges",
309 "settings.service.form.enableDarkMode": "Enable Dark Mode",
228 "settings.service.form.enableHibernation": "Enable hibernation", 310 "settings.service.form.enableHibernation": "Enable hibernation",
229 "settings.service.form.enableNotification": "Ùعال سازی اعلان‌ها", 311 "settings.service.form.enableNotification": "Enable notifications",
230 "settings.service.form.enableService": "Ùعال سازی سرویس ها", 312 "settings.service.form.enableService": "Enable service",
231 "settings.service.form.headlineBadges": "نماد پیام های خوانده نشده ", 313 "settings.service.form.enableWakeUp": "Enable wake up",
232 "settings.service.form.headlineGeneral": "عمومی", 314 "settings.service.form.headlineBadges": "Unread message badges",
233 "settings.service.form.headlineNotifications": "اعلان‌ها", 315 "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings",
234 "settings.service.form.icon": "آیکون پیشÙرض", 316 "settings.service.form.headlineGeneral": "General",
235 "settings.service.form.iconDelete": "حذÙ", 317 "settings.service.form.headlineNotifications": "Notifications",
236 "settings.service.form.iconUpload": "عکس خود را به اینجا بکشید و یا اینجا را کیلیک کنید", 318 "settings.service.form.icon": "Custom icon",
237 "settings.service.form.indirectMessageInfo": "شما از تمامی پیام های جدید در کانال ها با خبر خواهید شد نه تنها در @usernam , @channel , @here , ...", 319 "settings.service.form.iconDelete": "Delete",
238 "settings.service.form.indirectMessages": "نماد پیام را برای تمامی پیام های جدید نشان بده", 320 "settings.service.form.iconUpload": "Drop your image, or click here",
321 "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...",
322 "settings.service.form.indirectMessages": "Show message badge for all new messages",
239 "settings.service.form.isHibernatedEnabledInfo": "When enabled, a service will be shut down after a period of time to save system resources.", 323 "settings.service.form.isHibernatedEnabledInfo": "When enabled, a service will be shut down after a period of time to save system resources.",
240 "settings.service.form.isMutedInfo": "زمان غیرÙعالی ØŒ تمامی اعلان ها ،صداها Ùˆ صداهای پشت زمینه را ببند.", 324 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted",
241 "settings.service.form.name": "نام", 325 "settings.service.form.name": "Name",
242 "settings.service.form.proxy.headline": "تنظیمات پروکسی HTTP/HTTPS", 326 "settings.service.form.onlyShowFavoritesInUnreadCount": "Only show Favorites in unread count",
243 "settings.service.form.proxy.host": "آی پی پروکسی", 327 "settings.service.form.openDarkmodeCss": "Open darkmode.css",
244 "settings.service.form.proxy.info": "تنظیمات پروکسی در سرورهای Ùرَنز ذخیره نخواهد شد.", 328 "settings.service.form.openUserCss": "Open user.css",
245 "settings.service.form.proxy.isEnabled": "استÙاده از پروکسی", 329 "settings.service.form.openUserJs": "Open user.js",
246 "settings.service.form.proxy.password": "رمزعبور (اختیاری)", 330 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings",
247 "settings.service.form.proxy.port": "درگاه", 331 "settings.service.form.proxy.host": "Proxy Host/IP",
248 "settings.service.form.proxy.restartInfo": "لطÙا پس از تغییر تنظیمات پروکسی، Ùرَنز رو ریستارت Ú©Ù†.", 332 "settings.service.form.proxy.info": "Proxy settings will not be synchronized with the Ferdi servers.",
249 "settings.service.form.proxy.user": "کاربر (اختیاری)", 333 "settings.service.form.proxy.isEnabled": "Use Proxy",
250 "settings.service.form.saveButton": "ذخیره سرویس", 334 "settings.service.form.proxy.password": "Password (optional)",
251 "settings.service.form.tabHosted": "میزبان شده", 335 "settings.service.form.proxy.port": "Port",
252 "settings.service.form.tabOnPremise": "خود میزبانی", 336 "settings.service.form.proxy.restartInfo": "Please restart Ferdi after changing proxy Settings.",
253 "settings.service.form.team": "گروه", 337 "settings.service.form.proxy.user": "User (optional)",
254 "settings.service.form.useHostedService": "از هاست سرویس {نام} استÙاده شود.", 338 "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.",
255 "settings.service.form.yourServices": "سرویس های شما", 339 "settings.service.form.saveButton": "Save service",
256 "settings.services.deletedInfo": "سرویس حذ٠شده است", 340 "settings.service.form.tabHosted": "Hosted",
257 "settings.services.discoverServices": "آشکار سازی سرویس ها ", 341 "settings.service.form.tabOnPremise": "Self hosted â­ï¸",
258 "settings.services.headline": "سرویس های شما", 342 "settings.service.form.team": "Team",
259 "settings.services.noServicesAdded": "شما هیچ سرویسی هنوز اضاÙÙ‡ نکرده اید ", 343 "settings.service.form.useHostedService": "Use the hosted {name} service.",
260 "settings.services.servicesRequestFailed": "سرویس های شما بارگیری نشدن", 344 "settings.service.form.yourServices": "Your services",
261 "settings.services.tooltip.isDisabled": "سرویس غیرÙعال است", 345 "settings.services.deletedInfo": "Service has been deleted",
262 "settings.services.tooltip.isMuted": "تمامی صدا ها قطع هستند .", 346 "settings.services.discoverServices": "Discover services",
263 "settings.services.tooltip.notificationsDisabled": "اعلان ها غیرÙعالند.", 347 "settings.services.headline": "Your services",
264 "settings.services.updatedInfo": "تغییرات شما ذخیره شد .", 348 "settings.services.noServicesAdded": "Start by adding a service.",
265 "settings.team.contentHeadline": "Ùرَنز برای گروه ها", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
266 "settings.team.copy": "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", 350 "settings.services.servicesRequestFailed": "Could not load your services",
267 "settings.team.headline": "گروه", 351 "settings.services.tooltip.isDisabled": "Service is disabled",
268 "settings.team.intro": "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 352 "settings.services.tooltip.isMuted": "All sounds are muted",
269 "settings.team.manageAction": "گروهتو تو meetfranz.com مدیریت کن", 353 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
270 "settings.team.upgradeAction": "حسابت رو ارتقا بده", 354 "settings.services.updatedInfo": "Your changes have been saved",
271 "settings.user.form.accountType.company": "شرکت", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
272 "settings.user.form.accountType.individual": "شخص", 356 "settings.supportFerdi.headline": "About Ferdi",
273 "settings.user.form.accountType.label": "نوع حساب", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
274 "settings.user.form.accountType.non-profit": "شرکت خصوصی", 358 "settings.supportFerdi.textDonationAnd": "and",
275 "settings.user.form.currentPassword": "گذرواژهٔ Ùعلی", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
276 "settings.user.form.email": "ایمیل", 360 "settings.supportFerdi.textGitHubSponsors": "GitHub Sponsors",
277 "settings.user.form.firstname": "نام", 361 "settings.supportFerdi.textListContributors": "Full list of contributors",
278 "settings.user.form.lastname": "نام خانوادگی", 362 "settings.supportFerdi.textListContributorsHere": "here",
279 "settings.user.form.newPassword": "گذرواژهٔ جدید", 363 "settings.supportFerdi.textOpenCollective": "Open Collective",
280 "settings.workspace.add.form.name": "نام", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
281 "settings.workspace.add.form.submitButton": "ایجاد Ùضای کاری", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
282 "settings.workspace.form.buttonDelete": "حذ٠Ùضای کاری", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
283 "settings.workspace.form.buttonSave": "ذخیره Ùضای کاری", 367 "settings.team.contentHeadline": "Franz Team Management",
284 "settings.workspace.form.name": "نام", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
285 "settings.workspace.form.servicesInWorkspaceHeadline": "سرویس های این Ùضای کاری", 369 "settings.team.headline": "Team",
286 "settings.workspace.form.yourWorkspaces": "Ùضاهای کاری شما", 370 "settings.team.intro": "You are currently using Franz Servers, which is why you have access to Team Management.",
287 "settings.workspaces.deletedInfo": "Ùضای کاری حذ٠شد", 371 "settings.team.manageAction": "Manage your Team on meetfranz.com",
288 "settings.workspaces.headline": "Ùضاهای کاری شما", 372 "settings.team.teamsUnavailable": "Teams are unavailable",
289 "settings.workspaces.noWorkspacesAdded": "هنوز Ùضای کاری اضاÙÙ‡ نکردی.", 373 "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.",
290 "settings.workspaces.tryReloadWorkspaces": "تلاش مجدد ", 374 "settings.user.form.accountType.company": "Company",
291 "settings.workspaces.updatedInfo": "تغییرات ذخیره شدن", 375 "settings.user.form.accountType.individual": "Individual",
376 "settings.user.form.accountType.label": "Account type",
377 "settings.user.form.accountType.non-profit": "Non-Profit",
378 "settings.user.form.currentPassword": "Current password",
379 "settings.user.form.email": "Email",
380 "settings.user.form.firstname": "First Name",
381 "settings.user.form.lastname": "Last Name",
382 "settings.user.form.newPassword": "New password",
383 "settings.workspace.add.form.name": "Name",
384 "settings.workspace.add.form.submitButton": "Create workspace",
385 "settings.workspace.form.buttonDelete": "Delete workspace",
386 "settings.workspace.form.buttonSave": "Save workspace",
387 "settings.workspace.form.keepLoaded": "Keep this workspace loaded*",
388 "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.",
389 "settings.workspace.form.name": "Name",
390 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace",
391 "settings.workspace.form.yourWorkspaces": "Your workspaces",
392 "settings.workspaces.deletedInfo": "Workspace has been deleted",
393 "settings.workspaces.headline": "Your workspaces",
394 "settings.workspaces.noWorkspacesAdded": "You haven't created any workspaces yet.",
395 "settings.workspaces.tryReloadWorkspaces": "Try again",
396 "settings.workspaces.updatedInfo": "Your changes have been saved",
292 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces", 397 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces",
293 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", 398 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
294 "settings.workspaces.workspacesRequestFailed": "Ùضاهای کاری بارگذاری نشدند", 399 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces",
295 "setupAssistant.headline": "Let's get started", 400 "setupAssistant.headline": "Let's get started",
296 "setupAssistant.subheadline": "Choose from our most used services and get back on top of your messaging now.", 401 "setupAssistant.subheadline": "Choose from our most used services and get back on top of your messaging now.",
297 "setupAssistant.submit.label": "Let's go", 402 "setupAssistant.submit.label": "Let's go",
298 "sidebar.addNewService": "اضاÙÙ‡ کردن سرویس جدید", 403 "sidebar.addNewService": "Add new service",
299 "sidebar.closeTodosDrawer": "Close Ferdi Todos", 404 "sidebar.closeTodosDrawer": "Close Ferdi Todos",
300 "sidebar.closeWorkspaceDrawer": "بستن کشوی Ùضای کاری", 405 "sidebar.closeWorkspaceDrawer": "Close workspace drawer",
301 "sidebar.muteApp": "غیرÙعال کردن اعلان ها Ùˆ صدا", 406 "sidebar.lockFerdi": "Lock Ferdi",
407 "sidebar.muteApp": "Disable notifications & audio",
302 "sidebar.openTodosDrawer": "Open Ferdi Todos", 408 "sidebar.openTodosDrawer": "Open Ferdi Todos",
303 "sidebar.openWorkspaceDrawer": "بازکردن کشوی Ùضای کاری", 409 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
304 "sidebar.unmuteApp": "Ùعال سازی اعلان ها Ùˆ صدا", 410 "sidebar.unmuteApp": "Enable notifications & audio",
305 "signup.email.label": "نشانی ایمیل", 411 "signup.email.label": "Email address",
306 "signup.emailDuplicate": "یک کاربر با این ایمیل هم اکنون موجود است.", 412 "signup.emailDuplicate": "A user with that email address already exists",
307 "signup.firstname.label": "نام", 413 "signup.firstname.label": "First Name",
308 "signup.headline": "ثبت نام", 414 "signup.headline": "Sign up",
309 "signup.lastname.label": "نام خانوادگی", 415 "signup.lastname.label": "Last Name",
310 "signup.legal.info": "با ایجاد حساب Ùرانز شما قبول کرده اید Ú©Ù‡ ", 416 "signup.legal.info": "By creating a Ferdi account you accept the",
311 "signup.legal.privacy": "قوانین خصوصی سازی", 417 "signup.legal.privacy": "Privacy Statement",
312 "signup.legal.terms": "شرایط ارائهٔ خدمات", 418 "signup.legal.terms": "Terms of service",
313 "signup.link.login": "صاحب اکانت هستید ؟ وارد شوید", 419 "signup.link.login": "Already have an account, sign in?",
314 "signup.password.label": "رمز عبور", 420 "signup.password.label": "Password",
315 "signup.submit.label": "ایجاد حساب جدید", 421 "signup.submit.label": "Create account",
316 "tabs.item.deleteService": "حذ٠سرویس", 422 "tabs.item.confirmDeleteService": "Do you really want to delete the {serviceName} service?",
317 "tabs.item.disableAudio": "غیرÙعال کردن صدا", 423 "tabs.item.deleteService": "Delete service",
318 "tabs.item.disableNotifications": "غیر Ùعال کردن اعلان ها", 424 "tabs.item.disableAudio": "Disable audio",
319 "tabs.item.disableService": "غیر Ùعال کردن سرویس", 425 "tabs.item.disableDarkMode": "Disable Dark mode",
320 "tabs.item.enableAudio": "Ùعال‌سازی صدا", 426 "tabs.item.disableNotifications": "Disable notifications",
321 "tabs.item.enableNotification": "Ùعال سازی اعلان‌ها", 427 "tabs.item.disableService": "Disable service",
322 "tabs.item.enableService": "Ùعال سازی سرویس", 428 "tabs.item.enableAudio": "Enable audio",
323 "tabs.item.reload": "بارگذاری مجدد", 429 "tabs.item.enableDarkMode": "Enable Dark mode",
324 "validation.email": "{Ùیلد} معتبر نیست", 430 "tabs.item.enableNotification": "Enable notifications",
325 "validation.minLength": "{Ùیلد} باید حداقل{طول} کاراکتر داشته باشد", 431 "tabs.item.enableService": "Enable service",
326 "validation.oneRequired": "حداقل یکی الزامی هست", 432 "tabs.item.hibernateService": "Hibernate service",
327 "validation.required": "{Ùیلد} نیاز است ", 433 "tabs.item.reload": "Reload",
328 "validation.url": "{Ùیلد} URL معتبر نیست", 434 "tabs.item.wakeUpService": "Wake up service",
435 "validation.email": "{field} is not valid",
436 "validation.minLength": "{field} should be at least {length} characters long",
437 "validation.oneRequired": "At least one is required",
438 "validation.required": "{field} is required",
439 "validation.url": "{field} is not a valid URL",
329 "webControls.back": "Back", 440 "webControls.back": "Back",
330 "webControls.forward": "Forward", 441 "webControls.forward": "Forward",
331 "webControls.goHome": "Home", 442 "webControls.goHome": "Home",
332 "webControls.openInBrowser": "Open in Browser", 443 "webControls.openInBrowser": "Open in Browser",
333 "webControls.reload": "بارگذاری مجدد", 444 "webControls.reload": "Reload",
334 "welcome.loginButton": "وارد شدن به اکانت خود", 445 "welcome.loginButton": "Login to your account",
335 "welcome.signupButton": "ساخت یک حساب کاربری", 446 "welcome.signupButton": "Create a free account",
336 "workspaceDrawer.addNewWorkspaceLabel": "اÙزودن Ùضای کاری جدید", 447 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace",
337 "workspaceDrawer.allServices": "همه سرویس ها", 448 "workspaceDrawer.allServices": "All services",
338 "workspaceDrawer.headline": "Ùضاهای کاری", 449 "workspaceDrawer.headline": "Workspaces",
339 "workspaceDrawer.item.contextMenuEdit": "ویرایش", 450 "workspaceDrawer.item.contextMenuEdit": "edit",
340 "workspaceDrawer.item.noServicesAddedYet": "هنوز هیچ سرویسی اضاÙÙ‡ نشده", 451 "workspaceDrawer.item.noServicesAddedYet": "No services added yet",
341 "workspaceDrawer.premiumCtaButtonLabel": "اولین Ùضای کاریتو درست Ú©Ù†",
342 "workspaceDrawer.reactivatePremiumAccountLabel": "Ùعالسازی مجدد حساب ویژه",
343 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", 452 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>",
344 "workspaceDrawer.workspacesSettingsTooltip": "ویرایش تنظیمات Ùضاهای کاری", 453 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings",
345 "workspaces.switchingIndicator.switchingTo": "سویچ به" 454 "workspaces.switchingIndicator.switchingTo": "Switching to"
346} 455}
diff --git a/src/i18n/locales/fi.json b/src/i18n/locales/fi.json
index 0238a262e..ea87f56e3 100644
--- a/src/i18n/locales/fi.json
+++ b/src/i18n/locales/fi.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Lähetä kutsuja", 61 "invite.submit.label": "Lähetä kutsuja",
62 "invite.successInfo": "Kutsut lähetetty onnistuneesti", 62 "invite.successInfo": "Kutsut lähetetty onnistuneesti",
63 "locked.headline": "Lukittu", 63 "locked.headline": "Lukittu",
64 "locked.info": "Ferdi on tällä hetkellä lukittu. Nähdäksesi viestit avaa Ferdi salasanallasi.",
65 "locked.invalidCredentials": "Virheellinen salasana", 64 "locked.invalidCredentials": "Virheellinen salasana",
66 "locked.password.label": "Salasana", 65 "locked.password.label": "Salasana",
67 "locked.submit.label": "Avaa lukitus", 66 "locked.submit.label": "Avaa lukitus",
@@ -168,7 +167,6 @@
168 "services.login": "Kirjaudu sisään käyttääksesi Ferdiä.", 167 "services.login": "Kirjaudu sisään käyttääksesi Ferdiä.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Käytä Ferdia ilman tiliä", 169 "services.serverless": "Käytä Ferdia ilman tiliä",
171 "services.welcome": "Tervetuloa Ferdiin",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Tili ei ole käytettävissä", 171 "settings.account.accountUnavailable": "Tili ei ole käytettävissä",
174 "settings.account.accountUnavailableInfo": "Käytät Ferdia ilman tiliä. Jos haluat käyttää Ferdia tilin kanssa ja pitää palvelusi synkronoituna kaikissa asennuksissa, valitse Asetukset-välilehdessä palvelin ja kirjaudu sisään.", 172 "settings.account.accountUnavailableInfo": "Käytät Ferdia ilman tiliä. Jos haluat käyttää Ferdia tilin kanssa ja pitää palvelusi synkronoituna kaikissa asennuksissa, valitse Asetukset-välilehdessä palvelin ja kirjaudu sisään.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Näytä ikkunassa siirrettävä alue", 240 "settings.app.form.showDragArea": "Näytä ikkunassa siirrettävä alue",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Näytä merkki lukemattomasta viestistä kun ilmoitukset on poistettu käytöstä", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Näytä merkki lukemattomasta viestistä kun ilmoitukset on poistettu käytöstä",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Käynnistä pienennettynä", 245 "settings.app.form.startMinimized": "Käynnistä pienennettynä",
247 "settings.app.form.universalDarkMode": "Ota käyttöön yleinen tumma tila", 246 "settings.app.form.universalDarkMode": "Ota käyttöön yleinen tumma tila",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Päivitykset", 255 "settings.app.headlineUpdates": "Päivitykset",
257 "settings.app.hibernateInfo": "Oletuksena Ferdi pitää kaikki palvelut auki ja ladattuna taustalla, joten ne ovat valmiina, kun haluat käyttää niitä. Horrostila sammuttaa palveluita tietyn jakson jälkeen. Tämä kätevä toimino säästää RAM-muistia tai estää palveluita hidastamasta tietokonetta.", 256 "settings.app.hibernateInfo": "Oletuksena Ferdi pitää kaikki palvelut auki ja ladattuna taustalla, joten ne ovat valmiina, kun haluat käyttää niitä. Horrostila sammuttaa palveluita tietyn jakson jälkeen. Tämä kätevä toimino säästää RAM-muistia tai estää palveluita hidastamasta tietokonetta.",
258 "settings.app.inactivityLockInfo": "Minuutin käyttämättömyyden jälkeen Ferdi lukkiutuu automaattisesti. Käytä arvoa 0 poistaaksesi toiminnon käytöstä", 257 "settings.app.inactivityLockInfo": "Minuutin käyttämättömyyden jälkeen Ferdi lukkiutuu automaattisesti. Käytä arvoa 0 poistaaksesi toiminnon käytöstä",
259 "settings.app.languageDisclaimer": "Viralliset käännökset ovat englanti ja saksa. Kaikki muut kielet ovat yhteisön kääntämiä.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Salasana", 259 "settings.app.lockedPassword": "Salasana",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Yhteisön Kolmannen osapuolen Ohjeet", 284 "settings.recipes.customService.headline.communityRecipes": "Yhteisön Kolmannen osapuolen Ohjeet",
287 "settings.recipes.customService.headline.customRecipes": "Kolmannen osapuolen ohjeet", 285 "settings.recipes.customService.headline.customRecipes": "Kolmannen osapuolen ohjeet",
288 "settings.recipes.customService.headline.devRecipes": "Ohjeet palvelun kehittämiseen", 286 "settings.recipes.customService.headline.devRecipes": "Ohjeet palvelun kehittämiseen",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Ohjelmoijan dokumentaatio", 288 "settings.recipes.customService.openDevDocs": "Ohjelmoijan dokumentaatio",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Käytettävissä olevat palvelut", 290 "settings.recipes.headline": "Käytettävissä olevat palvelut",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Selaa palveluita", 346 "settings.services.discoverServices": "Selaa palveluita",
349 "settings.services.headline": "Sinun palvelusi", 347 "settings.services.headline": "Sinun palvelusi",
350 "settings.services.noServicesAdded": "Aloita lisäämällä palvelu.", 348 "settings.services.noServicesAdded": "Aloita lisäämällä palvelu.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Palveluita ei voitu ladata", 350 "settings.services.servicesRequestFailed": "Palveluita ei voitu ladata",
353 "settings.services.tooltip.isDisabled": "Palvelu poistettu käytöstä", 351 "settings.services.tooltip.isDisabled": "Palvelu poistettu käytöstä",
354 "settings.services.tooltip.isMuted": "Kaikki äänet on mykistetty", 352 "settings.services.tooltip.isMuted": "Kaikki äänet on mykistetty",
355 "settings.services.tooltip.notificationsDisabled": "Ilmoitukset on poistettu käytöstä", 353 "settings.services.tooltip.notificationsDisabled": "Ilmoitukset on poistettu käytöstä",
356 "settings.services.updatedInfo": "Tekemäsi muutokset on tallennettu", 354 "settings.services.updatedInfo": "Tekemäsi muutokset on tallennettu",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi on yhteisöjohtoinen ja avoimen lähdekoodin sovellus.</p><p>Kiitos henkilöille, jotka tekevät tämän mahdolliseksi:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi on yhteisöjohtoinen ja avoimen lähdekoodin sovellus.</p><p>Kiitos henkilöille, jotka tekevät tämän mahdolliseksi:</p>",
358 "settings.supportFerdi.bannerText": "Haluatko auttaa meitä kehittämään Ferdiä?",
359 "settings.supportFerdi.headline": "Tietoja Ferdistä", 356 "settings.supportFerdi.headline": "Tietoja Ferdistä",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "Jos haluat tukea Ferdin kehitystä lahjoituksella, voit tehdä niin molemmilla tavoilla,", 357 "settings.supportFerdi.textDonation": "Jos haluat tukea Ferdin kehitystä lahjoituksella, voit tehdä niin molemmilla tavoilla,",
362 "settings.supportFerdi.textDonationAnd": "ja", 358 "settings.supportFerdi.textDonationAnd": "ja",
363 "settings.supportFerdi.textExpenses": "Vaikka vapaaehtoiset tekevät suurimman osan työstä, meidän on silti maksettava palvelemista ja sertifikaateista. Olemme yhteisönä täysin läpinäkyviä keräämiämme ja käyttämiemme varojen suhteen", 359 "settings.supportFerdi.textExpenses": "Vaikka vapaaehtoiset tekevät suurimman osan työstä, meidän on silti maksettava palvelemista ja sertifikaateista. Olemme yhteisönä täysin läpinäkyviä keräämiämme ja käyttämiemme varojen suhteen",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Tuki on aina tervetullutta. Voit saada listan tarvitsemastamme avusta", 364 "settings.supportFerdi.textSupportWelcome": "Tuki on aina tervetullutta. Voit saada listan tarvitsemastamme avusta",
369 "settings.supportFerdi.textSupportWelcomeHere": "tästä", 365 "settings.supportFerdi.textSupportWelcomeHere": "tästä",
370 "settings.supportFerdi.textVolunteers": "Ferdin kehittäminen tehdään vapaaehtoisten avulla. Ihmisillä, jotka käyttävät Ferdiä kuten sinä. He ylläpitävät, korjaavat ja parantavat Ferdia vapaa-aikanaan.", 366 "settings.supportFerdi.textVolunteers": "Ferdin kehittäminen tehdään vapaaehtoisten avulla. Ihmisillä, jotka käyttävät Ferdiä kuten sinä. He ylläpitävät, korjaavat ja parantavat Ferdia vapaa-aikanaan.",
371 "settings.supportFerdi.title": "Pidätkö Ferdistä?",
372 "settings.team.contentHeadline": "Franz-tiimin hallinta", 367 "settings.team.contentHeadline": "Franz-tiimin hallinta",
373 "settings.team.copy": "Franzin Tiimihallinnan avulla voit hallita usean käyttäjän Franz-tilauksia. Huomioithan, että Franz Premium -tilaus ei anna sinulle etuja Ferdin käytössä: Ainoa syy siihen, että sinulla on vielä pääsy Tiimihallintaan, on se, että voit hallita perinteisiä Franz-tiimejä ja että et menetä mitään toimintoja tilisi hallinnassa.", 368 "settings.team.copy": "Franzin Tiimihallinnan avulla voit hallita usean käyttäjän Franz-tilauksia. Huomioithan, että Franz Premium -tilaus ei anna sinulle etuja Ferdin käytössä: Ainoa syy siihen, että sinulla on vielä pääsy Tiimihallintaan, on se, että voit hallita perinteisiä Franz-tiimejä ja että et menetä mitään toimintoja tilisi hallinnassa.",
374 "settings.team.headline": "Tiimi", 369 "settings.team.headline": "Tiimi",
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json
index ba5af2f86..16d806321 100644
--- a/src/i18n/locales/fr.json
+++ b/src/i18n/locales/fr.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Envoyer des invitations", 61 "invite.submit.label": "Envoyer des invitations",
62 "invite.successInfo": "Invitations envoyées avec succès", 62 "invite.successInfo": "Invitations envoyées avec succès",
63 "locked.headline": "Verrouiller", 63 "locked.headline": "Verrouiller",
64 "locked.info": "Ferdi est actuellement verrouillé. Veuillez déverrouiller Ferdi avec votre mot de passe pour voir vos messages.",
65 "locked.invalidCredentials": "Mot de passe invalide", 64 "locked.invalidCredentials": "Mot de passe invalide",
66 "locked.password.label": "Mot de passe", 65 "locked.password.label": "Mot de passe",
67 "locked.submit.label": "Déverrouiller", 66 "locked.submit.label": "Déverrouiller",
@@ -168,7 +167,6 @@
168 "services.login": "Veuillez vous connecter pour utiliser Ferdi.", 167 "services.login": "Veuillez vous connecter pour utiliser Ferdi.",
169 "services.serverInfo": "Optionnellement, vous pouvez changer de serveur Ferdi en cliquant sur le contrôle dans le coin inférieur gauche. Si vous basculez d'un serveur hébergé à une utilisation de Ferdi sans compte, vous pouvez exporter vos données depuis ce serveur et ensuite l'importer en utilisant le menu Aide pour ressusciter tous vos espaces de travail et services configurés !", 168 "services.serverInfo": "Optionnellement, vous pouvez changer de serveur Ferdi en cliquant sur le contrôle dans le coin inférieur gauche. Si vous basculez d'un serveur hébergé à une utilisation de Ferdi sans compte, vous pouvez exporter vos données depuis ce serveur et ensuite l'importer en utilisant le menu Aide pour ressusciter tous vos espaces de travail et services configurés !",
170 "services.serverless": "Utiliser Ferdi sans compte", 169 "services.serverless": "Utiliser Ferdi sans compte",
171 "services.welcome": "Bienvenue dans Ferdi",
172 "settings.account.account.editButton": "Modifier le compte", 170 "settings.account.account.editButton": "Modifier le compte",
173 "settings.account.accountUnavailable": "Compte indisponible", 171 "settings.account.accountUnavailable": "Compte indisponible",
174 "settings.account.accountUnavailableInfo": "Vous utilisez Ferdi sans compte. Si vous souhaitez utiliser Ferdi avec un compte et garder vos services synchronisés entre les installations, sélectionnez un serveur dans l'onglet Paramètres, puis connectez-vous.", 172 "settings.account.accountUnavailableInfo": "Vous utilisez Ferdi sans compte. Si vous souhaitez utiliser Ferdi avec un compte et garder vos services synchronisés entre les installations, sélectionnez un serveur dans l'onglet Paramètres, puis connectez-vous.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Afficher les zones de glisser-déposer dans la fenêtre", 240 "settings.app.form.showDragArea": "Afficher les zones de glisser-déposer dans la fenêtre",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Afficher les badges de messages non lus quand les notifications sont désactivées", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Afficher les badges de messages non lus quand les notifications sont désactivées",
244 "settings.app.form.showServiceName": "Afficher le nom du service sous l'icône", 242 "settings.app.form.showServiceName": "Afficher le nom du service sous l'icône",
243 "settings.app.form.splitColumns": "Nombre de colonnes",
245 "settings.app.form.splitMode": "Activer le Mode Vue Divisée", 244 "settings.app.form.splitMode": "Activer le Mode Vue Divisée",
246 "settings.app.form.startMinimized": "Démarrage minimisé", 245 "settings.app.form.startMinimized": "Démarrage minimisé",
247 "settings.app.form.universalDarkMode": "Activer le mode sombre universel", 246 "settings.app.form.universalDarkMode": "Activer le mode sombre universel",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Mises à jour", 255 "settings.app.headlineUpdates": "Mises à jour",
257 "settings.app.hibernateInfo": "Par défaut, Ferdi gardera tous vos services ouverts et chargés en arrière-plan afin qu'ils soient prêts lorsque vous voulez les utiliser. Le service d'hibernation déchargera vos services après un montant spécifié. Ceci est utile pour sauver de la RAM ou garder les services de ralentir votre ordinateur.", 256 "settings.app.hibernateInfo": "Par défaut, Ferdi gardera tous vos services ouverts et chargés en arrière-plan afin qu'ils soient prêts lorsque vous voulez les utiliser. Le service d'hibernation déchargera vos services après un montant spécifié. Ceci est utile pour sauver de la RAM ou garder les services de ralentir votre ordinateur.",
258 "settings.app.inactivityLockInfo": "Minutes d'inactivité, après lesquelles Ferdi devrait se verrouiller automatiquement. Utilisez 0 pour désactiver", 257 "settings.app.inactivityLockInfo": "Minutes d'inactivité, après lesquelles Ferdi devrait se verrouiller automatiquement. Utilisez 0 pour désactiver",
259 "settings.app.languageDisclaimer": "Les traductions officielles sont l'anglais et l'allemand. Toutes les autres langues sont des traductions faites par la communauté.",
260 "settings.app.lockInfo": "Le verrouillage par mot de passe vous permet de garder vos messages protégés.\nPour l'utilisation du verrouillage par mot de passe, vous serez invité à entrer votre mot de passe chaque fois que vous démarrez Ferdi ou que vous verrouillerez Ferdi vous-même en utilisant le symbole de verrouillage en bas à gauche ou le raccourci {lockShortcut}.", 258 "settings.app.lockInfo": "Le verrouillage par mot de passe vous permet de garder vos messages protégés.\nPour l'utilisation du verrouillage par mot de passe, vous serez invité à entrer votre mot de passe chaque fois que vous démarrez Ferdi ou que vous verrouillerez Ferdi vous-même en utilisant le symbole de verrouillage en bas à gauche ou le raccourci {lockShortcut}.",
261 "settings.app.lockedPassword": "Mot de passe", 259 "settings.app.lockedPassword": "Mot de passe",
262 "settings.app.lockedPasswordInfo": "Veuillez vous assurer de définir un mot de passe dont vous vous souviendrez.\nSi vous perdez ce mot de passe, vous devrez réinstaller Ferdi.", 260 "settings.app.lockedPasswordInfo": "Veuillez vous assurer de définir un mot de passe dont vous vous souviendrez.\nSi vous perdez ce mot de passe, vous devrez réinstaller Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Recettes tiers communautaire", 284 "settings.recipes.customService.headline.communityRecipes": "Recettes tiers communautaire",
287 "settings.recipes.customService.headline.customRecipes": "Recettes tiers modifiées", 285 "settings.recipes.customService.headline.customRecipes": "Recettes tiers modifiées",
288 "settings.recipes.customService.headline.devRecipes": "Vos recettes de service de développement", 286 "settings.recipes.customService.headline.devRecipes": "Vos recettes de service de développement",
289 "settings.recipes.customService.intro": "Pour ajouter un service personnalisé, copiez la recette du service à:", 287 "settings.recipes.customService.intro": "Pour ajouter un service personnalisé, copiez le dossier de recettes du service ici:",
290 "settings.recipes.customService.openDevDocs": "Documentation de Développeur", 288 "settings.recipes.customService.openDevDocs": "Documentation de Développeur",
291 "settings.recipes.customService.openFolder": "Ouvrir le dossier", 289 "settings.recipes.customService.openFolder": "Ouvrir le dossier",
292 "settings.recipes.headline": "Services disponibles", 290 "settings.recipes.headline": "Services disponibles",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Découvrir les services", 346 "settings.services.discoverServices": "Découvrir les services",
349 "settings.services.headline": "Vos services", 347 "settings.services.headline": "Vos services",
350 "settings.services.noServicesAdded": "Commencez par ajouter un service.", 348 "settings.services.noServicesAdded": "Commencez par ajouter un service.",
351 "settings.services.nothingFound": "Désolé, mais aucun service ne correspond à votre recherche - mais vous pouvez toujours l'ajouter en utilisant l'option \"Custom Website\". Veuillez noter que le site Web pourrait afficher plus de services qui ont été ajoutés à Ferdi depuis la version sur laquelle vous êtes actuellement. Pour obtenir ces nouveaux services, veuillez envisager la mise à niveau vers une version plus récente de Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Impossible de charger vos services", 350 "settings.services.servicesRequestFailed": "Impossible de charger vos services",
353 "settings.services.tooltip.isDisabled": "Ce service est désactivé", 351 "settings.services.tooltip.isDisabled": "Ce service est désactivé",
354 "settings.services.tooltip.isMuted": "Tous les sons sont coupés", 352 "settings.services.tooltip.isMuted": "Tous les sons sont coupés",
355 "settings.services.tooltip.notificationsDisabled": "Notifications désactivées", 353 "settings.services.tooltip.notificationsDisabled": "Notifications désactivées",
356 "settings.services.updatedInfo": "Vos modifications ont été enregistrées", 354 "settings.services.updatedInfo": "Vos modifications ont été enregistrées",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi est une application open-source et dirigée par la communauté.</p><p>Merci à toutes les personnes qui rendent cela possible :</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi est une application open-source et dirigée par la communauté.</p><p>Merci à toutes les personnes qui rendent cela possible :</p>",
358 "settings.supportFerdi.bannerText": "Voulez-vous nous aider à améliorer Ferdi ?",
359 "settings.supportFerdi.headline": "À propos de Ferdi", 356 "settings.supportFerdi.headline": "À propos de Ferdi",
360 "settings.supportFerdi.openSurvey": "Ouvrir l'enquête",
361 "settings.supportFerdi.textDonation": "Si vous avez envie de soutenir le développement de Ferdi par un don, vous pouvez le faire via", 357 "settings.supportFerdi.textDonation": "Si vous avez envie de soutenir le développement de Ferdi par un don, vous pouvez le faire via",
362 "settings.supportFerdi.textDonationAnd": "et", 358 "settings.supportFerdi.textDonationAnd": "et",
363 "settings.supportFerdi.textExpenses": "Bien que les bénévoles fassent la majeure partie du travail, nous avons besoin de payer pour les serveurs et les certificats. En tant que communauté, nous sommes totalement transparents sur les fonds que nous collectons et dépensons - voir nos", 359 "settings.supportFerdi.textExpenses": "Bien que les bénévoles fassent la majeure partie du travail, nous avons besoin de payer pour les serveurs et les certificats. En tant que communauté, nous sommes totalement transparents sur les fonds que nous collectons et dépensons - voir nos",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Toute aide est toujours la bienvenue. Vous pouvez trouver une liste de l'aide dont nous avons besoin", 364 "settings.supportFerdi.textSupportWelcome": "Toute aide est toujours la bienvenue. Vous pouvez trouver une liste de l'aide dont nous avons besoin",
369 "settings.supportFerdi.textSupportWelcomeHere": "ici", 365 "settings.supportFerdi.textSupportWelcomeHere": "ici",
370 "settings.supportFerdi.textVolunteers": "Le développement de Ferdi est fait par des bénévoles. Des gens qui utilisent Ferdi comme vous. Ils maintiennent, réparent et améliorent Ferdi pendant leur temps libre.", 366 "settings.supportFerdi.textVolunteers": "Le développement de Ferdi est fait par des bénévoles. Des gens qui utilisent Ferdi comme vous. Ils maintiennent, réparent et améliorent Ferdi pendant leur temps libre.",
371 "settings.supportFerdi.title": "Vous aimez Ferdi ?",
372 "settings.team.contentHeadline": "Gestion d'équipe Franz", 367 "settings.team.contentHeadline": "Gestion d'équipe Franz",
373 "settings.team.copy": "La gestion d'équipe de Franz vous permet de gérer les abonnements Franz pour plusieurs utilisateurs. N’oubliez pas que le fait d’avoir un abonnement Franz Premium ne vous donnera aucun avantage dans l'utilisation de Ferdi : la seule raison pour laquelle vous avez encore accès à la gestion d’équipe est que vous pouvez gérer vos équipes Franz héritées et que vous ne perdez donc aucune fonctionnalité dans la gestion de votre compte.", 368 "settings.team.copy": "La gestion d'équipe de Franz vous permet de gérer les abonnements Franz pour plusieurs utilisateurs. N’oubliez pas que le fait d’avoir un abonnement Franz Premium ne vous donnera aucun avantage dans l'utilisation de Ferdi : la seule raison pour laquelle vous avez encore accès à la gestion d’équipe est que vous pouvez gérer vos équipes Franz héritées et que vous ne perdez donc aucune fonctionnalité dans la gestion de votre compte.",
374 "settings.team.headline": "Équipe", 369 "settings.team.headline": "Équipe",
diff --git a/src/i18n/locales/ga.json b/src/i18n/locales/ga.json
index 1d9596a79..ade9c3fbf 100644
--- a/src/i18n/locales/ga.json
+++ b/src/i18n/locales/ga.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Seol cuirí", 61 "invite.submit.label": "Seol cuirí",
62 "invite.successInfo": "Cuirí seolta go rathúil", 62 "invite.successInfo": "Cuirí seolta go rathúil",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Fáilte go Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Taispeáin teachtaireachtaí neamhléite, nuair a dhíchumasaítear fógraí", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Taispeáin teachtaireachtaí neamhléite, nuair a dhíchumasaítear fógraí",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Nuashonruithe", 255 "settings.app.headlineUpdates": "Nuashonruithe",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Seirbhísí le fáil", 290 "settings.recipes.headline": "Seirbhísí le fáil",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Aimsigh seirbhísí", 346 "settings.services.discoverServices": "Aimsigh seirbhísí",
349 "settings.services.headline": "Do sheirbhísí", 347 "settings.services.headline": "Do sheirbhísí",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Seirbhís díchumasaithe", 351 "settings.services.tooltip.isDisabled": "Seirbhís díchumasaithe",
354 "settings.services.tooltip.isMuted": "Tachtar gach fuaim", 352 "settings.services.tooltip.isMuted": "Tachtar gach fuaim",
355 "settings.services.tooltip.notificationsDisabled": "Fógraí dhíchumasaithe", 353 "settings.services.tooltip.notificationsDisabled": "Fógraí dhíchumasaithe",
356 "settings.services.updatedInfo": "Sábháladh do chuid athruithe", 354 "settings.services.updatedInfo": "Sábháladh do chuid athruithe",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "Faoi Ferdi", 356 "settings.supportFerdi.headline": "Faoi Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Foireann", 369 "settings.team.headline": "Foireann",
diff --git a/src/i18n/locales/he.json b/src/i18n/locales/he.json
index 226c66943..b25aaa67b 100644
--- a/src/i18n/locales/he.json
+++ b/src/i18n/locales/he.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "שלח הזמנות", 61 "invite.submit.label": "שלח הזמנות",
62 "invite.successInfo": "ההזמנות נשלחו בהצלחה", 62 "invite.successInfo": "ההזמנות נשלחו בהצלחה",
63 "locked.headline": "נעול", 63 "locked.headline": "נעול",
64 "locked.info": "Ferdi נעול כרגע. ×× × ×‘×˜×œ ×ת נעילת Ferdi ב×מצעות הסיסמה כדי לר×ות ×ת ההודעות שלך.",
65 "locked.invalidCredentials": "×”×¡×™×¡×ž× ××™× ×” תקינה", 64 "locked.invalidCredentials": "×”×¡×™×¡×ž× ××™× ×” תקינה",
66 "locked.password.label": "סיסמ×", 65 "locked.password.label": "סיסמ×",
67 "locked.submit.label": "בטל נעילה", 66 "locked.submit.label": "בטל נעילה",
@@ -168,7 +167,6 @@
168 "services.login": "×× × ×”×ª×—×‘×¨ כדי להשתמש בפרדי.", 167 "services.login": "×× × ×”×ª×—×‘×¨ כדי להשתמש בפרדי.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "השתמש בפרדי ×œ×œ× ×—×©×‘×•×Ÿ", 169 "services.serverless": "השתמש בפרדי ×œ×œ× ×—×©×‘×•×Ÿ",
171 "services.welcome": "ברוך ×”×‘× ×œ×¤×¨×“×™",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "החשבון ×ינו זמין", 171 "settings.account.accountUnavailable": "החשבון ×ינו זמין",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "התחלה במצב ממוזער", 245 "settings.app.form.startMinimized": "התחלה במצב ממוזער",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "עדכוני×", 255 "settings.app.headlineUpdates": "עדכוני×",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "סיסמ×", 259 "settings.app.lockedPassword": "סיסמ×",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "תיעוד למפתחי×", 288 "settings.recipes.customService.openDevDocs": "תיעוד למפתחי×",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "×©×™×¨×•×ª×™× ×–×ž×™× ×™×", 290 "settings.recipes.headline": "×©×™×¨×•×ª×™× ×–×ž×™× ×™×",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "גלה ×©×™×¨×•×ª×™× ×—×“×©×™×", 346 "settings.services.discoverServices": "גלה ×©×™×¨×•×ª×™× ×—×“×©×™×",
349 "settings.services.headline": "×”×©×™×¨×•×ª×™× ×©×œ×š", 347 "settings.services.headline": "×”×©×™×¨×•×ª×™× ×©×œ×š",
350 "settings.services.noServicesAdded": "התחל להוסיף שירותי×.", 348 "settings.services.noServicesAdded": "התחל להוסיף שירותי×.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "×œ× × ×™×ª לטעון ×ת ×”×©×™×¨×•×ª×™× ×©×œ×š", 350 "settings.services.servicesRequestFailed": "×œ× × ×™×ª לטעון ×ת ×”×©×™×¨×•×ª×™× ×©×œ×š",
353 "settings.services.tooltip.isDisabled": "השירות מושבת", 351 "settings.services.tooltip.isDisabled": "השירות מושבת",
354 "settings.services.tooltip.isMuted": "כל ×”×¦×œ×™×œ×™× ×ž×•×©×ª×§×™×", 352 "settings.services.tooltip.isMuted": "כל ×”×¦×œ×™×œ×™× ×ž×•×©×ª×§×™×",
355 "settings.services.tooltip.notificationsDisabled": "ההתר×ות מושבתות", 353 "settings.services.tooltip.notificationsDisabled": "ההתר×ות מושבתות",
356 "settings.services.updatedInfo": "×”×©×™× ×•×™×™× ×©×œ×š נשמרו", 354 "settings.services.updatedInfo": "×”×©×™× ×•×™×™× ×©×œ×š נשמרו",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "×”×× ×ª×¨×¦×” לעזור לנו לשפר ×ת פרדי?",
359 "settings.supportFerdi.headline": "×ודות פרדי", 356 "settings.supportFerdi.headline": "×ודות פרדי",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "×× ×ª×¨×¦×” לתמוך בפרדי ב×מצעות תרומה, ×תה יכול לעשות ×–×ת ×’×,", 357 "settings.supportFerdi.textDonation": "×× ×ª×¨×¦×” לתמוך בפרדי ב×מצעות תרומה, ×תה יכול לעשות ×–×ת ×’×,",
362 "settings.supportFerdi.textDonationAnd": "וג×", 358 "settings.supportFerdi.textDonationAnd": "וג×",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "×›×ן", 365 "settings.supportFerdi.textSupportWelcomeHere": "×›×ן",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "×”×× ×תה ×והב ×ת פרדי?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "צוות", 369 "settings.team.headline": "צוות",
diff --git a/src/i18n/locales/hi.json b/src/i18n/locales/hi.json
index 2544d2a00..db528ac47 100644
--- a/src/i18n/locales/hi.json
+++ b/src/i18n/locales/hi.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Send invites", 61 "invite.submit.label": "Send invites",
62 "invite.successInfo": "Invitations sent successfully", 62 "invite.successInfo": "Invitations sent successfully",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Welcome to Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Updates", 255 "settings.app.headlineUpdates": "Updates",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Available services", 290 "settings.recipes.headline": "Available services",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Discover services", 346 "settings.services.discoverServices": "Discover services",
349 "settings.services.headline": "Your services", 347 "settings.services.headline": "Your services",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Service is disabled", 351 "settings.services.tooltip.isDisabled": "Service is disabled",
354 "settings.services.tooltip.isMuted": "All sounds are muted", 352 "settings.services.tooltip.isMuted": "All sounds are muted",
355 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 353 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
356 "settings.services.updatedInfo": "Your changes have been saved", 354 "settings.services.updatedInfo": "Your changes have been saved",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "About Ferdi", 356 "settings.supportFerdi.headline": "About Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
diff --git a/src/i18n/locales/hr.json b/src/i18n/locales/hr.json
index 81e76fc9f..83611ff1b 100644
--- a/src/i18n/locales/hr.json
+++ b/src/i18n/locales/hr.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Pošalji pozivnice", 61 "invite.submit.label": "Pošalji pozivnice",
62 "invite.successInfo": "Pozivnice uspješno poslane", 62 "invite.successInfo": "Pozivnice uspješno poslane",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Dobrodošli u Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Pokaži neproÄitane znaÄke poruka kad se obavjeÅ¡tenja onemoguće", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Pokaži neproÄitane znaÄke poruka kad se obavjeÅ¡tenja onemoguće",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Nadogradnje", 255 "settings.app.headlineUpdates": "Nadogradnje",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Dostupne usluge", 290 "settings.recipes.headline": "Dostupne usluge",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Pronađite usluge", 346 "settings.services.discoverServices": "Pronađite usluge",
349 "settings.services.headline": "Vaše usluge", 347 "settings.services.headline": "Vaše usluge",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Usluga je onemogućena. ", 351 "settings.services.tooltip.isDisabled": "Usluga je onemogućena. ",
354 "settings.services.tooltip.isMuted": "Svi zvukovi su onemogućeni. ", 352 "settings.services.tooltip.isMuted": "Svi zvukovi su onemogućeni. ",
355 "settings.services.tooltip.notificationsDisabled": "Obavijesti su onemogućene.", 353 "settings.services.tooltip.notificationsDisabled": "Obavijesti su onemogućene.",
356 "settings.services.updatedInfo": "Vaše promjene su spremljene", 354 "settings.services.updatedInfo": "Vaše promjene su spremljene",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "O aplikaciji", 356 "settings.supportFerdi.headline": "O aplikaciji",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Tim", 369 "settings.team.headline": "Tim",
diff --git a/src/i18n/locales/hu.json b/src/i18n/locales/hu.json
index 05546e271..a8fa40c99 100644
--- a/src/i18n/locales/hu.json
+++ b/src/i18n/locales/hu.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Meghívók küldése", 61 "invite.submit.label": "Meghívók küldése",
62 "invite.successInfo": "Meghívás sikeresen elküldve", 62 "invite.successInfo": "Meghívás sikeresen elküldve",
63 "locked.headline": "Zárolva", 63 "locked.headline": "Zárolva",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Érvénytelen jelszó", 64 "locked.invalidCredentials": "Érvénytelen jelszó",
66 "locked.password.label": "Jelszó", 65 "locked.password.label": "Jelszó",
67 "locked.submit.label": "Feloldás", 66 "locked.submit.label": "Feloldás",
@@ -168,7 +167,6 @@
168 "services.login": "Kérlek, lépj be a Ferdi használatához.", 167 "services.login": "Kérlek, lépj be a Ferdi használatához.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Üdvözöl a Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "A Fiók nem érhető el", 171 "settings.account.accountUnavailable": "A Fiók nem érhető el",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Mutassa az 'olvasatlan üzenet' jelzést, amikor az értesítések le vannak tiltva", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Mutassa az 'olvasatlan üzenet' jelzést, amikor az értesítések le vannak tiltva",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Indítás minimalizálva", 245 "settings.app.form.startMinimized": "Indítás minimalizálva",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Frissítések", 255 "settings.app.headlineUpdates": "Frissítések",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "A hivatalos fordítások angol és német nyelven elérhetőek. Minden más nyelv közösségi fordításon alapul.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Jelszó", 259 "settings.app.lockedPassword": "Jelszó",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Egyéni, harmadik féltől származó receptek", 285 "settings.recipes.customService.headline.customRecipes": "Egyéni, harmadik féltől származó receptek",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Fejlesztői dokumentáció", 288 "settings.recipes.customService.openDevDocs": "Fejlesztői dokumentáció",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Elérhető szolgáltatások", 290 "settings.recipes.headline": "Elérhető szolgáltatások",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Szolgáltatások felfedezése", 346 "settings.services.discoverServices": "Szolgáltatások felfedezése",
349 "settings.services.headline": "Szolgáltatásaid", 347 "settings.services.headline": "Szolgáltatásaid",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Szolgáltatásaid betöltése sikertelen", 350 "settings.services.servicesRequestFailed": "Szolgáltatásaid betöltése sikertelen",
353 "settings.services.tooltip.isDisabled": "A szolgáltatás le van tiltva", 351 "settings.services.tooltip.isDisabled": "A szolgáltatás le van tiltva",
354 "settings.services.tooltip.isMuted": "Minden hang lenémítva", 352 "settings.services.tooltip.isMuted": "Minden hang lenémítva",
355 "settings.services.tooltip.notificationsDisabled": "Értesítések letiltva", 353 "settings.services.tooltip.notificationsDisabled": "Értesítések letiltva",
356 "settings.services.updatedInfo": "A módosításokat elmentettük", 354 "settings.services.updatedInfo": "A módosításokat elmentettük",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "Névjegy", 356 "settings.supportFerdi.headline": "Névjegy",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "és", 358 "settings.supportFerdi.textDonationAnd": "és",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "itt", 365 "settings.supportFerdi.textSupportWelcomeHere": "itt",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Tetszik a Ferdi?",
372 "settings.team.contentHeadline": "Franz Csapatkezelés", 367 "settings.team.contentHeadline": "Franz Csapatkezelés",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Csapat", 369 "settings.team.headline": "Csapat",
diff --git a/src/i18n/locales/id.json b/src/i18n/locales/id.json
index d0a3dd482..60e80a27e 100644
--- a/src/i18n/locales/id.json
+++ b/src/i18n/locales/id.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Kirim undangan", 61 "invite.submit.label": "Kirim undangan",
62 "invite.successInfo": "Undangan berhasil dikirim", 62 "invite.successInfo": "Undangan berhasil dikirim",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Selamat datang di Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Tampilkan lencana pesan belum dibaca saat pemberitahuan dinonaktifkan", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Tampilkan lencana pesan belum dibaca saat pemberitahuan dinonaktifkan",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Versi Baru", 255 "settings.app.headlineUpdates": "Versi Baru",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Penerjemahan resmi dilakukan untuk Bahasa Inggris dan Jerman. Bahasa lainnya merupakan penerjemahan oleh komunitas.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Layanan tersedia", 290 "settings.recipes.headline": "Layanan tersedia",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Temukan layanan", 346 "settings.services.discoverServices": "Temukan layanan",
349 "settings.services.headline": "Layanan Anda", 347 "settings.services.headline": "Layanan Anda",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Tidak dapat memuat layanan Anda", 350 "settings.services.servicesRequestFailed": "Tidak dapat memuat layanan Anda",
353 "settings.services.tooltip.isDisabled": "Layanan dinonaktifkan", 351 "settings.services.tooltip.isDisabled": "Layanan dinonaktifkan",
354 "settings.services.tooltip.isMuted": "Semua suara dibisukan", 352 "settings.services.tooltip.isMuted": "Semua suara dibisukan",
355 "settings.services.tooltip.notificationsDisabled": "Pemberitahuan dinonaktifkan", 353 "settings.services.tooltip.notificationsDisabled": "Pemberitahuan dinonaktifkan",
356 "settings.services.updatedInfo": "Perubahan Anda telah disimpan", 354 "settings.services.updatedInfo": "Perubahan Anda telah disimpan",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "Tentang Ferdi", 356 "settings.supportFerdi.headline": "Tentang Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Tim", 369 "settings.team.headline": "Tim",
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json
index dd3e1287a..f1d55e471 100644
--- a/src/i18n/locales/it.json
+++ b/src/i18n/locales/it.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Manda inviti", 61 "invite.submit.label": "Manda inviti",
62 "invite.successInfo": "Inviti inviati con successo", 62 "invite.successInfo": "Inviti inviati con successo",
63 "locked.headline": "Bloccato", 63 "locked.headline": "Bloccato",
64 "locked.info": "Ferdi è attualmente bloccato. Per favore sblocca Ferdi con la tua password per vedere i tuoi messaggi.",
65 "locked.invalidCredentials": "Password non valida", 64 "locked.invalidCredentials": "Password non valida",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Sblocca", 66 "locked.submit.label": "Sblocca",
@@ -168,7 +167,6 @@
168 "services.login": "Effettua il login per utlizzare Ferdi.", 167 "services.login": "Effettua il login per utlizzare Ferdi.",
169 "services.serverInfo": "Facoltativamente, puoi cambiare il tuo server Ferdi cliccando l'ingranaggio nell'angolo in basso a sinistra. Se stai passando (da uno dei server ospitati) ad usare Ferdi senza un account, sappi che puoi esportare i tuoi dati da quel server e successivamente importarli usando il menu Aiuto per ripristinare tutti i tuoi spazi di lavoro e servizi configurati!", 168 "services.serverInfo": "Facoltativamente, puoi cambiare il tuo server Ferdi cliccando l'ingranaggio nell'angolo in basso a sinistra. Se stai passando (da uno dei server ospitati) ad usare Ferdi senza un account, sappi che puoi esportare i tuoi dati da quel server e successivamente importarli usando il menu Aiuto per ripristinare tutti i tuoi spazi di lavoro e servizi configurati!",
170 "services.serverless": "Usa Ferdi senza account", 169 "services.serverless": "Usa Ferdi senza account",
171 "services.welcome": "Benvenuto su Ferdi",
172 "settings.account.account.editButton": "Modifica account", 170 "settings.account.account.editButton": "Modifica account",
173 "settings.account.accountUnavailable": "Account non disponibile", 171 "settings.account.accountUnavailable": "Account non disponibile",
174 "settings.account.accountUnavailableInfo": "Stai usando Ferdi senza un account. Se si desidera aggiungere un account, e tenere sincronizzati i servizi tra le installazioni, selezionare un server nel tab delle Impostazioni e quindi login.", 172 "settings.account.accountUnavailableInfo": "Stai usando Ferdi senza un account. Se si desidera aggiungere un account, e tenere sincronizzati i servizi tra le installazioni, selezionare un server nel tab delle Impostazioni e quindi login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Mostra area trascinabile nella finestra", 240 "settings.app.form.showDragArea": "Mostra area trascinabile nella finestra",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Mostra l'etichetta dei messaggi non letti quando le notifiche sono disattivate", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Mostra l'etichetta dei messaggi non letti quando le notifiche sono disattivate",
244 "settings.app.form.showServiceName": "Mostra il nome del servizio sotto all'icona", 242 "settings.app.form.showServiceName": "Mostra il nome del servizio sotto all'icona",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Abilità la modalità split view", 244 "settings.app.form.splitMode": "Abilità la modalità split view",
246 "settings.app.form.startMinimized": "Avvio ridotto a icona", 245 "settings.app.form.startMinimized": "Avvio ridotto a icona",
247 "settings.app.form.universalDarkMode": "Abilita la modalità scura universale", 246 "settings.app.form.universalDarkMode": "Abilita la modalità scura universale",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Aggiornamenti", 255 "settings.app.headlineUpdates": "Aggiornamenti",
257 "settings.app.hibernateInfo": "Per impostazione predefinita, Ferdi manterrà tutti i servizi aperti e caricati in background in modo che siano pronti quando si desidera utilizzarli. Il servizio Hibernation sospenderà i servizi dopo un tempo specificato. Questo è utile per risparmiare RAM o per evitare che i servizi rallentino il computer.", 256 "settings.app.hibernateInfo": "Per impostazione predefinita, Ferdi manterrà tutti i servizi aperti e caricati in background in modo che siano pronti quando si desidera utilizzarli. Il servizio Hibernation sospenderà i servizi dopo un tempo specificato. Questo è utile per risparmiare RAM o per evitare che i servizi rallentino il computer.",
258 "settings.app.inactivityLockInfo": "Minuti di inattività oltre i quali Ferdi si bloccherà automaticamente, 0 per disabilitare", 257 "settings.app.inactivityLockInfo": "Minuti di inattività oltre i quali Ferdi si bloccherà automaticamente, 0 per disabilitare",
259 "settings.app.languageDisclaimer": "Le traduzioni ufficiali sono in Inglese e Tedesco. Tutte le altre lingue sono tradotte dalla community.",
260 "settings.app.lockInfo": "Password Lock ti permette di mantenere i tuoi messaggi protetti. Usando Password Lock, ti verrà richiesto di inserire la tua password ogni volta che avvii Ferdi o di bloccare Ferdi stesso usando il simbolo del lucchetto nell'angolo in basso a sinistra o la scorciatoia {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock ti permette di mantenere i tuoi messaggi protetti. Usando Password Lock, ti verrà richiesto di inserire la tua password ogni volta che avvii Ferdi o di bloccare Ferdi stesso usando il simbolo del lucchetto nell'angolo in basso a sinistra o la scorciatoia {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Assicurati di impostare una password che ricordi.\nSe perdi questa password, dovrai reinstallare Ferdi.", 260 "settings.app.lockedPasswordInfo": "Assicurati di impostare una password che ricordi.\nSe perdi questa password, dovrai reinstallare Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "'Recipe' (istruzioni) per applicazioni di terze parti della community", 284 "settings.recipes.customService.headline.communityRecipes": "'Recipe' (istruzioni) per applicazioni di terze parti della community",
287 "settings.recipes.customService.headline.customRecipes": "'Recipe' (istruzioni) per applicazioni di terze parti personalizzate", 285 "settings.recipes.customService.headline.customRecipes": "'Recipe' (istruzioni) per applicazioni di terze parti personalizzate",
288 "settings.recipes.customService.headline.devRecipes": "Le tue 'Recipe' (istruzioni) per applicazioni", 286 "settings.recipes.customService.headline.devRecipes": "Le tue 'Recipe' (istruzioni) per applicazioni",
289 "settings.recipes.customService.intro": "Per aggiungere un servizio personalizzato copia la sua 'recipe' in:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Documentazione per sviluppatori", 288 "settings.recipes.customService.openDevDocs": "Documentazione per sviluppatori",
291 "settings.recipes.customService.openFolder": "Apri cartella", 289 "settings.recipes.customService.openFolder": "Apri cartella",
292 "settings.recipes.headline": "Servizi disponibili", 290 "settings.recipes.headline": "Servizi disponibili",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Scopri servizi", 346 "settings.services.discoverServices": "Scopri servizi",
349 "settings.services.headline": "I tuoi servizi", 347 "settings.services.headline": "I tuoi servizi",
350 "settings.services.noServicesAdded": "Inizia aggiungendo un servizio.", 348 "settings.services.noServicesAdded": "Inizia aggiungendo un servizio.",
351 "settings.services.nothingFound": "Non è stato trovato alcun servizio corrispondente alla ricerca impostata. Ricorda che anche se non esiste un servizio specifico, potrebbe essere possibile usare la funzionalità \"Sito Custom\". Inoltre potrebbe essere che sul sito web di Ferdi siano mostrati più servizi di quanti disponibili nella applicazione correntemente in uso. Nel caso, per accedere a questi servizi, è possibile aggiornare Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Impossibile caricare il servizio", 350 "settings.services.servicesRequestFailed": "Impossibile caricare il servizio",
353 "settings.services.tooltip.isDisabled": "Il servizio è disattivato", 351 "settings.services.tooltip.isDisabled": "Il servizio è disattivato",
354 "settings.services.tooltip.isMuted": "Tutti i suoni sono disattivati", 352 "settings.services.tooltip.isMuted": "Tutti i suoni sono disattivati",
355 "settings.services.tooltip.notificationsDisabled": "Le notifiche sono disattivate", 353 "settings.services.tooltip.notificationsDisabled": "Le notifiche sono disattivate",
356 "settings.services.updatedInfo": "Le tue modifiche sono state salvate", 354 "settings.services.updatedInfo": "Le tue modifiche sono state salvate",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi è un'applicazione open source sviluppata dalla community.</p><p>Un ringraziamento a tutti coloro che hanno reso questo possibile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi è un'applicazione open source sviluppata dalla community.</p><p>Un ringraziamento a tutti coloro che hanno reso questo possibile:</p>",
358 "settings.supportFerdi.bannerText": "Vuoi aiutarci a migliorare Ferdi?",
359 "settings.supportFerdi.headline": "Info su Ferdi", 356 "settings.supportFerdi.headline": "Info su Ferdi",
360 "settings.supportFerdi.openSurvey": "Apri sondaggio",
361 "settings.supportFerdi.textDonation": "Se vuoi aiutare lo sviluppo di Ferdi con una donazione, puoi farlo", 357 "settings.supportFerdi.textDonation": "Se vuoi aiutare lo sviluppo di Ferdi con una donazione, puoi farlo",
362 "settings.supportFerdi.textDonationAnd": "e", 358 "settings.supportFerdi.textDonationAnd": "e",
363 "settings.supportFerdi.textExpenses": "Nonostante la maggior parte del lavoro sia svolto da volontari è comunque necessario pagare per la gestione di server e certificati. Essendo una comunità vogliamo essere completamente trasparenti rispetto a come raccogliamo e spendiamo fondi. Maggiori informazioni su", 359 "settings.supportFerdi.textExpenses": "Nonostante la maggior parte del lavoro sia svolto da volontari è comunque necessario pagare per la gestione di server e certificati. Essendo una comunità vogliamo essere completamente trasparenti rispetto a come raccogliamo e spendiamo fondi. Maggiori informazioni su",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Il tuo supporto è il benvenuto. Puoi trovare un elenco degli aiuti che ci servono", 364 "settings.supportFerdi.textSupportWelcome": "Il tuo supporto è il benvenuto. Puoi trovare un elenco degli aiuti che ci servono",
369 "settings.supportFerdi.textSupportWelcomeHere": "qui", 365 "settings.supportFerdi.textSupportWelcomeHere": "qui",
370 "settings.supportFerdi.textVolunteers": "Lo sviluppo dell'applicazione Ferdi è gestita interamente da volontari, persone che come te usano Ferdi. Queste persone mantengono e migliorano Ferdi nel loro tempo libero.", 366 "settings.supportFerdi.textVolunteers": "Lo sviluppo dell'applicazione Ferdi è gestita interamente da volontari, persone che come te usano Ferdi. Queste persone mantengono e migliorano Ferdi nel loro tempo libero.",
371 "settings.supportFerdi.title": "Ti piace Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Il gestore di Team di Franz (Franz's Team Management) ti consente di gestire gli abbonamenti Franz (Franz Subscriptions) per più utenti. È importante ricordare che possedere un abbonamento Premium Franz non dà alcun beneficio nell'usare Ferdi. L'unico motivo per cui hai accesso al gestore di Team è perchè tu posa gestire i tuoi Team di Franz creati in precedenza così da non perdere alcuna funzionalità nella gestione del tuo account.", 368 "settings.team.copy": "Il gestore di Team di Franz (Franz's Team Management) ti consente di gestire gli abbonamenti Franz (Franz Subscriptions) per più utenti. È importante ricordare che possedere un abbonamento Premium Franz non dà alcun beneficio nell'usare Ferdi. L'unico motivo per cui hai accesso al gestore di Team è perchè tu posa gestire i tuoi Team di Franz creati in precedenza così da non perdere alcuna funzionalità nella gestione del tuo account.",
374 "settings.team.headline": "Gruppo", 369 "settings.team.headline": "Gruppo",
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json
index 26e1f3606..af0664075 100644
--- a/src/i18n/locales/ja.json
+++ b/src/i18n/locales/ja.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "招待をé€ã‚‹", 61 "invite.submit.label": "招待をé€ã‚‹",
62 "invite.successInfo": "招待ã¯ç„¡äº‹ã«é€ä¿¡ã•ã‚Œã¾ã—ãŸ", 62 "invite.successInfo": "招待ã¯ç„¡äº‹ã«é€ä¿¡ã•ã‚Œã¾ã—ãŸ",
63 "locked.headline": "ロック中", 63 "locked.headline": "ロック中",
64 "locked.info": "Ferdiã¯ç¾åœ¨ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚メッセージを表示ã™ã‚‹ã«ã¯ã€ãƒ‘スワードを入力ã—ã¦ãƒ­ãƒƒã‚¯ã‚’解除ã—ã¦ãã ã•ã„。",
65 "locked.invalidCredentials": "無効ãªãƒ‘スワードã§ã™", 64 "locked.invalidCredentials": "無効ãªãƒ‘スワードã§ã™",
66 "locked.password.label": "パスワード", 65 "locked.password.label": "パスワード",
67 "locked.submit.label": "ロック解除", 66 "locked.submit.label": "ロック解除",
@@ -168,7 +167,6 @@
168 "services.login": "Ferdiを使用ã™ã‚‹ã«ã¯ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。", 167 "services.login": "Ferdiを使用ã™ã‚‹ã«ã¯ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。",
169 "services.serverInfo": "オプションã¨ã—ã¦ã€å·¦ä¸‹ã®æ­¯è»Šã‚’クリックã—ã¦Ferdiサーãƒãƒ¼ã‚’変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ä»–ã®ãƒ›ã‚¹ãƒˆã•ã‚ŒãŸã‚µãƒ¼ãƒã‹ã‚‰ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãªã—ã§Ferdiを使ã†ã‚ˆã†ã«å¤‰æ›´ã™ã‚‹å ´åˆã¯ã€ãã®ã‚µãƒ¼ãƒã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’エクスãƒãƒ¼ãƒˆã—ã€ãã®å¾Œãƒ˜ãƒ«ãƒ—メニューを使ã£ã¦ã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹ã“ã¨ã§ã™ã¹ã¦ã®ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒšãƒ¼ã‚¹ã¨è¨­å®šã—ãŸã‚µãƒ¼ãƒ“スを復元ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚", 168 "services.serverInfo": "オプションã¨ã—ã¦ã€å·¦ä¸‹ã®æ­¯è»Šã‚’クリックã—ã¦Ferdiサーãƒãƒ¼ã‚’変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ä»–ã®ãƒ›ã‚¹ãƒˆã•ã‚ŒãŸã‚µãƒ¼ãƒã‹ã‚‰ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãªã—ã§Ferdiを使ã†ã‚ˆã†ã«å¤‰æ›´ã™ã‚‹å ´åˆã¯ã€ãã®ã‚µãƒ¼ãƒã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’エクスãƒãƒ¼ãƒˆã—ã€ãã®å¾Œãƒ˜ãƒ«ãƒ—メニューを使ã£ã¦ã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹ã“ã¨ã§ã™ã¹ã¦ã®ãƒ¯ãƒ¼ã‚¯ã‚¹ãƒšãƒ¼ã‚¹ã¨è¨­å®šã—ãŸã‚µãƒ¼ãƒ“スを復元ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚",
170 "services.serverless": "アカウントãªã—ã§Ferdiを使用ã™ã‚‹", 169 "services.serverless": "アカウントãªã—ã§Ferdiを使用ã™ã‚‹",
171 "services.welcome": "Ferdiã«ã‚ˆã†ã“ã",
172 "settings.account.account.editButton": "アカウントを編集", 170 "settings.account.account.editButton": "アカウントを編集",
173 "settings.account.accountUnavailable": "アカウントãŒåˆ©ç”¨ã§ãã¾ã›ã‚“", 171 "settings.account.accountUnavailable": "アカウントãŒåˆ©ç”¨ã§ãã¾ã›ã‚“",
174 "settings.account.accountUnavailableInfo": "アカウントãªã—ã§Ferdiを使用ã—ã¦ã„ã¾ã™ã€‚ Ferdiã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’使用ã—ã¦ã‚³ãƒ³ãƒ”ューター間ã§ã‚µãƒ¼ãƒ“スをåŒæœŸã•ã›ã‚‹å ´åˆã€ 設定タブã§ã‚µãƒ¼ãƒãƒ¼ã‚’é¸æŠžã—ã¦ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。", 172 "settings.account.accountUnavailableInfo": "アカウントãªã—ã§Ferdiを使用ã—ã¦ã„ã¾ã™ã€‚ Ferdiã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’使用ã—ã¦ã‚³ãƒ³ãƒ”ューター間ã§ã‚µãƒ¼ãƒ“スをåŒæœŸã•ã›ã‚‹å ´åˆã€ 設定タブã§ã‚µãƒ¼ãƒãƒ¼ã‚’é¸æŠžã—ã¦ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "ドラッグå¯èƒ½ãªé ˜åŸŸã‚’ウィンドウã«è¡¨ç¤º", 240 "settings.app.form.showDragArea": "ドラッグå¯èƒ½ãªé ˜åŸŸã‚’ウィンドウã«è¡¨ç¤º",
243 "settings.app.form.showMessagesBadgesWhenMuted": "通知ã®ç„¡åŠ¹æ™‚ã«æœªèª­ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ä»¶æ•°ã‚’表示ã™ã‚‹", 241 "settings.app.form.showMessagesBadgesWhenMuted": "通知ã®ç„¡åŠ¹æ™‚ã«æœªèª­ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ä»¶æ•°ã‚’表示ã™ã‚‹",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "分割表示モードを有効ã«ã™ã‚‹", 244 "settings.app.form.splitMode": "分割表示モードを有効ã«ã™ã‚‹",
246 "settings.app.form.startMinimized": "最å°åŒ–ã—ã¦èµ·å‹•", 245 "settings.app.form.startMinimized": "最å°åŒ–ã—ã¦èµ·å‹•",
247 "settings.app.form.universalDarkMode": "ユニãƒãƒ¼ã‚µãƒ«ãƒ€ãƒ¼ã‚¯ãƒ¢ãƒ¼ãƒ‰ã‚’有効ã«ã™ã‚‹", 246 "settings.app.form.universalDarkMode": "ユニãƒãƒ¼ã‚µãƒ«ãƒ€ãƒ¼ã‚¯ãƒ¢ãƒ¼ãƒ‰ã‚’有効ã«ã™ã‚‹",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "æ›´æ–°", 255 "settings.app.headlineUpdates": "æ›´æ–°",
257 "settings.app.hibernateInfo": "デフォルトã§ã¯ã€Ferdiã¯ã™ã¹ã¦ã®ã‚µãƒ¼ãƒ“スをãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§é–‹ã„ã¦èª­ã¿è¾¼ã‚“ã§ãŠãã®ã§ã€ä½¿ã„ãŸã„ã¨ãã«ã™ãã«ä½¿ãˆã¾ã™ã€‚ サービス休止機能ã¯è¨­å®šã—ãŸæ™‚é–“ãŒçµŒéŽã—ãŸã‚‰èª­ã¿è¾¼ã‚“ã ã‚µãƒ¼ãƒ“スを解放ã—ã¾ã™ã€‚ã“ã‚Œã¯RAMを節約ã—ãŸã‚Šã€ã‚µãƒ¼ãƒ“スã§ã‚³ãƒ³ãƒ”ューターã®å‹•ä½œãŒé‡ããªã‚‹ã®ã‚’防ãã®ã«å½¹ç«‹ã¡ã¾ã™ã€‚", 256 "settings.app.hibernateInfo": "デフォルトã§ã¯ã€Ferdiã¯ã™ã¹ã¦ã®ã‚µãƒ¼ãƒ“スをãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§é–‹ã„ã¦èª­ã¿è¾¼ã‚“ã§ãŠãã®ã§ã€ä½¿ã„ãŸã„ã¨ãã«ã™ãã«ä½¿ãˆã¾ã™ã€‚ サービス休止機能ã¯è¨­å®šã—ãŸæ™‚é–“ãŒçµŒéŽã—ãŸã‚‰èª­ã¿è¾¼ã‚“ã ã‚µãƒ¼ãƒ“スを解放ã—ã¾ã™ã€‚ã“ã‚Œã¯RAMを節約ã—ãŸã‚Šã€ã‚µãƒ¼ãƒ“スã§ã‚³ãƒ³ãƒ”ューターã®å‹•ä½œãŒé‡ããªã‚‹ã®ã‚’防ãã®ã«å½¹ç«‹ã¡ã¾ã™ã€‚",
258 "settings.app.inactivityLockInfo": "休止状態ã¾ã§ã®æ™‚é–“(分)ã€ã“ã®æ™‚é–“ãŒçµŒéŽå¾ŒFerdiã¯è‡ªå‹•ã§ãƒ­ãƒƒã‚¯ã—ã¾ã™ã€‚0ã§ç„¡åŠ¹åŒ–", 257 "settings.app.inactivityLockInfo": "休止状態ã¾ã§ã®æ™‚é–“(分)ã€ã“ã®æ™‚é–“ãŒçµŒéŽå¾ŒFerdiã¯è‡ªå‹•ã§ãƒ­ãƒƒã‚¯ã—ã¾ã™ã€‚0ã§ç„¡åŠ¹åŒ–",
259 "settings.app.languageDisclaimer": "å…¬å¼ã®è¨€èªžã¯è‹±èªžã¨ãƒ‰ã‚¤ãƒ„語ã§ã™ã€‚ä»–ã®è¨€èªžã¯ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã«ã‚ˆã‚‹ç¿»è¨³ã§ã™ã€‚",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "パスワード", 259 "settings.app.lockedPassword": "パスワード",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "コミュニティã®ã‚µãƒ¼ãƒ‰ãƒ‘ーティレシピ", 284 "settings.recipes.customService.headline.communityRecipes": "コミュニティã®ã‚µãƒ¼ãƒ‰ãƒ‘ーティレシピ",
287 "settings.recipes.customService.headline.customRecipes": "カスタムサードパーティレシピ", 285 "settings.recipes.customService.headline.customRecipes": "カスタムサードパーティレシピ",
288 "settings.recipes.customService.headline.devRecipes": "開発サービスã®ãƒ¬ã‚·ãƒ”", 286 "settings.recipes.customService.headline.devRecipes": "開発サービスã®ãƒ¬ã‚·ãƒ”",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "開発者ドキュメント", 288 "settings.recipes.customService.openDevDocs": "開発者ドキュメント",
291 "settings.recipes.customService.openFolder": "フォルダーを開ã", 289 "settings.recipes.customService.openFolder": "フォルダーを開ã",
292 "settings.recipes.headline": "利用å¯èƒ½ãªã‚µãƒ¼ãƒ“ス", 290 "settings.recipes.headline": "利用å¯èƒ½ãªã‚µãƒ¼ãƒ“ス",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "サービスを探ã™", 346 "settings.services.discoverServices": "サービスを探ã™",
349 "settings.services.headline": "利用中ã®ã‚µãƒ¼ãƒ“ス", 347 "settings.services.headline": "利用中ã®ã‚µãƒ¼ãƒ“ス",
350 "settings.services.noServicesAdded": "ã¾ãšã¯ã‚µãƒ¼ãƒ“スを追加ã—ã¾ã™ã€‚", 348 "settings.services.noServicesAdded": "ã¾ãšã¯ã‚µãƒ¼ãƒ“スを追加ã—ã¾ã™ã€‚",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "サービスを読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ", 350 "settings.services.servicesRequestFailed": "サービスを読ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ",
353 "settings.services.tooltip.isDisabled": "サービスãŒç„¡åŠ¹ã§ã™", 351 "settings.services.tooltip.isDisabled": "サービスãŒç„¡åŠ¹ã§ã™",
354 "settings.services.tooltip.isMuted": "無音ã¨ãªã£ã¦ã„ã¾ã™", 352 "settings.services.tooltip.isMuted": "無音ã¨ãªã£ã¦ã„ã¾ã™",
355 "settings.services.tooltip.notificationsDisabled": "通知ã¯ç„¡åŠ¹ã§ã™", 353 "settings.services.tooltip.notificationsDisabled": "通知ã¯ç„¡åŠ¹ã§ã™",
356 "settings.services.updatedInfo": "変更内容ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ", 354 "settings.services.updatedInfo": "変更内容ãŒä¿å­˜ã•ã‚Œã¾ã—ãŸ",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdiã¯ã‚ªãƒ¼ãƒ—ンソースã§ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ä¸»å°Žé–‹ç™ºã®ã‚¢ãƒ—リケーションã§ã™ã€‚</p><p>ã“れをå¯èƒ½ã«ã—ã¦ãã ã•ã£ãŸçš†æ§˜ã«æ„Ÿè¬ã—ã¾ã™:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdiã¯ã‚ªãƒ¼ãƒ—ンソースã§ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ä¸»å°Žé–‹ç™ºã®ã‚¢ãƒ—リケーションã§ã™ã€‚</p><p>ã“れをå¯èƒ½ã«ã—ã¦ãã ã•ã£ãŸçš†æ§˜ã«æ„Ÿè¬ã—ã¾ã™:</p>",
358 "settings.supportFerdi.bannerText": "Ferdiã®æ”¹è‰¯ã®æ‰‹åŠ©ã‘ã‚’ã—ãŸã„ã§ã™ã‹ï¼Ÿ",
359 "settings.supportFerdi.headline": "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±", 356 "settings.supportFerdi.headline": "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±",
360 "settings.supportFerdi.openSurvey": "アンケートを開ã",
361 "settings.supportFerdi.textDonation": "Ferdiã®é–‹ç™ºã‚’寄付ã§å¿œæ´ã—ãŸã„å ´åˆã€ä»¥ä¸‹ã®æ–¹æ³•ã§ãŠé¡˜ã„ã—ã¾ã™ã€‚", 357 "settings.supportFerdi.textDonation": "Ferdiã®é–‹ç™ºã‚’寄付ã§å¿œæ´ã—ãŸã„å ´åˆã€ä»¥ä¸‹ã®æ–¹æ³•ã§ãŠé¡˜ã„ã—ã¾ã™ã€‚",
362 "settings.supportFerdi.textDonationAnd": "ã¨", 358 "settings.supportFerdi.textDonationAnd": "ã¨",
363 "settings.supportFerdi.textExpenses": "ボランティアãŒã‹ãªã‚Šã®éƒ¨åˆ†ã®ä½œæ¥­ã‚’è¡Œã£ã¦ã„ã¾ã™ãŒã€ç§ãŸã¡ã‚‚サーãƒãƒ¼ä»£ã¨è¨¼æ˜Žæ›¸ã‚’支払ã‚ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。コミュニティã¨åŒæ§˜ã«ã€ç§ãŸã¡ã®åŽæ”¯ã¯å…¨ã¦å…¬é–‹ã•ã‚Œã¦ã„ã¾ã™ã€‚以下をå‚ç…§ã—ã¦ãã ã•ã„。", 359 "settings.supportFerdi.textExpenses": "ボランティアãŒã‹ãªã‚Šã®éƒ¨åˆ†ã®ä½œæ¥­ã‚’è¡Œã£ã¦ã„ã¾ã™ãŒã€ç§ãŸã¡ã‚‚サーãƒãƒ¼ä»£ã¨è¨¼æ˜Žæ›¸ã‚’支払ã‚ãªãã¦ã¯ãªã‚Šã¾ã›ã‚“。コミュニティã¨åŒæ§˜ã«ã€ç§ãŸã¡ã®åŽæ”¯ã¯å…¨ã¦å…¬é–‹ã•ã‚Œã¦ã„ã¾ã™ã€‚以下をå‚ç…§ã—ã¦ãã ã•ã„。",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "支æ´ã¯ã„ã¤ã§ã‚‚æ­“è¿Žã§ã™ã€‚ç§ãŸã¡ãŒå¿…è¦ã¨ã—ã¦ã„る支æ´ã®ãƒªã‚¹ãƒˆãŒã‚ã‚Šã¾ã™", 364 "settings.supportFerdi.textSupportWelcome": "支æ´ã¯ã„ã¤ã§ã‚‚æ­“è¿Žã§ã™ã€‚ç§ãŸã¡ãŒå¿…è¦ã¨ã—ã¦ã„る支æ´ã®ãƒªã‚¹ãƒˆãŒã‚ã‚Šã¾ã™",
369 "settings.supportFerdi.textSupportWelcomeHere": "ã“ã“", 365 "settings.supportFerdi.textSupportWelcomeHere": "ã“ã“",
370 "settings.supportFerdi.textVolunteers": "Ferdiã®é–‹ç™ºã¯ãƒœãƒ©ãƒ³ãƒ†ã‚£ã‚¢ã«ã‚ˆã‚Šè¡Œã‚ã‚Œã¦ã„ã¾ã™ã€‚Ferdiã‚’æ°—ã«å…¥ã£ãŸåŒå£«ã®çš†ã•ã‚“ã§ã™ã€‚ã“ã®æ–¹ã€…ã¯è‡ªåˆ†ã®è‡ªç”±æ™‚間を利用ã—ã¦Ferdiã®ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã€ãƒã‚°ä¿®æ­£ã€æ”¹è‰¯ã‚’è¡Œã£ã¦ã„ã¾ã™ã€‚", 366 "settings.supportFerdi.textVolunteers": "Ferdiã®é–‹ç™ºã¯ãƒœãƒ©ãƒ³ãƒ†ã‚£ã‚¢ã«ã‚ˆã‚Šè¡Œã‚ã‚Œã¦ã„ã¾ã™ã€‚Ferdiã‚’æ°—ã«å…¥ã£ãŸåŒå£«ã®çš†ã•ã‚“ã§ã™ã€‚ã“ã®æ–¹ã€…ã¯è‡ªåˆ†ã®è‡ªç”±æ™‚間を利用ã—ã¦Ferdiã®ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã€ãƒã‚°ä¿®æ­£ã€æ”¹è‰¯ã‚’è¡Œã£ã¦ã„ã¾ã™ã€‚",
371 "settings.supportFerdi.title": "Ferdiã‚’æ°—ã«å…¥ã£ã¦ãã ã•ã„ã¾ã—ãŸã‹ï¼Ÿ",
372 "settings.team.contentHeadline": "Franzã®ãƒãƒ¼ãƒ ç®¡ç†", 367 "settings.team.contentHeadline": "Franzã®ãƒãƒ¼ãƒ ç®¡ç†",
373 "settings.team.copy": "Franzãƒãƒ¼ãƒ ç®¡ç†ã§ã¯ã€è¤‡æ•°ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®Franzサブスクリプションを管ç†ã§ãã¾ã™ã€‚Franzプレミアムã®ã‚µãƒ–スクリプションã¯ã€Ferdiを使用ã™ã‚‹ä¸Šã§ä½•ã®åˆ©ç‚¹ã‚‚ãªã„ã“ã¨ã«ç•™æ„ã—ã¦ãã ã•ã„。レガシーãªFranzã®ãƒãƒ¼ãƒ ã‚’管ç†ã—ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆç®¡ç†æ©Ÿèƒ½ã‚’維æŒã™ã‚‹ãŸã‚ã ã‘ã«ã€ãƒãƒ¼ãƒ ç®¡ç†ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ãªã£ã¦ã„ã¾ã™ã€‚", 368 "settings.team.copy": "Franzãƒãƒ¼ãƒ ç®¡ç†ã§ã¯ã€è¤‡æ•°ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®Franzサブスクリプションを管ç†ã§ãã¾ã™ã€‚Franzプレミアムã®ã‚µãƒ–スクリプションã¯ã€Ferdiを使用ã™ã‚‹ä¸Šã§ä½•ã®åˆ©ç‚¹ã‚‚ãªã„ã“ã¨ã«ç•™æ„ã—ã¦ãã ã•ã„。レガシーãªFranzã®ãƒãƒ¼ãƒ ã‚’管ç†ã—ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆç®¡ç†æ©Ÿèƒ½ã‚’維æŒã™ã‚‹ãŸã‚ã ã‘ã«ã€ãƒãƒ¼ãƒ ç®¡ç†ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ãªã£ã¦ã„ã¾ã™ã€‚",
374 "settings.team.headline": "ãƒãƒ¼ãƒ ", 369 "settings.team.headline": "ãƒãƒ¼ãƒ ",
diff --git a/src/i18n/locales/ka.json b/src/i18n/locales/ka.json
index a5e9bab9c..df7d69c4f 100644
--- a/src/i18n/locales/ka.json
+++ b/src/i18n/locales/ka.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "მáƒáƒ¬áƒ•áƒ”ვის გáƒáƒ’ზáƒáƒ•áƒœáƒ", 61 "invite.submit.label": "მáƒáƒ¬áƒ•áƒ”ვის გáƒáƒ’ზáƒáƒ•áƒœáƒ",
62 "invite.successInfo": "Invitations sent successfully", 62 "invite.successInfo": "Invitations sent successfully",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "მáƒáƒ’ესáƒáƒšáƒ›áƒ”ბით Ferdi-ზე",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "გáƒáƒœáƒáƒ®áƒšáƒ”ბები", 255 "settings.app.headlineUpdates": "გáƒáƒœáƒáƒ®áƒšáƒ”ბები",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "ხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜ სერვისები", 290 "settings.recipes.headline": "ხელმისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒ˜ სერვისები",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "áƒáƒ¦áƒ›áƒáƒáƒ©áƒ˜áƒœáƒ”თ სერვისები", 346 "settings.services.discoverServices": "áƒáƒ¦áƒ›áƒáƒáƒ©áƒ˜áƒœáƒ”თ სერვისები",
349 "settings.services.headline": "თქვენი სერვისები", 347 "settings.services.headline": "თქვენი სერვისები",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "სერვისი გáƒáƒ—იშულიáƒ", 351 "settings.services.tooltip.isDisabled": "სერვისი გáƒáƒ—იშულიáƒ",
354 "settings.services.tooltip.isMuted": "All sounds are muted", 352 "settings.services.tooltip.isMuted": "All sounds are muted",
355 "settings.services.tooltip.notificationsDisabled": "შეტყáƒáƒ‘ინებები გáƒáƒ—იშულიáƒ", 353 "settings.services.tooltip.notificationsDisabled": "შეტყáƒáƒ‘ინებები გáƒáƒ—იშულიáƒ",
356 "settings.services.updatedInfo": "თქვენი ცვლილებები შენáƒáƒ®áƒ£áƒšáƒ˜áƒ", 354 "settings.services.updatedInfo": "თქვენი ცვლილებები შენáƒáƒ®áƒ£áƒšáƒ˜áƒ",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "Ferdi-ის შესáƒáƒ®áƒ”ბ", 356 "settings.supportFerdi.headline": "Ferdi-ის შესáƒáƒ®áƒ”ბ",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "გუნდი", 369 "settings.team.headline": "გუნდი",
diff --git a/src/i18n/locales/ko.json b/src/i18n/locales/ko.json
index 12307159a..9f7268afe 100644
--- a/src/i18n/locales/ko.json
+++ b/src/i18n/locales/ko.json
@@ -1,6 +1,6 @@
1{ 1{
2 "app.errorHandler.action": "새로고침", 2 "app.errorHandler.action": "새로고침",
3 "app.errorHandler.headline": "Something went wrong.", 3 "app.errorHandler.headline": "문제가 ë°œìƒí–ˆìŠµë‹ˆë‹¤.",
4 "changeserver.customServerLabel": "ì‚¬ìš©ìž ì •ì˜ ì„œë²„", 4 "changeserver.customServerLabel": "ì‚¬ìš©ìž ì •ì˜ ì„œë²„",
5 "changeserver.headline": "서버 번경", 5 "changeserver.headline": "서버 번경",
6 "changeserver.label": "서버", 6 "changeserver.label": "서버",
@@ -9,7 +9,7 @@
9 "connectionLostBanner.cta": "서비스 재시작", 9 "connectionLostBanner.cta": "서비스 재시작",
10 "connectionLostBanner.informationLink": "무슨 ì¼ì¸ê°€ìš”?", 10 "connectionLostBanner.informationLink": "무슨 ì¼ì¸ê°€ìš”?",
11 "connectionLostBanner.message": "오 저런! Ferdiê°€ {name} ê³¼ ì—°ê²°ì´ ëŠê²¼ìŠµë‹ˆë‹¤.", 11 "connectionLostBanner.message": "오 저런! Ferdiê°€ {name} ê³¼ ì—°ê²°ì´ ëŠê²¼ìŠµë‹ˆë‹¤.",
12 "feature.basicAuth.signIn": "Sign In", 12 "feature.basicAuth.signIn": "로그ì¸",
13 "feature.nightlyBuilds.activate": "활성화", 13 "feature.nightlyBuilds.activate": "활성화",
14 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.", 14 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
15 "feature.nightlyBuilds.title": "나ì´í‹€ë¦¬ 빌드", 15 "feature.nightlyBuilds.title": "나ì´í‹€ë¦¬ 빌드",
@@ -24,29 +24,29 @@
24 "feature.quickSwitch.search": "검색...", 24 "feature.quickSwitch.search": "검색...",
25 "feature.quickSwitch.title": "빠른 검색", 25 "feature.quickSwitch.title": "빠른 검색",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 26 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.cancel": "Cancel", 27 "global.cancel": "취소",
28 "global.edit": "편집", 28 "global.edit": "편집",
29 "global.no": "No", 29 "global.no": "아니오",
30 "global.notConnectedToTheInternet": "ì¸í„°ë„·ì— ì—°ê²°í•  수 없습니다.", 30 "global.notConnectedToTheInternet": "ì¸í„°ë„·ì— ì—°ê²°í•  수 없습니다.",
31 "global.ok": "Ok", 31 "global.ok": "확ì¸",
32 "global.quit": "Quit", 32 "global.quit": "종료",
33 "global.quitConfirmation": "Do you really want to quit Ferdi?", 33 "global.quitConfirmation": "ì •ë§ë¡œ Ferdi를 종료 하시겠습니까?",
34 "global.save": "Save", 34 "global.save": "저장",
35 "global.settings": "Settings", 35 "global.settings": "설정",
36 "global.spellchecker.useDefault": "시스템 기본 사용 ({default})", 36 "global.spellchecker.useDefault": "시스템 기본 사용 ({default})",
37 "global.spellchecking.autodetect": "언어 ìžë™ íƒìƒ‰", 37 "global.spellchecking.autodetect": "언어 ìžë™ íƒìƒ‰",
38 "global.spellchecking.autodetect.short": "ìžë™", 38 "global.spellchecking.autodetect.short": "ìžë™",
39 "global.spellchecking.language": "ì² ìž ê²€ì‚¬", 39 "global.spellchecking.language": "ì² ìž ê²€ì‚¬",
40 "global.submit": "Submit", 40 "global.submit": "제출",
41 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 41 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
42 "global.userAgentPref": "User Agent", 42 "global.userAgentPref": "유저 ì—ì´ì „트",
43 "global.yes": "Yes", 43 "global.yes": "네",
44 "import.headline": "Import your Ferdi 4 services", 44 "import.headline": "Ferdi 4 서비스를 가져오기",
45 "import.notSupportedHeadline": "Ferdi 5ì—ì„œ ì•„ì§ ì§€ì›ë˜ì§€ 않는 서비스입니다.", 45 "import.notSupportedHeadline": "Ferdi 5ì—ì„œ ì•„ì§ ì§€ì›ë˜ì§€ 않는 서비스입니다.",
46 "import.skip.label": "수ë™ìœ¼ë¡œ 서비스 추가", 46 "import.skip.label": "수ë™ìœ¼ë¡œ 서비스 추가",
47 "import.submit.label": "Import {count} services", 47 "import.submit.label": "{count} ê°œì˜ ì„œë¹„ìŠ¤ë¥¼ 가져오기",
48 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", 48 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.",
49 "infobar.buttonChangelog": "What is new?", 49 "infobar.buttonChangelog": "변경 사항",
50 "infobar.buttonInstallUpdate": "재시작 후 ì—…ë°ì´íŠ¸ 설치", 50 "infobar.buttonInstallUpdate": "재시작 후 ì—…ë°ì´íŠ¸ 설치",
51 "infobar.buttonReloadServices": "서비스 재시작", 51 "infobar.buttonReloadServices": "서비스 재시작",
52 "infobar.hide": "숨기기", 52 "infobar.hide": "숨기기",
@@ -61,7 +61,6 @@
61 "invite.submit.label": "초대 보내기", 61 "invite.submit.label": "초대 보내기",
62 "invite.successInfo": "초대가 성공ì ìœ¼ë¡œ 보내졌습니다.", 62 "invite.successInfo": "초대가 성공ì ìœ¼ë¡œ 보내졌습니다.",
63 "locked.headline": "ìž ê¹€", 63 "locked.headline": "ìž ê¹€",
64 "locked.info": "Ferdi 는 현재 잠겨있습니다. 패스워드로 ì—´ì–´ 메세지를 확ì¸í•˜ì„¸ìš”.",
65 "locked.invalidCredentials": "유효하지 ì•Šì€ ë¹„ë°€ë²ˆí˜¸", 64 "locked.invalidCredentials": "유효하지 ì•Šì€ ë¹„ë°€ë²ˆí˜¸",
66 "locked.password.label": "비밀번호", 65 "locked.password.label": "비밀번호",
67 "locked.submit.label": "잠금 해제", 66 "locked.submit.label": "잠금 해제",
@@ -74,7 +73,7 @@
74 "login.email.label": "ì´ë©”ì¼ ì£¼ì†Œ", 73 "login.email.label": "ì´ë©”ì¼ ì£¼ì†Œ",
75 "login.headline": "로그ì¸", 74 "login.headline": "로그ì¸",
76 "login.invalidCredentials": "ì´ë©”ì¼ ë˜ëŠ” 비밀번호가 ì¼ì¹˜í•˜ì§€ 않습니다", 75 "login.invalidCredentials": "ì´ë©”ì¼ ë˜ëŠ” 비밀번호가 ì¼ì¹˜í•˜ì§€ 않습니다",
77 "login.link.password": "Reset password", 76 "login.link.password": "비밀번호 초기화",
78 "login.link.signup": "무료 계정 ìƒì„±", 77 "login.link.signup": "무료 계정 ìƒì„±",
79 "login.password.label": "비밀번호", 78 "login.password.label": "비밀번호",
80 "login.serverLogout": "ì„¸ì…˜ì´ ë§Œë£Œë˜ì—ˆìŠµë‹ˆë‹¤. 다시 ë¡œê·¸ì¸ í•˜ì„¸ìš”.", 79 "login.serverLogout": "ì„¸ì…˜ì´ ë§Œë£Œë˜ì—ˆìŠµë‹ˆë‹¤. 다시 ë¡œê·¸ì¸ í•˜ì„¸ìš”.",
@@ -86,40 +85,40 @@
86 "menu.app.autohideMenuBar": "메뉴바 ìžë™ ê°ì¶¤", 85 "menu.app.autohideMenuBar": "메뉴바 ìžë™ ê°ì¶¤",
87 "menu.app.checkForUpdates": "ì—…ë°ì´íŠ¸ 확ì¸", 86 "menu.app.checkForUpdates": "ì—…ë°ì´íŠ¸ 확ì¸",
88 "menu.app.hide": "숨기기", 87 "menu.app.hide": "숨기기",
89 "menu.app.hideOthers": "Hide Others", 88 "menu.app.hideOthers": "다른 항목 숨기기",
90 "menu.app.unhide": "Unhide", 89 "menu.app.unhide": "ë³´ì´ê¸°",
91 "menu.edit": "편집", 90 "menu.edit": "편집",
92 "menu.edit.copy": "Copy", 91 "menu.edit.copy": "복사",
93 "menu.edit.cut": "Cut", 92 "menu.edit.cut": "잘ë¼ë‚´ê¸°",
94 "menu.edit.delete": "삭제", 93 "menu.edit.delete": "삭제",
95 "menu.edit.emojiSymbols": "ì´ëª¨ì§€ ë° ê¸°í˜¸", 94 "menu.edit.emojiSymbols": "ì´ëª¨ì§€ ë° ê¸°í˜¸",
96 "menu.edit.findInPage": "현재 페ì´ì§€ì—ì„œ 찾기", 95 "menu.edit.findInPage": "현재 페ì´ì§€ì—ì„œ 찾기",
97 "menu.edit.paste": "Paste", 96 "menu.edit.paste": "붙여넣기",
98 "menu.edit.pasteAndMatchStyle": "Paste And Match Style", 97 "menu.edit.pasteAndMatchStyle": "붙여넣어 ìŠ¤íƒ€ì¼ ë§žì¶¤",
99 "menu.edit.redo": "Redo", 98 "menu.edit.redo": "재실행",
100 "menu.edit.selectAll": "Select All", 99 "menu.edit.selectAll": "ì „ì²´ ì„ íƒ",
101 "menu.edit.speech": "ë§í•˜ê¸°", 100 "menu.edit.speech": "ë§í•˜ê¸°",
102 "menu.edit.startDictation": "받아쓰기 시작", 101 "menu.edit.startDictation": "받아쓰기 시작",
103 "menu.edit.startSpeaking": "ë§í•˜ê¸° 시작", 102 "menu.edit.startSpeaking": "ë§í•˜ê¸° 시작",
104 "menu.edit.stopSpeaking": "ë§í•˜ê¸° 중지", 103 "menu.edit.stopSpeaking": "ë§í•˜ê¸° 중지",
105 "menu.edit.undo": "Undo", 104 "menu.edit.undo": "ë˜ëŒë¦¬ê¸°",
106 "menu.file": "파ì¼", 105 "menu.file": "파ì¼",
107 "menu.help": "Help", 106 "menu.help": "ë„움ë§",
108 "menu.help.changelog": "변경 내역", 107 "menu.help.changelog": "변경 내역",
109 "menu.help.debugInfo": "디버그 정보 복사", 108 "menu.help.debugInfo": "디버그 정보 복사",
110 "menu.help.debugInfoCopiedBody": "디버그 ì •ë³´ê°€ í´ë¦½ë³´ë“œì— 복사ë˜ì—ˆìŠµë‹ˆë‹¤.", 109 "menu.help.debugInfoCopiedBody": "디버그 ì •ë³´ê°€ í´ë¦½ë³´ë“œì— 복사ë˜ì—ˆìŠµë‹ˆë‹¤.",
111 "menu.help.debugInfoCopiedHeadline": "Ferdi 디버그 정보", 110 "menu.help.debugInfoCopiedHeadline": "Ferdi 디버그 정보",
112 "menu.help.importExportData": "Import/Export Configuration Data", 111 "menu.help.importExportData": "설정 가져오기/내보내기",
113 "menu.help.learnMore": "ìžì„¸ížˆ 보기", 112 "menu.help.learnMore": "ìžì„¸ížˆ 보기",
114 "menu.help.privacy": "ê°œì¸ì •ë³´ë³´í˜¸ì •ì±…", 113 "menu.help.privacy": "ê°œì¸ì •ë³´ë³´í˜¸ì •ì±…",
115 "menu.help.publishDebugInfo": "디버깅 정보 공개", 114 "menu.help.publishDebugInfo": "디버깅 정보 공개",
116 "menu.help.support": "지ì›", 115 "menu.help.support": "지ì›",
117 "menu.help.tos": "ì´ìš© 약관", 116 "menu.help.tos": "ì´ìš© 약관",
118 "menu.services": "서비스", 117 "menu.services": "서비스",
119 "menu.services.activatePreviousService": "Activate previous service", 118 "menu.services.activatePreviousService": "ì´ì „ 서비스 활성화",
120 "menu.services.addNewService": "Add New Service...", 119 "menu.services.addNewService": "새로운 서비스 추가...",
121 "menu.services.goHome": "홈", 120 "menu.services.goHome": "홈",
122 "menu.services.setNextServiceActive": "Activate next service", 121 "menu.services.setNextServiceActive": "ë‹¤ìŒ ì„œë¹„ìŠ¤ 활성화",
123 "menu.todos": "Todos", 122 "menu.todos": "Todos",
124 "menu.todos.enableTodos": "Todos 허용", 123 "menu.todos.enableTodos": "Todos 허용",
125 "menu.view": "View", 124 "menu.view": "View",
@@ -127,31 +126,31 @@
127 "menu.view.forward": "앞으로 가기", 126 "menu.view.forward": "앞으로 가기",
128 "menu.view.lockFerdi": "Ferdi 잠금", 127 "menu.view.lockFerdi": "Ferdi 잠금",
129 "menu.view.openQuickSwitch": "Quick Switch 열기", 128 "menu.view.openQuickSwitch": "Quick Switch 열기",
130 "menu.view.reloadFerdi": "Reload Ferdi", 129 "menu.view.reloadFerdi": "Ferdi 재시작",
131 "menu.view.reloadService": "서비스 재시작", 130 "menu.view.reloadService": "서비스 재시작",
132 "menu.view.reloadTodos": "Reload ToDos", 131 "menu.view.reloadTodos": "ToDos 새로고침",
133 "menu.view.resetZoom": "Actual Size", 132 "menu.view.resetZoom": "실제 í¬ê¸°",
134 "menu.view.toggleDarkMode": "ë‹¤í¬ ëª¨ë“œ 켜기/ë„기", 133 "menu.view.toggleDarkMode": "ë‹¤í¬ ëª¨ë“œ 켜기/ë„기",
135 "menu.view.toggleDevTools": "ê°œë°œìž ëª¨ë“œ 켜기/ë„기", 134 "menu.view.toggleDevTools": "ê°œë°œìž ëª¨ë“œ 켜기/ë„기",
136 "menu.view.toggleFullScreen": "Toggle Full Screen", 135 "menu.view.toggleFullScreen": "전체 화면 전환/복귀",
137 "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools", 136 "menu.view.toggleServiceDevTools": "서비스 ê°œë°œìž ëª¨ë“œ 켜기/ë„기",
138 "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools", 137 "menu.view.toggleTodosDevTools": "Todos ê°œë°œìž ëª¨ë“œ 켜기/ë„기",
139 "menu.view.zoomIn": "Zoom In", 138 "menu.view.zoomIn": "확대",
140 "menu.view.zoomOut": "Zoom Out", 139 "menu.view.zoomOut": "축소",
141 "menu.window": "Window", 140 "menu.window": "ì°½",
142 "menu.window.close": "Close", 141 "menu.window.close": "닫기",
143 "menu.window.minimize": "Minimize", 142 "menu.window.minimize": "최소화",
144 "menu.workspaces": "작업 공간", 143 "menu.workspaces": "작업 공간",
145 "menu.workspaces.addNewWorkspace": "새 ìž‘ì—…ì˜ì—­ì„ 추가", 144 "menu.workspaces.addNewWorkspace": "새 ìž‘ì—…ì˜ì—­ì„ 추가",
146 "menu.workspaces.closeWorkspaceDrawer": "ìž‘ì—…ì˜ì—­ ì„œëž ë‹«ê¸°", 145 "menu.workspaces.closeWorkspaceDrawer": "ìž‘ì—…ì˜ì—­ ì„œëž ë‹«ê¸°",
147 "menu.workspaces.defaultWorkspace": "모든 서비스", 146 "menu.workspaces.defaultWorkspace": "모든 서비스",
148 "menu.workspaces.openWorkspaceDrawer": "ìž‘ì—…ì˜ì—­ ì„œëž ì—´ê¸°", 147 "menu.workspaces.openWorkspaceDrawer": "ìž‘ì—…ì˜ì—­ ì„œëž ì—´ê¸°",
149 "password.email.label": "ì´ë©”ì¼ ì£¼ì†Œ", 148 "password.email.label": "ì´ë©”ì¼ ì£¼ì†Œ",
150 "password.headline": "Reset password", 149 "password.headline": "비밀번호 초기화",
151 "password.link.login": "ê³„ì •ì— ë¡œê·¸ì¸í•˜ì„¸ìš”.", 150 "password.link.login": "ê³„ì •ì— ë¡œê·¸ì¸í•˜ì„¸ìš”.",
152 "password.link.signup": "무료 계정 ìƒì„±", 151 "password.link.signup": "무료 계정 ìƒì„±",
153 "password.noUser": "No user with that email address was found", 152 "password.noUser": "해당 ì´ë©”ì¼ì„ 사용하는 유저를 ì°¾ì„ ìˆ˜ 없습니다.",
154 "password.successInfo": "Your new password was sent to your email address", 153 "password.successInfo": "새로운 비밀번호가 ì´ë©”ì¼ ì£¼ì†Œë¡œ 발송ë˜ì—ˆìŠµë‹ˆë‹¤.",
155 "service.crashHandler.action": "재시작 {name}", 154 "service.crashHandler.action": "재시작 {name}",
156 "service.crashHandler.autoReload": "{seconds} ì´ˆë‚´ì— ìžë™ìœ¼ë¡œ {name} ì„ ë³µì›í•©ë‹ˆë‹¤.", 155 "service.crashHandler.autoReload": "{seconds} ì´ˆë‚´ì— ìžë™ìœ¼ë¡œ {name} ì„ ë³µì›í•©ë‹ˆë‹¤.",
157 "service.crashHandler.headline": "ì´ëŸ°!", 156 "service.crashHandler.headline": "ì´ëŸ°!",
@@ -168,8 +167,7 @@
168 "services.login": "Ferdi를 사용해 로그ì¸í•˜ì„¸ìš”.", 167 "services.login": "Ferdi를 사용해 로그ì¸í•˜ì„¸ìš”.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "ê³„ì •ì—†ì´ Ferdi 사용하기", 169 "services.serverless": "ê³„ì •ì—†ì´ Ferdi 사용하기",
171 "services.welcome": "Ferdiì— ì˜¤ì‹  ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤.", 170 "settings.account.account.editButton": "계정 설정",
172 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "ê³„ì •ì„ ì‚¬ìš©í•  수 없습니다.", 171 "settings.account.accountUnavailable": "ê³„ì •ì„ ì‚¬ìš©í•  수 없습니다.",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
175 "settings.account.buttonSave": "프로필 수정", 173 "settings.account.buttonSave": "프로필 수정",
@@ -177,21 +175,21 @@
177 "settings.account.deleteEmailSent": "ë°›ì€ ì´ë©”ì¼ì— 있는 ë§í¬ë¥¼ 통해 계정 삭제를 확ì¸í–ˆë‹¤ë©´ 계정과 ë°ì´í„°ëŠ” 복구ë˜ì§€ 않습니다.", 175 "settings.account.deleteEmailSent": "ë°›ì€ ì´ë©”ì¼ì— 있는 ë§í¬ë¥¼ 통해 계정 삭제를 확ì¸í–ˆë‹¤ë©´ 계정과 ë°ì´í„°ëŠ” 복구ë˜ì§€ 않습니다.",
178 "settings.account.deleteInfo": "ë” ì´ìƒ Ferdi ê³„ì •ì´ í•„ìš”í•˜ì§€ 않다면 여기서 모든 관련한 ë°ì´í„°ì™€ ê³„ì •ì„ ì‚­ì œí•  수 있습니다.", 176 "settings.account.deleteInfo": "ë” ì´ìƒ Ferdi ê³„ì •ì´ í•„ìš”í•˜ì§€ 않다면 여기서 모든 관련한 ë°ì´í„°ì™€ ê³„ì •ì„ ì‚­ì œí•  수 있습니다.",
179 "settings.account.headline": "계정", 177 "settings.account.headline": "계정",
180 "settings.account.headlineAccount": "Account information", 178 "settings.account.headlineAccount": "계정 정보",
181 "settings.account.headlineDangerZone": "Danger Zone", 179 "settings.account.headlineDangerZone": "위험한 설정",
182 "settings.account.headlineInvoices": "Invoices", 180 "settings.account.headlineInvoices": "청구서",
183 "settings.account.headlinePassword": "Change password", 181 "settings.account.headlinePassword": "비밀번호 변경",
184 "settings.account.headlineProfile": "프로필 수정", 182 "settings.account.headlineProfile": "프로필 수정",
185 "settings.account.successInfo": "ë³€ê²½ì‚¬í•­ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤.", 183 "settings.account.successInfo": "ë³€ê²½ì‚¬í•­ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤.",
186 "settings.account.tryReloadServices": "다시 ì‹œë„하세요.", 184 "settings.account.tryReloadServices": "다시 ì‹œë„하세요.",
187 "settings.account.tryReloadUserInfoRequest": "다시 ì‹œë„하세요.", 185 "settings.account.tryReloadUserInfoRequest": "다시 ì‹œë„하세요.",
188 "settings.account.userInfoRequestFailed": "ì‚¬ìš©ìž ì •ë³´ë¥¼ 불러올 수 없습니다.", 186 "settings.account.userInfoRequestFailed": "ì‚¬ìš©ìž ì •ë³´ë¥¼ 불러올 수 없습니다.",
189 "settings.account.yourLicense": "Your Ferdi License:", 187 "settings.account.yourLicense": "Ferdi ë¼ì´ì„¼ìŠ¤:",
190 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})", 188 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})",
191 "settings.app.buttonClearAllCache": "ìºì‹œ 지우기", 189 "settings.app.buttonClearAllCache": "ìºì‹œ 지우기",
192 "settings.app.buttonInstallUpdate": "재시작 후 ì—…ë°ì´íŠ¸ 설치", 190 "settings.app.buttonInstallUpdate": "재시작 후 ì—…ë°ì´íŠ¸ 설치",
193 "settings.app.buttonOpenFerdiProfileFolder": "Open Profile folder", 191 "settings.app.buttonOpenFerdiProfileFolder": "í”„ë¡œíŒŒì¼ í´ë” 열기",
194 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder", 192 "settings.app.buttonOpenFerdiServiceRecipesFolder": "서비스 레시피 í´ë” 열기",
195 "settings.app.buttonSearchForUpdate": "ì—…ë°ì´íŠ¸ 확ì¸", 193 "settings.app.buttonSearchForUpdate": "ì—…ë°ì´íŠ¸ 확ì¸",
196 "settings.app.cacheInfo": "현재 Ferdi ìºì‹œê°€ ë””ìŠ¤í¬ ê³µê°„ì˜ {size} ë§Œí¼ ì‚¬ìš©í•˜ê³  있습니다.", 194 "settings.app.cacheInfo": "현재 Ferdi ìºì‹œê°€ ë””ìŠ¤í¬ ê³µê°„ì˜ {size} ë§Œí¼ ì‚¬ìš©í•˜ê³  있습니다.",
197 "settings.app.cacheNotCleared": "모든 ìºì‹œë¥¼ 지우지 못했습니다.", 195 "settings.app.cacheNotCleared": "모든 ìºì‹œë¥¼ 지우지 못했습니다.",
@@ -199,42 +197,42 @@
199 "settings.app.currentVersion": "현재 버전:", 197 "settings.app.currentVersion": "현재 버전:",
200 "settings.app.form.accentColor": "ê°•ì¡° 색ìƒ", 198 "settings.app.form.accentColor": "ê°•ì¡° 색ìƒ",
201 "settings.app.form.adaptableDarkMode": "사용하고 있는 OSì˜ ë‹¤í¬ ëª¨ë“œ 설정과 ë™ê¸°í™”합니다.", 199 "settings.app.form.adaptableDarkMode": "사용하고 있는 OSì˜ ë‹¤í¬ ëª¨ë“œ 설정과 ë™ê¸°í™”합니다.",
202 "settings.app.form.alwaysShowWorkspaces": "Always show workspace drawer", 200 "settings.app.form.alwaysShowWorkspaces": "작업공간 ì˜ì—­ì„ í•­ìƒ í‘œì‹œí•˜ê¸°",
203 "settings.app.form.autoLaunchInBackground": "백그ë¼ìš´ë“œë¡œ 열기", 201 "settings.app.form.autoLaunchInBackground": "백그ë¼ìš´ë“œë¡œ 열기",
204 "settings.app.form.autoLaunchOnStart": "부팅 시 Ferdi 실행", 202 "settings.app.form.autoLaunchOnStart": "부팅 시 Ferdi 실행",
205 "settings.app.form.automaticUpdates": "ì—…ë°ì´íŠ¸ 활성화", 203 "settings.app.form.automaticUpdates": "ì—…ë°ì´íŠ¸ 활성화",
206 "settings.app.form.beta": "베타 버전 í¬í•¨", 204 "settings.app.form.beta": "베타 버전 í¬í•¨",
207 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 205 "settings.app.form.clipboardNotifications": "í´ë¦½ë³´ë“œ ì´ë²¤íŠ¸ 관련 ì•Œë¦¼ì„ ë³´ì§€ 않기",
208 "settings.app.form.closeToSystemTray": "Ferdi 시스템 트레ì´ë¡œ 닫기", 206 "settings.app.form.closeToSystemTray": "Ferdi 시스템 트레ì´ë¡œ 닫기",
209 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi", 207 "settings.app.form.confirmOnQuit": "Ferdi 종료시 확ì¸",
210 "settings.app.form.customTodoServer": "Custom Todo Server", 208 "settings.app.form.customTodoServer": "커스텀 Todo 서버",
211 "settings.app.form.darkMode": "ë‹¤í¬ ëª¨ë“œ 활성화", 209 "settings.app.form.darkMode": "ë‹¤í¬ ëª¨ë“œ 활성화",
212 "settings.app.form.enableGPUAcceleration": "GPU ê°€ì† ì‚¬ìš©", 210 "settings.app.form.enableGPUAcceleration": "GPU ê°€ì† ì‚¬ìš©",
213 "settings.app.form.enableGlobalHideShortcut": "Enable Global shortcut to hide Ferdi", 211 "settings.app.form.enableGlobalHideShortcut": "Enable Global shortcut to hide Ferdi",
214 "settings.app.form.enableLock": "암호 잠금 활성화", 212 "settings.app.form.enableLock": "암호 잠금 활성화",
215 "settings.app.form.enableLongPressServiceHint": "Enable service shortcut hint on long press", 213 "settings.app.form.enableLongPressServiceHint": "Enable service shortcut hint on long press",
216 "settings.app.form.enableMenuBar": "Always show Ferdi in Menu Bar", 214 "settings.app.form.enableMenuBar": "메뉴 ë°”ì—ì„œ Ferdi í•­ìƒ í‘œì‹œí•˜ê¸°",
217 "settings.app.form.enableSpellchecking": "맞춤법 검사 활성화", 215 "settings.app.form.enableSpellchecking": "맞춤법 검사 활성화",
218 "settings.app.form.enableSystemTray": "Always show Ferdi in System Tray", 216 "settings.app.form.enableSystemTray": "시스템 트레ì´ì—ì„œ Ferdi í•­ìƒ í‘œì‹œí•˜ê¸°",
219 "settings.app.form.enableTodos": "Enable Ferdi Todos", 217 "settings.app.form.enableTodos": "Ferdi Todos 활성화",
220 "settings.app.form.hibernateOnStartup": "Keep services in hibernation on startup", 218 "settings.app.form.hibernateOnStartup": "시작시 서비스를 ìž ìžê¸° ìƒíƒœë¡œ 유지하기",
221 "settings.app.form.hibernationStrategy": "하ì´ë²„네ì´ì…˜ ì „ëžµ", 219 "settings.app.form.hibernationStrategy": "하ì´ë²„네ì´ì…˜ ì „ëžµ",
222 "settings.app.form.iconSize": "Service icon size", 220 "settings.app.form.iconSize": "서비스 ì•„ì´ì½˜ í¬ê¸°",
223 "settings.app.form.inactivityLock": "ë¹„í™œì„±í™”ì¼ ë•Œ 잠금", 221 "settings.app.form.inactivityLock": "ë¹„í™œì„±í™”ì¼ ë•Œ 잠금",
224 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", 222 "settings.app.form.keepAllWorkspacesLoaded": "모든 ìž‘ì—…ì˜ì—­ì„ í•­ìƒ ë¡œë“œí•˜ê¸°",
225 "settings.app.form.language": "언어", 223 "settings.app.form.language": "언어",
226 "settings.app.form.lockPassword": "비밀번호", 224 "settings.app.form.lockPassword": "비밀번호",
227 "settings.app.form.minimizeToSystemTray": "시스템 트레ì´ì— Ferdi 최소화", 225 "settings.app.form.minimizeToSystemTray": "시스템 트레ì´ì— Ferdi 최소화",
228 "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour", 226 "settings.app.form.navigationBarBehaviour": "네비게ì´ì…˜ ë°” 설정",
229 "settings.app.form.notifyTaskBarOnMessage": "Notify TaskBar/Dock on new message", 227 "settings.app.form.notifyTaskBarOnMessage": "태스í¬ë°”/ë…ì—ì„œ 새로운 메시지 알림",
230 "settings.app.form.passwordToggle": "Password toggle", 228 "settings.app.form.passwordToggle": "패스워드 전환",
231 "settings.app.form.predefinedTodoServer": "Todo 서버", 229 "settings.app.form.predefinedTodoServer": "Todo 서버",
232 "settings.app.form.privateNotifications": "ì•Œë¦¼ì— ë©”ì„¸ì§€ ë‚´ìš© ë³´ì´ì§€ 않기", 230 "settings.app.form.privateNotifications": "ì•Œë¦¼ì— ë©”ì„¸ì§€ ë‚´ìš© ë³´ì´ì§€ 않기",
233 "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume", 231 "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume",
234 "settings.app.form.runInBackground": "윈ë„우를 ë‹«ì„ ë•Œ Ferdi 백그ë¼ìš´ë“œì—ì„œ ê³„ì† ì‹¤í–‰í•˜ê¸°", 232 "settings.app.form.runInBackground": "윈ë„우를 ë‹«ì„ ë•Œ Ferdi 백그ë¼ìš´ë“œì—ì„œ ê³„ì† ì‹¤í–‰í•˜ê¸°",
235 "settings.app.form.scheduledDNDEnabled": "방해 금지 모드 시간 설정", 233 "settings.app.form.scheduledDNDEnabled": "방해 금지 모드 시간 설정",
236 "settings.app.form.scheduledDNDEnd": "To", 234 "settings.app.form.scheduledDNDEnd": "종료",
237 "settings.app.form.scheduledDNDStart": "From", 235 "settings.app.form.scheduledDNDStart": "시작",
238 "settings.app.form.searchEngine": "검색 엔진", 236 "settings.app.form.searchEngine": "검색 엔진",
239 "settings.app.form.sentry": "Send telemetry data", 237 "settings.app.form.sentry": "Send telemetry data",
240 "settings.app.form.serviceRibbonWidth": "사ì´ë“œë°” 너비", 238 "settings.app.form.serviceRibbonWidth": "사ì´ë“œë°” 너비",
@@ -242,11 +240,12 @@
242 "settings.app.form.showDragArea": "드래그 가능 ì˜ì—­ 보기", 240 "settings.app.form.showDragArea": "드래그 가능 ì˜ì—­ 보기",
243 "settings.app.form.showMessagesBadgesWhenMuted": "ì•Œë¦¼ì´ ë¹„í™œì„±í™”ìž‰ã„¹ ë•Œ ì½ì§€ ì•Šì€ ë©”ì„¸ì§€ 배지 표시", 241 "settings.app.form.showMessagesBadgesWhenMuted": "ì•Œë¦¼ì´ ë¹„í™œì„±í™”ìž‰ã„¹ ë•Œ ì½ì§€ ì•Šì€ ë©”ì„¸ì§€ 배지 표시",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
245 "settings.app.form.splitMode": "Enable Split View Mode", 243 "settings.app.form.splitColumns": "Number of columns",
244 "settings.app.form.splitMode": "분할보기 모드 활성화",
246 "settings.app.form.startMinimized": "최소화 ëœ ìƒíƒœë¡œ 시작", 245 "settings.app.form.startMinimized": "최소화 ëœ ìƒíƒœë¡œ 시작",
247 "settings.app.form.universalDarkMode": "ì „ì²´ ë‹¤í¬ ëª¨ë“œ 활성화", 246 "settings.app.form.universalDarkMode": "ì „ì²´ ë‹¤í¬ ëª¨ë“œ 활성화",
248 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 247 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
249 "settings.app.form.useVerticalStyle": "Use horizontal style", 248 "settings.app.form.useVerticalStyle": "가로 ìŠ¤íƒ€ì¼ ì‚¬ìš©",
250 "settings.app.form.wakeUpStrategy": "Wake up strategy", 249 "settings.app.form.wakeUpStrategy": "Wake up strategy",
251 "settings.app.headlineAdvanced": "고급", 250 "settings.app.headlineAdvanced": "고급",
252 "settings.app.headlineAppearance": "모양", 251 "settings.app.headlineAppearance": "모양",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "ì—…ë°ì´íŠ¸", 255 "settings.app.headlineUpdates": "ì—…ë°ì´íŠ¸",
257 "settings.app.hibernateInfo": "기본ì ìœ¼ë¡œ Ferdi 는 모든 서비스를 ì—´ê³  백그ë¼ìš´ë“œì—ì„œ 불러옵니다. 그래서 사용할 ë•Œ ì´ë¯¸ 준비ë˜ì–´ 있습니다. Service Hibernationì€ ì¼ì • 개수 ì´í›„ì— ì„œë¹„ìŠ¤ë¥¼ 불러오지 않습니다. ì´ë¡œì¸í•´ RAMì„ ì ˆì•½í•˜ê³  컴퓨터ì—ì„œ 서비스가 ëŠë ¤ì§€ëŠ” ê²ƒì„ ë°©ì§€í•´ì£¼ê¸°ì— ìœ ìš©í•©ë‹ˆë‹¤.", 256 "settings.app.hibernateInfo": "기본ì ìœ¼ë¡œ Ferdi 는 모든 서비스를 ì—´ê³  백그ë¼ìš´ë“œì—ì„œ 불러옵니다. 그래서 사용할 ë•Œ ì´ë¯¸ 준비ë˜ì–´ 있습니다. Service Hibernationì€ ì¼ì • 개수 ì´í›„ì— ì„œë¹„ìŠ¤ë¥¼ 불러오지 않습니다. ì´ë¡œì¸í•´ RAMì„ ì ˆì•½í•˜ê³  컴퓨터ì—ì„œ 서비스가 ëŠë ¤ì§€ëŠ” ê²ƒì„ ë°©ì§€í•´ì£¼ê¸°ì— ìœ ìš©í•©ë‹ˆë‹¤.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "ê³µì‹ ì§€ìš°ë„ˆ 언어는 ì˜ì–´ì™€ ë…ì¼ì–´ì´ë©° ì´ì™¸ ì–¸ì–´ë“¤ì€ ì»¤ë®¤ë‹ˆí‹°ì— ì˜í•´ 번역ë˜ê³  있습니다.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "비밀번호", 259 "settings.app.lockedPassword": "비밀번호",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -266,8 +264,8 @@
266 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!", 264 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!",
267 "settings.app.spellCheckerLanguageInfo": "Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.", 265 "settings.app.spellCheckerLanguageInfo": "Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.",
268 "settings.app.subheadlineCache": "ìºì‹œ", 266 "settings.app.subheadlineCache": "ìºì‹œ",
269 "settings.app.subheadlineFerdiProfile": "Ferdi Profile", 267 "settings.app.subheadlineFerdiProfile": "Ferdi 프로파ì¼",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.", 268 "settings.app.todoServerInfo": "\"Ferdi Todo\" ê¸°ëŠ¥ì— ì´ ì„œë²„ê°€ 사용ë©ë‹ˆë‹¤.",
271 "settings.app.translationHelp": "Ferdi ë²ˆì—­ì„ ë„와주세요.", 269 "settings.app.translationHelp": "Ferdi ë²ˆì—­ì„ ë„와주세요.",
272 "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", 270 "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.",
273 "settings.app.updateStatusAvailable": "사용가능 í•œ ì—…ë°ì´íŠ¸ 다운로드 중", 271 "settings.app.updateStatusAvailable": "사용가능 í•œ ì—…ë°ì´íŠ¸ 다운로드 중",
@@ -286,9 +284,9 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "개발 문서", 288 "settings.recipes.customService.openDevDocs": "개발 문서",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "í´ë” 열기",
292 "settings.recipes.headline": "사용가능 한 서비스", 290 "settings.recipes.headline": "사용가능 한 서비스",
293 "settings.recipes.missingService": "서비스가 ë³´ì´ì§€ 않습니까?", 291 "settings.recipes.missingService": "서비스가 ë³´ì´ì§€ 않습니까?",
294 "settings.recipes.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 292 "settings.recipes.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.",
@@ -296,7 +294,7 @@
296 "settings.searchService": "서비스 찾기", 294 "settings.searchService": "서비스 찾기",
297 "settings.service.error.goBack": "서비스로 ëŒì•„가기", 295 "settings.service.error.goBack": "서비스로 ëŒì•„가기",
298 "settings.service.error.headline": "ì—러", 296 "settings.service.error.headline": "ì—러",
299 "settings.service.error.message": "Could not load service recipe.", 297 "settings.service.error.message": "서비스 레시피를 불러올 수 없습니다.",
300 "settings.service.form.addServiceHeadline": "{name} 추가", 298 "settings.service.form.addServiceHeadline": "{name} 추가",
301 "settings.service.form.availableServices": "사용가능 한 서비스", 299 "settings.service.form.availableServices": "사용가능 한 서비스",
302 "settings.service.form.customUrl": "ì‚¬ìš©ìž ì •ì˜ ì„œë²„", 300 "settings.service.form.customUrl": "ì‚¬ìš©ìž ì •ì˜ ì„œë²„",
@@ -304,7 +302,7 @@
304 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness", 302 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness",
305 "settings.service.form.darkReaderContrast": "Dark Reader Contrast", 303 "settings.service.form.darkReaderContrast": "Dark Reader Contrast",
306 "settings.service.form.darkReaderSepia": "Dark Reader Sepia", 304 "settings.service.form.darkReaderSepia": "Dark Reader Sepia",
307 "settings.service.form.deleteButton": "Delete service", 305 "settings.service.form.deleteButton": "서비스 삭제",
308 "settings.service.form.editServiceHeadline": "편집 {name}", 306 "settings.service.form.editServiceHeadline": "편집 {name}",
309 "settings.service.form.enableAudio": "오디오 활성화", 307 "settings.service.form.enableAudio": "오디오 활성화",
310 "settings.service.form.enableBadge": "ì½ì§€ ì•Šì€ ë©”ì„¸ì§€ 배지 표시", 308 "settings.service.form.enableBadge": "ì½ì§€ ì•Šì€ ë©”ì„¸ì§€ 배지 표시",
@@ -312,7 +310,7 @@
312 "settings.service.form.enableHibernation": "절전모드 활성화", 310 "settings.service.form.enableHibernation": "절전모드 활성화",
313 "settings.service.form.enableNotification": "알림 허용", 311 "settings.service.form.enableNotification": "알림 허용",
314 "settings.service.form.enableService": "서비스 활성화", 312 "settings.service.form.enableService": "서비스 활성화",
315 "settings.service.form.enableWakeUp": "Enable wake up", 313 "settings.service.form.enableWakeUp": "깨우기 활성화",
316 "settings.service.form.headlineBadges": "ì½ì§€ ì•Šì€ ë©”ì„¸ì§€ 배지 표시", 314 "settings.service.form.headlineBadges": "ì½ì§€ ì•Šì€ ë©”ì„¸ì§€ 배지 표시",
317 "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings", 315 "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings",
318 "settings.service.form.headlineGeneral": "ì¼ë°˜", 316 "settings.service.form.headlineGeneral": "ì¼ë°˜",
@@ -330,13 +328,13 @@
330 "settings.service.form.openUserCss": "user.css 열기", 328 "settings.service.form.openUserCss": "user.css 열기",
331 "settings.service.form.openUserJs": "user.js 열기", 329 "settings.service.form.openUserJs": "user.js 열기",
332 "settings.service.form.proxy.headline": "HTTP/HTTPS 프ë¡ì‹œ 설정", 330 "settings.service.form.proxy.headline": "HTTP/HTTPS 프ë¡ì‹œ 설정",
333 "settings.service.form.proxy.host": "Proxy Host/IP", 331 "settings.service.form.proxy.host": "프ë¡ì‹œ 호스트/IP",
334 "settings.service.form.proxy.info": "Proxy settings will not be synchronized with the Ferdi servers.", 332 "settings.service.form.proxy.info": "프ë¡ì‹œ ì„¤ì •ì€ Ferdi ì„œë²„ì— ì €ìž¥ë˜ì§€ 않습니다.",
335 "settings.service.form.proxy.isEnabled": "프ë¡ì‹œ 사용하기", 333 "settings.service.form.proxy.isEnabled": "프ë¡ì‹œ 사용하기",
336 "settings.service.form.proxy.password": "Password (optional)", 334 "settings.service.form.proxy.password": "비밀번호 (ì„ íƒì‚¬í•­)",
337 "settings.service.form.proxy.port": "í¬íŠ¸", 335 "settings.service.form.proxy.port": "í¬íŠ¸",
338 "settings.service.form.proxy.restartInfo": "프ë¡ì‹œ 설정 변경 후 Ferdi를 재시작 해주세요.", 336 "settings.service.form.proxy.restartInfo": "프ë¡ì‹œ 설정 변경 후 Ferdi를 재시작 해주세요.",
339 "settings.service.form.proxy.user": "User (optional)", 337 "settings.service.form.proxy.user": "사용ìžëª… (ì„ íƒì‚¬í•­)",
340 "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.", 338 "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.",
341 "settings.service.form.saveButton": "서비스 저장", 339 "settings.service.form.saveButton": "서비스 저장",
342 "settings.service.form.tabHosted": "Hosted", 340 "settings.service.form.tabHosted": "Hosted",
@@ -347,28 +345,25 @@
347 "settings.services.deletedInfo": "서비스가 ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.", 345 "settings.services.deletedInfo": "서비스가 ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.",
348 "settings.services.discoverServices": "서비스 발견", 346 "settings.services.discoverServices": "서비스 발견",
349 "settings.services.headline": "서비스", 347 "settings.services.headline": "서비스",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "서비스를 추가하여 시작하기",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "서비스를 불러올 수 없습니다.", 350 "settings.services.servicesRequestFailed": "서비스를 불러올 수 없습니다.",
353 "settings.services.tooltip.isDisabled": "서비스를 사용할 수 없습니다.", 351 "settings.services.tooltip.isDisabled": "서비스를 사용할 수 없습니다.",
354 "settings.services.tooltip.isMuted": "모든 소리가 꺼져있습니다.", 352 "settings.services.tooltip.isMuted": "모든 소리가 꺼져있습니다.",
355 "settings.services.tooltip.notificationsDisabled": "ì•Œë¦¼ì´ ë¹„í™œì„±í™” ë˜ì–´ 있습니다.", 353 "settings.services.tooltip.notificationsDisabled": "ì•Œë¦¼ì´ ë¹„í™œì„±í™” ë˜ì–´ 있습니다.",
356 "settings.services.updatedInfo": "ë³€ê²½ì‚¬í•­ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤.", 354 "settings.services.updatedInfo": "ë³€ê²½ì‚¬í•­ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤.",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi는 오픈소스ì´ë©° 커뮤니티가 주ë„하는 애플리케ì´ì…˜ìž…니다.</p><p>ì´ê²ƒì„ 가능하게 해주신 분들께 ê°ì‚¬ë“œë¦½ë‹ˆë‹¤:</p>",
358 "settings.supportFerdi.bannerText": "Ferdi 서비스 í–¥ìƒì— ë„ì›€ì„ ì£¼ê¸°ë¥¼ ì›í•˜ì‹­ë‹ˆê¹Œ?",
359 "settings.supportFerdi.headline": "Ferdiì— ëŒ€í•´", 356 "settings.supportFerdi.headline": "Ferdiì— ëŒ€í•´",
360 "settings.supportFerdi.openSurvey": "Open survey", 357 "settings.supportFerdi.textDonation": "기부를 통해 Ferdiì˜ ê°œë°œì„ ì§€ì›í•˜\b시려면 아래 ë°©ë²•ì„ ì„ íƒí•˜ì‹¤ 수 있습니다.",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "그리고", 358 "settings.supportFerdi.textDonationAnd": "그리고",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "ëŒ€ë¶€ë¶„ì˜ ìž‘ì—…ì´ ìžì›ë´‰ì‚¬ìžë“¤ì— ì˜í•´ ì´ë£¨ì–´ì§€ì§€ë§Œ 서버비용과 ì¸ì¦ì„œ ë¹„ìš©ì´ ë°œìƒë©ë‹ˆë‹¤. 우리 커뮤니티는 ìžê¸ˆì˜ 모금과 ì‚¬ìš©ì— ëŒ€í•´ 완전한 íˆ¬ëª…ì„±ì„ ìœ ì§€í•©ë‹ˆë‹¤. ìžì„¸í•œ ë‚´ìš©ì„ ë‹¤ìŒì„ 참조하세요.",
364 "settings.supportFerdi.textGitHubSponsors": "깃허브 후ì›ìž", 360 "settings.supportFerdi.textGitHubSponsors": "깃허브 후ì›ìž",
365 "settings.supportFerdi.textListContributors": "Full list of contributors", 361 "settings.supportFerdi.textListContributors": "ê¸°ì—¬ìž ì „ì²´ 목ë¡",
366 "settings.supportFerdi.textListContributorsHere": "here", 362 "settings.supportFerdi.textListContributorsHere": "여기",
367 "settings.supportFerdi.textOpenCollective": "Open Collective", 363 "settings.supportFerdi.textOpenCollective": "Open Collective",
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "여기",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Ferdiê°€ ë§˜ì— ë“œì‹œë‚˜ìš”?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "팀", 369 "settings.team.headline": "팀",
@@ -382,8 +377,8 @@
382 "settings.user.form.accountType.non-profit": "비ì˜ë¦¬", 377 "settings.user.form.accountType.non-profit": "비ì˜ë¦¬",
383 "settings.user.form.currentPassword": "현재 비밀번호", 378 "settings.user.form.currentPassword": "현재 비밀번호",
384 "settings.user.form.email": "ì´ë©”ì¼", 379 "settings.user.form.email": "ì´ë©”ì¼",
385 "settings.user.form.firstname": "First Name", 380 "settings.user.form.firstname": "ì´ë¦„",
386 "settings.user.form.lastname": "Last Name", 381 "settings.user.form.lastname": "성",
387 "settings.user.form.newPassword": "새로운 비밀번호", 382 "settings.user.form.newPassword": "새로운 비밀번호",
388 "settings.workspace.add.form.name": "ì´ë¦„", 383 "settings.workspace.add.form.name": "ì´ë¦„",
389 "settings.workspace.add.form.submitButton": "새로운 ìž‘ì—…ì˜ì—­ ìƒì„±í•˜ê¸°", 384 "settings.workspace.add.form.submitButton": "새로운 ìž‘ì—…ì˜ì—­ ìƒì„±í•˜ê¸°",
@@ -415,9 +410,9 @@
415 "sidebar.unmuteApp": "알림과 오디오 활성화", 410 "sidebar.unmuteApp": "알림과 오디오 활성화",
416 "signup.email.label": "ì´ë©”ì¼ ì£¼ì†Œ", 411 "signup.email.label": "ì´ë©”ì¼ ì£¼ì†Œ",
417 "signup.emailDuplicate": "해당 ì´ë©”ì¼ì„ 가진 사용ìžê°€ ì´ë¯¸ 존재합니다", 412 "signup.emailDuplicate": "해당 ì´ë©”ì¼ì„ 가진 사용ìžê°€ ì´ë¯¸ 존재합니다",
418 "signup.firstname.label": "First Name", 413 "signup.firstname.label": "ì´ë¦„",
419 "signup.headline": "íšŒì› ê°€ìž…", 414 "signup.headline": "íšŒì› ê°€ìž…",
420 "signup.lastname.label": "Last Name", 415 "signup.lastname.label": "성",
421 "signup.legal.info": "By creating a Ferdi account you accept the", 416 "signup.legal.info": "By creating a Ferdi account you accept the",
422 "signup.legal.privacy": "ê°œì¸ì •ë³´ë³´í˜¸ì •ì±…", 417 "signup.legal.privacy": "ê°œì¸ì •ë³´ë³´í˜¸ì •ì±…",
423 "signup.legal.terms": "ì´ìš© 약관", 418 "signup.legal.terms": "ì´ìš© 약관",
@@ -425,11 +420,11 @@
425 "signup.password.label": "비밀번호", 420 "signup.password.label": "비밀번호",
426 "signup.submit.label": "계정 만들기", 421 "signup.submit.label": "계정 만들기",
427 "tabs.item.confirmDeleteService": "{serviceName} 서비스를 ì •ë§ë¡œ 삭제하시겠습니까?", 422 "tabs.item.confirmDeleteService": "{serviceName} 서비스를 ì •ë§ë¡œ 삭제하시겠습니까?",
428 "tabs.item.deleteService": "Delete service", 423 "tabs.item.deleteService": "서비스 삭제",
429 "tabs.item.disableAudio": "오디오 비활성화", 424 "tabs.item.disableAudio": "오디오 비활성화",
430 "tabs.item.disableDarkMode": "Disable Dark mode", 425 "tabs.item.disableDarkMode": "Disable Dark mode",
431 "tabs.item.disableNotifications": "알림 비활성화", 426 "tabs.item.disableNotifications": "알림 비활성화",
432 "tabs.item.disableService": "Disable service", 427 "tabs.item.disableService": "서비스 비활성화",
433 "tabs.item.enableAudio": "오디오 활성화", 428 "tabs.item.enableAudio": "오디오 활성화",
434 "tabs.item.enableDarkMode": "Enable Dark mode", 429 "tabs.item.enableDarkMode": "Enable Dark mode",
435 "tabs.item.enableNotification": "알림 허용", 430 "tabs.item.enableNotification": "알림 허용",
@@ -449,12 +444,12 @@
449 "webControls.reload": "새로고침", 444 "webControls.reload": "새로고침",
450 "welcome.loginButton": "ê³„ì •ì— ë¡œê·¸ì¸í•˜ì„¸ìš”.", 445 "welcome.loginButton": "ê³„ì •ì— ë¡œê·¸ì¸í•˜ì„¸ìš”.",
451 "welcome.signupButton": "무료 계정 ìƒì„±", 446 "welcome.signupButton": "무료 계정 ìƒì„±",
452 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", 447 "workspaceDrawer.addNewWorkspaceLabel": "새 ìž‘ì—…ì˜ì—­ì„ 추가",
453 "workspaceDrawer.allServices": "모든 서비스", 448 "workspaceDrawer.allServices": "모든 서비스",
454 "workspaceDrawer.headline": "작업 공간", 449 "workspaceDrawer.headline": "작업 공간",
455 "workspaceDrawer.item.contextMenuEdit": "편집", 450 "workspaceDrawer.item.contextMenuEdit": "편집",
456 "workspaceDrawer.item.noServicesAddedYet": "ì¶”ê°€ëœ ì„œë¹„ìŠ¤ê°€ 없습니다.", 451 "workspaceDrawer.item.noServicesAddedYet": "ì¶”ê°€ëœ ì„œë¹„ìŠ¤ê°€ 없습니다.",
457 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", 452 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>",
458 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", 453 "workspaceDrawer.workspacesSettingsTooltip": "ìž‘ì—… ì˜ì—­ 설정",
459 "workspaces.switchingIndicator.switchingTo": "Switching to" 454 "workspaces.switchingIndicator.switchingTo": "다ìŒìœ¼ë¡œ 전환"
460} 455}
diff --git a/src/i18n/locales/nl-BE.json b/src/i18n/locales/nl-BE.json
index 44f48ee9b..4ec87e66b 100644
--- a/src/i18n/locales/nl-BE.json
+++ b/src/i18n/locales/nl-BE.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Uitnodigingen verzenden", 61 "invite.submit.label": "Uitnodigingen verzenden",
62 "invite.successInfo": "Uitnodiging met succes verzonden", 62 "invite.successInfo": "Uitnodiging met succes verzonden",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Welkom bij Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Updates", 255 "settings.app.headlineUpdates": "Updates",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Officiële vertalingen zijn in het Engels en Duits. Alle andere tallen zijn op de gemeenschap gebaseerde vertalingen.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Beschikbare services", 290 "settings.recipes.headline": "Beschikbare services",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Services ontdekken", 346 "settings.services.discoverServices": "Services ontdekken",
349 "settings.services.headline": "Jouw services", 347 "settings.services.headline": "Jouw services",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Kan je diensten niet laden", 350 "settings.services.servicesRequestFailed": "Kan je diensten niet laden",
353 "settings.services.tooltip.isDisabled": "Service is uitgeschakeld", 351 "settings.services.tooltip.isDisabled": "Service is uitgeschakeld",
354 "settings.services.tooltip.isMuted": "Alle geluiden zijn uitgeschakeld", 352 "settings.services.tooltip.isMuted": "Alle geluiden zijn uitgeschakeld",
355 "settings.services.tooltip.notificationsDisabled": "Notificaties staan uit", 353 "settings.services.tooltip.notificationsDisabled": "Notificaties staan uit",
356 "settings.services.updatedInfo": "Je wijzigingen zijn opgeslagen", 354 "settings.services.updatedInfo": "Je wijzigingen zijn opgeslagen",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "Over Ferdi", 356 "settings.supportFerdi.headline": "Over Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json
index 97542828f..be302db8d 100644
--- a/src/i18n/locales/nl.json
+++ b/src/i18n/locales/nl.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Uitnodigingen verzenden", 61 "invite.submit.label": "Uitnodigingen verzenden",
62 "invite.successInfo": "Uitnodigingen verzonden", 62 "invite.successInfo": "Uitnodigingen verzonden",
63 "locked.headline": "Vergrendeld", 63 "locked.headline": "Vergrendeld",
64 "locked.info": "Ferdi is momenteel vergrendeld. Ontgrendel Ferdi met je wachtwoord om je berichten te bekijken.",
65 "locked.invalidCredentials": "Verkeerd wachtwoord", 64 "locked.invalidCredentials": "Verkeerd wachtwoord",
66 "locked.password.label": "Wachtwoord", 65 "locked.password.label": "Wachtwoord",
67 "locked.submit.label": "Ontgrendelen", 66 "locked.submit.label": "Ontgrendelen",
@@ -168,7 +167,6 @@
168 "services.login": "Log in om Ferdi te gebruiken.", 167 "services.login": "Log in om Ferdi te gebruiken.",
169 "services.serverInfo": "Je kunt je Ferdi-server ook veranderen door op het tandwieltje in de linkeronderhoek te klikken. Als je van een van de gehoste servers wisselt naar Ferdi zonder account, dien je je ervan bewust te zijn dat je je gegevens van die server kunt exporteren en deze vervolgens kunt importeren via het Help-menu om al je werkruimtes en geconfigureerde diensten weer te genereren!", 168 "services.serverInfo": "Je kunt je Ferdi-server ook veranderen door op het tandwieltje in de linkeronderhoek te klikken. Als je van een van de gehoste servers wisselt naar Ferdi zonder account, dien je je ervan bewust te zijn dat je je gegevens van die server kunt exporteren en deze vervolgens kunt importeren via het Help-menu om al je werkruimtes en geconfigureerde diensten weer te genereren!",
170 "services.serverless": "Ferdi zonder account gebruiken", 169 "services.serverless": "Ferdi zonder account gebruiken",
171 "services.welcome": "Welkom bij Ferdi",
172 "settings.account.account.editButton": "Account bewerken", 170 "settings.account.account.editButton": "Account bewerken",
173 "settings.account.accountUnavailable": "Account is niet beschikbaar", 171 "settings.account.accountUnavailable": "Account is niet beschikbaar",
174 "settings.account.accountUnavailableInfo": "U gebruikt Ferdi zonder account. Als u Ferdi wilt gebruiken met een account en uw services gesynchroniseerd wilt houden tussen installaties, selecteer een server in het tabblad Instellingen en log in.", 172 "settings.account.accountUnavailableInfo": "U gebruikt Ferdi zonder account. Als u Ferdi wilt gebruiken met een account en uw services gesynchroniseerd wilt houden tussen installaties, selecteer een server in het tabblad Instellingen en log in.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Sleepbaar gebied in venster tonen", 240 "settings.app.form.showDragArea": "Sleepbaar gebied in venster tonen",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld",
244 "settings.app.form.showServiceName": "Servicenaam onder pictogram weergeven", 242 "settings.app.form.showServiceName": "Servicenaam onder pictogram weergeven",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Gesplitste weergave inschakelen", 244 "settings.app.form.splitMode": "Gesplitste weergave inschakelen",
246 "settings.app.form.startMinimized": "Geminimaliseerd starten", 245 "settings.app.form.startMinimized": "Geminimaliseerd starten",
247 "settings.app.form.universalDarkMode": "Universele donkere modus inschakelen", 246 "settings.app.form.universalDarkMode": "Universele donkere modus inschakelen",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Updates", 255 "settings.app.headlineUpdates": "Updates",
257 "settings.app.hibernateInfo": "Ferdi houdt je services standaard open op de achtergrond, zodat ze klaarstaan wanneer je ze wilt gebruiken. Als je de slaapstand inschakelt, worden services na een bepaalde tijd gesloten. Zo kun je RAM besparen en voorkomen dat services je computer vertragen.", 256 "settings.app.hibernateInfo": "Ferdi houdt je services standaard open op de achtergrond, zodat ze klaarstaan wanneer je ze wilt gebruiken. Als je de slaapstand inschakelt, worden services na een bepaalde tijd gesloten. Zo kun je RAM besparen en voorkomen dat services je computer vertragen.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Ferdi spreekt officieel Engels en Duits. Alle andere talen worden beheerd door de community.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Wachtwoord", 259 "settings.app.lockedPassword": "Wachtwoord",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Communityrecepten", 284 "settings.recipes.customService.headline.communityRecipes": "Communityrecepten",
287 "settings.recipes.customService.headline.customRecipes": "Aangepaste recepten", 285 "settings.recipes.customService.headline.customRecipes": "Aangepaste recepten",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "Kopieer het servicerecept hierheen om een aangepaste service toe te voegen:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Documentatie voor ontwikkelaars", 288 "settings.recipes.customService.openDevDocs": "Documentatie voor ontwikkelaars",
291 "settings.recipes.customService.openFolder": "Map openen", 289 "settings.recipes.customService.openFolder": "Map openen",
292 "settings.recipes.headline": "Beschikbare services", 290 "settings.recipes.headline": "Beschikbare services",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Ontdek services", 346 "settings.services.discoverServices": "Ontdek services",
349 "settings.services.headline": "Jouw services", 347 "settings.services.headline": "Jouw services",
350 "settings.services.noServicesAdded": "Start met een service toe te voegen.", 348 "settings.services.noServicesAdded": "Start met een service toe te voegen.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Kan jouw services niet laden", 350 "settings.services.servicesRequestFailed": "Kan jouw services niet laden",
353 "settings.services.tooltip.isDisabled": "Service is uitgeschakeld", 351 "settings.services.tooltip.isDisabled": "Service is uitgeschakeld",
354 "settings.services.tooltip.isMuted": "Geluid is uitgeschakeld", 352 "settings.services.tooltip.isMuted": "Geluid is uitgeschakeld",
355 "settings.services.tooltip.notificationsDisabled": "Meldingen zijn uitgeschakeld", 353 "settings.services.tooltip.notificationsDisabled": "Meldingen zijn uitgeschakeld",
356 "settings.services.updatedInfo": "Je wijzigingen zijn opgeslagen", 354 "settings.services.updatedInfo": "Je wijzigingen zijn opgeslagen",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Wil je ons helpen Ferdi te verbeteren?",
359 "settings.supportFerdi.headline": "Over Ferdi", 356 "settings.supportFerdi.headline": "Over Ferdi",
360 "settings.supportFerdi.openSurvey": "Vragenlijst openen",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "en", 358 "settings.supportFerdi.textDonationAnd": "en",
363 "settings.supportFerdi.textExpenses": "Hoewel het meeste werk door vrijwilligers wordt gedaan, moeten we nog steeds voor servers en certificaten betalen. Als community zijn we volledig transparant over het geld dat we inzamelen en uitgeven. Meer informatie vind je op", 359 "settings.supportFerdi.textExpenses": "Hoewel het meeste werk door vrijwilligers wordt gedaan, moeten we nog steeds voor servers en certificaten betalen. Als community zijn we volledig transparant over het geld dat we inzamelen en uitgeven. Meer informatie vind je op",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "hier", 365 "settings.supportFerdi.textSupportWelcomeHere": "hier",
370 "settings.supportFerdi.textVolunteers": "De ontwikkeling van Ferdi is in handen van vrijwilligers. Mensen die Ferdi gebruiken, net als jij. Ze onderhouden, repareren en verbeteren Ferdi in hun vrije tijd.", 366 "settings.supportFerdi.textVolunteers": "De ontwikkeling van Ferdi is in handen van vrijwilligers. Mensen die Ferdi gebruiken, net als jij. Ze onderhouden, repareren en verbeteren Ferdi in hun vrije tijd.",
371 "settings.supportFerdi.title": "Gebruik je Ferdi graag?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
diff --git a/src/i18n/locales/no.json b/src/i18n/locales/no.json
index 0e9dec5ee..5010614e6 100644
--- a/src/i18n/locales/no.json
+++ b/src/i18n/locales/no.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Send invitasjoner", 61 "invite.submit.label": "Send invitasjoner",
62 "invite.successInfo": "Invitasjonene ble vellykket sendt", 62 "invite.successInfo": "Invitasjonene ble vellykket sendt",
63 "locked.headline": "LÃ¥st", 63 "locked.headline": "LÃ¥st",
64 "locked.info": "Ferdi er for øyeblikket låst. Vennligst lås opp Ferdi med passordet ditt for å se meldingene dine.",
65 "locked.invalidCredentials": "Ugyldig passord", 64 "locked.invalidCredentials": "Ugyldig passord",
66 "locked.password.label": "Passord", 65 "locked.password.label": "Passord",
67 "locked.submit.label": "LÃ¥s opp", 66 "locked.submit.label": "LÃ¥s opp",
@@ -168,7 +167,6 @@
168 "services.login": "Vennligst logg inn for å bruke Ferdi.", 167 "services.login": "Vennligst logg inn for å bruke Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Bruk Ferdi uten en konto", 169 "services.serverless": "Bruk Ferdi uten en konto",
171 "services.welcome": "Velkommen til Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Kontoen er ikke tilgjengelig", 171 "settings.account.accountUnavailable": "Kontoen er ikke tilgjengelig",
174 "settings.account.accountUnavailableInfo": "Du bruker Ferdi uten en konto. Hvis du ønsker å bruke Ferdi med en konto og hold tjenestene dine synkronisert på tvers av installasjoner, velg en tjener i fanen innstillinger og logg inn.", 172 "settings.account.accountUnavailableInfo": "Du bruker Ferdi uten en konto. Hvis du ønsker å bruke Ferdi med en konto og hold tjenestene dine synkronisert på tvers av installasjoner, velg en tjener i fanen innstillinger og logg inn.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Vis flyttbart område i vinduet", 240 "settings.app.form.showDragArea": "Vis flyttbart område i vinduet",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Vis uleste meldingsetiketter når varsler er deaktivert", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Vis uleste meldingsetiketter når varsler er deaktivert",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimert", 245 "settings.app.form.startMinimized": "Start minimert",
247 "settings.app.form.universalDarkMode": "Aktiver universelt mørkt tema", 246 "settings.app.form.universalDarkMode": "Aktiver universelt mørkt tema",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Oppdateringer", 255 "settings.app.headlineUpdates": "Oppdateringer",
257 "settings.app.hibernateInfo": "Som standard vil Ferdi beholde alle tjenestene dine åpne og lastet i bakgrunnen slik at de er klare når du vil bruke dem. Dvalemodus for tjenester vil sette tjenestene dine i dvale etter et angitt tidsrom. Dette er nyttig for å spare minne eller sørge for at tjenestene ikke gjør datamaskinen din treg.", 256 "settings.app.hibernateInfo": "Som standard vil Ferdi beholde alle tjenestene dine åpne og lastet i bakgrunnen slik at de er klare når du vil bruke dem. Dvalemodus for tjenester vil sette tjenestene dine i dvale etter et angitt tidsrom. Dette er nyttig for å spare minne eller sørge for at tjenestene ikke gjør datamaskinen din treg.",
258 "settings.app.inactivityLockInfo": "Minutter med inaktivitet, hvorpå Ferdi burde låses automatisk. Bruk 0 for å deaktivere", 257 "settings.app.inactivityLockInfo": "Minutter med inaktivitet, hvorpå Ferdi burde låses automatisk. Bruk 0 for å deaktivere",
259 "settings.app.languageDisclaimer": "Offisielle oversettelser er engelsk & tysk. Alle andre språk er samfunnsbaserte oversettelser.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Passord", 259 "settings.app.lockedPassword": "Passord",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Fellesskap 3. parts oppskrifter", 284 "settings.recipes.customService.headline.communityRecipes": "Fellesskap 3. parts oppskrifter",
287 "settings.recipes.customService.headline.customRecipes": "Tilpassede 3. parts oppskrifter", 285 "settings.recipes.customService.headline.customRecipes": "Tilpassede 3. parts oppskrifter",
288 "settings.recipes.customService.headline.devRecipes": "Dine utviklingstjeneste oppskrifter", 286 "settings.recipes.customService.headline.devRecipes": "Dine utviklingstjeneste oppskrifter",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Utviklerdokumentasjon", 288 "settings.recipes.customService.openDevDocs": "Utviklerdokumentasjon",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Tilgjengelige tjenester", 290 "settings.recipes.headline": "Tilgjengelige tjenester",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Oppdag tjenester", 346 "settings.services.discoverServices": "Oppdag tjenester",
349 "settings.services.headline": "Dine tjenester", 347 "settings.services.headline": "Dine tjenester",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Kunne ikke laste dine tjenester", 350 "settings.services.servicesRequestFailed": "Kunne ikke laste dine tjenester",
353 "settings.services.tooltip.isDisabled": "Tjenesten er deaktivert", 351 "settings.services.tooltip.isDisabled": "Tjenesten er deaktivert",
354 "settings.services.tooltip.isMuted": "Alle lyder er dempet", 352 "settings.services.tooltip.isMuted": "Alle lyder er dempet",
355 "settings.services.tooltip.notificationsDisabled": "Varsler er deaktivert", 353 "settings.services.tooltip.notificationsDisabled": "Varsler er deaktivert",
356 "settings.services.updatedInfo": "Dine endringer har blitt lagret", 354 "settings.services.updatedInfo": "Dine endringer har blitt lagret",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "Om Ferdi", 356 "settings.supportFerdi.headline": "Om Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Ferdi team-administrasjon", 367 "settings.team.contentHeadline": "Ferdi team-administrasjon",
373 "settings.team.copy": "Med Franz's Team-administrasjon kan du administrere Franz abonnementer for flere brukere. Vennligst husk at du som har et Franz Premium-abonnement vil ikke ha noen fordeler med deg når du bruker Ferdi: Den eneste grunnen til at du fortsatt har tilgang til teamhåndtering er slik at du kan administrere din eldre Franz team, og for at du ikke skal miste noen funksjoner ved administrasjon av kontoen din.", 368 "settings.team.copy": "Med Franz's Team-administrasjon kan du administrere Franz abonnementer for flere brukere. Vennligst husk at du som har et Franz Premium-abonnement vil ikke ha noen fordeler med deg når du bruker Ferdi: Den eneste grunnen til at du fortsatt har tilgang til teamhåndtering er slik at du kan administrere din eldre Franz team, og for at du ikke skal miste noen funksjoner ved administrasjon av kontoen din.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json
index 0accdac07..20511d92f 100644
--- a/src/i18n/locales/pl.json
+++ b/src/i18n/locales/pl.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Wyślij zaproszenia", 61 "invite.submit.label": "Wyślij zaproszenia",
62 "invite.successInfo": "Zaproszenia zostały wysłane", 62 "invite.successInfo": "Zaproszenia zostały wysłane",
63 "locked.headline": "Zablokowane", 63 "locked.headline": "Zablokowane",
64 "locked.info": "Ferdi jest obecnie zablokowany. Odblokuj go przy użyciu hasła, aby zobaczyć swoje wiadomości.",
65 "locked.invalidCredentials": "Nieprawidłowe hasło", 64 "locked.invalidCredentials": "Nieprawidłowe hasło",
66 "locked.password.label": "Hasło", 65 "locked.password.label": "Hasło",
67 "locked.submit.label": "Odblokuj", 66 "locked.submit.label": "Odblokuj",
@@ -168,7 +167,6 @@
168 "services.login": "Zaloguj się, aby używać Ferdi.", 167 "services.login": "Zaloguj się, aby używać Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Używaj Ferdi bez konta", 169 "services.serverless": "Używaj Ferdi bez konta",
171 "services.welcome": "Witaj w programie Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Konto jest niedostępne", 171 "settings.account.accountUnavailable": "Konto jest niedostępne",
174 "settings.account.accountUnavailableInfo": "Używasz Ferdi bez konta. Jeśli chcesz używać Ferdi z kontem i synchronizować swoje usługi pomiędzy klientami, wybierz serwer w zakładce Ustawienia i zaloguj się.", 172 "settings.account.accountUnavailableInfo": "Używasz Ferdi bez konta. Jeśli chcesz używać Ferdi z kontem i synchronizować swoje usługi pomiędzy klientami, wybierz serwer w zakładce Ustawienia i zaloguj się.",
@@ -179,7 +177,7 @@
179 "settings.account.headline": "Konto", 177 "settings.account.headline": "Konto",
180 "settings.account.headlineAccount": "Account information", 178 "settings.account.headlineAccount": "Account information",
181 "settings.account.headlineDangerZone": "Danger Zone", 179 "settings.account.headlineDangerZone": "Danger Zone",
182 "settings.account.headlineInvoices": "Invoices", 180 "settings.account.headlineInvoices": "Faktury",
183 "settings.account.headlinePassword": "Change password", 181 "settings.account.headlinePassword": "Change password",
184 "settings.account.headlineProfile": "Uaktualnij profil", 182 "settings.account.headlineProfile": "Uaktualnij profil",
185 "settings.account.successInfo": "Twoje zmiany zostały zapisane", 183 "settings.account.successInfo": "Twoje zmiany zostały zapisane",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Pokaż licznik nieprzeczytanych wiadomości gdy powiadomienia są wyłączone", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Pokaż licznik nieprzeczytanych wiadomości gdy powiadomienia są wyłączone",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Uruchom zminimalizowany", 245 "settings.app.form.startMinimized": "Uruchom zminimalizowany",
247 "settings.app.form.universalDarkMode": "WÅ‚Ä…cz uniwersalny tryb ciemny", 246 "settings.app.form.universalDarkMode": "WÅ‚Ä…cz uniwersalny tryb ciemny",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Aktualizacje", 255 "settings.app.headlineUpdates": "Aktualizacje",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Oficjalnymi językami są Angielski i Niemiecki. Inne języki są tłumaczone przez społeczność Ferdi.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Hasło", 259 "settings.app.lockedPassword": "Hasło",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Dokumentacja deweloperska", 288 "settings.recipes.customService.openDevDocs": "Dokumentacja deweloperska",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Dostępne usługi", 290 "settings.recipes.headline": "Dostępne usługi",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Przeglądaj usługi", 346 "settings.services.discoverServices": "Przeglądaj usługi",
349 "settings.services.headline": "Twoje usługi", 347 "settings.services.headline": "Twoje usługi",
350 "settings.services.noServicesAdded": "Rozpocznij od dodania usługi.", 348 "settings.services.noServicesAdded": "Rozpocznij od dodania usługi.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Nie udało się załadować twoich usług", 350 "settings.services.servicesRequestFailed": "Nie udało się załadować twoich usług",
353 "settings.services.tooltip.isDisabled": "Usługa jest nieaktywna", 351 "settings.services.tooltip.isDisabled": "Usługa jest nieaktywna",
354 "settings.services.tooltip.isMuted": "Wszystkie dźwięki są wyciszone", 352 "settings.services.tooltip.isMuted": "Wszystkie dźwięki są wyciszone",
355 "settings.services.tooltip.notificationsDisabled": "Powiadomienia sÄ… nieaktywne", 353 "settings.services.tooltip.notificationsDisabled": "Powiadomienia sÄ… nieaktywne",
356 "settings.services.updatedInfo": "Twoje zmiany zostały zapisane", 354 "settings.services.updatedInfo": "Twoje zmiany zostały zapisane",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "O Ferdi", 356 "settings.supportFerdi.headline": "O Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "i", 358 "settings.supportFerdi.textDonationAnd": "i",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Doceniamy każde wsparcie. Listę rzeczy, z którymi potrzebujemy pomocy znajdziesz", 364 "settings.supportFerdi.textSupportWelcome": "Doceniamy każde wsparcie. Listę rzeczy, z którymi potrzebujemy pomocy znajdziesz",
369 "settings.supportFerdi.textSupportWelcomeHere": "tutaj", 365 "settings.supportFerdi.textSupportWelcomeHere": "tutaj",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Lubisz Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Zespół", 369 "settings.team.headline": "Zespół",
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json
index ef3bb0561..09eb92e1e 100644
--- a/src/i18n/locales/pt-BR.json
+++ b/src/i18n/locales/pt-BR.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Enviar convites", 61 "invite.submit.label": "Enviar convites",
62 "invite.successInfo": "Convites enviados com sucesso", 62 "invite.successInfo": "Convites enviados com sucesso",
63 "locked.headline": "Bloqueado", 63 "locked.headline": "Bloqueado",
64 "locked.info": "Ferdi está bloqueado no momento. Por favor, desbloqueie Ferdi com sua senha para ver suas mensagens.",
65 "locked.invalidCredentials": "Senha inválida", 64 "locked.invalidCredentials": "Senha inválida",
66 "locked.password.label": "Senha", 65 "locked.password.label": "Senha",
67 "locked.submit.label": "Desbloquear", 66 "locked.submit.label": "Desbloquear",
@@ -168,7 +167,6 @@
168 "services.login": "Por favor, inicie sua sessão para usar Ferdi.", 167 "services.login": "Por favor, inicie sua sessão para usar Ferdi.",
169 "services.serverInfo": "Opcionalmente, você pode alterar seu servidor Ferdi clicando na engrenagem no canto inferior esquerdo. Se você está mudando (de um dos servidores hospedados) para usar Ferdi sem uma conta, por favor, saiba que você pode exportar seus dados desse servidor e posteriormente, importá-lo usando o menu Ajuda para restaurar todas as suas áreas de trabalho e serviços configurados!", 168 "services.serverInfo": "Opcionalmente, você pode alterar seu servidor Ferdi clicando na engrenagem no canto inferior esquerdo. Se você está mudando (de um dos servidores hospedados) para usar Ferdi sem uma conta, por favor, saiba que você pode exportar seus dados desse servidor e posteriormente, importá-lo usando o menu Ajuda para restaurar todas as suas áreas de trabalho e serviços configurados!",
170 "services.serverless": "Use Ferdi sem uma conta", 169 "services.serverless": "Use Ferdi sem uma conta",
171 "services.welcome": "Bem-vindo ao Ferdi",
172 "settings.account.account.editButton": "Editar conta", 170 "settings.account.account.editButton": "Editar conta",
173 "settings.account.accountUnavailable": "Conta indisponível", 171 "settings.account.accountUnavailable": "Conta indisponível",
174 "settings.account.accountUnavailableInfo": "Você está utilizando Ferdis sem uma conta. Se você deseja usar o Ferdi com uma conta e manter seus serviços atualizados, Por favor selecione um servidor em Configurações seção Servidor.", 172 "settings.account.accountUnavailableInfo": "Você está utilizando Ferdis sem uma conta. Se você deseja usar o Ferdi com uma conta e manter seus serviços atualizados, Por favor selecione um servidor em Configurações seção Servidor.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Mostrar área arrastável na janela", 240 "settings.app.form.showDragArea": "Mostrar área arrastável na janela",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Apresentar emblema com o número de mensagens não lidas quando as notificações estão desativadas", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Apresentar emblema com o número de mensagens não lidas quando as notificações estão desativadas",
244 "settings.app.form.showServiceName": "Exibir o nome do serviço abaixo do ícone", 242 "settings.app.form.showServiceName": "Exibir o nome do serviço abaixo do ícone",
243 "settings.app.form.splitColumns": "Número de colunas",
245 "settings.app.form.splitMode": "Ativar modo de visualização dividida", 244 "settings.app.form.splitMode": "Ativar modo de visualização dividida",
246 "settings.app.form.startMinimized": "Iniciar minimizado", 245 "settings.app.form.startMinimized": "Iniciar minimizado",
247 "settings.app.form.universalDarkMode": "Habilitar modo noturno universal", 246 "settings.app.form.universalDarkMode": "Habilitar modo noturno universal",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Atualizações", 255 "settings.app.headlineUpdates": "Atualizações",
257 "settings.app.hibernateInfo": "Por padrão, Ferdi manterá todos seus serviços abertos e carregados, assim eles estarão disponíveis quando você for usá-los. O Serviço de Hibernação irá finalizar seus serviços após um período específico. Isso é útil para evitar consumo excessivo de memória RAM evitando também que seu computador fique lento.", 256 "settings.app.hibernateInfo": "Por padrão, Ferdi manterá todos seus serviços abertos e carregados, assim eles estarão disponíveis quando você for usá-los. O Serviço de Hibernação irá finalizar seus serviços após um período específico. Isso é útil para evitar consumo excessivo de memória RAM evitando também que seu computador fique lento.",
258 "settings.app.inactivityLockInfo": "Minutos de inatividade, após este tempo Ferdi irá automaticamente bloquear. Utilize 0 para desabilitar", 257 "settings.app.inactivityLockInfo": "Minutos de inatividade, após este tempo Ferdi irá automaticamente bloquear. Utilize 0 para desabilitar",
259 "settings.app.languageDisclaimer": "As traduções oficiais são em inglês e alemão. As demais traduções são baseadas na ajuda da comunidade.",
260 "settings.app.lockInfo": "O bloqueio por senha permite a você proteger suas mensagens.\nUsando o bloqueio por senha, será necessário informar sua senha toda vez que o Ferdi for iniciado ou você solicite o bloqueio {lockShortcut}.", 258 "settings.app.lockInfo": "O bloqueio por senha permite a você proteger suas mensagens.\nUsando o bloqueio por senha, será necessário informar sua senha toda vez que o Ferdi for iniciado ou você solicite o bloqueio {lockShortcut}.",
261 "settings.app.lockedPassword": "Senha", 259 "settings.app.lockedPassword": "Senha",
262 "settings.app.lockedPasswordInfo": "Por favor certifique-se de definir uma senha que você se lembrará.\nSe você perder esta senha, você terá que reinstalar o Ferdi.", 260 "settings.app.lockedPasswordInfo": "Por favor certifique-se de definir uma senha que você se lembrará.\nSe você perder esta senha, você terá que reinstalar o Ferdi.",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Descobrir serviços", 346 "settings.services.discoverServices": "Descobrir serviços",
349 "settings.services.headline": "Seus serviços", 347 "settings.services.headline": "Seus serviços",
350 "settings.services.noServicesAdded": "Comece adicionando um serviço.", 348 "settings.services.noServicesAdded": "Comece adicionando um serviço.",
351 "settings.services.nothingFound": "Desculpe, mas nenhum serviço corresponde ao seu termo de pesquisa - mas você provavelmente pode adicioná-lo usando a opção \"Site personalizado\". Por favor, note que o site pode mostrar mais serviços que foram adicionados ao Ferdi desde a versão em que você está atualmente. Para obter esses novos serviços, por favor, considere atualizar para uma versão mais recente do Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Não foi possível ler os seus serviços", 350 "settings.services.servicesRequestFailed": "Não foi possível ler os seus serviços",
353 "settings.services.tooltip.isDisabled": "O serviço está desativado", 351 "settings.services.tooltip.isDisabled": "O serviço está desativado",
354 "settings.services.tooltip.isMuted": "Todos os sons estão silenciados", 352 "settings.services.tooltip.isMuted": "Todos os sons estão silenciados",
355 "settings.services.tooltip.notificationsDisabled": "As notificações estão desativadas", 353 "settings.services.tooltip.notificationsDisabled": "As notificações estão desativadas",
356 "settings.services.updatedInfo": "As suas alterações foram efetuadas com sucesso", 354 "settings.services.updatedInfo": "As suas alterações foram efetuadas com sucesso",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi é um aplicativo de código aberto e uma aplicação de líder de comunidade.</p><p>Obrigado às pessoas que tornam isso possível:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi é um aplicativo de código aberto e uma aplicação de líder de comunidade.</p><p>Obrigado às pessoas que tornam isso possível:</p>",
358 "settings.supportFerdi.bannerText": "Deseja nos ajudar a melhorar o Ferdi?",
359 "settings.supportFerdi.headline": "Sobre o Ferdi", 356 "settings.supportFerdi.headline": "Sobre o Ferdi",
360 "settings.supportFerdi.openSurvey": "Abrir pesquisa",
361 "settings.supportFerdi.textDonation": "Se você quiser apoiar o desenvolvimento de Ferdi com uma doação, você pode fazê-lo em ambos,", 357 "settings.supportFerdi.textDonation": "Se você quiser apoiar o desenvolvimento de Ferdi com uma doação, você pode fazê-lo em ambos,",
362 "settings.supportFerdi.textDonationAnd": "e", 358 "settings.supportFerdi.textDonationAnd": "e",
363 "settings.supportFerdi.textExpenses": "Enquanto os voluntários fazem a maior parte do trabalho, ainda precisamos pagar por servidores e certificados. Como uma comunidade, somos totalmente transparentes com os fundos que coletamos e gastamos - veja", 359 "settings.supportFerdi.textExpenses": "Enquanto os voluntários fazem a maior parte do trabalho, ainda precisamos pagar por servidores e certificados. Como uma comunidade, somos totalmente transparentes com os fundos que coletamos e gastamos - veja",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "O suporte é sempre bem-vindo. Você pode encontrar uma lista da ajuda de que precisamos", 364 "settings.supportFerdi.textSupportWelcome": "O suporte é sempre bem-vindo. Você pode encontrar uma lista da ajuda de que precisamos",
369 "settings.supportFerdi.textSupportWelcomeHere": "aqui", 365 "settings.supportFerdi.textSupportWelcomeHere": "aqui",
370 "settings.supportFerdi.textVolunteers": "O desenvolvimento de Ferdi é feito por voluntários. Pessoas que usam Ferdi como você. Eles mantêm, consertam e melhoram Ferdi em seu tempo livre.", 366 "settings.supportFerdi.textVolunteers": "O desenvolvimento de Ferdi é feito por voluntários. Pessoas que usam Ferdi como você. Eles mantêm, consertam e melhoram Ferdi em seu tempo livre.",
371 "settings.supportFerdi.title": "Você gosta do Ferdi?",
372 "settings.team.contentHeadline": "Gerenciamento de Equipe Franz", 367 "settings.team.contentHeadline": "Gerenciamento de Equipe Franz",
373 "settings.team.copy": "O Gerenciamento de Equipes de Franz permite gerenciar assinaturas do Franz para múltiplos usuários. Por favor, entenda que ter uma assinatura Franz Premium não lhe dará nenhuma vantagem em usar o Ferdi. A única razão em manter o acesso ao Gerenciamento de Equipes é permitir o gerenciamento de suas equipes legadas e não perder nenhuma funcionalidade no gerenciamento da sua conta.", 368 "settings.team.copy": "O Gerenciamento de Equipes de Franz permite gerenciar assinaturas do Franz para múltiplos usuários. Por favor, entenda que ter uma assinatura Franz Premium não lhe dará nenhuma vantagem em usar o Ferdi. A única razão em manter o acesso ao Gerenciamento de Equipes é permitir o gerenciamento de suas equipes legadas e não perder nenhuma funcionalidade no gerenciamento da sua conta.",
374 "settings.team.headline": "Equipa", 369 "settings.team.headline": "Equipa",
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json
index cd113996d..519a97363 100644
--- a/src/i18n/locales/pt.json
+++ b/src/i18n/locales/pt.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Enviar convites", 61 "invite.submit.label": "Enviar convites",
62 "invite.successInfo": "Convites enviados com sucesso", 62 "invite.successInfo": "Convites enviados com sucesso",
63 "locked.headline": "Bloqueado", 63 "locked.headline": "Bloqueado",
64 "locked.info": "Ferdi está bloqueado de momento. Por favor, desbloqueie Ferdi com sua palavra-passe para ver as suas mensagens.",
65 "locked.invalidCredentials": "Palavra-passe inválida", 64 "locked.invalidCredentials": "Palavra-passe inválida",
66 "locked.password.label": "Palavra-passe", 65 "locked.password.label": "Palavra-passe",
67 "locked.submit.label": "Desbloquear", 66 "locked.submit.label": "Desbloquear",
@@ -168,7 +167,6 @@
168 "services.login": "Por favor, inicie sua sessão para usar Ferdi.", 167 "services.login": "Por favor, inicie sua sessão para usar Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi sem conta", 169 "services.serverless": "Use Ferdi sem conta",
171 "services.welcome": "Bem-vindo ao Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Conta indisponível", 171 "settings.account.accountUnavailable": "Conta indisponível",
174 "settings.account.accountUnavailableInfo": "Está a usar o Ferdi sem uma conta. Se deseja usar o Ferdi com uma conta e manter os seus serviços sincronizados entre instalações, por favor, selecione um servidor no separador Configurações e faça a autenticação.", 172 "settings.account.accountUnavailableInfo": "Está a usar o Ferdi sem uma conta. Se deseja usar o Ferdi com uma conta e manter os seus serviços sincronizados entre instalações, por favor, selecione um servidor no separador Configurações e faça a autenticação.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Mostrar área arrastável na janela", 240 "settings.app.form.showDragArea": "Mostrar área arrastável na janela",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Mostrar ícone de mensagem não lida quando as notificações estiverem desativadas", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Mostrar ícone de mensagem não lida quando as notificações estiverem desativadas",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Iniciar minimizado", 245 "settings.app.form.startMinimized": "Iniciar minimizado",
247 "settings.app.form.universalDarkMode": "Ativar o Modo Noturno Universal", 246 "settings.app.form.universalDarkMode": "Ativar o Modo Noturno Universal",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Atualizações", 255 "settings.app.headlineUpdates": "Atualizações",
257 "settings.app.hibernateInfo": "Por princípio, Ferdi manterá todos os serviços abertos e carregados em segundo plano para que estejam prontos sempre que os quiser utilizar. A hibernação do serviço suspende os serviços após um determinado tempo. Isto é útil para conservar memória RAM ou impedir que os serviços afetem o desempenho do computador.", 256 "settings.app.hibernateInfo": "Por princípio, Ferdi manterá todos os serviços abertos e carregados em segundo plano para que estejam prontos sempre que os quiser utilizar. A hibernação do serviço suspende os serviços após um determinado tempo. Isto é útil para conservar memória RAM ou impedir que os serviços afetem o desempenho do computador.",
258 "settings.app.inactivityLockInfo": "Minutos de inatividade, após os quais Ferdi bloqueará automaticamente. Use 0 para desativar", 257 "settings.app.inactivityLockInfo": "Minutos de inatividade, após os quais Ferdi bloqueará automaticamente. Use 0 para desativar",
259 "settings.app.languageDisclaimer": "As traduções oficiais são Inglês e Alemão. Todas as outras traduções são feitas pela comunidade.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Palavra-passe", 259 "settings.app.lockedPassword": "Palavra-passe",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Receitas da comunidade de terceiros", 284 "settings.recipes.customService.headline.communityRecipes": "Receitas da comunidade de terceiros",
287 "settings.recipes.customService.headline.customRecipes": "Receitas personalizadas de terceiros", 285 "settings.recipes.customService.headline.customRecipes": "Receitas personalizadas de terceiros",
288 "settings.recipes.customService.headline.devRecipes": "As suas Receitas de Serviço de Desenvolvimento", 286 "settings.recipes.customService.headline.devRecipes": "As suas Receitas de Serviço de Desenvolvimento",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Documentação para programadores", 288 "settings.recipes.customService.openDevDocs": "Documentação para programadores",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Serviços disponíveis", 290 "settings.recipes.headline": "Serviços disponíveis",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Descobrir serviços", 346 "settings.services.discoverServices": "Descobrir serviços",
349 "settings.services.headline": "Os seus serviços", 347 "settings.services.headline": "Os seus serviços",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Não foi possível carregar os seus serviços", 350 "settings.services.servicesRequestFailed": "Não foi possível carregar os seus serviços",
353 "settings.services.tooltip.isDisabled": "O serviço está desativado", 351 "settings.services.tooltip.isDisabled": "O serviço está desativado",
354 "settings.services.tooltip.isMuted": "Sem som", 352 "settings.services.tooltip.isMuted": "Sem som",
355 "settings.services.tooltip.notificationsDisabled": "Notificações desativadas", 353 "settings.services.tooltip.notificationsDisabled": "Notificações desativadas",
356 "settings.services.updatedInfo": "As suas alterações foram gravadas", 354 "settings.services.updatedInfo": "As suas alterações foram gravadas",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "Acerca de Ferdi", 356 "settings.supportFerdi.headline": "Acerca de Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Gestão de Equipas Franz", 367 "settings.team.contentHeadline": "Gestão de Equipas Franz",
373 "settings.team.copy": "A Gestão de Equipas Franz permite gerir as assinaturas Franz para múltiplos utilizadores. Por favor, lembre-se que ter uma assinatura Franz Premium não lhe dará nenhuma vantagem ao usar Ferdi: a única razão pela qual ainda tem acesso à Gestão de Equipas é para que possa gerir as suas equipas antigas e para que não perca nenhuma funcionalidade na gestão da sua conta.", 368 "settings.team.copy": "A Gestão de Equipas Franz permite gerir as assinaturas Franz para múltiplos utilizadores. Por favor, lembre-se que ter uma assinatura Franz Premium não lhe dará nenhuma vantagem ao usar Ferdi: a única razão pela qual ainda tem acesso à Gestão de Equipas é para que possa gerir as suas equipas antigas e para que não perca nenhuma funcionalidade na gestão da sua conta.",
374 "settings.team.headline": "Equipa", 369 "settings.team.headline": "Equipa",
diff --git a/src/i18n/locales/ro.json b/src/i18n/locales/ro.json
index d858313ac..5d05bc52d 100644
--- a/src/i18n/locales/ro.json
+++ b/src/i18n/locales/ro.json
@@ -1,8 +1,8 @@
1{ 1{
2 "app.errorHandler.action": "Reîncărcare", 2 "app.errorHandler.action": "Reîncărcare",
3 "app.errorHandler.headline": "Something went wrong.", 3 "app.errorHandler.headline": "Ceva nu a funcționat corect.",
4 "changeserver.customServerLabel": "Custom server", 4 "changeserver.customServerLabel": "Server personalizat",
5 "changeserver.headline": "Change server", 5 "changeserver.headline": "Schimbă serverul",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.urlError": "Introduceți un URL valid", 7 "changeserver.urlError": "Introduceți un URL valid",
8 "changeserver.warning": "Setările suplimentare oferite de Ferdi nu vor fi salvate", 8 "changeserver.warning": "Setările suplimentare oferite de Ferdi nu vor fi salvate",
@@ -31,16 +31,16 @@
31 "global.ok": "Ok", 31 "global.ok": "Ok",
32 "global.quit": "Quit", 32 "global.quit": "Quit",
33 "global.quitConfirmation": "Do you really want to quit Ferdi?", 33 "global.quitConfirmation": "Do you really want to quit Ferdi?",
34 "global.save": "Save", 34 "global.save": "Salvare",
35 "global.settings": "Settings", 35 "global.settings": "Configurări",
36 "global.spellchecker.useDefault": "Folosește sistemul implicit ({default})", 36 "global.spellchecker.useDefault": "Folosește sistemul implicit ({default})",
37 "global.spellchecking.autodetect": "Detectează limba automat", 37 "global.spellchecking.autodetect": "Detectează limba automat",
38 "global.spellchecking.autodetect.short": "Automat", 38 "global.spellchecking.autodetect.short": "Automat",
39 "global.spellchecking.language": "Limba de verificare a ortografiei", 39 "global.spellchecking.language": "Limba de verificare a ortografiei",
40 "global.submit": "Submit", 40 "global.submit": "Trimite",
41 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 41 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
42 "global.userAgentPref": "User Agent", 42 "global.userAgentPref": "Agent utilizator",
43 "global.yes": "Yes", 43 "global.yes": "Da",
44 "import.headline": "Importă serviciile tale Ferdi 4", 44 "import.headline": "Importă serviciile tale Ferdi 4",
45 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5", 45 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
46 "import.skip.label": "I want to add services manually", 46 "import.skip.label": "I want to add services manually",
@@ -49,26 +49,25 @@
49 "infobar.buttonChangelog": "What is new?", 49 "infobar.buttonChangelog": "What is new?",
50 "infobar.buttonInstallUpdate": "Restart & install update", 50 "infobar.buttonInstallUpdate": "Restart & install update",
51 "infobar.buttonReloadServices": "Reload services", 51 "infobar.buttonReloadServices": "Reload services",
52 "infobar.hide": "Hide", 52 "infobar.hide": "Ascunde",
53 "infobar.requiredRequestsFailed": "Could not load services and user information", 53 "infobar.requiredRequestsFailed": "Could not load services and user information",
54 "infobar.servicesUpdated": "Your services have been updated.", 54 "infobar.servicesUpdated": "Serviciile dvs. au fost actualizate.",
55 "infobar.updateAvailable": "A new update for Ferdi is available.", 55 "infobar.updateAvailable": "A new update for Ferdi is available.",
56 "infobox.dismiss": "Dismiss", 56 "infobox.dismiss": "Dismiss",
57 "invite.email.label": "Email address", 57 "invite.email.label": "Email address",
58 "invite.headline.friends": "Invite 3 of your friends or colleagues", 58 "invite.headline.friends": "Invite 3 of your friends or colleagues",
59 "invite.name.label": "Name", 59 "invite.name.label": "Nume",
60 "invite.skip.label": "I want to do this later", 60 "invite.skip.label": "I want to do this later",
61 "invite.submit.label": "Send invites", 61 "invite.submit.label": "Trimite invitații",
62 "invite.successInfo": "Invitations sent successfully", 62 "invite.successInfo": "Invitations sent successfully",
63 "locked.headline": "Locked", 63 "locked.headline": "Blocat",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
68 "locked.touchId": "Unlock with Touch ID", 67 "locked.touchId": "Unlock with Touch ID",
69 "locked.touchIdPrompt": "unlock via Touch ID", 68 "locked.touchIdPrompt": "unlock via Touch ID",
70 "locked.unlockWithPassword": "Unlock with Password", 69 "locked.unlockWithPassword": "Unlock with Password",
71 "login.changeServer": "Change server", 70 "login.changeServer": "Schimbă serverul",
72 "login.customServerQuestion": "Using a custom Ferdi server?", 71 "login.customServerQuestion": "Using a custom Ferdi server?",
73 "login.customServerSuggestion": "Try importing your Franz account", 72 "login.customServerSuggestion": "Try importing your Franz account",
74 "login.email.label": "Email address", 73 "login.email.label": "Email address",
@@ -85,7 +84,7 @@
85 "menu.app.about": "About Ferdi", 84 "menu.app.about": "About Ferdi",
86 "menu.app.autohideMenuBar": "Auto-hide menu bar", 85 "menu.app.autohideMenuBar": "Auto-hide menu bar",
87 "menu.app.checkForUpdates": "Check for updates", 86 "menu.app.checkForUpdates": "Check for updates",
88 "menu.app.hide": "Hide", 87 "menu.app.hide": "Ascunde",
89 "menu.app.hideOthers": "Hide Others", 88 "menu.app.hideOthers": "Hide Others",
90 "menu.app.unhide": "Unhide", 89 "menu.app.unhide": "Unhide",
91 "menu.edit": "Edit", 90 "menu.edit": "Edit",
@@ -103,17 +102,17 @@
103 "menu.edit.startSpeaking": "Start Speaking", 102 "menu.edit.startSpeaking": "Start Speaking",
104 "menu.edit.stopSpeaking": "Stop Speaking", 103 "menu.edit.stopSpeaking": "Stop Speaking",
105 "menu.edit.undo": "Undo", 104 "menu.edit.undo": "Undo",
106 "menu.file": "File", 105 "menu.file": "Fișier",
107 "menu.help": "Help", 106 "menu.help": "Ajutor",
108 "menu.help.changelog": "Changelog", 107 "menu.help.changelog": "Istoric modificări",
109 "menu.help.debugInfo": "Copy Debug Information", 108 "menu.help.debugInfo": "Copy Debug Information",
110 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", 109 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.",
111 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information", 110 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information",
112 "menu.help.importExportData": "Import/Export Configuration Data", 111 "menu.help.importExportData": "Import/Export Configuration Data",
113 "menu.help.learnMore": "Learn More", 112 "menu.help.learnMore": "Aflați mai multe",
114 "menu.help.privacy": "Privacy Statement", 113 "menu.help.privacy": "Privacy Statement",
115 "menu.help.publishDebugInfo": "Publish Debug Information", 114 "menu.help.publishDebugInfo": "Publish Debug Information",
116 "menu.help.support": "Support", 115 "menu.help.support": "Suport",
117 "menu.help.tos": "Terms of Service", 116 "menu.help.tos": "Terms of Service",
118 "menu.services": "Services", 117 "menu.services": "Services",
119 "menu.services.activatePreviousService": "Activate previous service", 118 "menu.services.activatePreviousService": "Activate previous service",
@@ -122,9 +121,9 @@
122 "menu.services.setNextServiceActive": "Activate next service", 121 "menu.services.setNextServiceActive": "Activate next service",
123 "menu.todos": "Todos", 122 "menu.todos": "Todos",
124 "menu.todos.enableTodos": "Enable Todos", 123 "menu.todos.enableTodos": "Enable Todos",
125 "menu.view": "View", 124 "menu.view": "Vizualizare",
126 "menu.view.back": "Back", 125 "menu.view.back": "ÃŽnapoi",
127 "menu.view.forward": "Forward", 126 "menu.view.forward": "ÃŽnainte",
128 "menu.view.lockFerdi": "Lock Ferdi", 127 "menu.view.lockFerdi": "Lock Ferdi",
129 "menu.view.openQuickSwitch": "Open Quick Switch", 128 "menu.view.openQuickSwitch": "Open Quick Switch",
130 "menu.view.reloadFerdi": "Reload Ferdi", 129 "menu.view.reloadFerdi": "Reload Ferdi",
@@ -138,9 +137,9 @@
138 "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools", 137 "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools",
139 "menu.view.zoomIn": "Zoom In", 138 "menu.view.zoomIn": "Zoom In",
140 "menu.view.zoomOut": "Zoom Out", 139 "menu.view.zoomOut": "Zoom Out",
141 "menu.window": "Window", 140 "menu.window": "Fereastră",
142 "menu.window.close": "Close", 141 "menu.window.close": "Închideți",
143 "menu.window.minimize": "Minimize", 142 "menu.window.minimize": "Minimizare",
144 "menu.workspaces": "Workspaces", 143 "menu.workspaces": "Workspaces",
145 "menu.workspaces.addNewWorkspace": "Add New Workspace...", 144 "menu.workspaces.addNewWorkspace": "Add New Workspace...",
146 "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer", 145 "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Welcome to Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Updates", 255 "settings.app.headlineUpdates": "Updates",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Available services", 290 "settings.recipes.headline": "Available services",
@@ -299,7 +297,7 @@
299 "settings.service.error.message": "Could not load service recipe.", 297 "settings.service.error.message": "Could not load service recipe.",
300 "settings.service.form.addServiceHeadline": "Add {name}", 298 "settings.service.form.addServiceHeadline": "Add {name}",
301 "settings.service.form.availableServices": "Available services", 299 "settings.service.form.availableServices": "Available services",
302 "settings.service.form.customUrl": "Custom server", 300 "settings.service.form.customUrl": "Server personalizat",
303 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.", 301 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.",
304 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness", 302 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness",
305 "settings.service.form.darkReaderContrast": "Dark Reader Contrast", 303 "settings.service.form.darkReaderContrast": "Dark Reader Contrast",
@@ -310,7 +308,7 @@
310 "settings.service.form.enableBadge": "Show unread message badges", 308 "settings.service.form.enableBadge": "Show unread message badges",
311 "settings.service.form.enableDarkMode": "Enable Dark Mode", 309 "settings.service.form.enableDarkMode": "Enable Dark Mode",
312 "settings.service.form.enableHibernation": "Enable hibernation", 310 "settings.service.form.enableHibernation": "Enable hibernation",
313 "settings.service.form.enableNotification": "Enable notifications", 311 "settings.service.form.enableNotification": "Activare notificări",
314 "settings.service.form.enableService": "Enable service", 312 "settings.service.form.enableService": "Enable service",
315 "settings.service.form.enableWakeUp": "Enable wake up", 313 "settings.service.form.enableWakeUp": "Enable wake up",
316 "settings.service.form.headlineBadges": "Unread message badges", 314 "settings.service.form.headlineBadges": "Unread message badges",
@@ -324,7 +322,7 @@
324 "settings.service.form.indirectMessages": "Show message badge for all new messages", 322 "settings.service.form.indirectMessages": "Show message badge for all new messages",
325 "settings.service.form.isHibernatedEnabledInfo": "When enabled, a service will be shut down after a period of time to save system resources.", 323 "settings.service.form.isHibernatedEnabledInfo": "When enabled, a service will be shut down after a period of time to save system resources.",
326 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted", 324 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted",
327 "settings.service.form.name": "Name", 325 "settings.service.form.name": "Nume",
328 "settings.service.form.onlyShowFavoritesInUnreadCount": "Only show Favorites in unread count", 326 "settings.service.form.onlyShowFavoritesInUnreadCount": "Only show Favorites in unread count",
329 "settings.service.form.openDarkmodeCss": "Open darkmode.css", 327 "settings.service.form.openDarkmodeCss": "Open darkmode.css",
330 "settings.service.form.openUserCss": "Open user.css", 328 "settings.service.form.openUserCss": "Open user.css",
@@ -332,32 +330,30 @@
332 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings", 330 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings",
333 "settings.service.form.proxy.host": "Proxy Host/IP", 331 "settings.service.form.proxy.host": "Proxy Host/IP",
334 "settings.service.form.proxy.info": "Proxy settings will not be synchronized with the Ferdi servers.", 332 "settings.service.form.proxy.info": "Proxy settings will not be synchronized with the Ferdi servers.",
335 "settings.service.form.proxy.isEnabled": "Use Proxy", 333 "settings.service.form.proxy.isEnabled": "Utilizare proxy",
336 "settings.service.form.proxy.password": "Password (optional)", 334 "settings.service.form.proxy.password": "Parolă (opțional)",
337 "settings.service.form.proxy.port": "Port", 335 "settings.service.form.proxy.port": "Port",
338 "settings.service.form.proxy.restartInfo": "Please restart Ferdi after changing proxy Settings.", 336 "settings.service.form.proxy.restartInfo": "Please restart Ferdi after changing proxy Settings.",
339 "settings.service.form.proxy.user": "User (optional)", 337 "settings.service.form.proxy.user": "User (optional)",
340 "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.", 338 "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.",
341 "settings.service.form.saveButton": "Save service", 339 "settings.service.form.saveButton": "Save service",
342 "settings.service.form.tabHosted": "Hosted", 340 "settings.service.form.tabHosted": "Hosted",
343 "settings.service.form.tabOnPremise": "Self hosted â­ï¸", 341 "settings.service.form.tabOnPremise": "Auto-găzduit â­",
344 "settings.service.form.team": "Team", 342 "settings.service.form.team": "Echipă",
345 "settings.service.form.useHostedService": "Use the hosted {name} service.", 343 "settings.service.form.useHostedService": "Use the hosted {name} service.",
346 "settings.service.form.yourServices": "Your services", 344 "settings.service.form.yourServices": "Your services",
347 "settings.services.deletedInfo": "Service has been deleted", 345 "settings.services.deletedInfo": "Service has been deleted",
348 "settings.services.discoverServices": "Discover services", 346 "settings.services.discoverServices": "Discover services",
349 "settings.services.headline": "Your services", 347 "settings.services.headline": "Your services",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Service is disabled", 351 "settings.services.tooltip.isDisabled": "Service is disabled",
354 "settings.services.tooltip.isMuted": "All sounds are muted", 352 "settings.services.tooltip.isMuted": "All sounds are muted",
355 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 353 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
356 "settings.services.updatedInfo": "Your changes have been saved", 354 "settings.services.updatedInfo": "Your changes have been saved",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "About Ferdi", 356 "settings.supportFerdi.headline": "About Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,30 +364,29 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Echipă",
375 "settings.team.intro": "You are currently using Franz Servers, which is why you have access to Team Management.", 370 "settings.team.intro": "You are currently using Franz Servers, which is why you have access to Team Management.",
376 "settings.team.manageAction": "Manage your Team on meetfranz.com", 371 "settings.team.manageAction": "Manage your Team on meetfranz.com",
377 "settings.team.teamsUnavailable": "Teams are unavailable", 372 "settings.team.teamsUnavailable": "Teams are unavailable",
378 "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 373 "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.",
379 "settings.user.form.accountType.company": "Company", 374 "settings.user.form.accountType.company": "Companie",
380 "settings.user.form.accountType.individual": "Individual", 375 "settings.user.form.accountType.individual": "Individual",
381 "settings.user.form.accountType.label": "Account type", 376 "settings.user.form.accountType.label": "Tip cont",
382 "settings.user.form.accountType.non-profit": "Non-Profit", 377 "settings.user.form.accountType.non-profit": "Non-profit",
383 "settings.user.form.currentPassword": "Current password", 378 "settings.user.form.currentPassword": "Parola curentă",
384 "settings.user.form.email": "Email", 379 "settings.user.form.email": "Email",
385 "settings.user.form.firstname": "First Name", 380 "settings.user.form.firstname": "First Name",
386 "settings.user.form.lastname": "Last Name", 381 "settings.user.form.lastname": "Last Name",
387 "settings.user.form.newPassword": "New password", 382 "settings.user.form.newPassword": "New password",
388 "settings.workspace.add.form.name": "Name", 383 "settings.workspace.add.form.name": "Nume",
389 "settings.workspace.add.form.submitButton": "Create workspace", 384 "settings.workspace.add.form.submitButton": "Create workspace",
390 "settings.workspace.form.buttonDelete": "Delete workspace", 385 "settings.workspace.form.buttonDelete": "Delete workspace",
391 "settings.workspace.form.buttonSave": "Save workspace", 386 "settings.workspace.form.buttonSave": "Save workspace",
392 "settings.workspace.form.keepLoaded": "Keep this workspace loaded*", 387 "settings.workspace.form.keepLoaded": "Keep this workspace loaded*",
393 "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.", 388 "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.",
394 "settings.workspace.form.name": "Name", 389 "settings.workspace.form.name": "Nume",
395 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace", 390 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace",
396 "settings.workspace.form.yourWorkspaces": "Your workspaces", 391 "settings.workspace.form.yourWorkspaces": "Your workspaces",
397 "settings.workspaces.deletedInfo": "Workspace has been deleted", 392 "settings.workspaces.deletedInfo": "Workspace has been deleted",
@@ -402,10 +397,10 @@
402 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces", 397 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces",
403 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", 398 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
404 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", 399 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces",
405 "setupAssistant.headline": "Let's get started", 400 "setupAssistant.headline": "Să începem",
406 "setupAssistant.subheadline": "Choose from our most used services and get back on top of your messaging now.", 401 "setupAssistant.subheadline": "Choose from our most used services and get back on top of your messaging now.",
407 "setupAssistant.submit.label": "Let's go", 402 "setupAssistant.submit.label": "Să începem",
408 "sidebar.addNewService": "Add new service", 403 "sidebar.addNewService": "Adaugă un serviciu nou",
409 "sidebar.closeTodosDrawer": "Close Ferdi Todos", 404 "sidebar.closeTodosDrawer": "Close Ferdi Todos",
410 "sidebar.closeWorkspaceDrawer": "Close workspace drawer", 405 "sidebar.closeWorkspaceDrawer": "Close workspace drawer",
411 "sidebar.lockFerdi": "Lock Ferdi", 406 "sidebar.lockFerdi": "Lock Ferdi",
@@ -426,13 +421,13 @@
426 "signup.submit.label": "Create account", 421 "signup.submit.label": "Create account",
427 "tabs.item.confirmDeleteService": "Do you really want to delete the {serviceName} service?", 422 "tabs.item.confirmDeleteService": "Do you really want to delete the {serviceName} service?",
428 "tabs.item.deleteService": "Delete service", 423 "tabs.item.deleteService": "Delete service",
429 "tabs.item.disableAudio": "Disable audio", 424 "tabs.item.disableAudio": "Dezactivare audio",
430 "tabs.item.disableDarkMode": "Disable Dark mode", 425 "tabs.item.disableDarkMode": "Dezactivare mod întunecat",
431 "tabs.item.disableNotifications": "Disable notifications", 426 "tabs.item.disableNotifications": "Dezactivare notificări",
432 "tabs.item.disableService": "Disable service", 427 "tabs.item.disableService": "Dezactivare serviciu",
433 "tabs.item.enableAudio": "Enable audio", 428 "tabs.item.enableAudio": "Enable audio",
434 "tabs.item.enableDarkMode": "Enable Dark mode", 429 "tabs.item.enableDarkMode": "Enable Dark mode",
435 "tabs.item.enableNotification": "Enable notifications", 430 "tabs.item.enableNotification": "Activare notificări",
436 "tabs.item.enableService": "Enable service", 431 "tabs.item.enableService": "Enable service",
437 "tabs.item.hibernateService": "Hibernate service", 432 "tabs.item.hibernateService": "Hibernate service",
438 "tabs.item.reload": "Reîncărcare", 433 "tabs.item.reload": "Reîncărcare",
@@ -442,8 +437,8 @@
442 "validation.oneRequired": "At least one is required", 437 "validation.oneRequired": "At least one is required",
443 "validation.required": "{field} is required", 438 "validation.required": "{field} is required",
444 "validation.url": "{field} is not a valid URL", 439 "validation.url": "{field} is not a valid URL",
445 "webControls.back": "Back", 440 "webControls.back": "ÃŽnapoi",
446 "webControls.forward": "Forward", 441 "webControls.forward": "ÃŽnainte",
447 "webControls.goHome": "Home", 442 "webControls.goHome": "Home",
448 "webControls.openInBrowser": "Open in Browser", 443 "webControls.openInBrowser": "Open in Browser",
449 "webControls.reload": "Reîncărcare", 444 "webControls.reload": "Reîncărcare",
@@ -452,7 +447,7 @@
452 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", 447 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace",
453 "workspaceDrawer.allServices": "All services", 448 "workspaceDrawer.allServices": "All services",
454 "workspaceDrawer.headline": "Workspaces", 449 "workspaceDrawer.headline": "Workspaces",
455 "workspaceDrawer.item.contextMenuEdit": "edit", 450 "workspaceDrawer.item.contextMenuEdit": "editează",
456 "workspaceDrawer.item.noServicesAddedYet": "No services added yet", 451 "workspaceDrawer.item.noServicesAddedYet": "No services added yet",
457 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", 452 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>",
458 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", 453 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings",
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json
index 91020fa81..994e68a86 100644
--- a/src/i18n/locales/ru.json
+++ b/src/i18n/locales/ru.json
@@ -14,7 +14,7 @@
14 "feature.nightlyBuilds.info": "Ðочные Ñборки - Ñто ÑкÑпериментальные верÑии Ferdi, которые могут Ñодержать недоработанные или незавершенные функции. Эти ночные Ñборки в оÑновном иÑпользуютÑÑ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ°Ð¼Ð¸ Ð´Ð»Ñ Ñ‚ÐµÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ´Ð°Ð²Ð½Ð¾ разработанных функций и того, как они будут работать в финальной Ñборке. ЕÑли вы не знаете, что делаете, мы рекомендуем не активировать ночные Ñборки.", 14 "feature.nightlyBuilds.info": "Ðочные Ñборки - Ñто ÑкÑпериментальные верÑии Ferdi, которые могут Ñодержать недоработанные или незавершенные функции. Эти ночные Ñборки в оÑновном иÑпользуютÑÑ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸ÐºÐ°Ð¼Ð¸ Ð´Ð»Ñ Ñ‚ÐµÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÐ´Ð°Ð²Ð½Ð¾ разработанных функций и того, как они будут работать в финальной Ñборке. ЕÑли вы не знаете, что делаете, мы рекомендуем не активировать ночные Ñборки.",
15 "feature.nightlyBuilds.title": "Ðочные Ñборки", 15 "feature.nightlyBuilds.title": "Ðочные Ñборки",
16 "feature.publishDebugInfo.error": "При попытке опубликовать отладочную информацию произошла ошибка. ПожалуйÑта, повторите попытку позже или проÑмотрите конÑоль Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации.", 16 "feature.publishDebugInfo.error": "При попытке опубликовать отладочную информацию произошла ошибка. ПожалуйÑта, повторите попытку позже или проÑмотрите конÑоль Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации.",
17 "feature.publishDebugInfo.info": "Publishing your debug information helps us find issues and errors in Ferdi. By publishing your debug information you accept Ferdi Debugger's privacy policy and terms of service", 17 "feature.publishDebugInfo.info": "ÐŸÑƒÐ±Ð»Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð²Ð°ÑˆÐµÐ¹ отладочной информации помогает нам найти проблемы и ошибки в Ferdi. ÐŸÑƒÐ±Ð»Ð¸ÐºÑƒÑ Ð²Ð°ÑˆÑƒ отладочную информацию, вы принимаете политику конфиденциальноÑти Ferdi Debugger'ов и уÑÐ»Ð¾Ð²Ð¸Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÑлуг",
18 "feature.publishDebugInfo.privacy": "Политика конфиденциальноÑти", 18 "feature.publishDebugInfo.privacy": "Политика конфиденциальноÑти",
19 "feature.publishDebugInfo.publish": "ПринÑÑ‚ÑŒ и опубликовать", 19 "feature.publishDebugInfo.publish": "ПринÑÑ‚ÑŒ и опубликовать",
20 "feature.publishDebugInfo.published": "Ваш журнал отладки был опубликован и теперь доÑтупен по адреÑу", 20 "feature.publishDebugInfo.published": "Ваш журнал отладки был опубликован и теперь доÑтупен по адреÑу",
@@ -58,10 +58,9 @@
58 "invite.headline.friends": "ПриглаÑите 3-Ñ… друзей или коллег", 58 "invite.headline.friends": "ПриглаÑите 3-Ñ… друзей или коллег",
59 "invite.name.label": "ИмÑ", 59 "invite.name.label": "ИмÑ",
60 "invite.skip.label": "Я Ñделаю Ñто позже", 60 "invite.skip.label": "Я Ñделаю Ñто позже",
61 "invite.submit.label": "ÐÑ‹Ñлать приглашениÑ", 61 "invite.submit.label": "ОÑправить приглашениÑ",
62 "invite.successInfo": "ÐŸÑ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ ÑƒÑпешно отправлены", 62 "invite.successInfo": "ÐŸÑ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ñ ÑƒÑпешно отправлены",
63 "locked.headline": "Заблокировано", 63 "locked.headline": "Заблокировано",
64 "locked.info": "Ferdi ÑÐµÐ¹Ñ‡Ð°Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½. ПожалуйÑта, разблокируйте Ferdi Ñвоим паролем, чтобы увидеть ваши ÑообщениÑ.",
65 "locked.invalidCredentials": "Ðеверный пароль", 64 "locked.invalidCredentials": "Ðеверный пароль",
66 "locked.password.label": "Пароль", 65 "locked.password.label": "Пароль",
67 "locked.submit.label": "Разблокировать", 66 "locked.submit.label": "Разблокировать",
@@ -166,12 +165,11 @@
166 "service.webviewLoader.loading": "Загрузка {service}", 165 "service.webviewLoader.loading": "Загрузка {service}",
167 "services.getStarted": "Ðачать работу", 166 "services.getStarted": "Ðачать работу",
168 "services.login": "ПожалуйÑта, войдите, чтобы иÑпользовать Ferdi.", 167 "services.login": "ПожалуйÑта, войдите, чтобы иÑпользовать Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "При необходимоÑти вы можете изменить ваш Ñервер Ferdi, нажав на иконку в левом нижнем углу. ЕÑли вы переключаетеÑÑŒ (Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ из Ñерверов хоÑтинга) на иÑпользование Ferdi без учетной запиÑи, примите к Ñведению, что вы можете ÑкÑпортировать ваши данные Ñ Ñтого Ñервера и затем импортировать их Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ меню Ñправки, чтобы воÑÑтановить вÑе ваши рабочие Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð¸ подключенные ÑервиÑÑ‹!",
170 "services.serverless": "ИÑпользовать Ferdi без учетной запиÑи", 169 "services.serverless": "ИÑпользовать Ferdi без учетной запиÑи",
171 "services.welcome": "Добро пожаловать во Ferdi",
172 "settings.account.account.editButton": "Редактировать аккаунт", 170 "settings.account.account.editButton": "Редактировать аккаунт",
173 "settings.account.accountUnavailable": "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ недоÑтупна", 171 "settings.account.accountUnavailable": "Ð£Ñ‡ÐµÑ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ недоÑтупна",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "Ð’Ñ‹ иÑпользуете Ferdi без учетной запиÑи. ЕÑли вы желаете иÑпользовать Ferdi Ñ ÑƒÑ‡ÐµÑ‚Ð½Ð¾Ð¹ запиÑью и Ñохранить ваши ÑервиÑÑ‹ Ñинхронизированными между уÑтановками, пожалуйÑта, выберите Ñервер на вкладке ÐаÑтройки и войдите в ÑиÑтему.",
175 "settings.account.buttonSave": "Обновить профиль", 173 "settings.account.buttonSave": "Обновить профиль",
176 "settings.account.deleteAccount": "Удалить аккаунт", 174 "settings.account.deleteAccount": "Удалить аккаунт",
177 "settings.account.deleteEmailSent": "Вам выÑлано пиÑьмо Ñ ÑÑылкой Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð°. ПоÑле Ñтого ваш аккаунт и данные не Ñмогут быть воÑÑтановлены!", 175 "settings.account.deleteEmailSent": "Вам выÑлано пиÑьмо Ñ ÑÑылкой Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð°. ПоÑле Ñтого ваш аккаунт и данные не Ñмогут быть воÑÑтановлены!",
@@ -187,52 +185,52 @@
187 "settings.account.tryReloadUserInfoRequest": "Попробовать Ñнова", 185 "settings.account.tryReloadUserInfoRequest": "Попробовать Ñнова",
188 "settings.account.userInfoRequestFailed": "Ðевозможно загрузить информацию пользователÑ", 186 "settings.account.userInfoRequestFailed": "Ðевозможно загрузить информацию пользователÑ",
189 "settings.account.yourLicense": "Ваша Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ Ð¤ÐµÑ€Ð´Ð¸:", 187 "settings.account.yourLicense": "Ваша Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ Ð¤ÐµÑ€Ð´Ð¸:",
190 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})", 188 "settings.app.accentColorInfo": "Ðапишите Ñвой акцентный цвет в ÑовмеÑтимом Ñ CSS-формате. (По умолчанию: {defaultAccentColor})",
191 "settings.app.buttonClearAllCache": "ОчиÑтить кÑш", 189 "settings.app.buttonClearAllCache": "ОчиÑтить кÑш",
192 "settings.app.buttonInstallUpdate": "ПерезапуÑтить и уÑтановить обновлениÑ", 190 "settings.app.buttonInstallUpdate": "ПерезапуÑтить и уÑтановить обновлениÑ",
193 "settings.app.buttonOpenFerdiProfileFolder": "Открыть папку профилÑ", 191 "settings.app.buttonOpenFerdiProfileFolder": "Открыть папку профилÑ",
194 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder", 192 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Открыть папку ÑервиÑных протоколов",
195 "settings.app.buttonSearchForUpdate": "Проверить обновлениÑ", 193 "settings.app.buttonSearchForUpdate": "Проверить обновлениÑ",
196 "settings.app.cacheInfo": "КÑш занимает {size} на диÑке.", 194 "settings.app.cacheInfo": "КÑш занимает {size} на диÑке.",
197 "settings.app.cacheNotCleared": "Ðе удалоÑÑŒ очиÑтить веÑÑŒ кÑш", 195 "settings.app.cacheNotCleared": "Ðе удалоÑÑŒ очиÑтить веÑÑŒ кÑш",
198 "settings.app.closeSettings": "Закрыть наÑтройки", 196 "settings.app.closeSettings": "Закрыть наÑтройки",
199 "settings.app.currentVersion": "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑиÑ:", 197 "settings.app.currentVersion": "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑиÑ:",
200 "settings.app.form.accentColor": "Accent color", 198 "settings.app.form.accentColor": "Цвет акцента",
201 "settings.app.form.adaptableDarkMode": "Synchronize dark mode with my OS's dark mode setting", 199 "settings.app.form.adaptableDarkMode": "Синхронизировать темный режим Ñ Ð½Ð°Ñтройками темных режимов моей ОС",
202 "settings.app.form.alwaysShowWorkspaces": "Always show workspace drawer", 200 "settings.app.form.alwaysShowWorkspaces": "Ð’Ñегда показывать меню рабочего окружениÑ",
203 "settings.app.form.autoLaunchInBackground": "Открывать в фоне", 201 "settings.app.form.autoLaunchInBackground": "Открывать в фоне",
204 "settings.app.form.autoLaunchOnStart": "ЗапуÑкать Ferdi при Ñтарте", 202 "settings.app.form.autoLaunchOnStart": "ЗапуÑкать Ferdi при Ñтарте",
205 "settings.app.form.automaticUpdates": "Включить обновлениÑ", 203 "settings.app.form.automaticUpdates": "Включить обновлениÑ",
206 "settings.app.form.beta": "Ð’ÐºÐ»ÑŽÑ‡Ð°Ñ Ð±ÐµÑ‚Ð° верÑии", 204 "settings.app.form.beta": "Ð’ÐºÐ»ÑŽÑ‡Ð°Ñ Ð±ÐµÑ‚Ð° верÑии",
207 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 205 "settings.app.form.clipboardNotifications": "Ðе показывать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ ÑобытиÑÑ… в буфере обмена",
208 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 206 "settings.app.form.closeToSystemTray": "При закрытии Ñворачивать Ferdi в ÑиÑтемном трее",
209 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi", 207 "settings.app.form.confirmOnQuit": "ЗапроÑить подтверждение при выходе из Ferdi",
210 "settings.app.form.customTodoServer": "Custom Todo Server", 208 "settings.app.form.customTodoServer": "ПользовательÑикй Ñервер (задач)",
211 "settings.app.form.darkMode": "Включить Тёмный режим", 209 "settings.app.form.darkMode": "Включить Тёмный режим",
212 "settings.app.form.enableGPUAcceleration": "Включить уÑкорение GPU", 210 "settings.app.form.enableGPUAcceleration": "Включить уÑкорение GPU",
213 "settings.app.form.enableGlobalHideShortcut": "Enable Global shortcut to hide Ferdi", 211 "settings.app.form.enableGlobalHideShortcut": "Включить глобальную комбинацию клавиш Ð´Ð»Ñ ÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ferdi",
214 "settings.app.form.enableLock": "Enable Password Lock", 212 "settings.app.form.enableLock": "Включить блокировку паролем",
215 "settings.app.form.enableLongPressServiceHint": "Enable service shortcut hint on long press", 213 "settings.app.form.enableLongPressServiceHint": "Включить подÑказку горÑчих клавиш ÑервиÑа при длительном нажатии",
216 "settings.app.form.enableMenuBar": "Always show Ferdi in Menu Bar", 214 "settings.app.form.enableMenuBar": "Ð’Ñегда показывать Ferdi в меню",
217 "settings.app.form.enableSpellchecking": "Включить проверку правопиÑаниÑ", 215 "settings.app.form.enableSpellchecking": "Включить проверку правопиÑаниÑ",
218 "settings.app.form.enableSystemTray": "Always show Ferdi in System Tray", 216 "settings.app.form.enableSystemTray": "Ð’Ñегда показывать значок Ferdi в ÑиÑтемном трее",
219 "settings.app.form.enableTodos": "Enable Ferdi Todos", 217 "settings.app.form.enableTodos": "Включить Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ferdi",
220 "settings.app.form.hibernateOnStartup": "Keep services in hibernation on startup", 218 "settings.app.form.hibernateOnStartup": "ОÑтавлÑÑ‚ÑŒ ÑервиÑÑ‹ в ÑоÑтоÑнии глубокого Ñна во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿ÑƒÑка",
221 "settings.app.form.hibernationStrategy": "Ð¡Ñ‚Ñ€Ð°Ñ‚ÐµÐ³Ð¸Ñ Ð³Ð¸Ð±ÐµÑ€Ð½Ð°Ñ†Ð¸Ð¸", 219 "settings.app.form.hibernationStrategy": "Ð¡Ñ‚Ñ€Ð°Ñ‚ÐµÐ³Ð¸Ñ Ð³Ð¸Ð±ÐµÑ€Ð½Ð°Ñ†Ð¸Ð¸",
222 "settings.app.form.iconSize": "Service icon size", 220 "settings.app.form.iconSize": "Размер иконки ÑервиÑа",
223 "settings.app.form.inactivityLock": "Заблокировать поÑле бездейÑтвиÑ", 221 "settings.app.form.inactivityLock": "Заблокировать поÑле бездейÑтвиÑ",
224 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", 222 "settings.app.form.keepAllWorkspacesLoaded": "Сохранить вÑе рабочие Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ñ‹Ð¼Ð¸",
225 "settings.app.form.language": "Язык", 223 "settings.app.form.language": "Язык",
226 "settings.app.form.lockPassword": "Пароль", 224 "settings.app.form.lockPassword": "Пароль",
227 "settings.app.form.minimizeToSystemTray": "Сворачивать Ferdi в ÑиÑтемный трей", 225 "settings.app.form.minimizeToSystemTray": "Сворачивать Ferdi в ÑиÑтемный трей",
228 "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour", 226 "settings.app.form.navigationBarBehaviour": "Ð’Ð¸Ð·ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸ навигации",
229 "settings.app.form.notifyTaskBarOnMessage": "Notify TaskBar/Dock on new message", 227 "settings.app.form.notifyTaskBarOnMessage": "Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð² панели задач о новых ÑообщениÑÑ…",
230 "settings.app.form.passwordToggle": "Password toggle", 228 "settings.app.form.passwordToggle": "Изменить пароль",
231 "settings.app.form.predefinedTodoServer": "Todo Server", 229 "settings.app.form.predefinedTodoServer": "Сервер задач",
232 "settings.app.form.privateNotifications": "Don't show message content in notifications", 230 "settings.app.form.privateNotifications": "Ðе показывать Ñодержимое Ñообщений в уведомлениÑÑ…",
233 "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume", 231 "settings.app.form.reloadAfterResume": "Перезагрузить Ферди поÑле Ð²Ð¾Ð·Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑиÑтемы",
234 "settings.app.form.runInBackground": "ОÑтавлÑÑ‚ÑŒ Ferdi в фоне при закрытии окна", 232 "settings.app.form.runInBackground": "ОÑтавлÑÑ‚ÑŒ Ferdi в фоне при закрытии окна",
235 "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb", 233 "settings.app.form.scheduledDNDEnabled": "Включить запланированный режим \"не беÑпокоить\"",
236 "settings.app.form.scheduledDNDEnd": "До", 234 "settings.app.form.scheduledDNDEnd": "До",
237 "settings.app.form.scheduledDNDStart": "От", 235 "settings.app.form.scheduledDNDStart": "От",
238 "settings.app.form.searchEngine": "ПоиÑÐºÐ¾Ð²Ð°Ñ ÑиÑтема", 236 "settings.app.form.searchEngine": "ПоиÑÐºÐ¾Ð²Ð°Ñ ÑиÑтема",
@@ -241,11 +239,12 @@
241 "settings.app.form.showDisabledServices": "Показывать вкладки отключённых Ñлужб", 239 "settings.app.form.showDisabledServices": "Показывать вкладки отключённых Ñлужб",
242 "settings.app.form.showDragArea": "Показать перетаÑкиваемую облаÑÑ‚ÑŒ в окне", 240 "settings.app.form.showDragArea": "Показать перетаÑкиваемую облаÑÑ‚ÑŒ в окне",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Показывать значок непрочитанного ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отключённых уведомлениÑÑ…", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Показывать значок непрочитанного ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ отключённых уведомлениÑÑ…",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Отображать Ð¸Ð¼Ñ ÑервиÑа под иконкой",
245 "settings.app.form.splitMode": "Enable Split View Mode", 243 "settings.app.form.splitColumns": "КоличеÑтво Ñтолбцов",
244 "settings.app.form.splitMode": "Включить раздельный режим проÑмотра",
246 "settings.app.form.startMinimized": "ЗапуÑкать Ñвернутым", 245 "settings.app.form.startMinimized": "ЗапуÑкать Ñвернутым",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Включить универÑальный темный режим",
248 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 247 "settings.app.form.useTouchIdToUnlock": "Разрешить разблокировку Ferdi по TouchID",
249 "settings.app.form.useVerticalStyle": "ИÑпользовать горизонтальный Ñтиль", 248 "settings.app.form.useVerticalStyle": "ИÑпользовать горизонтальный Ñтиль",
250 "settings.app.form.wakeUpStrategy": "Ð¡Ñ‚Ñ€Ð°Ñ‚ÐµÐ³Ð¸Ñ Ð¿Ñ€Ð¾Ð±ÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ", 249 "settings.app.form.wakeUpStrategy": "Ð¡Ñ‚Ñ€Ð°Ñ‚ÐµÐ³Ð¸Ñ Ð¿Ñ€Ð¾Ð±ÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ",
251 "settings.app.headlineAdvanced": "Дополнительно", 250 "settings.app.headlineAdvanced": "Дополнительно",
@@ -254,22 +253,21 @@
254 "settings.app.headlineLanguage": "Язык", 253 "settings.app.headlineLanguage": "Язык",
255 "settings.app.headlinePrivacy": "КонфиденциальноÑÑ‚ÑŒ", 254 "settings.app.headlinePrivacy": "КонфиденциальноÑÑ‚ÑŒ",
256 "settings.app.headlineUpdates": "ОбновлениÑ", 255 "settings.app.headlineUpdates": "ОбновлениÑ",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "По умолчанию, Ферди будет держать вÑе ваши ÑервиÑÑ‹ открытыми и загружеными в фоновом режиме, чтобы они были готовы к иÑпользованию. СпÑщий режим выгрузит ваши ÑервиÑÑ‹ поÑле заданного количеÑтва минут. Это полезно Ð´Ð»Ñ Ñкономии памÑти и/или оптимальной работы компьютера.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Минут бездейÑтвиÑ, поÑле чего Ferdi будет автоматичеÑки блокироватьÑÑ. ИÑпользуйте 0, чтобы отключить",
259 "settings.app.languageDisclaimer": "ÐžÑ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° только Ð´Ð»Ñ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкого и немецкого Ñзыков. ОÑтальные Ñзыки переведены ÑообщеÑтвом.", 258 "settings.app.lockInfo": "Блокировка паролем позволÑет защитить ваши ÑообщениÑ.\nПри иÑпользовании блокировки паролем вам будет предложено вводить пароль каждый раз, когда вы запуÑкаете Ferdi или блокируете Ферди Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñимвола блокировки в левом нижнем углу или Ñрлыка {lockShortcut}.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Пароль", 259 "settings.app.lockedPassword": "Пароль",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "ПожалуйÑта, убедитеÑÑŒ, что уÑтановлен пароль, который вы запомните.\nЕÑли вы потерÑете Ñтот пароль, вам придетÑÑ Ð¿ÐµÑ€ÐµÑƒÑтановить Ferdi.",
263 "settings.app.restartRequired": "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÑŽÑ‚ перезагрузки приложениÑ", 261 "settings.app.restartRequired": "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÑŽÑ‚ перезагрузки приложениÑ",
264 "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", 262 "settings.app.scheduledDNDInfo": "Запланированный режим \"не беÑпокоить\" позволÑет вам определить период времени, в течение которого вы не желаете получать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ Ferdi.",
265 "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", 263 "settings.app.scheduledDNDTimeInfo": "Ð’Ñ€ÐµÐ¼Ñ Ð² 24-чаÑовом формате. Ð’Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ‚ быть раньше времени начала (например, начало 17:00, конец 09:00), чтобы включить ночной режим \"не беÑпокоить\".",
266 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!", 264 "settings.app.sentryInfo": "Отправка телеметрии позволÑет нам находить ошибки в Ferdi - мы не будем отправлÑÑ‚ÑŒ никакой личной информации, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð²Ð°ÑˆÐ¸ ÑообщениÑ!",
267 "settings.app.spellCheckerLanguageInfo": "Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.", 265 "settings.app.spellCheckerLanguageInfo": "Ferdi иÑпользует вÑтроенную проверку орфографии вашего уÑтройÑтва. ЕÑли вы желаете изменить Ñзык проверки орфографии, вы можете произвеÑти Ñто в ÑиÑтемных наÑтройках вашего уÑтройÑтва.",
268 "settings.app.subheadlineCache": "КÑш", 266 "settings.app.subheadlineCache": "КÑш",
269 "settings.app.subheadlineFerdiProfile": "Ferdi профиль", 267 "settings.app.subheadlineFerdiProfile": "Ferdi профиль",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.", 268 "settings.app.todoServerInfo": "Этот Ñервер будет иÑпользоватьÑÑ Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ задач \"Ferdi Todo\".",
271 "settings.app.translationHelp": "Помогите нам перевеÑти Ferdi на ваш Ñзык.", 269 "settings.app.translationHelp": "Помогите нам перевеÑти Ferdi на ваш Ñзык.",
272 "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", 270 "settings.app.universalDarkModeInfo": "УниверÑальный темный режим ÑтараетÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑки генерировать Ñтили темных режимов Ð´Ð»Ñ ÑервиÑов, которые в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð½Ðµ поддерживают Ñтот режим.",
273 "settings.app.updateStatusAvailable": "ДоÑтупно обновление, идёт загрузка...", 271 "settings.app.updateStatusAvailable": "ДоÑтупно обновление, идёт загрузка...",
274 "settings.app.updateStatusSearching": "ПоиÑк обновлений", 272 "settings.app.updateStatusSearching": "ПоиÑк обновлений",
275 "settings.app.updateStatusUpToDate": "Ð’Ñ‹ иÑпользуете актуальную верÑию Ferdi", 273 "settings.app.updateStatusUpToDate": "Ð’Ñ‹ иÑпользуете актуальную верÑию Ferdi",
@@ -283,15 +281,15 @@
283 "settings.navigation.yourWorkspaces": "Ваши окружениÑ", 281 "settings.navigation.yourWorkspaces": "Ваши окружениÑ",
284 "settings.recipes.all": "Ð’Ñе ÑервиÑÑ‹", 282 "settings.recipes.all": "Ð’Ñе ÑервиÑÑ‹",
285 "settings.recipes.custom": "ПользовательÑкий ÑервиÑÑ‹", 283 "settings.recipes.custom": "ПользовательÑкий ÑервиÑÑ‹",
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Протоколы Ñторонних ÑообщеÑтв",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "ПользовательÑкие Ñторонние протоколы",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "СервиÑные протоколы, разработанные вами",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "Ð”Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑкого ÑервиÑа, Ñкопируйте ÑервиÑный протокол в папку:",
290 "settings.recipes.customService.openDevDocs": "Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ разработчиков", 288 "settings.recipes.customService.openDevDocs": "Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ разработчиков",
291 "settings.recipes.customService.openFolder": "Открыть папку", 289 "settings.recipes.customService.openFolder": "Открыть папку",
292 "settings.recipes.headline": "ДоÑтупные ÑервиÑÑ‹", 290 "settings.recipes.headline": "ДоÑтупные ÑервиÑÑ‹",
293 "settings.recipes.missingService": "Ðе можете найти ÑервиÑ?", 291 "settings.recipes.missingService": "Ðе можете найти ÑервиÑ?",
294 "settings.recipes.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 292 "settings.recipes.nothingFound": "Извините, но ÑÐµÑ€Ð²Ð¸Ñ Ð½Ðµ ÑоответÑтвует вашему поиÑковому запроÑу - но вы вÑе еще можете добавить его, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¾Ð¿Ñ†Ð¸ÑŽ \"ПользовательÑкий Ñайт\". ПожалуйÑта, обратите внимание, что на Ñайте может отображатьÑÑ Ð±Ð¾Ð»ÑŒÑˆÐµ Ñлужб, которые могли быть добавлены в новых верÑиÑÑ… Ferdi. Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ñ‹Ñ… ÑервиÑов, пожалуйÑта, обновите Ferdi до актуальной верÑии.",
295 "settings.recipes.servicesSuccessfulAddedInfo": "Ð¡ÐµÑ€Ð²Ð¸Ñ ÑƒÑпешно добавлен", 293 "settings.recipes.servicesSuccessfulAddedInfo": "Ð¡ÐµÑ€Ð²Ð¸Ñ ÑƒÑпешно добавлен",
296 "settings.searchService": "Ðайти ÑервиÑ", 294 "settings.searchService": "Ðайти ÑервиÑ",
297 "settings.service.error.goBack": "ВернутьÑÑ Ðº ÑервиÑам", 295 "settings.service.error.goBack": "ВернутьÑÑ Ðº ÑервиÑам",
@@ -301,9 +299,9 @@
301 "settings.service.form.availableServices": "ДоÑтупные ÑервиÑÑ‹", 299 "settings.service.form.availableServices": "ДоÑтупные ÑервиÑÑ‹",
302 "settings.service.form.customUrl": "ПользовательÑкий Ñервер", 300 "settings.service.form.customUrl": "ПользовательÑкий Ñервер",
303 "settings.service.form.customUrlValidationError": "Ðевозможно проверить Ñервер {name}.", 301 "settings.service.form.customUrlValidationError": "Ðевозможно проверить Ñервер {name}.",
304 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness", 302 "settings.service.form.darkReaderBrightness": "Яркий темный режим",
305 "settings.service.form.darkReaderContrast": "Dark Reader Contrast", 303 "settings.service.form.darkReaderContrast": "КонтраÑтный темный режим",
306 "settings.service.form.darkReaderSepia": "Dark Reader Sepia", 304 "settings.service.form.darkReaderSepia": "Темный режим ÑепиÑ",
307 "settings.service.form.deleteButton": "Удалить ÑервиÑ", 305 "settings.service.form.deleteButton": "Удалить ÑервиÑ",
308 "settings.service.form.editServiceHeadline": "Редактирование {name}", 306 "settings.service.form.editServiceHeadline": "Редактирование {name}",
309 "settings.service.form.enableAudio": "Включить звук", 307 "settings.service.form.enableAudio": "Включить звук",
@@ -325,13 +323,13 @@
325 "settings.service.form.isHibernatedEnabledInfo": "Когда включено, Ñлужба будет отключена по иÑтечении времени, чтобы Ñохранить ÑиÑтемные реÑурÑÑ‹.", 323 "settings.service.form.isHibernatedEnabledInfo": "Когда включено, Ñлужба будет отключена по иÑтечении времени, чтобы Ñохранить ÑиÑтемные реÑурÑÑ‹.",
326 "settings.service.form.isMutedInfo": "Когда выключено, вÑе звуковые ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ отключены", 324 "settings.service.form.isMutedInfo": "Когда выключено, вÑе звуковые ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ отключены",
327 "settings.service.form.name": "ИмÑ", 325 "settings.service.form.name": "ИмÑ",
328 "settings.service.form.onlyShowFavoritesInUnreadCount": "Only show Favorites in unread count", 326 "settings.service.form.onlyShowFavoritesInUnreadCount": "Отображение только \"Избранного\" в количеÑтве непрочитанного",
329 "settings.service.form.openDarkmodeCss": "Открыть darkmode.css", 327 "settings.service.form.openDarkmodeCss": "Открыть darkmode.css",
330 "settings.service.form.openUserCss": "Открыть user.css", 328 "settings.service.form.openUserCss": "Открыть user.css",
331 "settings.service.form.openUserJs": "Открыть user.js", 329 "settings.service.form.openUserJs": "Открыть user.js",
332 "settings.service.form.proxy.headline": "ÐаÑтройки ПрокÑи HTTP/HTTPS", 330 "settings.service.form.proxy.headline": "ÐаÑтройки ПрокÑи HTTP/HTTPS",
333 "settings.service.form.proxy.host": "ПрокÑи Host/IP", 331 "settings.service.form.proxy.host": "ПрокÑи Host/IP",
334 "settings.service.form.proxy.info": "Proxy settings will not be synchronized with the Ferdi servers.", 332 "settings.service.form.proxy.info": "ÐаÑтройки прокÑи не будут ÑинхронизироватьÑÑ Ñ Ñерверами Ferdi.",
335 "settings.service.form.proxy.isEnabled": "ИÑпользовать прокÑи", 333 "settings.service.form.proxy.isEnabled": "ИÑпользовать прокÑи",
336 "settings.service.form.proxy.password": "Пароль (опционально)", 334 "settings.service.form.proxy.password": "Пароль (опционально)",
337 "settings.service.form.proxy.port": "Порт", 335 "settings.service.form.proxy.port": "Порт",
@@ -340,7 +338,7 @@
340 "settings.service.form.recipeFileInfo": "Ваши пользовательÑкие файлы будут вÑтавлены на веб-Ñтраницу, чтобы вы могли наÑтроить ÑервиÑÑ‹ в любом удобном вам виде. Файлы пользователей хранÑÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ локально и не передаютÑÑ Ð½Ð° другие компьютеры, иÑпользующие ту же учетную запиÑÑŒ.", 338 "settings.service.form.recipeFileInfo": "Ваши пользовательÑкие файлы будут вÑтавлены на веб-Ñтраницу, чтобы вы могли наÑтроить ÑервиÑÑ‹ в любом удобном вам виде. Файлы пользователей хранÑÑ‚ÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ локально и не передаютÑÑ Ð½Ð° другие компьютеры, иÑпользующие ту же учетную запиÑÑŒ.",
341 "settings.service.form.saveButton": "Сохранить ÑервиÑ", 339 "settings.service.form.saveButton": "Сохранить ÑервиÑ",
342 "settings.service.form.tabHosted": "Размещено", 340 "settings.service.form.tabHosted": "Размещено",
343 "settings.service.form.tabOnPremise": "Свой хоÑтинг â­ï¸", 341 "settings.service.form.tabOnPremise": "СобÑтвенный хоÑтинг â­",
344 "settings.service.form.team": "Команда", 342 "settings.service.form.team": "Команда",
345 "settings.service.form.useHostedService": "ИÑпользовать ÑобÑтвенный ÑÐµÑ€Ð²Ð¸Ñ {name}", 343 "settings.service.form.useHostedService": "ИÑпользовать ÑобÑтвенный ÑÐµÑ€Ð²Ð¸Ñ {name}",
346 "settings.service.form.yourServices": "Ваши ÑервиÑÑ‹", 344 "settings.service.form.yourServices": "Ваши ÑервиÑÑ‹",
@@ -348,34 +346,31 @@
348 "settings.services.discoverServices": "Ðайти ÑервиÑÑ‹", 346 "settings.services.discoverServices": "Ðайти ÑервиÑÑ‹",
349 "settings.services.headline": "Ваши ÑервиÑÑ‹", 347 "settings.services.headline": "Ваши ÑервиÑÑ‹",
350 "settings.services.noServicesAdded": "Ðачните Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑервиÑа.", 348 "settings.services.noServicesAdded": "Ðачните Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑервиÑа.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Ошибка загрузки ÑервиÑов", 350 "settings.services.servicesRequestFailed": "Ошибка загрузки ÑервиÑов",
353 "settings.services.tooltip.isDisabled": "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½", 351 "settings.services.tooltip.isDisabled": "Ð¡ÐµÑ€Ð²Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½",
354 "settings.services.tooltip.isMuted": "Ð’Ñе звуки отключены", 352 "settings.services.tooltip.isMuted": "Ð’Ñе звуки отключены",
355 "settings.services.tooltip.notificationsDisabled": "Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹", 353 "settings.services.tooltip.notificationsDisabled": "Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹",
356 "settings.services.updatedInfo": "Ваши Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ Ñохранены", 354 "settings.services.updatedInfo": "Ваши Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ Ñохранены",
357 "settings.supportFerdi.aboutIntro": "<p>Ферди ÑвлÑетÑÑ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼ Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ иÑходным кодом и разрабатываетÑÑ ÑообщеÑтвом.</p><p>СпаÑибо людÑм, которые делают Ñто возможным:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ферди ÑвлÑетÑÑ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼ Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ иÑходным кодом и разрабатываетÑÑ ÑообщеÑтвом.</p><p>СпаÑибо людÑм, которые делают Ñто возможным:</p>",
358 "settings.supportFerdi.bannerText": "Вы хотите помочь нам улучшить Ферди?",
359 "settings.supportFerdi.headline": "О Ferdi", 356 "settings.supportFerdi.headline": "О Ferdi",
360 "settings.supportFerdi.openSurvey": "Открыть опроÑ",
361 "settings.supportFerdi.textDonation": "ЕÑли вы хотите поддержать развитие Ферди Ñ Ð¿Ð¾Ð¶ÐµÑ€Ñ‚Ð²Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼, вы можете Ñделать Ñто Ð´Ð²ÑƒÐ¼Ñ ÑпоÑобами,", 357 "settings.supportFerdi.textDonation": "ЕÑли вы хотите поддержать развитие Ферди Ñ Ð¿Ð¾Ð¶ÐµÑ€Ñ‚Ð²Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼, вы можете Ñделать Ñто Ð´Ð²ÑƒÐ¼Ñ ÑпоÑобами,",
362 "settings.supportFerdi.textDonationAnd": "и", 358 "settings.supportFerdi.textDonationAnd": "и",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "Ð¥Ð¾Ñ‚Ñ Ð±Ð¾Ð»ÑŒÑˆÑƒÑŽ чаÑÑ‚ÑŒ работы выполнÑÑŽÑ‚ волонтёры, а нам к тому же необходимо оплачивать Ñерверы и Ñертификаты. Как ÑообщеÑтво, мы полноÑтью прозрачны к ÑредÑтвам, которые Ñобираем и раÑходуем - Ñмотрите наш",
364 "settings.supportFerdi.textGitHubSponsors": "СпонÑоры на Github", 360 "settings.supportFerdi.textGitHubSponsors": "СпонÑоры на Github",
365 "settings.supportFerdi.textListContributors": "Full list of contributors", 361 "settings.supportFerdi.textListContributors": "Полный ÑпиÑок учаÑтников",
366 "settings.supportFerdi.textListContributorsHere": "здеÑÑŒ", 362 "settings.supportFerdi.textListContributorsHere": "здеÑÑŒ",
367 "settings.supportFerdi.textOpenCollective": "Open Collective", 363 "settings.supportFerdi.textOpenCollective": "Open Collective",
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Поддержка вÑегда приветÑтвуетÑÑ. Ð’Ñ‹ можете найти ÑпиÑок необходимой нам помощи",
369 "settings.supportFerdi.textSupportWelcomeHere": "здеÑÑŒ", 365 "settings.supportFerdi.textSupportWelcomeHere": "здеÑÑŒ",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "Поддержкой Ferdi занимаютÑÑ Ð²Ð¾Ð»Ð¾Ð½Ñ‚Ñ‘Ñ€Ñ‹. Люди, который иÑпользую Ferdi, как и Ð’Ñ‹. Они поддерживают, иÑправлÑÑŽÑ‚ и улучшают Ferdi в Ñвободное времÑ.",
371 "settings.supportFerdi.title": "Вам нравитÑÑ Ð¤ÐµÑ€Ð´Ð¸?",
372 "settings.team.contentHeadline": "Команда ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Franz ", 367 "settings.team.contentHeadline": "Команда ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Franz ",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Ð¡ÐµÑ€Ð²Ð¸Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ Franz позволÑет управлÑÑ‚ÑŒ подпиÑкой Franz Ð´Ð»Ñ Ð½ÐµÑкольких пользователей. ПожалуйÑта, имейте в виду, что подпиÑка Franz Premium не даÑÑ‚ Вам никаких преимущеÑтв в иÑпользовании Ferdi. ЕдинÑтвенной причиной, почему Ð’Ñ‹ еще имеете доÑтуп к управлению командой, ÑоÑтоит в том, чтобы Ð’Ñ‹ могли управлÑÑ‚ÑŒ Ñвоими прежними командами Franz Teams и чтобы Ð’Ñ‹ не потерÑли никаких функций ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñвоей учетной запиÑью.",
374 "settings.team.headline": "Команда", 369 "settings.team.headline": "Команда",
375 "settings.team.intro": "You are currently using Franz Servers, which is why you have access to Team Management.", 370 "settings.team.intro": "Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð²Ñ‹ иÑпользуете Ñерверы Franz, поÑтому у Ð’Ð°Ñ ÐµÑÑ‚ÑŒ доÑтуп к управлению командой.",
376 "settings.team.manageAction": "УправлÑйте вашей командой на meetfranz.com", 371 "settings.team.manageAction": "УправлÑйте вашей командой на meetfranz.com",
377 "settings.team.teamsUnavailable": "Команды недоÑтупны", 372 "settings.team.teamsUnavailable": "Команды недоÑтупны",
378 "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 373 "settings.team.teamsUnavailableInfo": "Команды на текущий момент доÑтупны только при иÑпользовании Ñервера Franz и поÑле Ð¿Ñ€Ð¸Ð¾Ð±Ñ€ÐµÑ‚ÐµÐ½Ð¸Ñ Franz Professional. ПожалуйÑта, измените Ваш Ñервер на https://api.franzinfra.com Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Teams.",
379 "settings.user.form.accountType.company": "КомпаниÑ", 374 "settings.user.form.accountType.company": "КомпаниÑ",
380 "settings.user.form.accountType.individual": "Индивидуальный", 375 "settings.user.form.accountType.individual": "Индивидуальный",
381 "settings.user.form.accountType.label": "Тип аккаунта", 376 "settings.user.form.accountType.label": "Тип аккаунта",
@@ -389,28 +384,28 @@
389 "settings.workspace.add.form.submitButton": "Создать окружение", 384 "settings.workspace.add.form.submitButton": "Создать окружение",
390 "settings.workspace.form.buttonDelete": "Удалить окружение", 385 "settings.workspace.form.buttonDelete": "Удалить окружение",
391 "settings.workspace.form.buttonSave": "Сохранить окружение", 386 "settings.workspace.form.buttonSave": "Сохранить окружение",
392 "settings.workspace.form.keepLoaded": "Keep this workspace loaded*", 387 "settings.workspace.form.keepLoaded": "ОÑтавить Ñто рабочее окружение загруженным*",
393 "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.", 388 "settings.workspace.form.keepLoadedInfo": "*Этот параметр будет перезапиÑан глобальным параметром \"СохранÑÑ‚ÑŒ вÑе рабочие Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ð½Ñ‹Ð¼Ð¸\".",
394 "settings.workspace.form.name": "ИмÑ", 389 "settings.workspace.form.name": "ИмÑ",
395 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace", 390 "settings.workspace.form.servicesInWorkspaceHeadline": "СервиÑÑ‹ в Ñтом Рабочем проÑтранÑтве",
396 "settings.workspace.form.yourWorkspaces": "Ваши окружениÑ", 391 "settings.workspace.form.yourWorkspaces": "Ваши окружениÑ",
397 "settings.workspaces.deletedInfo": "Ð Ð°Ð±Ð¾Ñ‡Ð°Ñ Ð¾Ð±Ð»Ð°ÑÑ‚ÑŒ удалена", 392 "settings.workspaces.deletedInfo": "Ð Ð°Ð±Ð¾Ñ‡Ð°Ñ Ð¾Ð±Ð»Ð°ÑÑ‚ÑŒ удалена",
398 "settings.workspaces.headline": "Ваши окружениÑ", 393 "settings.workspaces.headline": "Ваши окружениÑ",
399 "settings.workspaces.noWorkspacesAdded": "Ð’Ñ‹ еще не Ñоздали ни одной рабочей облаÑти.", 394 "settings.workspaces.noWorkspacesAdded": "Ð’Ñ‹ еще не Ñоздали ни одной рабочей облаÑти.",
400 "settings.workspaces.tryReloadWorkspaces": "Попробовать Ñнова", 395 "settings.workspaces.tryReloadWorkspaces": "Попробовать Ñнова",
401 "settings.workspaces.updatedInfo": "Ваши Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ Ñохранены", 396 "settings.workspaces.updatedInfo": "Ваши Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ Ñохранены",
402 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces", 397 "settings.workspaces.workspaceFeatureHeadline": "Меньше - больше: знакомÑтво Ñ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ð¼Ð¸ окружениÑми Ferdi",
403 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", 398 "settings.workspaces.workspaceFeatureInfo": "Рабочие Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ferdi позволÑÑŽÑ‚ вам фокуÑироватьÑÑ Ð½Ð° том, что важно на текущий момент. УÑтановите разные наборы ÑервиÑов и легко переключайтеÑÑŒ между ними в любое времÑ. Только вы решаете, какие ÑервиÑÑ‹ вам необходимы здеÑÑŒ и ÑейчаÑ, а мы можем помочь вам доÑтичь ÑовершенÑтва или отключитьÑÑ Ð¾Ñ‚ работы, по Ñвоему уÑмотрению.",
404 "settings.workspaces.workspacesRequestFailed": "Ошибка загрузки ваших рабочих облаÑтей", 399 "settings.workspaces.workspacesRequestFailed": "Ошибка загрузки ваших рабочих облаÑтей",
405 "setupAssistant.headline": "Давайте начнем", 400 "setupAssistant.headline": "Давайте начнем",
406 "setupAssistant.subheadline": "Choose from our most used services and get back on top of your messaging now.", 401 "setupAssistant.subheadline": "Сделайте Ñвой выбор Ñреди наиболее популÑрных ÑервиÑов и возвращайтеÑÑŒ к Ñвоим ÑообщениÑм прÑмо ÑейчаÑ.",
407 "setupAssistant.submit.label": "Ðачнем", 402 "setupAssistant.submit.label": "Ðачнем",
408 "sidebar.addNewService": "Добавить новый ÑервиÑ", 403 "sidebar.addNewService": "Добавить новый ÑервиÑ",
409 "sidebar.closeTodosDrawer": "Close Ferdi Todos", 404 "sidebar.closeTodosDrawer": "Закрыть невыполненные заданий Ferdi",
410 "sidebar.closeWorkspaceDrawer": "Закрыть меню окружений", 405 "sidebar.closeWorkspaceDrawer": "Закрыть меню окружений",
411 "sidebar.lockFerdi": "Заблокировать Ferdi", 406 "sidebar.lockFerdi": "Заблокировать Ferdi",
412 "sidebar.muteApp": "Отключить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ звук", 407 "sidebar.muteApp": "Отключить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ звук",
413 "sidebar.openTodosDrawer": "Open Ferdi Todos", 408 "sidebar.openTodosDrawer": "Открыть Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ferdi",
414 "sidebar.openWorkspaceDrawer": "Открыть меню окружений", 409 "sidebar.openWorkspaceDrawer": "Открыть меню окружений",
415 "sidebar.unmuteApp": "Включить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ звук", 410 "sidebar.unmuteApp": "Включить ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¸ звук",
416 "signup.email.label": "ÐÐ´Ñ€ÐµÑ Ñлектронной почты", 411 "signup.email.label": "ÐÐ´Ñ€ÐµÑ Ñлектронной почты",
@@ -424,7 +419,7 @@
424 "signup.link.login": "Уже еÑÑ‚ÑŒ аккаунт, войти?", 419 "signup.link.login": "Уже еÑÑ‚ÑŒ аккаунт, войти?",
425 "signup.password.label": "Пароль", 420 "signup.password.label": "Пароль",
426 "signup.submit.label": "Создать аккаунт", 421 "signup.submit.label": "Создать аккаунт",
427 "tabs.item.confirmDeleteService": "Do you really want to delete the {serviceName} service?", 422 "tabs.item.confirmDeleteService": "Ð’Ñ‹ точно желаете удалить ÑÐµÑ€Ð²Ð¸Ñ {serviceName}?",
428 "tabs.item.deleteService": "Удалить ÑервиÑ", 423 "tabs.item.deleteService": "Удалить ÑервиÑ",
429 "tabs.item.disableAudio": "Отключить звук", 424 "tabs.item.disableAudio": "Отключить звук",
430 "tabs.item.disableDarkMode": "Отключить темный режим", 425 "tabs.item.disableDarkMode": "Отключить темный режим",
@@ -434,14 +429,14 @@
434 "tabs.item.enableDarkMode": "Включить темный режим", 429 "tabs.item.enableDarkMode": "Включить темный режим",
435 "tabs.item.enableNotification": "Включить уведомлениÑ", 430 "tabs.item.enableNotification": "Включить уведомлениÑ",
436 "tabs.item.enableService": "Включить ÑервиÑ", 431 "tabs.item.enableService": "Включить ÑервиÑ",
437 "tabs.item.hibernateService": "Hibernate service", 432 "tabs.item.hibernateService": "Переход ÑервиÑа в ÑпÑщий режим",
438 "tabs.item.reload": "Перезагрузить", 433 "tabs.item.reload": "Перезагрузить",
439 "tabs.item.wakeUpService": "Разбудить Ñлужбу", 434 "tabs.item.wakeUpService": "Разбудить Ñлужбу",
440 "validation.email": "{field} is not valid", 435 "validation.email": "{field} не дейÑтвительно",
441 "validation.minLength": "{field} should be at least {length} characters long", 436 "validation.minLength": "КількіÑÑ‚ÑŒ Ñимволів в {field} повина бути не меньше {length}",
442 "validation.oneRequired": "At least one is required", 437 "validation.oneRequired": "Ðеобходим как минимум один",
443 "validation.required": "{field} is required", 438 "validation.required": "{field} необходимо",
444 "validation.url": "{field} is not a valid URL", 439 "validation.url": "{field} не ÑвлÑетÑÑ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ URL (ÑÑылкой)",
445 "webControls.back": "Ðазад", 440 "webControls.back": "Ðазад",
446 "webControls.forward": "ПереÑлать", 441 "webControls.forward": "ПереÑлать",
447 "webControls.goHome": "Домой", 442 "webControls.goHome": "Домой",
@@ -449,12 +444,12 @@
449 "webControls.reload": "Перезагрузить", 444 "webControls.reload": "Перезагрузить",
450 "welcome.loginButton": "Вход", 445 "welcome.loginButton": "Вход",
451 "welcome.signupButton": "Создать беÑплатный аккаунт", 446 "welcome.signupButton": "Создать беÑплатный аккаунт",
452 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", 447 "workspaceDrawer.addNewWorkspaceLabel": "Добавить новое рабочее окружение",
453 "workspaceDrawer.allServices": "Ð’Ñе ÑервиÑÑ‹", 448 "workspaceDrawer.allServices": "Ð’Ñе ÑервиÑÑ‹",
454 "workspaceDrawer.headline": "Окружение", 449 "workspaceDrawer.headline": "Окружение",
455 "workspaceDrawer.item.contextMenuEdit": "редактировать", 450 "workspaceDrawer.item.contextMenuEdit": "редактировать",
456 "workspaceDrawer.item.noServicesAddedYet": "No services added yet", 451 "workspaceDrawer.item.noServicesAddedYet": "Ðет добавленных ÑервиÑов",
457 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", 452 "workspaceDrawer.workspaceFeatureInfo": "<p>Рабочие Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ferdi позволÑÑŽÑ‚ вма ÑфокуÑироватьÑÑ Ð½Ð° том, что важно на текущий момент. УÑтановите разные наборы ÑервиÑов и легко переключайтеÑÑŒ между ними в любое времÑ.</p><p>Только вы решаете, какие ÑервиÑÑ‹ вам необходимы здеÑÑŒ и ÑейчаÑ, а мы можем вам помочь доÑтичь ÑовершенÑтва или отключитьÑÑ Ð¾Ñ‚ работы, по Ñвоему уÑмотрению.</p>",
458 "workspaceDrawer.workspacesSettingsTooltip": "Изменить наÑтройки рабочих облаÑтей", 453 "workspaceDrawer.workspacesSettingsTooltip": "Изменить наÑтройки рабочих облаÑтей",
459 "workspaces.switchingIndicator.switchingTo": "Переключение на" 454 "workspaces.switchingIndicator.switchingTo": "Переключение на"
460} 455}
diff --git a/src/i18n/locales/si.json b/src/i18n/locales/si.json
index 9ebf7f9e5..43295c582 100644
--- a/src/i18n/locales/si.json
+++ b/src/i18n/locales/si.json
@@ -1,97 +1,136 @@
1{ 1{
2 "app.errorHandler.action": "Reload", 2 "app.errorHandler.action": "නà·à·€à¶­ පූරණය",
3 "app.errorHandler.headline": "Something went wrong", 3 "app.errorHandler.headline": "Something went wrong.",
4 "connectionLostBanner.cta": "Reload Service", 4 "changeserver.customServerLabel": "අභිරුචි සේවà·à¶¯à·à¶ºà¶šà¶º",
5 "changeserver.headline": "Change server",
6 "changeserver.label": "සේවà·à¶¯à·à¶ºà¶šà¶º",
7 "changeserver.urlError": "වලංගු ඒ.ස.නි. යොදන්න",
8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved",
9 "connectionLostBanner.cta": "සේවà·à·€ යළි පූරණය",
5 "connectionLostBanner.informationLink": "What happened?", 10 "connectionLostBanner.informationLink": "What happened?",
6 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.", 11 "connectionLostBanner.message": "Oh no! Ferdi lost the connection to {name}.",
7 "feature.announcements.changelog.headline": "Changes in Ferdi {version}", 12 "feature.basicAuth.signIn": "Sign In",
8 "feature.shareFranz.action.email": "Send as email", 13 "feature.nightlyBuilds.activate": "Activate",
9 "feature.shareFranz.action.facebook": "Share on Facebook", 14 "feature.nightlyBuilds.info": "Nightly builds are highly experimental versions of Ferdi that may contain unpolished or uncompleted features. These nightly builds are mainly used by developers to test their newly developed features and how they will perform in the final build. If you don't know what you are doing, we suggest not activating nightly builds.",
10 "feature.shareFranz.action.twitter": "Share on Twitter", 15 "feature.nightlyBuilds.title": "Nightly Builds",
11 "feature.shareFranz.headline": "Ferdi is better together!", 16 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.",
12 "feature.shareFranz.shareText.email": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com", 17 "feature.publishDebugInfo.info": "Publishing your debug information helps us find issues and errors in Ferdi. By publishing your debug information you accept Ferdi Debugger's privacy policy and terms of service",
13 "feature.shareFranz.shareText.twitter": "I've added {count} services to Ferdi! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.getferdi.com /cc @FerdiMessenger", 18 "feature.publishDebugInfo.privacy": "රහස්â€à¶ºà¶­à· ප්â€à¶»à¶­à·’පත්තිය",
14 "feature.shareFranz.text": "Tell your friends and colleagues how awesome Ferdi is and help us to spread the word.", 19 "feature.publishDebugInfo.publish": "Accept and publish",
15 "global.api.unhealthy": "ෆ්රà·à¶±à·Šà·ƒà·Š මà·à¶»à·Šà¶œà¶œà¶­ සේවà·à·€à¶±à·Š වෙත සම්බන්ධ වීමට නොහà·à¶š.", 20 "feature.publishDebugInfo.published": "Your debug log was published and is now availible at",
16 "global.edit": "Edit", 21 "feature.publishDebugInfo.terms": "Terms of service",
17 "global.franzProRequired": "Ferdi Professional Required", 22 "feature.publishDebugInfo.title": "Publish debug information",
23 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.",
24 "feature.quickSwitch.search": "සොයන්න...",
25 "feature.quickSwitch.title": "QuickSwitch",
26 "global.api.unhealthy": "Can't connect to Ferdi online services",
27 "global.cancel": "අවලංගු",
28 "global.edit": "සංස්කරණය",
29 "global.no": "නà·à·„à·",
18 "global.notConnectedToTheInternet": "ඔබ අන්තර්ජà·à¶½à¶ºà¶§ සම්බන්ධ වී නà·à¶­.", 30 "global.notConnectedToTheInternet": "ඔබ අන්තර්ජà·à¶½à¶ºà¶§ සම්බන්ධ වී නà·à¶­.",
19 "global.quit": "Quit", 31 "global.ok": "හරි",
20 "global.settings": "Settings", 32 "global.quit": "ඉවත් වන්න",
33 "global.quitConfirmation": "ඔබට ෆර්ඩි වෙතින් ඉවත් වීමට ඇවà·à·ƒà·’ද?",
34 "global.save": "සුරකින්න",
35 "global.settings": "à·ƒà·à¶šà·ƒà·”ම්",
21 "global.spellchecker.useDefault": "Use System Default ({default})", 36 "global.spellchecker.useDefault": "Use System Default ({default})",
22 "global.spellchecking.autodetect": "Detect language automatically", 37 "global.spellchecking.autodetect": "Detect language automatically",
23 "global.spellchecking.autodetect.short": "Automatic", 38 "global.spellchecking.autodetect.short": "ස්වයංක්â€à¶»à·“ය",
24 "global.spellchecking.language": "Spell checking language", 39 "global.spellchecking.language": "Spell checking language",
25 "global.submit": "යවන්න", 40 "global.submit": "යොමන්න",
26 "import.headline": "ඔබගේ ෆ්රà·à¶±à·Šà·ƒà·Š සේවà·à·€à¶±à·Š නà·à·€à¶­ ඇතුලත් කරගන්න.", 41 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.",
27 "import.notSupportedHeadline": "සේවà·à·€à¶±à·Š සඳහ෠ෆ්රà·à¶±à·Šà·ƒà·Š 5 à·„à·’ තවමත් පහසුකම් සලස෠නà·à¶­.", 42 "global.userAgentPref": "පරිà·à·“ලක නියà·à¶­à¶º",
28 "import.skip.label": "සේවà·à·€à¶±à·Š මවිසින් ඇතුලත් කල යුතුය. ", 43 "global.yes": "ඔව්",
29 "import.submit.label": "සේවà·à·€à¶±à·Š ස්වයං ඇතුලත් කරගà·à¶±à·“ම ", 44 "import.headline": "ෆර්ඩි 4 සේව෠අයà·à¶­ කරන්න",
30 "infobar.buttonChangelog": "අලුත් දෑ", 45 "import.notSupportedHeadline": "Services not yet supported in Ferdi 5",
31 "infobar.buttonInstallUpdate": "නà·à·€à¶­ අරඹ෠යà·à·€à¶­à·Šà¶šà·à¶½ කරන්න.", 46 "import.skip.label": "I want to add services manually",
32 "infobar.buttonReloadServices": "සේවà·à·€à¶±à·Š නà·à·€à¶­ ඇරඹීම", 47 "import.submit.label": "Import {count} services",
33 "infobar.requiredRequestsFailed": "සේවà·à·€à¶±à·Š සහ පරිà·à·“ලක තොරතුරු ලබà·à¶œà¶­ නොහà·à¶š.", 48 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.",
34 "infobar.servicesUpdated": "ඔබගේ සේවà·à·€à¶±à·Š යà·à·€à¶­à·Šà¶šà·à¶½ කර ඇත.", 49 "infobar.buttonChangelog": "What is new?",
35 "infobar.updateAvailable": "ෆ්රà·à¶±à·Šà·ƒà·Š à·„à·’ නව සංස්කරණයක් දà·à¶±à·Š ලබ෠ගත à·„à·à¶š.", 50 "infobar.buttonInstallUpdate": "Restart & install update",
36 "invite.email.label": "විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·Š ලිපිනය ", 51 "infobar.buttonReloadServices": "සේව෠නà·à·€à¶­ පූරණය",
37 "invite.headline.friends": "මිතුරන් 3කට ආරà·à¶°à¶±à· කරන්න.", 52 "infobar.hide": "සඟවන්න",
38 "invite.name.label": "නම", 53 "infobar.requiredRequestsFailed": "Could not load services and user information",
39 "invite.skip.label": "ම෠මෙය පසුව කරන්නම්", 54 "infobar.servicesUpdated": "Your services have been updated.",
40 "invite.submit.label": "ඇරයුම් යවන්න ", 55 "infobar.updateAvailable": "A new update for Ferdi is available.",
56 "infobox.dismiss": "Dismiss",
57 "invite.email.label": "Email address",
58 "invite.headline.friends": "Invite 3 of your friends or colleagues",
59 "invite.name.label": "Name",
60 "invite.skip.label": "I want to do this later",
61 "invite.submit.label": "Send invites",
41 "invite.successInfo": "Invitations sent successfully", 62 "invite.successInfo": "Invitations sent successfully",
42 "login.email.label": "විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·Š ලිපිනය", 63 "locked.headline": "Locked",
43 "login.headline": "ඇතුළු වන්න", 64 "locked.invalidCredentials": "Password invalid",
44 "login.invalidCredentials": "විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·Š ලිපිනය හ෠මුර පදය à·€à·à¶»à¶¯à·’යි", 65 "locked.password.label": "Password",
45 "login.link.password": "මුර පදය අලුත් කරන්න", 66 "locked.submit.label": "Unlock",
46 "login.link.signup": "නොමිළ ගිණුමක් සකසන්න", 67 "locked.touchId": "Unlock with Touch ID",
47 "login.password.label": "මුරපදය", 68 "locked.touchIdPrompt": "unlock via Touch ID",
48 "login.serverLogout": "ඔබේ ඇතුළු වීම් කà·à¶½à¶º අවසන්, නà·à·€à¶­ ඇතුල් වන්න.", 69 "locked.unlockWithPassword": "Unlock with Password",
49 "login.submit.label": "ඇතුල් වන්න", 70 "login.changeServer": "Change server",
50 "login.tokenExpired": "ඔබේ ඇතුළු වීම් කà·à¶½à¶º අවසන්, නà·à·€à¶­ ඇතුල් වන්න.", 71 "login.customServerQuestion": "Using a Franz account to log in?",
72 "login.customServerSuggestion": "Try importing your Franz account into Ferdi",
73 "login.email.label": "Email address",
74 "login.headline": "Sign in",
75 "login.invalidCredentials": "Email or password not valid",
76 "login.link.password": "Reset password",
77 "login.link.signup": "නොමිලේ ගිණුමක් à·ƒà·à¶¯à¶±à·Šà¶±",
78 "login.password.label": "Password",
79 "login.serverLogout": "Your session expired, please login again.",
80 "login.submit.label": "Sign in",
81 "login.tokenExpired": "Your session expired, please login again.",
51 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 82 "menu.Todoss.closeTodosDrawer": "Close Todos drawer",
52 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 83 "menu.Todoss.openTodosDrawer": "Open Todos drawer",
53 "menu.app.about": "About Ferdi", 84 "menu.app.about": "ෆර්ඩි පිළිබඳව",
54 "menu.app.announcement": "What's new?", 85 "menu.app.autohideMenuBar": "Auto-hide menu bar",
55 "menu.app.checkForUpdates": "Check for updates", 86 "menu.app.checkForUpdates": "Check for updates",
56 "menu.app.hide": "Hide", 87 "menu.app.hide": "සඟවන්න",
57 "menu.app.hideOthers": "Hide Others", 88 "menu.app.hideOthers": "Hide Others",
58 "menu.app.unhide": "Unhide", 89 "menu.app.unhide": "නොසඟවන්න",
59 "menu.edit": "Edit", 90 "menu.edit": "සංස්කරණය",
60 "menu.edit.copy": "Copy", 91 "menu.edit.copy": "පිටපත්",
61 "menu.edit.cut": "Cut", 92 "menu.edit.cut": "කපන්න",
62 "menu.edit.delete": "Delete", 93 "menu.edit.delete": "Delete",
63 "menu.edit.emojiSymbols": "Emoji & Symbols", 94 "menu.edit.emojiSymbols": "Emoji & Symbols",
64 "menu.edit.paste": "Paste", 95 "menu.edit.findInPage": "Find in Page",
96 "menu.edit.paste": "අලවන්න",
65 "menu.edit.pasteAndMatchStyle": "Paste And Match Style", 97 "menu.edit.pasteAndMatchStyle": "Paste And Match Style",
66 "menu.edit.redo": "Redo", 98 "menu.edit.redo": "පසුසේ",
67 "menu.edit.selectAll": "Select All", 99 "menu.edit.selectAll": "Select All",
68 "menu.edit.speech": "Speech", 100 "menu.edit.speech": "Speech",
69 "menu.edit.startDictation": "Start Dictation", 101 "menu.edit.startDictation": "Start Dictation",
70 "menu.edit.startSpeaking": "Start Speaking", 102 "menu.edit.startSpeaking": "Start Speaking",
71 "menu.edit.stopSpeaking": "Stop Speaking", 103 "menu.edit.stopSpeaking": "Stop Speaking",
72 "menu.edit.undo": "Undo", 104 "menu.edit.undo": "පෙරසේ",
73 "menu.file": "File", 105 "menu.file": "ගොනුව",
74 "menu.help": "Help", 106 "menu.help": "උදව්",
75 "menu.help.changelog": "Changelog", 107 "menu.help.changelog": "Changelog",
76 "menu.help.debugInfo": "Copy Debug Information", 108 "menu.help.debugInfo": "Copy Debug Information",
77 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", 109 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.",
78 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information", 110 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information",
111 "menu.help.importExportData": "Import/Export Configuration Data",
79 "menu.help.learnMore": "Learn More", 112 "menu.help.learnMore": "Learn More",
80 "menu.help.privacy": "Privacy Statement", 113 "menu.help.privacy": "Privacy Statement",
81 "menu.help.support": "Support", 114 "menu.help.publishDebugInfo": "Publish Debug Information",
82 "menu.help.tos": "Terms of Service", 115 "menu.help.support": "සහà·à¶º",
83 "menu.services": "Services", 116 "menu.help.tos": "සේවà·à·€à·š නියම",
117 "menu.services": "සේවà·",
84 "menu.services.activatePreviousService": "Activate previous service", 118 "menu.services.activatePreviousService": "Activate previous service",
85 "menu.services.addNewService": "Add New Service", 119 "menu.services.addNewService": "Add New Service...",
86 "menu.services.goHome": "Home", 120 "menu.services.goHome": "මුල",
87 "menu.services.setNextServiceActive": "Activate next service", 121 "menu.services.setNextServiceActive": "Activate next service",
88 "menu.todos": "Todos", 122 "menu.todos": "Todos",
89 "menu.todos.enableTodos": "Enable Todos", 123 "menu.todos.enableTodos": "Enable Todos",
90 "menu.view": "View", 124 "menu.view": "දකින්න",
91 "menu.view.reloadFerdi": "Reload Ferdi", 125 "menu.view.back": "ආපසු",
92 "menu.view.reloadService": "Reload Service", 126 "menu.view.forward": "Forward",
127 "menu.view.lockFerdi": "ෆර්ඩි අගුළුලන්න",
128 "menu.view.openQuickSwitch": "Open Quick Switch",
129 "menu.view.reloadFerdi": "ෆර්ඩි යළි පූරණය",
130 "menu.view.reloadService": "සේවà·à·€ යළි පූරණය",
93 "menu.view.reloadTodos": "Reload ToDos", 131 "menu.view.reloadTodos": "Reload ToDos",
94 "menu.view.resetZoom": "Actual Size", 132 "menu.view.resetZoom": "à·ƒà·à¶¶à·‘ ප්â€à¶»à¶¸à·à¶«à¶º",
133 "menu.view.toggleDarkMode": "Toggle Dark Mode",
95 "menu.view.toggleDevTools": "Toggle Developer Tools", 134 "menu.view.toggleDevTools": "Toggle Developer Tools",
96 "menu.view.toggleFullScreen": "Toggle Full Screen", 135 "menu.view.toggleFullScreen": "Toggle Full Screen",
97 "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools", 136 "menu.view.toggleServiceDevTools": "Toggle Service Developer Tools",
@@ -104,192 +143,256 @@
104 "menu.workspaces": "Workspaces", 143 "menu.workspaces": "Workspaces",
105 "menu.workspaces.addNewWorkspace": "Add New Workspace...", 144 "menu.workspaces.addNewWorkspace": "Add New Workspace...",
106 "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer", 145 "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer",
107 "menu.workspaces.defaultWorkspace": "All services", 146 "menu.workspaces.defaultWorkspace": "සියළුම සේවà·",
108 "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer", 147 "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer",
109 "password.email.label": "විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·Š ලිපිනය", 148 "password.email.label": "Email address",
110 "password.headline": "මුරපදය නà·à·€à¶­ සකසන්න ", 149 "password.headline": "Reset password",
111 "password.link.login": "ඔබේ ගිණුමට ඇතුල් වන්න ", 150 "password.link.login": "Sign in to your account",
112 "password.link.signup": "නව නොමිල ගිණුමක් අරඹන්න ", 151 "password.link.signup": "නොමිලේ ගිණුමක් à·ƒà·à¶¯à¶±à·Šà¶±",
113 "password.noUser": "එම විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·Š ලිපිනය යටතේ කිසිදු පරිà·à·“ලකයෙක් නොමà·à¶­ ", 152 "password.noUser": "No user with that email address was found",
114 "password.successInfo": "කරුණà·à¶šà¶» ඔබේ විද්â€à¶ºà·”ත් තà·à¶´à·‘ල පිරික්සන්න", 153 "password.successInfo": "Your new password was sent to your email address",
115 "premiumFeature.button.upgradeAccount": "Upgrade account", 154 "service.crashHandler.action": "Reload {name}",
116 "pricing.features.accountSync": "Account Synchronisation", 155 "service.crashHandler.autoReload": "Trying to automatically restore {name} in {seconds} seconds",
117 "pricing.features.adFree": "Forever ad-free", 156 "service.crashHandler.headline": "Oh no!",
118 "pricing.features.appDelays": "No Waiting Screens", 157 "service.crashHandler.text": "{name} has caused an error.",
119 "pricing.features.appDelaysEnabled": "Occasional Waiting Screens", 158 "service.disabledHandler.action": "{name} සබල කරන්න",
120 "pricing.features.customWebsites": "Add Custom Websites", 159 "service.disabledHandler.headline": "{name} සබල කර ඇත",
121 "pricing.features.desktopNotifications": "Desktop Notifications", 160 "service.errorHandler.action": "Reload {name}",
122 "pricing.features.onPremise": "On-premise & other Hosted Services", 161 "service.errorHandler.editAction": "{name} සංස්කරණය",
123 "pricing.features.recipes": "Choose from more than 70 Services", 162 "service.errorHandler.headline": "Oh no!",
124 "pricing.features.serviceProxies": "Service Proxies",
125 "pricing.features.spellchecker": "Spellchecker support",
126 "pricing.features.teamManagement": "Team Management",
127 "pricing.features.thirdPartyServices": "Install 3rd party services",
128 "pricing.features.unlimitedServices": "Add unlimited services",
129 "pricing.features.upToSixServices": "Add up to 6 services",
130 "pricing.features.upToThreeServices": "Add up to 3 services",
131 "pricing.features.workspaces": "Workspaces",
132 "service.crashHandler.action": "{name} නà·à·€à¶­ ලබà·à¶œà¶±à·Šà¶±",
133 "service.crashHandler.autoReload": "{name} ස්වයංක්â€à¶»à·“ය ප්â€à¶»à¶­à·’ෂ්ඨà·à¶´à¶±à¶º තවත් තත්පර {seconds}කින් ",
134 "service.crashHandler.headline": "අපොයි!",
135 "service.crashHandler.text": "{name} à·„à·’ දà·à·‚යකි. ",
136 "service.disabledHandler.action": "{name} සක්â€à¶»à·“ය කරන්න",
137 "service.disabledHandler.headline": "{name} අක්â€à¶»à·“යයි.",
138 "service.errorHandler.action": "{name} නà·à·€à¶­ ලබà·à¶œà¶±à·Šà¶±",
139 "service.errorHandler.editAction": "Edit {name}",
140 "service.errorHandler.headline": "අපොයි!",
141 "service.errorHandler.message": "Error", 163 "service.errorHandler.message": "Error",
142 "service.errorHandler.text": "{name} has failed to load.", 164 "service.errorHandler.text": "{name} has failed to load.",
143 "service.webviewLoader.loading": "Loading", 165 "service.webviewLoader.loading": "{service} පූරණය වෙමින්",
144 "services.getStarted": "ආරම්භ කරන්න", 166 "services.getStarted": "පටන් ගන්න",
145 "services.welcome": "ෆ්â€à¶»à·à¶±à·Šà·ƒà·Š වෙත à·ƒà·à¶¯à¶»à¶ºà·™à¶±à·Š පිළිගනිමු", 167 "services.login": "Please login to use Ferdi.",
146 "settings.account.account.editButton": "ගිණුම සකසන්න", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
147 "settings.account.accountType.basic": "මුලික ගිණුම ", 169 "services.serverless": "Use Ferdi without an Account",
148 "settings.account.accountType.premium": "විà·à·šà·‚ ආධà·à¶»à¶šà·à¶» ගිණුම ", 170 "settings.account.account.editButton": "ගිණුම සංස්කරණය",
149 "settings.account.buttonSave": "පà·à¶­à·’කඩ යà·à·€à¶­à·Šà¶šà·à¶½ කිරීම ", 171 "settings.account.accountUnavailable": "Account is unavailable",
150 "settings.account.deleteAccount": "ගිණුම මක෠දමන්න ", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
151 "settings.account.deleteEmailSent": "ගිණුම මක෠දà·à¶¸à·“ම තහවුරු කිරීම සඳහ෠විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·Š පණිවුඩයක් ඔබ වෙත යව෠ඇත. මක෠දà·à¶¸à·“මෙන් පසුව ඔබගේ ගිණුම සහ අනෙකුත් දත්ත නà·à·€à¶­ ලබà·à¶œà¶­ නොහà·à¶šà·’ බව කරුණà·à·€à·™à¶±à·Š සලකන්න.", 173 "settings.account.buttonSave": "පà·à¶­à·’කඩ යà·à·€à¶­à·Šà¶šà·à¶½à¶º",
152 "settings.account.deleteInfo": "ඔබට ෆ්â€à¶»à·à¶±à·Šà·ƒà·Š ගිණුම තවදුරටත් අනවà·à·Šâ€à¶º නම්, ගිණුම සහ ඒ සම්බන්ධ සියලු තොරතුරු මෙහිදී මක෠දà·à¶¸à·’ය à·„à·à¶š.", 174 "settings.account.deleteAccount": "Delete account",
153 "settings.account.headline": "ගිණුම ", 175 "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
176 "settings.account.deleteInfo": "If you don't need your Ferdi account any longer, you can delete your account and all related data here.",
177 "settings.account.headline": "ගිණුම",
154 "settings.account.headlineAccount": "ගිණුමේ තොරතුරු", 178 "settings.account.headlineAccount": "ගිණුමේ තොරතුරු",
155 "settings.account.headlineDangerZone": "භයà·à¶±à¶š කලà·à¶´à¶º ", 179 "settings.account.headlineDangerZone": "Danger Zone",
156 "settings.account.headlineInvoices": "ලදà·à¶´à¶­à·Š ", 180 "settings.account.headlineInvoices": "à·€à·à¶»à·Šà«à·",
157 "settings.account.headlinePassword": "මුරපදය වෙනස් කරන්න", 181 "settings.account.headlinePassword": "මුරපදය වෙනස් කරන්න",
158 "settings.account.headlineProfile": "පà·à¶­à·’කඩ යà·à·€à¶­à·Šà¶šà·à¶½ කරන්න ", 182 "settings.account.headlineProfile": "පà·à¶­à·’කඩ යà·à·€à¶­à·Šà¶šà·à¶½à¶º",
159 "settings.account.successInfo": "Your changes have been saved", 183 "settings.account.successInfo": "Your changes have been saved",
160 "settings.account.tryReloadServices": "Try again", 184 "settings.account.tryReloadServices": "යළි උත්සà·à·„ය",
161 "settings.account.tryReloadUserInfoRequest": "Try again", 185 "settings.account.tryReloadUserInfoRequest": "යළි උත්සà·à·„ය",
162 "settings.account.userInfoRequestFailed": "Could not load user information", 186 "settings.account.userInfoRequestFailed": "Could not load user information",
163 "settings.account.yourLicense": "Your Ferdi License", 187 "settings.account.yourLicense": "ඔබගේ ෆර්ඩි බලපත්â€à¶»à¶º:",
188 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})",
164 "settings.app.buttonClearAllCache": "Clear cache", 189 "settings.app.buttonClearAllCache": "Clear cache",
165 "settings.app.buttonInstallUpdate": "නà·à·€à¶­ අරඹ෠යà·à·€à¶­à·Šà¶šà·à¶½ කරන්න.", 190 "settings.app.buttonInstallUpdate": "Restart & install update",
191 "settings.app.buttonOpenFerdiProfileFolder": "පà·à¶­à·’කඩ බහà·à¶½à·”ම විවෘත",
192 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder",
166 "settings.app.buttonSearchForUpdate": "Check for updates", 193 "settings.app.buttonSearchForUpdate": "Check for updates",
167 "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.", 194 "settings.app.cacheInfo": "Ferdi cache is currently using {size} of disk space.",
168 "settings.app.currentVersion": "Current version:", 195 "settings.app.cacheNotCleared": "Couldn't clear all cache",
169 "settings.app.form.autoLaunchInBackground": "Open in background", 196 "settings.app.closeSettings": "à·ƒà·à¶šà·ƒà·”ම් වසන්න",
170 "settings.app.form.autoLaunchOnStart": "Launch Ferdi on start", 197 "settings.app.currentVersion": "වත්මන් අනුවà·à¶¯à¶º:",
198 "settings.app.form.accentColor": "Accent color",
199 "settings.app.form.adaptableDarkMode": "Synchronize dark mode with my OS's dark mode setting",
200 "settings.app.form.alwaysShowWorkspaces": "Always show workspace drawer",
201 "settings.app.form.autoLaunchInBackground": "පසුබිමෙහි විවෘත කරන්න",
202 "settings.app.form.autoLaunchOnStart": "ආරම්භයේදී ෆර්ඩි දියත්කරන්න",
203 "settings.app.form.automaticUpdates": "යà·à·€à¶­à·Šà¶šà·à¶½ සබල කරන්න",
171 "settings.app.form.beta": "Include beta versions", 204 "settings.app.form.beta": "Include beta versions",
172 "settings.app.form.darkMode": "Join the Dark Side", 205 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events",
206 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray",
207 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi",
208 "settings.app.form.customTodoServer": "Custom Todo Server",
209 "settings.app.form.darkMode": "Enable Dark Mode",
173 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration", 210 "settings.app.form.enableGPUAcceleration": "Enable GPU Acceleration",
211 "settings.app.form.enableGlobalHideShortcut": "Enable Global shortcut to hide Ferdi",
212 "settings.app.form.enableLock": "Enable Password Lock",
213 "settings.app.form.enableLongPressServiceHint": "Enable service shortcut hint on long press",
214 "settings.app.form.enableMenuBar": "Always show Ferdi in Menu Bar",
174 "settings.app.form.enableSpellchecking": "Enable spell checking", 215 "settings.app.form.enableSpellchecking": "Enable spell checking",
175 "settings.app.form.enableSystemTray": "Show Ferdi in system tray", 216 "settings.app.form.enableSystemTray": "Always show Ferdi in System Tray",
176 "settings.app.form.enableTodos": "Enable Ferdi Todos", 217 "settings.app.form.enableTodos": "Enable Ferdi Todos",
218 "settings.app.form.hibernateOnStartup": "Keep services in hibernation on startup",
219 "settings.app.form.hibernationStrategy": "Hibernation strategy",
220 "settings.app.form.iconSize": "Service icon size",
221 "settings.app.form.inactivityLock": "Lock after inactivity",
177 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", 222 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded",
178 "settings.app.form.language": "Language", 223 "settings.app.form.language": "Language",
224 "settings.app.form.lockPassword": "Password",
179 "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray", 225 "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray",
226 "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour",
227 "settings.app.form.notifyTaskBarOnMessage": "Notify TaskBar/Dock on new message",
228 "settings.app.form.passwordToggle": "Password toggle",
229 "settings.app.form.predefinedTodoServer": "Todo Server",
230 "settings.app.form.privateNotifications": "Don't show message content in notifications",
231 "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume",
180 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", 232 "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window",
233 "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb",
234 "settings.app.form.scheduledDNDEnd": "To",
235 "settings.app.form.scheduledDNDStart": "වෙතින්",
236 "settings.app.form.searchEngine": "Search engine",
237 "settings.app.form.sentry": "Send telemetry data",
238 "settings.app.form.serviceRibbonWidth": "Sidebar width",
181 "settings.app.form.showDisabledServices": "Display disabled services tabs", 239 "settings.app.form.showDisabledServices": "Display disabled services tabs",
240 "settings.app.form.showDragArea": "Show draggable area on window",
182 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
183 "settings.app.headlineAdvanced": "Advanced", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "තීරු ගණන",
244 "settings.app.form.splitMode": "Enable Split View Mode",
245 "settings.app.form.startMinimized": "Start minimized",
246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
247 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi",
248 "settings.app.form.useVerticalStyle": "Use horizontal style",
249 "settings.app.form.wakeUpStrategy": "Wake up strategy",
250 "settings.app.headlineAdvanced": "à·€à·à¶©à·’දුර",
184 "settings.app.headlineAppearance": "Appearance", 251 "settings.app.headlineAppearance": "Appearance",
185 "settings.app.headlineGeneral": "General", 252 "settings.app.headlineGeneral": "General",
186 "settings.app.headlineLanguage": "Language", 253 "settings.app.headlineLanguage": "Language",
187 "settings.app.headlineUpdates": "Updates", 254 "settings.app.headlinePrivacy": "රහස්â€à¶ºà¶­à·à·€",
188 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", 255 "settings.app.headlineUpdates": "යà·à·€à¶­à·Šà¶šà·à¶½",
256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
259 "settings.app.lockedPassword": "Password",
260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
189 "settings.app.restartRequired": "Changes require restart", 261 "settings.app.restartRequired": "Changes require restart",
190 "settings.app.subheadlineCache": "Cache", 262 "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.",
263 "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.",
264 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!",
265 "settings.app.spellCheckerLanguageInfo": "Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.",
266 "settings.app.subheadlineCache": "නිහිතය",
267 "settings.app.subheadlineFerdiProfile": "ෆර්ඩි පà·à¶­à·’කඩ",
268 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.",
191 "settings.app.translationHelp": "Help us to translate Ferdi into your language.", 269 "settings.app.translationHelp": "Help us to translate Ferdi into your language.",
270 "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.",
192 "settings.app.updateStatusAvailable": "Update available, downloading...", 271 "settings.app.updateStatusAvailable": "Update available, downloading...",
193 "settings.app.updateStatusSearching": "Is searching for update", 272 "settings.app.updateStatusSearching": "Is searching for update",
194 "settings.app.updateStatusUpToDate": "You are using the latest version of Ferdi", 273 "settings.app.updateStatusUpToDate": "You are using the latest version of Ferdi",
195 "settings.invite.headline": "Invite Friends", 274 "settings.invite.headline": "Invite Friends",
196 "settings.navigation.account": "ගිණුම ", 275 "settings.navigation.account": "ගිණුම",
197 "settings.navigation.availableServices": "Available services", 276 "settings.navigation.availableServices": "තිබෙන සේවà·",
198 "settings.navigation.inviteFriends": "Invite Friends",
199 "settings.navigation.logout": "Logout", 277 "settings.navigation.logout": "Logout",
200 "settings.navigation.team": "Manage Team", 278 "settings.navigation.supportFerdi": "ෆර්ඩි පිළිබඳව",
201 "settings.navigation.yourServices": "Your services", 279 "settings.navigation.team": "කණ්ඩà·à¶ºà¶¸ කළමනà·à¶šà¶»à¶«à¶º",
202 "settings.navigation.yourWorkspaces": "Your workspaces", 280 "settings.navigation.yourServices": "ඔබගේ සේවà·",
203 "settings.recipes.all": "All services", 281 "settings.navigation.yourWorkspaces": "ඔබගේ à·€à·à¶©à¶¶à·’ම්",
204 "settings.recipes.custom": "Custom Services", 282 "settings.recipes.all": "සියළුම සේවà·",
283 "settings.recipes.custom": "අභිරුචි සේවà·",
205 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
206 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
207 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
208 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
209 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
210 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
211 "settings.recipes.headline": "Available services", 290 "settings.recipes.headline": "තිබෙන සේවà·",
212 "settings.recipes.missingService": "Missing a service?", 291 "settings.recipes.missingService": "Missing a service?",
213 "settings.recipes.nothingFound": "Sorry, but no service matched your search term. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 292 "settings.recipes.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.",
214 "settings.recipes.servicesSuccessfulAddedInfo": "Service successfully added", 293 "settings.recipes.servicesSuccessfulAddedInfo": "Service successfully added",
215 "settings.searchService": "Search service", 294 "settings.searchService": "Search service",
216 "settings.service.error.goBack": "Back to services", 295 "settings.service.error.goBack": "Back to services",
217 "settings.service.error.headline": "Error", 296 "settings.service.error.headline": "Error",
218 "settings.service.error.message": "Could not load service recipe.", 297 "settings.service.error.message": "Could not load service recipe.",
219 "settings.service.form.addServiceHeadline": "Add {name}", 298 "settings.service.form.addServiceHeadline": "Add {name}",
220 "settings.service.form.availableServices": "Available services", 299 "settings.service.form.availableServices": "තිබෙන සේවà·",
221 "settings.service.form.customUrl": "Custom server", 300 "settings.service.form.customUrl": "අභිරුචි සේවà·à¶¯à·à¶ºà¶šà¶º",
222 "settings.service.form.customUrlPremiumInfo": "To add self hosted services, you need a Ferdi Premium Supporter Account.",
223 "settings.service.form.customUrlUpgradeAccount": "Upgrade your account",
224 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.", 301 "settings.service.form.customUrlValidationError": "Could not validate custom {name} server.",
302 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness",
303 "settings.service.form.darkReaderContrast": "Dark Reader Contrast",
304 "settings.service.form.darkReaderSepia": "Dark Reader Sepia",
225 "settings.service.form.deleteButton": "Delete service", 305 "settings.service.form.deleteButton": "Delete service",
226 "settings.service.form.editServiceHeadline": "Edit {name}", 306 "settings.service.form.editServiceHeadline": "{name} සංස්කරණය",
227 "settings.service.form.enableAudio": "Enable audio", 307 "settings.service.form.enableAudio": "à·à·Šâ€à¶»à·€à·Šâ€à¶º සබල කරන්න",
228 "settings.service.form.enableBadge": "Show unread message badges", 308 "settings.service.form.enableBadge": "Show unread message badges",
229 "settings.service.form.enableDarkMode": "Enable Dark Mode", 309 "settings.service.form.enableDarkMode": "Enable Dark Mode",
230 "settings.service.form.enableHibernation": "Enable hibernation", 310 "settings.service.form.enableHibernation": "Enable hibernation",
231 "settings.service.form.enableNotification": "Enable notifications", 311 "settings.service.form.enableNotification": "Enable notifications",
232 "settings.service.form.enableService": "Enable service", 312 "settings.service.form.enableService": "සේවà·à·€ සබල කරන්න",
313 "settings.service.form.enableWakeUp": "Enable wake up",
233 "settings.service.form.headlineBadges": "Unread message badges", 314 "settings.service.form.headlineBadges": "Unread message badges",
315 "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings",
234 "settings.service.form.headlineGeneral": "General", 316 "settings.service.form.headlineGeneral": "General",
235 "settings.service.form.headlineNotifications": "Notifications", 317 "settings.service.form.headlineNotifications": "දà·à¶±à·”ම්දීම්",
236 "settings.service.form.icon": "Custom icon", 318 "settings.service.form.icon": "අභිරුචි නිරූපකය",
237 "settings.service.form.iconDelete": "Delete", 319 "settings.service.form.iconDelete": "Delete",
238 "settings.service.form.iconUpload": "Drop your image, or click here", 320 "settings.service.form.iconUpload": "Drop your image, or click here",
239 "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...", 321 "settings.service.form.indirectMessageInfo": "You will be notified about all new messages in a channel, not just @username, @channel, @here, ...",
240 "settings.service.form.indirectMessages": "Show message badge for all new messages", 322 "settings.service.form.indirectMessages": "Show message badge for all new messages",
241 "settings.service.form.isHibernatedEnabledInfo": "When enabled, a service will be shut down after a period of time to save system resources.", 323 "settings.service.form.isHibernatedEnabledInfo": "When enabled, a service will be shut down after a period of time to save system resources.",
242 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted", 324 "settings.service.form.isMutedInfo": "When disabled, all notification sounds and audio playback are muted",
243 "settings.service.form.name": "නම", 325 "settings.service.form.name": "Name",
326 "settings.service.form.onlyShowFavoritesInUnreadCount": "Only show Favorites in unread count",
327 "settings.service.form.openDarkmodeCss": "Open darkmode.css",
328 "settings.service.form.openUserCss": "user.css විවෘත කරන්න",
329 "settings.service.form.openUserJs": "user.js විවෘත කරන්න",
244 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings", 330 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings",
245 "settings.service.form.proxy.host": "Proxy Host/IP", 331 "settings.service.form.proxy.host": "Proxy Host/IP",
246 "settings.service.form.proxy.info": "Proxy settings will not synced with the Ferdi servers.", 332 "settings.service.form.proxy.info": "Proxy settings will not be synchronized with the Ferdi servers.",
247 "settings.service.form.proxy.isEnabled": "Use Proxy", 333 "settings.service.form.proxy.isEnabled": "Use Proxy",
248 "settings.service.form.proxy.password": "Password (optional)", 334 "settings.service.form.proxy.password": "Password (optional)",
249 "settings.service.form.proxy.port": "Port", 335 "settings.service.form.proxy.port": "Port",
250 "settings.service.form.proxy.restartInfo": "Please restart Ferdi after changing proxy Settings.", 336 "settings.service.form.proxy.restartInfo": "Please restart Ferdi after changing proxy Settings.",
251 "settings.service.form.proxy.user": "User (optional)", 337 "settings.service.form.proxy.user": "User (optional)",
338 "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.",
252 "settings.service.form.saveButton": "Save service", 339 "settings.service.form.saveButton": "Save service",
253 "settings.service.form.tabHosted": "Hosted", 340 "settings.service.form.tabHosted": "Hosted",
254 "settings.service.form.tabOnPremise": "Self hosted â­ï¸", 341 "settings.service.form.tabOnPremise": "Self hosted â­ï¸",
255 "settings.service.form.team": "Team", 342 "settings.service.form.team": "කණ්ඩà·à¶ºà¶¸",
256 "settings.service.form.useHostedService": "Use the hosted {name} service.", 343 "settings.service.form.useHostedService": "Use the hosted {name} service.",
257 "settings.service.form.yourServices": "Your services", 344 "settings.service.form.yourServices": "ඔබගේ සේවà·",
258 "settings.services.deletedInfo": "Service has been deleted", 345 "settings.services.deletedInfo": "Service has been deleted",
259 "settings.services.discoverServices": "Discover services", 346 "settings.services.discoverServices": "සේව෠ගවේෂණය",
260 "settings.services.headline": "Your services", 347 "settings.services.headline": "ඔබගේ සේවà·",
261 "settings.services.noServicesAdded": "You haven't added any services yet.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
262 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
263 "settings.services.tooltip.isDisabled": "Service is disabled", 351 "settings.services.tooltip.isDisabled": "සේවà·à·€ අබල කර ඇත",
264 "settings.services.tooltip.isMuted": "All sounds are muted", 352 "settings.services.tooltip.isMuted": "සියළුම à·à¶¶à·Šà¶¯ නිහඬයි",
265 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 353 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
266 "settings.services.updatedInfo": "Your changes have been saved", 354 "settings.services.updatedInfo": "Your changes have been saved",
267 "settings.team.contentHeadline": "Franz for Teams", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
268 "settings.team.copy": "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!", 356 "settings.supportFerdi.headline": "ෆර්ඩි පිළිබඳව",
269 "settings.team.headline": "Team", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
270 "settings.team.intro": "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.", 358 "settings.supportFerdi.textDonationAnd": "සහ",
359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
360 "settings.supportFerdi.textGitHubSponsors": "GitHub Sponsors",
361 "settings.supportFerdi.textListContributors": "Full list of contributors",
362 "settings.supportFerdi.textListContributorsHere": "here",
363 "settings.supportFerdi.textOpenCollective": "Open Collective",
364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
365 "settings.supportFerdi.textSupportWelcomeHere": "here",
366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
367 "settings.team.contentHeadline": "Franz Team Management",
368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
369 "settings.team.headline": "කණ්ඩà·à¶ºà¶¸",
370 "settings.team.intro": "You are currently using Franz Servers, which is why you have access to Team Management.",
271 "settings.team.manageAction": "Manage your Team on meetfranz.com", 371 "settings.team.manageAction": "Manage your Team on meetfranz.com",
272 "settings.team.upgradeAction": "Upgrade your Account", 372 "settings.team.teamsUnavailable": "Teams are unavailable",
273 "settings.user.form.accountType.company": "Company", 373 "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.",
374 "settings.user.form.accountType.company": "සමà·à¶œà¶¸",
274 "settings.user.form.accountType.individual": "Individual", 375 "settings.user.form.accountType.individual": "Individual",
275 "settings.user.form.accountType.label": "Account type", 376 "settings.user.form.accountType.label": "ගිණුමේ වර්ගය",
276 "settings.user.form.accountType.non-profit": "Non-Profit", 377 "settings.user.form.accountType.non-profit": "Non-Profit",
277 "settings.user.form.currentPassword": "Current password", 378 "settings.user.form.currentPassword": "වත්මන් මුරපදය",
278 "settings.user.form.email": "Email", 379 "settings.user.form.email": "වි-තà·à¶´à·‘ල",
279 "settings.user.form.firstname": "First Name", 380 "settings.user.form.firstname": "පළමු නම",
280 "settings.user.form.lastname": "Last Name", 381 "settings.user.form.lastname": "අවසà·à¶± නම",
281 "settings.user.form.newPassword": "New password", 382 "settings.user.form.newPassword": "නව මුරපදය",
282 "settings.workspace.add.form.name": "නම", 383 "settings.workspace.add.form.name": "Name",
283 "settings.workspace.add.form.submitButton": "Create workspace", 384 "settings.workspace.add.form.submitButton": "à·€à·à¶©à¶¶à·’ම à·ƒà·à¶¯à¶±à·Šà¶±",
284 "settings.workspace.form.buttonDelete": "Delete workspace", 385 "settings.workspace.form.buttonDelete": "Delete workspace",
285 "settings.workspace.form.buttonSave": "Save workspace", 386 "settings.workspace.form.buttonSave": "à·€à·à¶©à¶¶à·’ම සුරකින්න",
286 "settings.workspace.form.name": "නම", 387 "settings.workspace.form.keepLoaded": "Keep this workspace loaded*",
388 "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.",
389 "settings.workspace.form.name": "Name",
287 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace", 390 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace",
288 "settings.workspace.form.yourWorkspaces": "Your workspaces", 391 "settings.workspace.form.yourWorkspaces": "ඔබගේ à·€à·à¶©à¶¶à·’ම්",
289 "settings.workspaces.deletedInfo": "Workspace has been deleted", 392 "settings.workspaces.deletedInfo": "Workspace has been deleted",
290 "settings.workspaces.headline": "Your workspaces", 393 "settings.workspaces.headline": "ඔබගේ à·€à·à¶©à¶¶à·’ම්",
291 "settings.workspaces.noWorkspacesAdded": "You haven't added any workspaces yet.", 394 "settings.workspaces.noWorkspacesAdded": "You haven't created any workspaces yet.",
292 "settings.workspaces.tryReloadWorkspaces": "Try again", 395 "settings.workspaces.tryReloadWorkspaces": "යළි උත්සà·à·„ය",
293 "settings.workspaces.updatedInfo": "Your changes have been saved", 396 "settings.workspaces.updatedInfo": "Your changes have been saved",
294 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces", 397 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces",
295 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", 398 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.",
@@ -300,48 +403,52 @@
300 "sidebar.addNewService": "Add new service", 403 "sidebar.addNewService": "Add new service",
301 "sidebar.closeTodosDrawer": "Close Ferdi Todos", 404 "sidebar.closeTodosDrawer": "Close Ferdi Todos",
302 "sidebar.closeWorkspaceDrawer": "Close workspace drawer", 405 "sidebar.closeWorkspaceDrawer": "Close workspace drawer",
406 "sidebar.lockFerdi": "ෆර්ඩි අගුළුලන්න",
303 "sidebar.muteApp": "Disable notifications & audio", 407 "sidebar.muteApp": "Disable notifications & audio",
304 "sidebar.openTodosDrawer": "Open Ferdi Todos", 408 "sidebar.openTodosDrawer": "Open Ferdi Todos",
305 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 409 "sidebar.openWorkspaceDrawer": "Open workspace drawer",
306 "sidebar.unmuteApp": "Enable notifications & audio", 410 "sidebar.unmuteApp": "Enable notifications & audio",
307 "signup.email.label": "Email address", 411 "signup.email.label": "Email address",
308 "signup.emailDuplicate": "A user with that email address already exists", 412 "signup.emailDuplicate": "A user with that email address already exists",
309 "signup.firstname.label": "First Name", 413 "signup.firstname.label": "පළමු නම",
310 "signup.headline": "Sign up", 414 "signup.headline": "Sign up",
311 "signup.lastname.label": "Last Name", 415 "signup.lastname.label": "අවසà·à¶± නම",
312 "signup.legal.info": "By creating a Ferdi account you accept the", 416 "signup.legal.info": "By creating a Ferdi account you accept the",
313 "signup.legal.privacy": "Privacy Statement", 417 "signup.legal.privacy": "Privacy Statement",
314 "signup.legal.terms": "Terms of service", 418 "signup.legal.terms": "Terms of service",
315 "signup.link.login": "Already have an account, sign in?", 419 "signup.link.login": "Already have an account, sign in?",
316 "signup.password.label": "මුරපදය", 420 "signup.password.label": "Password",
317 "signup.submit.label": "Create account", 421 "signup.submit.label": "Create account",
422 "tabs.item.confirmDeleteService": "Do you really want to delete the {serviceName} service?",
318 "tabs.item.deleteService": "Delete service", 423 "tabs.item.deleteService": "Delete service",
319 "tabs.item.disableAudio": "Disable audio", 424 "tabs.item.disableAudio": "à·à·Šâ€à¶»à·€à·Šâ€à¶º අබල කරන්න",
320 "tabs.item.disableNotifications": "Disable notifications", 425 "tabs.item.disableDarkMode": "Disable Dark mode",
321 "tabs.item.disableService": "Disable service", 426 "tabs.item.disableNotifications": "දà·à¶±à·”ම්දීම් අබල කරන්න",
322 "tabs.item.enableAudio": "Enable audio", 427 "tabs.item.disableService": "සේවà·à·€ අබල කරන්න",
428 "tabs.item.enableAudio": "à·à·Šâ€à¶»à·€à·Šâ€à¶º සබල කරන්න",
429 "tabs.item.enableDarkMode": "Enable Dark mode",
323 "tabs.item.enableNotification": "Enable notifications", 430 "tabs.item.enableNotification": "Enable notifications",
324 "tabs.item.enableService": "Enable service", 431 "tabs.item.enableService": "සේවà·à·€ සබල කරන්න",
325 "tabs.item.reload": "Reload", 432 "tabs.item.hibernateService": "Hibernate service",
433 "tabs.item.reload": "නà·à·€à¶­ පූරණය",
434 "tabs.item.wakeUpService": "Wake up service",
326 "validation.email": "{field} is not valid", 435 "validation.email": "{field} is not valid",
327 "validation.minLength": "{field} should be at least {length} characters long", 436 "validation.minLength": "{field} should be at least {length} characters long",
328 "validation.oneRequired": "At least one is required", 437 "validation.oneRequired": "At least one is required",
329 "validation.required": "{field} is required", 438 "validation.required": "{field} is required",
330 "validation.url": "{field} is not a valid URL", 439 "validation.url": "{field} is not a valid URL",
331 "webControls.back": "Back", 440 "webControls.back": "ආපසු",
332 "webControls.forward": "Forward", 441 "webControls.forward": "Forward",
333 "webControls.goHome": "Home", 442 "webControls.goHome": "මුල",
334 "webControls.openInBrowser": "Open in Browser", 443 "webControls.openInBrowser": "Open in Browser",
335 "webControls.reload": "Reload", 444 "webControls.reload": "නà·à·€à¶­ පූරණය",
336 "welcome.loginButton": "Login to your account", 445 "welcome.loginButton": "Login to your account",
337 "welcome.signupButton": "Create a free account", 446 "welcome.signupButton": "නොමිලේ ගිණුමක් à·ƒà·à¶¯à¶±à·Šà¶±",
338 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", 447 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace",
339 "workspaceDrawer.allServices": "All services", 448 "workspaceDrawer.allServices": "සියළුම සේවà·",
340 "workspaceDrawer.headline": "Workspaces", 449 "workspaceDrawer.headline": "Workspaces",
341 "workspaceDrawer.item.contextMenuEdit": "edit", 450 "workspaceDrawer.item.contextMenuEdit": "edit",
342 "workspaceDrawer.item.noServicesAddedYet": "No services added yet", 451 "workspaceDrawer.item.noServicesAddedYet": "No services added yet",
343 "workspaceDrawer.premiumCtaButtonLabel": "Create your first workspace",
344 "workspaceDrawer.reactivatePremiumAccountLabel": "Reactivate premium account",
345 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", 452 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>",
346 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", 453 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings",
347 "workspaces.switchingIndicator.switchingTo": "Switching to" 454 "workspaces.switchingIndicator.switchingTo": "Switching to"
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json
index 80bd1c69d..c7cd1929b 100644
--- a/src/i18n/locales/sk.json
+++ b/src/i18n/locales/sk.json
@@ -1,59 +1,59 @@
1{ 1{
2 "app.errorHandler.action": "Obnoviť", 2 "app.errorHandler.action": "Obnoviť",
3 "app.errorHandler.headline": "Something went wrong.", 3 "app.errorHandler.headline": "NieÄo sa pokazilo.",
4 "changeserver.customServerLabel": "Vlastný server", 4 "changeserver.customServerLabel": "Vlastný server",
5 "changeserver.headline": "Zmeniť server", 5 "changeserver.headline": "Zmeniť server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
7 "changeserver.urlError": "Zadajte platnú adresu URL", 7 "changeserver.urlError": "Zadajte platnú adresu URL",
8 "changeserver.warning": "Extra settings offered by Ferdi will not be saved", 8 "changeserver.warning": "Extra nastavenia z Ferdi nebudú uložené",
9 "connectionLostBanner.cta": "Obnoviť službu", 9 "connectionLostBanner.cta": "Obnoviť službu",
10 "connectionLostBanner.informationLink": "ÄŒo sa stalo?", 10 "connectionLostBanner.informationLink": "ÄŒo sa stalo?",
11 "connectionLostBanner.message": "Oh nie! Ferdi stratil pripojenie k {name}.", 11 "connectionLostBanner.message": "Och nie! Ferdi stratil pripojenie k {name}.",
12 "feature.basicAuth.signIn": "Sign In", 12 "feature.basicAuth.signIn": "Prihlásiť sa",
13 "feature.nightlyBuilds.activate": "Aktivovať", 13 "feature.nightlyBuilds.activate": "Aktivovať",
14 "feature.nightlyBuilds.info": "Tzv. \"noÄné verzie\" sú vysoko experimentálne verzie Ferdi, ktoré môžu obsahovaÅ¥ nedoladená alebo nedokonÄené funkcie. Tieto verzie sú používané predovÅ¡etkým vývojármi, aby otestovali novo-vyvíjané funkcie a spôsob, akým sa budú správaÅ¥ vo finálnej verzii. Ak neviete Äo robíte, navrhujeme neaktivovaÅ¥ tieto experimentálne verzie.", 14 "feature.nightlyBuilds.info": "Tzv. \"noÄné verzie\" sú vysoko experimentálne verzie Ferdi, ktoré môžu obsahovaÅ¥ nedoladená alebo nedokonÄené funkcie. Tieto verzie sú používané predovÅ¡etkým vývojármi, aby otestovali novo-vyvíjané funkcie a spôsob, akým sa budú správaÅ¥ vo finálnej verzii. Ak neviete Äo robíte, navrhujeme neaktivovaÅ¥ tieto experimentálne verzie.",
15 "feature.nightlyBuilds.title": "Vývojárske verzie", 15 "feature.nightlyBuilds.title": "Vývojárske verzie",
16 "feature.publishDebugInfo.error": "There was an error while trying to publish the debug information. Please try again later or view the console for more information.", 16 "feature.publishDebugInfo.error": "Pri zverejňovaní debug informácií nastala chyba. Skúste to neskôr alebo si zobrazte konzolu pre viac informácií.",
17 "feature.publishDebugInfo.info": "Publishing your debug information helps us find issues and errors in Ferdi. By publishing your debug information you accept Ferdi Debugger's privacy policy and terms of service", 17 "feature.publishDebugInfo.info": "Zverejnenie debug informácií nám pomáha identifikovať problémy a chyby vo Ferdi. Zverejnením týchto informácií akceptujete zásady ochrany osobných údajov a podmienky služby Ferdi",
18 "feature.publishDebugInfo.privacy": "Ochrana osobných údajov", 18 "feature.publishDebugInfo.privacy": "Ochrana osobných údajov",
19 "feature.publishDebugInfo.publish": "Prijať a publikovať", 19 "feature.publishDebugInfo.publish": "Prijať a zverejniť",
20 "feature.publishDebugInfo.published": "Your debug log was published and is now availible at", 20 "feature.publishDebugInfo.published": "Vaše debug informácie boli zverejnené a teraz sú dostupné na",
21 "feature.publishDebugInfo.terms": "Podmienky služby", 21 "feature.publishDebugInfo.terms": "Podmienky služby",
22 "feature.publishDebugInfo.title": "Publish debug information", 22 "feature.publishDebugInfo.title": "Zverejniť debug informácie",
23 "feature.quickSwitch.info": "Select a service with TAB, ↑ and ↓. Open a service with ENTER.", 23 "feature.quickSwitch.info": "Vyberte službu s TAB, ↑ a ↓. Otvorte službu s ENTER.",
24 "feature.quickSwitch.search": "Hľadať...", 24 "feature.quickSwitch.search": "Hľadať...",
25 "feature.quickSwitch.title": "QuickSwitch", 25 "feature.quickSwitch.title": "Rýchle prepnutie",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 26 "global.api.unhealthy": "Nedá sa pripojiť k online službám Ferdi",
27 "global.cancel": "Cancel", 27 "global.cancel": "Zrušiť",
28 "global.edit": "Upraviť", 28 "global.edit": "Upraviť",
29 "global.no": "No", 29 "global.no": "Nie",
30 "global.notConnectedToTheInternet": "Nie ste pripojení k internetu.", 30 "global.notConnectedToTheInternet": "Nie ste pripojení k internetu.",
31 "global.ok": "Ok", 31 "global.ok": "OK",
32 "global.quit": "Quit", 32 "global.quit": "UkonÄiÅ¥",
33 "global.quitConfirmation": "Do you really want to quit Ferdi?", 33 "global.quitConfirmation": "Naozaj chceÅ¡ ukonÄiÅ¥ Ferdi?",
34 "global.save": "Save", 34 "global.save": "Uložiť",
35 "global.settings": "Settings", 35 "global.settings": "Nastavenia",
36 "global.spellchecker.useDefault": "Použiť predvolené nastavenie systému ({default})", 36 "global.spellchecker.useDefault": "Použiť predvolené nastavenie systému ({default})",
37 "global.spellchecking.autodetect": "Automaticky rozpoznať jazyk", 37 "global.spellchecking.autodetect": "Automaticky rozpoznať jazyk",
38 "global.spellchecking.autodetect.short": "Automatický", 38 "global.spellchecking.autodetect.short": "Automatický",
39 "global.spellchecking.language": "Jazyk kontroly pravopisu", 39 "global.spellchecking.language": "Jazyk kontroly pravopisu",
40 "global.submit": "Submit", 40 "global.submit": "Potvrdiť",
41 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 41 "global.userAgentHelp": "Použite 'https://whatmyuseragent.com/' (na zobrazenie) alebo 'https://developers.whatismybrowser.com/useragents/explore/' (na výber) používateľského agenta a vložte ho sem.",
42 "global.userAgentPref": "User Agent", 42 "global.userAgentPref": "User Agent",
43 "global.yes": "Yes", 43 "global.yes": "Ãno",
44 "import.headline": "Importovať vaše služby z Ferdi 4", 44 "import.headline": "Importovať vaše služby z Ferdi 4",
45 "import.notSupportedHeadline": "Služby zatiaľ nie sú podporované vo verzii Ferdi 5", 45 "import.notSupportedHeadline": "Služby zatiaľ nie sú podporované vo verzii Ferdi 5",
46 "import.skip.label": "Chcem pridaÅ¥ služby ruÄne", 46 "import.skip.label": "Chcem pridaÅ¥ služby ruÄne",
47 "import.submit.label": "Import {count} services", 47 "import.submit.label": "Importuj {count} služieb",
48 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", 48 "infobar.authRequestFailed": "Pri pokuse o vykonanie overenej požiadavky došlo k chybám. Ak táto chyba pretrváva, skúste sa odhlásiť a znova prihlásiť.",
49 "infobar.buttonChangelog": "What is new?", 49 "infobar.buttonChangelog": "Čo je nové?",
50 "infobar.buttonInstallUpdate": "Reštartovať a nainštalovať aktualizáciu", 50 "infobar.buttonInstallUpdate": "Reštartovať a nainštalovať aktualizáciu",
51 "infobar.buttonReloadServices": "Obnoviť služby", 51 "infobar.buttonReloadServices": "Obnoviť služby",
52 "infobar.hide": "Skryť", 52 "infobar.hide": "Skryť",
53 "infobar.requiredRequestsFailed": "Nie je možné naÄítaÅ¥ služby a informácie o používateľovi", 53 "infobar.requiredRequestsFailed": "Nie je možné naÄítaÅ¥ služby a informácie o používateľovi",
54 "infobar.servicesUpdated": "Vaše služby boli aktualizované.", 54 "infobar.servicesUpdated": "Vaše služby boli aktualizované.",
55 "infobar.updateAvailable": "Je k dispozícii nová aktualizácia Ferdi.", 55 "infobar.updateAvailable": "Je k dispozícii nová aktualizácia Ferdi.",
56 "infobox.dismiss": "Dismiss", 56 "infobox.dismiss": "Zrušiť",
57 "invite.email.label": "E-mailová adresa", 57 "invite.email.label": "E-mailová adresa",
58 "invite.headline.friends": "Pozvite troch vašich priateľov alebo kolegov", 58 "invite.headline.friends": "Pozvite troch vašich priateľov alebo kolegov",
59 "invite.name.label": "Meno", 59 "invite.name.label": "Meno",
@@ -61,97 +61,96 @@
61 "invite.submit.label": "Poslať pozvánky", 61 "invite.submit.label": "Poslať pozvánky",
62 "invite.successInfo": "Pozvánky boli úspešne odoslané", 62 "invite.successInfo": "Pozvánky boli úspešne odoslané",
63 "locked.headline": "Zamknuté", 63 "locked.headline": "Zamknuté",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.", 64 "locked.invalidCredentials": "Heslo je nesprávne",
65 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Heslo", 65 "locked.password.label": "Heslo",
67 "locked.submit.label": "Odomknúť", 66 "locked.submit.label": "Odomknúť",
68 "locked.touchId": "Unlock with Touch ID", 67 "locked.touchId": "Odomknúť s Touch ID",
69 "locked.touchIdPrompt": "unlock via Touch ID", 68 "locked.touchIdPrompt": "odomknúť s Touch ID",
70 "locked.unlockWithPassword": "Unlock with Password", 69 "locked.unlockWithPassword": "Odomknúť heslom",
71 "login.changeServer": "Zmeniť server", 70 "login.changeServer": "Zmeniť server",
72 "login.customServerQuestion": "Using a custom Ferdi server?", 71 "login.customServerQuestion": "Using a custom Ferdi server?",
73 "login.customServerSuggestion": "Try importing your Franz account", 72 "login.customServerSuggestion": "Try importing your Franz account",
74 "login.email.label": "E-mailová adresa", 73 "login.email.label": "E-mailová adresa",
75 "login.headline": "Prihlásiť sa", 74 "login.headline": "Prihlásiť sa",
76 "login.invalidCredentials": "E-mail alebo heslo nesúhlasia", 75 "login.invalidCredentials": "E-mail alebo heslo nesúhlasia",
77 "login.link.password": "Reset password", 76 "login.link.password": "Obnoviť heslo",
78 "login.link.signup": "VytvoriÅ¥ používateľský úÄet zdarma", 77 "login.link.signup": "VytvoriÅ¥ používateľský úÄet zdarma",
79 "login.password.label": "Heslo", 78 "login.password.label": "Heslo",
80 "login.serverLogout": "Vaša relácia vypršala, prihláste sa prosím znovu.", 79 "login.serverLogout": "Vaša relácia vypršala, prihláste sa prosím znovu.",
81 "login.submit.label": "Prihlásiť sa", 80 "login.submit.label": "Prihlásiť sa",
82 "login.tokenExpired": "Vaša relácia vypršala, prihláste sa prosím znovu.", 81 "login.tokenExpired": "Vaša relácia vypršala, prihláste sa prosím znovu.",
83 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 82 "menu.Todoss.closeTodosDrawer": "Zatvoriť zásuvku Todos",
84 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 83 "menu.Todoss.openTodosDrawer": "Otvoriť zásuvku Todos",
85 "menu.app.about": "O aplikácii", 84 "menu.app.about": "O aplikácii",
86 "menu.app.autohideMenuBar": "Auto-hide menu bar", 85 "menu.app.autohideMenuBar": "Automaticky skrývať panel s ponukami",
87 "menu.app.checkForUpdates": "Skontrolovať aktualizácie", 86 "menu.app.checkForUpdates": "Skontrolovať aktualizácie",
88 "menu.app.hide": "Skryť", 87 "menu.app.hide": "Skryť",
89 "menu.app.hideOthers": "Hide Others", 88 "menu.app.hideOthers": "Skryť ostatné",
90 "menu.app.unhide": "Unhide", 89 "menu.app.unhide": "Odkryť",
91 "menu.edit": "Upraviť", 90 "menu.edit": "Upraviť",
92 "menu.edit.copy": "Copy", 91 "menu.edit.copy": "Kopírovať",
93 "menu.edit.cut": "Cut", 92 "menu.edit.cut": "Vystrihnúť",
94 "menu.edit.delete": "Zmazať", 93 "menu.edit.delete": "Zmazať",
95 "menu.edit.emojiSymbols": "Emoji a symboly", 94 "menu.edit.emojiSymbols": "Emoji a symboly",
96 "menu.edit.findInPage": "Find in Page", 95 "menu.edit.findInPage": "Nájsť na stránke",
97 "menu.edit.paste": "Paste", 96 "menu.edit.paste": "Vložiť",
98 "menu.edit.pasteAndMatchStyle": "Paste And Match Style", 97 "menu.edit.pasteAndMatchStyle": "Vložiť s prevzatím jestvujúceho štýlu",
99 "menu.edit.redo": "Redo", 98 "menu.edit.redo": "Znovu",
100 "menu.edit.selectAll": "Select All", 99 "menu.edit.selectAll": "Vybrať všetko",
101 "menu.edit.speech": "Rozprávanie", 100 "menu.edit.speech": "Rozprávanie",
102 "menu.edit.startDictation": "ZaÄaÅ¥ diktovanie", 101 "menu.edit.startDictation": "ZaÄaÅ¥ diktovanie",
103 "menu.edit.startSpeaking": "ZaÄaÅ¥ rozprávanie", 102 "menu.edit.startSpeaking": "ZaÄaÅ¥ rozprávanie",
104 "menu.edit.stopSpeaking": "Zastaviť rozprávanie", 103 "menu.edit.stopSpeaking": "Zastaviť rozprávanie",
105 "menu.edit.undo": "Undo", 104 "menu.edit.undo": "Vrátiť späť",
106 "menu.file": "Súbor", 105 "menu.file": "Súbor",
107 "menu.help": "Help", 106 "menu.help": "Pomocník",
108 "menu.help.changelog": "Záznam zmien", 107 "menu.help.changelog": "Záznam zmien",
109 "menu.help.debugInfo": "Copy Debug Information", 108 "menu.help.debugInfo": "Kopírovať debug informácie",
110 "menu.help.debugInfoCopiedBody": "Your Debug Information has been copied to your clipboard.", 109 "menu.help.debugInfoCopiedBody": "Vaše debug informácie boli uložené do schránky.",
111 "menu.help.debugInfoCopiedHeadline": "Ferdi Debug Information", 110 "menu.help.debugInfoCopiedHeadline": "Debug informácie Ferdi",
112 "menu.help.importExportData": "Import/Export Configuration Data", 111 "menu.help.importExportData": "Import/Export konfigurácie",
113 "menu.help.learnMore": "Zistiť viac", 112 "menu.help.learnMore": "Zistiť viac",
114 "menu.help.privacy": "Vyhlásenie o ochrane súkromia", 113 "menu.help.privacy": "Vyhlásenie o ochrane súkromia",
115 "menu.help.publishDebugInfo": "Publish Debug Information", 114 "menu.help.publishDebugInfo": "Zverejniť debug informácie",
116 "menu.help.support": "Podpora", 115 "menu.help.support": "Podpora",
117 "menu.help.tos": "Podmienky použitia", 116 "menu.help.tos": "Podmienky použitia",
118 "menu.services": "Služby", 117 "menu.services": "Služby",
119 "menu.services.activatePreviousService": "Activate previous service", 118 "menu.services.activatePreviousService": "Aktivovať predchádzajúcu službu",
120 "menu.services.addNewService": "Add New Service...", 119 "menu.services.addNewService": "Pridať novú službu...",
121 "menu.services.goHome": "Úvod", 120 "menu.services.goHome": "Úvod",
122 "menu.services.setNextServiceActive": "Activate next service", 121 "menu.services.setNextServiceActive": "AktivovaÅ¥ ÄalÅ¡iu službu",
123 "menu.todos": "Todos", 122 "menu.todos": "Todos",
124 "menu.todos.enableTodos": "Enable Todos", 123 "menu.todos.enableTodos": "Povoliť Todos",
125 "menu.view": "Zobraziť", 124 "menu.view": "Zobraziť",
126 "menu.view.back": "Naspäť", 125 "menu.view.back": "Naspäť",
127 "menu.view.forward": "Forward", 126 "menu.view.forward": "Dopredu",
128 "menu.view.lockFerdi": "Uzamknúť Ferdi", 127 "menu.view.lockFerdi": "Uzamknúť Ferdi",
129 "menu.view.openQuickSwitch": "OtvoriÅ¥ prepínaÄ služieb", 128 "menu.view.openQuickSwitch": "OtvoriÅ¥ prepínaÄ služieb",
130 "menu.view.reloadFerdi": "Reload Ferdi", 129 "menu.view.reloadFerdi": "Obnoviť Ferdi",
131 "menu.view.reloadService": "Obnoviť službu", 130 "menu.view.reloadService": "Obnoviť službu",
132 "menu.view.reloadTodos": "Reload ToDos", 131 "menu.view.reloadTodos": "Obnoviť Todos",
133 "menu.view.resetZoom": "Actual Size", 132 "menu.view.resetZoom": "SkutoÄná veľkosÅ¥",
134 "menu.view.toggleDarkMode": "Zapnúť Tmavý Mód", 133 "menu.view.toggleDarkMode": "Zapnúť Tmavý Mód",
135 "menu.view.toggleDevTools": "Prepnúť vývojárske nástroje", 134 "menu.view.toggleDevTools": "Prepnúť vývojárske nástroje",
136 "menu.view.toggleFullScreen": "Toggle Full Screen", 135 "menu.view.toggleFullScreen": "Prepnúť na celú obrazovku",
137 "menu.view.toggleServiceDevTools": "Prepnúť vývojárske nástroje služby", 136 "menu.view.toggleServiceDevTools": "Prepnúť vývojárske nástroje služby",
138 "menu.view.toggleTodosDevTools": "Prepnúť vývojárske nástroje", 137 "menu.view.toggleTodosDevTools": "Prepnúť vývojárske nástroje",
139 "menu.view.zoomIn": "Zoom In", 138 "menu.view.zoomIn": "Priblížiť",
140 "menu.view.zoomOut": "Zoom Out", 139 "menu.view.zoomOut": "Oddialiť",
141 "menu.window": "Window", 140 "menu.window": "Okno",
142 "menu.window.close": "Close", 141 "menu.window.close": "Zatvoriť",
143 "menu.window.minimize": "Minimize", 142 "menu.window.minimize": "Minimalizovať",
144 "menu.workspaces": "Pracovný priestor", 143 "menu.workspaces": "Pracovné priestory",
145 "menu.workspaces.addNewWorkspace": "Pridať nový pracovný priestor ...", 144 "menu.workspaces.addNewWorkspace": "Pridať nový pracovný priestor...",
146 "menu.workspaces.closeWorkspaceDrawer": "Zavrieť workspace záložku", 145 "menu.workspaces.closeWorkspaceDrawer": "Zavrieť zásuvku pracovného priestoru",
147 "menu.workspaces.defaultWorkspace": "Všetky služby", 146 "menu.workspaces.defaultWorkspace": "Všetky služby",
148 "menu.workspaces.openWorkspaceDrawer": "Otvoriť workspace záložku", 147 "menu.workspaces.openWorkspaceDrawer": "Otvoriť zásuvku pracovného priestoru",
149 "password.email.label": "E-mailová adresa", 148 "password.email.label": "E-mailová adresa",
150 "password.headline": "Reset password", 149 "password.headline": "Obnoviť heslo",
151 "password.link.login": "PrihlásiÅ¥ sa do vášho úÄtu", 150 "password.link.login": "PrihlásiÅ¥ sa do vášho úÄtu",
152 "password.link.signup": "VytvoriÅ¥ používateľský úÄet zdarma", 151 "password.link.signup": "VytvoriÅ¥ používateľský úÄet zdarma",
153 "password.noUser": "No user with that email address was found", 152 "password.noUser": "Používateľ s touto e-mailovou adresou nebol nájdený",
154 "password.successInfo": "Your new password was sent to your email address", 153 "password.successInfo": "Nové heslo bolo odoslané na vašu e-mailovú adresu",
155 "service.crashHandler.action": "Znovu naÄítaÅ¥ {name}", 154 "service.crashHandler.action": "Znovu naÄítaÅ¥ {name}",
156 "service.crashHandler.autoReload": "Najbližší pokus o automatické obnovenie {name} o {seconds} sekúnd", 155 "service.crashHandler.autoReload": "Najbližší pokus o automatické obnovenie {name} o {seconds} sekúnd",
157 "service.crashHandler.headline": "Ale nie!", 156 "service.crashHandler.headline": "Ale nie!",
@@ -165,111 +164,110 @@
165 "service.errorHandler.text": "{name} sa nepodarilo naÄítaÅ¥.", 164 "service.errorHandler.text": "{name} sa nepodarilo naÄítaÅ¥.",
166 "service.webviewLoader.loading": "NaÄítavam {service}", 165 "service.webviewLoader.loading": "NaÄítavam {service}",
167 "services.getStarted": "ZaÄíname", 166 "services.getStarted": "ZaÄíname",
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Prosím prihláste sa do Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Server Ferdi môžete zmeniÅ¥ kliknutím na ozubené koliesko v ľavom dolnom rohu. Ak prechádzate (z jedného z hostovaných serverov) na používanie Ferdi bez úÄtu, upozorňujeme vás, že môžete exportovaÅ¥ svoje údaje z tohto servera a následne ich importovaÅ¥ pomocou ponuky Pomocník, aby ste obnovili vÅ¡etky svoje pracovné priestory a nakonfigurované služby!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "PoužívaÅ¥ Ferdi bez úÄtu",
171 "services.welcome": "Vítajte v aplikácii Ferdi", 170 "settings.account.account.editButton": "UpraviÅ¥ úÄet",
172 "settings.account.account.editButton": "Edit account", 171 "settings.account.accountUnavailable": "ÚÄet je nedostupný",
173 "settings.account.accountUnavailable": "Account is unavailable", 172 "settings.account.accountUnavailableInfo": "Používate Ferdi bez úÄtu. Ak chcete používaÅ¥ Ferdi s úÄtom a udržiavaÅ¥ tak vaÅ¡e služby synchronizované medzi zariadeniami, zvoľte prosím server na záložke Nastavenia > PrihlásiÅ¥ sa.",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
175 "settings.account.buttonSave": "Aktualizovať profil", 173 "settings.account.buttonSave": "Aktualizovať profil",
176 "settings.account.deleteAccount": "OdstrániÅ¥ úÄet", 174 "settings.account.deleteAccount": "OdstrániÅ¥ úÄet",
177 "settings.account.deleteEmailSent": "Bol vám odoslaný e-mail s odkazom pre potvrdenie odstránenia vášho úÄtu. Váš úÄet a údaje sa nebudú daÅ¥ obnoviÅ¥!", 175 "settings.account.deleteEmailSent": "Bol vám odoslaný e-mail s odkazom pre potvrdenie odstránenia vášho úÄtu. Váš úÄet a údaje sa nebudú daÅ¥ obnoviÅ¥!",
178 "settings.account.deleteInfo": "Ak už nepotrebujete váš Ferdi úÄet, tu ho môžete zmazaÅ¥ spolu so vÅ¡etkými prislúchajúcimi údajmi.", 176 "settings.account.deleteInfo": "Ak už nepotrebujete váš Ferdi úÄet, tu ho môžete zmazaÅ¥ spolu so vÅ¡etkými prislúchajúcimi údajmi.",
179 "settings.account.headline": "ÚÄet", 177 "settings.account.headline": "ÚÄet",
180 "settings.account.headlineAccount": "Account information", 178 "settings.account.headlineAccount": "Informácie o úÄte",
181 "settings.account.headlineDangerZone": "Danger Zone", 179 "settings.account.headlineDangerZone": "NebezpeÄná zóna",
182 "settings.account.headlineInvoices": "Invoices", 180 "settings.account.headlineInvoices": "Faktúry",
183 "settings.account.headlinePassword": "Change password", 181 "settings.account.headlinePassword": "Zmeniť heslo",
184 "settings.account.headlineProfile": "Aktualizovať profil", 182 "settings.account.headlineProfile": "Aktualizovať profil",
185 "settings.account.successInfo": "Vaše zmeny boli uložené", 183 "settings.account.successInfo": "Vaše zmeny boli uložené",
186 "settings.account.tryReloadServices": "Skúsiť znova", 184 "settings.account.tryReloadServices": "Skúsiť znova",
187 "settings.account.tryReloadUserInfoRequest": "Skúsiť znova", 185 "settings.account.tryReloadUserInfoRequest": "Skúsiť znova",
188 "settings.account.userInfoRequestFailed": "Nebolo možné naÄítaÅ¥ informácie o používateľovi", 186 "settings.account.userInfoRequestFailed": "Nebolo možné naÄítaÅ¥ informácie o používateľovi",
189 "settings.account.yourLicense": "Your Ferdi License:", 187 "settings.account.yourLicense": "Vaša Ferdi licencia:",
190 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})", 188 "settings.app.accentColorInfo": "Zvoľte farbu akcentu vo formáte kompatibilnom s CSS. (Predvolené: {defaultAccentColor})",
191 "settings.app.buttonClearAllCache": "VyÄistiÅ¥ vyrovnávaciu pamäť", 189 "settings.app.buttonClearAllCache": "VyÄistiÅ¥ vyrovnávaciu pamäť",
192 "settings.app.buttonInstallUpdate": "Reštartovať a nainštalovať aktualizáciu", 190 "settings.app.buttonInstallUpdate": "Reštartovať a nainštalovať aktualizáciu",
193 "settings.app.buttonOpenFerdiProfileFolder": "Open Profile folder", 191 "settings.app.buttonOpenFerdiProfileFolder": "OtvoriÅ¥ prieÄinok s profilom",
194 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder", 192 "settings.app.buttonOpenFerdiServiceRecipesFolder": "OtvoriÅ¥ prieÄinok s receptami",
195 "settings.app.buttonSearchForUpdate": "Skontrolovať aktualizácie", 193 "settings.app.buttonSearchForUpdate": "Skontrolovať aktualizácie",
196 "settings.app.cacheInfo": "Vyrovnávacia pamäť Ferdi momentálne používa {size} miesta na disku.", 194 "settings.app.cacheInfo": "Vyrovnávacia pamäť Ferdi momentálne používa {size} miesta na disku.",
197 "settings.app.cacheNotCleared": "Couldn't clear all cache", 195 "settings.app.cacheNotCleared": "Nepodarilo sa vyÄistiÅ¥ cache",
198 "settings.app.closeSettings": "Close settings", 196 "settings.app.closeSettings": "Zavrieť nastavenia",
199 "settings.app.currentVersion": "SúÄasná verzia:", 197 "settings.app.currentVersion": "SúÄasná verzia:",
200 "settings.app.form.accentColor": "Odtieň farby", 198 "settings.app.form.accentColor": "Odtieň farby",
201 "settings.app.form.adaptableDarkMode": "Synchronize dark mode with my OS's dark mode setting", 199 "settings.app.form.adaptableDarkMode": "Synchronizácia tmavého režimu s nastavením operaÄného systému",
202 "settings.app.form.alwaysShowWorkspaces": "Always show workspace drawer", 200 "settings.app.form.alwaysShowWorkspaces": "Vždy zobraziť zásuvku pracovného priestoru",
203 "settings.app.form.autoLaunchInBackground": "Otvoriť na pozadí", 201 "settings.app.form.autoLaunchInBackground": "Otvoriť na pozadí",
204 "settings.app.form.autoLaunchOnStart": "Spustiť Ferdi pri štarte", 202 "settings.app.form.autoLaunchOnStart": "Spustiť Ferdi pri štarte",
205 "settings.app.form.automaticUpdates": "Enable updates", 203 "settings.app.form.automaticUpdates": "Povoliť aktualizácie",
206 "settings.app.form.beta": "Vrátane beta verzií", 204 "settings.app.form.beta": "Vrátane beta verzií",
207 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 205 "settings.app.form.clipboardNotifications": "Nezobrazovať notifikácie pre udalosti schránky",
208 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 206 "settings.app.form.closeToSystemTray": "Minimalizovať Ferdi do systémovej lišty",
209 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi", 207 "settings.app.form.confirmOnQuit": "PotvrdiÅ¥ ukonÄenie Ferdi",
210 "settings.app.form.customTodoServer": "Custom Todo Server", 208 "settings.app.form.customTodoServer": "Vlastný server Todo",
211 "settings.app.form.darkMode": "Zapnúť Dark Mode", 209 "settings.app.form.darkMode": "Zapnúť Dark Mode",
212 "settings.app.form.enableGPUAcceleration": "Zapnúť GPU zrýchlenie", 210 "settings.app.form.enableGPUAcceleration": "Zapnúť GPU zrýchlenie",
213 "settings.app.form.enableGlobalHideShortcut": "Enable Global shortcut to hide Ferdi", 211 "settings.app.form.enableGlobalHideShortcut": "Povolenie globálnej skratky na skrytie Ferdi",
214 "settings.app.form.enableLock": "Enable Password Lock", 212 "settings.app.form.enableLock": "Povoliť uzamknutie heslom",
215 "settings.app.form.enableLongPressServiceHint": "Enable service shortcut hint on long press", 213 "settings.app.form.enableLongPressServiceHint": "PovoliÅ¥ nápovedu skratky služby pri dlhom stlaÄení",
216 "settings.app.form.enableMenuBar": "Always show Ferdi in Menu Bar", 214 "settings.app.form.enableMenuBar": "Zobrazovať Ferdi v Menu",
217 "settings.app.form.enableSpellchecking": "Zapnúť kontrolu pravopisu", 215 "settings.app.form.enableSpellchecking": "Zapnúť kontrolu pravopisu",
218 "settings.app.form.enableSystemTray": "Always show Ferdi in System Tray", 216 "settings.app.form.enableSystemTray": "Zobrazovať Ferdi na paneli úloh",
219 "settings.app.form.enableTodos": "Enable Ferdi Todos", 217 "settings.app.form.enableTodos": "Povoliť Ferdi Todos",
220 "settings.app.form.hibernateOnStartup": "Keep services in hibernation on startup", 218 "settings.app.form.hibernateOnStartup": "Pri štarte ponechať služby uspané",
221 "settings.app.form.hibernationStrategy": "Hibernation strategy", 219 "settings.app.form.hibernationStrategy": "Stratégia uspania",
222 "settings.app.form.iconSize": "Service icon size", 220 "settings.app.form.iconSize": "Veľkosť ikony služieb",
223 "settings.app.form.inactivityLock": "Lock after inactivity", 221 "settings.app.form.inactivityLock": "Uzamknúť po neÄinnosti",
224 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", 222 "settings.app.form.keepAllWorkspacesLoaded": "PonechaÅ¥ vÅ¡etky pracovné priestory naÄítané",
225 "settings.app.form.language": "Jazyk", 223 "settings.app.form.language": "Jazyk",
226 "settings.app.form.lockPassword": "Heslo", 224 "settings.app.form.lockPassword": "Heslo",
227 "settings.app.form.minimizeToSystemTray": "Minimalizovať Ferdi do systémovej lišty", 225 "settings.app.form.minimizeToSystemTray": "Minimalizovať Ferdi do systémovej lišty",
228 "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour", 226 "settings.app.form.navigationBarBehaviour": "Správanie navigaÄnej liÅ¡ty",
229 "settings.app.form.notifyTaskBarOnMessage": "Notify TaskBar/Dock on new message", 227 "settings.app.form.notifyTaskBarOnMessage": "Upozornenie na novú správu v paneli úloh/doku",
230 "settings.app.form.passwordToggle": "Password toggle", 228 "settings.app.form.passwordToggle": "Prepínanie hesla",
231 "settings.app.form.predefinedTodoServer": "Todo Server", 229 "settings.app.form.predefinedTodoServer": "Server Todo",
232 "settings.app.form.privateNotifications": "Don't show message content in notifications", 230 "settings.app.form.privateNotifications": "Nezobrazovať obsah správy v notifikáciách",
233 "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume", 231 "settings.app.form.reloadAfterResume": "Obnoviť Ferdi po obnovení systému",
234 "settings.app.form.runInBackground": "Po zatvorení okna ponechať Ferdi spustený na pozadí", 232 "settings.app.form.runInBackground": "Po zatvorení okna ponechať Ferdi spustený na pozadí",
235 "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb", 233 "settings.app.form.scheduledDNDEnabled": "Naplánovať režim nerušiť",
236 "settings.app.form.scheduledDNDEnd": "Do", 234 "settings.app.form.scheduledDNDEnd": "Do",
237 "settings.app.form.scheduledDNDStart": "Od", 235 "settings.app.form.scheduledDNDStart": "Od",
238 "settings.app.form.searchEngine": "Search engine", 236 "settings.app.form.searchEngine": "VyhľadávaÄ",
239 "settings.app.form.sentry": "Send telemetry data", 237 "settings.app.form.sentry": "Odosielať telemetriu",
240 "settings.app.form.serviceRibbonWidth": "Sidebar width", 238 "settings.app.form.serviceRibbonWidth": "Šírka boÄného panela",
241 "settings.app.form.showDisabledServices": "Zobraziť záložky vypnutých služieb", 239 "settings.app.form.showDisabledServices": "Zobraziť záložky vypnutých služieb",
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Zobraziť oblasť, za ktorú možno ťahať v okne",
243 "settings.app.form.showMessagesBadgesWhenMuted": "ZobraziÅ¥ symbol pre nepreÄítané správy, keÄ sú vypnuté upozornenia", 241 "settings.app.form.showMessagesBadgesWhenMuted": "ZobraziÅ¥ symbol pre nepreÄítané správy, keÄ sú vypnuté upozornenia",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Zobraziť názov služby pod ikonou",
245 "settings.app.form.splitMode": "Enable Split View Mode", 243 "settings.app.form.splitColumns": "PoÄet stĺpcov",
246 "settings.app.form.startMinimized": "Start minimized", 244 "settings.app.form.splitMode": "Povoliť režim Split View",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 245 "settings.app.form.startMinimized": "Spúšťať minimalizované",
248 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 246 "settings.app.form.universalDarkMode": "Použiť univerzálny tmavý režim",
249 "settings.app.form.useVerticalStyle": "Use horizontal style", 247 "settings.app.form.useTouchIdToUnlock": "Povoliť TouchID na odomknutie Ferdi",
250 "settings.app.form.wakeUpStrategy": "Wake up strategy", 248 "settings.app.form.useVerticalStyle": "Vodorovný štýl",
249 "settings.app.form.wakeUpStrategy": "Stratégia prebudenia",
251 "settings.app.headlineAdvanced": "PokroÄilé", 250 "settings.app.headlineAdvanced": "PokroÄilé",
252 "settings.app.headlineAppearance": "Vzhľad", 251 "settings.app.headlineAppearance": "Vzhľad",
253 "settings.app.headlineGeneral": "Všeobecné", 252 "settings.app.headlineGeneral": "Všeobecné",
254 "settings.app.headlineLanguage": "Jazyk", 253 "settings.app.headlineLanguage": "Jazyk",
255 "settings.app.headlinePrivacy": "Privacy", 254 "settings.app.headlinePrivacy": "Súkromie",
256 "settings.app.headlineUpdates": "Aktualizácie", 255 "settings.app.headlineUpdates": "Aktualizácie",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "V predvolenom nastavení bude Ferdi udržiavaÅ¥ vÅ¡etky vaÅ¡e služby otvorené a naÄítané na pozadí, aby boli pripravené, keÄ ich budete chcieÅ¥ použiÅ¥. Funkcia uspania služieb vaÅ¡e služby po urÄitom Äase odpojí. Je to užitoÄné na Å¡etrenie pamäte RAM alebo na to, aby služby nespomaľovali poÄítaÄ.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minúty neÄinnosti, po ktorých by sa mal Ferdi automaticky uzamknúť. Ak si neželáte automatické uzamknutie, použite hodnotu 0",
259 "settings.app.languageDisclaimer": "Oficiálne preklady sú angliÄtina a nemÄina. VÅ¡etky ostatné jazyky sú preklady založené na komunite.", 258 "settings.app.lockInfo": "Funkcia uzamknutie heslom umožňuje chrániÅ¥ správy.\nPri použití funkcie uzamknutie heslom budete pri každom spustení Ferdi vyzvaní na zadanie hesla alebo si Ferdi zamknete sami pomocou symbolu zámku v ľavom dolnom rohu alebo skratky {lockShortcut}.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Heslo", 259 "settings.app.lockedPassword": "Heslo",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Uistite sa, že nastavíte heslo, ktoré si zapamätáte.\nAk toto heslo stratíte, budete musieť Ferdi nainštalovať znova.",
263 "settings.app.restartRequired": "Zmeny vyžadujú reštart", 261 "settings.app.restartRequired": "Zmeny vyžadujú reštart",
264 "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", 262 "settings.app.scheduledDNDInfo": "Naplánované nevyruÅ¡ovanie vám umožňuje definovaÅ¥ Äasové obdobie, poÄas ktorého nechcete dostávaÅ¥ oznámenia od Ferdi.",
265 "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", 263 "settings.app.scheduledDNDTimeInfo": "ÄŒasy v 24-hodinovom formáte. ÄŒas ukonÄenia môže byÅ¥ pred Äasom zaÄiatku (napr. zaÄiatok 17:00, koniec 09:00), aby bolo možné neruÅ¡iÅ¥ poÄas noci.",
266 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!", 264 "settings.app.sentryInfo": "Odosielanie telemetrických údajov nám umožňuje nájsť chyby v systéme Ferdi - nebudeme odosielať žiadne osobné údaje, ako napríklad vaše správy!",
267 "settings.app.spellCheckerLanguageInfo": "Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.", 265 "settings.app.spellCheckerLanguageInfo": "Ferdi používa na kontrolu preklepov zabudovanú kontrolu pravopisu v poÄítaÄi Mac. Ak chcete zmeniÅ¥ jazyky, ktoré kontroluje, môžete to urobiÅ¥ v systémových nastaveniach Macu.",
268 "settings.app.subheadlineCache": "Vyrovnávacia pamäť", 266 "settings.app.subheadlineCache": "Vyrovnávacia pamäť",
269 "settings.app.subheadlineFerdiProfile": "Ferdi Profile", 267 "settings.app.subheadlineFerdiProfile": "Profil Ferdi",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.", 268 "settings.app.todoServerInfo": "Tento server sa bude používať pre funkciu \"Ferdi Todo\".",
271 "settings.app.translationHelp": "Pomôžte nám preložiť Ferdi do svojho jazyka.", 269 "settings.app.translationHelp": "Pomôžte nám preložiť Ferdi do svojho jazyka.",
272 "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", 270 "settings.app.universalDarkModeInfo": "Univerzálny tmavý režim sa snaží dynamicky generovaÅ¥ Å¡týly tmavého režimu pre služby, ktoré v súÄasnosti nie sú podporované.",
273 "settings.app.updateStatusAvailable": "Je dostupná aktualizácia, sťahuje sa...", 271 "settings.app.updateStatusAvailable": "Je dostupná aktualizácia, sťahuje sa...",
274 "settings.app.updateStatusSearching": "Vyhľadáva aktualizácie", 272 "settings.app.updateStatusSearching": "Vyhľadáva aktualizácie",
275 "settings.app.updateStatusUpToDate": "Používate najnovšiu verziu Ferdi", 273 "settings.app.updateStatusUpToDate": "Používate najnovšiu verziu Ferdi",
@@ -280,18 +278,18 @@
280 "settings.navigation.supportFerdi": "O aplikácii", 278 "settings.navigation.supportFerdi": "O aplikácii",
281 "settings.navigation.team": "Spravovať tím", 279 "settings.navigation.team": "Spravovať tím",
282 "settings.navigation.yourServices": "Vaše služby", 280 "settings.navigation.yourServices": "Vaše služby",
283 "settings.navigation.yourWorkspaces": "Tvoje pracovné priestory", 281 "settings.navigation.yourWorkspaces": "Vaše pracovné priestory",
284 "settings.recipes.all": "Všetky služby", 282 "settings.recipes.all": "Všetky služby",
285 "settings.recipes.custom": "Custom Services", 283 "settings.recipes.custom": "Vlastné služby",
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Komunitné 3rd Party recepty",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Vlastné 3rd party recepty",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Vaše recepty služieb",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Dokumentácia pre vývojára",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "OtvoriÅ¥ prieÄinok",
292 "settings.recipes.headline": "Dostupné služby", 290 "settings.recipes.headline": "Dostupné služby",
293 "settings.recipes.missingService": "Chýba vám služba?", 291 "settings.recipes.missingService": "Chýba vám služba?",
294 "settings.recipes.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 292 "settings.recipes.nothingFound": "Je nám ľúto, vášmu hľadanému výrazu nezodpovedá žiadna služba, ale pravdepodobne ju môžete pridaÅ¥ pomocou možnosti \"Custom Website\". Upozorňujeme, že na webovej lokalite sa môžu zobraziÅ¥ ÄalÅ¡ie služby, ktoré boli do Ferdi pridané od verzie, na ktorej sa práve nachádzate. Ak chcete získaÅ¥ tieto nové služby, zvážte aktualizáciu na novÅ¡iu verziu Ferdi.",
295 "settings.recipes.servicesSuccessfulAddedInfo": "Služba bola úspešne pridaná", 293 "settings.recipes.servicesSuccessfulAddedInfo": "Služba bola úspešne pridaná",
296 "settings.searchService": "Vyhľadať službu", 294 "settings.searchService": "Vyhľadať službu",
297 "settings.service.error.goBack": "Späť na služby", 295 "settings.service.error.goBack": "Späť na služby",
@@ -304,40 +302,40 @@
304 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness", 302 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness",
305 "settings.service.form.darkReaderContrast": "Dark Reader Contrast", 303 "settings.service.form.darkReaderContrast": "Dark Reader Contrast",
306 "settings.service.form.darkReaderSepia": "Dark Reader Sepia", 304 "settings.service.form.darkReaderSepia": "Dark Reader Sepia",
307 "settings.service.form.deleteButton": "Delete service", 305 "settings.service.form.deleteButton": "Odstrániť službu",
308 "settings.service.form.editServiceHeadline": "Upraviť {name}", 306 "settings.service.form.editServiceHeadline": "Upraviť {name}",
309 "settings.service.form.enableAudio": "Zapnúť zvuk", 307 "settings.service.form.enableAudio": "Zapnúť zvuk",
310 "settings.service.form.enableBadge": "ZobraziÅ¥ symboly nepreÄítaných správ", 308 "settings.service.form.enableBadge": "ZobraziÅ¥ symboly nepreÄítaných správ",
311 "settings.service.form.enableDarkMode": "Zapnúť Dark Mode", 309 "settings.service.form.enableDarkMode": "Zapnúť Dark Mode",
312 "settings.service.form.enableHibernation": "Enable hibernation", 310 "settings.service.form.enableHibernation": "Povoliť uspanie",
313 "settings.service.form.enableNotification": "Povoliť oznámenia", 311 "settings.service.form.enableNotification": "Povoliť oznámenia",
314 "settings.service.form.enableService": "Povoliť službu", 312 "settings.service.form.enableService": "Povoliť službu",
315 "settings.service.form.enableWakeUp": "Enable wake up", 313 "settings.service.form.enableWakeUp": "Povoliť zobudenie",
316 "settings.service.form.headlineBadges": "Symboly nepreÄítaných správ", 314 "settings.service.form.headlineBadges": "Symboly nepreÄítaných správ",
317 "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings", 315 "settings.service.form.headlineDarkReaderSettings": "Nastavenia Dark Reader",
318 "settings.service.form.headlineGeneral": "Všeobecné", 316 "settings.service.form.headlineGeneral": "Všeobecné",
319 "settings.service.form.headlineNotifications": "Oznámenia", 317 "settings.service.form.headlineNotifications": "Oznámenia",
320 "settings.service.form.icon": "Vlastná ikona", 318 "settings.service.form.icon": "Vlastná ikona",
321 "settings.service.form.iconDelete": "Zmazať", 319 "settings.service.form.iconDelete": "Zmazať",
322 "settings.service.form.iconUpload": "Presuňte váš obrázok, alebo kliknite sem", 320 "settings.service.form.iconUpload": "Presuňte váš obrázok, alebo kliknite sem",
323 "settings.service.form.indirectMessageInfo": "Budete dostávať upozornenia na všetky nové správy v kanáli, nielen na @username, @channel, @here, ......", 321 "settings.service.form.indirectMessageInfo": "Budete dostávať upozornenia na všetky nové správy v kanáli, nielen na @username, @channel, @here, ...",
324 "settings.service.form.indirectMessages": "Zobraziť symbol správy pre všetky nové správy", 322 "settings.service.form.indirectMessages": "Zobraziť symbol správy pre všetky nové správy",
325 "settings.service.form.isHibernatedEnabledInfo": "When enabled, a service will be shut down after a period of time to save system resources.", 323 "settings.service.form.isHibernatedEnabledInfo": "Ak je táto možnosÅ¥ povolená, služba sa po urÄitom Äase vypne, aby sa Å¡etrili systémové zdroje.",
326 "settings.service.form.isMutedInfo": "Ak je vypnuté, všetky zvuky oznámení a iné prehrávania budú stíšené", 324 "settings.service.form.isMutedInfo": "Ak je vypnuté, budú stíšené všetky zvuky oznámení aj prehrávanie audia",
327 "settings.service.form.name": "Meno", 325 "settings.service.form.name": "Meno",
328 "settings.service.form.onlyShowFavoritesInUnreadCount": "Only show Favorites in unread count", 326 "settings.service.form.onlyShowFavoritesInUnreadCount": "V poÄte nepreÄítaných zobrazovaÅ¥ iba obľúbené položky",
329 "settings.service.form.openDarkmodeCss": "Open darkmode.css", 327 "settings.service.form.openDarkmodeCss": "Otvoriť darkmode.css",
330 "settings.service.form.openUserCss": "Open user.css", 328 "settings.service.form.openUserCss": "Otvoriť user.css",
331 "settings.service.form.openUserJs": "Open user.js", 329 "settings.service.form.openUserJs": "Otvoriť user.js",
332 "settings.service.form.proxy.headline": "HTTP/HTTPS Proxy Settings", 330 "settings.service.form.proxy.headline": "Nastavenia HTTP/HTTPS proxy",
333 "settings.service.form.proxy.host": "Proxy Host/IP", 331 "settings.service.form.proxy.host": "Hostiteľ Proxy/IP",
334 "settings.service.form.proxy.info": "Proxy settings will not be synchronized with the Ferdi servers.", 332 "settings.service.form.proxy.info": "Nastavenia proxy servera nebudú synchronizované so servermi Ferdi.",
335 "settings.service.form.proxy.isEnabled": "Použiť Proxy", 333 "settings.service.form.proxy.isEnabled": "Použiť Proxy",
336 "settings.service.form.proxy.password": "Password (optional)", 334 "settings.service.form.proxy.password": "Heslo (voliteľné)",
337 "settings.service.form.proxy.port": "Port", 335 "settings.service.form.proxy.port": "Port",
338 "settings.service.form.proxy.restartInfo": "Po zmene nastavení servera proxy reštartujte Ferdi.", 336 "settings.service.form.proxy.restartInfo": "Po zmene nastavení servera proxy reštartujte Ferdi.",
339 "settings.service.form.proxy.user": "User (optional)", 337 "settings.service.form.proxy.user": "Používateľ (voliteľné)",
340 "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.", 338 "settings.service.form.recipeFileInfo": "VaÅ¡e používateľské súbory budú vložené do webovej stránky, takže si môžete služby prispôsobiÅ¥ ľubovoľným spôsobom. Používateľské súbory sa ukladajú len lokálne a neprenášajú sa do iných poÄítaÄov používajúcich rovnaké konto.",
341 "settings.service.form.saveButton": "Uložiť službu", 339 "settings.service.form.saveButton": "Uložiť službu",
342 "settings.service.form.tabHosted": "Hostované", 340 "settings.service.form.tabHosted": "Hostované",
343 "settings.service.form.tabOnPremise": "Vlastné hostovanie â­ï¸", 341 "settings.service.form.tabOnPremise": "Vlastné hostovanie â­ï¸",
@@ -347,114 +345,111 @@
347 "settings.services.deletedInfo": "Služba bola odstránená", 345 "settings.services.deletedInfo": "Služba bola odstránená",
348 "settings.services.discoverServices": "Preskúmať služby", 346 "settings.services.discoverServices": "Preskúmať služby",
349 "settings.services.headline": "Vaše služby", 347 "settings.services.headline": "Vaše služby",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "ZaÄnite pridaním služby.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Nepodarilo sa naÄítaÅ¥ vaÅ¡e služby", 350 "settings.services.servicesRequestFailed": "Nepodarilo sa naÄítaÅ¥ vaÅ¡e služby",
353 "settings.services.tooltip.isDisabled": "Služba je vypnutá", 351 "settings.services.tooltip.isDisabled": "Služba je vypnutá",
354 "settings.services.tooltip.isMuted": "Všetky zvuky sú stíšené", 352 "settings.services.tooltip.isMuted": "Všetky zvuky sú stíšené",
355 "settings.services.tooltip.notificationsDisabled": "Oznámenia sú vypnuté", 353 "settings.services.tooltip.notificationsDisabled": "Oznámenia sú vypnuté",
356 "settings.services.updatedInfo": "Vaše zmeny boli uložené", 354 "settings.services.updatedInfo": "Vaše zmeny boli uložené",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi je aplikácia s otvoreným zdrojovým kódom a je spravovaná komunitou.</p><p>ÄŽakujeme ľuÄom, ktorí to umožňujú:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "O aplikácii", 356 "settings.supportFerdi.headline": "O aplikácii",
360 "settings.supportFerdi.openSurvey": "Open survey", 357 "settings.supportFerdi.textDonation": "Ak máte chuť podporiť vývoj Ferdi darom, môžete tak urobiť na stránkach",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 358 "settings.supportFerdi.textDonationAnd": "a",
362 "settings.supportFerdi.textDonationAnd": "and", 359 "settings.supportFerdi.textExpenses": "Hoci väÄÅ¡inu práce vykonávajú dobrovoľníci, stále musíme platiÅ¥ za servery a certifikáty. Ako komunita sme plne transparentní, pokiaľ ide o finanÄné prostriedky, ktoré získavame a míňame - pozrite si náš",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
364 "settings.supportFerdi.textGitHubSponsors": "GitHub Sponsors", 360 "settings.supportFerdi.textGitHubSponsors": "GitHub Sponsors",
365 "settings.supportFerdi.textListContributors": "Full list of contributors", 361 "settings.supportFerdi.textListContributors": "Úplný zoznam prispievateľov",
366 "settings.supportFerdi.textListContributorsHere": "here", 362 "settings.supportFerdi.textListContributorsHere": "tu",
367 "settings.supportFerdi.textOpenCollective": "Open Collective", 363 "settings.supportFerdi.textOpenCollective": "Open Collective",
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Podpora je vždy vítaná. Zoznam pomoci, ktorú potrebujeme, nájdete",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "tu",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "Na vývoji Ferdi sa podieľajú dobrovoľníci. Ľudia, ktorí Ferdi používajú ako vy. Vo svojom voľnom Äase udržiavajú, opravujú a vylepÅ¡ujú Ferdi.",
371 "settings.supportFerdi.title": "Do you like Ferdi?", 367 "settings.team.contentHeadline": "Manažment tímu Franz",
372 "settings.team.contentHeadline": "Franz Team Management", 368 "settings.team.copy": "Manažment tímu Franz vám umožňuje spravovaÅ¥ predplatné spoloÄnosti Franz pre viacerých používateľov. Majte na pamäti, že predplatné Franz Premium vám neposkytuje žiadne výhody pri používaní Ferdi: Jediný dôvod, preÄo máte stále prístup k správe tímov, je, aby ste mohli spravovaÅ¥ svoje starÅ¡ie tímy Franz a aby ste nestratili žiadne funkcie pri správe svojho úÄtu.",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Tím", 369 "settings.team.headline": "Tím",
375 "settings.team.intro": "You are currently using Franz Servers, which is why you have access to Team Management.", 370 "settings.team.intro": "V súÄasnosti používate servery Franz, preto máte prístup k správe tímu.",
376 "settings.team.manageAction": "Manage your Team on meetfranz.com", 371 "settings.team.manageAction": "Spravujte svoj tím na meetfranz.com",
377 "settings.team.teamsUnavailable": "Teams are unavailable", 372 "settings.team.teamsUnavailable": "Tímy sú nedostupné",
378 "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 373 "settings.team.teamsUnavailableInfo": "Tímy sú v súÄasnosti k dispozícii len pri používaní servera Franz Server a po zaplatení služby Franz Professional. Ak chcete používaÅ¥ tímy, zmeňte svoj server na https://api.franzinfra.com.",
379 "settings.user.form.accountType.company": "SpoloÄnosÅ¥", 374 "settings.user.form.accountType.company": "SpoloÄnosÅ¥",
380 "settings.user.form.accountType.individual": "Osoba", 375 "settings.user.form.accountType.individual": "Osoba",
381 "settings.user.form.accountType.label": "Typ úÄtu", 376 "settings.user.form.accountType.label": "Typ úÄtu",
382 "settings.user.form.accountType.non-profit": "Nezisková organizácia", 377 "settings.user.form.accountType.non-profit": "Nezisková organizácia",
383 "settings.user.form.currentPassword": "SúÄasné heslo", 378 "settings.user.form.currentPassword": "SúÄasné heslo",
384 "settings.user.form.email": "E-mail", 379 "settings.user.form.email": "E-mail",
385 "settings.user.form.firstname": "First Name", 380 "settings.user.form.firstname": "Meno",
386 "settings.user.form.lastname": "Last Name", 381 "settings.user.form.lastname": "Priezvisko",
387 "settings.user.form.newPassword": "Nové heslo", 382 "settings.user.form.newPassword": "Nové heslo",
388 "settings.workspace.add.form.name": "Meno", 383 "settings.workspace.add.form.name": "Meno",
389 "settings.workspace.add.form.submitButton": "Vytvoriť pracovný priestor", 384 "settings.workspace.add.form.submitButton": "Vytvoriť pracovný priestor",
390 "settings.workspace.form.buttonDelete": "Vymazať pracovný priestor", 385 "settings.workspace.form.buttonDelete": "Vymazať pracovný priestor",
391 "settings.workspace.form.buttonSave": "Uložiť pracovný priestor", 386 "settings.workspace.form.buttonSave": "Uložiť pracovný priestor",
392 "settings.workspace.form.keepLoaded": "Keep this workspace loaded*", 387 "settings.workspace.form.keepLoaded": "PonechaÅ¥ tento pracovný priestor naÄítaný*",
393 "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.", 388 "settings.workspace.form.keepLoadedInfo": "*Táto možnosÅ¥ bude prepísaná globálnym nastavením \"PonechaÅ¥ vÅ¡etky pracovné priestory naÄítané\".",
394 "settings.workspace.form.name": "Meno", 389 "settings.workspace.form.name": "Meno",
395 "settings.workspace.form.servicesInWorkspaceHeadline": "Služby v tomto pracovnom priestore", 390 "settings.workspace.form.servicesInWorkspaceHeadline": "Služby v tomto pracovnom priestore",
396 "settings.workspace.form.yourWorkspaces": "Tvoje pracovné priestory", 391 "settings.workspace.form.yourWorkspaces": "Vaše pracovné priestory",
397 "settings.workspaces.deletedInfo": "Pracovný priestor bol odstránený", 392 "settings.workspaces.deletedInfo": "Pracovný priestor bol odstránený",
398 "settings.workspaces.headline": "Tvoje pracovné priestory", 393 "settings.workspaces.headline": "Vaše pracovné priestory",
399 "settings.workspaces.noWorkspacesAdded": "You haven't created any workspaces yet.", 394 "settings.workspaces.noWorkspacesAdded": "Zatiaľ ste nepridali žiadne pracovné priestory.",
400 "settings.workspaces.tryReloadWorkspaces": "Skúsiť znova", 395 "settings.workspaces.tryReloadWorkspaces": "Skúsiť znova",
401 "settings.workspaces.updatedInfo": "Vaše zmeny boli uložené", 396 "settings.workspaces.updatedInfo": "Vaše zmeny boli uložené",
402 "settings.workspaces.workspaceFeatureHeadline": "Menej je viac: Predstavenie Ferdi Pracovné priestory", 397 "settings.workspaces.workspaceFeatureHeadline": "Menej je viac: Predstavenie Ferdi Pracovné priestory",
403 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", 398 "settings.workspaces.workspaceFeatureInfo": "Ferdi pracovné priestory vám umožňujú sústrediÅ¥ sa na to, Äo je práve dôležité. Nastavte si rozliÄné skupiny služieb a jednoducho medzi nimi kedykoľvek prepínajte. Vy rozhodujete ktoré služby, kedy a kde potrebujete, a my vám potom vieme pomôcÅ¥ sústrediÅ¥ sa na prácu - alebo jednoducho prepnúť z práce na Äokoľvek iné.",
404 "settings.workspaces.workspacesRequestFailed": "Nebolo možné naÄítaÅ¥ vaÅ¡e workspace", 399 "settings.workspaces.workspacesRequestFailed": "Nebolo možné naÄítaÅ¥ vaÅ¡e pracovné priestory",
405 "setupAssistant.headline": "Let's get started", 400 "setupAssistant.headline": "ZaÄíname",
406 "setupAssistant.subheadline": "Choose from our most used services and get back on top of your messaging now.", 401 "setupAssistant.subheadline": "Vyberte si z našich najpoužívanejších služieb a vráťte sa k správam tam kde s ste prestali.",
407 "setupAssistant.submit.label": "Let's go", 402 "setupAssistant.submit.label": "PoÄme na to",
408 "sidebar.addNewService": "Pridať novú službu", 403 "sidebar.addNewService": "Pridať novú službu",
409 "sidebar.closeTodosDrawer": "Close Ferdi Todos", 404 "sidebar.closeTodosDrawer": "Zavrieť Ferdi Todos",
410 "sidebar.closeWorkspaceDrawer": "Zavrieť workspace záložku", 405 "sidebar.closeWorkspaceDrawer": "Zavrieť zásuvku pracovného priestoru",
411 "sidebar.lockFerdi": "Uzamknúť Ferdi", 406 "sidebar.lockFerdi": "Uzamknúť Ferdi",
412 "sidebar.muteApp": "Vypnúť upozornenia a zvuky", 407 "sidebar.muteApp": "Vypnúť upozornenia a zvuky",
413 "sidebar.openTodosDrawer": "Open Ferdi Todos", 408 "sidebar.openTodosDrawer": "Otvoriť Ferdi Todos",
414 "sidebar.openWorkspaceDrawer": "Otvoriť workspace záložku", 409 "sidebar.openWorkspaceDrawer": "Otvoriť zásuvku pracovného priestoru",
415 "sidebar.unmuteApp": "Povoliť oznámenia a zvuky", 410 "sidebar.unmuteApp": "Povoliť oznámenia a zvuky",
416 "signup.email.label": "E-mailová adresa", 411 "signup.email.label": "E-mailová adresa",
417 "signup.emailDuplicate": "Používateľ s touto e-mailovou adresou už jestvuje", 412 "signup.emailDuplicate": "Používateľ s touto e-mailovou adresou už jestvuje",
418 "signup.firstname.label": "First Name", 413 "signup.firstname.label": "Meno",
419 "signup.headline": "Prihlásiť sa", 414 "signup.headline": "Prihlásiť sa",
420 "signup.lastname.label": "Last Name", 415 "signup.lastname.label": "Priezvisko",
421 "signup.legal.info": "Vytvorením úÄtu Ferdi súhlasíte s", 416 "signup.legal.info": "Vytvorením úÄtu Ferdi súhlasíte s",
422 "signup.legal.privacy": "Vyhlásenie o ochrane súkromia", 417 "signup.legal.privacy": "Vyhlásenie o ochrane súkromia",
423 "signup.legal.terms": "Podmienky služby", 418 "signup.legal.terms": "Podmienky služby",
424 "signup.link.login": "Už máte úÄet, chcete sa prihlásiÅ¥?", 419 "signup.link.login": "Už máte úÄet, chcete sa prihlásiÅ¥?",
425 "signup.password.label": "Heslo", 420 "signup.password.label": "Heslo",
426 "signup.submit.label": "VytvoriÅ¥ úÄet", 421 "signup.submit.label": "VytvoriÅ¥ úÄet",
427 "tabs.item.confirmDeleteService": "Do you really want to delete the {serviceName} service?", 422 "tabs.item.confirmDeleteService": "Naozaj chcete odstrániť službu {serviceName}?",
428 "tabs.item.deleteService": "Delete service", 423 "tabs.item.deleteService": "Odstrániť službu",
429 "tabs.item.disableAudio": "Vypnúť zvuk", 424 "tabs.item.disableAudio": "Vypnúť zvuk",
430 "tabs.item.disableDarkMode": "Disable Dark mode", 425 "tabs.item.disableDarkMode": "Vypnúť tmavý režim",
431 "tabs.item.disableNotifications": "Zakázať oznámenia", 426 "tabs.item.disableNotifications": "Zakázať oznámenia",
432 "tabs.item.disableService": "Disable service", 427 "tabs.item.disableService": "Vypnúť službu",
433 "tabs.item.enableAudio": "Zapnúť zvuk", 428 "tabs.item.enableAudio": "Zapnúť zvuk",
434 "tabs.item.enableDarkMode": "Enable Dark mode", 429 "tabs.item.enableDarkMode": "Zapnúť tmavý režim",
435 "tabs.item.enableNotification": "Povoliť oznámenia", 430 "tabs.item.enableNotification": "Povoliť oznámenia",
436 "tabs.item.enableService": "Povoliť službu", 431 "tabs.item.enableService": "Povoliť službu",
437 "tabs.item.hibernateService": "Hibernate service", 432 "tabs.item.hibernateService": "Uspať službu",
438 "tabs.item.reload": "Obnoviť", 433 "tabs.item.reload": "Obnoviť",
439 "tabs.item.wakeUpService": "Wake up service", 434 "tabs.item.wakeUpService": "Prebudiť službu",
440 "validation.email": "{field} is not valid", 435 "validation.email": "{field} je neplatný",
441 "validation.minLength": "{field} should be at least {length} characters long", 436 "validation.minLength": "{field} by malo byť dlhé aspoň {length} znakov",
442 "validation.oneRequired": "Je nutné zadať aspoň jeden", 437 "validation.oneRequired": "Je nutné zadať aspoň jeden",
443 "validation.required": "{field} is required", 438 "validation.required": "{field} je povinné",
444 "validation.url": "{field} is not a valid URL", 439 "validation.url": "{field} nie je platná URL",
445 "webControls.back": "Naspäť", 440 "webControls.back": "Naspäť",
446 "webControls.forward": "Forward", 441 "webControls.forward": "Dopredu",
447 "webControls.goHome": "Úvod", 442 "webControls.goHome": "Úvod",
448 "webControls.openInBrowser": "OtvoriÅ¥ v prehliadaÄi", 443 "webControls.openInBrowser": "OtvoriÅ¥ v prehliadaÄi",
449 "webControls.reload": "Obnoviť", 444 "webControls.reload": "Obnoviť",
450 "welcome.loginButton": "PrihlásiÅ¥ sa do vášho úÄtu", 445 "welcome.loginButton": "PrihlásiÅ¥ sa do vášho úÄtu",
451 "welcome.signupButton": "VytvoriÅ¥ používateľský úÄet zdarma", 446 "welcome.signupButton": "VytvoriÅ¥ používateľský úÄet zdarma",
452 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", 447 "workspaceDrawer.addNewWorkspaceLabel": "Pridať nový pracovný priestor",
453 "workspaceDrawer.allServices": "Všetky služby", 448 "workspaceDrawer.allServices": "Všetky služby",
454 "workspaceDrawer.headline": "Pracovný priestor", 449 "workspaceDrawer.headline": "Pracovné priestory",
455 "workspaceDrawer.item.contextMenuEdit": "Upraviť", 450 "workspaceDrawer.item.contextMenuEdit": "Upraviť",
456 "workspaceDrawer.item.noServicesAddedYet": "Zatiaľ žiadne služby", 451 "workspaceDrawer.item.noServicesAddedYet": "Zatiaľ žiadne služby",
457 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", 452 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi pracovné priestory vám umožňujú sústrediÅ¥ sa na to, Äo je práve dôležité. Nastavte si rozliÄné skupiny služieb a jednoducho medzi nimi kedykoľvek prepínajte.</p><p>Vy rozhodujete ktoré služby, kedy a kde potrebujete, a my vám potom vieme pomôcÅ¥ sústrediÅ¥ sa na prácu - alebo jednoducho prepnúť z práce na Äokoľvek iné. </p>",
458 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", 453 "workspaceDrawer.workspacesSettingsTooltip": "Upraviť nastavenia pracovných priestorov",
459 "workspaces.switchingIndicator.switchingTo": "Prepínanie na" 454 "workspaces.switchingIndicator.switchingTo": "Prepínanie na"
460} 455}
diff --git a/src/i18n/locales/sl.json b/src/i18n/locales/sl.json
index 4ec106205..213c78f31 100644
--- a/src/i18n/locales/sl.json
+++ b/src/i18n/locales/sl.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Send invites", 61 "invite.submit.label": "Send invites",
62 "invite.successInfo": "Invitations sent successfully", 62 "invite.successInfo": "Invitations sent successfully",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Welcome to Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Updates", 255 "settings.app.headlineUpdates": "Updates",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Available services", 290 "settings.recipes.headline": "Available services",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Discover services", 346 "settings.services.discoverServices": "Discover services",
349 "settings.services.headline": "Your services", 347 "settings.services.headline": "Your services",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Service is disabled", 351 "settings.services.tooltip.isDisabled": "Service is disabled",
354 "settings.services.tooltip.isMuted": "All sounds are muted", 352 "settings.services.tooltip.isMuted": "All sounds are muted",
355 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 353 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
356 "settings.services.updatedInfo": "Your changes have been saved", 354 "settings.services.updatedInfo": "Your changes have been saved",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "About Ferdi", 356 "settings.supportFerdi.headline": "About Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
diff --git a/src/i18n/locales/sr.json b/src/i18n/locales/sr.json
index 8b26d6548..33a311d87 100644
--- a/src/i18n/locales/sr.json
+++ b/src/i18n/locales/sr.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Pošalji pozivnice", 61 "invite.submit.label": "Pošalji pozivnice",
62 "invite.successInfo": "Poziv je uspešno poslat.", 62 "invite.successInfo": "Poziv je uspešno poslat.",
63 "locked.headline": "Закључано", 63 "locked.headline": "Закључано",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Лозинка је неиÑправна", 64 "locked.invalidCredentials": "Лозинка је неиÑправна",
66 "locked.password.label": "Лозинка", 65 "locked.password.label": "Лозинка",
67 "locked.submit.label": "Откључај", 66 "locked.submit.label": "Откључај",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Dobrodošli u Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Покажи беџ за непрочитане поруке када Ñу обавештења онемогућена", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Покажи беџ за непрочитане поруке када Ñу обавештења онемогућена",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Nadogradnje", 255 "settings.app.headlineUpdates": "Nadogradnje",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Лозинка", 259 "settings.app.lockedPassword": "Лозинка",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Dostupne usluge", 290 "settings.recipes.headline": "Dostupne usluge",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Pronađite usluge", 346 "settings.services.discoverServices": "Pronađite usluge",
349 "settings.services.headline": "Vaše usluge", 347 "settings.services.headline": "Vaše usluge",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Usluga je onemogućena.", 351 "settings.services.tooltip.isDisabled": "Usluga je onemogućena.",
354 "settings.services.tooltip.isMuted": "Svi zvukovi su onemogućeni.", 352 "settings.services.tooltip.isMuted": "Svi zvukovi su onemogućeni.",
355 "settings.services.tooltip.notificationsDisabled": "Obavijesti su onemogućene.", 353 "settings.services.tooltip.notificationsDisabled": "Obavijesti su onemogućene.",
356 "settings.services.updatedInfo": "Vaše promjene su spremljene", 354 "settings.services.updatedInfo": "Vaše promjene su spremljene",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "O Francu", 356 "settings.supportFerdi.headline": "O Francu",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Tim", 369 "settings.team.headline": "Tim",
diff --git a/src/i18n/locales/sv.json b/src/i18n/locales/sv.json
index ca21dc442..d3c9072f2 100644
--- a/src/i18n/locales/sv.json
+++ b/src/i18n/locales/sv.json
@@ -1,6 +1,6 @@
1{ 1{
2 "app.errorHandler.action": "Ladda om", 2 "app.errorHandler.action": "Ladda om",
3 "app.errorHandler.headline": "NÃ¥gonting gick fel.", 3 "app.errorHandler.headline": "NÃ¥got gick fel.",
4 "changeserver.customServerLabel": "Anpassad server", 4 "changeserver.customServerLabel": "Anpassad server",
5 "changeserver.headline": "Byt server", 5 "changeserver.headline": "Byt server",
6 "changeserver.label": "Server", 6 "changeserver.label": "Server",
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Skicka inbjudningar", 61 "invite.submit.label": "Skicka inbjudningar",
62 "invite.successInfo": "Inbjudningar har skickats", 62 "invite.successInfo": "Inbjudningar har skickats",
63 "locked.headline": "LÃ¥st", 63 "locked.headline": "LÃ¥st",
64 "locked.info": "Ferdi är för närvarande låst. Lås upp Ferdi med ditt lösenord för att se dina meddelanden.",
65 "locked.invalidCredentials": "Felaktigt lösenord", 64 "locked.invalidCredentials": "Felaktigt lösenord",
66 "locked.password.label": "Lösenord", 65 "locked.password.label": "Lösenord",
67 "locked.submit.label": "LÃ¥s upp", 66 "locked.submit.label": "LÃ¥s upp",
@@ -69,7 +68,7 @@
69 "locked.touchIdPrompt": "lås upp med Touch ID", 68 "locked.touchIdPrompt": "lås upp med Touch ID",
70 "locked.unlockWithPassword": "Lås upp med lösenord", 69 "locked.unlockWithPassword": "Lås upp med lösenord",
71 "login.changeServer": "Byt server", 70 "login.changeServer": "Byt server",
72 "login.customServerQuestion": "Using a custom Ferdi server?", 71 "login.customServerQuestion": "Använder du ett Franz-konto för att logga in?",
73 "login.customServerSuggestion": "Try importing your Franz account", 72 "login.customServerSuggestion": "Try importing your Franz account",
74 "login.email.label": "E-postadress", 73 "login.email.label": "E-postadress",
75 "login.headline": "Logga in", 74 "login.headline": "Logga in",
@@ -168,7 +167,6 @@
168 "services.login": "Logga in för att använda Ferdi.", 167 "services.login": "Logga in för att använda Ferdi.",
169 "services.serverInfo": "Alternativt kan du ändra din Ferdi server genom att klicka på kuggen i det nedre vänstra hörnet. Om du byter över (från en av de hostade servrarna) till att använda Ferdi utan ett konto, informeras om att du kan exportera dina data från den servern och därefter importera den med hjälp av Hjälpmenyn för att återuppliva alla dina arbetsytor och konfigurerade tjänster!", 168 "services.serverInfo": "Alternativt kan du ändra din Ferdi server genom att klicka på kuggen i det nedre vänstra hörnet. Om du byter över (från en av de hostade servrarna) till att använda Ferdi utan ett konto, informeras om att du kan exportera dina data från den servern och därefter importera den med hjälp av Hjälpmenyn för att återuppliva alla dina arbetsytor och konfigurerade tjänster!",
170 "services.serverless": "Använd Ferdi utan ett konto", 169 "services.serverless": "Använd Ferdi utan ett konto",
171 "services.welcome": "Välkommen till Ferdi",
172 "settings.account.account.editButton": "Redigera konto", 170 "settings.account.account.editButton": "Redigera konto",
173 "settings.account.accountUnavailable": "Kontot är inte tillgängligt", 171 "settings.account.accountUnavailable": "Kontot är inte tillgängligt",
174 "settings.account.accountUnavailableInfo": "Du använder Ferdi utan ett konto. Om du vill använda Ferdi med ett konto och hålla dina tjänster synkroniserade mellan installationer, välj en server i fliken Inställningar och logga in.", 172 "settings.account.accountUnavailableInfo": "Du använder Ferdi utan ett konto. Om du vill använda Ferdi med ett konto och hålla dina tjänster synkroniserade mellan installationer, välj en server i fliken Inställningar och logga in.",
@@ -241,7 +239,8 @@
241 "settings.app.form.showDisabledServices": "Visa flikar för inaktiverade tjänster", 239 "settings.app.form.showDisabledServices": "Visa flikar för inaktiverade tjänster",
242 "settings.app.form.showDragArea": "Visa dragbart område i fönstret", 240 "settings.app.form.showDragArea": "Visa dragbart område i fönstret",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Visa antal olästa meddelanden när aviseringar är inaktiverade", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Visa antal olästa meddelanden när aviseringar är inaktiverade",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Visa tjänstens namn under ikonen",
243 "settings.app.form.splitColumns": "Antal kolumner",
245 "settings.app.form.splitMode": "Aktivera delat visningsläge", 244 "settings.app.form.splitMode": "Aktivera delat visningsläge",
246 "settings.app.form.startMinimized": "Starta i minimerat läge", 245 "settings.app.form.startMinimized": "Starta i minimerat läge",
247 "settings.app.form.universalDarkMode": "Aktivera globalt mörkt läge", 246 "settings.app.form.universalDarkMode": "Aktivera globalt mörkt läge",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Uppdateringar", 255 "settings.app.headlineUpdates": "Uppdateringar",
257 "settings.app.hibernateInfo": "Som standard kommer Ferdi att hålla alla dina tjänster öppna och laddade i bakgrunden så att de är redo när du vill använda dem. Viloläget kommer att stänga dina tjänster efter ett angivet belopp. Detta är användbart för att spara på arbetsminne eller se till att tjänster inte saktar ner datorn.", 256 "settings.app.hibernateInfo": "Som standard kommer Ferdi att hålla alla dina tjänster öppna och laddade i bakgrunden så att de är redo när du vill använda dem. Viloläget kommer att stänga dina tjänster efter ett angivet belopp. Detta är användbart för att spara på arbetsminne eller se till att tjänster inte saktar ner datorn.",
258 "settings.app.inactivityLockInfo": "Antal minuter av inaktivitet, varefter Ferdi låses automatiskt. Ange 0 för att inaktivera", 257 "settings.app.inactivityLockInfo": "Antal minuter av inaktivitet, varefter Ferdi låses automatiskt. Ange 0 för att inaktivera",
259 "settings.app.languageDisclaimer": "Engelska och tyska är officella översättningar. Övriga språk har översatts av gemenskapen.",
260 "settings.app.lockInfo": "Lösenordslås låter dig skydda dina meddelanden.\nAnvända lösenordsblock, du kommer att bli ombedd att ange ditt lösenord varje gång du startar Ferdi eller låsa Ferdi själv med hjälp av låssymbolen i det nedre vänstra hörnet eller genvägen {lockShortcut}.", 258 "settings.app.lockInfo": "Lösenordslås låter dig skydda dina meddelanden.\nAnvända lösenordsblock, du kommer att bli ombedd att ange ditt lösenord varje gång du startar Ferdi eller låsa Ferdi själv med hjälp av låssymbolen i det nedre vänstra hörnet eller genvägen {lockShortcut}.",
261 "settings.app.lockedPassword": "Lösenord", 259 "settings.app.lockedPassword": "Lösenord",
262 "settings.app.lockedPasswordInfo": "Se till att du anger ett lösenord du kommer att komma ihåg.\nOm du tappar bort detta lösenord måste du installera om Ferdi.", 260 "settings.app.lockedPasswordInfo": "Se till att du anger ett lösenord du kommer att komma ihåg.\nOm du tappar bort detta lösenord måste du installera om Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Tredjepartsrecept från gemenskapen", 284 "settings.recipes.customService.headline.communityRecipes": "Tredjepartsrecept från gemenskapen",
287 "settings.recipes.customService.headline.customRecipes": "Egna tredjepartsrecept", 285 "settings.recipes.customService.headline.customRecipes": "Egna tredjepartsrecept",
288 "settings.recipes.customService.headline.devRecipes": "Dina recept för utvecklingsservice", 286 "settings.recipes.customService.headline.devRecipes": "Dina recept för utvecklingsservice",
289 "settings.recipes.customService.intro": "För att lägga till en anpassad tjänst, kopiera receptet för tjänsten till:", 287 "settings.recipes.customService.intro": "För att lägga till en anpassad tjänst, kopiera tjänstens receptmapp inuti:",
290 "settings.recipes.customService.openDevDocs": "Dokumentation för utvecklare", 288 "settings.recipes.customService.openDevDocs": "Dokumentation för utvecklare",
291 "settings.recipes.customService.openFolder": "Öppna mapp", 289 "settings.recipes.customService.openFolder": "Öppna mapp",
292 "settings.recipes.headline": "Tillgängliga tjänster", 290 "settings.recipes.headline": "Tillgängliga tjänster",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Upptäck tjänster", 346 "settings.services.discoverServices": "Upptäck tjänster",
349 "settings.services.headline": "Dina tjänster", 347 "settings.services.headline": "Dina tjänster",
350 "settings.services.noServicesAdded": "Börja med att lägga till en tjänst.", 348 "settings.services.noServicesAdded": "Börja med att lägga till en tjänst.",
351 "settings.services.nothingFound": "Tyvärr, men ingen tjänst matchade ditt sökord - men du kan fortfarande förmodligen lägga till det med \"Anpassad webbplats\" alternativet. Observera att webbplatsen kan visa fler tjänster som har lagts till Ferdi sedan den version som du för närvarande är på. För att få dessa nya tjänster, överväg att uppgradera till en nyare version av Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Kunde inte ladda dina tjänster", 350 "settings.services.servicesRequestFailed": "Kunde inte ladda dina tjänster",
353 "settings.services.tooltip.isDisabled": "Tjänsten är inaktiverad", 351 "settings.services.tooltip.isDisabled": "Tjänsten är inaktiverad",
354 "settings.services.tooltip.isMuted": "Alla ljud är avstängda", 352 "settings.services.tooltip.isMuted": "Alla ljud är avstängda",
355 "settings.services.tooltip.notificationsDisabled": "Aviseringar är inaktiverade", 353 "settings.services.tooltip.notificationsDisabled": "Aviseringar är inaktiverade",
356 "settings.services.updatedInfo": "Dina ändringar har sparats", 354 "settings.services.updatedInfo": "Dina ändringar har sparats",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi är en öppen källkod och en community-ledd applikation.</p><p>Tack till de personer som gör detta besitter:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi är en öppen källkod och en community-ledd applikation.</p><p>Tack till de personer som gör detta besitter:</p>",
358 "settings.supportFerdi.bannerText": "Vill du hjälpa oss att förbättra Ferdi?",
359 "settings.supportFerdi.headline": "Om Ferdi", 356 "settings.supportFerdi.headline": "Om Ferdi",
360 "settings.supportFerdi.openSurvey": "Öppna enkäten",
361 "settings.supportFerdi.textDonation": "Om du känner för att stödja Ferdi utveckling med en donation, kan du göra det på båda,", 357 "settings.supportFerdi.textDonation": "Om du känner för att stödja Ferdi utveckling med en donation, kan du göra det på båda,",
362 "settings.supportFerdi.textDonationAnd": "och", 358 "settings.supportFerdi.textDonationAnd": "och",
363 "settings.supportFerdi.textExpenses": "Medan volontärer gör det mesta av arbetet, måste vi fortfarande betala för servrar och certifikat. Som ett samhälle är vi helt öppna för medel som vi samlar in och spenderar - se vår", 359 "settings.supportFerdi.textExpenses": "Medan volontärer gör det mesta av arbetet, måste vi fortfarande betala för servrar och certifikat. Som ett samhälle är vi helt öppna för medel som vi samlar in och spenderar - se vår",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Stöd är alltid välkommet. Du hittar en lista över den hjälp vi behöver", 364 "settings.supportFerdi.textSupportWelcome": "Stöd är alltid välkommet. Du hittar en lista över den hjälp vi behöver",
369 "settings.supportFerdi.textSupportWelcomeHere": "här", 365 "settings.supportFerdi.textSupportWelcomeHere": "här",
370 "settings.supportFerdi.textVolunteers": "Utvecklingen av Ferdi görs av volontärer. Människor som använder Ferdi som du. De underhåller, fixar och förbättrar Ferdi på sin fritid.", 366 "settings.supportFerdi.textVolunteers": "Utvecklingen av Ferdi görs av volontärer. Människor som använder Ferdi som du. De underhåller, fixar och förbättrar Ferdi på sin fritid.",
371 "settings.supportFerdi.title": "Tycker du om Ferdi?",
372 "settings.team.contentHeadline": "Hantera Franz-grupp", 367 "settings.team.contentHeadline": "Hantera Franz-grupp",
373 "settings.team.copy": "Grupphanteringen i Franz låter dig hantera Franz-abonnemang för flera användare. Observera att ett Franz Premium-abonnemang inte ger dig några extra funktioner i Ferdi: Den enda anledningen till att du fortfarande har tillgång till grupphanteringen är att du kan hantera dina äldre Franz-grupper så att du inte förlorar någon funktionalitet i hanteringen av ditt konto.", 368 "settings.team.copy": "Grupphanteringen i Franz låter dig hantera Franz-abonnemang för flera användare. Observera att ett Franz Premium-abonnemang inte ger dig några extra funktioner i Ferdi: Den enda anledningen till att du fortfarande har tillgång till grupphanteringen är att du kan hantera dina äldre Franz-grupper så att du inte förlorar någon funktionalitet i hanteringen av ditt konto.",
374 "settings.team.headline": "Grupp", 369 "settings.team.headline": "Grupp",
diff --git a/src/i18n/locales/te.json b/src/i18n/locales/te.json
index 2544d2a00..db528ac47 100644
--- a/src/i18n/locales/te.json
+++ b/src/i18n/locales/te.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Send invites", 61 "invite.submit.label": "Send invites",
62 "invite.successInfo": "Invitations sent successfully", 62 "invite.successInfo": "Invitations sent successfully",
63 "locked.headline": "Locked", 63 "locked.headline": "Locked",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "Password invalid", 64 "locked.invalidCredentials": "Password invalid",
66 "locked.password.label": "Password", 65 "locked.password.label": "Password",
67 "locked.submit.label": "Unlock", 66 "locked.submit.label": "Unlock",
@@ -168,7 +167,6 @@
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Please login to use Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "Welcome to Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Account is unavailable", 171 "settings.account.accountUnavailable": "Account is unavailable",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Updates", 255 "settings.app.headlineUpdates": "Updates",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Password", 259 "settings.app.lockedPassword": "Password",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Available services", 290 "settings.recipes.headline": "Available services",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Discover services", 346 "settings.services.discoverServices": "Discover services",
349 "settings.services.headline": "Your services", 347 "settings.services.headline": "Your services",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "Service is disabled", 351 "settings.services.tooltip.isDisabled": "Service is disabled",
354 "settings.services.tooltip.isMuted": "All sounds are muted", 352 "settings.services.tooltip.isMuted": "All sounds are muted",
355 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 353 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
356 "settings.services.updatedInfo": "Your changes have been saved", 354 "settings.services.updatedInfo": "Your changes have been saved",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "About Ferdi", 356 "settings.supportFerdi.headline": "About Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "and", 358 "settings.supportFerdi.textDonationAnd": "and",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "here",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Team", 369 "settings.team.headline": "Team",
diff --git a/src/i18n/locales/tr.json b/src/i18n/locales/tr.json
index b697231e3..120efa39d 100644
--- a/src/i18n/locales/tr.json
+++ b/src/i18n/locales/tr.json
@@ -14,7 +14,7 @@
14 "feature.nightlyBuilds.info": "Nightly yapılar Ferdi'nin deneysel sürümleri olup tamamlanmamış özellikler içerebilir. Bu nightly yapılar genellikle geliştiriciler tarafından yeni özellikleri deneyip geliştirmek için kullanılır. Ne yaptığınızı bilmiyorsanız nightly yapıları etkinleştirmeyin.", 14 "feature.nightlyBuilds.info": "Nightly yapılar Ferdi'nin deneysel sürümleri olup tamamlanmamış özellikler içerebilir. Bu nightly yapılar genellikle geliştiriciler tarafından yeni özellikleri deneyip geliştirmek için kullanılır. Ne yaptığınızı bilmiyorsanız nightly yapıları etkinleştirmeyin.",
15 "feature.nightlyBuilds.title": "Nightly Yapılar", 15 "feature.nightlyBuilds.title": "Nightly Yapılar",
16 "feature.publishDebugInfo.error": "Hata ayıklama bilgisi oluşturulurken hata oluştu. Lütfen daha sonra tekrar deneyin veya daha fazla bilgi için konsolu görüntüleyin.", 16 "feature.publishDebugInfo.error": "Hata ayıklama bilgisi oluşturulurken hata oluştu. Lütfen daha sonra tekrar deneyin veya daha fazla bilgi için konsolu görüntüleyin.",
17 "feature.publishDebugInfo.info": "Publishing your debug information helps us find issues and errors in Ferdi. By publishing your debug information you accept Ferdi Debugger's privacy policy and terms of service", 17 "feature.publishDebugInfo.info": "Hata ayıklama bilgilerinizi yayınlamak, Ferdi'deki sorunları ve hataları bulmamıza yardımcı olur. Hata ayıklama bilgilerinizi yayınlayarak Ferdi Hata Ayıklayıcı'nın gizlilik politikasını ve hizmet şartlarını kabul etmiş olursunuz.",
18 "feature.publishDebugInfo.privacy": "Gizlilik ilkesi", 18 "feature.publishDebugInfo.privacy": "Gizlilik ilkesi",
19 "feature.publishDebugInfo.publish": "Onayla ve yayımla", 19 "feature.publishDebugInfo.publish": "Onayla ve yayımla",
20 "feature.publishDebugInfo.published": "Your debug log was published and is now availible at", 20 "feature.publishDebugInfo.published": "Your debug log was published and is now availible at",
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Davetiye gönder", 61 "invite.submit.label": "Davetiye gönder",
62 "invite.successInfo": "Davetiyeler başarıyla gönderildi", 62 "invite.successInfo": "Davetiyeler başarıyla gönderildi",
63 "locked.headline": "Kilitli", 63 "locked.headline": "Kilitli",
64 "locked.info": "Ferdi şu anda kilitli. Lütfen mesajlarını görmek için Ferdi'nin kilidini şifrenle aç.",
65 "locked.invalidCredentials": "Geçersiz şifre", 64 "locked.invalidCredentials": "Geçersiz şifre",
66 "locked.password.label": "Åžifre", 65 "locked.password.label": "Åžifre",
67 "locked.submit.label": "Kilidi aç", 66 "locked.submit.label": "Kilidi aç",
@@ -163,12 +162,11 @@
163 "service.errorHandler.headline": "Olamaz!", 162 "service.errorHandler.headline": "Olamaz!",
164 "service.errorHandler.message": "Hata", 163 "service.errorHandler.message": "Hata",
165 "service.errorHandler.text": "{name} yüklenemedi.", 164 "service.errorHandler.text": "{name} yüklenemedi.",
166 "service.webviewLoader.loading": "Loading {service}", 165 "service.webviewLoader.loading": "{service} yükleniyor",
167 "services.getStarted": "Haydi başlayalım", 166 "services.getStarted": "Haydi başlayalım",
168 "services.login": "Ferdi'yi kullanmak için lütfen oturum açın.", 167 "services.login": "Ferdi'yi kullanmak için lütfen oturum açın.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Ferdi'yi bir hesap olmadan kullan", 169 "services.serverless": "Ferdi'yi bir hesap olmadan kullan",
171 "services.welcome": "Ferdi'ye HoÅŸgeldiniz",
172 "settings.account.account.editButton": "Hesabı düzenle", 170 "settings.account.account.editButton": "Hesabı düzenle",
173 "settings.account.accountUnavailable": "Hesap kullanılamıyor", 171 "settings.account.accountUnavailable": "Hesap kullanılamıyor",
174 "settings.account.accountUnavailableInfo": "Ferdi'yi hesap olmadan kullanıyorsunuz. Ferdi'yi bir hesap ile kullanmak isterseniz ve hizmetlerinizin senkronize kalmasını istiyorsanız, lütfen ayarlar kısmından giriş yapın.", 172 "settings.account.accountUnavailableInfo": "Ferdi'yi hesap olmadan kullanıyorsunuz. Ferdi'yi bir hesap ile kullanmak isterseniz ve hizmetlerinizin senkronize kalmasını istiyorsanız, lütfen ayarlar kısmından giriş yapın.",
@@ -190,14 +188,14 @@
190 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})", 188 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})",
191 "settings.app.buttonClearAllCache": "Önbelleği temizle", 189 "settings.app.buttonClearAllCache": "Önbelleği temizle",
192 "settings.app.buttonInstallUpdate": "Yeniden Başlat ve Güncelleştirmeleri Kur", 190 "settings.app.buttonInstallUpdate": "Yeniden Başlat ve Güncelleştirmeleri Kur",
193 "settings.app.buttonOpenFerdiProfileFolder": "Open Profile folder", 191 "settings.app.buttonOpenFerdiProfileFolder": "Profil Dizinini aç",
194 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder", 192 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder",
195 "settings.app.buttonSearchForUpdate": "Güncellemeleri kontrol et", 193 "settings.app.buttonSearchForUpdate": "Güncellemeleri kontrol et",
196 "settings.app.cacheInfo": "Ferdi önbelleği şu anda {size} disk alanı kullanıyor.", 194 "settings.app.cacheInfo": "Ferdi önbelleği şu anda {size} disk alanı kullanıyor.",
197 "settings.app.cacheNotCleared": "Önbellek tamamen temizlenemedi", 195 "settings.app.cacheNotCleared": "Önbellek tamamen temizlenemedi",
198 "settings.app.closeSettings": "Ayarları kapat", 196 "settings.app.closeSettings": "Ayarları kapat",
199 "settings.app.currentVersion": "Geçerli sürüm:", 197 "settings.app.currentVersion": "Geçerli sürüm:",
200 "settings.app.form.accentColor": "Accent color", 198 "settings.app.form.accentColor": "Vurgu Rengi",
201 "settings.app.form.adaptableDarkMode": "Synchronize dark mode with my OS's dark mode setting", 199 "settings.app.form.adaptableDarkMode": "Synchronize dark mode with my OS's dark mode setting",
202 "settings.app.form.alwaysShowWorkspaces": "Always show workspace drawer", 200 "settings.app.form.alwaysShowWorkspaces": "Always show workspace drawer",
203 "settings.app.form.autoLaunchInBackground": "Arka planda aç", 201 "settings.app.form.autoLaunchInBackground": "Arka planda aç",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Bildirimler kapalı iken okunmamış mesaj sayısını göster", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Bildirimler kapalı iken okunmamış mesaj sayısını göster",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Güncellemeler", 255 "settings.app.headlineUpdates": "Güncellemeler",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Resmi çeviriler İngilizce ve Almanca'dır. Diğer tüm diller topluluk tabanlı çevirilerdir.",
260 "settings.app.lockInfo": "Parola Kilidi, mesajlarınızı koruma altına almanızı sağlar.\nParola Kilidi'ni kullanarak, Ferdi'yi her başlattığınızda veya sol alt köşedeki kilit simgesini veya {lockShortcut} kısayolunu kullanarak Ferdi'yi kendiniz kilitlediğinizde parolanızı girmeniz istenir.", 258 "settings.app.lockInfo": "Parola Kilidi, mesajlarınızı koruma altına almanızı sağlar.\nParola Kilidi'ni kullanarak, Ferdi'yi her başlattığınızda veya sol alt köşedeki kilit simgesini veya {lockShortcut} kısayolunu kullanarak Ferdi'yi kendiniz kilitlediğinizde parolanızı girmeniz istenir.",
261 "settings.app.lockedPassword": "Åžifre", 259 "settings.app.lockedPassword": "Åžifre",
262 "settings.app.lockedPasswordInfo": "Lütfen hatırlayacağınız bir şifre belirlediğinizden emin olun.\nBu şifreyi kaybederseniz, Ferdi'yi yeniden kurmanız gerekecektir.", 260 "settings.app.lockedPasswordInfo": "Lütfen hatırlayacağınız bir şifre belirlediğinizden emin olun.\nBu şifreyi kaybederseniz, Ferdi'yi yeniden kurmanız gerekecektir.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "Klasörü aç", 289 "settings.recipes.customService.openFolder": "Klasörü aç",
292 "settings.recipes.headline": "Mevcut servisler", 290 "settings.recipes.headline": "Mevcut servisler",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Servisleri keÅŸfet", 346 "settings.services.discoverServices": "Servisleri keÅŸfet",
349 "settings.services.headline": "Servislerin", 347 "settings.services.headline": "Servislerin",
350 "settings.services.noServicesAdded": "Bir hizmet ekleyerek baÅŸla.", 348 "settings.services.noServicesAdded": "Bir hizmet ekleyerek baÅŸla.",
351 "settings.services.nothingFound": "Üzgünüz, ancak hiçbir hizmet arama teriminizle eşleşmedi - ancak \"Özel Web Sitesi\" seçeneğini kullanarak yeni bir tane ekleyebilirsiniz. Web sitesinde, şu anda bulunduğunuz sürümden bu yana Ferdi'ye eklenen daha fazla hizmet gösterilebileceğini lütfen unutmayın. Bu yeni hizmetleri almak için lütfen Ferdi'nin daha yeni bir sürümüne geçmeyi düşünün.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Hizmetiniz yüklenemedi", 350 "settings.services.servicesRequestFailed": "Hizmetiniz yüklenemedi",
353 "settings.services.tooltip.isDisabled": "Servis devre dışı", 351 "settings.services.tooltip.isDisabled": "Servis devre dışı",
354 "settings.services.tooltip.isMuted": "Tüm sesler kapalı", 352 "settings.services.tooltip.isMuted": "Tüm sesler kapalı",
355 "settings.services.tooltip.notificationsDisabled": "Bildirimler devre dışı", 353 "settings.services.tooltip.notificationsDisabled": "Bildirimler devre dışı",
356 "settings.services.updatedInfo": "DeÄŸiÅŸikliklerin kaydedildi", 354 "settings.services.updatedInfo": "DeÄŸiÅŸikliklerin kaydedildi",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Ferdi'nin gelişmesi için yardımcı olmak ister misin?",
359 "settings.supportFerdi.headline": "Ferdi Hakkında", 356 "settings.supportFerdi.headline": "Ferdi Hakkında",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "Ferdi'nin gelişimini bağışla desteklemek istiyorsanız, her ikisinde de yapabilirsiniz", 357 "settings.supportFerdi.textDonation": "Ferdi'nin gelişimini bağışla desteklemek istiyorsanız, her ikisinde de yapabilirsiniz",
362 "settings.supportFerdi.textDonationAnd": "ve", 358 "settings.supportFerdi.textDonationAnd": "ve",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Desteğe her zaman açığız. İhtiyacımız olan yardımın bir listesini bulabilirsiniz", 364 "settings.supportFerdi.textSupportWelcome": "Desteğe her zaman açığız. İhtiyacımız olan yardımın bir listesini bulabilirsiniz",
369 "settings.supportFerdi.textSupportWelcomeHere": "burası", 365 "settings.supportFerdi.textSupportWelcomeHere": "burası",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Ferdi uygulamasını sevdiniz mi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Takım", 369 "settings.team.headline": "Takım",
diff --git a/src/i18n/locales/uk.json b/src/i18n/locales/uk.json
index 39cfeb604..fcea97c40 100644
--- a/src/i18n/locales/uk.json
+++ b/src/i18n/locales/uk.json
@@ -1,6 +1,6 @@
1{ 1{
2 "app.errorHandler.action": "Перезавантажити", 2 "app.errorHandler.action": "Перезавантажити",
3 "app.errorHandler.headline": "Something went wrong.", 3 "app.errorHandler.headline": "ЩоÑÑŒ пішло не так.",
4 "changeserver.customServerLabel": "КориÑтувацький Ñервер", 4 "changeserver.customServerLabel": "КориÑтувацький Ñервер",
5 "changeserver.headline": "Змінити Ñервер", 5 "changeserver.headline": "Змінити Ñервер",
6 "changeserver.label": "Сервер", 6 "changeserver.label": "Сервер",
@@ -9,7 +9,7 @@
9 "connectionLostBanner.cta": "Перезавантажити ÑервіÑ", 9 "connectionLostBanner.cta": "Перезавантажити ÑервіÑ",
10 "connectionLostBanner.informationLink": "Що трапилоÑÑŒ?", 10 "connectionLostBanner.informationLink": "Що трапилоÑÑŒ?",
11 "connectionLostBanner.message": "О ні! Ферді втратив з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· {name}.", 11 "connectionLostBanner.message": "О ні! Ферді втратив з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· {name}.",
12 "feature.basicAuth.signIn": "Sign In", 12 "feature.basicAuth.signIn": "Увійти",
13 "feature.nightlyBuilds.activate": "Ðктивувати", 13 "feature.nightlyBuilds.activate": "Ðктивувати",
14 "feature.nightlyBuilds.info": "Ðічні збірки - це виÑокоекÑпериментальні верÑÑ–Ñ— Ferdi, що можуть міÑтити \"неполіровані\" або незавершені функції. Ðічні збірки в оÑновному викориÑтовуютьÑÑ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°Ð¼Ð¸, щоб перевірити Ñвої нові функції та те, Ñк вони будуть працювати в фінальній верÑÑ–Ñ—. Якщо ви не знаєте, що ви робите, то радимо не активувати нічні збірки.", 14 "feature.nightlyBuilds.info": "Ðічні збірки - це виÑокоекÑпериментальні верÑÑ–Ñ— Ferdi, що можуть міÑтити \"неполіровані\" або незавершені функції. Ðічні збірки в оÑновному викориÑтовуютьÑÑ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°Ð¼Ð¸, щоб перевірити Ñвої нові функції та те, Ñк вони будуть працювати в фінальній верÑÑ–Ñ—. Якщо ви не знаєте, що ви робите, то радимо не активувати нічні збірки.",
15 "feature.nightlyBuilds.title": "Ðічні збірки", 15 "feature.nightlyBuilds.title": "Ðічні збірки",
@@ -23,30 +23,30 @@
23 "feature.quickSwitch.info": "Виберіть ÑÐµÑ€Ð²Ñ–Ñ Ð·Ð° допомогою TAB, Ñтрілок ↑ та ↓. ÐатиÑніть ENTER, щоб відкрити.", 23 "feature.quickSwitch.info": "Виберіть ÑÐµÑ€Ð²Ñ–Ñ Ð·Ð° допомогою TAB, Ñтрілок ↑ та ↓. ÐатиÑніть ENTER, щоб відкрити.",
24 "feature.quickSwitch.search": "Пошук...", 24 "feature.quickSwitch.search": "Пошук...",
25 "feature.quickSwitch.title": "Швидке перемиканнÑ", 25 "feature.quickSwitch.title": "Швидке перемиканнÑ",
26 "global.api.unhealthy": "Can't connect to Ferdi online services", 26 "global.api.unhealthy": "Ðе вдалоÑÑ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ÑÑ Ð´Ð¾ онлайн-ÑервіÑів Ferdi",
27 "global.cancel": "Cancel", 27 "global.cancel": "Відмінити",
28 "global.edit": "Редагувати", 28 "global.edit": "Редагувати",
29 "global.no": "No", 29 "global.no": "ÐÑ–",
30 "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.", 30 "global.notConnectedToTheInternet": "Ви не підключені до Інтернету.",
31 "global.ok": "Ok", 31 "global.ok": "Гаразд",
32 "global.quit": "Quit", 32 "global.quit": "Вийти",
33 "global.quitConfirmation": "Do you really want to quit Ferdi?", 33 "global.quitConfirmation": "Ви дійÑно бажаєте вийти з Ferdi?",
34 "global.save": "Save", 34 "global.save": "Зберегти",
35 "global.settings": "Settings", 35 "global.settings": "ÐалаштуваннÑ",
36 "global.spellchecker.useDefault": "ВикориÑтовувати ÑиÑтемні параметри за змовчуваннÑм ({default})", 36 "global.spellchecker.useDefault": "ВикориÑтовувати ÑиÑтемні параметри за змовчуваннÑм ({default})",
37 "global.spellchecking.autodetect": "Ðвтоматично визначати мову", 37 "global.spellchecking.autodetect": "Ðвтоматично визначати мову",
38 "global.spellchecking.autodetect.short": "Ðвтоматично", 38 "global.spellchecking.autodetect.short": "Ðвтоматично",
39 "global.spellchecking.language": "Мова перевірки правопиÑу", 39 "global.spellchecking.language": "Мова перевірки правопиÑу",
40 "global.submit": "Submit", 40 "global.submit": "Відправити",
41 "global.userAgentHelp": "Use 'https://whatmyuseragent.com/' (to discover) or 'https://developers.whatismybrowser.com/useragents/explore/' (to choose) your desired user agent and copy-paste it here.", 41 "global.userAgentHelp": "ВикориÑтовуйте 'https://whatmyuseragent.com/' (Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ) або 'https://developers.whatismy.com/useragents/explore/' (Ð´Ð»Ñ Ð²Ð¸Ð±Ð¾Ñ€Ñƒ) необхідного агента кориÑтувача Ñ– Ñкопіюйте та вÑтавте його тут.",
42 "global.userAgentPref": "Ідентифікатор браузера", 42 "global.userAgentPref": "Ідентифікатор браузера",
43 "global.yes": "Yes", 43 "global.yes": "Так",
44 "import.headline": "Імпортувати ваші ÑервіÑи з Ferdi 4", 44 "import.headline": "Імпортувати ваші ÑервіÑи з Ferdi 4",
45 "import.notSupportedHeadline": "Ðаразі ÑервіÑи не підтримуютьÑÑ Ñƒ Ferdi 5", 45 "import.notSupportedHeadline": "Ðаразі ÑервіÑи не підтримуютьÑÑ Ñƒ Ferdi 5",
46 "import.skip.label": "Я бажаю додати ÑÐµÑ€Ð²Ñ–Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ", 46 "import.skip.label": "Я бажаю додати ÑÐµÑ€Ð²Ñ–Ñ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ",
47 "import.submit.label": "Import {count} services", 47 "import.submit.label": "Імпортувати {count} ÑервіÑів",
48 "infobar.authRequestFailed": "There were errors while trying to perform an authenticated request. Please try logging out and back in if this error persists.", 48 "infobar.authRequestFailed": "СталиÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ при виконанні автентифікованого запиту. Будь лаÑка, Ñпробуйте вийти Ñ– увійти знову, Ñкщо помилка повторитьÑÑ.",
49 "infobar.buttonChangelog": "What is new?", 49 "infobar.buttonChangelog": "Що нового?",
50 "infobar.buttonInstallUpdate": "Перезавантажити Ñ– вÑтановити оновленнÑ", 50 "infobar.buttonInstallUpdate": "Перезавантажити Ñ– вÑтановити оновленнÑ",
51 "infobar.buttonReloadServices": "Перезавантажити ÑервіÑи", 51 "infobar.buttonReloadServices": "Перезавантажити ÑервіÑи",
52 "infobar.hide": "Приховати", 52 "infobar.hide": "Приховати",
@@ -61,7 +61,6 @@
61 "invite.submit.label": "ÐадіÑлати запрошеннÑ", 61 "invite.submit.label": "ÐадіÑлати запрошеннÑ",
62 "invite.successInfo": "Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ ÑƒÑпішно надіÑлані", 62 "invite.successInfo": "Ð—Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ ÑƒÑпішно надіÑлані",
63 "locked.headline": "Заблоковано", 63 "locked.headline": "Заблоковано",
64 "locked.info": "Fredi зараз заблокований. Розблокуйте Fredi з вашим паролем, щоб побачити повідомленнÑ.",
65 "locked.invalidCredentials": "Пароль не Ñ” дійÑним", 64 "locked.invalidCredentials": "Пароль не Ñ” дійÑним",
66 "locked.password.label": "Пароль", 65 "locked.password.label": "Пароль",
67 "locked.submit.label": "Розблокувати", 66 "locked.submit.label": "Розблокувати",
@@ -74,19 +73,19 @@
74 "login.email.label": "Email адреÑа", 73 "login.email.label": "Email адреÑа",
75 "login.headline": "Увійти", 74 "login.headline": "Увійти",
76 "login.invalidCredentials": "Email або пароль некоректні", 75 "login.invalidCredentials": "Email або пароль некоректні",
77 "login.link.password": "Reset password", 76 "login.link.password": "Скинути пароль",
78 "login.link.signup": "Створити безплатний акаунт", 77 "login.link.signup": "Створити безплатний акаунт",
79 "login.password.label": "Пароль", 78 "login.password.label": "Пароль",
80 "login.serverLogout": "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, увійдіть знову.", 79 "login.serverLogout": "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, увійдіть знову.",
81 "login.submit.label": "Увійти", 80 "login.submit.label": "Увійти",
82 "login.tokenExpired": "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, увійдіть знову.", 81 "login.tokenExpired": "Ваша ÑеÑÑ–Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡Ð¸Ð»Ð°ÑÑŒ, будь лаÑка, увійдіть знову.",
83 "menu.Todoss.closeTodosDrawer": "Close Todos drawer", 82 "menu.Todoss.closeTodosDrawer": "Закрити меню Завдань",
84 "menu.Todoss.openTodosDrawer": "Open Todos drawer", 83 "menu.Todoss.openTodosDrawer": "Відкрити меню Завдань",
85 "menu.app.about": "Про Ferdi", 84 "menu.app.about": "Про Ferdi",
86 "menu.app.autohideMenuBar": "Ðвтоматично приховувати меню", 85 "menu.app.autohideMenuBar": "Ðвтоматично приховувати меню",
87 "menu.app.checkForUpdates": "Перевірити наÑвніÑÑ‚ÑŒ оновлень", 86 "menu.app.checkForUpdates": "Перевірити наÑвніÑÑ‚ÑŒ оновлень",
88 "menu.app.hide": "Приховати", 87 "menu.app.hide": "Приховати",
89 "menu.app.hideOthers": "Hide Others", 88 "menu.app.hideOthers": "Приховати інші",
90 "menu.app.unhide": "Показати", 89 "menu.app.unhide": "Показати",
91 "menu.edit": "Редагувати", 90 "menu.edit": "Редагувати",
92 "menu.edit.copy": "Копіювати", 91 "menu.edit.copy": "Копіювати",
@@ -116,42 +115,42 @@
116 "menu.help.support": "Підтримка", 115 "menu.help.support": "Підтримка",
117 "menu.help.tos": "Умови викориÑтаннÑ", 116 "menu.help.tos": "Умови викориÑтаннÑ",
118 "menu.services": "Служби", 117 "menu.services": "Служби",
119 "menu.services.activatePreviousService": "Activate previous service", 118 "menu.services.activatePreviousService": "Ðктивувати попередній ÑервіÑ",
120 "menu.services.addNewService": "Add New Service...", 119 "menu.services.addNewService": "Додати новий ÑервіÑ...",
121 "menu.services.goHome": "Головна", 120 "menu.services.goHome": "Головна",
122 "menu.services.setNextServiceActive": "Activate next service", 121 "menu.services.setNextServiceActive": "Ðктивувати наÑтупний ÑервіÑ",
123 "menu.todos": "ЗавданнÑ", 122 "menu.todos": "ЗавданнÑ",
124 "menu.todos.enableTodos": "Увімкнути ЗавданнÑ", 123 "menu.todos.enableTodos": "Увімкнути ЗавданнÑ",
125 "menu.view": "ВиглÑд", 124 "menu.view": "ВиглÑд",
126 "menu.view.back": "Ðазад", 125 "menu.view.back": "Ðазад",
127 "menu.view.forward": "Вперед", 126 "menu.view.forward": "Вперед",
128 "menu.view.lockFerdi": "Lock Ferdi", 127 "menu.view.lockFerdi": "Заблокувати Ferdi",
129 "menu.view.openQuickSwitch": "Open Quick Switch", 128 "menu.view.openQuickSwitch": "Відкрити меню швидких дій",
130 "menu.view.reloadFerdi": "Reload Ferdi", 129 "menu.view.reloadFerdi": "Перезавантажити Ferdi",
131 "menu.view.reloadService": "Перезавантажити ÑервіÑ", 130 "menu.view.reloadService": "Перезавантажити ÑервіÑ",
132 "menu.view.reloadTodos": "Reload ToDos", 131 "menu.view.reloadTodos": "Перезавантажити ЗавданнÑ",
133 "menu.view.resetZoom": "Actual Size", 132 "menu.view.resetZoom": "Фактичний розмір",
134 "menu.view.toggleDarkMode": "Toggle Dark Mode", 133 "menu.view.toggleDarkMode": "Перемкнути темний режим",
135 "menu.view.toggleDevTools": "Переключити інÑтрумент розробника", 134 "menu.view.toggleDevTools": "Перемкнути інÑтрументи розробника",
136 "menu.view.toggleFullScreen": "Toggle Full Screen", 135 "menu.view.toggleFullScreen": "Перемкнути повноекранний режим",
137 "menu.view.toggleServiceDevTools": "Переключити інÑтрументи розробника ÑервіÑу", 136 "menu.view.toggleServiceDevTools": "Перемкнути інÑтрументи розробника ÑервіÑу",
138 "menu.view.toggleTodosDevTools": "Toggle Todos Developer Tools", 137 "menu.view.toggleTodosDevTools": "Перемкнути інÑтрументи розробника Завдань",
139 "menu.view.zoomIn": "Zoom In", 138 "menu.view.zoomIn": "Збільшити",
140 "menu.view.zoomOut": "Zoom Out", 139 "menu.view.zoomOut": "Зменшити",
141 "menu.window": "Window", 140 "menu.window": "Вікно",
142 "menu.window.close": "Close", 141 "menu.window.close": "Закрити",
143 "menu.window.minimize": "Minimize", 142 "menu.window.minimize": "Згорнути",
144 "menu.workspaces": "Workspaces", 143 "menu.workspaces": "Робочі проÑтори",
145 "menu.workspaces.addNewWorkspace": "Add New Workspace...", 144 "menu.workspaces.addNewWorkspace": "Додати новий робочий проÑÑ‚Ñ–Ñ€...",
146 "menu.workspaces.closeWorkspaceDrawer": "Close workspace drawer", 145 "menu.workspaces.closeWorkspaceDrawer": "Закрити меню робочих проÑторів",
147 "menu.workspaces.defaultWorkspace": "УÑÑ– ÑервіÑи", 146 "menu.workspaces.defaultWorkspace": "УÑÑ– ÑервіÑи",
148 "menu.workspaces.openWorkspaceDrawer": "Open workspace drawer", 147 "menu.workspaces.openWorkspaceDrawer": "Відкрити меню робочих проÑторів",
149 "password.email.label": "Email адреÑа", 148 "password.email.label": "Email адреÑа",
150 "password.headline": "Reset password", 149 "password.headline": "Скинути пароль",
151 "password.link.login": "Увійти до вашого акаунту", 150 "password.link.login": "Увійти до вашого акаунту",
152 "password.link.signup": "Створити безплатний акаунт", 151 "password.link.signup": "Створити безплатний акаунт",
153 "password.noUser": "No user with that email address was found", 152 "password.noUser": "Ðе знайдено жодного кориÑтувача з цією email адреÑою",
154 "password.successInfo": "Your new password was sent to your email address", 153 "password.successInfo": "Ðовий пароль надіÑлано на Вашу email адреÑу",
155 "service.crashHandler.action": "Перезавантажити {name}", 154 "service.crashHandler.action": "Перезавантажити {name}",
156 "service.crashHandler.autoReload": "Спробую автоматично відновити {name} через {seconds} Ñ", 155 "service.crashHandler.autoReload": "Спробую автоматично відновити {name} через {seconds} Ñ",
157 "service.crashHandler.headline": "О, ні!", 156 "service.crashHandler.headline": "О, ні!",
@@ -165,111 +164,110 @@
165 "service.errorHandler.text": "{name} не завантажено", 164 "service.errorHandler.text": "{name} не завантажено",
166 "service.webviewLoader.loading": "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ {service}", 165 "service.webviewLoader.loading": "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ {service}",
167 "services.getStarted": "Почати", 166 "services.getStarted": "Почати",
168 "services.login": "Please login to use Ferdi.", 167 "services.login": "Будь лаÑка, увійдіть, щоб кориÑтуватиÑÑŒ Ferdi.",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "За бажаннÑм, ви можете змінити Ñвій Ñервер Ferdi, натиÑнувши на іконку шеÑтерні у нижньому лівому куті. Якщо ви хочете перейти (з одного з розміщених Ñерверів) на викориÑÑ‚Ð°Ð½Ð½Ñ Ferdi без облікового запиÑу, зверніть увагу, що ви можете екÑпортувати Ñвої дані з цього Ñервера, а потім імпортувати Ñ—Ñ… за допомогою меню «Довідка», щоб відновити вÑÑ– Ñвої робочі проÑтори та налаштовані Ñлужби!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "ВикориÑтовувати Ferdi без облікового запиÑу",
171 "services.welcome": "ЛаÑкаво проÑимо в Ferdi", 170 "settings.account.account.editButton": "Редагувати акаунт",
172 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Обліковий Ð·Ð°Ð¿Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупний", 171 "settings.account.accountUnavailable": "Обліковий Ð·Ð°Ð¿Ð¸Ñ Ð½ÐµÐ´Ð¾Ñтупний",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "Ви викориÑтовуєте Ferdi без облікового запиÑу. Якщо ви хочете викориÑтовувати Ferdi з обліковим запиÑом та зберегти Ñвої ÑервіÑÑ– Ñинхронізованими між вÑтановленнÑми, будь лаÑка, виберіть Ñервер на вкладці \"Параметри\" Ñ– увійдіть.",
175 "settings.account.buttonSave": "Оновити профіль", 173 "settings.account.buttonSave": "Оновити профіль",
176 "settings.account.deleteAccount": "Видалити обліковий запиÑ", 174 "settings.account.deleteAccount": "Видалити обліковий запиÑ",
177 "settings.account.deleteEmailSent": "Ви отримали електронного лиÑта з поÑиланнÑм, щоб підтвердити Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу. Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ñ– дані не можна буде відновити!", 175 "settings.account.deleteEmailSent": "Ви отримали електронного лиÑта з поÑиланнÑм, щоб підтвердити Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу. Ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ñ– дані не можна буде відновити!",
178 "settings.account.deleteInfo": "Якщо Вам більше не потрібний обліковий Ð·Ð°Ð¿Ð¸Ñ Ferdi, Ви можете його видалити Ñ– вÑÑ– Ñуміжні дані.", 176 "settings.account.deleteInfo": "Якщо Вам більше не потрібний обліковий Ð·Ð°Ð¿Ð¸Ñ Ferdi, Ви можете його видалити Ñ– вÑÑ– Ñуміжні дані.",
179 "settings.account.headline": "Ðкаунт", 177 "settings.account.headline": "Ðкаунт",
180 "settings.account.headlineAccount": "Account information", 178 "settings.account.headlineAccount": "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ обліковий запиÑ",
181 "settings.account.headlineDangerZone": "Danger Zone", 179 "settings.account.headlineDangerZone": "Ðебезпечна зона",
182 "settings.account.headlineInvoices": "Invoices", 180 "settings.account.headlineInvoices": "Рахунки",
183 "settings.account.headlinePassword": "Change password", 181 "settings.account.headlinePassword": "Змінити пароль",
184 "settings.account.headlineProfile": "Оновити профіль", 182 "settings.account.headlineProfile": "Оновити профіль",
185 "settings.account.successInfo": "Ваші зміни були збережені", 183 "settings.account.successInfo": "Ваші зміни були збережені",
186 "settings.account.tryReloadServices": "Спробуйте ще раз", 184 "settings.account.tryReloadServices": "Спробуйте ще раз",
187 "settings.account.tryReloadUserInfoRequest": "Спробуйте ще раз", 185 "settings.account.tryReloadUserInfoRequest": "Спробуйте ще раз",
188 "settings.account.userInfoRequestFailed": "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ інформацію кориÑтувача", 186 "settings.account.userInfoRequestFailed": "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ інформацію кориÑтувача",
189 "settings.account.yourLicense": "Your Ferdi License:", 187 "settings.account.yourLicense": "Ваша Ð»Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ Ferdi:",
190 "settings.app.accentColorInfo": "Write your accent color in a CSS-compatible format. (Default: {defaultAccentColor})", 188 "settings.app.accentColorInfo": "Ðапишіть ваш акцентний колір у CSS-ÑуміÑному форматі (За замовчуваннÑм: {defaultAccentColor})",
191 "settings.app.buttonClearAllCache": "ОчиÑтити кеш", 189 "settings.app.buttonClearAllCache": "ОчиÑтити кеш",
192 "settings.app.buttonInstallUpdate": "Перезавантажити Ñ– вÑтановити оновленнÑ", 190 "settings.app.buttonInstallUpdate": "Перезавантажити Ñ– вÑтановити оновленнÑ",
193 "settings.app.buttonOpenFerdiProfileFolder": "Open Profile folder", 191 "settings.app.buttonOpenFerdiProfileFolder": "Відкрити папку профілю",
194 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Open Service Recipes folder", 192 "settings.app.buttonOpenFerdiServiceRecipesFolder": "Відкрити папку ÑервіÑних протоколів",
195 "settings.app.buttonSearchForUpdate": "Перевірити наÑвніÑÑ‚ÑŒ оновлень", 193 "settings.app.buttonSearchForUpdate": "Перевірити наÑвніÑÑ‚ÑŒ оновлень",
196 "settings.app.cacheInfo": "Кеш, Ñкий викориÑтовує Ferdi, займає {size} диÑкового проÑтору.", 194 "settings.app.cacheInfo": "Кеш, Ñкий викориÑтовує Ferdi, займає {size} диÑкового проÑтору.",
197 "settings.app.cacheNotCleared": "Couldn't clear all cache", 195 "settings.app.cacheNotCleared": "Ðе вдалоÑÑ Ð¾Ñ‡Ð¸Ñтити веÑÑŒ кеш",
198 "settings.app.closeSettings": "Close settings", 196 "settings.app.closeSettings": "Закрити налаштуваннÑ",
199 "settings.app.currentVersion": "Поточна верÑÑ–Ñ:", 197 "settings.app.currentVersion": "Поточна верÑÑ–Ñ:",
200 "settings.app.form.accentColor": "Accent color", 198 "settings.app.form.accentColor": "Ðкцентний колір",
201 "settings.app.form.adaptableDarkMode": "Synchronize dark mode with my OS's dark mode setting", 199 "settings.app.form.adaptableDarkMode": "Синхронизувати темний режим з наташтуванннÑми темного режиму моєї ОС",
202 "settings.app.form.alwaysShowWorkspaces": "Always show workspace drawer", 200 "settings.app.form.alwaysShowWorkspaces": "Завжди показувати меню робочого проÑтору",
203 "settings.app.form.autoLaunchInBackground": "Відкрити у фоновому режимі", 201 "settings.app.form.autoLaunchInBackground": "Відкрити у фоновому режимі",
204 "settings.app.form.autoLaunchOnStart": "ЗапуÑкати Ferdi на початку", 202 "settings.app.form.autoLaunchOnStart": "ЗапуÑкати Ferdi на початку",
205 "settings.app.form.automaticUpdates": "Enable updates", 203 "settings.app.form.automaticUpdates": "Увімкнути оновленнÑ",
206 "settings.app.form.beta": "Включити бета-верÑÑ–Ñ—", 204 "settings.app.form.beta": "Включити бета-верÑÑ–Ñ—",
207 "settings.app.form.clipboardNotifications": "Don't show notifications for clipboard events", 205 "settings.app.form.clipboardNotifications": "Ðе показувати ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ–Ð¹ буфера обміну",
208 "settings.app.form.closeToSystemTray": "Close Ferdi to system tray", 206 "settings.app.form.closeToSystemTray": "При закритті згортати Ferdi до ÑиÑтемного трею",
209 "settings.app.form.confirmOnQuit": "Confirm when quitting Ferdi", 207 "settings.app.form.confirmOnQuit": "Підтверджувати вихід з Ferdi",
210 "settings.app.form.customTodoServer": "Custom Todo Server", 208 "settings.app.form.customTodoServer": "КориÑтувацький Ñервер Завдань",
211 "settings.app.form.darkMode": "Переходь на Темну Сторону", 209 "settings.app.form.darkMode": "Переходь на Темну Сторону",
212 "settings.app.form.enableGPUAcceleration": "Ввімкнути приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ GPU", 210 "settings.app.form.enableGPUAcceleration": "Ввімкнути приÑÐºÐ¾Ñ€ÐµÐ½Ð½Ñ GPU",
213 "settings.app.form.enableGlobalHideShortcut": "Enable Global shortcut to hide Ferdi", 211 "settings.app.form.enableGlobalHideShortcut": "Увімкнути глобальну комбінацію клавіш Ð´Ð»Ñ Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð½Ñ Ferdi",
214 "settings.app.form.enableLock": "Enable Password Lock", 212 "settings.app.form.enableLock": "Увімкнути Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ð¾Ð¼ допуÑку",
215 "settings.app.form.enableLongPressServiceHint": "Enable service shortcut hint on long press", 213 "settings.app.form.enableLongPressServiceHint": "Увімкнути підказку комбінації клавіш Ð´Ð»Ñ ÑервіÑу при довгому натиÑканні",
216 "settings.app.form.enableMenuBar": "Always show Ferdi in Menu Bar", 214 "settings.app.form.enableMenuBar": "Завжди показувати Ferdi в меню",
217 "settings.app.form.enableSpellchecking": "Увімкнути перевірку орфографії", 215 "settings.app.form.enableSpellchecking": "Увімкнути перевірку орфографії",
218 "settings.app.form.enableSystemTray": "Always show Ferdi in System Tray", 216 "settings.app.form.enableSystemTray": "Завжди показувати Ferdi в ÑиÑтемному треї",
219 "settings.app.form.enableTodos": "Enable Ferdi Todos", 217 "settings.app.form.enableTodos": "Увімкнути Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ferdi",
220 "settings.app.form.hibernateOnStartup": "Keep services in hibernation on startup", 218 "settings.app.form.hibernateOnStartup": "Залишати ÑервіÑи в режимі глибокого Ñну при запуÑку",
221 "settings.app.form.hibernationStrategy": "Hibernation strategy", 219 "settings.app.form.hibernationStrategy": "Ð¡Ñ‚Ñ€Ð°Ñ‚ÐµÐ³Ñ–Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ глибокого Ñну",
222 "settings.app.form.iconSize": "Service icon size", 220 "settings.app.form.iconSize": "Розмір іконки ÑервіÑа",
223 "settings.app.form.inactivityLock": "Lock after inactivity", 221 "settings.app.form.inactivityLock": "Блокувати піÑÐ»Ñ Ð±ÐµÐ·Ð´Ñ–ÑльноÑÑ‚Ñ–",
224 "settings.app.form.keepAllWorkspacesLoaded": "Keep all workspaces loaded", 222 "settings.app.form.keepAllWorkspacesLoaded": "Зберігати вÑÑ– робочі проÑтори завантаженими",
225 "settings.app.form.language": "Мова", 223 "settings.app.form.language": "Мова",
226 "settings.app.form.lockPassword": "Пароль", 224 "settings.app.form.lockPassword": "Пароль",
227 "settings.app.form.minimizeToSystemTray": "Мінімізувати Ferdi до ÑиÑтемного лотка", 225 "settings.app.form.minimizeToSystemTray": "Мінімізувати Ferdi до ÑиÑтемного лотка",
228 "settings.app.form.navigationBarBehaviour": "Navigation bar behaviour", 226 "settings.app.form.navigationBarBehaviour": "Поведінка панелі навігації",
229 "settings.app.form.notifyTaskBarOnMessage": "Notify TaskBar/Dock on new message", 227 "settings.app.form.notifyTaskBarOnMessage": "Повідомити панель завдань/Dock про нове повідомленнÑ",
230 "settings.app.form.passwordToggle": "Password toggle", 228 "settings.app.form.passwordToggle": "Перемкнути пароль",
231 "settings.app.form.predefinedTodoServer": "Todo Server", 229 "settings.app.form.predefinedTodoServer": "Сервер Завдань",
232 "settings.app.form.privateNotifications": "Don't show message content in notifications", 230 "settings.app.form.privateNotifications": "Ðе показувати вміÑÑ‚ повідомлень в ÑповіщеннÑÑ…",
233 "settings.app.form.reloadAfterResume": "Reload Ferdi after system resume", 231 "settings.app.form.reloadAfterResume": "Перезавантажити Ferdi піÑÐ»Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ ÑиÑтеми",
234 "settings.app.form.runInBackground": "Тримати Ferdi в фоні при закритті вікна", 232 "settings.app.form.runInBackground": "Тримати Ferdi в фоні при закритті вікна",
235 "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb", 233 "settings.app.form.scheduledDNDEnabled": "Увімкнути запланований режим \"не турбувати\"",
236 "settings.app.form.scheduledDNDEnd": "До", 234 "settings.app.form.scheduledDNDEnd": "До",
237 "settings.app.form.scheduledDNDStart": "Від", 235 "settings.app.form.scheduledDNDStart": "Від",
238 "settings.app.form.searchEngine": "Search engine", 236 "settings.app.form.searchEngine": "Пошукова ÑиÑтема",
239 "settings.app.form.sentry": "Send telemetry data", 237 "settings.app.form.sentry": "ÐадÑилати дані телеметрії",
240 "settings.app.form.serviceRibbonWidth": "Sidebar width", 238 "settings.app.form.serviceRibbonWidth": "Ширина бічної панелі",
241 "settings.app.form.showDisabledServices": "Показати вкладку вимкнених ÑервіÑів", 239 "settings.app.form.showDisabledServices": "Показати вкладку вимкнених ÑервіÑів",
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Показати у вікні облаÑÑ‚ÑŒ, Ñку можна перетÑгнути",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Показувати значок непрочитаних повідомлень коли ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ñ–", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Показувати значок непрочитаних повідомлень коли ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ñ–",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Показувати назву ÑервіÑу під іконкою",
245 "settings.app.form.splitMode": "Enable Split View Mode", 243 "settings.app.form.splitColumns": "КількіÑÑ‚ÑŒ Ñтовпчиків",
244 "settings.app.form.splitMode": "Увімкнути режим розділеного переглÑду",
246 "settings.app.form.startMinimized": "ЗапуÑкати згорнутим", 245 "settings.app.form.startMinimized": "ЗапуÑкати згорнутим",
247 "settings.app.form.universalDarkMode": "Увімкнути універÑальний темний режим", 246 "settings.app.form.universalDarkMode": "Увімкнути універÑальний темний режим",
248 "settings.app.form.useTouchIdToUnlock": "Allow using TouchID to unlock Ferdi", 247 "settings.app.form.useTouchIdToUnlock": "Дозволити викориÑÑ‚Ð°Ð½Ð½Ñ TouchID Ð´Ð»Ñ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ferdi",
249 "settings.app.form.useVerticalStyle": "Use horizontal style", 248 "settings.app.form.useVerticalStyle": "ВикориÑтовувати горизонтальний Ñтиль",
250 "settings.app.form.wakeUpStrategy": "Wake up strategy", 249 "settings.app.form.wakeUpStrategy": "Ð¡Ñ‚Ñ€Ð°Ñ‚ÐµÐ³Ñ–Ñ Ð¿Ñ€Ð¾Ð±ÑƒÐ´Ð¶ÐµÐ½Ð½Ñ",
251 "settings.app.headlineAdvanced": "Додаткові налаштуваннÑ", 250 "settings.app.headlineAdvanced": "Додаткові налаштуваннÑ",
252 "settings.app.headlineAppearance": "ВиглÑд", 251 "settings.app.headlineAppearance": "ВиглÑд",
253 "settings.app.headlineGeneral": "Загальні", 252 "settings.app.headlineGeneral": "Загальні",
254 "settings.app.headlineLanguage": "Мова", 253 "settings.app.headlineLanguage": "Мова",
255 "settings.app.headlinePrivacy": "Privacy", 254 "settings.app.headlinePrivacy": "КонфіденційніÑÑ‚ÑŒ",
256 "settings.app.headlineUpdates": "ОновленнÑ", 255 "settings.app.headlineUpdates": "ОновленнÑ",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "За замовчуваннÑм, Ferdi залишає вÑÑ– ваші ÑервіÑи відкритими та завантажує Ñ—Ñ… у фоновому режимі, щоб вони були готові, коли ви захочете Ñ—Ñ… викориÑтати. Режим глибокого Ñну розвантажить ваші ÑервіÑи піÑÐ»Ñ Ð·Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ñ— кількоÑÑ‚Ñ– хвилин. Це кориÑно Ð´Ð»Ñ Ð·Ð°Ð¾Ñ‰Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ñ— пам’ÑÑ‚Ñ– або щоб поÑлуги не Ñповільнювали роботу комп’ютера.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "КількіÑÑ‚ÑŒ хвилин бездіÑльноÑÑ‚Ñ–, піÑÐ»Ñ Ñкої Ferdi буде автоматично блокуватиÑÑŒ. ВикориÑтайте 0, щоб не блокуватиÑÑŒ",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.", 258 "settings.app.lockInfo": "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼ дозволÑÑ” зберігати ваші Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² безпеці.\nВикориÑтовуючи Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»ÐµÐ¼, вам буде запропоновано ввеÑти пароль кожен раз, коли ви запуÑкаєте Ferdi або блокуєте Ferdi влаÑноруч за допомогою Ñимволу замочку в нижньому лівому куті або комбінації клавіш {lockShortcut}.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Пароль", 259 "settings.app.lockedPassword": "Пароль",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Обов’Ñзково вÑтановіть пароль, Ñкий ви запам’Ñтаєте.\nЯкщо ви втратите цей пароль, вам доведетьÑÑ Ð¿ÐµÑ€ÐµÐ²Ñтановити Ferdi.",
263 "settings.app.restartRequired": "Зміни потребують перезапуÑку", 261 "settings.app.restartRequired": "Зміни потребують перезапуÑку",
264 "settings.app.scheduledDNDInfo": "Scheduled Do-not-Disturb allows you to define a period of time in which you do not want to get Notifications from Ferdi.", 262 "settings.app.scheduledDNDInfo": "Запланований режим \"не турбувати\" дозволÑÑ” визначити проміжок чаÑу, в Ñкий ви не хочете отримувати ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ Ferdi.",
265 "settings.app.scheduledDNDTimeInfo": "Times in 24-Hour-Format. End time can be before start time (e.g. start 17:00, end 09:00) to enable Do-not-Disturb overnight.", 263 "settings.app.scheduledDNDTimeInfo": "Ð§Ð°Ñ Ð² 24-годинному форматі. Ð§Ð°Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ðµ бути меньшим за Ñ‡Ð°Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ (наприклад, Ñтарт - 17:00, кінець - 09:00) щоб увімкнути режим \"не турбувати\" вночі.",
266 "settings.app.sentryInfo": "Sending telemetry data allows us to find errors in Ferdi - we will not send any personal information like your message data!", 264 "settings.app.sentryInfo": "ÐадÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… телеметрії дозволÑÑ” знайти помилки у Ferdi - ми не надÑилатимемо жодної оÑобиÑтої інформації, такої Ñк ваше повідомленнÑ!",
267 "settings.app.spellCheckerLanguageInfo": "Ferdi uses your Mac's build-in spellchecker to check for typos. If you want to change the languages the spellchecker checks for, you can do so in your Mac's System Preferences.", 265 "settings.app.spellCheckerLanguageInfo": "Ferdi викориÑтовує вбудований у ваш Mac заÑіб перевірки орфографії Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ помилок. Якщо ви хочете змінити мови Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ¸ орфографії, ви можете зробити це в налаштуваннÑÑ… ÑиÑтеми вашого Mac.",
268 "settings.app.subheadlineCache": "Кеш", 266 "settings.app.subheadlineCache": "Кеш",
269 "settings.app.subheadlineFerdiProfile": "Ferdi Profile", 267 "settings.app.subheadlineFerdiProfile": "Обліковий Ð·Ð°Ð¿Ð¸Ñ Ferdi",
270 "settings.app.todoServerInfo": "This server will be used for the \"Ferdi Todo\" feature.", 268 "settings.app.todoServerInfo": "Цей Ñервер буде викориÑтовуватиÑÑ Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Завдань Ferdi.",
271 "settings.app.translationHelp": "Допоможіть переклаÑти Ferdi на Вашу мову.", 269 "settings.app.translationHelp": "Допоможіть переклаÑти Ferdi на Вашу мову.",
272 "settings.app.universalDarkModeInfo": "Universal Dark Mode tries to dynamically generate dark mode styles for services that are otherwise not currently supported.", 270 "settings.app.universalDarkModeInfo": "УніверÑальний темний режим намагаєтьÑÑ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾ генерувати Ñтилі темного режиму Ð´Ð»Ñ ÑервіÑів, Ñкі поки не підтримують цей режим.",
273 "settings.app.updateStatusAvailable": "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупне, завантаженнÑ...", 271 "settings.app.updateStatusAvailable": "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñтупне, завантаженнÑ...",
274 "settings.app.updateStatusSearching": "Шукає оновленнÑ", 272 "settings.app.updateStatusSearching": "Шукає оновленнÑ",
275 "settings.app.updateStatusUpToDate": "Ви викориÑтовуєте оÑтанню верÑÑ–ÑŽ Ferdi", 273 "settings.app.updateStatusUpToDate": "Ви викориÑтовуєте оÑтанню верÑÑ–ÑŽ Ferdi",
@@ -278,20 +276,20 @@
278 "settings.navigation.availableServices": "ДоÑтупні ÑервіÑи", 276 "settings.navigation.availableServices": "ДоÑтупні ÑервіÑи",
279 "settings.navigation.logout": "Вийти", 277 "settings.navigation.logout": "Вийти",
280 "settings.navigation.supportFerdi": "Про Ferdi", 278 "settings.navigation.supportFerdi": "Про Ferdi",
281 "settings.navigation.team": "Manage Team", 279 "settings.navigation.team": "Керувати командою",
282 "settings.navigation.yourServices": "Ваші ÑервіÑи", 280 "settings.navigation.yourServices": "Ваші ÑервіÑи",
283 "settings.navigation.yourWorkspaces": "Your workspaces", 281 "settings.navigation.yourWorkspaces": "Ваші робочі проÑтори",
284 "settings.recipes.all": "УÑÑ– ÑервіÑи", 282 "settings.recipes.all": "УÑÑ– ÑервіÑи",
285 "settings.recipes.custom": "Custom Services", 283 "settings.recipes.custom": "КориÑтувацькі ÑервіÑи",
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Сторонні протоколи за підтримки Ñпільноти",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "КориÑтувацькі Ñторонні протоколи",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Ваші розроблені ÑервіÑні протоколи",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "Щоб додати кориÑтувацький ÑервіÑ, Ñкопіюйте ÑервіÑний протокол в папку:",
290 "settings.recipes.customService.openDevDocs": "Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°", 288 "settings.recipes.customService.openDevDocs": "Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ Ñ€Ð¾Ð·Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ°",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Відкрити папку",
292 "settings.recipes.headline": "ДоÑтупні ÑервіÑи", 290 "settings.recipes.headline": "ДоÑтупні ÑервіÑи",
293 "settings.recipes.missingService": "Ðе знайшли ÑервіÑу?", 291 "settings.recipes.missingService": "Ðе знайшли ÑервіÑ?",
294 "settings.recipes.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 292 "settings.recipes.nothingFound": "Вибачте, але жоден ÑÐµÑ€Ð²Ñ–Ñ Ð½Ðµ відповідає вашому пошуковому запиту. Ðле, можливо, ви можете додати його за допомогою опції «Custom Website». Зауважте, що на веб-Ñайті може відображатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ ÑервіÑів, Ñкі могли бути додані у нових верÑÑ–ÑÑ… Ferdi. Щоб отримати ці нові ÑервіÑи, оновіть Ferdi до новішої верÑÑ–Ñ—.",
295 "settings.recipes.servicesSuccessfulAddedInfo": "Ð¡ÐµÑ€Ð²Ñ–Ñ ÑƒÑпішно додано", 293 "settings.recipes.servicesSuccessfulAddedInfo": "Ð¡ÐµÑ€Ð²Ñ–Ñ ÑƒÑпішно додано",
296 "settings.searchService": "Знайти ÑервіÑ", 294 "settings.searchService": "Знайти ÑервіÑ",
297 "settings.service.error.goBack": "ПовернутиÑÑŒ до ÑервіÑів", 295 "settings.service.error.goBack": "ПовернутиÑÑŒ до ÑервіÑів",
@@ -301,20 +299,20 @@
301 "settings.service.form.availableServices": "ДоÑтупні ÑервіÑи", 299 "settings.service.form.availableServices": "ДоÑтупні ÑервіÑи",
302 "settings.service.form.customUrl": "КориÑтувацький Ñервер", 300 "settings.service.form.customUrl": "КориÑтувацький Ñервер",
303 "settings.service.form.customUrlValidationError": "Ðе вдалоÑÑŒ підтвердити влаÑний {name} Ñервер.", 301 "settings.service.form.customUrlValidationError": "Ðе вдалоÑÑŒ підтвердити влаÑний {name} Ñервер.",
304 "settings.service.form.darkReaderBrightness": "Dark Reader Brightness", 302 "settings.service.form.darkReaderBrightness": "ЯÑкравіÑÑ‚ÑŒ темного режиму",
305 "settings.service.form.darkReaderContrast": "Dark Reader Contrast", 303 "settings.service.form.darkReaderContrast": "КонтраÑтніÑÑ‚ÑŒ темного режиму",
306 "settings.service.form.darkReaderSepia": "Dark Reader Sepia", 304 "settings.service.form.darkReaderSepia": "Ð¡ÐµÐ¿Ñ–Ñ Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ режиму",
307 "settings.service.form.deleteButton": "Delete service", 305 "settings.service.form.deleteButton": "Видалити ÑервіÑ",
308 "settings.service.form.editServiceHeadline": "Редагувати {name}", 306 "settings.service.form.editServiceHeadline": "Редагувати {name}",
309 "settings.service.form.enableAudio": "Увімкнути звук", 307 "settings.service.form.enableAudio": "Увімкнути звук",
310 "settings.service.form.enableBadge": "Показувати непрочитані повідомленнÑ", 308 "settings.service.form.enableBadge": "Показувати непрочитані повідомленнÑ",
311 "settings.service.form.enableDarkMode": "Переходь на Темну Сторону", 309 "settings.service.form.enableDarkMode": "Переходь на Темну Сторону",
312 "settings.service.form.enableHibernation": "Enable hibernation", 310 "settings.service.form.enableHibernation": "Увімкнути режим глибокого Ñну",
313 "settings.service.form.enableNotification": "Увімкнути ÑповіщеннÑ", 311 "settings.service.form.enableNotification": "Увімкнути ÑповіщеннÑ",
314 "settings.service.form.enableService": "Увімкнути ÑервіÑ", 312 "settings.service.form.enableService": "Увімкнути ÑервіÑ",
315 "settings.service.form.enableWakeUp": "Enable wake up", 313 "settings.service.form.enableWakeUp": "Увімкнути пробудженнÑ",
316 "settings.service.form.headlineBadges": "Значки непрочитаних повідомлень", 314 "settings.service.form.headlineBadges": "Значки непрочитаних повідомлень",
317 "settings.service.form.headlineDarkReaderSettings": "Dark Reader Settings", 315 "settings.service.form.headlineDarkReaderSettings": "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ режиму",
318 "settings.service.form.headlineGeneral": "Загальні", 316 "settings.service.form.headlineGeneral": "Загальні",
319 "settings.service.form.headlineNotifications": "СповіщеннÑ", 317 "settings.service.form.headlineNotifications": "СповіщеннÑ",
320 "settings.service.form.icon": "Ð¡Ð²Ð¾Ñ Ñ–ÐºÐ¾Ð½ÐºÐ°", 318 "settings.service.form.icon": "Ð¡Ð²Ð¾Ñ Ñ–ÐºÐ¾Ð½ÐºÐ°",
@@ -322,22 +320,22 @@
322 "settings.service.form.iconUpload": "Скиньте Ñвоє Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ натиÑніть тут", 320 "settings.service.form.iconUpload": "Скиньте Ñвоє Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ натиÑніть тут",
323 "settings.service.form.indirectMessageInfo": "Ви отримаєте ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ вÑÑ– нові Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² каналі, а не лише про @username, @channel, @here, ...", 321 "settings.service.form.indirectMessageInfo": "Ви отримаєте ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ вÑÑ– нові Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² каналі, а не лише про @username, @channel, @here, ...",
324 "settings.service.form.indirectMessages": "Показувати значок Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… нових повідомлень", 322 "settings.service.form.indirectMessages": "Показувати значок Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… нових повідомлень",
325 "settings.service.form.isHibernatedEnabledInfo": "When enabled, a service will be shut down after a period of time to save system resources.", 323 "settings.service.form.isHibernatedEnabledInfo": "Коли ввімкнено, ÑÐµÑ€Ð²Ñ–Ñ Ð±ÑƒÐ´Ðµ вимикатиÑÑŒ через деÑкий Ñ‡Ð°Ñ Ð´Ð»Ñ ÐµÐºÐ¾Ð½Ð¾Ð¼Ñ–Ñ— ÑиÑтемних реÑурÑів.",
326 "settings.service.form.isMutedInfo": "Коли вимкнено, вÑÑ– ÑÐ¿Ð¾Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑŽÑ‚ÑŒÑÑ", 324 "settings.service.form.isMutedInfo": "Коли вимкнено, вÑÑ– ÑÐ¿Ð¾Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑŽÑ‚ÑŒÑÑ",
327 "settings.service.form.name": "Ім'Ñ", 325 "settings.service.form.name": "Ім'Ñ",
328 "settings.service.form.onlyShowFavoritesInUnreadCount": "Only show Favorites in unread count", 326 "settings.service.form.onlyShowFavoritesInUnreadCount": "Показувати лише \"обраних\" у кількоÑÑ‚Ñ– непрочитаних",
329 "settings.service.form.openDarkmodeCss": "Open darkmode.css", 327 "settings.service.form.openDarkmodeCss": "Відкрити darkmode.css",
330 "settings.service.form.openUserCss": "Відкрити user.css", 328 "settings.service.form.openUserCss": "Відкрити user.css",
331 "settings.service.form.openUserJs": "Відкрити user.js", 329 "settings.service.form.openUserJs": "Відкрити user.js",
332 "settings.service.form.proxy.headline": "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ HTTP/HTTPS прокÑÑ– ", 330 "settings.service.form.proxy.headline": "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ HTTP/HTTPS прокÑÑ– ",
333 "settings.service.form.proxy.host": "ПрокÑÑ– Host/IP", 331 "settings.service.form.proxy.host": "ПрокÑÑ– Host/IP",
334 "settings.service.form.proxy.info": "Proxy settings will not be synchronized with the Ferdi servers.", 332 "settings.service.form.proxy.info": "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÐºÑÑ– не будуть ÑинхронізовуватиÑÑŒ із Ñерверами Ferdi.",
335 "settings.service.form.proxy.isEnabled": "ВикориÑтовувати прокÑÑ–", 333 "settings.service.form.proxy.isEnabled": "ВикориÑтовувати прокÑÑ–",
336 "settings.service.form.proxy.password": "Password (optional)", 334 "settings.service.form.proxy.password": "Пароль (опціонально)",
337 "settings.service.form.proxy.port": "Порт", 335 "settings.service.form.proxy.port": "Порт",
338 "settings.service.form.proxy.restartInfo": "Будь лаÑка, перезапуÑÑ‚Ñ–Ñ‚ÑŒ Ferdi піÑÐ»Ñ Ð·Ð¼Ñ–Ð½Ð¸ налуштувань прокÑÑ–", 336 "settings.service.form.proxy.restartInfo": "Будь лаÑка, перезапуÑÑ‚Ñ–Ñ‚ÑŒ Ferdi піÑÐ»Ñ Ð·Ð¼Ñ–Ð½Ð¸ налуштувань прокÑÑ–",
339 "settings.service.form.proxy.user": "User (optional)", 337 "settings.service.form.proxy.user": "КориÑтувач (опціонально)",
340 "settings.service.form.recipeFileInfo": "Your user files will be inserted into the webpage so you can customize services in any way you like. User files are only stored locally and are not transferred to other computers using the same account.", 338 "settings.service.form.recipeFileInfo": "Ваші кориÑтувацькі файли будуть вÑтавлені у веб-Ñторінку, тож ви маєте змогу перÑоналізувати ÑервіÑи так, Ñк вам завгодно. КориÑтувацькі файли зберігаютьÑÑ Ð»Ð¸ÑˆÐµ локально Ñ– не передаютьÑÑ Ð½Ð° інші комп'ютери, Ñкі викориÑтовують той Ñамий обліковий запиÑ.",
341 "settings.service.form.saveButton": "Зберегти ÑервіÑ", 339 "settings.service.form.saveButton": "Зберегти ÑервіÑ",
342 "settings.service.form.tabHosted": "Розміщений", 340 "settings.service.form.tabHosted": "Розміщений",
343 "settings.service.form.tabOnPremise": "СамоÑтійно розміщений â­ï¸", 341 "settings.service.form.tabOnPremise": "СамоÑтійно розміщений â­ï¸",
@@ -347,114 +345,111 @@
347 "settings.services.deletedInfo": "Ð¡ÐµÑ€Ð²Ñ–Ñ Ð±ÑƒÐ»Ð¾ видалено", 345 "settings.services.deletedInfo": "Ð¡ÐµÑ€Ð²Ñ–Ñ Ð±ÑƒÐ»Ð¾ видалено",
348 "settings.services.discoverServices": "Відкрийте Ð´Ð»Ñ Ñебе ÑервіÑи", 346 "settings.services.discoverServices": "Відкрийте Ð´Ð»Ñ Ñебе ÑервіÑи",
349 "settings.services.headline": "Ваші ÑервіÑи", 347 "settings.services.headline": "Ваші ÑервіÑи",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Почніть з Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ ÑервіÑу.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ ваші ÑервіÑи",
353 "settings.services.tooltip.isDisabled": "Ð¡ÐµÑ€Ð²Ñ–Ñ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹", 351 "settings.services.tooltip.isDisabled": "Ð¡ÐµÑ€Ð²Ñ–Ñ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹",
354 "settings.services.tooltip.isMuted": "Ð’ÑÑ– звуки вимкнено", 352 "settings.services.tooltip.isMuted": "Ð’ÑÑ– звуки вимкнено",
355 "settings.services.tooltip.notificationsDisabled": "Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ–", 353 "settings.services.tooltip.notificationsDisabled": "Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ–",
356 "settings.services.updatedInfo": "Ваші зміни були збережені", 354 "settings.services.updatedInfo": "Ваші зміни були збережені",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi Ñ” програмою з відкритим вихідним кодом, Ñкою керує Ñпільнота.</p><p>ДÑкуємо людÑм, Ñкі роблÑÑ‚ÑŒ це можливим:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "Про Ferdi", 356 "settings.supportFerdi.headline": "Про Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey", 357 "settings.supportFerdi.textDonation": "Якщо ви хочете підтримать розвиток Ferdi за допомогою пожертви, ви можете зробити це на",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 358 "settings.supportFerdi.textDonationAnd": "та",
362 "settings.supportFerdi.textDonationAnd": "and", 359 "settings.supportFerdi.textExpenses": "Хоча більшу чаÑтину роботи виконують волонтери, нам вÑе ще потрібно платити за Ñервери та Ñертифікати. Як Ñпільнота, ми повніÑÑ‚ÑŽ прозорі щодо коштів, Ñкі збираємо та витрачаємо – дивиÑÑŒ наш",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 360 "settings.supportFerdi.textGitHubSponsors": "GitHub СпонÑори",
364 "settings.supportFerdi.textGitHubSponsors": "GitHub Sponsors", 361 "settings.supportFerdi.textListContributors": "Повний ÑпиÑок учаÑників",
365 "settings.supportFerdi.textListContributors": "Full list of contributors", 362 "settings.supportFerdi.textListContributorsHere": "тут",
366 "settings.supportFerdi.textListContributorsHere": "here",
367 "settings.supportFerdi.textOpenCollective": "Open Collective", 363 "settings.supportFerdi.textOpenCollective": "Open Collective",
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Підтримка завжди вітаєтьÑÑ. Ви можете знайти ÑпиÑок необхідної нам допомоги",
369 "settings.supportFerdi.textSupportWelcomeHere": "here", 365 "settings.supportFerdi.textSupportWelcomeHere": "тут",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "Розробкою Ferdi займаютьÑÑ Ð²Ð¾Ð»Ð¾Ð½Ñ‚ÐµÑ€Ð¸. Люди, Ñкі викориÑтовують Ferdi, Ñк Ñ– ви. Вони обÑлуговують, виправлÑÑŽÑ‚ÑŒ та покращують Ferdi у вільний чаÑ.",
371 "settings.supportFerdi.title": "Do you like Ferdi?", 367 "settings.team.contentHeadline": "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ Franz",
372 "settings.team.contentHeadline": "Franz Team Management", 368 "settings.team.copy": "Ð¡ÐµÑ€Ð²Ñ–Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ Franz дозволÑÑ” керувати підпиÑкою Franz Ð´Ð»Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ñ… кориÑтувачів. Будь лаÑка, майте на увазі, що підпиÑка Franz Premium не надаÑÑ‚ÑŒ вам жодних переваг у викориÑтанні Ferdi. Єдина причина, чому ви вÑе ще маєте доÑтуп до ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ, полÑгає в тому, щоб ви могли керувати Ñвоїми заÑтарілими командами Franz Teams Ñ– щоб ви не втратили жодних функцій ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñвоїм обліковим запиÑом.",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "Команда", 369 "settings.team.headline": "Команда",
375 "settings.team.intro": "You are currently using Franz Servers, which is why you have access to Team Management.", 370 "settings.team.intro": "Зараз ви викориÑтовуєте Ñервери Franz, тому ви маєте доÑтуп до ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾ÑŽ.",
376 "settings.team.manageAction": "Manage your Team on meetfranz.com", 371 "settings.team.manageAction": "Керуйте вашою командою на meetfranz.com",
377 "settings.team.teamsUnavailable": "Teams are unavailable", 372 "settings.team.teamsUnavailable": "Команди недоÑтупні",
378 "settings.team.teamsUnavailableInfo": "Teams are currently only available when using the Franz Server and after paying for Franz Professional. Please change your server to https://api.franzinfra.com to use teams.", 373 "settings.team.teamsUnavailableInfo": "Команди на даний момент доÑтупні тільки при викориÑтанні Ñерверу Franz Ñ– піÑÐ»Ñ Ð¾Ð¿Ð»Ð°Ñ‚Ð¸ за Franz Professional. Будь лаÑка, змініть ваш Ñервер на https://api.franzinfra.com Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´.",
379 "settings.user.form.accountType.company": "КомпаніÑ", 374 "settings.user.form.accountType.company": "КомпаніÑ",
380 "settings.user.form.accountType.individual": "Індивідуальний", 375 "settings.user.form.accountType.individual": "Індивідуальний",
381 "settings.user.form.accountType.label": "Тип акаунту", 376 "settings.user.form.accountType.label": "Тип акаунту",
382 "settings.user.form.accountType.non-profit": "Ðекомерційний", 377 "settings.user.form.accountType.non-profit": "Ðекомерційний",
383 "settings.user.form.currentPassword": "Поточний пароль", 378 "settings.user.form.currentPassword": "Поточний пароль",
384 "settings.user.form.email": "Ел. пошта", 379 "settings.user.form.email": "Ел. пошта",
385 "settings.user.form.firstname": "First Name", 380 "settings.user.form.firstname": "Ім'Ñ",
386 "settings.user.form.lastname": "Last Name", 381 "settings.user.form.lastname": "Прізвище",
387 "settings.user.form.newPassword": "Ðовий пароль", 382 "settings.user.form.newPassword": "Ðовий пароль",
388 "settings.workspace.add.form.name": "Ім'Ñ", 383 "settings.workspace.add.form.name": "Ім'Ñ",
389 "settings.workspace.add.form.submitButton": "Create workspace", 384 "settings.workspace.add.form.submitButton": "Створити робочий проÑÑ‚Ñ–Ñ€",
390 "settings.workspace.form.buttonDelete": "Delete workspace", 385 "settings.workspace.form.buttonDelete": "Видалити робочий проÑÑ‚Ñ–Ñ€",
391 "settings.workspace.form.buttonSave": "Save workspace", 386 "settings.workspace.form.buttonSave": "Зберегти робочій проÑÑ‚Ñ–Ñ€",
392 "settings.workspace.form.keepLoaded": "Keep this workspace loaded*", 387 "settings.workspace.form.keepLoaded": "Зберігати цей робочий проÑÑ‚Ñ–Ñ€ завантаженим*",
393 "settings.workspace.form.keepLoadedInfo": "*This option will be overwritten by the global \"Keep all workspaces loaded\" option.", 388 "settings.workspace.form.keepLoadedInfo": "*Цей параметр буде перезапиÑано глобальним параметром \"Зберігати вÑÑ– робочі проÑтори завантаженими\".",
394 "settings.workspace.form.name": "Ім'Ñ", 389 "settings.workspace.form.name": "Ім'Ñ",
395 "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace", 390 "settings.workspace.form.servicesInWorkspaceHeadline": "СервіÑи в цьому робочому проÑторі",
396 "settings.workspace.form.yourWorkspaces": "Your workspaces", 391 "settings.workspace.form.yourWorkspaces": "Ваші робочі проÑтори",
397 "settings.workspaces.deletedInfo": "Workspace has been deleted", 392 "settings.workspaces.deletedInfo": "Робочий проÑÑ‚Ñ–Ñ€ було видалено",
398 "settings.workspaces.headline": "Your workspaces", 393 "settings.workspaces.headline": "Ваші робочі проÑтори",
399 "settings.workspaces.noWorkspacesAdded": "You haven't created any workspaces yet.", 394 "settings.workspaces.noWorkspacesAdded": "Ви ще не Ñтворили жодного робочого проÑтору.",
400 "settings.workspaces.tryReloadWorkspaces": "Спробуйте ще раз", 395 "settings.workspaces.tryReloadWorkspaces": "Спробуйте ще раз",
401 "settings.workspaces.updatedInfo": "Ваші зміни були збережені", 396 "settings.workspaces.updatedInfo": "Ваші зміни були збережені",
402 "settings.workspaces.workspaceFeatureHeadline": "Less is More: Introducing Ferdi Workspaces", 397 "settings.workspaces.workspaceFeatureHeadline": "Менше – більше: знайомимоÑÑŒ з робочими проÑторами Ferdi",
403 "settings.workspaces.workspaceFeatureInfo": "Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", 398 "settings.workspaces.workspaceFeatureInfo": "Робочі проÑтори Ferdi дозволÑÑŽÑ‚ÑŒ вам ÑфокуÑуватиÑÑ Ð½Ð° тому, що важливо прÑмо зараз. Ð’Ñтановіть різні набори ÑервіÑів та легко перемикайтеÑÑŒ між ними в будь-Ñкий чаÑ. Тільки ви вирішуєте, Ñкі ÑервіÑи вам потрібні тут Ñ– зараз, так що ми можемо допомогти вам залишатиÑÑŒ в найкращій формі або легко закінчувати роботу коли забажаєте.",
404 "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", 399 "settings.workspaces.workspacesRequestFailed": "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ робочий проÑÑ‚Ñ–Ñ€",
405 "setupAssistant.headline": "Let's get started", 400 "setupAssistant.headline": "Давайте почнем",
406 "setupAssistant.subheadline": "Choose from our most used services and get back on top of your messaging now.", 401 "setupAssistant.subheadline": "Зробіть Ñвій вибір Ñеред наших найбільш популÑрних ÑервіÑів Ñ– зробіть Ñвій обмін повідомленнÑми найкращим зараз.",
407 "setupAssistant.submit.label": "Let's go", 402 "setupAssistant.submit.label": "Поїхали",
408 "sidebar.addNewService": "Додати новий ÑервіÑ", 403 "sidebar.addNewService": "Додати новий ÑервіÑ",
409 "sidebar.closeTodosDrawer": "Close Ferdi Todos", 404 "sidebar.closeTodosDrawer": "Закрити Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ferdi",
410 "sidebar.closeWorkspaceDrawer": "Close workspace drawer", 405 "sidebar.closeWorkspaceDrawer": "Закрити меню робочих проÑторів",
411 "sidebar.lockFerdi": "Lock Ferdi", 406 "sidebar.lockFerdi": "Заблокувати Ferdi",
412 "sidebar.muteApp": "Вимкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° звуки", 407 "sidebar.muteApp": "Вимкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° звуки",
413 "sidebar.openTodosDrawer": "Open Ferdi Todos", 408 "sidebar.openTodosDrawer": "Відкрити Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ferdi",
414 "sidebar.openWorkspaceDrawer": "Open workspace drawer", 409 "sidebar.openWorkspaceDrawer": "Відкрити меню робочих проÑторів",
415 "sidebar.unmuteApp": "Увімкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° звуки", 410 "sidebar.unmuteApp": "Увімкнути ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ‚Ð° звуки",
416 "signup.email.label": "Email адреÑа", 411 "signup.email.label": "Email адреÑа",
417 "signup.emailDuplicate": "КориÑтувач із цією email адреÑою вже Ñ–Ñнує", 412 "signup.emailDuplicate": "КориÑтувач із цією email адреÑою вже Ñ–Ñнує",
418 "signup.firstname.label": "First Name", 413 "signup.firstname.label": "Ім'Ñ",
419 "signup.headline": "Увійти", 414 "signup.headline": "Увійти",
420 "signup.lastname.label": "Last Name", 415 "signup.lastname.label": "Прізвище",
421 "signup.legal.info": "СтвореннÑм акаунту Ferdi ви приймаєте", 416 "signup.legal.info": "СтвореннÑм акаунту Ferdi ви приймаєте",
422 "signup.legal.privacy": "ЗаÑва про конфіденційніÑÑ‚ÑŒ", 417 "signup.legal.privacy": "ЗаÑва про конфіденційніÑÑ‚ÑŒ",
423 "signup.legal.terms": "Умови викориÑтаннÑ", 418 "signup.legal.terms": "Умови викориÑтаннÑ",
424 "signup.link.login": "У Ð²Ð°Ñ Ð²Ð¶Ðµ Ñ” обліковий запиÑ, увійти?", 419 "signup.link.login": "У Ð²Ð°Ñ Ð²Ð¶Ðµ Ñ” обліковий запиÑ, увійти?",
425 "signup.password.label": "Пароль", 420 "signup.password.label": "Пароль",
426 "signup.submit.label": "Створити акаунт", 421 "signup.submit.label": "Створити акаунт",
427 "tabs.item.confirmDeleteService": "Do you really want to delete the {serviceName} service?", 422 "tabs.item.confirmDeleteService": "Ви дійÑно бажаєте видалити ÑÐµÑ€Ð²Ñ–Ñ {serviceName}?",
428 "tabs.item.deleteService": "Delete service", 423 "tabs.item.deleteService": "Видалити ÑервіÑ",
429 "tabs.item.disableAudio": "відключити звук", 424 "tabs.item.disableAudio": "відключити звук",
430 "tabs.item.disableDarkMode": "Disable Dark mode", 425 "tabs.item.disableDarkMode": "Вимкнути темний режим",
431 "tabs.item.disableNotifications": "Вимкнути ÑповіщеннÑ", 426 "tabs.item.disableNotifications": "Вимкнути ÑповіщеннÑ",
432 "tabs.item.disableService": "Disable service", 427 "tabs.item.disableService": "Вимкнути ÑервіÑ",
433 "tabs.item.enableAudio": "Увімкнути звук", 428 "tabs.item.enableAudio": "Увімкнути звук",
434 "tabs.item.enableDarkMode": "Enable Dark mode", 429 "tabs.item.enableDarkMode": "Увімкнути темний режим",
435 "tabs.item.enableNotification": "Увімкнути ÑповіщеннÑ", 430 "tabs.item.enableNotification": "Увімкнути ÑповіщеннÑ",
436 "tabs.item.enableService": "Увімкнути ÑервіÑ", 431 "tabs.item.enableService": "Увімкнути ÑервіÑ",
437 "tabs.item.hibernateService": "Hibernate service", 432 "tabs.item.hibernateService": "ПриÑпати ÑервіÑ",
438 "tabs.item.reload": "Перезавантажити", 433 "tabs.item.reload": "Перезавантажити",
439 "tabs.item.wakeUpService": "Wake up service", 434 "tabs.item.wakeUpService": "Пробудити ÑервіÑ",
440 "validation.email": "{field} is not valid", 435 "validation.email": "{field} не валідне",
441 "validation.minLength": "{field} should be at least {length} characters long", 436 "validation.minLength": "КількіÑÑ‚ÑŒ Ñимволів в {field} повина бути не меньше {length}",
442 "validation.oneRequired": "At least one is required", 437 "validation.oneRequired": "Потрібен принаймні один",
443 "validation.required": "{field} is required", 438 "validation.required": "{field} обов'Ñзвоке",
444 "validation.url": "{field} is not a valid URL", 439 "validation.url": "{field} не є валідним URL",
445 "webControls.back": "Ðазад", 440 "webControls.back": "Ðазад",
446 "webControls.forward": "Вперед", 441 "webControls.forward": "Вперед",
447 "webControls.goHome": "Головна", 442 "webControls.goHome": "Головна",
448 "webControls.openInBrowser": "Open in Browser", 443 "webControls.openInBrowser": "Відкрити в браузері",
449 "webControls.reload": "Перезавантажити", 444 "webControls.reload": "Перезавантажити",
450 "welcome.loginButton": "Увійдіть до Ñвого акаунту", 445 "welcome.loginButton": "Увійдіть до Ñвого акаунту",
451 "welcome.signupButton": "Створити безплатний акаунт", 446 "welcome.signupButton": "Створити безплатний акаунт",
452 "workspaceDrawer.addNewWorkspaceLabel": "Add new workspace", 447 "workspaceDrawer.addNewWorkspaceLabel": "Додати новий робочий проÑÑ‚Ñ–Ñ€",
453 "workspaceDrawer.allServices": "УÑÑ– ÑервіÑи", 448 "workspaceDrawer.allServices": "УÑÑ– ÑервіÑи",
454 "workspaceDrawer.headline": "Workspaces", 449 "workspaceDrawer.headline": "Робочі проÑтори",
455 "workspaceDrawer.item.contextMenuEdit": "edit", 450 "workspaceDrawer.item.contextMenuEdit": "редагувати",
456 "workspaceDrawer.item.noServicesAddedYet": "Ðемає доданих ÑервіÑів", 451 "workspaceDrawer.item.noServicesAddedYet": "Ðемає доданих ÑервіÑів",
457 "workspaceDrawer.workspaceFeatureInfo": "<p>Ferdi Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.</p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.</p>", 452 "workspaceDrawer.workspaceFeatureInfo": "<p>Робочі проÑтори Ferdi дозволÑÑŽÑ‚ÑŒ вам ÑфокуÑуватиÑÑ Ð½Ð° тому, що важливо прÑмо зараз. Ð’Ñтановіть різні набори ÑервіÑів та легко перемикайтеÑÑŒ між ними в будь-Ñкий чаÑ.</p><p>Тільки ви вирішуєте, Ñкі ÑервіÑи вам потрібні тут Ñ– зараз, так що ми можемо допомогти вам залишатиÑÑŒ в найкращій формі або легко закінчувати роботу коли забажаєте.</p>",
458 "workspaceDrawer.workspacesSettingsTooltip": "Edit workspaces settings", 453 "workspaceDrawer.workspacesSettingsTooltip": "Змінити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‡Ð¸Ñ… проÑторів",
459 "workspaces.switchingIndicator.switchingTo": "Switching to" 454 "workspaces.switchingIndicator.switchingTo": "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð½Ð°"
460} 455}
diff --git a/src/i18n/locales/vi.json b/src/i18n/locales/vi.json
index e168c3cc3..4cebad219 100644
--- a/src/i18n/locales/vi.json
+++ b/src/i18n/locales/vi.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "Gá»­i lá»i má»i", 61 "invite.submit.label": "Gá»­i lá»i má»i",
62 "invite.successInfo": "Lá»i má»i đã được gá»­i thành công", 62 "invite.successInfo": "Lá»i má»i đã được gá»­i thành công",
63 "locked.headline": "Äã khóa", 63 "locked.headline": "Äã khóa",
64 "locked.info": "Ferdi hiện đang bị khóa. Vui lòng mở khóa Ferdi bằng mật khẩu của bạn để xem tin nhắn của bạn.",
65 "locked.invalidCredentials": "Mật khẩu không hợp lệ", 64 "locked.invalidCredentials": "Mật khẩu không hợp lệ",
66 "locked.password.label": "Mật khẩu", 65 "locked.password.label": "Mật khẩu",
67 "locked.submit.label": "Mở khoá", 66 "locked.submit.label": "Mở khoá",
@@ -168,7 +167,6 @@
168 "services.login": "Vui lòng đăng nhập để sử dụng Ferdi.", 167 "services.login": "Vui lòng đăng nhập để sử dụng Ferdi.",
169 "services.serverInfo": "Theo tùy chá»n, bạn có thể thay đổi máy chủ Ferdi của mình bằng cách nhấp vào bánh răng ở góc dÆ°á»›i cùng bên trái. Nếu bạn Ä‘ang chuyển qua (từ má»™t trong các máy chủ được lÆ°u trữ) sang sá»­ dụng Ferdi mà không có tài khoản, vui lòng thông báo rằng bạn có thể xuất dữ liệu của mình từ máy chủ đó và sau đó nhập dữ liệu đó bằng menu Trợ giúp để phục hồi tất cả không gian làm việc và dịch vụ đã định cấu hình của bạn!", 168 "services.serverInfo": "Theo tùy chá»n, bạn có thể thay đổi máy chủ Ferdi của mình bằng cách nhấp vào bánh răng ở góc dÆ°á»›i cùng bên trái. Nếu bạn Ä‘ang chuyển qua (từ má»™t trong các máy chủ được lÆ°u trữ) sang sá»­ dụng Ferdi mà không có tài khoản, vui lòng thông báo rằng bạn có thể xuất dữ liệu của mình từ máy chủ đó và sau đó nhập dữ liệu đó bằng menu Trợ giúp để phục hồi tất cả không gian làm việc và dịch vụ đã định cấu hình của bạn!",
170 "services.serverless": "Sá»­ dụng Ferdi không cần Äăng nhập Tài khoản", 169 "services.serverless": "Sá»­ dụng Ferdi không cần Äăng nhập Tài khoản",
171 "services.welcome": "Chào mừng bạn đến với Ferdi",
172 "settings.account.account.editButton": "Edit account", 170 "settings.account.account.editButton": "Edit account",
173 "settings.account.accountUnavailable": "Tài khoản không hợp lệ", 171 "settings.account.accountUnavailable": "Tài khoản không hợp lệ",
174 "settings.account.accountUnavailableInfo": "Bạn Ä‘ang sá»­ dụng Ferdi mà không có tài khoản. Nếu bạn muốn sá»­ dụng Ferdi vá»›i má»™t tài khoản và giữ cho các dịch vụ của mình được đồng bá»™ hóa giữa các bản cài đặt, vui lòng chá»n má»™t máy chủ trong tab Cài đặt rồi đăng nhập.", 172 "settings.account.accountUnavailableInfo": "Bạn Ä‘ang sá»­ dụng Ferdi mà không có tài khoản. Nếu bạn muốn sá»­ dụng Ferdi vá»›i má»™t tài khoản và giữ cho các dịch vụ của mình được đồng bá»™ hóa giữa các bản cài đặt, vui lòng chá»n má»™t máy chủ trong tab Cài đặt rồi đăng nhập.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Hiển thị khu vực có thể kéo trên cửa sổ", 240 "settings.app.form.showDragArea": "Hiển thị khu vực có thể kéo trên cửa sổ",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Hiển thị huy hiệu tin nhắn chÆ°a Ä‘á»c khi tắt thông báo", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Hiển thị huy hiệu tin nhắn chÆ°a Ä‘á»c khi tắt thông báo",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Bắt đầu thu nhá»", 245 "settings.app.form.startMinimized": "Bắt đầu thu nhá»",
247 "settings.app.form.universalDarkMode": "Bật Chế độ tối chung", 246 "settings.app.form.universalDarkMode": "Bật Chế độ tối chung",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "Cập nhật", 255 "settings.app.headlineUpdates": "Cập nhật",
257 "settings.app.hibernateInfo": "Theo mặc định, Ferdi sẽ giữ cho tất cả các dịch vụ của bạn luôn mở và được tải ở chế Ä‘á»™ ná»n để chúng luôn sẵn sàng khi bạn muốn sá»­ dụng. Service Hibernation sẽ dỡ bá» các dịch vụ của bạn sau má»™t khoảng thá»i gian cụ thể. Äiá»u này rất hữu ích để tiết kiệm RAM hoặc giữ cho các dịch vụ không làm chậm máy tính của bạn.", 256 "settings.app.hibernateInfo": "Theo mặc định, Ferdi sẽ giữ cho tất cả các dịch vụ của bạn luôn mở và được tải ở chế Ä‘á»™ ná»n để chúng luôn sẵn sàng khi bạn muốn sá»­ dụng. Service Hibernation sẽ dỡ bá» các dịch vụ của bạn sau má»™t khoảng thá»i gian cụ thể. Äiá»u này rất hữu ích để tiết kiệm RAM hoặc giữ cho các dịch vụ không làm chậm máy tính của bạn.",
258 "settings.app.inactivityLockInfo": "Vài phút không hoạt động, sau đó Ferdi sẽ tự động khóa. Sử dụng 0 để tắt", 257 "settings.app.inactivityLockInfo": "Vài phút không hoạt động, sau đó Ferdi sẽ tự động khóa. Sử dụng 0 để tắt",
259 "settings.app.languageDisclaimer": "Bản dịch chính thức là tiếng Anh và tiếng Äức. Tất cả các ngôn ngữ khác là bản dịch dá»±a trên cá»™ng đồng.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "Mật khẩu", 259 "settings.app.lockedPassword": "Mật khẩu",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Công thức của cộng đồng bên thứ 3", 284 "settings.recipes.customService.headline.communityRecipes": "Công thức của cộng đồng bên thứ 3",
287 "settings.recipes.customService.headline.customRecipes": "Công thức của tùy chỉnh bên thứ 3", 285 "settings.recipes.customService.headline.customRecipes": "Công thức của tùy chỉnh bên thứ 3",
288 "settings.recipes.customService.headline.devRecipes": "Công thức dịch vụ phát triển của bạn", 286 "settings.recipes.customService.headline.devRecipes": "Công thức dịch vụ phát triển của bạn",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Tài liệu dành cho nhà phát triển", 288 "settings.recipes.customService.openDevDocs": "Tài liệu dành cho nhà phát triển",
291 "settings.recipes.customService.openFolder": "Open folder", 289 "settings.recipes.customService.openFolder": "Open folder",
292 "settings.recipes.headline": "Các dịch vụ có sẵn", 290 "settings.recipes.headline": "Các dịch vụ có sẵn",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "Khám phá các dịch vụ", 346 "settings.services.discoverServices": "Khám phá các dịch vụ",
349 "settings.services.headline": "Dịch vụ của bạn", 347 "settings.services.headline": "Dịch vụ của bạn",
350 "settings.services.noServicesAdded": "Bắt đầu bằng cách thêm một dịch vụ.", 348 "settings.services.noServicesAdded": "Bắt đầu bằng cách thêm một dịch vụ.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Không thể tải các dịch vụ của bạn", 350 "settings.services.servicesRequestFailed": "Không thể tải các dịch vụ của bạn",
353 "settings.services.tooltip.isDisabled": "Dịch vụ bị vô hiệu hóa", 351 "settings.services.tooltip.isDisabled": "Dịch vụ bị vô hiệu hóa",
354 "settings.services.tooltip.isMuted": "Tất cả âm thanh Ä‘á»u bị tắt tiếng", 352 "settings.services.tooltip.isMuted": "Tất cả âm thanh Ä‘á»u bị tắt tiếng",
355 "settings.services.tooltip.notificationsDisabled": "Thông báo bị vô hiệu hoá", 353 "settings.services.tooltip.notificationsDisabled": "Thông báo bị vô hiệu hoá",
356 "settings.services.updatedInfo": "Má»i thay đổi đã được lÆ°u lại", 354 "settings.services.updatedInfo": "Má»i thay đổi đã được lÆ°u lại",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi là má»™t ứng dụng mã nguồn mở và dẫn dắt cá»™ng đồng.</p><p>Cảm Æ¡n những ngÆ°á»i tạo nên sá»± khả thi này:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi là má»™t ứng dụng mã nguồn mở và dẫn dắt cá»™ng đồng.</p><p>Cảm Æ¡n những ngÆ°á»i tạo nên sá»± khả thi này:</p>",
358 "settings.supportFerdi.bannerText": "Bạn có muốn giúp chúng tôi cải thiện Ferdi không?",
359 "settings.supportFerdi.headline": "Giá»›i thiệu vá» phần má»m Ferdi", 356 "settings.supportFerdi.headline": "Giá»›i thiệu vá» phần má»m Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "Nếu bạn cảm thấy muốn hỗ trợ sự phát triển của Ferdi bằng một khoản đóng góp, bạn có thể làm như vậy trên cả hai,", 357 "settings.supportFerdi.textDonation": "Nếu bạn cảm thấy muốn hỗ trợ sự phát triển của Ferdi bằng một khoản đóng góp, bạn có thể làm như vậy trên cả hai,",
362 "settings.supportFerdi.textDonationAnd": "và", 358 "settings.supportFerdi.textDonationAnd": "và",
363 "settings.supportFerdi.textExpenses": "Trong khi các tình nguyện viên thá»±c hiện hầu hết công việc, chúng tôi vẫn cần trả tiá»n cho các máy chủ và chứng chỉ. Là má»™t cá»™ng đồng, chúng tôi hoàn toàn minh bạch vá» các khoản tiá»n mà chúng tôi thu thập và chi tiêu - hãy xem", 359 "settings.supportFerdi.textExpenses": "Trong khi các tình nguyện viên thá»±c hiện hầu hết công việc, chúng tôi vẫn cần trả tiá»n cho các máy chủ và chứng chỉ. Là má»™t cá»™ng đồng, chúng tôi hoàn toàn minh bạch vá» các khoản tiá»n mà chúng tôi thu thập và chi tiêu - hãy xem",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Hỗ trợ luôn được chào đón. Bạn có thể tìm thấy danh sách trợ giúp mà chúng tôi cần", 364 "settings.supportFerdi.textSupportWelcome": "Hỗ trợ luôn được chào đón. Bạn có thể tìm thấy danh sách trợ giúp mà chúng tôi cần",
369 "settings.supportFerdi.textSupportWelcomeHere": "tại đây", 365 "settings.supportFerdi.textSupportWelcomeHere": "tại đây",
370 "settings.supportFerdi.textVolunteers": "Sá»± phát triển của Ferdi được thá»±c hiện bởi các tình nguyện viên. Những ngÆ°á»i sá»­ dụng Ferdi nhÆ° bạn. Há» bảo trì, sá»­a chữa và cải tiến Ferdi trong thá»i gian rảnh rá»—i.", 366 "settings.supportFerdi.textVolunteers": "Sá»± phát triển của Ferdi được thá»±c hiện bởi các tình nguyện viên. Những ngÆ°á»i sá»­ dụng Ferdi nhÆ° bạn. Há» bảo trì, sá»­a chữa và cải tiến Ferdi trong thá»i gian rảnh rá»—i.",
371 "settings.supportFerdi.title": "Bạn có thích Ferdi không?",
372 "settings.team.contentHeadline": "Quản lý nhóm Franz", 367 "settings.team.contentHeadline": "Quản lý nhóm Franz",
373 "settings.team.copy": "Quản lý nhóm của Franz cho phép bạn quản lý Äăng ký Franz cho nhiá»u ngÆ°á»i dùng. Xin lÆ°u ý rằng việc đăng ký Franz Premium sẽ không mang lại lợi ích gì cho bạn khi sá»­ dụng Ferdi: Lý do duy nhất bạn vẫn có quyá»n truy cập vào Quản lý nhóm là để bạn có thể quản lý Nhóm Franz cÅ© của mình và để bạn không mất bất kỳ chức năng nào trong việc quản lý tài khoản của bạn.", 368 "settings.team.copy": "Quản lý nhóm của Franz cho phép bạn quản lý Äăng ký Franz cho nhiá»u ngÆ°á»i dùng. Xin lÆ°u ý rằng việc đăng ký Franz Premium sẽ không mang lại lợi ích gì cho bạn khi sá»­ dụng Ferdi: Lý do duy nhất bạn vẫn có quyá»n truy cập vào Quản lý nhóm là để bạn có thể quản lý Nhóm Franz cÅ© của mình và để bạn không mất bất kỳ chức năng nào trong việc quản lý tài khoản của bạn.",
374 "settings.team.headline": "Nhóm", 369 "settings.team.headline": "Nhóm",
diff --git a/src/i18n/locales/zh-HANT.json b/src/i18n/locales/zh-HANT.json
index 37ac383e1..82eece46d 100644
--- a/src/i18n/locales/zh-HANT.json
+++ b/src/i18n/locales/zh-HANT.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "發é€é‚€è«‹", 61 "invite.submit.label": "發é€é‚€è«‹",
62 "invite.successInfo": "å·²æˆåŠŸç™¼é€é‚€è«‹", 62 "invite.successInfo": "å·²æˆåŠŸç™¼é€é‚€è«‹",
63 "locked.headline": "已鎖定", 63 "locked.headline": "已鎖定",
64 "locked.info": "Ferdi is currently locked. Please unlock Ferdi with your password to see your messages.",
65 "locked.invalidCredentials": "密碼無效", 64 "locked.invalidCredentials": "密碼無效",
66 "locked.password.label": "密碼", 65 "locked.password.label": "密碼",
67 "locked.submit.label": "解除å°éŽ–", 66 "locked.submit.label": "解除å°éŽ–",
@@ -168,7 +167,6 @@
168 "services.login": "登入至 Ferdi", 167 "services.login": "登入至 Ferdi",
169 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!", 168 "services.serverInfo": "Optionally, you can change your Ferdi server by clicking the cog in the bottom left corner. If you are switching over (from one of the hosted servers) to using Ferdi without an account, please be informed that you can export your data from that server and subsequently import it using the Help menu to resurrect all your workspaces and configured services!",
170 "services.serverless": "Use Ferdi without an Account", 169 "services.serverless": "Use Ferdi without an Account",
171 "services.welcome": "歡迎使用 Ferdi",
172 "settings.account.account.editButton": "更改帳戶資訊", 170 "settings.account.account.editButton": "更改帳戶資訊",
173 "settings.account.accountUnavailable": "帳號無法使用", 171 "settings.account.accountUnavailable": "帳號無法使用",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "Show draggable area on window", 240 "settings.app.form.showDragArea": "Show draggable area on window",
243 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled", 241 "settings.app.form.showMessagesBadgesWhenMuted": "Show unread message badge when notifications are disabled",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "Enable Split View Mode", 244 "settings.app.form.splitMode": "Enable Split View Mode",
246 "settings.app.form.startMinimized": "Start minimized", 245 "settings.app.form.startMinimized": "Start minimized",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "æ›´æ–°", 255 "settings.app.headlineUpdates": "æ›´æ–°",
257 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.", 256 "settings.app.hibernateInfo": "By default, Ferdi will keep all your services open and loaded in the background so they are ready when you want to use them. Service Hibernation will unload your services after a specified amount. This is useful to save RAM or keeping services from slowing down your computer.",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "Official translations are English & German. All other languages are community based translations.",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "密碼", 259 "settings.app.lockedPassword": "密碼",
262 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.", 260 "settings.app.lockedPasswordInfo": "Please make sure to set a password you'll remember.\nIf you loose this password, you will have to reinstall Ferdi.",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "Developer Documentation", 288 "settings.recipes.customService.openDevDocs": "Developer Documentation",
291 "settings.recipes.customService.openFolder": "開啟資料夾", 289 "settings.recipes.customService.openFolder": "開啟資料夾",
292 "settings.recipes.headline": "å¯ç”¨æœå‹™", 290 "settings.recipes.headline": "å¯ç”¨æœå‹™",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "æœå‹™åˆ—表", 346 "settings.services.discoverServices": "æœå‹™åˆ—表",
349 "settings.services.headline": "您的æœå‹™", 347 "settings.services.headline": "您的æœå‹™",
350 "settings.services.noServicesAdded": "Start by adding a service.", 348 "settings.services.noServicesAdded": "Start by adding a service.",
351 "settings.services.nothingFound": "Sorry, but no service matched your search term - but you can still probably add it using the \"Custom Website\" option. Please note that the website might show more services that have been added to Ferdi since the version that you are currently on. To get those new services, please consider upgrading to a newer version of Ferdi.", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "Could not load your services", 350 "settings.services.servicesRequestFailed": "Could not load your services",
353 "settings.services.tooltip.isDisabled": "å·²åœç”¨æœå‹™", 351 "settings.services.tooltip.isDisabled": "å·²åœç”¨æœå‹™",
354 "settings.services.tooltip.isMuted": "All sounds are muted", 352 "settings.services.tooltip.isMuted": "All sounds are muted",
355 "settings.services.tooltip.notificationsDisabled": "å·²åœç”¨é€šçŸ¥", 353 "settings.services.tooltip.notificationsDisabled": "å·²åœç”¨é€šçŸ¥",
356 "settings.services.updatedInfo": "您的更改已經儲存", 354 "settings.services.updatedInfo": "您的更改已經儲存",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi is an open-source and a community-lead application.</p><p>Thanks to the people who make this possbile:</p>",
358 "settings.supportFerdi.bannerText": "Do you want to help us improve Ferdi?",
359 "settings.supportFerdi.headline": "關於 Ferdi", 356 "settings.supportFerdi.headline": "關於 Ferdi",
360 "settings.supportFerdi.openSurvey": "Open survey",
361 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,", 357 "settings.supportFerdi.textDonation": "If you feel like supporting Ferdi development with a donation, you can do so on both,",
362 "settings.supportFerdi.textDonationAnd": "和", 358 "settings.supportFerdi.textDonationAnd": "和",
363 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our", 359 "settings.supportFerdi.textExpenses": "While volunteers do most of the work, we still need to pay for servers and certificates. As a community, we are fully transparent on funds we collect and spend - see our",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need", 364 "settings.supportFerdi.textSupportWelcome": "Support is always welcome. You can find a list of the help we need",
369 "settings.supportFerdi.textSupportWelcomeHere": "這裡", 365 "settings.supportFerdi.textSupportWelcomeHere": "這裡",
370 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.", 366 "settings.supportFerdi.textVolunteers": "The development of Ferdi is done by volunteers. People who use Ferdi like you. They maintain, fix, and improve Ferdi in their spare time.",
371 "settings.supportFerdi.title": "Do you like Ferdi?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "團隊", 369 "settings.team.headline": "團隊",
diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json
index 7c26a7ff7..2225941d1 100644
--- a/src/i18n/locales/zh.json
+++ b/src/i18n/locales/zh.json
@@ -61,7 +61,6 @@
61 "invite.submit.label": "å‘é€é‚€è¯·", 61 "invite.submit.label": "å‘é€é‚€è¯·",
62 "invite.successInfo": "å·²æˆåŠŸå‘é€é‚€è¯·ã€‚", 62 "invite.successInfo": "å·²æˆåŠŸå‘é€é‚€è¯·ã€‚",
63 "locked.headline": "å·²é”定", 63 "locked.headline": "å·²é”定",
64 "locked.info": "Ferdiç›®å‰è¢«é”定。请使用密ç è§£é”Ferdi以查看您的消æ¯ã€‚",
65 "locked.invalidCredentials": "密ç æ— æ•ˆ", 64 "locked.invalidCredentials": "密ç æ— æ•ˆ",
66 "locked.password.label": "密ç ", 65 "locked.password.label": "密ç ",
67 "locked.submit.label": "解é”", 66 "locked.submit.label": "解é”",
@@ -168,7 +167,6 @@
168 "services.login": "请登录åŽä½¿ç”¨ Ferdi。", 167 "services.login": "请登录åŽä½¿ç”¨ Ferdi。",
169 "services.serverInfo": "或者,您å¯ä»¥é€šè¿‡å•å‡»å·¦ä¸‹è§’的齿轮æ¥æ›´æ”¹æ‚¨çš„ Ferdi æœåŠ¡å™¨ã€‚ 如果您è¦ï¼ˆä»Žä¸€å°æ‰˜ç®¡æœåŠ¡å™¨ï¼‰åˆ‡æ¢åˆ°æ²¡æœ‰å¸æˆ·çš„ Ferdi,请注æ„,您å¯ä»¥ä»Žè¯¥æœåŠ¡å™¨å¯¼å‡ºæ•°æ®ï¼Œç„¶åŽä½¿ç”¨â€œå¸®åŠ©â€èœå•å°†å…¶å¯¼å…¥ï¼Œä»¥æ¢å¤æ‰€æœ‰å·¥ä½œåŒºå’Œé…置的æœåŠ¡ï¼", 168 "services.serverInfo": "或者,您å¯ä»¥é€šè¿‡å•å‡»å·¦ä¸‹è§’的齿轮æ¥æ›´æ”¹æ‚¨çš„ Ferdi æœåŠ¡å™¨ã€‚ 如果您è¦ï¼ˆä»Žä¸€å°æ‰˜ç®¡æœåŠ¡å™¨ï¼‰åˆ‡æ¢åˆ°æ²¡æœ‰å¸æˆ·çš„ Ferdi,请注æ„,您å¯ä»¥ä»Žè¯¥æœåŠ¡å™¨å¯¼å‡ºæ•°æ®ï¼Œç„¶åŽä½¿ç”¨â€œå¸®åŠ©â€èœå•å°†å…¶å¯¼å…¥ï¼Œä»¥æ¢å¤æ‰€æœ‰å·¥ä½œåŒºå’Œé…置的æœåŠ¡ï¼",
170 "services.serverless": "使用ä¸å¸¦è´¦æˆ·çš„Ferdi", 169 "services.serverless": "使用ä¸å¸¦è´¦æˆ·çš„Ferdi",
171 "services.welcome": "欢迎使用 Ferdi",
172 "settings.account.account.editButton": "编辑å¸æˆ·", 170 "settings.account.account.editButton": "编辑å¸æˆ·",
173 "settings.account.accountUnavailable": "账户ä¸å¯ç”¨", 171 "settings.account.accountUnavailable": "账户ä¸å¯ç”¨",
174 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", 172 "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.",
@@ -242,6 +240,7 @@
242 "settings.app.form.showDragArea": "在窗å£ä¸Šæ˜¾ç¤ºå¯æ‹–动区域", 240 "settings.app.form.showDragArea": "在窗å£ä¸Šæ˜¾ç¤ºå¯æ‹–动区域",
243 "settings.app.form.showMessagesBadgesWhenMuted": "ç¦ç”¨é€šçŸ¥æ—¶æ˜¾ç¤ºæœªè¯»æ¶ˆæ¯å¾½ç« ", 241 "settings.app.form.showMessagesBadgesWhenMuted": "ç¦ç”¨é€šçŸ¥æ—¶æ˜¾ç¤ºæœªè¯»æ¶ˆæ¯å¾½ç« ",
244 "settings.app.form.showServiceName": "Display service name under the icon", 242 "settings.app.form.showServiceName": "Display service name under the icon",
243 "settings.app.form.splitColumns": "Number of columns",
245 "settings.app.form.splitMode": "å¯ç”¨åˆ†å‰²è§†å›¾æ¨¡å¼", 244 "settings.app.form.splitMode": "å¯ç”¨åˆ†å‰²è§†å›¾æ¨¡å¼",
246 "settings.app.form.startMinimized": "å¯åŠ¨æ—¶æœ€å°åŒ–", 245 "settings.app.form.startMinimized": "å¯åŠ¨æ—¶æœ€å°åŒ–",
247 "settings.app.form.universalDarkMode": "Enable universal Dark Mode", 246 "settings.app.form.universalDarkMode": "Enable universal Dark Mode",
@@ -256,7 +255,6 @@
256 "settings.app.headlineUpdates": "æ›´æ–°", 255 "settings.app.headlineUpdates": "æ›´æ–°",
257 "settings.app.hibernateInfo": "默认情况下,Ferdiå°†ä¿æŒæ‚¨æ‰€æœ‰çš„æœåŠ¡åœ¨åŽå°æ‰“开并加载,这样当您想è¦ä½¿ç”¨å®ƒä»¬æ—¶ä»–们就å¯ä»¥äº†ã€‚ æœåŠ¡ä¼‘眠将在指定数é‡åŽå¸è½½æ‚¨çš„æœåŠ¡ã€‚这有助于ä¿å­˜å†…存或ä¿æŒæœåŠ¡ä»¥å‡æ…¢æ‚¨çš„计算机速度。", 256 "settings.app.hibernateInfo": "默认情况下,Ferdiå°†ä¿æŒæ‚¨æ‰€æœ‰çš„æœåŠ¡åœ¨åŽå°æ‰“开并加载,这样当您想è¦ä½¿ç”¨å®ƒä»¬æ—¶ä»–们就å¯ä»¥äº†ã€‚ æœåŠ¡ä¼‘眠将在指定数é‡åŽå¸è½½æ‚¨çš„æœåŠ¡ã€‚这有助于ä¿å­˜å†…存或ä¿æŒæœåŠ¡ä»¥å‡æ…¢æ‚¨çš„计算机速度。",
258 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable", 257 "settings.app.inactivityLockInfo": "Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable",
259 "settings.app.languageDisclaimer": "官方翻译为英语和德语,所有其他语言都是基于社区的翻译。",
260 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.", 258 "settings.app.lockInfo": "Password Lock allows you to keep your messages protected.\nUsing Password Lock, you will be prompted to enter your password everytime you start Ferdi or lock Ferdi yourself using the lock symbol in the bottom left corner or the shortcut {lockShortcut}.",
261 "settings.app.lockedPassword": "密ç ", 259 "settings.app.lockedPassword": "密ç ",
262 "settings.app.lockedPasswordInfo": "请务必设置您将记ä½çš„密ç ã€‚\n如果您丢失了这个密ç ï¼Œæ‚¨å°†ä¸å¾—ä¸é‡æ–°å®‰è£…Ferdi。", 260 "settings.app.lockedPasswordInfo": "请务必设置您将记ä½çš„密ç ã€‚\n如果您丢失了这个密ç ï¼Œæ‚¨å°†ä¸å¾—ä¸é‡æ–°å®‰è£…Ferdi。",
@@ -286,7 +284,7 @@
286 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes", 284 "settings.recipes.customService.headline.communityRecipes": "Community 3rd Party Recipes",
287 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes", 285 "settings.recipes.customService.headline.customRecipes": "Custom 3rd Party Recipes",
288 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes", 286 "settings.recipes.customService.headline.devRecipes": "Your Development Service Recipes",
289 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe to:", 287 "settings.recipes.customService.intro": "To add a custom service, copy the service recipe folder inside:",
290 "settings.recipes.customService.openDevDocs": "å¼€å‘者文档", 288 "settings.recipes.customService.openDevDocs": "å¼€å‘者文档",
291 "settings.recipes.customService.openFolder": "打开文件夹", 289 "settings.recipes.customService.openFolder": "打开文件夹",
292 "settings.recipes.headline": "å¯ç”¨çš„æœåŠ¡", 290 "settings.recipes.headline": "å¯ç”¨çš„æœåŠ¡",
@@ -348,16 +346,14 @@
348 "settings.services.discoverServices": "å‘现æœåŠ¡", 346 "settings.services.discoverServices": "å‘现æœåŠ¡",
349 "settings.services.headline": "您的æœåŠ¡", 347 "settings.services.headline": "您的æœåŠ¡",
350 "settings.services.noServicesAdded": "从添加æœåŠ¡å¼€å§‹ã€‚", 348 "settings.services.noServicesAdded": "从添加æœåŠ¡å¼€å§‹ã€‚",
351 "settings.services.nothingFound": "对ä¸èµ·ï¼Œæ²¡æœ‰ä»»ä½•æœåŠ¡åŒ¹é…您的æœç´¢è¯ - 但您ä»ç„¶å¯ä»¥ä½¿ç”¨â€œè‡ªå®šä¹‰ç½‘ç«™â€é€‰é¡¹æ·»åŠ å®ƒã€‚ 请注æ„,网站å¯èƒ½ä¼šæ˜¾ç¤ºè‡ªæ‚¨å½“å‰ä½¿ç”¨çš„版本以æ¥æ·»åŠ åˆ°Ferdi的更多æœåŠ¡ã€‚ 为了获得这些新æœåŠ¡ï¼Œè¯·è€ƒè™‘å‡çº§ä¸ºè¾ƒæ–°ç‰ˆæœ¬çš„费尔迪。", 349 "settings.services.nothingFound": "Sorry, but no service matched your search term.",
352 "settings.services.servicesRequestFailed": "无法加载您的æœåŠ¡", 350 "settings.services.servicesRequestFailed": "无法加载您的æœåŠ¡",
353 "settings.services.tooltip.isDisabled": "æœåŠ¡å·²ç¦ç”¨", 351 "settings.services.tooltip.isDisabled": "æœåŠ¡å·²ç¦ç”¨",
354 "settings.services.tooltip.isMuted": "所有声音被é™éŸ³", 352 "settings.services.tooltip.isMuted": "所有声音被é™éŸ³",
355 "settings.services.tooltip.notificationsDisabled": "通知已ç¦ç”¨", 353 "settings.services.tooltip.notificationsDisabled": "通知已ç¦ç”¨",
356 "settings.services.updatedInfo": "您的更改已ä¿å­˜", 354 "settings.services.updatedInfo": "您的更改已ä¿å­˜",
357 "settings.supportFerdi.aboutIntro": "<p>Ferdi是一个开æºçš„软件。</p><p>感谢那些使Ferdiæˆä¸ºå¯èƒ½çš„人:</p>", 355 "settings.supportFerdi.aboutIntro": "<p>Ferdi是一个开æºçš„软件。</p><p>感谢那些使Ferdiæˆä¸ºå¯èƒ½çš„人:</p>",
358 "settings.supportFerdi.bannerText": "你想è¦å¸®åŠ©æˆ‘们改进Ferdiå—?",
359 "settings.supportFerdi.headline": "关于 Ferdi", 356 "settings.supportFerdi.headline": "关于 Ferdi",
360 "settings.supportFerdi.openSurvey": "打开调查",
361 "settings.supportFerdi.textDonation": "如果你想è¦æèµ Ferdiçš„å¼€å‘,你å¯ä»¥é€šè¿‡ï¼š", 357 "settings.supportFerdi.textDonation": "如果你想è¦æèµ Ferdiçš„å¼€å‘,你å¯ä»¥é€šè¿‡ï¼š",
362 "settings.supportFerdi.textDonationAnd": "和", 358 "settings.supportFerdi.textDonationAnd": "和",
363 "settings.supportFerdi.textExpenses": "虽然是志愿者åšå¤§éƒ¨åˆ†å·¥ä½œï¼Œä½†æˆ‘们ä»ç„¶éœ€è¦ç”¨é’±æ¥è´­ä¹°æœåŠ¡å™¨å’Œè¯ä¹¦ã€‚ 作为一个社区应用,我们在募集和花费的资金上是完全公开的—— 看看我们的", 359 "settings.supportFerdi.textExpenses": "虽然是志愿者åšå¤§éƒ¨åˆ†å·¥ä½œï¼Œä½†æˆ‘们ä»ç„¶éœ€è¦ç”¨é’±æ¥è´­ä¹°æœåŠ¡å™¨å’Œè¯ä¹¦ã€‚ 作为一个社区应用,我们在募集和花费的资金上是完全公开的—— 看看我们的",
@@ -368,7 +364,6 @@
368 "settings.supportFerdi.textSupportWelcome": "支æŒæ€»æ˜¯å—欢迎的。您å¯ä»¥æ‰¾åˆ°æˆ‘们需è¦çš„帮助列表", 364 "settings.supportFerdi.textSupportWelcome": "支æŒæ€»æ˜¯å—欢迎的。您å¯ä»¥æ‰¾åˆ°æˆ‘们需è¦çš„帮助列表",
369 "settings.supportFerdi.textSupportWelcomeHere": "这里", 365 "settings.supportFerdi.textSupportWelcomeHere": "这里",
370 "settings.supportFerdi.textVolunteers": "Ferdi是由志愿者开å‘而æˆã€‚他们用空闲时间维护ã€ä¿®å¤å’Œæ”¹è¿›Ferdi。", 366 "settings.supportFerdi.textVolunteers": "Ferdi是由志愿者开å‘而æˆã€‚他们用空闲时间维护ã€ä¿®å¤å’Œæ”¹è¿›Ferdi。",
371 "settings.supportFerdi.title": "你喜欢Ferdiå—?",
372 "settings.team.contentHeadline": "Franz Team Management", 367 "settings.team.contentHeadline": "Franz Team Management",
373 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.", 368 "settings.team.copy": "Franz's Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don't loose any functionality in managing your account.",
374 "settings.team.headline": "团队", 369 "settings.team.headline": "团队",
diff --git a/src/i18n/translations.ts b/src/i18n/translations.ts
index 9a7dc7453..9b23497e1 100644
--- a/src/i18n/translations.ts
+++ b/src/i18n/translations.ts
@@ -1,15 +1,16 @@
1/* eslint-disable global-require */ 1/* eslint-disable global-require */
2import { APP_LOCALES } from './languages'; 2import { APP_LOCALES } from './languages';
3 3
4const translations = []; 4export const generatedTranslations = () => {
5for (const key of Object.keys(APP_LOCALES)) { 5 const translations = [];
6 try { 6 for (const key of Object.keys(APP_LOCALES)) {
7 // eslint-disable-next-line import/no-dynamic-require 7 try {
8 const translation = require(`./locales/${key}.json`); 8 // eslint-disable-next-line import/no-dynamic-require
9 translations[key] = translation; 9 const translation = require(`./locales/${key}.json`);
10 } catch { 10 translations[key] = translation;
11 console.warn(`Can't find translations for ${key}`); 11 } catch {
12 console.warn(`Can't find translations for ${key}`);
13 }
12 } 14 }
13} 15 return translations;
14 16};
15module.exports = translations;
diff --git a/src/index.ts b/src/index.ts
index 89903a669..d46641fe1 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -213,6 +213,7 @@ const createWindow = () => {
213 contextIsolation: false, 213 contextIsolation: false,
214 webviewTag: true, 214 webviewTag: true,
215 preload: join(__dirname, 'sentry.js'), 215 preload: join(__dirname, 'sentry.js'),
216 nativeWindowOpen: true,
216 // @ts-expect-error Object literal may only specify known properties, and 'enableRemoteModule' does not exist in type 'WebPreferences'. 217 // @ts-expect-error Object literal may only specify known properties, and 'enableRemoteModule' does not exist in type 'WebPreferences'.
217 enableRemoteModule: true, 218 enableRemoteModule: true,
218 }, 219 },
@@ -406,7 +407,7 @@ const createWindow = () => {
406 ) { 407 ) {
407 // Toggle the window on 'Alt+X' 408 // Toggle the window on 'Alt+X'
408 globalShortcut.register(`${altKey()}+X`, () => { 409 globalShortcut.register(`${altKey()}+X`, () => {
409 trayIcon.trayMenuTemplate[0].click(); 410 trayIcon._toggleWindow();
410 }); 411 });
411 } 412 }
412 }); 413 });
@@ -516,11 +517,10 @@ ipcMain.on('open-browser-window', (_e, { url, serviceId }) => {
516 const serviceSession = session.fromPartition(`persist:service-${serviceId}`); 517 const serviceSession = session.fromPartition(`persist:service-${serviceId}`);
517 const child = new BrowserWindow({ 518 const child = new BrowserWindow({
518 parent: mainWindow, 519 parent: mainWindow,
520 fullscreenable: false,
519 webPreferences: { 521 webPreferences: {
520 session: serviceSession, 522 session: serviceSession,
521 // TODO: Aren't these needed here? 523 nativeWindowOpen: true,
522 // contextIsolation: false,
523 // enableRemoteModule: true,
524 }, 524 },
525 }); 525 });
526 child.show(); 526 child.show();
diff --git a/src/internal-server/app/Controllers/Http/RecipeController.js b/src/internal-server/app/Controllers/Http/RecipeController.js
index 1b0ac7035..7e35e6831 100644
--- a/src/internal-server/app/Controllers/Http/RecipeController.js
+++ b/src/internal-server/app/Controllers/Http/RecipeController.js
@@ -13,8 +13,10 @@ const RECIPES_URL = `${LIVE_FERDI_API}/${API_VERSION}/recipes`;
13class RecipeController { 13class RecipeController {
14 // List official and custom recipes 14 // List official and custom recipes
15 async list({ response }) { 15 async list({ response }) {
16 const officialRecipes = JSON.parse(await (await fetch(RECIPES_URL)).text()); 16 const recipesUrlFetch = await fetch(RECIPES_URL);
17 const customRecipesArray = (await Recipe.all()).rows; 17 const officialRecipes = JSON.parse(await recipesUrlFetch).text();
18 const allRecipes = await Recipe.all();
19 const customRecipesArray = allRecipes.rows;
18 const customRecipes = customRecipesArray.map(recipe => ({ 20 const customRecipes = customRecipesArray.map(recipe => ({
19 id: recipe.recipeId, 21 id: recipe.recipeId,
20 name: recipe.name, 22 name: recipe.name,
@@ -46,7 +48,8 @@ class RecipeController {
46 let results; 48 let results;
47 49
48 if (needle === 'ferdi:custom') { 50 if (needle === 'ferdi:custom') {
49 const dbResults = (await Recipe.all()).toJSON(); 51 const allRecipes = await Recipe.all();
52 const dbResults = allRecipes.toJSON();
50 results = dbResults.map(recipe => ({ 53 results = dbResults.map(recipe => ({
51 id: recipe.recipeId, 54 id: recipe.recipeId,
52 name: recipe.name, 55 name: recipe.name,
@@ -56,20 +59,18 @@ class RecipeController {
56 let remoteResults = []; 59 let remoteResults = [];
57 // eslint-disable-next-line eqeqeq 60 // eslint-disable-next-line eqeqeq
58 if (Env.get('CONNECT_WITH_FRANZ') == 'true') { 61 if (Env.get('CONNECT_WITH_FRANZ') == 'true') {
59 remoteResults = JSON.parse( 62 const recipesUrlFetch = await fetch(
60 await ( 63 `${RECIPES_URL}/search?needle=${encodeURIComponent(needle)}`,
61 await fetch(
62 `${RECIPES_URL}/search?needle=${encodeURIComponent(needle)}`,
63 )
64 ).text(),
65 ); 64 );
65 remoteResults = JSON.parse(await recipesUrlFetch.text());
66 } 66 }
67 67
68 debug('remoteResults:', remoteResults); 68 debug('remoteResults:', remoteResults);
69 69
70 const localResultsArray = ( 70 const recipeQuery = await Recipe.query()
71 await Recipe.query().where('name', 'LIKE', `%${needle}%`).fetch() 71 .where('name', 'LIKE', `%${needle}%`)
72 ).toJSON(); 72 .fetch();
73 const localResultsArray = recipeQuery.toJSON();
73 const localResults = localResultsArray.map(recipe => ({ 74 const localResults = localResultsArray.map(recipe => ({
74 id: recipe.recipeId, 75 id: recipe.recipeId,
75 name: recipe.name, 76 name: recipe.name,
diff --git a/src/internal-server/app/Controllers/Http/ServiceController.js b/src/internal-server/app/Controllers/Http/ServiceController.js
index c4ca5a113..a3add4464 100644
--- a/src/internal-server/app/Controllers/Http/ServiceController.js
+++ b/src/internal-server/app/Controllers/Http/ServiceController.js
@@ -34,6 +34,7 @@ class ServiceController {
34 do { 34 do {
35 serviceId = uuid(); 35 serviceId = uuid();
36 } while ( 36 } while (
37 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member
37 (await Service.query().where('serviceId', serviceId).fetch()).rows 38 (await Service.query().where('serviceId', serviceId).fetch()).rows
38 .length > 0 39 .length > 0
39 ); 40 );
@@ -68,7 +69,8 @@ class ServiceController {
68 69
69 // List all services a user has created 70 // List all services a user has created
70 async list({ response }) { 71 async list({ response }) {
71 const services = (await Service.all()).rows; 72 const allServices = await Service.all();
73 const services = allServices.rows;
72 // Convert to array with all data Franz wants 74 // Convert to array with all data Franz wants
73 const servicesArray = services.map(service => { 75 const servicesArray = services.map(service => {
74 const settings = 76 const settings =
@@ -111,8 +113,8 @@ class ServiceController {
111 size: '2mb', 113 size: '2mb',
112 }); 114 });
113 const { id } = params; 115 const { id } = params;
114 const service = (await Service.query().where('serviceId', id).fetch()) 116 const serviceQuery = await Service.query().where('serviceId', id).fetch();
115 .rows[0]; 117 const service = serviceQuery.rows[0];
116 const settings = 118 const settings =
117 typeof service.settings === 'string' 119 typeof service.settings === 'string'
118 ? JSON.parse(service.settings) 120 ? JSON.parse(service.settings)
@@ -166,8 +168,8 @@ class ServiceController {
166 const { id } = params; 168 const { id } = params;
167 169
168 // Get current settings from db 170 // Get current settings from db
169 const serviceData = (await Service.query().where('serviceId', id).fetch()) 171 const serviceQuery = await Service.query().where('serviceId', id).fetch();
170 .rows[0]; 172 const serviceData = serviceQuery.rows[0];
171 173
172 const settings = { 174 const settings = {
173 ...(typeof serviceData.settings === 'string' 175 ...(typeof serviceData.settings === 'string'
@@ -185,8 +187,10 @@ class ServiceController {
185 }); 187 });
186 188
187 // Get updated row 189 // Get updated row
188 const service = (await Service.query().where('serviceId', id).fetch()) 190 const anotherServiceQuery = await Service.query()
189 .rows[0]; 191 .where('serviceId', id)
192 .fetch();
193 const service = anotherServiceQuery.rows[0];
190 194
191 return response.send({ 195 return response.send({
192 data: { 196 data: {
@@ -218,11 +222,12 @@ class ServiceController {
218 222
219 for (const service of Object.keys(data)) { 223 for (const service of Object.keys(data)) {
220 // Get current settings from db 224 // Get current settings from db
221 const serviceData = ( 225 // eslint-disable-next-line no-await-in-loop
222 await Service.query() // eslint-disable-line no-await-in-loop 226 const serviceQuery = await Service.query()
223 .where('serviceId', service) 227 .where('serviceId', service)
224 .fetch() 228 .fetch();
225 ).rows[0]; 229
230 const serviceData = serviceQuery.rows[0];
226 231
227 const settings = { 232 const settings = {
228 ...JSON.parse(serviceData.settings), 233 ...JSON.parse(serviceData.settings),
@@ -238,7 +243,8 @@ class ServiceController {
238 } 243 }
239 244
240 // Get new services 245 // Get new services
241 const services = (await Service.all()).rows; 246 const allServices = await Service.all();
247 const services = allServices.rows;
242 // Convert to array with all data Franz wants 248 // Convert to array with all data Franz wants
243 const servicesArray = services.map(service => { 249 const servicesArray = services.map(service => {
244 const settings = 250 const settings =
diff --git a/src/internal-server/app/Controllers/Http/UserController.js b/src/internal-server/app/Controllers/Http/UserController.js
index 2ecc8241c..abfbc2470 100644
--- a/src/internal-server/app/Controllers/Http/UserController.js
+++ b/src/internal-server/app/Controllers/Http/UserController.js
@@ -1,3 +1,4 @@
1/* eslint-disable no-await-in-loop, unicorn/no-await-expression-member */
1const User = use('App/Models/User'); 2const User = use('App/Models/User');
2const Service = use('App/Models/Service'); 3const Service = use('App/Models/Service');
3const Workspace = use('App/Models/Workspace'); 4const Workspace = use('App/Models/Workspace');
@@ -230,8 +231,10 @@ class UserController {
230 auth, 231 auth,
231 response, 232 response,
232 }) { 233 }) {
233 const services = (await Service.all()).toJSON(); 234 const allServices = await Service.all();
234 const workspaces = (await Workspace.all()).toJSON(); 235 const services = allServices.toJSON();
236 const allWorkspaces = await Workspace.all();
237 const workspaces = allWorkspaces.toJSON();
235 238
236 const exportData = { 239 const exportData = {
237 username: 'Ferdi', 240 username: 'Ferdi',
diff --git a/src/internal-server/app/Controllers/Http/WorkspaceController.js b/src/internal-server/app/Controllers/Http/WorkspaceController.js
index 528721f13..ee5731caf 100644
--- a/src/internal-server/app/Controllers/Http/WorkspaceController.js
+++ b/src/internal-server/app/Controllers/Http/WorkspaceController.js
@@ -25,11 +25,13 @@ class WorkspaceController {
25 do { 25 do {
26 workspaceId = uuid(); 26 workspaceId = uuid();
27 } while ( 27 } while (
28 // eslint-disable-next-line no-await-in-loop, unicorn/no-await-expression-member
28 (await Workspace.query().where('workspaceId', workspaceId).fetch()).rows 29 (await Workspace.query().where('workspaceId', workspaceId).fetch()).rows
29 .length > 0 30 .length > 0
30 ); 31 );
31 32
32 const order = (await Workspace.all()).rows.length; 33 const allWorkspaces = await Workspace.all();
34 const order = allWorkspaces.rows.length;
33 const { name } = data; 35 const { name } = data;
34 delete data.name; 36 delete data.name;
35 37
@@ -54,7 +56,6 @@ class WorkspaceController {
54 // Validate user input 56 // Validate user input
55 const validation = await validateAll(request.all(), { 57 const validation = await validateAll(request.all(), {
56 name: 'required', 58 name: 'required',
57 services: 'required|array',
58 }); 59 });
59 if (validation.fails()) { 60 if (validation.fails()) {
60 return response.status(401).send({ 61 return response.status(401).send({
@@ -76,8 +77,10 @@ class WorkspaceController {
76 }); 77 });
77 78
78 // Get updated row 79 // Get updated row
79 const workspace = (await Workspace.query().where('workspaceId', id).fetch()) 80 const workspaceQuery = await Workspace.query()
80 .rows[0]; 81 .where('workspaceId', id)
82 .fetch();
83 const workspace = workspaceQuery.rows[0];
81 84
82 return response.send({ 85 return response.send({
83 id: workspace.workspaceId, 86 id: workspace.workspaceId,
@@ -118,7 +121,8 @@ class WorkspaceController {
118 121
119 // List all workspaces a user has created 122 // List all workspaces a user has created
120 async list({ response }) { 123 async list({ response }) {
121 const workspaces = (await Workspace.all()).rows; 124 const allWorkspaces = await Workspace.all();
125 const workspaces = allWorkspaces.rows;
122 // Convert to array with all data Franz wants 126 // Convert to array with all data Franz wants
123 let workspacesArray = []; 127 let workspacesArray = [];
124 if (workspaces) { 128 if (workspaces) {
diff --git a/src/lib/Form.ts b/src/lib/Form.ts
index 9b8321948..14ea82948 100644
--- a/src/lib/Form.ts
+++ b/src/lib/Form.ts
@@ -1,4 +1,5 @@
1import Form from 'mobx-react-form'; 1import Form from 'mobx-react-form';
2import vjf from 'mobx-react-form/lib/validators/VJF';
2 3
3export default class DefaultForm extends Form { 4export default class DefaultForm extends Form {
4 bindings() { 5 bindings() {
@@ -29,4 +30,10 @@ export default class DefaultForm extends Form {
29 // // }, 30 // // },
30 }; 31 };
31 } 32 }
33
34 plugins() {
35 return {
36 vjf: vjf(),
37 };
38 }
32} 39}
diff --git a/src/lib/Menu.js b/src/lib/Menu.js
index 7d4c228f5..8e529d859 100644
--- a/src/lib/Menu.js
+++ b/src/lib/Menu.js
@@ -1,5 +1,11 @@
1import { clipboard } from 'electron'; 1import { clipboard } from 'electron';
2import { app, Menu, dialog, systemPreferences } from '@electron/remote'; 2import {
3 app,
4 Menu,
5 dialog,
6 systemPreferences,
7 getCurrentWindow,
8} from '@electron/remote';
3import { autorun, observable } from 'mobx'; 9import { autorun, observable } from 'mobx';
4import { defineMessages } from 'react-intl'; 10import { defineMessages } from 'react-intl';
5import { 11import {
@@ -951,7 +957,8 @@ class FranzMenu {
951 this.actions.service.setActive({ serviceId: service.id }); 957 this.actions.service.setActive({ serviceId: service.id });
952 958
953 if (isMac && i === 0) { 959 if (isMac && i === 0) {
954 app.mainWindow.restore(); 960 // feat(Mac): Open Window with Cmd+1
961 getCurrentWindow().restore();
955 } 962 }
956 }, 963 },
957 }); 964 });
diff --git a/src/lib/Tray.js b/src/lib/Tray.js
index e7afc3552..63382483e 100644
--- a/src/lib/Tray.js
+++ b/src/lib/Tray.js
@@ -6,6 +6,7 @@ import {
6 systemPreferences, 6 systemPreferences,
7 Tray, 7 Tray,
8 ipcMain, 8 ipcMain,
9 BrowserWindow,
9} from 'electron'; 10} from 'electron';
10import { join } from 'path'; 11import { join } from 'path';
11import macosVersion from 'macos-version'; 12import macosVersion from 'macos-version';
@@ -28,24 +29,27 @@ export default class TrayIcon {
28 29
29 visible = false; 30 visible = false;
30 31
31 trayMenuTemplate = [ 32 isAppMuted = false;
33
34 mainWindow = null;
35
36 trayMenuTemplate = tray => [
32 { 37 {
33 label: 'Show Ferdi', 38 label:
39 tray.mainWindow.isVisible() && tray.mainWindow.isFocused()
40 ? 'Hide Ferdi'
41 : 'Show Ferdi',
34 click() { 42 click() {
35 if (app.mainWindow.isMinimized()) { 43 tray._toggleWindow();
36 app.mainWindow.restore();
37 } else if (app.mainWindow.isVisible()) {
38 app.mainWindow.hide();
39 } else {
40 app.mainWindow.show();
41 app.mainWindow.focus();
42 }
43 }, 44 },
44 }, 45 },
45 { 46 {
46 label: 'Disable Notifications & Audio', 47 label: tray.isAppMuted
48 ? 'Enable Notifications && Audio'
49 : 'Disable Notifications && Audio',
47 click() { 50 click() {
48 app.mainWindow.webContents.send('muteApp'); 51 if (!tray.mainWindow) return;
52 tray.mainWindow.webContents.send('muteApp');
49 }, 53 },
50 }, 54 },
51 { 55 {
@@ -60,24 +64,44 @@ export default class TrayIcon {
60 ipcMain.on('initialAppSettings', (event, appSettings) => { 64 ipcMain.on('initialAppSettings', (event, appSettings) => {
61 this._updateTrayMenu(appSettings); 65 this._updateTrayMenu(appSettings);
62 }); 66 });
63
64 ipcMain.on('updateAppSettings', (event, appSettings) => { 67 ipcMain.on('updateAppSettings', (event, appSettings) => {
65 this._updateTrayMenu(appSettings); 68 this._updateTrayMenu(appSettings);
66 }); 69 });
70
71 this.mainWindow = BrowserWindow.getAllWindows()[0];
72
73 // listen to window events to be able to set correct string
74 // to tray menu ('Hide Ferdi' / 'Show Ferdi')
75 this.mainWindow.on('hide', () => {
76 this._updateTrayMenu(null);
77 });
78 this.mainWindow.on('restore', () => {
79 this._updateTrayMenu(null);
80 });
81 this.mainWindow.on('minimize', () => {
82 this._updateTrayMenu(null);
83 });
84 this.mainWindow.on('show', () => {
85 this._updateTrayMenu(null);
86 });
87 this.mainWindow.on('focus', () => {
88 this._updateTrayMenu(null);
89 });
90 this.mainWindow.on('blur', () => {
91 this._updateTrayMenu(null);
92 });
67 } 93 }
68 94
69 _updateTrayMenu(appSettings) { 95 _updateTrayMenu(appSettings) {
70 if (!this.trayIcon) return; 96 if (!this.trayIcon) return;
71 97
72 if (appSettings.type === 'app') { 98 if (appSettings && appSettings.type === 'app') {
73 const { isAppMuted } = appSettings.data; 99 this.isAppMuted = appSettings.data.isAppMuted; // save current state after a change
74 this.trayMenuTemplate[1].label = isAppMuted 100 }
75 ? 'Enable Notifications && Audio' 101
76 : 'Disable Notifications && Audio'; 102 this.trayMenu = Menu.buildFromTemplate(this.trayMenuTemplate(this));
77 this.trayMenu = Menu.buildFromTemplate(this.trayMenuTemplate); 103 if (isLinux) {
78 if (isLinux) { 104 this.trayIcon.setContextMenu(this.trayMenu);
79 this.trayIcon.setContextMenu(this.trayMenu);
80 }
81 } 105 }
82 } 106 }
83 107
@@ -90,23 +114,15 @@ export default class TrayIcon {
90 if (this.trayIcon) return; 114 if (this.trayIcon) return;
91 115
92 this.trayIcon = new Tray(this._getAsset('tray', INDICATOR_TRAY_PLAIN)); 116 this.trayIcon = new Tray(this._getAsset('tray', INDICATOR_TRAY_PLAIN));
93
94 this.trayIcon.setToolTip('Ferdi'); 117 this.trayIcon.setToolTip('Ferdi');
95 118
96 this.trayMenu = Menu.buildFromTemplate(this.trayMenuTemplate); 119 this.trayMenu = Menu.buildFromTemplate(this.trayMenuTemplate(this));
97 if (isLinux) { 120 if (isLinux) {
98 this.trayIcon.setContextMenu(this.trayMenu); 121 this.trayIcon.setContextMenu(this.trayMenu);
99 } 122 }
100 123
101 this.trayIcon.on('click', () => { 124 this.trayIcon.on('click', () => {
102 if (app.mainWindow.isMinimized()) { 125 this._toggleWindow();
103 app.mainWindow.restore();
104 } else if (app.mainWindow.isVisible()) {
105 app.mainWindow.hide();
106 } else {
107 app.mainWindow.show();
108 app.mainWindow.focus();
109 }
110 }); 126 });
111 127
112 if (isMac || isWindows) { 128 if (isMac || isWindows) {
@@ -125,6 +141,26 @@ export default class TrayIcon {
125 } 141 }
126 } 142 }
127 143
144 _toggleWindow() {
145 const mainWindow = BrowserWindow.getAllWindows()[0];
146 if (!mainWindow) return;
147
148 if (mainWindow.isMinimized()) {
149 mainWindow.restore();
150 } else if (mainWindow.isVisible() && mainWindow.isFocused()) {
151 if (isMac && mainWindow.isFullScreen()) {
152 mainWindow.once('show', () => mainWindow?.setFullScreen(true));
153 mainWindow.once('leave-full-screen', () => mainWindow?.hide());
154 mainWindow.setFullScreen(false);
155 } else {
156 mainWindow.hide();
157 }
158 } else {
159 mainWindow.show();
160 mainWindow.focus();
161 }
162 }
163
128 hide() { 164 hide() {
129 this.visible = false; 165 this.visible = false;
130 this._hide(); 166 this._hide();
diff --git a/src/models/Service.js b/src/models/Service.js
index 3cf0523c3..bd4f8c223 100644
--- a/src/models/Service.js
+++ b/src/models/Service.js
@@ -238,6 +238,7 @@ export default class Service {
238 let url; 238 let url;
239 try { 239 try {
240 url = normalizeUrl(this.customUrl, { 240 url = normalizeUrl(this.customUrl, {
241 stripAuthentication: false,
241 stripWWW: false, 242 stripWWW: false,
242 removeTrailingSlash: false, 243 removeTrailingSlash: false,
243 }); 244 });
diff --git a/src/routes.js b/src/routes.tsx
index 9891e5d43..192090737 100644
--- a/src/routes.js
+++ b/src/routes.tsx
@@ -1,5 +1,4 @@
1import { Component } from 'react'; 1import { Component } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react'; 2import { inject, observer } from 'mobx-react';
4import { Router, Route, IndexRedirect } from 'react-router'; 3import { Router, Route, IndexRedirect } from 'react-router';
5 4
@@ -30,9 +29,14 @@ import { WORKSPACES_ROUTES } from './features/workspaces/constants';
30 29
31import SettingsStore from './stores/SettingsStore'; 30import SettingsStore from './stores/SettingsStore';
32 31
33@inject('stores', 'actions') 32type Props = {
34@observer 33 stores: {
35class Routes extends Component { 34 settings: typeof SettingsStore;
35 };
36 history: any;
37};
38
39class Routes extends Component<Props> {
36 render() { 40 render() {
37 const { locked } = this.props.stores.settings.app; 41 const { locked } = this.props.stores.settings.app;
38 42
@@ -88,11 +92,4 @@ class Routes extends Component {
88 } 92 }
89} 93}
90 94
91Routes.wrappedComponent.propTypes = { 95export default inject('stores', 'actions')(observer(Routes));
92 stores: PropTypes.shape({
93 settings: PropTypes.instanceOf(SettingsStore).isRequired,
94 }).isRequired,
95 history: PropTypes.any.isRequired,
96};
97
98export default Routes;
diff --git a/src/stores.types.ts b/src/stores.types.ts
index c63cdd4b8..34922c199 100644
--- a/src/stores.types.ts
+++ b/src/stores.types.ts
@@ -276,6 +276,7 @@ interface UIStore {
276 actionStatus: () => void; 276 actionStatus: () => void;
277 isDarkThemeActive: () => void; 277 isDarkThemeActive: () => void;
278 isSplitModeActive: () => void; 278 isSplitModeActive: () => void;
279 splitColumnsNo: () => void;
279 showMessageBadgesEvenWhenMuted: () => void; 280 showMessageBadgesEvenWhenMuted: () => void;
280 theme: () => void; 281 theme: () => void;
281} 282}
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js
index 81cef3775..5881e37a4 100644
--- a/src/stores/AppStore.js
+++ b/src/stores/AppStore.js
@@ -19,7 +19,7 @@ import Request from './lib/Request';
19import { CHECK_INTERVAL, DEFAULT_APP_SETTINGS } from '../config'; 19import { CHECK_INTERVAL, DEFAULT_APP_SETTINGS } from '../config';
20import { isMac, electronVersion, osRelease } from '../environment'; 20import { isMac, electronVersion, osRelease } from '../environment';
21import { ferdiVersion, userDataPath, ferdiLocale } from '../environment-remote'; 21import { ferdiVersion, userDataPath, ferdiLocale } from '../environment-remote';
22import locales from '../i18n/translations'; 22import { generatedTranslations } from '../i18n/translations';
23import { getLocale } from '../helpers/i18n-helpers'; 23import { getLocale } from '../helpers/i18n-helpers';
24 24
25import { 25import {
@@ -42,6 +42,8 @@ const autoLauncher = new AutoLaunch({
42const CATALINA_NOTIFICATION_HACK_KEY = 42const CATALINA_NOTIFICATION_HACK_KEY =
43 '_temp_askedForCatalinaNotificationPermissions'; 43 '_temp_askedForCatalinaNotificationPermissions';
44 44
45const locales = generatedTranslations();
46
45export default class AppStore extends Store { 47export default class AppStore extends Store {
46 updateStatusTypes = { 48 updateStatusTypes = {
47 CHECKING: 'CHECKING', 49 CHECKING: 'CHECKING',
@@ -322,10 +324,11 @@ export default class AppStore extends Store {
322 this.actions.service.setActive({ 324 this.actions.service.setActive({
323 serviceId, 325 serviceId,
324 }); 326 });
325 if (!app.mainWindow.isVisible()) { 327
328 if (!mainWindow.isVisible()) {
326 mainWindow.show(); 329 mainWindow.show();
327 } 330 }
328 if (app.mainWindow.isMinimized()) { 331 if (mainWindow.isMinimized()) {
329 mainWindow.restore(); 332 mainWindow.restore();
330 } 333 }
331 mainWindow.focus(); 334 mainWindow.focus();
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index 926ee36f0..e546850f9 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -171,6 +171,13 @@ export default class ServicesStore extends Store {
171 ); 171 );
172 172
173 reaction( 173 reaction(
174 () => this.stores.settings.app.splitColumns,
175 () => {
176 this._shareSettingsWithServiceProcess();
177 },
178 );
179
180 reaction(
174 () => this.stores.settings.app.searchEngine, 181 () => this.stores.settings.app.searchEngine,
175 () => { 182 () => {
176 this._shareSettingsWithServiceProcess(); 183 this._shareSettingsWithServiceProcess();
@@ -580,7 +587,10 @@ export default class ServicesStore extends Store {
580 const service = this.one(serviceId); 587 const service = this.one(serviceId);
581 588
582 for (const s of this.all) { 589 for (const s of this.all) {
583 s.isActive = false; 590 if (s.isActive) {
591 s.lastUsed = Date.now();
592 s.isActive = false;
593 }
584 } 594 }
585 service.isActive = true; 595 service.isActive = true;
586 this._awake({ serviceId: service.id }); 596 this._awake({ serviceId: service.id });
@@ -617,12 +627,7 @@ export default class ServicesStore extends Store {
617 this.allDisplayed.length, 627 this.allDisplayed.length,
618 ); 628 );
619 629
620 for (const s of this.all) { 630 this._setActive({ serviceId: this.allDisplayed[nextIndex].id });
621 s.isActive = false;
622 }
623 this.allDisplayed[nextIndex].isActive = true;
624
625 this._focusActiveService();
626 } 631 }
627 632
628 @action _setActivePrev() { 633 @action _setActivePrev() {
@@ -632,12 +637,7 @@ export default class ServicesStore extends Store {
632 this.allDisplayed.length, 637 this.allDisplayed.length,
633 ); 638 );
634 639
635 for (const s of this.all) { 640 this._setActive({ serviceId: this.allDisplayed[prevIndex].id });
636 s.isActive = false;
637 }
638 this.allDisplayed[prevIndex].isActive = true;
639
640 this._focusActiveService();
641 } 641 }
642 642
643 @action _setUnreadMessageCount({ serviceId, count }) { 643 @action _setUnreadMessageCount({ serviceId, count }) {
@@ -655,20 +655,20 @@ export default class ServicesStore extends Store {
655 655
656 @action _setWebviewReference({ serviceId, webview }) { 656 @action _setWebviewReference({ serviceId, webview }) {
657 const service = this.one(serviceId); 657 const service = this.one(serviceId);
658 658 if (service) {
659 service.webview = webview; 659 service.webview = webview;
660 660
661 if (!service.isAttached) { 661 if (!service.isAttached) {
662 debug('Webview is not attached, initializing'); 662 debug('Webview is not attached, initializing');
663 service.initializeWebViewEvents({ 663 service.initializeWebViewEvents({
664 handleIPCMessage: this.actions.service.handleIPCMessage, 664 handleIPCMessage: this.actions.service.handleIPCMessage,
665 openWindow: this.actions.service.openWindow, 665 openWindow: this.actions.service.openWindow,
666 stores: this.stores, 666 stores: this.stores,
667 }); 667 });
668 service.initializeWebViewListener(); 668 service.initializeWebViewListener();
669 }
670 service.isAttached = true;
669 } 671 }
670
671 service.isAttached = true;
672 } 672 }
673 673
674 @action _detachService({ service }) { 674 @action _detachService({ service }) {
@@ -690,20 +690,22 @@ export default class ServicesStore extends Store {
690 // TODO: add checks to not focus service when router path is /settings or /auth 690 // TODO: add checks to not focus service when router path is /settings or /auth
691 const service = this.active; 691 const service = this.active;
692 if (service) { 692 if (service) {
693 document.title = `Ferdi - ${service.name} ${ 693 if (service._webview) {
694 service.dialogTitle ? ` - ${service.dialogTitle}` : '' 694 document.title = `Ferdi - ${service.name} ${
695 } ${service._webview ? `- ${service._webview.getTitle()}` : ''}`; 695 service.dialogTitle ? ` - ${service.dialogTitle}` : ''
696 this._focusService({ serviceId: service.id }); 696 } ${service._webview ? `- ${service._webview.getTitle()}` : ''}`;
697 if (this.stores.settings.app.splitMode && !focusEvent) { 697 this._focusService({ serviceId: service.id });
698 setTimeout(() => { 698 if (this.stores.settings.app.splitMode && !focusEvent) {
699 document 699 setTimeout(() => {
700 .querySelector('.services__webview-wrapper.is-active') 700 document
701 .scrollIntoView({ 701 .querySelector('.services__webview-wrapper.is-active')
702 behavior: 'smooth', 702 .scrollIntoView({
703 block: 'end', 703 behavior: 'smooth',
704 inline: 'nearest', 704 block: 'end',
705 }); 705 inline: 'nearest',
706 }, 10); 706 });
707 }, 10);
708 }
707 } 709 }
708 } else { 710 } else {
709 debug('No service is active'); 711 debug('No service is active');
@@ -797,8 +799,6 @@ export default class ServicesStore extends Store {
797 options.icon = '/assets/img/notification-badge.gif'; 799 options.icon = '/assets/img/notification-badge.gif';
798 } 800 }
799 801
800 console.log(title, options);
801
802 this.actions.app.notify({ 802 this.actions.app.notify({
803 notificationId: args[0].notificationId, 803 notificationId: args[0].notificationId,
804 title, 804 title,
@@ -1036,10 +1036,6 @@ export default class ServicesStore extends Store {
1036 if (!service.canHibernate) { 1036 if (!service.canHibernate) {
1037 return; 1037 return;
1038 } 1038 }
1039 if (service.isActive) {
1040 debug(`Skipping service hibernation for ${service.name}`);
1041 return;
1042 }
1043 1039
1044 debug(`Hibernate ${service.name}`); 1040 debug(`Hibernate ${service.name}`);
1045 1041
diff --git a/src/stores/UIStore.ts b/src/stores/UIStore.js
index 6a9597006..9c194aa91 100644
--- a/src/stores/UIStore.ts
+++ b/src/stores/UIStore.js
@@ -6,10 +6,6 @@ import Store from './lib/Store';
6import { isMac, isWindows } from '../environment'; 6import { isMac, isWindows } from '../environment';
7 7
8export default class UIStore extends Store { 8export default class UIStore extends Store {
9 actions: any;
10
11 stores: any;
12
13 @observable showServicesUpdatedInfoBar = false; 9 @observable showServicesUpdatedInfoBar = false;
14 10
15 @observable isOsDarkThemeActive = nativeTheme.shouldUseDarkColors; 11 @observable isOsDarkThemeActive = nativeTheme.shouldUseDarkColors;
@@ -58,6 +54,13 @@ export default class UIStore extends Store {
58 }, 54 },
59 { fireImmediately: true }, 55 { fireImmediately: true },
60 ); 56 );
57 reaction(
58 () => this.splitColumnsNo,
59 () => {
60 this._setupColumnsInDOM();
61 },
62 { fireImmediately: true },
63 );
61 } 64 }
62 65
63 @computed get showMessageBadgesEvenWhenMuted() { 66 @computed get showMessageBadgesEvenWhenMuted() {
@@ -88,6 +91,10 @@ export default class UIStore extends Store {
88 return this.stores.settings.app.splitMode; 91 return this.stores.settings.app.splitMode;
89 } 92 }
90 93
94 @computed get splitColumnsNo() {
95 return this.stores.settings.app.splitColumns;
96 }
97
91 @computed get theme() { 98 @computed get theme() {
92 const themeId = 99 const themeId =
93 this.isDarkThemeActive || this.stores.settings.app.darkMode 100 this.isDarkThemeActive || this.stores.settings.app.darkMode
@@ -117,22 +124,23 @@ export default class UIStore extends Store {
117 124
118 // Reactions 125 // Reactions
119 _setupThemeInDOM() { 126 _setupThemeInDOM() {
120 const body = document.querySelector('body');
121
122 if (!this.isDarkThemeActive) { 127 if (!this.isDarkThemeActive) {
123 body?.classList.remove('theme__dark'); 128 document.body.classList.remove('theme__dark');
124 } else { 129 } else {
125 body?.classList.add('theme__dark'); 130 document.body.classList.add('theme__dark');
126 } 131 }
127 } 132 }
128 133
129 _setupModeInDOM() { 134 _setupModeInDOM() {
130 const body = document.querySelector('body');
131
132 if (!this.isSplitModeActive) { 135 if (!this.isSplitModeActive) {
133 body?.classList.remove('mode__split'); 136 document.body.classList.remove('mode__split');
134 } else { 137 } else {
135 body?.classList.add('mode__split'); 138 document.body.classList.add('mode__split');
139 document.body.dataset.columns = this.splitColumnsNo;
136 } 140 }
137 } 141 }
142
143 _setupColumnsInDOM() {
144 document.body.dataset.columns = this.splitColumnsNo;
145 }
138} 146}
diff --git a/src/stores/lib/Request.js b/src/stores/lib/Request.js
index 65871ea17..69c2e1a52 100644
--- a/src/stores/lib/Request.js
+++ b/src/stores/lib/Request.js
@@ -97,6 +97,7 @@ export default class Request {
97 97
98 reload() { 98 reload() {
99 const args = this._currentApiCall ? this._currentApiCall.args : []; 99 const args = this._currentApiCall ? this._currentApiCall.args : [];
100 this.error = null;
100 return this.execute(...args); 101 return this.execute(...args);
101 } 102 }
102 103
@@ -135,6 +136,7 @@ export default class Request {
135 } 136 }
136 137
137 reset = () => { 138 reset = () => {
139 this.error = null;
138 this.result = null; 140 this.result = null;
139 this.isExecuting = false; 141 this.isExecuting = false;
140 this.isError = false; 142 this.isError = false;
diff --git a/src/styles/auth.scss b/src/styles/auth.scss
index aee255196..710cfe10b 100644
--- a/src/styles/auth.scss
+++ b/src/styles/auth.scss
@@ -19,6 +19,10 @@
19 a { color: $dark-theme-text-color; } 19 a { color: $dark-theme-text-color; }
20 } 20 }
21 21
22 .welcome__featured-services {
23 background: $dark-theme-gray-dark;
24 }
25
22 .legal { 26 .legal {
23 color: $dark-theme-text-color; 27 color: $dark-theme-text-color;
24 28
@@ -36,7 +40,7 @@
36} 40}
37 41
38.auth { 42.auth {
39 background: $theme-brand-gradient; 43 background: $dark-theme-gray-darkest;
40 display: flex; 44 display: flex;
41 justify-content: center; 45 justify-content: center;
42 46
diff --git a/src/styles/features.scss b/src/styles/features.scss
index d2931f837..80362b648 100644
--- a/src/styles/features.scss
+++ b/src/styles/features.scss
@@ -11,3 +11,18 @@
11 background: $theme-brand-primary; 11 background: $theme-brand-primary;
12 } 12 }
13} 13}
14
15.quick-switch {
16 .service {
17 background: $theme-gray-lighter;
18 border: inherit;
19 }
20
21 .active {
22 background: $theme-brand-primary;
23 }
24}
25
26.theme__dark .publish-debug, .theme__dark .nightly-builds {
27 background: $dark-theme-gray-darkest;
28}
diff --git a/src/styles/layout.scss b/src/styles/layout.scss
index b5d4d86d0..abd38b506 100644
--- a/src/styles/layout.scss
+++ b/src/styles/layout.scss
@@ -17,6 +17,8 @@ html {
17} 17}
18 18
19.theme__dark .app { 19.theme__dark .app {
20 background: #272727;
21
20 .sidebar { 22 .sidebar {
21 background: $dark-theme-gray-darker; 23 background: $dark-theme-gray-darker;
22 color: $theme-text-color; 24 color: $theme-text-color;
@@ -33,7 +35,6 @@ html {
33 35
34 .sidebar__button { 36 .sidebar__button {
35 color: $dark-theme-gray-lighter; 37 color: $dark-theme-gray-lighter;
36 font-size: 22px;
37 38
38 &:hover, 39 &:hover,
39 &:active { 40 &:active {
@@ -49,27 +50,6 @@ html {
49 opacity: 0.25; 50 opacity: 0.25;
50 filter: grayscale(1); 51 filter: grayscale(1);
51 } 52 }
52
53 .update-available {
54 align-items: center;
55 background: $theme-brand-danger;
56 border-radius: 20px;
57 bottom: 5px;
58 color: #fff;
59 display: flex;
60 justify-content: center;
61 padding: 0px 5px;
62 position: absolute;
63 right: 16px;
64 padding-top: 0;
65 font-size: 0px;
66 min-height: 15px;
67 min-width: 15px;
68
69 animation-name: pulse-danger;
70 animation-duration: 0.75s;
71 animation-iteration-count: 6;
72 }
73 } 53 }
74 } 54 }
75 55
@@ -78,6 +58,27 @@ html {
78 } 58 }
79} 59}
80 60
61.app .sidebar .sidebar__button .update-available {
62 align-items: center;
63 background: $theme-brand-danger;
64 border-radius: 20px;
65 bottom: 5px;
66 color: #fff;
67 display: flex;
68 justify-content: center;
69 padding: 0px 5px;
70 position: absolute;
71 right: 16px;
72 padding-top: 0;
73 font-size: 0px;
74 min-height: 15px;
75 min-width: 15px;
76
77 animation-name: pulse-danger;
78 animation-duration: 0.75s;
79 animation-iteration-count: 6;
80}
81
81body.win32:not(.isFullScreen) .app .app__content { 82body.win32:not(.isFullScreen) .app .app__content {
82 height: calc(100% - 28px); 83 height: calc(100% - 28px);
83} 84}
@@ -87,6 +88,7 @@ body.win32:not(.isFullScreen) .app .app__content {
87} 88}
88 89
89.app { 90.app {
91 background: #fff;
90 .app__content { 92 .app__content {
91 display: flex; 93 display: flex;
92 width: calc(100% + 300px); 94 width: calc(100% + 300px);
diff --git a/src/styles/services.scss b/src/styles/services.scss
index dd053e93d..cedfcbdd1 100644
--- a/src/styles/services.scss
+++ b/src/styles/services.scss
@@ -18,21 +18,35 @@
18 } 18 }
19} 19}
20 20
21.mode__split .services { 21.mode__split {
22 display: flex; 22 .services {
23 overflow: visible; 23 display: flex;
24 24 overflow: visible;
25 .services__webview {
26 position: relative;
27 flex: 1 0 50%;
28 25
29 @media (min-width: 1280px) { 26 .services__webview {
30 flex-basis: 33.33%; 27 position: relative;
28 flex: 1 0 33.33%;
31 } 29 }
30 }
32 31
33 @media (min-width: 2048px) { 32 &[data-columns="1"] .services .services__webview {
34 flex-basis: 25%; 33 flex-basis: 100%;
35 } 34 }
35
36 &[data-columns="2"] .services .services__webview {
37 flex-basis: 50%;
38 }
39
40 &[data-columns="3"] .services .services__webview {
41 flex-basis: 33.33%;
42 }
43
44 &[data-columns="4"] .services .services__webview {
45 flex-basis: 25%;
46 }
47
48 &[data-columns="5"] .services .services__webview {
49 flex-basis: 20%;
36 } 50 }
37} 51}
38 52
diff --git a/src/styles/tabs.scss b/src/styles/tabs.scss
index c5111fa91..fbff544ed 100644
--- a/src/styles/tabs.scss
+++ b/src/styles/tabs.scss
@@ -14,9 +14,6 @@
14 &.is-disabled .tab-item__icon { 14 &.is-disabled .tab-item__icon {
15 filter: grayscale(100%) opacity(0.2); 15 filter: grayscale(100%) opacity(0.2);
16 } 16 }
17 .tab-item__icon {
18 width: 34px;
19 }
20} 17}
21 18
22.tabs { 19.tabs {
@@ -47,9 +44,9 @@
47 $theme-brand-primary, 44 $theme-brand-primary,
48 $lightness: min(lightness($theme-brand-primary) * 1.35, 100) 45 $lightness: min(lightness($theme-brand-primary) * 1.35, 100)
49 ); 46 );
47 border-color: $theme-brand-primary;
50 border-left-width: 4px; 48 border-left-width: 4px;
51 border-left-style: solid; 49 border-left-style: solid;
52 color: $theme-brand-primary;
53 50
54 .tab-item__icon { 51 .tab-item__icon {
55 margin-left: -4px; 52 margin-left: -4px;
diff --git a/src/styles/vertical.scss b/src/styles/vertical.scss
index 083f98c3d..7f38008b9 100644
--- a/src/styles/vertical.scss
+++ b/src/styles/vertical.scss
@@ -23,7 +23,7 @@ $tabitem-bias: 30px;
23 } 23 }
24 24
25 div:first-of-type { 25 div:first-of-type {
26 overflow-x: scroll; 26 overflow-x: scroll!important;
27 width: 100%; 27 width: 100%;
28 } 28 }
29 29
@@ -31,7 +31,7 @@ $tabitem-bias: 30px;
31 flex-direction: row; 31 flex-direction: row;
32 32
33 .tab-item { 33 .tab-item {
34 34
35 &.is-active { 35 &.is-active {
36 border-left-width: 0px !important; 36 border-left-width: 0px !important;
37 border-top-width: 4px; 37 border-top-width: 4px;
diff --git a/src/styles/welcome.scss b/src/styles/welcome.scss
index 7202fe148..59f3a6ca3 100644
--- a/src/styles/welcome.scss
+++ b/src/styles/welcome.scss
@@ -44,7 +44,7 @@
44 text-align: center; 44 text-align: center;
45 height: auto; 45 height: auto;
46 46
47 .button:first-of-type { 47 .button {
48 margin-right: 25px; 48 margin-right: 25px;
49 } 49 }
50 } 50 }
@@ -93,6 +93,7 @@
93 93
94 img { 94 img {
95 width: 35px; 95 width: 35px;
96 height: 35px;
96 } 97 }
97 } 98 }
98} 99}
diff --git a/src/themes/dark/index.ts b/src/themes/dark/index.ts
index aa132c743..6bb890192 100644
--- a/src/themes/dark/index.ts
+++ b/src/themes/dark/index.ts
@@ -6,12 +6,14 @@ import * as legacyStyles from '../legacy';
6 6
7export default (brandPrimary: string) => { 7export default (brandPrimary: string) => {
8 const defaultStyles = makeDefaultThemeConfig(brandPrimary); 8 const defaultStyles = makeDefaultThemeConfig(brandPrimary);
9 /*
9 let brandPrimaryColor = color(legacyStyles.themeBrandPrimary); 10 let brandPrimaryColor = color(legacyStyles.themeBrandPrimary);
10 try { 11 try {
11 brandPrimaryColor = color(defaultStyles.brandPrimary); 12 brandPrimaryColor = color(defaultStyles.brandPrimary);
12 } catch { 13 } catch {
13 // Ignore invalid color and fall back to default. 14 // Ignore invalid color and fall back to default.
14 } 15 }
16 */
15 17
16 const colorBackground = legacyStyles.darkThemeGrayDarkest; 18 const colorBackground = legacyStyles.darkThemeGrayDarkest;
17 const colorText = legacyStyles.darkThemeTextColor; 19 const colorText = legacyStyles.darkThemeTextColor;
@@ -139,15 +141,15 @@ export default (brandPrimary: string) => {
139 }, 141 },
140 listItem: { 142 listItem: {
141 border: color(drawerBg).lighten(0.2).hex(), 143 border: color(drawerBg).lighten(0.2).hex(),
142 hoverBackground: color(drawerBg).lighten(0.2).hex(), 144 hoverBackground: legacyStyles.darkThemeGrayDark,
143 activeBackground: defaultStyles.brandPrimary, 145 activeBackground: legacyStyles.darkThemeGrayDarker,
144 name: { 146 name: {
145 color: colorText, 147 color: colorText,
146 activeColor: 'white', 148 activeColor: 'white',
147 }, 149 },
148 services: { 150 services: {
149 color: color(colorText).darken(0.5).hex(), 151 color: color(colorText).darken(0.5).hex(),
150 active: brandPrimaryColor.lighten(0.5).hex(), 152 active: color(colorText).darken(0.5).hex(),
151 }, 153 },
152 }, 154 },
153 }, 155 },
diff --git a/src/themes/default/index.ts b/src/themes/default/index.ts
index 80bcba766..e23b8b328 100644
--- a/src/themes/default/index.ts
+++ b/src/themes/default/index.ts
@@ -210,7 +210,7 @@ export default (brandPrimary: string) => {
210 hoverColor: legacyStyles.themeGrayLight, 210 hoverColor: legacyStyles.themeGrayLight,
211 }, 211 },
212 listItem: { 212 listItem: {
213 hoverBackground: color(drawerBg).darken(0.01).hex(), 213 hoverBackground: color(drawerBg).darken(0.05).hex(),
214 activeBackground: legacyStyles.themeGrayLightest, 214 activeBackground: legacyStyles.themeGrayLightest,
215 border: color(drawerBg).darken(0.05).hex(), 215 border: color(drawerBg).darken(0.05).hex(),
216 name: { 216 name: {
diff --git a/src/themes/legacy/index.ts b/src/themes/legacy/index.ts
index c6105a4e2..ca3216e7f 100644
--- a/src/themes/legacy/index.ts
+++ b/src/themes/legacy/index.ts
@@ -1,7 +1,6 @@
1import { DEFAULT_ACCENT_COLOR } from '../../config';
2
3/* legacy config, injected into sass */ 1/* legacy config, injected into sass */
4export const themeBrandPrimary = DEFAULT_ACCENT_COLOR; 2export { DEFAULT_ACCENT_COLOR as themeBrandPrimary } from '../../config';
3
5export const themeBrandSuccess = '#5cb85c'; 4export const themeBrandSuccess = '#5cb85c';
6export const themeBrandInfo = '#5bc0de'; 5export const themeBrandInfo = '#5bc0de';
7export const themeBrandWarning = '#FF9F00'; 6export const themeBrandWarning = '#FF9F00';
diff --git a/src/webview/lib/RecipeWebview.js b/src/webview/lib/RecipeWebview.ts
index ebe88ed85..09dc462ed 100644
--- a/src/webview/lib/RecipeWebview.js
+++ b/src/webview/lib/RecipeWebview.ts
@@ -5,6 +5,14 @@ import { pathExistsSync, readFileSync, existsSync } from 'fs-extra';
5const debug = require('debug')('Ferdi:Plugin:RecipeWebview'); 5const debug = require('debug')('Ferdi:Plugin:RecipeWebview');
6 6
7class RecipeWebview { 7class RecipeWebview {
8 badgeHandler: any;
9
10 dialogTitleHandler: any;
11
12 notificationsHandler: any;
13
14 sessionHandler: any;
15
8 constructor( 16 constructor(
9 badgeHandler, 17 badgeHandler,
10 dialogTitleHandler, 18 dialogTitleHandler,
@@ -97,9 +105,12 @@ class RecipeWebview {
97 const styles = document.createElement('style'); 105 const styles = document.createElement('style');
98 styles.innerHTML = readFileSync(file, 'utf8'); 106 styles.innerHTML = readFileSync(file, 'utf8');
99 107
100 document.querySelector('head').append(styles); 108 const head = document.querySelector('head');
101 109
102 debug('Append styles', styles); 110 if (head) {
111 head.append(styles);
112 debug('Append styles', styles);
113 }
103 } 114 }
104 }); 115 });
105 } 116 }
diff --git a/src/webview/lib/Userscript.js b/src/webview/lib/Userscript.ts
index f7bb99206..c50941dc7 100644
--- a/src/webview/lib/Userscript.js
+++ b/src/webview/lib/Userscript.ts
@@ -1,8 +1,12 @@
1import { ipcRenderer } from 'electron'; 1type Recipe = {
2 setBadge: (direct: number, indirect: number) => void;
3 setDialogTitle: (title: string) => void;
4 injectCSS: (css: string | string[]) => void;
5};
2 6
3export default class Userscript { 7export default class Userscript {
4 // Current ./lib/RecipeWebview instance 8 // Current ./lib/RecipeWebview instance
5 recipe = null; 9 recipe: Recipe | null = null;
6 10
7 // Current ./recipe.js instance 11 // Current ./recipe.js instance
8 controller = null; 12 controller = null;
@@ -13,8 +17,6 @@ export default class Userscript {
13 // Ferdi and service settings 17 // Ferdi and service settings
14 settings = {}; 18 settings = {};
15 19
16 settingsUpdateHandler = null;
17
18 constructor(recipe, controller, config) { 20 constructor(recipe, controller, config) {
19 this.recipe = recipe; 21 this.recipe = recipe;
20 this.controller = controller; 22 this.controller = controller;
@@ -29,31 +31,18 @@ export default class Userscript {
29 * @param {*} settings 31 * @param {*} settings
30 */ 32 */
31 // eslint-disable-next-line camelcase 33 // eslint-disable-next-line camelcase
32 internal_setSettings(settings) { 34 internal_setSettings(settings: any) {
33 // This is needed to get a clean JS object from the settings itself to provide better accessibility 35 // This is needed to get a clean JS object from the settings itself to provide better accessibility
34 // Otherwise this will be a mobX instance 36 // Otherwise this will be a mobX instance
35 this.settings = JSON.parse(JSON.stringify(settings)); 37 this.settings = JSON.parse(JSON.stringify(settings));
36
37 if (typeof this.settingsUpdateHandler === 'function') {
38 this.settingsUpdateHandler();
39 }
40 }
41
42 /**
43 * Register a settings handler to be executed when the settings change
44 *
45 * @param {function} handler
46 */
47 onSettingsUpdate(handler) {
48 this.settingsUpdateHandler = handler;
49 } 38 }
50 39
51 /** 40 /**
52 * Set badge count for the current service 41 * Set badge count for the current service
53 * @param {*} direct Direct messages 42 * @param {number} direct Direct messages
54 * @param {*} indirect Indirect messages 43 * @param {number} indirect Indirect messages
55 */ 44 */
56 setBadge(direct = 0, indirect = 0) { 45 setBadge(direct: number = 0, indirect: number = 0) {
57 if (this.recipe && this.recipe.setBadge) { 46 if (this.recipe && this.recipe.setBadge) {
58 this.recipe.setBadge(direct, indirect); 47 this.recipe.setBadge(direct, indirect);
59 } 48 }
@@ -63,7 +52,7 @@ export default class Userscript {
63 * Set active dialog title to the app title 52 * Set active dialog title to the app title
64 * @param {*} title Dialog title 53 * @param {*} title Dialog title
65 */ 54 */
66 setDialogTitle(title) { 55 setDialogTitle(title: string) {
67 if (this.recipe && this.recipe.setDialogTitle) { 56 if (this.recipe && this.recipe.setDialogTitle) {
68 this.recipe.setDialogTitle(title); 57 this.recipe.setDialogTitle(title);
69 } 58 }
@@ -74,8 +63,9 @@ export default class Userscript {
74 * 63 *
75 * @param {...string} files 64 * @param {...string} files
76 */ 65 */
77 injectCSSFiles(...files) { 66 injectCSSFiles(...files: string[]) {
78 if (this.recipe && this.recipe.injectCSS) { 67 if (this.recipe && this.recipe.injectCSS) {
68 // @ts-expect-error A spread argument must either have a tuple type or be passed to a rest parameter.
79 this.recipe.injectCSS(...files); 69 this.recipe.injectCSS(...files);
80 } 70 }
81 } 71 }
@@ -85,54 +75,33 @@ export default class Userscript {
85 * 75 *
86 * @param {string} css 76 * @param {string} css
87 */ 77 */
88 injectCSS(css) { 78 injectCSS(css: string) {
89 const style = document.createElement('style'); 79 const style = document.createElement('style');
90 style.textContent = css; 80 style.textContent = css;
91 document.head.append(style); 81 document.head.append(style);
92 } 82 }
93 83
94 /** 84 /**
95 * Open "Find in Page" popup
96 */
97 openFindInPage() {
98 this.controller.openFindInPage();
99 }
100
101 /**
102 * Set or update value in storage 85 * Set or update value in storage
103 * 86 *
104 * @param {*} key 87 * @param {string} key
105 * @param {*} value 88 * @param {any} value
106 */ 89 */
107 set(key, value) { 90 set(key: string, value: string) {
108 window.localStorage.setItem(`ferdi-user-${key}`, JSON.stringify(value)); 91 window.localStorage.setItem(`ferdi-user-${key}`, JSON.stringify(value));
109 } 92 }
110 93
111 /** 94 /**
112 * Get value from storage 95 * Get value from storage
113 * 96 *
114 * @param {*} key 97 * @param {string} key
115 * @return Value of the key 98 * @return Value of the key
116 */ 99 */
117 get(key) { 100 get(key: string) {
118 return JSON.parse(window.localStorage.getItem(`ferdi-user-${key}`)); 101 const ferdiUserKey = window.localStorage.getItem(`ferdi-user-${key}`);
119 }
120 102
121 /** 103 if (ferdiUserKey) {
122 * Open a URL in an external browser 104 return JSON.parse(ferdiUserKey);
123 * 105 }
124 * @param {*} url
125 */
126 externalOpen(url) {
127 ipcRenderer.sendToHost('new-window', url);
128 }
129
130 /**
131 * Open a URL in the current service
132 *
133 * @param {*} url
134 */
135 internalOpen(url) {
136 window.location.href = url;
137 } 106 }
138} 107}
diff --git a/src/webview/recipe.js b/src/webview/recipe.js
index 0b44d1d01..7c069562f 100644
--- a/src/webview/recipe.js
+++ b/src/webview/recipe.js
@@ -16,6 +16,7 @@ import {
16 disable as disableDarkMode, 16 disable as disableDarkMode,
17} from 'darkreader'; 17} from 'darkreader';
18 18
19import { existsSync } from 'fs';
19import ignoreList from './darkmode/ignore'; 20import ignoreList from './darkmode/ignore';
20import customDarkModeCss from './darkmode/custom'; 21import customDarkModeCss from './darkmode/custom';
21 22
@@ -209,9 +210,11 @@ class RecipeController {
209 notificationsHandler, 210 notificationsHandler,
210 sessionHandler, 211 sessionHandler,
211 ); 212 );
212 // eslint-disable-next-line import/no-dynamic-require 213 if (existsSync(modulePath)) {
213 require(modulePath)(this.recipe, { ...config, recipe }); 214 // eslint-disable-next-line import/no-dynamic-require
214 debug('Initialize Recipe', config, recipe); 215 require(modulePath)(this.recipe, { ...config, recipe });
216 debug('Initialize Recipe', config, recipe);
217 }
215 218
216 this.settings.service = Object.assign(config, { recipe }); 219 this.settings.service = Object.assign(config, { recipe });
217 220
diff --git a/tweets/README.md b/tweets/README.md
new file mode 100644
index 000000000..a66deef76
--- /dev/null
+++ b/tweets/README.md
@@ -0,0 +1,37 @@
1# The tweets/ folder
2
3To create a new tweet create a new `*.tweet` file in this `tweets/` folder.
4
5<kbd>[Create new tweet](../../../new/master/?filename=tweets/<your-path>.tweet)</kbd>
6
7## Example
8
9Create a new file `tweets/hello-world.tweet` with the content
10
11> Hello, world!
12
13You can use subfolders, e.g. `tweets/2019-02/hello-world.tweet`, as long as the file is in the `tweets/` folder and has the `.tweet` file extension
14
15## Create a tweet with a twitter poll
16
17**Note**: The configured twitter account needs to be authorized to use Twitters Ads API in order to send tweets including a poll.
18
19A tweet including a poll must end with 2-4 options in the following format
20
21> Here is some text
22>
23> ( ) option A
24> ( ) option B
25> ( ) option C
26> ( ) option D
27
28## Notes
29
30- Only newly created files are handled, deletions, updates or renames are ignored.
31- `*.tweet` files will not be created for tweets you send out directly from twitter.com
32- If you need to rename an existing tweet file, please do so locally using [`git mv old_filename new_filename`](https://help.github.com/en/articles/renaming-a-file-using-the-command-line), otherwise it may occur as deleted and added which would trigger a new tweet.
33- your message must fit into a single tweet
34
35## Questions?
36
37If you have any further questions or suggestions, please create an issue at https://github.com/gr2m/twitter-together/issues/new