From 2e7dfe564ee226b2de3ec1e97ee90bf724341275 Mon Sep 17 00:00:00 2001 From: Arnei Date: Tue, 21 Feb 2023 12:44:27 +0100 Subject: [PATCH 01/47] Add type checking to i18n Adds type checking to our translation library. This will help us avoid using translation strings that do not exist. I've use "TFuncKey" as the type for cases where we pass a variable string instead of a literal. This could arguably be improved upon in the future. Also some related cleanup. --- src/i18n/i18next.d.ts | 13 +++++++++++++ src/index.tsx | 1 + src/main/CuttingActions.tsx | 1 - src/main/Discard.tsx | 1 - src/main/Error.tsx | 1 - src/main/FinishMenu.tsx | 1 - src/main/KeyboardControls.tsx | 11 ++++++----- src/main/Landing.tsx | 1 - src/main/MainMenu.tsx | 1 - src/main/Metadata.tsx | 15 +++++++-------- src/main/Save.tsx | 5 ++--- src/main/SubtitleSelect.tsx | 2 +- src/main/SubtitleTimeline.tsx | 3 ++- src/main/TheEnd.tsx | 1 - src/main/Thumbnail.tsx | 2 +- src/main/Timeline.tsx | 1 - src/main/Video.tsx | 1 - src/main/WorkflowConfiguration.tsx | 5 ++--- src/main/WorkflowSelection.tsx | 3 +-- 19 files changed, 36 insertions(+), 33 deletions(-) create mode 100644 src/i18n/i18next.d.ts diff --git a/src/i18n/i18next.d.ts b/src/i18n/i18next.d.ts new file mode 100644 index 000000000..bd7c548e0 --- /dev/null +++ b/src/i18n/i18next.d.ts @@ -0,0 +1,13 @@ +// import the original type declarations +import 'i18next'; + +// import all namespaces (for the default language, only) +import translation from '../i18n/locales/en-US.json'; + +declare module 'i18next' { + interface CustomTypeOptions { + resources: { + translation: typeof translation; + }; + } +} \ No newline at end of file diff --git a/src/index.tsx b/src/index.tsx index f5a9a060b..e8fc5e6bd 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -12,6 +12,7 @@ import { MuiPickersUtilsProvider } from '@material-ui/pickers'; import DateFnsUtils from '@date-io/date-fns'; import { GlobalHotKeys } from 'react-hotkeys'; +import './i18n/config'; // Load config here // Load the rest of the application and try to fetch the settings file from the diff --git a/src/main/CuttingActions.tsx b/src/main/CuttingActions.tsx index c314392a6..d82714d9a 100644 --- a/src/main/CuttingActions.tsx +++ b/src/main/CuttingActions.tsx @@ -22,7 +22,6 @@ import { GlobalHotKeys, KeySequence, KeyMapOptions } from "react-hotkeys"; import { cuttingKeyMap } from "../globalKeys"; import { ActionCreatorWithoutPayload } from "@reduxjs/toolkit"; -import './../i18n/config'; import { useTranslation } from 'react-i18next'; import { selectTheme, Theme } from "../redux/themeSlice"; import { ThemedTooltip } from "./Tooltip"; diff --git a/src/main/Discard.tsx b/src/main/Discard.tsx index 95e6716a3..d33ca4d58 100644 --- a/src/main/Discard.tsx +++ b/src/main/Discard.tsx @@ -14,7 +14,6 @@ import { setEnd } from '../redux/endSlice' import { PageButton } from './Finish' -import './../i18n/config'; import { useTranslation } from 'react-i18next'; import { selectTheme } from "../redux/themeSlice"; diff --git a/src/main/Error.tsx b/src/main/Error.tsx index 427cb5b51..7b4fa988d 100644 --- a/src/main/Error.tsx +++ b/src/main/Error.tsx @@ -9,7 +9,6 @@ import { useSelector } from 'react-redux'; import { selectErrorDetails, selectErrorIcon, selectErrorMessage, selectErrorTitle } from '../redux/errorSlice' import { flexGapReplacementStyle } from "../cssStyles"; -import './../i18n/config'; import { useTranslation } from 'react-i18next'; /** diff --git a/src/main/FinishMenu.tsx b/src/main/FinishMenu.tsx index 336aef297..9b5203cd5 100644 --- a/src/main/FinishMenu.tsx +++ b/src/main/FinishMenu.tsx @@ -11,7 +11,6 @@ import { import { useDispatch, useSelector } from 'react-redux'; import { setState, setPageNumber, finish } from '../redux/finishSlice' -import './../i18n/config'; import { useTranslation } from 'react-i18next'; import { selectTheme } from "../redux/themeSlice"; diff --git a/src/main/KeyboardControls.tsx b/src/main/KeyboardControls.tsx index 53f20b7c5..181c39fb3 100644 --- a/src/main/KeyboardControls.tsx +++ b/src/main/KeyboardControls.tsx @@ -1,4 +1,5 @@ import { css } from "@emotion/react"; +import { TFuncKey } from "i18next"; import React from "react"; import { KeyMapDisplayOptions } from 'react-hotkeys'; @@ -7,10 +8,10 @@ import { useSelector } from "react-redux"; import { flexGapReplacementStyle } from "../cssStyles"; import { getAllHotkeys } from "../globalKeys"; import { selectTheme } from "../redux/themeSlice"; -import i18next from "./../i18n/config"; -const Group: React.FC<{name: string, entries: KeyMapDisplayOptions[]}> = ({name, entries}) => { +const Group: React.FC<{name: TFuncKey, entries: KeyMapDisplayOptions[]}> = ({name, entries}) => { + const { t } = useTranslation(); const theme = useSelector(selectTheme); const groupStyle = css({ @@ -26,7 +27,7 @@ const Group: React.FC<{name: string, entries: KeyMapDisplayOptions[]}> = ({name, return (
-

{i18next.t(name)}

+

{t(name)}

{entries.map((entry: KeyMapDisplayOptions, index: number) => ( ))} @@ -117,7 +118,7 @@ const KeyboardControls: React.FC<{}> = () => { const render = () => { if (keyMap && Object.keys(keyMap).length > 0) { - var obj: Record> = {} + var obj: Record> = {} obj[t("keyboardControls.defaultGroupName")] = [] // For keys without a group // Sort by group @@ -136,7 +137,7 @@ const KeyboardControls: React.FC<{}> = () => { const groups: JSX.Element[] = []; for (const key in obj) { if (obj[key].length > 0) { - groups.push(); + groups.push(); } } diff --git a/src/main/Landing.tsx b/src/main/Landing.tsx index 4993cada5..3584371b5 100644 --- a/src/main/Landing.tsx +++ b/src/main/Landing.tsx @@ -2,7 +2,6 @@ import React from "react"; import { css } from '@emotion/react' -import './../i18n/config'; import { useTranslation } from 'react-i18next'; /** diff --git a/src/main/MainMenu.tsx b/src/main/MainMenu.tsx index 9d7832f1f..22df87bd8 100644 --- a/src/main/MainMenu.tsx +++ b/src/main/MainMenu.tsx @@ -15,7 +15,6 @@ import { settings } from '../config' import { basicButtonStyle, flexGapReplacementStyle } from '../cssStyles' import { setIsPlaying } from "../redux/videoSlice"; -import './../i18n/config'; import { useTranslation } from 'react-i18next'; import { resetPostRequestState as metadataResetPostRequestState } from "../redux/metadataSlice"; import { resetPostRequestState } from "../redux/workflowPostSlice"; diff --git a/src/main/Metadata.tsx b/src/main/Metadata.tsx index c0b6e1dca..ea6ae6a02 100644 --- a/src/main/Metadata.tsx +++ b/src/main/Metadata.tsx @@ -20,8 +20,6 @@ import { } from 'mui-rff'; import DateFnsUtils from "@date-io/date-fns"; -import './../i18n/config'; -import i18next from "./../i18n/config"; import { useTranslation } from 'react-i18next'; import { DateTime as LuxonDateTime} from "luxon"; @@ -31,6 +29,7 @@ import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; import { AppDispatch } from "../redux/store"; import { selectTheme } from "../redux/themeSlice"; import { ThemeProvider } from "@mui/material/styles"; +import { TFuncKey } from "i18next"; /** * Creates a Metadata form @@ -475,10 +474,10 @@ const Metadata: React.FC<{}> = () => { // Parse Label let descLabel = null if (i18n.exists(`metadata.${field.id}`)) { - descLabel = t(`metadata.${field.id}.${key.replaceAll(".", "-")}`) + descLabel = t(`metadata.${field.id}.${key.replaceAll(".", "-")}` as TFuncKey) if (field.id === "license") { - descLabel = t(`metadata.${field.id}.${JSON.parse(key).label.replaceAll(".", "-")}`) + descLabel = t(`metadata.${field.id}.${JSON.parse(key).label.replaceAll(".", "-")}` as TFuncKey) } } @@ -552,8 +551,8 @@ const Metadata: React.FC<{}> = () => { onBlur: (e: any) => {blurWithSubmit(e, input)}, showError: showErrorOnBlur }} - leftArrowButtonText={i18next.t('metadata.calendar-prev')} - rightArrowButtonText={i18next.t('metadata.calendar-next')} + leftArrowButtonText={t('metadata.calendar-prev')} + rightArrowButtonText={t('metadata.calendar-next')} /> @@ -629,7 +628,7 @@ const Metadata: React.FC<{}> = () => {
{generateComponentWithModifiedInput(field, input)} @@ -649,7 +648,7 @@ const Metadata: React.FC<{}> = () => {

{i18n.exists(`metadata.${catalog.title.replaceAll(".", "-")}`) ? - t(`metadata.${catalog.title.replaceAll(".", "-")}`) : catalog.title + t(`metadata.${catalog.title.replaceAll(".", "-")}` as TFuncKey) : catalog.title }

diff --git a/src/main/Save.tsx b/src/main/Save.tsx index 779575b51..dd23c8210 100644 --- a/src/main/Save.tsx +++ b/src/main/Save.tsx @@ -16,7 +16,6 @@ import { postVideoInformation, selectStatus, selectError } from '../redux/workfl import { PageButton } from './Finish' -import './../i18n/config'; import { useTranslation } from 'react-i18next'; import { AppDispatch } from "../redux/store"; import { postMetadata, selectPostError, selectPostStatus, setHasChanges as metadataSetHasChanges, @@ -85,11 +84,11 @@ const Save : React.FC<{}> = () => { {render()}
{t("various.error-text")}
- {postError ? t("various.error-details-text", {errorMessage: postError}) : t("various.error-noDetails-text")}
+ {postError ? t("various.error-details-text", {errorMessage: postError}) : t("various.error-text")}
{t("various.error-text")}
- {postMetadataError ? t("various.error-details-text", {errorMessage: postMetadataError}) : t("various.error-noDetails-text")}
+ {postMetadataError ? t("various.error-details-text", {errorMessage: postMetadataError}) : t("various.error-text")}
); diff --git a/src/main/SubtitleSelect.tsx b/src/main/SubtitleSelect.tsx index c11158c78..cea89256a 100644 --- a/src/main/SubtitleSelect.tsx +++ b/src/main/SubtitleSelect.tsx @@ -199,7 +199,7 @@ const SubtitleAddButton: React.FC<{languages: {subFlavor: string, title: string}
setIsPlusDisplay(false) } onKeyDown={(event: React.KeyboardEvent) => { if (event.key === " " || event.key === "Enter") { setIsPlusDisplay(false) diff --git a/src/main/SubtitleTimeline.tsx b/src/main/SubtitleTimeline.tsx index 07bbe2674..c0b82c1fc 100644 --- a/src/main/SubtitleTimeline.tsx +++ b/src/main/SubtitleTimeline.tsx @@ -24,7 +24,7 @@ import { scrubberKeyMap } from "../globalKeys"; import ScrollContainer, { ScrollEvent } from "react-indiana-drag-scroll"; import { selectTheme } from "../redux/themeSlice"; import { ThemedTooltip } from "./Tooltip"; -import { t } from "i18next"; +import { useTranslation } from "react-i18next"; /** * Copy-paste of the timeline in Video.tsx, so that we can make some small adjustments, @@ -32,6 +32,7 @@ import { t } from "i18next"; */ const SubtitleTimeline: React.FC<{}> = () => { + const { t } = useTranslation(); const theme = useSelector(selectTheme) // Init redux variables diff --git a/src/main/TheEnd.tsx b/src/main/TheEnd.tsx index 3bec09050..de1da1344 100644 --- a/src/main/TheEnd.tsx +++ b/src/main/TheEnd.tsx @@ -9,7 +9,6 @@ import { useSelector } from 'react-redux'; import { selectEndState } from '../redux/endSlice' import { basicButtonStyle, flexGapReplacementStyle, navigationButtonStyle } from "../cssStyles"; -import './../i18n/config'; import { useTranslation } from 'react-i18next'; import { selectTheme } from "../redux/themeSlice"; import { ThemedTooltip } from "./Tooltip"; diff --git a/src/main/Thumbnail.tsx b/src/main/Thumbnail.tsx index e3cb93d6e..d5f9f9d69 100644 --- a/src/main/Thumbnail.tsx +++ b/src/main/Thumbnail.tsx @@ -2,7 +2,6 @@ import { css } from "@emotion/react"; import { IconProp } from "@fortawesome/fontawesome-svg-core"; import { faCamera, faCopy, faInfoCircle, faTimesCircle, faUpload } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { t } from "i18next"; import React from "react"; import { useTranslation } from "react-i18next"; import { useDispatch, useSelector } from "react-redux"; @@ -472,6 +471,7 @@ const ThumbnailTableSingleRow: React.FC<{ uploadCallback: any, discard: any, }> = ({track, index, inputRefs, generate, upload, uploadCallback, discard}) => { + const { t } = useTranslation(); return (
diff --git a/src/main/Timeline.tsx b/src/main/Timeline.tsx index 72af50132..c1d8ae21d 100644 --- a/src/main/Timeline.tsx +++ b/src/main/Timeline.tsx @@ -20,7 +20,6 @@ import { convertMsToReadableString } from '../util/utilityFunctions'; import { GlobalHotKeys } from 'react-hotkeys'; import { scrubberKeyMap } from '../globalKeys'; -import './../i18n/config'; import { useTranslation } from 'react-i18next'; import { ActionCreatorWithPayload } from '@reduxjs/toolkit'; import { RootState } from '../redux/store'; diff --git a/src/main/Video.tsx b/src/main/Video.tsx index 92a8bf5b6..6e1c32352 100644 --- a/src/main/Video.tsx +++ b/src/main/Video.tsx @@ -22,7 +22,6 @@ import { basicButtonStyle, flexGapReplacementStyle, titleStyle, titleStyleBold } import { GlobalHotKeys, KeyMapOptions } from 'react-hotkeys'; import { videoPlayerKeyMap } from "../globalKeys"; import { SyntheticEvent } from "react"; -import './../i18n/config'; import { useTranslation } from 'react-i18next'; import { selectTitleFromEpisodeDc } from "../redux/metadataSlice"; import { setError } from "../redux/errorSlice"; diff --git a/src/main/WorkflowConfiguration.tsx b/src/main/WorkflowConfiguration.tsx index 04f8f42ff..588b106eb 100644 --- a/src/main/WorkflowConfiguration.tsx +++ b/src/main/WorkflowConfiguration.tsx @@ -14,7 +14,6 @@ import { postVideoInformationWithWorkflow, selectStatus, selectError } from '../ import { PageButton } from './Finish' import { setEnd } from "../redux/endSlice"; -import './../i18n/config'; import { useTranslation } from 'react-i18next'; import { postMetadata, selectPostError, selectPostStatus, setHasChanges as metadataSetHasChanges } from "../redux/metadataSlice"; import { AppDispatch } from "../redux/store"; @@ -56,11 +55,11 @@ const WorkflowConfiguration : React.FC<{}> = () => {
{t("various.error-text")}
- {postAndProcessError ? t("various.error-details-text", {errorMessage: postAndProcessError}) : t("various.error-noDetails-text")}
+ {postAndProcessError ? t("various.error-details-text", {errorMessage: postAndProcessError}) : t("various.error-text")}
{t("various.error-text")}
- {postMetadataError ? t("various.error-details-text", {errorMessage: postMetadataError}) : t("various.error-noDetails-text")}
+ {postMetadataError ? t("various.error-details-text", {errorMessage: postMetadataError}) : t("various.error-text")}
); diff --git a/src/main/WorkflowSelection.tsx b/src/main/WorkflowSelection.tsx index e73c815ff..3c85eb2df 100644 --- a/src/main/WorkflowSelection.tsx +++ b/src/main/WorkflowSelection.tsx @@ -16,7 +16,6 @@ import { httpRequestState, Workflow } from "../types"; import { SaveButton } from "./Save"; import { EmotionJSX } from "@emotion/react/types/jsx-namespace"; -import './../i18n/config'; import { useTranslation } from 'react-i18next'; import { Trans } from "react-i18next"; import { FormControlLabel, Radio, RadioGroup, withStyles } from "@material-ui/core"; @@ -97,7 +96,7 @@ const WorkflowSelection : React.FC<{}> = () => {
{t("various.error-text")}
- {errorMessage ? t("various.error-details-text", {errorMessage: postAndProcessError}) : t("various.error-noDetails-text")}
+ {errorMessage ? t("various.error-details-text", {errorMessage: postAndProcessError}) : t("various.error-text")}
); From 610ec1c5e14652dc73eca704712657567dbfc475 Mon Sep 17 00:00:00 2001 From: zismir Date: Wed, 10 May 2023 12:29:47 +0100 Subject: [PATCH 02/47] Updated tests that were failing --- src/redux/__tests__/videoSlice.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/redux/__tests__/videoSlice.test.ts b/src/redux/__tests__/videoSlice.test.ts index 1bee55d25..bee3411c1 100644 --- a/src/redux/__tests__/videoSlice.test.ts +++ b/src/redux/__tests__/videoSlice.test.ts @@ -133,8 +133,8 @@ describe('Video reducer', () => { // Assert const rootState = { videoState: nextState }; - expect(selectCurrentlyAt(rootState)).toEqual(20); - expect(selectActiveSegmentIndex(rootState)).toEqual(1); + expect(selectCurrentlyAt(rootState)).toEqual(21); + expect(selectActiveSegmentIndex(rootState)).toEqual(2); expect(selectPreviewTriggered(rootState)).toEqual(true); }) From 683dbe75704e90315b377c65eddd720cc216b113 Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Mon, 22 May 2023 05:06:35 +0000 Subject: [PATCH 03/47] Automatically update translation keys --- src/i18n/locales/el-GR.json | 269 ++++++++++++++++++++++++++++++++++++ 1 file changed, 269 insertions(+) create mode 100644 src/i18n/locales/el-GR.json diff --git a/src/i18n/locales/el-GR.json b/src/i18n/locales/el-GR.json new file mode 100644 index 000000000..2122e48a8 --- /dev/null +++ b/src/i18n/locales/el-GR.json @@ -0,0 +1,269 @@ +{ + "mainMenu": { + "cutting-button": "Περικοπή", + "finish-button": "Ολοκλήρωση", + "select-tracks-button": "Κομμάτια", + "subtitles-button": "Υπότιτλοι", + "thumbnail-button": "Μικρογραφία", + "metadata-button": "Μεταδεδομένα", + "keyboard-controls-button": "Έλεγχοι Πληκτρολογίου", + "tooltip-aria": "Κύρια Πλοήγηση" + }, + "cuttingActions": { + "cut-button": "Αποκοπή", + "cut-tooltip": "Διαχωρισμός του τμήματος στην τρέχουσα θέση του χρονοδιαγράμματος. Πλήκτρο συντόμευσης: {{hotkeyName}}", + "cut-tooltip-aria": "Αποκοπή. Διαχωρίστε το τμήμα στην τρέχουσα θέση του χρονοδιαγράμματος. Πλήκτρο συντόμευσης: {{hotkeyName}}.", + "delete-button": "Διαγραφή", + "delete-restore-tooltip": "Σήμανση ή κατάργηση του τμήματος στην τρέχουσα θέση ως διαγραφή. Πλήκτρο συντόμευσης: {{hotkeyName}}", + "delete-restore-tooltip-aria": "Διαγραφή και Επαναφορά. Σήμανση ή κατάργηση επισήμανσης του τμήματος στην τρέχουσα θέση ως διαγραφή. Πλήκτρο συντόμευσης: {{hotKeyName}}.", + "restore-button": "Επαναφορά", + "mergeLeft-button": "Συγχώνευση Αριστερά", + "mergeLeft-tooltip": "Συνδυάστε το τρέχον ενεργό τμήμα με το τμήμα στα αριστερά. Πλήκτρο συντόμευσης: {{hotkeyName}}", + "mergeLeft-tooltip-aria": "Συγχώνευση αριστερά. Συνδυάστε το τρέχον ενεργό τμήμα με το τμήμα στα αριστερά. Hotkey: {{hotkeyName}}.", + "mergeRight-button": "Συγχώνευση Δεξιά", + "mergeRight-tooltip": "Συνδυάστε το τρέχον ενεργό τμήμα με το τμήμα προς τα δεξιά. Πλήκτρο συντόμευσης: {{hotkeyName}}", + "mergeRight-tooltip-aria": "Συγχώνευση Δεξιά. Συνδυάστε το τρέχον ενεργό τμήμα με το τμήμα στα δεξιά. Πλήκτρο συντόμευσης: {{hotkeyName}}." + }, + "video": { + "previewButton": "Λειτουργία προεπισκόπησης", + "previewButton-tooltip": "Παράλειψη διαγραμμένων τμημάτων κατά την αναπαραγωγή του βίντεο. Προς το παρόν {{status}}. Πλήκτρο συντόμευσης: {{hotkeyName}}", + "previewButton-aria": "Ενεργοποίηση ή απενεργοποίηση λειτουργίας προεπισκόπησης. Πλήκτρο συντόμευσης: {{hotkeyName}}.", + "playButton-tooltip": "Αναπαραγωγή βίντεο", + "pauseButton-tooltip": "Παύση του βίντεο", + "current-time-tooltip": "Τρέχουσα ώρα", + "time-duration-tooltip": "Διάρκεια βίντεο", + "duration-aria": "Διάρκεια", + "time-aria": "Τρέχουσα ώρα", + "comError-text": "Προέκυψε πρόβλημα κατά την επικοινωνία με το Opencast.", + "loadError-text": "Παρουσιάστηκε σφάλμα κατά τηn φόρτωση του βίντεο.", + "title-tooltip": "Τίτλος Βίντεο", + "presenter-tooltip": "Παρουσιαστές Βίντεο" + }, + "finishMenu": { + "save-button": "Αποθήκευση αλλαγών", + "start-button": "Έναρξη επεξεργασίας", + "discard-button": "Απόρριψη αλλαγών" + }, + "save": { + "headline-text": "Αποθήκευση τρέχοντος project", + "confirm-button": "Ναι, αποθήκευση αλλαγών", + "confirmButton-attempting-tooltip": "Προσπάθεια αποθήκευσης", + "confirmButton-success-tooltip": "Αποθηκεύτηκε επιτυχώς", + "confirmButton-failed-tooltip": "Η αποθήκευση απέτυχε", + "info-text": "Το βίντεο δεν θα επεξεργαστεί, αλλά όλες οι πληροφορίες κοπής θα αποθηκευτούν στο Opencast. Μπορείτε να συνεχίσετε την επεξεργασία σας αργότερα.", + "success-text": "Οι αλλαγές αποθηκεύτηκαν επιτυχώς! Τώρα μπορείτε να κλείσετε τον επεξεργαστή βίντεο ή να συνεχίσετε να εργάζεστε στο βίντεο.", + "success-tooltip-aria": "Αποθηκεύτηκε επιτυχώς", + "saveArea-tooltip": "Αποθήκευση Περιοχής" + }, + "discard": { + "headline-text": "Απόρριψη αλλαγών", + "confirm-button": "Ναι, απόρριψη αλλαγών", + "info-text": "Είστε βέβαιοι ότι θέλετε να απορρίψετε τις αλλαγές σας? Αυτό δεν μπορεί να αναιρεθεί!" + }, + "theEnd": { + "discarded-text": "Οι αλλαγές σας έχουν απορριφθεί. Τώρα μπορείτε να κλείσετε τον επεξεργαστή βίτεο.", + "startOver-button": "Επιτρέψτε μου να ξεκινήσω από την αρχή!", + "startOver-tooltip": "Ανανέωση της σελίδας για εκκίνηση από την αρχή", + "info-text": "Οι αλλαγές αποθηκεύτηκαν με επιτυχία στο Opencast. Η επεξεργασία των αλλαγών σας μπορεί να διαρκέσει αρκετό χρόνο, οπότε παρακαλώ να είστε υπομονετικοί. Τώρα μπορείτε να κλείσετε τον επεξεργαστή.\n" + }, + "workflowSelection": { + "saveAndProcess-text": "Αποθήκευση & επεξεργασία", + "selectWF-text": "Επιλέξτε ροή εργασίας", + "noWorkflows-text": "Δεν υπάρχουν ροές εργασίας για να επεξεργαστείτε τις αλλαγές σας. Παρακαλώ αποθηκεύστε τις αλλαγές σας και επικοινωνήστε με έναν διαχειριστή.\n", + "oneWorkflow-text": "Το βίντεο θα κοπεί και θα επεξεργαστεί με τη ροή εργασίας \"{{workflow}}\". <3/> Αυτό θα πάρει κάποιο χρόνο.\n", + "manyWorkflows-text": "Επιλέξτε ποια ροή εργασίας θα χρησιμοποιηθεί για επεξεργασία.", + "startProcessing-button": "Έναρξη επεξεργασίας", + "back-button": "Πήγαινε με πίσω", + "selectWF-button": "Κάντε κλικ για να επιλέξετε αυτήν τη ροή εργασίας", + "selectWF-button-aria": "Πατήστε για να επιλέξετε τη ροή εργασίας: {{stateName}}\n" + }, + "timeline": { + "generateWaveform-text": "Δημιουργία Κυματομορφής", + "segment-tooltip": "Τμήμα {{segment}}", + "scrubber-text-aria": "Δείκτης χρονοδιαγράμματος. {{currentTime}}. Ενεργό τμήμα: {{segment}}. {{segmentStatus}}. Έλεγχοι: {{moveLeft}} και {{moveRight}} για να μετακινήσετε το δείκτη χρονολογίου. {{increase}} και {{decrease}} για να αυξήσει/μειώσετε το δέλτα της κίνησης.\n", + "segments-text-aria": "Τμήμα {{index}}. {{segmentStatus}}. Έναρξη: {{start}}. Τέλος: {{end}}.\n" + }, + "workflowConfig": { + "headline-text": "Ρύθμισεις παραμέτρων ροής εργασίας", + "satisfied-text": "Ικανοποιημένος με τις ρυθμίσεις σας;", + "confirm-button": "Ναι, έναρξη επεξεργασίας" + }, + "metadata": { + "EVENTS-EVENTS-DETAILS-CATALOG-EPISODE": "Μεταδεδομένα επεισοδίου", + "submit-button": "Υποβολή", + "submit-button-tooltip": "Επιβεβαίωση αλλαγών", + "reset-button": "Επαναφορά", + "reset-button-tooltip": "Αναίρεση όλων των αλλαγών σας", + "submit-helpertext": "Κάντε αλλαγές όπως θέλετε και μετά πατήστε το κουμπί {{buttonName}}.\nΣημειώστε ότι θα πρέπει να ξεκινήσετε την επεξεργασία για να τεθούν σε ισχύ οι αλλαγές σας.", + "validation": { + "required": "Απαιτείται", + "duration-format": "Η μορφή πρέπει να είναι HH:MM:SS", + "datetime": "Μη έγκυρος" + }, + "labels": { + "title": "Τίτλος", + "subject": "Θέμα", + "description": "Περιγραφή", + "language": "Γλώσσα", + "rightsHolder": "Δικαιώματα", + "license": "Άδεια χρήσης", + "isPartOf": "Σειρά", + "creator": "Παρουσιαστής(ές)", + "contributor": "Χορηγός(οι)", + "startDate": "Ημερομηνία έναρξης", + "duration": "Διάρκεια", + "location": "Τοποθεσία", + "source": "Πηγή", + "created": "Δημιουργήθηκε", + "publisher": "Εκδότης", + "identifier": "UID" + }, + "language": { + "LANGUAGES-SLOVENIAN": "Σλοβενικά", + "LANGUAGES-PORTUGUESE": "Πορτογαλικά", + "LANGUAGES-ROMANSH": "Ρωμανικά", + "LANGUAGES-ARABIC": "Αραβικά", + "LANGUAGES-POLISH": "Πολωνικά", + "LANGUAGES-ITALIAN": "Ιταλικά", + "LANGUAGES-CHINESE": "Κινέζικα", + "LANGUAGES-FINNISH": "Φινλανδικά", + "LANGUAGES-DANISH": "Δανικά", + "LANGUAGES-UKRAINIAN": "Ουκρανικά", + "LANGUAGES-FRENCH": "Γαλλικά", + "LANGUAGES-SPANISH": "Ισπανικά", + "LANGUAGES-GERMAN_CH": "Ελβετικά Γερμανικά", + "LANGUAGES-NORWEGIAN": "Νορβηγικά", + "LANGUAGES-RUSSIAN": "Ρωσικά", + "LANGUAGES-JAPANESE": "Ιαπωνικά", + "LANGUAGES-DUTCH": "Ολλανδικά", + "LANGUAGES-TURKISH": "Τουρκικά", + "LANGUAGES-HINDI": "Χίντι", + "LANGUAGES-SWEDISH": "Σουηδικά", + "LANGUAGES-ENGLISH": "Αγγλικά", + "LANGUAGES-GERMAN": "Γερμανικά" + }, + "license": { + "EVENTS-LICENSE-CC0": "CC0", + "EVENTS-LICENSE-CCBYND": "CC BY-ND", + "EVENTS-LICENSE-CCBYNCND": "CC BY-NC-ND", + "EVENTS-LICENSE-CCBYNCSA": "CC BY-NC-SA", + "EVENTS-LICENSE-ALLRIGHTS": "Με επιφύλαξη παντός δικαιώματος", + "EVENTS-LICENSE-CCBYSA": "CC-BY-SA", + "EVENTS-LICENSE-CCBYNC": "CC-BY-NC", + "EVENTS-LICENSE-CCBY": "CC-BY" + }, + "calendar-prev": "Προηγούμενο", + "calendar-next": "Επόμενο" + }, + "thumbnail": { + "title": "Επεξεργαστής μικρογραφίας", + "noThumbnailAvailable": "Δεν υπάρχει διαθέσιμη μικρογραφία", + "previewImageAlt": "Μικρογραφία για το κομμάτι", + "buttonGenerate": "Δημιουργία", + "buttonGenerate-tooltip": "Δημιουργία νέας μικρογραφίας από την τρέχουσα θέση σήμανσης χρονολογίου", + "buttonGenerate-tooltip-aria": "Δημιουργία νέας μικρογραφίας από την τρέχουσα θέση σήμανσης χρονολογίου", + "buttonUpload": "Ανέβασμα", + "buttonUpload-tooltip": "Ανέβασμα Εικόνας", + "buttonUpload-tooltip-aria": "Ανέβασμα Εικόνας", + "buttonUseForOtherThumbnails": "Χρήση για όλα τα κομμάτια", + "buttonUseForOtherThumbnails-tooltip": "Χρήση της μικρογραφίας για όλα τα κομμάτια", + "buttonUseForOtherThumbnails-tooltip-aria": "Χρήση της μικρογραφίας για όλα τα κομμάτια", + "buttonDiscard": "Απόρριψη", + "buttonDiscard-tooltip": "Απόρριψη της μικρογραφίας για αυτό το κομμάτι", + "buttonDiscard-tooltip-aria": "Απόρριψη της μικρογραφίας για αυτό το κομμάτι", + "buttonGenerateAll": "Δημιουργία Όλων", + "buttonGenerateAll-tooltip": "Δημιουργία νέων εικόνων επισκόπησης για όλα τα κομμάτια από την τρέχουσα θέση του χρονοδιαγράμματος", + "buttonGenerateAll-tooltip-aria": "Δημιουργία νέων εικόνων επισκόπησης για όλα τα κομμάτια από την τρέχουσα θέση του χρονοδιαγράμματος", + "explanation": "Ανεβάστε ή δημιουργήστε μια μικρογραφία για κάθε κομμάτι.", + "primary": "Κύριο", + "secondary": "Δευτερεύων" + }, + "thumbnailSimple": { + "rowTitle": "Αλλαγή μικρογραφίας εδώ", + "from": "απο" + }, + "error": { + "generic-message": "Παρουσιάστηκε ένα κρίσιμο σφάλμα", + "details": "Λεπτομέρειες: ", + "workflowActive-errorTitle": "Προσωρινά μη διαθέσιμη", + "workflowActive-errorMessage": "Αυτή η εκδήλωση επεξεργάζεται. Παρακαλώ περιμένετε μέχρι να ολοκληρωθεί η διαδικασία." + }, + "landing": { + "main-heading": "Καλώς ήρθατε στον επεξεργαστή βίντεο", + "contact-admin": "Αν προσπαθούσατε να επεξεργαστείτε ένα συγκεκριμένο βίντεο, αλλά βλέπετε αυτή τη σελίδα, παρακαλούμε επικοινωνήστε με το διαχειριστή σας.", + "start-editing-1": "Για να ξεκινήσετε την επεξεργασία, καθορίστε την παράμετρο ", + "start-editing-2": " με το πακέτο πολυμέσων id του βίντεο που θέλετε να επεξεργαστείτε.", + "link-to-documentation": "Περισσότερες πληροφορίες για τη ρύθμιση παραμέτρων του επεξεργαστή βίντεο είναι διαθέσιμες στον οδηγό διαχείρισης στο " + }, + "various": { + "error-details-text": "Λεπτομέρειες: {{errorMessage}}\n", + "error-text": "Παρουσιάστηκε σφάλμα. Παρακαλώ περιμένετε λίγο και προσπαθήστε ξανά.", + "goBack-button": "Όχι, πήγαινέ με πίσω" + }, + "trackSelection": { + "description": "Επιλέξτε ή αποεπιλέξτε ποια κομμάτια χρησιμοποιούνται για την επεξεργασία και τη δημοσίευση.", + "trackInactive": "ανενεργό", + "deleteTrackText": "Διαγραφή Κομματιού", + "restoreTrackText": "Επαναφορά Κομματιού", + "cannotDeleteTrackText": "Αδυναμία Διαγραφής Κομματιού", + "deleteTrackTooltip": "Να μην κωδικοποιηθεί και δημοσιευτεί αυτό το κομμάτι.", + "restoreTrackTooltip": "Κωδικοποίηση και δημοσίευση αυτού του κομματιού.", + "cannotDeleteTrackTooltip": "Δεν είναι δυνατή η αφαίρεση αυτού του κομματιού από τη δημοσίευση." + }, + "subtitles": { + "selectSubtitleButton-tooltip": "Επεξεργασία υποτίτλων για {{title}}", + "selectSubtitleButton-tooltip-aria": "Επιλέξτε {{title}} για επεξεργασία υποτίτλων", + "createSubtitleButton-tooltip": "Ανοίγει ένα διάλογο για τη δημιουργία νέων υποτίτλων", + "createSubtitleButton-clicked-tooltip-aria": "Περιέχει ένα διάλογο για τη δημιουργία νέων υποτίτλων", + "createSubtitleButton-createButton": "Δημιουργία", + "createSubtitleButton-createButton-tooltip": "Ξεκινήστε ένα νέο αρχείο υποτίτλων με τον επιλεγμένο τίτλο.", + "createSubtitleDropdown-label": "Επιλέξτε μια γλώσσα", + "backButton": "Επιστροφή", + "backButton-tooltip": "Επιστροφή στην επιλογή υποτίτλων", + "editTitle": "Επεξεργαστής υποτίτλων - {{title}}", + "editTitle-loading": "Φόρτωση", + "generic": "Γενικά" + }, + "subtitleList": { + "startTime-tooltip": "Έναρξη του τμήματος", + "startTime-tooltip-aria": "Ξεκινώντας από {0}", + "endTime-tooltip": "Τέλος του τμήματος", + "endTime-tooltip-aria": "Τελειώνει στις", + "addSegmentAbove": "Προσθήκη τμήματος πάνω", + "addSegmentBelow": "Προσθήκη τμήματος κάτω", + "jumpToSegmentAbove": "Μετάβαση στο τμήμα πάνω", + "jumpToSegmentBelow": "Μετάβαση στο τμήμα κάτω", + "deleteSegment": "Διαγραφή τμήματος" + }, + "subtitleVideoArea": { + "selectVideoLabel": "Τύποι Βίντεο" + }, + "subtitleTimeline": { + "overviewTimelineTooltip": "Επισκόπηση χρονολογίου" + }, + "keyboardControls": { + "header": "Έλεγχοι Πληκτρολογίου", + "defaultGroupName": "Γενικά", + "missingLabel": "Άγνωστο", + "groupVideoPlayer": "Αναπαραγωγή Βίντεο", + "groupCuttingView": "Περικοπή", + "groupCuttingViewScrubber": "Χρονολόγιο", + "groupSubtitleList": "Υπότιτλοι", + "sequenceSeparator": "ή", + "genericError": "Αποτυχία φόρτωσης επισκόπησης", + "videoPlayButton": "Αναπαραγωγή/Παύση Βίντεο", + "scrubberLeft": "Μετακίνηση αριστερά", + "scrubberRight": "Μετακίνηση δεξιά", + "scrubberIncrease": "Μετακίνηση γρηγορότερα", + "scrubberDecrease": "Μετακίνηση πιο αργά" + }, + "theme": { + "appearance": "Εμφάνιση", + "selectThemesLabel": "Εμφανίσεις", + "darkmode": "Σκοτεινή λειτουργία", + "lightmode": "Φωτεινή λειτουργία", + "system": "Σχεδιασμός συστήματος", + "high-contrast-dark": "Υψηλή αντίθεση (Λειτουργία μαύρου)", + "high-contrast-light": "Υψηλή αντίθεση (λειτουργία άσπρου)" + } +} From 283e9ce078aa709c26d748b4a0740749c7fa20d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Jun 2023 04:57:46 +0000 Subject: [PATCH 04/47] Bump @mui/material from 5.12.2 to 5.13.3 Bumps [@mui/material](https://github.com/mui/material-ui/tree/HEAD/packages/mui-material) from 5.12.2 to 5.13.3. - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v5.13.3/packages/mui-material) --- updated-dependencies: - dependency-name: "@mui/material" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 270 ++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 130 insertions(+), 142 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76b9a1c38..15571561f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/react-fontawesome": "^0.2.0", "@iarna/toml": "^2.2.5", - "@mui/material": "^5.12.2", + "@mui/material": "^5.13.3", "@mui/styles": "^5.12.0", "@mui/x-date-pickers": "^5.0.20", "@reduxjs/toolkit": "^1.9.5", @@ -2221,11 +2221,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@emotion/babel-plugin/node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" - }, "node_modules/@emotion/babel-preset-css-prop": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/@emotion/babel-preset-css-prop/-/babel-preset-css-prop-11.11.0.tgz", @@ -2241,15 +2236,15 @@ } }, "node_modules/@emotion/cache": { - "version": "11.10.8", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.8.tgz", - "integrity": "sha512-5fyqGHi51LU95o7qQ/vD1jyvC4uCY5GcBT+UgP4LHdpO9jPDlXqhrRr9/wCKmfoAvh5G/F7aOh4MwQa+8uEqhA==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", "dependencies": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.1", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.1.4" + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" } }, "node_modules/@emotion/hash": { @@ -2258,11 +2253,11 @@ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" }, "node_modules/@emotion/is-prop-valid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", - "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", "dependencies": { - "@emotion/memoize": "^0.8.0" + "@emotion/memoize": "^0.8.1" } }, "node_modules/@emotion/memoize": { @@ -2306,9 +2301,9 @@ } }, "node_modules/@emotion/sheet": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", - "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, "node_modules/@emotion/styled": { "version": "11.10.8", @@ -2351,9 +2346,9 @@ "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" }, "node_modules/@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "node_modules/@eslint/eslintrc": { "version": "1.3.3", @@ -3936,14 +3931,14 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, "node_modules/@mui/base": { - "version": "5.0.0-alpha.127", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.127.tgz", - "integrity": "sha512-FoRQd0IOH9MnfyL5yXssyQRnC4vXI+1bwkU1idr+wNkP1ZfxE+JsThHcfl1dy5azLssVUGTtQFD9edQLdbyJog==", + "version": "5.0.0-beta.3", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.3.tgz", + "integrity": "sha512-ErOMoGNpgf6BF5W+jgXDiRlXJnpSeg8XSRonuY5UCCMHIlOWtKDtt/LS3qDAbFFGb7tV/y6EBddbcMeexx+zHw==", "dependencies": { "@babel/runtime": "^7.21.0", - "@emotion/is-prop-valid": "^1.2.0", + "@emotion/is-prop-valid": "^1.2.1", "@mui/types": "^7.2.4", - "@mui/utils": "^5.12.0", + "@mui/utils": "^5.13.1", "@popperjs/core": "^2.11.7", "clsx": "^1.2.1", "prop-types": "^15.8.1", @@ -3973,26 +3968,26 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.12.2", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.12.2.tgz", - "integrity": "sha512-Qn7dy8tql6T0hY6gTFPkpWlnqVVFGu5Z6QzEzUSzzmLZpfAx4kf8sFz0PHiB7gU5yrqcZF9picMx1shpRY/rXw==", + "version": "5.13.3", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.13.3.tgz", + "integrity": "sha512-w4//nRIi9fiMow/MmhkForOezd8nc229EpSZZ5DzwpJNOmAXwypFTapOUVAGTUQiTJyeZXUNbQqYuUIrIs2nbg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui" } }, "node_modules/@mui/material": { - "version": "5.12.2", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.12.2.tgz", - "integrity": "sha512-XOVy6fVC0rI2dEwDq/1s4Te2hewTUe6lznzeVnruyATGkdmM06WnHqkZOoLVIWo9hWwAxpcgTDcAIVpFtt1nrw==", + "version": "5.13.3", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.13.3.tgz", + "integrity": "sha512-10pek+Bz+PZ4rjUf3KTKfXWjPMUqU1nSnRPf4DAXABhsjzelGGfGW/EICgrLRrttYplTJZhoponWALezAge8ug==", "dependencies": { "@babel/runtime": "^7.21.0", - "@mui/base": "5.0.0-alpha.127", - "@mui/core-downloads-tracker": "^5.12.2", - "@mui/system": "^5.12.1", + "@mui/base": "5.0.0-beta.3", + "@mui/core-downloads-tracker": "^5.13.3", + "@mui/system": "^5.13.2", "@mui/types": "^7.2.4", - "@mui/utils": "^5.12.0", - "@types/react-transition-group": "^4.4.5", + "@mui/utils": "^5.13.1", + "@types/react-transition-group": "^4.4.6", "clsx": "^1.2.1", "csstype": "^3.1.2", "prop-types": "^15.8.1", @@ -4031,12 +4026,12 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/@mui/private-theming": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.12.0.tgz", - "integrity": "sha512-w5dwMen1CUm1puAtubqxY9BIzrBxbOThsg2iWMvRJmWyJAPdf3Z583fPXpqeA2lhTW79uH2jajk5Ka4FuGlTPg==", + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.13.1.tgz", + "integrity": "sha512-HW4npLUD9BAkVppOUZHeO1FOKUJWAwbpy0VQoGe3McUYTlck1HezGHQCfBQ5S/Nszi7EViqiimECVl9xi+/WjQ==", "dependencies": { "@babel/runtime": "^7.21.0", - "@mui/utils": "^5.12.0", + "@mui/utils": "^5.13.1", "prop-types": "^15.8.1" }, "engines": { @@ -4057,12 +4052,12 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.12.0.tgz", - "integrity": "sha512-frh8L7CRnvD0RDmIqEv6jFeKQUIXqW90BaZ6OrxJ2j4kIsiVLu29Gss4SbBvvrWwwatR72sBmC3w1aG4fjp9mQ==", + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz", + "integrity": "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==", "dependencies": { "@babel/runtime": "^7.21.0", - "@emotion/cache": "^11.10.7", + "@emotion/cache": "^11.11.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" }, @@ -4128,15 +4123,15 @@ } }, "node_modules/@mui/system": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.12.1.tgz", - "integrity": "sha512-Po+sicdV3bbRYXdU29XZaHPZrW7HUYUqU1qCu77GCCEMbahC756YpeyefdIYuPMUg0OdO3gKIUfDISBrkjJL+w==", + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.13.2.tgz", + "integrity": "sha512-TPyWmRJPt0JPVxacZISI4o070xEJ7ftxpVtu6LWuYVOUOINlhoGOclam4iV8PDT3EMQEHuUrwU49po34UdWLlw==", "dependencies": { "@babel/runtime": "^7.21.0", - "@mui/private-theming": "^5.12.0", - "@mui/styled-engine": "^5.12.0", + "@mui/private-theming": "^5.13.1", + "@mui/styled-engine": "^5.13.2", "@mui/types": "^7.2.4", - "@mui/utils": "^5.12.0", + "@mui/utils": "^5.13.1", "clsx": "^1.2.1", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -4180,13 +4175,13 @@ } }, "node_modules/@mui/utils": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.12.0.tgz", - "integrity": "sha512-RmQwgzF72p7Yr4+AAUO6j1v2uzt6wr7SWXn68KBsnfVpdOHyclCzH2lr/Xu6YOw9su4JRtdAIYfJFXsS6Cjkmw==", + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.13.1.tgz", + "integrity": "sha512-6lXdWwmlUbEU2jUI8blw38Kt+3ly7xkmV9ljzY4Q20WhsJMWiNry9CX8M+TaP/HbtuyR8XKsdMgQW7h7MM3n3A==", "dependencies": { "@babel/runtime": "^7.21.0", "@types/prop-types": "^15.7.5", - "@types/react-is": "^16.7.1 || ^17.0.0", + "@types/react-is": "^18.2.0", "prop-types": "^15.8.1", "react-is": "^18.2.0" }, @@ -4425,9 +4420,9 @@ } }, "node_modules/@popperjs/core": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", - "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==", + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -5192,9 +5187,9 @@ } }, "node_modules/@types/react-is": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", - "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-1vz2yObaQkLL7YFe/pme2cpvDsCwI1WXIfL+5eLz0MI9gFG24Re16RzUsI8t9XZn9ZWvgLNDrJBmrqXJO7GNQQ==", "dependencies": { "@types/react": "*" } @@ -5209,9 +5204,9 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", "dependencies": { "@types/react": "*" } @@ -18321,9 +18316,9 @@ } }, "node_modules/stylis": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.4.tgz", - "integrity": "sha512-USf5pszRYwuE6hg9by0OkKChkQYEXfkeTtm0xKw+jqQhwyjCVLdYyMBK7R+n7dhzsblAWJnGxju4vxq5eH20GQ==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "node_modules/supports-color": { "version": "5.5.0", @@ -21453,13 +21448,6 @@ "find-root": "^1.1.0", "source-map": "^0.5.7", "stylis": "4.2.0" - }, - "dependencies": { - "stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" - } } }, "@emotion/babel-plugin-jsx-pragmatic": { @@ -21482,15 +21470,15 @@ } }, "@emotion/cache": { - "version": "11.10.8", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.8.tgz", - "integrity": "sha512-5fyqGHi51LU95o7qQ/vD1jyvC4uCY5GcBT+UgP4LHdpO9jPDlXqhrRr9/wCKmfoAvh5G/F7aOh4MwQa+8uEqhA==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", "requires": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.1", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.1.4" + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" } }, "@emotion/hash": { @@ -21499,11 +21487,11 @@ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" }, "@emotion/is-prop-valid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", - "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", "requires": { - "@emotion/memoize": "^0.8.0" + "@emotion/memoize": "^0.8.1" } }, "@emotion/memoize": { @@ -21539,9 +21527,9 @@ } }, "@emotion/sheet": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", - "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, "@emotion/styled": { "version": "11.10.8", @@ -21573,9 +21561,9 @@ "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" }, "@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "@eslint/eslintrc": { "version": "1.3.3", @@ -22775,14 +22763,14 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, "@mui/base": { - "version": "5.0.0-alpha.127", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.127.tgz", - "integrity": "sha512-FoRQd0IOH9MnfyL5yXssyQRnC4vXI+1bwkU1idr+wNkP1ZfxE+JsThHcfl1dy5azLssVUGTtQFD9edQLdbyJog==", + "version": "5.0.0-beta.3", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.3.tgz", + "integrity": "sha512-ErOMoGNpgf6BF5W+jgXDiRlXJnpSeg8XSRonuY5UCCMHIlOWtKDtt/LS3qDAbFFGb7tV/y6EBddbcMeexx+zHw==", "requires": { "@babel/runtime": "^7.21.0", - "@emotion/is-prop-valid": "^1.2.0", + "@emotion/is-prop-valid": "^1.2.1", "@mui/types": "^7.2.4", - "@mui/utils": "^5.12.0", + "@mui/utils": "^5.13.1", "@popperjs/core": "^2.11.7", "clsx": "^1.2.1", "prop-types": "^15.8.1", @@ -22797,22 +22785,22 @@ } }, "@mui/core-downloads-tracker": { - "version": "5.12.2", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.12.2.tgz", - "integrity": "sha512-Qn7dy8tql6T0hY6gTFPkpWlnqVVFGu5Z6QzEzUSzzmLZpfAx4kf8sFz0PHiB7gU5yrqcZF9picMx1shpRY/rXw==" + "version": "5.13.3", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.13.3.tgz", + "integrity": "sha512-w4//nRIi9fiMow/MmhkForOezd8nc229EpSZZ5DzwpJNOmAXwypFTapOUVAGTUQiTJyeZXUNbQqYuUIrIs2nbg==" }, "@mui/material": { - "version": "5.12.2", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.12.2.tgz", - "integrity": "sha512-XOVy6fVC0rI2dEwDq/1s4Te2hewTUe6lznzeVnruyATGkdmM06WnHqkZOoLVIWo9hWwAxpcgTDcAIVpFtt1nrw==", + "version": "5.13.3", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.13.3.tgz", + "integrity": "sha512-10pek+Bz+PZ4rjUf3KTKfXWjPMUqU1nSnRPf4DAXABhsjzelGGfGW/EICgrLRrttYplTJZhoponWALezAge8ug==", "requires": { "@babel/runtime": "^7.21.0", - "@mui/base": "5.0.0-alpha.127", - "@mui/core-downloads-tracker": "^5.12.2", - "@mui/system": "^5.12.1", + "@mui/base": "5.0.0-beta.3", + "@mui/core-downloads-tracker": "^5.13.3", + "@mui/system": "^5.13.2", "@mui/types": "^7.2.4", - "@mui/utils": "^5.12.0", - "@types/react-transition-group": "^4.4.5", + "@mui/utils": "^5.13.1", + "@types/react-transition-group": "^4.4.6", "clsx": "^1.2.1", "csstype": "^3.1.2", "prop-types": "^15.8.1", @@ -22828,22 +22816,22 @@ } }, "@mui/private-theming": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.12.0.tgz", - "integrity": "sha512-w5dwMen1CUm1puAtubqxY9BIzrBxbOThsg2iWMvRJmWyJAPdf3Z583fPXpqeA2lhTW79uH2jajk5Ka4FuGlTPg==", + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.13.1.tgz", + "integrity": "sha512-HW4npLUD9BAkVppOUZHeO1FOKUJWAwbpy0VQoGe3McUYTlck1HezGHQCfBQ5S/Nszi7EViqiimECVl9xi+/WjQ==", "requires": { "@babel/runtime": "^7.21.0", - "@mui/utils": "^5.12.0", + "@mui/utils": "^5.13.1", "prop-types": "^15.8.1" } }, "@mui/styled-engine": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.12.0.tgz", - "integrity": "sha512-frh8L7CRnvD0RDmIqEv6jFeKQUIXqW90BaZ6OrxJ2j4kIsiVLu29Gss4SbBvvrWwwatR72sBmC3w1aG4fjp9mQ==", + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz", + "integrity": "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==", "requires": { "@babel/runtime": "^7.21.0", - "@emotion/cache": "^11.10.7", + "@emotion/cache": "^11.11.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" } @@ -22873,15 +22861,15 @@ } }, "@mui/system": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.12.1.tgz", - "integrity": "sha512-Po+sicdV3bbRYXdU29XZaHPZrW7HUYUqU1qCu77GCCEMbahC756YpeyefdIYuPMUg0OdO3gKIUfDISBrkjJL+w==", + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.13.2.tgz", + "integrity": "sha512-TPyWmRJPt0JPVxacZISI4o070xEJ7ftxpVtu6LWuYVOUOINlhoGOclam4iV8PDT3EMQEHuUrwU49po34UdWLlw==", "requires": { "@babel/runtime": "^7.21.0", - "@mui/private-theming": "^5.12.0", - "@mui/styled-engine": "^5.12.0", + "@mui/private-theming": "^5.13.1", + "@mui/styled-engine": "^5.13.2", "@mui/types": "^7.2.4", - "@mui/utils": "^5.12.0", + "@mui/utils": "^5.13.1", "clsx": "^1.2.1", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -22894,13 +22882,13 @@ "requires": {} }, "@mui/utils": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.12.0.tgz", - "integrity": "sha512-RmQwgzF72p7Yr4+AAUO6j1v2uzt6wr7SWXn68KBsnfVpdOHyclCzH2lr/Xu6YOw9su4JRtdAIYfJFXsS6Cjkmw==", + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.13.1.tgz", + "integrity": "sha512-6lXdWwmlUbEU2jUI8blw38Kt+3ly7xkmV9ljzY4Q20WhsJMWiNry9CX8M+TaP/HbtuyR8XKsdMgQW7h7MM3n3A==", "requires": { "@babel/runtime": "^7.21.0", "@types/prop-types": "^15.7.5", - "@types/react-is": "^16.7.1 || ^17.0.0", + "@types/react-is": "^18.2.0", "prop-types": "^15.8.1", "react-is": "^18.2.0" }, @@ -23029,9 +23017,9 @@ } }, "@popperjs/core": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", - "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==" + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" }, "@reduxjs/toolkit": { "version": "1.9.5", @@ -23620,9 +23608,9 @@ } }, "@types/react-is": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-17.0.3.tgz", - "integrity": "sha512-aBTIWg1emtu95bLTLx0cpkxwGW3ueZv71nE2YFBpL8k/z5czEW8yYpOo8Dp+UUAFAtKwNaOsh/ioSeQnWlZcfw==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-1vz2yObaQkLL7YFe/pme2cpvDsCwI1WXIfL+5eLz0MI9gFG24Re16RzUsI8t9XZn9ZWvgLNDrJBmrqXJO7GNQQ==", "requires": { "@types/react": "*" } @@ -23637,9 +23625,9 @@ } }, "@types/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", "requires": { "@types/react": "*" } @@ -33081,9 +33069,9 @@ } }, "stylis": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.4.tgz", - "integrity": "sha512-USf5pszRYwuE6hg9by0OkKChkQYEXfkeTtm0xKw+jqQhwyjCVLdYyMBK7R+n7dhzsblAWJnGxju4vxq5eH20GQ==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "supports-color": { "version": "5.5.0", diff --git a/package.json b/package.json index 96b39df30..c53c9fc4e 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/react-fontawesome": "^0.2.0", "@iarna/toml": "^2.2.5", - "@mui/material": "^5.12.2", + "@mui/material": "^5.13.3", "@mui/styles": "^5.12.0", "@mui/x-date-pickers": "^5.0.20", "@reduxjs/toolkit": "^1.9.5", From 19f316bc2ebca8586d3dfd8282a27e28e27ae7f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Jun 2023 04:58:14 +0000 Subject: [PATCH 05/47] Bump @emotion/react from 11.10.8 to 11.11.0 Bumps [@emotion/react](https://github.com/emotion-js/emotion) from 11.10.8 to 11.11.0. - [Release notes](https://github.com/emotion-js/emotion/releases) - [Changelog](https://github.com/emotion-js/emotion/blob/main/CHANGELOG.md) - [Commits](https://github.com/emotion-js/emotion/compare/@emotion/react@11.10.8...@emotion/react@11.11.0) --- updated-dependencies: - dependency-name: "@emotion/react" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 130 +++++++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 60 insertions(+), 72 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76b9a1c38..ded8f38be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@date-io/date-fns": "^2.16.0", "@emotion/babel-preset-css-prop": "^11.10.0", - "@emotion/react": "^11.10.8", + "@emotion/react": "^11.11.0", "@emotion/styled": "^11.10.8", "@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/free-regular-svg-icons": "^6.4.0", @@ -2221,11 +2221,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@emotion/babel-plugin/node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" - }, "node_modules/@emotion/babel-preset-css-prop": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/@emotion/babel-preset-css-prop/-/babel-preset-css-prop-11.11.0.tgz", @@ -2241,15 +2236,15 @@ } }, "node_modules/@emotion/cache": { - "version": "11.10.8", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.8.tgz", - "integrity": "sha512-5fyqGHi51LU95o7qQ/vD1jyvC4uCY5GcBT+UgP4LHdpO9jPDlXqhrRr9/wCKmfoAvh5G/F7aOh4MwQa+8uEqhA==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", "dependencies": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.1", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.1.4" + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" } }, "node_modules/@emotion/hash": { @@ -2271,17 +2266,17 @@ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" }, "node_modules/@emotion/react": { - "version": "11.10.8", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.8.tgz", - "integrity": "sha512-ZfGfiABtJ1P1OXqOBsW08EgCDp5fK6C5I8hUJauc/VcJBGSzqAirMnFslhFWnZJ/w5HxPI36XbvMV0l4KZHl+w==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.0.tgz", + "integrity": "sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw==", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.8", - "@emotion/cache": "^11.10.8", - "@emotion/serialize": "^1.1.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { @@ -2306,9 +2301,9 @@ } }, "node_modules/@emotion/sheet": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", - "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, "node_modules/@emotion/styled": { "version": "11.10.8", @@ -2338,9 +2333,9 @@ "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", - "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", "peerDependencies": { "react": ">=16.8.0" } @@ -2351,9 +2346,9 @@ "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" }, "node_modules/@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "node_modules/@eslint/eslintrc": { "version": "1.3.3", @@ -18321,9 +18316,9 @@ } }, "node_modules/stylis": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.4.tgz", - "integrity": "sha512-USf5pszRYwuE6hg9by0OkKChkQYEXfkeTtm0xKw+jqQhwyjCVLdYyMBK7R+n7dhzsblAWJnGxju4vxq5eH20GQ==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "node_modules/supports-color": { "version": "5.5.0", @@ -21453,13 +21448,6 @@ "find-root": "^1.1.0", "source-map": "^0.5.7", "stylis": "4.2.0" - }, - "dependencies": { - "stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" - } } }, "@emotion/babel-plugin-jsx-pragmatic": { @@ -21482,15 +21470,15 @@ } }, "@emotion/cache": { - "version": "11.10.8", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.8.tgz", - "integrity": "sha512-5fyqGHi51LU95o7qQ/vD1jyvC4uCY5GcBT+UgP4LHdpO9jPDlXqhrRr9/wCKmfoAvh5G/F7aOh4MwQa+8uEqhA==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", "requires": { - "@emotion/memoize": "^0.8.0", - "@emotion/sheet": "^1.2.1", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", - "stylis": "4.1.4" + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" } }, "@emotion/hash": { @@ -21512,17 +21500,17 @@ "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" }, "@emotion/react": { - "version": "11.10.8", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.8.tgz", - "integrity": "sha512-ZfGfiABtJ1P1OXqOBsW08EgCDp5fK6C5I8hUJauc/VcJBGSzqAirMnFslhFWnZJ/w5HxPI36XbvMV0l4KZHl+w==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.0.tgz", + "integrity": "sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw==", "requires": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.8", - "@emotion/cache": "^11.10.8", - "@emotion/serialize": "^1.1.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0", - "@emotion/weak-memoize": "^0.3.0", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", "hoist-non-react-statics": "^3.3.1" } }, @@ -21539,9 +21527,9 @@ } }, "@emotion/sheet": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz", - "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, "@emotion/styled": { "version": "11.10.8", @@ -21562,9 +21550,9 @@ "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" }, "@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz", - "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", "requires": {} }, "@emotion/utils": { @@ -21573,9 +21561,9 @@ "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" }, "@emotion/weak-memoize": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz", - "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==" + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "@eslint/eslintrc": { "version": "1.3.3", @@ -33081,9 +33069,9 @@ } }, "stylis": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.4.tgz", - "integrity": "sha512-USf5pszRYwuE6hg9by0OkKChkQYEXfkeTtm0xKw+jqQhwyjCVLdYyMBK7R+n7dhzsblAWJnGxju4vxq5eH20GQ==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "supports-color": { "version": "5.5.0", diff --git a/package.json b/package.json index 96b39df30..8287cebd1 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "dependencies": { "@date-io/date-fns": "^2.16.0", "@emotion/babel-preset-css-prop": "^11.10.0", - "@emotion/react": "^11.10.8", + "@emotion/react": "^11.11.0", "@emotion/styled": "^11.10.8", "@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/free-regular-svg-icons": "^6.4.0", From 61e98ae27b785d5e52e698be0b2f13cbe9db81cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Jun 2023 05:01:21 +0000 Subject: [PATCH 06/47] Bump i18next-browser-languagedetector from 7.0.1 to 7.0.2 Bumps [i18next-browser-languagedetector](https://github.com/i18next/i18next-browser-languageDetector) from 7.0.1 to 7.0.2. - [Changelog](https://github.com/i18next/i18next-browser-languageDetector/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next-browser-languageDetector/compare/v7.0.1...v7.0.2) --- updated-dependencies: - dependency-name: i18next-browser-languagedetector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76b9a1c38..8961747c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,7 +30,7 @@ "emotion-normalize": "^11.0.1", "final-form": "^4.20.9", "i18next": "^22.0.4", - "i18next-browser-languagedetector": "^7.0.1", + "i18next-browser-languagedetector": "^7.0.2", "lodash": "^4.17.21", "luxon": "^3.3.0", "mui-rff": "^5.3.2", @@ -10003,9 +10003,9 @@ } }, "node_modules/i18next-browser-languagedetector": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.0.1.tgz", - "integrity": "sha512-Pa5kFwaczXJAeHE56CHG2aWzFBMJNUNghf0Pm4SwSrEMps/PTKqW90EYWlIvhuYStf3Sn1K0vw+gH3+TLdkH1g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.0.2.tgz", + "integrity": "sha512-5ViaK+gikxfqZ9M3jJ7gJkUzzu/p3HwiqfLoL1bdiL7CUb0IylcTyVLdPaTU3pH5VFWFCiGFuJDg3VkLUikWgg==", "dependencies": { "@babel/runtime": "^7.19.4" } @@ -27146,9 +27146,9 @@ } }, "i18next-browser-languagedetector": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.0.1.tgz", - "integrity": "sha512-Pa5kFwaczXJAeHE56CHG2aWzFBMJNUNghf0Pm4SwSrEMps/PTKqW90EYWlIvhuYStf3Sn1K0vw+gH3+TLdkH1g==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.0.2.tgz", + "integrity": "sha512-5ViaK+gikxfqZ9M3jJ7gJkUzzu/p3HwiqfLoL1bdiL7CUb0IylcTyVLdPaTU3pH5VFWFCiGFuJDg3VkLUikWgg==", "requires": { "@babel/runtime": "^7.19.4" } diff --git a/package.json b/package.json index 96b39df30..4b1e7c9b7 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "emotion-normalize": "^11.0.1", "final-form": "^4.20.9", "i18next": "^22.0.4", - "i18next-browser-languagedetector": "^7.0.1", + "i18next-browser-languagedetector": "^7.0.2", "lodash": "^4.17.21", "luxon": "^3.3.0", "mui-rff": "^5.3.2", From e8a7b7b5e3ad4b5e97a5be25d4f09a1eeb8e1d2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Jun 2023 05:01:38 +0000 Subject: [PATCH 07/47] Bump react-window from 1.8.8 to 1.8.9 Bumps [react-window](https://github.com/bvaughn/react-window) from 1.8.8 to 1.8.9. - [Release notes](https://github.com/bvaughn/react-window/releases) - [Changelog](https://github.com/bvaughn/react-window/blob/master/CHANGELOG.md) - [Commits](https://github.com/bvaughn/react-window/commits/1.8.9) --- updated-dependencies: - dependency-name: react-window dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76b9a1c38..2d7aa6693 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "react-scripts": "5.0.1", "react-select": "^5.7.2", "react-virtualized-auto-sizer": "^1.0.15", - "react-window": "^1.8.8", + "react-window": "^1.8.9", "redux": "^4.2.1", "standardized-audio-context": "^25.3.45", "typescript": "^4.9.5", @@ -17153,9 +17153,9 @@ } }, "node_modules/react-window": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.8.tgz", - "integrity": "sha512-D4IiBeRtGXziZ1n0XklnFGu7h9gU684zepqyKzgPNzrsrk7xOCxni+TCckjg2Nr/DiaEEGVVmnhYSlT2rB47dQ==", + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.9.tgz", + "integrity": "sha512-+Eqx/fj1Aa5WnhRfj9dJg4VYATGwIUP2ItwItiJ6zboKWA6EX3lYDAXfGF2hyNqplEprhbtjbipiADEcwQ823Q==", "dependencies": { "@babel/runtime": "^7.0.0", "memoize-one": ">=3.1.1 <6" @@ -32209,9 +32209,9 @@ "requires": {} }, "react-window": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.8.tgz", - "integrity": "sha512-D4IiBeRtGXziZ1n0XklnFGu7h9gU684zepqyKzgPNzrsrk7xOCxni+TCckjg2Nr/DiaEEGVVmnhYSlT2rB47dQ==", + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.9.tgz", + "integrity": "sha512-+Eqx/fj1Aa5WnhRfj9dJg4VYATGwIUP2ItwItiJ6zboKWA6EX3lYDAXfGF2hyNqplEprhbtjbipiADEcwQ823Q==", "requires": { "@babel/runtime": "^7.0.0", "memoize-one": ">=3.1.1 <6" diff --git a/package.json b/package.json index 96b39df30..36d2a40f8 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "react-scripts": "5.0.1", "react-select": "^5.7.2", "react-virtualized-auto-sizer": "^1.0.15", - "react-window": "^1.8.8", + "react-window": "^1.8.9", "redux": "^4.2.1", "standardized-audio-context": "^25.3.45", "typescript": "^4.9.5", From cf3c5f10e11d77ad66f2bf74cded2e80ef5fb317 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Jun 2023 05:02:23 +0000 Subject: [PATCH 08/47] Bump react-redux from 8.0.5 to 8.0.7 Bumps [react-redux](https://github.com/reduxjs/react-redux) from 8.0.5 to 8.0.7. - [Release notes](https://github.com/reduxjs/react-redux/releases) - [Changelog](https://github.com/reduxjs/react-redux/blob/master/CHANGELOG.md) - [Commits](https://github.com/reduxjs/react-redux/compare/v8.0.5...v8.0.7) --- updated-dependencies: - dependency-name: react-redux dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 20 ++++++++++++-------- package.json | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76b9a1c38..bc79c13f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,7 +46,7 @@ "react-i18next": "^12.2.2", "react-indiana-drag-scroll": "^2.1.0", "react-player": "git+https://arnei@github.com/Arnei/react-player.git#20fe6c061cf7d71d33d764b4a51c9b9bbb614bf6", - "react-redux": "^8.0.5", + "react-redux": "^8.0.7", "react-resizable": "^3.0.5", "react-scripts": "5.0.1", "react-select": "^5.7.2", @@ -16955,9 +16955,9 @@ } }, "node_modules/react-redux": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz", - "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==", + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.7.tgz", + "integrity": "sha512-1vRQuCQI5Y2uNmrMXg81RXKiBHY3jBzvCvNmZF437O/Z9/pZ+ba2uYHbemYXb3g8rjsacBGo+/wmfrQKzMhJsg==", "dependencies": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", @@ -16967,14 +16967,18 @@ "use-sync-external-store": "^1.0.0" }, "peerDependencies": { + "@reduxjs/toolkit": "^1 || ^2.0.0-beta.0", "@types/react": "^16.8 || ^17.0 || ^18.0", "@types/react-dom": "^16.8 || ^17.0 || ^18.0", "react": "^16.8 || ^17.0 || ^18.0", "react-dom": "^16.8 || ^17.0 || ^18.0", "react-native": ">=0.59", - "redux": "^4" + "redux": "^4 || ^5.0.0-beta.0" }, "peerDependenciesMeta": { + "@reduxjs/toolkit": { + "optional": true + }, "@types/react": { "optional": true }, @@ -32070,9 +32074,9 @@ } }, "react-redux": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.5.tgz", - "integrity": "sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==", + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-8.0.7.tgz", + "integrity": "sha512-1vRQuCQI5Y2uNmrMXg81RXKiBHY3jBzvCvNmZF437O/Z9/pZ+ba2uYHbemYXb3g8rjsacBGo+/wmfrQKzMhJsg==", "requires": { "@babel/runtime": "^7.12.1", "@types/hoist-non-react-statics": "^3.3.1", diff --git a/package.json b/package.json index 96b39df30..62b5dca26 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "react-i18next": "^12.2.2", "react-indiana-drag-scroll": "^2.1.0", "react-player": "git+https://arnei@github.com/Arnei/react-player.git#20fe6c061cf7d71d33d764b4a51c9b9bbb614bf6", - "react-redux": "^8.0.5", + "react-redux": "^8.0.7", "react-resizable": "^3.0.5", "react-scripts": "5.0.1", "react-select": "^5.7.2", From 727b1f6919575c804161debc9e4c4bff286e78d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Jun 2023 05:03:13 +0000 Subject: [PATCH 09/47] Bump @types/lodash from 4.14.194 to 4.14.195 Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.194 to 4.14.195. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash) --- updated-dependencies: - dependency-name: "@types/lodash" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76b9a1c38..94a554829 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,7 +59,7 @@ }, "devDependencies": { "@playwright/test": "^1.33.0", - "@types/lodash": "^4.14.194", + "@types/lodash": "^4.14.195", "@types/luxon": "^3.3.0", "@types/react-beforeunload": "^2.1.1", "@types/react-final-form-listeners": "^1.0.0", @@ -5104,9 +5104,9 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" }, "node_modules/@types/lodash": { - "version": "4.14.194", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.194.tgz", - "integrity": "sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==", + "version": "4.14.195", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", + "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", "devOptional": true }, "node_modules/@types/luxon": { @@ -23532,9 +23532,9 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" }, "@types/lodash": { - "version": "4.14.194", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.194.tgz", - "integrity": "sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==", + "version": "4.14.195", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", + "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", "devOptional": true }, "@types/luxon": { diff --git a/package.json b/package.json index 96b39df30..1091afa7e 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ }, "devDependencies": { "@playwright/test": "^1.33.0", - "@types/lodash": "^4.14.194", + "@types/lodash": "^4.14.195", "@types/luxon": "^3.3.0", "@types/react-beforeunload": "^2.1.1", "@types/react-final-form-listeners": "^1.0.0", From 81b39126be985df83d4782036a64536c1e57ffd5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 12:33:47 +0000 Subject: [PATCH 10/47] Bump @playwright/test from 1.33.0 to 1.34.3 Bumps [@playwright/test](https://github.com/Microsoft/playwright) from 1.33.0 to 1.34.3. - [Release notes](https://github.com/Microsoft/playwright/releases) - [Commits](https://github.com/Microsoft/playwright/compare/v1.33.0...v1.34.3) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 32 ++++++++++++++++---------------- package.json | 2 +- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index fc51c43ce..d9c56915c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -58,7 +58,7 @@ "webvtt-parser": "^2.2.0" }, "devDependencies": { - "@playwright/test": "^1.33.0", + "@playwright/test": "^1.34.3", "@types/lodash": "^4.14.195", "@types/luxon": "^3.3.0", "@types/react-beforeunload": "^2.1.1", @@ -4349,13 +4349,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.33.0.tgz", - "integrity": "sha512-YunBa2mE7Hq4CfPkGzQRK916a4tuZoVx/EpLjeWlTVOnD4S2+fdaQZE0LJkbfhN5FTSKNLdcl7MoT5XB37bTkg==", + "version": "1.34.3", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.34.3.tgz", + "integrity": "sha512-zPLef6w9P6T/iT6XDYG3mvGOqOyb6eHaV9XtkunYs0+OzxBtrPAAaHotc0X+PJ00WPPnLfFBTl7mf45Mn8DBmw==", "dev": true, "dependencies": { "@types/node": "*", - "playwright-core": "1.33.0" + "playwright-core": "1.34.3" }, "bin": { "playwright": "cli.js" @@ -15218,12 +15218,12 @@ } }, "node_modules/playwright-core": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.33.0.tgz", - "integrity": "sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==", + "version": "1.34.3", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.34.3.tgz", + "integrity": "sha512-2pWd6G7OHKemc5x1r1rp8aQcpvDh7goMBZlJv6Co5vCNLVcQJdhxRL09SGaY6HcyHH9aT4tiynZabMofVasBYw==", "dev": true, "bin": { - "playwright": "cli.js" + "playwright-core": "cli.js" }, "engines": { "node": ">=14" @@ -22999,14 +22999,14 @@ } }, "@playwright/test": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.33.0.tgz", - "integrity": "sha512-YunBa2mE7Hq4CfPkGzQRK916a4tuZoVx/EpLjeWlTVOnD4S2+fdaQZE0LJkbfhN5FTSKNLdcl7MoT5XB37bTkg==", + "version": "1.34.3", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.34.3.tgz", + "integrity": "sha512-zPLef6w9P6T/iT6XDYG3mvGOqOyb6eHaV9XtkunYs0+OzxBtrPAAaHotc0X+PJ00WPPnLfFBTl7mf45Mn8DBmw==", "dev": true, "requires": { "@types/node": "*", "fsevents": "2.3.2", - "playwright-core": "1.33.0" + "playwright-core": "1.34.3" } }, "@pmmmwh/react-refresh-webpack-plugin": { @@ -31013,9 +31013,9 @@ } }, "playwright-core": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.33.0.tgz", - "integrity": "sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==", + "version": "1.34.3", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.34.3.tgz", + "integrity": "sha512-2pWd6G7OHKemc5x1r1rp8aQcpvDh7goMBZlJv6Co5vCNLVcQJdhxRL09SGaY6HcyHH9aT4tiynZabMofVasBYw==", "dev": true }, "postcss": { diff --git a/package.json b/package.json index dcbabcb46..ff3ce0b26 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ ] }, "devDependencies": { - "@playwright/test": "^1.33.0", + "@playwright/test": "^1.34.3", "@types/lodash": "^4.14.195", "@types/luxon": "^3.3.0", "@types/react-beforeunload": "^2.1.1", From 3481d5332061b025f3661cafef7e98faf9fd3850 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 12:34:16 +0000 Subject: [PATCH 11/47] Bump i18next from 22.0.4 to 22.5.0 Bumps [i18next](https://github.com/i18next/i18next) from 22.0.4 to 22.5.0. - [Release notes](https://github.com/i18next/i18next/releases) - [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next/compare/v22.0.4...v22.5.0) --- updated-dependencies: - dependency-name: i18next dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 73e9f08c6..b8ae45318 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,7 @@ "deepmerge": "^4.3.1", "emotion-normalize": "^11.0.1", "final-form": "^4.20.9", - "i18next": "^22.0.4", + "i18next": "^22.5.0", "i18next-browser-languagedetector": "^7.0.2", "lodash": "^4.17.21", "luxon": "^3.3.0", @@ -9981,9 +9981,9 @@ "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" }, "node_modules/i18next": { - "version": "22.0.4", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.0.4.tgz", - "integrity": "sha512-TOp7BTMKDbUkOHMzDlVsCYWpyaFkKakrrO3HNXfSz4EeJaWwnBScRmgQSTaWHScXVHBUFXTvShrCW8uryBYFcg==", + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.0.tgz", + "integrity": "sha512-sqWuJFj+wJAKQP2qBQ+b7STzxZNUmnSxrehBCCj9vDOW9RDYPfqCaK1Hbh2frNYQuPziz6O2CGoJPwtzY3vAYA==", "funding": [ { "type": "individual", @@ -9999,7 +9999,7 @@ } ], "dependencies": { - "@babel/runtime": "^7.17.2" + "@babel/runtime": "^7.20.6" } }, "node_modules/i18next-browser-languagedetector": { @@ -27142,11 +27142,11 @@ "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" }, "i18next": { - "version": "22.0.4", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.0.4.tgz", - "integrity": "sha512-TOp7BTMKDbUkOHMzDlVsCYWpyaFkKakrrO3HNXfSz4EeJaWwnBScRmgQSTaWHScXVHBUFXTvShrCW8uryBYFcg==", + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.0.tgz", + "integrity": "sha512-sqWuJFj+wJAKQP2qBQ+b7STzxZNUmnSxrehBCCj9vDOW9RDYPfqCaK1Hbh2frNYQuPziz6O2CGoJPwtzY3vAYA==", "requires": { - "@babel/runtime": "^7.17.2" + "@babel/runtime": "^7.20.6" } }, "i18next-browser-languagedetector": { diff --git a/package.json b/package.json index b5e6c0486..e2f6bb0bb 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "deepmerge": "^4.3.1", "emotion-normalize": "^11.0.1", "final-form": "^4.20.9", - "i18next": "^22.0.4", + "i18next": "^22.5.0", "i18next-browser-languagedetector": "^7.0.2", "lodash": "^4.17.21", "luxon": "^3.3.0", From 5635c137ef080155b4ab60a94eb5a3b29cecb7cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 12:34:25 +0000 Subject: [PATCH 12/47] Bump react-select from 5.7.2 to 5.7.3 Bumps [react-select](https://github.com/JedWatson/react-select) from 5.7.2 to 5.7.3. - [Release notes](https://github.com/JedWatson/react-select/releases) - [Changelog](https://github.com/JedWatson/react-select/blob/master/docs/CHANGELOG.md) - [Commits](https://github.com/JedWatson/react-select/compare/react-select@5.7.2...react-select@5.7.3) --- updated-dependencies: - dependency-name: react-select dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 73e9f08c6..755601530 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,7 +49,7 @@ "react-redux": "^8.0.7", "react-resizable": "^3.0.5", "react-scripts": "5.0.1", - "react-select": "^5.7.2", + "react-select": "^5.7.3", "react-virtualized-auto-sizer": "^1.0.15", "react-window": "^1.8.9", "redux": "^4.2.1", @@ -17108,9 +17108,9 @@ } }, "node_modules/react-select": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.2.tgz", - "integrity": "sha512-cTlJkQ8YjV6T/js8wW0owTzht0hHGABh29vjLscY4HfZGkv7hc3FFTmRp9NzY/Ib1uQ36GieAKEjxpHdpCFpcA==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.3.tgz", + "integrity": "sha512-z8i3NCuFFWL3w27xq92rBkVI2onT0jzIIPe480HlBjXJ3b5o6Q+Clp4ydyeKrj9DZZ3lrjawwLC5NGl0FSvUDg==", "dependencies": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", @@ -32173,9 +32173,9 @@ } }, "react-select": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.2.tgz", - "integrity": "sha512-cTlJkQ8YjV6T/js8wW0owTzht0hHGABh29vjLscY4HfZGkv7hc3FFTmRp9NzY/Ib1uQ36GieAKEjxpHdpCFpcA==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.7.3.tgz", + "integrity": "sha512-z8i3NCuFFWL3w27xq92rBkVI2onT0jzIIPe480HlBjXJ3b5o6Q+Clp4ydyeKrj9DZZ3lrjawwLC5NGl0FSvUDg==", "requires": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", diff --git a/package.json b/package.json index b5e6c0486..4ccacbc8f 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "react-redux": "^8.0.7", "react-resizable": "^3.0.5", "react-scripts": "5.0.1", - "react-select": "^5.7.2", + "react-select": "^5.7.3", "react-virtualized-auto-sizer": "^1.0.15", "react-window": "^1.8.9", "redux": "^4.2.1", From 4625d8b85d9184b50399fa19711119aa56d8f355 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 12:34:25 +0000 Subject: [PATCH 13/47] Bump react-i18next from 12.2.2 to 12.3.1 Bumps [react-i18next](https://github.com/i18next/react-i18next) from 12.2.2 to 12.3.1. - [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/react-i18next/compare/v12.2.2...v12.3.1) --- updated-dependencies: - dependency-name: react-i18next dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 73e9f08c6..96e49796b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,7 +43,7 @@ "react-final-form": "^6.5.9", "react-final-form-listeners": "^1.0.3", "react-hotkeys": "^2.0.0", - "react-i18next": "^12.2.2", + "react-i18next": "^12.3.1", "react-indiana-drag-scroll": "^2.1.0", "react-player": "git+https://arnei@github.com/Arnei/react-player.git#20fe6c061cf7d71d33d764b4a51c9b9bbb614bf6", "react-redux": "^8.0.7", @@ -16895,9 +16895,9 @@ } }, "node_modules/react-i18next": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.2.2.tgz", - "integrity": "sha512-KBB6buBmVKXUWNxXHdnthp+38gPyBT46hJCAIQ8rX19NFL/m2ahte2KARfIDf2tMnSAL7wwck6eDOd/9zn6aFg==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz", + "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==", "dependencies": { "@babel/runtime": "^7.20.6", "html-parse-stringify": "^3.0.1" @@ -32038,9 +32038,9 @@ } }, "react-i18next": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.2.2.tgz", - "integrity": "sha512-KBB6buBmVKXUWNxXHdnthp+38gPyBT46hJCAIQ8rX19NFL/m2ahte2KARfIDf2tMnSAL7wwck6eDOd/9zn6aFg==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz", + "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==", "requires": { "@babel/runtime": "^7.20.6", "html-parse-stringify": "^3.0.1" diff --git a/package.json b/package.json index b5e6c0486..389d00e59 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "react-final-form": "^6.5.9", "react-final-form-listeners": "^1.0.3", "react-hotkeys": "^2.0.0", - "react-i18next": "^12.2.2", + "react-i18next": "^12.3.1", "react-indiana-drag-scroll": "^2.1.0", "react-player": "git+https://arnei@github.com/Arnei/react-player.git#20fe6c061cf7d71d33d764b4a51c9b9bbb614bf6", "react-redux": "^8.0.7", From 73546d046c83727cc7bc63dd96e6b17a9b66acbe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 12:34:29 +0000 Subject: [PATCH 14/47] Bump standardized-audio-context from 25.3.45 to 25.3.50 Bumps [standardized-audio-context](https://github.com/chrisguttandin/standardized-audio-context) from 25.3.45 to 25.3.50. - [Release notes](https://github.com/chrisguttandin/standardized-audio-context/releases) - [Commits](https://github.com/chrisguttandin/standardized-audio-context/compare/v25.3.45...v25.3.50) --- updated-dependencies: - dependency-name: standardized-audio-context dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 70 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 73e9f08c6..09614c0d2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ "react-virtualized-auto-sizer": "^1.0.15", "react-window": "^1.8.9", "redux": "^4.2.1", - "standardized-audio-context": "^25.3.45", + "standardized-audio-context": "^25.3.50", "typescript": "^4.9.5", "webvtt-parser": "^2.2.0" }, @@ -1795,9 +1795,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", + "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", "dependencies": { "regenerator-runtime": "^0.13.11" }, @@ -6091,12 +6091,12 @@ } }, "node_modules/automation-events": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-6.0.0.tgz", - "integrity": "sha512-mSOnckbtuJso8cczB+broNsfcuDIQ+J4GFhlW/V3iD+LAXbS4XGHhdjYvtPnCKclKcvs9cVLtUMUkNncOzUQPg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-6.0.3.tgz", + "integrity": "sha512-RxBkiL3EVdKcRphs/G7E142fPITrXRHOUwpOc/pWio5EY5P17MNdn5YeIvIFcmtZJ55cWHGDzuKzRlPsB7ZRkg==", "dependencies": { - "@babel/runtime": "^7.21.0", - "tslib": "^2.5.0" + "@babel/runtime": "^7.22.3", + "tslib": "^2.5.2" }, "engines": { "node": ">=16.1.0" @@ -18115,13 +18115,13 @@ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" }, "node_modules/standardized-audio-context": { - "version": "25.3.45", - "resolved": "https://registry.npmjs.org/standardized-audio-context/-/standardized-audio-context-25.3.45.tgz", - "integrity": "sha512-d1UVvbz0mDmEqNehvoTKlpSevRJ3YiVZ6kdboeaWX+8cl94H1w8x7c5RNdg0nqxiE049LMeF4tFPuDl5Vm78Kg==", + "version": "25.3.50", + "resolved": "https://registry.npmjs.org/standardized-audio-context/-/standardized-audio-context-25.3.50.tgz", + "integrity": "sha512-FGuX3OBOQ7qj9pjX6Fx7SbrIWxYIx02i7iWr04DBo/Gxzm2pEpZpaZ411ew6PLet7hfgbKbp5tDII2jnftRetQ==", "dependencies": { - "@babel/runtime": "^7.21.0", - "automation-events": "^6.0.0", - "tslib": "^2.5.0" + "@babel/runtime": "^7.22.3", + "automation-events": "^6.0.3", + "tslib": "^2.5.2" } }, "node_modules/statuses": { @@ -18800,9 +18800,9 @@ } }, "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -21228,9 +21228,9 @@ } }, "@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "version": "7.22.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz", + "integrity": "sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==", "requires": { "regenerator-runtime": "^0.13.11" } @@ -24303,12 +24303,12 @@ "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, "automation-events": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-6.0.0.tgz", - "integrity": "sha512-mSOnckbtuJso8cczB+broNsfcuDIQ+J4GFhlW/V3iD+LAXbS4XGHhdjYvtPnCKclKcvs9cVLtUMUkNncOzUQPg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/automation-events/-/automation-events-6.0.3.tgz", + "integrity": "sha512-RxBkiL3EVdKcRphs/G7E142fPITrXRHOUwpOc/pWio5EY5P17MNdn5YeIvIFcmtZJ55cWHGDzuKzRlPsB7ZRkg==", "requires": { - "@babel/runtime": "^7.21.0", - "tslib": "^2.5.0" + "@babel/runtime": "^7.22.3", + "tslib": "^2.5.2" } }, "autoprefixer": { @@ -32928,13 +32928,13 @@ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" }, "standardized-audio-context": { - "version": "25.3.45", - "resolved": "https://registry.npmjs.org/standardized-audio-context/-/standardized-audio-context-25.3.45.tgz", - "integrity": "sha512-d1UVvbz0mDmEqNehvoTKlpSevRJ3YiVZ6kdboeaWX+8cl94H1w8x7c5RNdg0nqxiE049LMeF4tFPuDl5Vm78Kg==", + "version": "25.3.50", + "resolved": "https://registry.npmjs.org/standardized-audio-context/-/standardized-audio-context-25.3.50.tgz", + "integrity": "sha512-FGuX3OBOQ7qj9pjX6Fx7SbrIWxYIx02i7iWr04DBo/Gxzm2pEpZpaZ411ew6PLet7hfgbKbp5tDII2jnftRetQ==", "requires": { - "@babel/runtime": "^7.21.0", - "automation-events": "^6.0.0", - "tslib": "^2.5.0" + "@babel/runtime": "^7.22.3", + "automation-events": "^6.0.3", + "tslib": "^2.5.2" } }, "statuses": { @@ -33451,9 +33451,9 @@ } }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", + "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" }, "tsutils": { "version": "3.21.0", diff --git a/package.json b/package.json index b5e6c0486..85fd8bd13 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "react-virtualized-auto-sizer": "^1.0.15", "react-window": "^1.8.9", "redux": "^4.2.1", - "standardized-audio-context": "^25.3.45", + "standardized-audio-context": "^25.3.50", "typescript": "^4.9.5", "webvtt-parser": "^2.2.0" }, From 2add8cd47705ca5b3800e682beb940eb7f3e4393 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 12:37:36 +0000 Subject: [PATCH 15/47] Bump @mui/styles from 5.12.0 to 5.13.2 Bumps [@mui/styles](https://github.com/mui/material-ui/tree/HEAD/packages/mui-styles) from 5.12.0 to 5.13.2. - [Release notes](https://github.com/mui/material-ui/releases) - [Changelog](https://github.com/mui/material-ui/blob/master/CHANGELOG.md) - [Commits](https://github.com/mui/material-ui/commits/v5.13.2/packages/mui-styles) --- updated-dependencies: - dependency-name: "@mui/styles" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 28 ++++++++++++++-------------- package.json | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index e7bfc970a..4267d6917 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@fortawesome/react-fontawesome": "^0.2.0", "@iarna/toml": "^2.2.5", "@mui/material": "^5.13.3", - "@mui/styles": "^5.12.0", + "@mui/styles": "^5.13.2", "@mui/x-date-pickers": "^5.0.20", "@reduxjs/toolkit": "^1.9.5", "@testing-library/jest-dom": "^5.16.5", @@ -4083,15 +4083,15 @@ } }, "node_modules/@mui/styles": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.12.0.tgz", - "integrity": "sha512-X7obkgZTd9X+7igqwKKe8pEncyXYdUCNmyJfHruV9TSc6LThoI29OYs6hkN6n+7ueNli+YDKdZ+TCoC1GpJuOw==", + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.13.2.tgz", + "integrity": "sha512-gKNkVyk6azQ8wfCamh3yU/wLv1JscYrsQX9huQBwfwtE7kUTq2rgggdfJjRADjbcmT6IPX+oCHYjGfqqFgDIQQ==", "dependencies": { "@babel/runtime": "^7.21.0", - "@emotion/hash": "^0.9.0", - "@mui/private-theming": "^5.12.0", + "@emotion/hash": "^0.9.1", + "@mui/private-theming": "^5.13.1", "@mui/types": "^7.2.4", - "@mui/utils": "^5.12.0", + "@mui/utils": "^5.13.1", "clsx": "^1.2.1", "csstype": "^3.1.2", "hoist-non-react-statics": "^3.3.2", @@ -4113,7 +4113,7 @@ "url": "https://opencollective.com/mui" }, "peerDependencies": { - "@types/react": "^17.0.0", + "@types/react": "^17.0.0 || ^18.0.0", "react": "^17.0.0" }, "peerDependenciesMeta": { @@ -22841,15 +22841,15 @@ } }, "@mui/styles": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.12.0.tgz", - "integrity": "sha512-X7obkgZTd9X+7igqwKKe8pEncyXYdUCNmyJfHruV9TSc6LThoI29OYs6hkN6n+7ueNli+YDKdZ+TCoC1GpJuOw==", + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.13.2.tgz", + "integrity": "sha512-gKNkVyk6azQ8wfCamh3yU/wLv1JscYrsQX9huQBwfwtE7kUTq2rgggdfJjRADjbcmT6IPX+oCHYjGfqqFgDIQQ==", "requires": { "@babel/runtime": "^7.21.0", - "@emotion/hash": "^0.9.0", - "@mui/private-theming": "^5.12.0", + "@emotion/hash": "^0.9.1", + "@mui/private-theming": "^5.13.1", "@mui/types": "^7.2.4", - "@mui/utils": "^5.12.0", + "@mui/utils": "^5.13.1", "clsx": "^1.2.1", "csstype": "^3.1.2", "hoist-non-react-statics": "^3.3.2", diff --git a/package.json b/package.json index ea1784109..46ed5f580 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "@fortawesome/react-fontawesome": "^0.2.0", "@iarna/toml": "^2.2.5", "@mui/material": "^5.13.3", - "@mui/styles": "^5.12.0", + "@mui/styles": "^5.13.2", "@mui/x-date-pickers": "^5.0.20", "@reduxjs/toolkit": "^1.9.5", "@testing-library/jest-dom": "^5.16.5", From 8e4ddd5ba0841d3b5e63c158a501a39c465a61af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 12:37:45 +0000 Subject: [PATCH 16/47] Bump @emotion/styled from 11.10.8 to 11.11.0 Bumps [@emotion/styled](https://github.com/emotion-js/emotion) from 11.10.8 to 11.11.0. - [Release notes](https://github.com/emotion-js/emotion/releases) - [Changelog](https://github.com/emotion-js/emotion/blob/main/CHANGELOG.md) - [Commits](https://github.com/emotion-js/emotion/compare/@emotion/styled@11.10.8...@emotion/styled@11.11.0) --- updated-dependencies: - dependency-name: "@emotion/styled" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 34 +++++++++++++++++----------------- package.json | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index e7bfc970a..e2ade16d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@date-io/date-fns": "^2.16.0", "@emotion/babel-preset-css-prop": "^11.10.0", "@emotion/react": "^11.11.0", - "@emotion/styled": "^11.10.8", + "@emotion/styled": "^11.11.0", "@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/free-regular-svg-icons": "^6.4.0", "@fortawesome/free-solid-svg-icons": "^6.4.0", @@ -2306,16 +2306,16 @@ "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, "node_modules/@emotion/styled": { - "version": "11.10.8", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.8.tgz", - "integrity": "sha512-gow0lF4Uw/QEdX2REMhI8v6wLOabPKJ+4HKNF0xdJ2DJdznN6fxaXpQOx6sNkyBhSUL558Rmcu1Lq/MYlVo4vw==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.8", - "@emotion/is-prop-valid": "^1.2.0", - "@emotion/serialize": "^1.1.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0" + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" }, "peerDependencies": { "@emotion/react": "^11.0.0-rc.0", @@ -21536,16 +21536,16 @@ "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" }, "@emotion/styled": { - "version": "11.10.8", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.8.tgz", - "integrity": "sha512-gow0lF4Uw/QEdX2REMhI8v6wLOabPKJ+4HKNF0xdJ2DJdznN6fxaXpQOx6sNkyBhSUL558Rmcu1Lq/MYlVo4vw==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", "requires": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.10.8", - "@emotion/is-prop-valid": "^1.2.0", - "@emotion/serialize": "^1.1.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@emotion/utils": "^1.2.0" + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" } }, "@emotion/unitless": { diff --git a/package.json b/package.json index ea1784109..2a8a8eaff 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "@date-io/date-fns": "^2.16.0", "@emotion/babel-preset-css-prop": "^11.10.0", "@emotion/react": "^11.11.0", - "@emotion/styled": "^11.10.8", + "@emotion/styled": "^11.11.0", "@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/free-regular-svg-icons": "^6.4.0", "@fortawesome/free-solid-svg-icons": "^6.4.0", From d15fa2c188d8b4e311c84b20c69dbd7d60918764 Mon Sep 17 00:00:00 2001 From: Arnei Date: Fri, 9 Jun 2023 09:15:01 +0200 Subject: [PATCH 17/47] Add new label "type:code-quality" I wanted another label that is specifically for "enhancements" that are not user facing, but are purely about enhancing the code base. None of the existing labels seemed to fit the bill so I added one. --- .github/workflows/check-label.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check-label.yml b/.github/workflows/check-label.yml index 4ee7b9224..6dbe4bad2 100644 --- a/.github/workflows/check-label.yml +++ b/.github/workflows/check-label.yml @@ -17,7 +17,7 @@ jobs: uses: jesusvasquez333/verify-pr-label-action@v1.4.0 with: github-token: '${{ secrets.GITHUB_TOKEN }}' - valid-labels: 'type:tests, type:infrastructure, type:enhancement, type:feature, type:dependencies, type:documentation, type:accessibility, type:security, type:bug, type:usability, type:visual-clarity' + valid-labels: 'type:tests, type:infrastructure, type:enhancement, type:feature, type:dependencies, type:documentation, type:accessibility, type:security, type:bug, type:usability, type:visual-clarity, type:code-quality' invalid-labels: 'status:duplicate, status:conflicts, status:wontfix' pull-request-number: '${{ github.event.pull_request.number }}' disable-reviews: true From 430328bfac4aed1ed5c2a19abb048acf95ad4458 Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Mon, 12 Jun 2023 05:06:50 +0000 Subject: [PATCH 18/47] Automatically update translation keys --- src/i18n/locales/de-DE.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/i18n/locales/de-DE.json b/src/i18n/locales/de-DE.json index a15513a32..62b44fff6 100644 --- a/src/i18n/locales/de-DE.json +++ b/src/i18n/locales/de-DE.json @@ -120,7 +120,7 @@ }, "language": { "LANGUAGES-SLOVENIAN": "Slowenisch", - "LANGUAGES-PORTUGUESE": "Portuguese", + "LANGUAGES-PORTUGUESE": "Portugiesisch", "LANGUAGES-ROMANSH": "Rätoromanisch", "LANGUAGES-ARABIC": "Arabisch", "LANGUAGES-POLISH": "Polnisch", @@ -249,7 +249,7 @@ "groupCuttingView": "Schneiden", "groupCuttingViewScrubber": "Zeitleiste", "groupSubtitleList": "Untertitel", - "sequenceSeparator": "or", + "sequenceSeparator": "oder", "genericError": "Fehler beim Laden der Übersicht", "videoPlayButton": "Video abspielen/pausieren", "scrubberLeft": "Nach links", From a17041e779615c34375498f8490b343bfd069fa3 Mon Sep 17 00:00:00 2001 From: Arne Wilken Date: Tue, 13 Jun 2023 08:21:31 +0200 Subject: [PATCH 19/47] Display critical error if Opencast does not provide a video duration (#329) Display critical error if Opencast does not provide a video duration --- src/i18n/locales/en-US.json | 1 + src/main/Video.tsx | 11 ++++++++--- src/redux/errorSlice.ts | 12 ++++++------ src/redux/videoSlice.ts | 2 +- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 8cce33658..fd8754ccb 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -38,6 +38,7 @@ "time-aria": "Current time", "comError-text": "A problem occurred during communication with Opencast.", "loadError-text": "An error has occurred loading this video.", + "durationError-text": "Opencast failed to provide the video duration.", "title-tooltip": "Video Title", "presenter-tooltip": "Video Presenters" }, diff --git a/src/main/Video.tsx b/src/main/Video.tsx index 2bfc08a87..b9a8c32ed 100644 --- a/src/main/Video.tsx +++ b/src/main/Video.tsx @@ -46,6 +46,7 @@ export const Video: React.FC<{}> = () => { const dispatch = useDispatch() const videoURLStatus = useSelector((state: { videoState: { status: httpRequestState["status"] } }) => state.videoState.status); const error = useSelector((state: { videoState: { error: httpRequestState["error"] } }) => state.videoState.error) + const duration = useSelector(selectDuration) const theme = useSelector(selectTheme); const errorReason = useSelector((state: { videoState: { errorReason: httpRequestState["errorReason"] } }) => state.videoState.errorReason) @@ -55,12 +56,16 @@ export const Video: React.FC<{}> = () => { dispatch(fetchVideoInformation()) } else if (videoURLStatus === 'failed') { if (errorReason === 'workflowActive') { - dispatch(setError({error: true, errorTitle: t("error.workflowActive-errorTitle"), errorMessage: t("error.workflowActive-errorMessage"), errorDetails: undefined, errorIcon: faGears})) + dispatch(setError({error: true, errorTitle: t("error.workflowActive-errorTitle"), errorMessage: t("error.workflowActive-errorMessage"), errorIcon: faGears})) } else { - dispatch(setError({error: true, errorTitle: undefined, errorMessage: t("video.comError-text"), errorDetails: error, errorIcon: undefined})) + dispatch(setError({error: true, errorMessage: t("video.comError-text"), errorDetails: error})) + } + } else if (videoURLStatus === 'success') { + if (duration === null) { + dispatch(setError({error: true, errorMessage: t("video.durationError-text"), errorDetails: error})) } } - }, [videoURLStatus, dispatch, error, t, errorReason]) + }, [videoURLStatus, dispatch, error, t, errorReason, duration]) // Update based on current fetching status // let content diff --git a/src/redux/errorSlice.ts b/src/redux/errorSlice.ts index 753b2bf29..13d0eddb8 100644 --- a/src/redux/errorSlice.ts +++ b/src/redux/errorSlice.ts @@ -3,10 +3,10 @@ import { IconDefinition } from "@fortawesome/free-solid-svg-icons"; interface error { error: boolean, - errorTitle: string | undefined, + errorTitle?: string, errorMessage: string, - errorDetails: string | undefined, - errorIcon: IconDefinition | undefined, + errorDetails?: string, + errorIcon?: IconDefinition, } const initialState: error = { @@ -26,10 +26,10 @@ export const errorSlice = createSlice({ reducers: { setError: (state, action: PayloadAction<{ error: error["error"], - errorTitle: error["errorTitle"], + errorTitle?: error["errorTitle"], errorMessage: error["errorMessage"], - errorDetails: error["errorDetails"], - errorIcon: error["errorIcon"] + errorDetails?: error["errorDetails"], + errorIcon?: error["errorIcon"] }>) => { state.error = action.payload.error; state.errorTitle = action.payload.errorTitle; diff --git a/src/redux/videoSlice.ts b/src/redux/videoSlice.ts index 688ab4a6c..c79b67544 100644 --- a/src/redux/videoSlice.ts +++ b/src/redux/videoSlice.ts @@ -23,7 +23,7 @@ export interface video { videoURLs: string[], // Links to each video videoCount: number, // Total number of videos - duration: number, // Video duration in milliseconds + duration: number, // Video duration in milliseconds. Can be null due to Opencast internal error title: string, presenters: string[], workflows: Workflow[], From cf58558162600e36476fb28ccd840aee19597004 Mon Sep 17 00:00:00 2001 From: Arne Wilken Date: Tue, 13 Jun 2023 08:23:09 +0200 Subject: [PATCH 20/47] Keep video controls row from overflowing (#908) For resolutions with small widths, the elements of the video control row would visibly overflow, for example into the main menu. Overflow should now be "hidden" like e.g. in the cutting actions row. --- src/main/SubtitleSelect.tsx | 3 +-- src/main/Video.tsx | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/SubtitleSelect.tsx b/src/main/SubtitleSelect.tsx index 30e41c93c..9f35273e7 100644 --- a/src/main/SubtitleSelect.tsx +++ b/src/main/SubtitleSelect.tsx @@ -223,8 +223,7 @@ const SubtitleAddButton: React.FC<{languages: {subFlavor: string, title: string} label={t("subtitles.createSubtitleDropdown-label") ?? undefined} name="languages" data={selectData()} - > - + /> {/* "By default disabled elements like */} -
- A problem occurred during communication with Opencast.
+
+ A problem occurred during communication with Opencast.
Changes could not be saved to Opencast.

- {postError ? "Details: " + postError : "No error details are available."}
-
+ {postError ? "Details: " + postError : "No error details are available."}
+
- {/* For debugging the forms current values*/} - {/* + {/* For debugging the forms current values*/} + {/* {({ values }) => (
{JSON.stringify(values, null, 2)}
)}
*/} - - )} - /> + + )} + /> ); } diff --git a/src/main/SubtitleEditor.tsx b/src/main/SubtitleEditor.tsx index 436042709..63cab1d74 100644 --- a/src/main/SubtitleEditor.tsx +++ b/src/main/SubtitleEditor.tsx @@ -26,7 +26,7 @@ import { ThemedTooltip } from "./Tooltip"; /** * Displays an editor view for a selected subtitle file */ - const SubtitleEditor : React.FC<{}> = () => { +const SubtitleEditor : React.FC<{}> = () => { const { t } = useTranslation(); @@ -145,7 +145,7 @@ import { ThemedTooltip } from "./Tooltip"; /** * Takes you to a different page */ - export const BackButton : React.FC<{}> = () => { +export const BackButton : React.FC<{}> = () => { const { t } = useTranslation(); const theme = useSelector(selectTheme) diff --git a/src/main/SubtitleListEditor.tsx b/src/main/SubtitleListEditor.tsx index ab2c053e2..1f3fd7cc5 100644 --- a/src/main/SubtitleListEditor.tsx +++ b/src/main/SubtitleListEditor.tsx @@ -54,7 +54,7 @@ const SubtitleListEditor : React.FC<{}> = () => { if (subtitle) { itemsRef.current = itemsRef.current.slice(0, subtitle.length); } - }, [subtitle]); + }, [subtitle]); // Scroll to segment when triggered by reduxState useEffect(() => { @@ -554,14 +554,14 @@ const TimeInput : React.FC<{ onBlur={onBlur} value={myValue} /> - + ) } /** * Converts a number into a string with leading zeros */ - const fillIn = (val: number) => { +const fillIn = (val: number) => { return val < 10 ? `0${val}` : val } const fillInMilliseconds = (val: number) => { @@ -578,11 +578,11 @@ const fillInMilliseconds = (val: number) => { * Utility function for TimeInpit * Converts a number in milliseoncsd to a string of the format HH:MM:SS:MSS */ - function toHHMMSSMS (ms: number) { +function toHHMMSSMS (ms: number) { const milliseconds = (ms % 1000) - , seconds = Math.floor((ms/1000)%60) - , minutes = Math.floor((ms/(1000*60))%60) - , hours = Math.floor((ms/(1000*60*60))) + , seconds = Math.floor((ms/1000)%60) + , minutes = Math.floor((ms/(1000*60))%60) + , hours = Math.floor((ms/(1000*60*60))) const millisecondsString = fillInMilliseconds(milliseconds) const secondsString = fillIn(seconds) @@ -596,7 +596,7 @@ const fillInMilliseconds = (val: number) => { Utility function for TimeInpit * Converts a string of the format HH:MM:SS:MSS to a millisecond number */ - function getMillisecondsFromHHMMSSMS(value: string) { +function getMillisecondsFromHHMMSSMS(value: string) { const [str1, str2, str3, str4] = value.split(":"); const val1 = Number(str1); diff --git a/src/main/SubtitleSelect.tsx b/src/main/SubtitleSelect.tsx index a593aec1b..0a34781fd 100644 --- a/src/main/SubtitleSelect.tsx +++ b/src/main/SubtitleSelect.tsx @@ -204,7 +204,7 @@ const SubtitleAddButton: React.FC<{languages: {subFlavor: string, title: string} onKeyDown={(event: React.KeyboardEvent) => { if (event.key === " " || event.key === "Enter") { setIsPlusDisplay(false) }}} - > + >
- {/* TODO: Fix the following warning, caused by removing items from data: + {/* TODO: Fix the following warning, caused by removing items from data: MUI: You have provided an out-of-range value `undefined` for the select (name="languages") component. */} - - + {/* "By default disabled elements like - - + + + + +
)} diff --git a/src/main/SubtitleTimeline.tsx b/src/main/SubtitleTimeline.tsx index 2fcee850e..76e27d479 100644 --- a/src/main/SubtitleTimeline.tsx +++ b/src/main/SubtitleTimeline.tsx @@ -30,7 +30,7 @@ import { useTranslation } from "react-i18next"; * Copy-paste of the timeline in Video.tsx, so that we can make some small adjustments, * like adding in a list of subtitle segments */ - const SubtitleTimeline: React.FC<{}> = () => { +const SubtitleTimeline: React.FC<{}> = () => { const { t } = useTranslation(); const theme = useSelector(selectTheme) @@ -145,16 +145,16 @@ import { useTranslation } from "react-i18next"; - //
- // {/* */} - // - // {/* */} - //
+ //
+ // {/* */} + // + // {/* */} + //
); }; @@ -358,32 +358,32 @@ const TimelineSubtitleSegment: React.FC<{ }) return ( - + - -
- {props.cue.text} -
-
-
+
+ {props.cue.text} +
+ + ) }) diff --git a/src/main/Thumbnail.tsx b/src/main/Thumbnail.tsx index d5f9f9d69..19d7f9d46 100644 --- a/src/main/Thumbnail.tsx +++ b/src/main/Thumbnail.tsx @@ -65,14 +65,14 @@ const Thumbnail : React.FC<{}> = () => { var reader = new FileReader(); reader.onload = function(e) { - // the result image data - if (e.target && e.target.result) { - const uri = e.target.result.toString(); - dispatch(setThumbnail({id: track.id, uri: uri})) - dispatch(setHasChanges(true)) - } + // the result image data + if (e.target && e.target.result) { + const uri = e.target.result.toString(); + dispatch(setThumbnail({id: track.id, uri: uri})) + dispatch(setHasChanges(true)) } - reader.readAsDataURL(fileObj); + } + reader.readAsDataURL(fileObj); }; const discardThumbnail = (id: string) => { @@ -328,16 +328,16 @@ const ThumbnailButtons : React.FC<{ active={true} /> {/* Hidden input field for upload */} - { - inputRefs.current[index] = el; - }} - type="file" - accept="image/*" - onChange={(event) => uploadCallback(event, track)} - aria-hidden="true" - /> + { + inputRefs.current[index] = el; + }} + type="file" + accept="image/*" + onChange={(event) => uploadCallback(event, track)} + aria-hidden="true" + /> { setForOtherThumbnails(track.thumbnailUri) }} text={t('thumbnail.buttonUseForOtherThumbnails')} @@ -532,16 +532,16 @@ const ThumbnailButtonsSimple : React.FC<{ active={true} /> {/* Hidden input field for upload */} - { - inputRefs.current[index] = el; - }} - type="file" - accept="image/*" - onChange={(event) => uploadCallback(event, track)} - aria-hidden="true" - /> + { + inputRefs.current[index] = el; + }} + type="file" + accept="image/*" + onChange={(event) => uploadCallback(event, track)} + aria-hidden="true" + /> { discard(track.id) }} text={t('thumbnail.buttonDiscard')} diff --git a/src/main/Timeline.tsx b/src/main/Timeline.tsx index 72f21d698..ebf24935d 100644 --- a/src/main/Timeline.tsx +++ b/src/main/Timeline.tsx @@ -71,20 +71,20 @@ const Timeline: React.FC<{ } return ( -
setCurrentlyAtToClick(e)}> - -
- - +
setCurrentlyAtToClick(e)}> + +
+ + +
-
); }; @@ -258,21 +258,21 @@ export const Scrubber: React.FC<{ bounds="parent" position={controlledPosition} nodeRef={nodeRef} - > -
- -
- -
+ > +
+ +
+
+
); @@ -333,22 +333,22 @@ export const SegmentsList: React.FC<{
+ css={{ + background: bgColor(segment.deleted, styleByActiveSegment ? activeSegmentIndex === index : false), + borderRadius: '5px', + borderStyle: styleByActiveSegment ? (activeSegmentIndex === index ? 'dashed' : 'solid') : 'solid', + borderColor: 'white', + borderWidth: '1px', + boxSizing: 'border-box', + width: ((segment.end - segment.start) / duration) * 100 + '%', + height: timelineHeight - 20 + 'px', // CHECK IF 100% + zIndex: 1, + }}>
)) @@ -478,9 +478,9 @@ export const Waveforms: React.FC<{timelineHeight: number}> = ({timelineHeight}) } return ( -
- {renderImages()} -
+
+ {renderImages()} +
); } diff --git a/src/main/TrackSelection.tsx b/src/main/TrackSelection.tsx index 8fee75113..d62bd43fb 100644 --- a/src/main/TrackSelection.tsx +++ b/src/main/TrackSelection.tsx @@ -69,7 +69,7 @@ const TrackItem: React.FC<{track: Track, enabledCount: number}> = ({track, enabl const dispatch = useDispatch(); const header = track.flavor.type + ' ' + (track.video_stream.enabled ? '' - : `(${t('trackSelection.trackInactive', 'inactive')})`); + : `(${t('trackSelection.trackInactive', 'inactive')})`); const trackItemStyle = css({ display: 'flex', @@ -109,12 +109,12 @@ const TrackItem: React.FC<{track: Track, enabledCount: number}> = ({track, enabl t('trackSelection.deleteTrackText', 'Delete Track'), t('trackSelection.cannotDeleteTrackText', 'Cannot Delete Track'), t('trackSelection.restoreTrackText', 'Restore Track') - ][deleteStatus]; + ][deleteStatus]; const deleteTooltip = [ t('trackSelection.deleteTrackTooltip', 'Do not encode and publish this track.'), t('trackSelection.cannotDeleteTrackTooltip', 'Cannot remove this track from publication.'), t('trackSelection.restoreTrackTooltip', 'Encode and publish this track.') - ][deleteStatus]; + ][deleteStatus]; const deleteIcon = [faTrash, faTrash, faTrashRestore][deleteStatus]; const trackEnabledChange = () => { dispatch(setTrackEnabled({ @@ -173,12 +173,12 @@ const SelectButton : React.FC = ({handler, text, icon, to return (
+ tabIndex={ 0 } + ref={ref} + role="button" + aria-label={ tooltip } + onClick={ clickHandler } + onKeyDown={ keyHandler } >
{ text }
diff --git a/src/main/Video.tsx b/src/main/Video.tsx index 420bd222d..9707e561c 100644 --- a/src/main/Video.tsx +++ b/src/main/Video.tsx @@ -174,275 +174,275 @@ export const VideoPlayer = React.forwardRef( setAspectRatio: ActionCreatorWithPayload<{dataKey: number} & {width: number, height: number}, string>, }, forwardRefThing -) => { - const { - dataKey, - url, - isPrimary, - selectIsPlaying, - subtitleUrl, - selectCurrentlyAtInSeconds, - selectPreviewTriggered, - selectClickTriggered, - selectAspectRatio, - setIsPlaying, - setPreviewTriggered, - setClickTriggered, - setCurrentlyAt, - setAspectRatio, - } = props - - const { t } = useTranslation(); - - // Init redux variables - const dispatch = useDispatch(); - const isPlaying = useSelector(selectIsPlaying) - const currentlyAt = useSelector(selectCurrentlyAtInSeconds) - const duration = useSelector(selectDurationInSeconds) - const previewTriggered = useSelector(selectPreviewTriggered) - const clickTriggered = useSelector(selectClickTriggered) - const aspectRatio = useSelector(selectAspectRatio) - const theme = useSelector(selectTheme) - - // Init state variables - const ref = useRef(null); - const [ready, setReady] = useState(false); - const [errorState, setError] = useState(false); - const [isAspectRatioUpdated, setIsAspectRatioUpdated] = useState(false); - - // Callback for when the video is playing - const onProgressCallback = (state: { played: number, playedSeconds: number, loaded: number, loadedSeconds: number }) => { - if (isPrimary) { + ) => { + const { + dataKey, + url, + isPrimary, + selectIsPlaying, + subtitleUrl, + selectCurrentlyAtInSeconds, + selectPreviewTriggered, + selectClickTriggered, + selectAspectRatio, + setIsPlaying, + setPreviewTriggered, + setClickTriggered, + setCurrentlyAt, + setAspectRatio, + } = props + + const { t } = useTranslation(); + + // Init redux variables + const dispatch = useDispatch(); + const isPlaying = useSelector(selectIsPlaying) + const currentlyAt = useSelector(selectCurrentlyAtInSeconds) + const duration = useSelector(selectDurationInSeconds) + const previewTriggered = useSelector(selectPreviewTriggered) + const clickTriggered = useSelector(selectClickTriggered) + const aspectRatio = useSelector(selectAspectRatio) + const theme = useSelector(selectTheme) + + // Init state variables + const ref = useRef(null); + const [ready, setReady] = useState(false); + const [errorState, setError] = useState(false); + const [isAspectRatioUpdated, setIsAspectRatioUpdated] = useState(false); + + // Callback for when the video is playing + const onProgressCallback = (state: { played: number, playedSeconds: number, loaded: number, loadedSeconds: number }) => { + if (isPrimary) { // Only update redux if there was a substantial change - if (roundToDecimalPlace(currentlyAt, 3) !== roundToDecimalPlace(state.playedSeconds, 3) && + if (roundToDecimalPlace(currentlyAt, 3) !== roundToDecimalPlace(state.playedSeconds, 3) && state.playedSeconds !== 0 && // Avoid overwriting video restarts state.playedSeconds < duration) { - dispatch(setCurrentlyAt(state.playedSeconds * 1000)) + dispatch(setCurrentlyAt(state.playedSeconds * 1000)) + } } } - } - // Tries to get video dimensions from the HTML5 elements until they are not 0, - // then updates the store - async function updateAspectRatio() { - if (ref.current && ref.current.getInternalPlayer()) { - let w = (ref.current.getInternalPlayer() as HTMLVideoElement).videoWidth - let h = (ref.current.getInternalPlayer() as HTMLVideoElement).videoHeight - while (w === 0 || h === 0) { - await sleep(100); - w = (ref.current.getInternalPlayer() as HTMLVideoElement).videoWidth - h = (ref.current.getInternalPlayer() as HTMLVideoElement).videoHeight + // Tries to get video dimensions from the HTML5 elements until they are not 0, + // then updates the store + async function updateAspectRatio() { + if (ref.current && ref.current.getInternalPlayer()) { + let w = (ref.current.getInternalPlayer() as HTMLVideoElement).videoWidth + let h = (ref.current.getInternalPlayer() as HTMLVideoElement).videoHeight + while (w === 0 || h === 0) { + await sleep(100); + w = (ref.current.getInternalPlayer() as HTMLVideoElement).videoWidth + h = (ref.current.getInternalPlayer() as HTMLVideoElement).videoHeight + } + dispatch(setAspectRatio({dataKey, width: w, height: h})) + setIsAspectRatioUpdated(true) } - dispatch(setAspectRatio({dataKey, width: w, height: h})) - setIsAspectRatioUpdated(true) } - } - // Callback for checking whether the video element is ready - const onReadyCallback = () => { - setReady(true); - } + // Callback for checking whether the video element is ready + const onReadyCallback = () => { + setReady(true); + } - const onPlay = () => { + const onPlay = () => { // Restart the video from the beginning when at the end - if (isPrimary && currentlyAt >= duration) { - dispatch(setCurrentlyAt(0)) - // Flip-flop the "isPlaying" switch, or else the video won't start playing - dispatch(setIsPlaying(false)); - dispatch(setIsPlaying(true)); + if (isPrimary && currentlyAt >= duration) { + dispatch(setCurrentlyAt(0)) + // Flip-flop the "isPlaying" switch, or else the video won't start playing + dispatch(setIsPlaying(false)); + dispatch(setIsPlaying(true)); + } } - } - const onEndedCallback = () => { - if (isPrimary && currentlyAt !== 0) { - dispatch(setIsPlaying(false)); - dispatch(setCurrentlyAt(duration * 1000)); // It seems onEnded is called before the full duration is reached, so we set currentlyAt to the very end + const onEndedCallback = () => { + if (isPrimary && currentlyAt !== 0) { + dispatch(setIsPlaying(false)); + dispatch(setCurrentlyAt(duration * 1000)); // It seems onEnded is called before the full duration is reached, so we set currentlyAt to the very end + } } - } - const onErrorCallback = (e: any) => { - setError(true) - } + const onErrorCallback = (e: any) => { + setError(true) + } - useEffect(() => { + useEffect(() => { // Seek if the position in the video got changed externally - if (!isPlaying && ref.current && ready) { - ref.current.seekTo(currentlyAt, "seconds") - } - if (previewTriggered && ref.current && ready) { - ref.current.seekTo(currentlyAt, "seconds") - dispatch(setPreviewTriggered(false)) - } - if (clickTriggered && ref.current && ready) { - ref.current.seekTo(currentlyAt, "seconds") - dispatch(setClickTriggered(false)) - } - if (!isAspectRatioUpdated && ready) { // if (!isAspectRatioUpdated && ref.current && ready) { + if (!isPlaying && ref.current && ready) { + ref.current.seekTo(currentlyAt, "seconds") + } + if (previewTriggered && ref.current && ready) { + ref.current.seekTo(currentlyAt, "seconds") + dispatch(setPreviewTriggered(false)) + } + if (clickTriggered && ref.current && ready) { + ref.current.seekTo(currentlyAt, "seconds") + dispatch(setClickTriggered(false)) + } + if (!isAspectRatioUpdated && ready) { // if (!isAspectRatioUpdated && ref.current && ready) { // Update the store with video dimensions for rendering purposes - updateAspectRatio(); - } - }) - - // Callback specifically for the subtitle editor view - // When changing urls while the player is playing, don't reset to 0 - // (due to onProgressCallback resetting to 0), - // but keep the current currentlyAt - useEffect(() => { - if (ref.current && ready) { - ref.current.seekTo(currentlyAt, "seconds") - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [url]) + updateAspectRatio(); + } + }) + + // Callback specifically for the subtitle editor view + // When changing urls while the player is playing, don't reset to 0 + // (due to onProgressCallback resetting to 0), + // but keep the current currentlyAt + useEffect(() => { + if (ref.current && ready) { + ref.current.seekTo(currentlyAt, "seconds") + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [url]) - // Trigger a workaround for subtitles not being displayed in the video in Firefox - useEffect(() => { + // Trigger a workaround for subtitles not being displayed in the video in Firefox + useEffect(() => { // Only trigger workaround in Firefox, as it will cause issues in Chrome // @ts-ignore - if (typeof InstallTrigger !== 'undefined') { - reAddTrack() - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [subtitleUrl]) + if (typeof InstallTrigger !== 'undefined') { + reAddTrack() + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [subtitleUrl]) - const playerConfig: Config = { - file: { - attributes: { + const playerConfig: Config = { + file: { + attributes: { // Skip player when navigating page with keyboard - tabIndex: '-1', - crossOrigin: "anonymous" // allow thumbnail generation - }, - tracks: [ - {kind: 'subtitles', src: subtitleUrl, srcLang: 'en', default: true, label: 'I am irrelevant'} - ] + tabIndex: '-1', + crossOrigin: "anonymous" // allow thumbnail generation + }, + tracks: [ + {kind: 'subtitles', src: subtitleUrl, srcLang: 'en', default: true, label: 'I am irrelevant'} + ] + } } - } - /** + /** * Workaround for subtitles not appearing in Firefox (or only appearing on inital mount, then disappearing * when changed). Removes old tracks and readds them, because letting React to it does not seem * to work properly. * Fairly hacky, currently only works for a page with only one video * https://github.com/CookPete/react-player/issues/490 */ - function reAddTrack() { - const video = document.querySelector('video'); - - if (video) { - const oldTracks = video.querySelectorAll('track'); - oldTracks.forEach((oldTrack) => { - video.removeChild(oldTrack); - }); - } + function reAddTrack() { + const video = document.querySelector('video'); - if (playerConfig && playerConfig.file && playerConfig.file.tracks) { - // eslint-disable-next-line array-callback-return - playerConfig.file.tracks.map((t, trackIdx) => { - const track = document.createElement('track'); - track.kind = t.kind!; - track.label = t.label!; - track.srclang = t.srcLang!; - track.default = t.default!; - track.src = t.src!; - track.track.mode = 'showing' // Because the load callback may sometimes not execute properly - track.addEventListener('error', (e: Event) => { - console.warn(`Cannot load track ${t.src!}`) + if (video) { + const oldTracks = video.querySelectorAll('track'); + oldTracks.forEach((oldTrack) => { + video.removeChild(oldTrack); }); - track.addEventListener('load', (e: Event) => { - const textTrack = e.currentTarget as HTMLTrackElement; - if (textTrack) { - if (t.default === true) { - textTrack.track.mode = 'showing'; + } + + if (playerConfig && playerConfig.file && playerConfig.file.tracks) { + // eslint-disable-next-line array-callback-return + playerConfig.file.tracks.map((t, trackIdx) => { + const track = document.createElement('track'); + track.kind = t.kind!; + track.label = t.label!; + track.srclang = t.srcLang!; + track.default = t.default!; + track.src = t.src!; + track.track.mode = 'showing' // Because the load callback may sometimes not execute properly + track.addEventListener('error', (e: Event) => { + console.warn(`Cannot load track ${t.src!}`) + }); + track.addEventListener('load', (e: Event) => { + const textTrack = e.currentTarget as HTMLTrackElement; + if (textTrack) { + if (t.default === true) { + textTrack.track.mode = 'showing'; video!.textTracks[trackIdx].mode = 'showing'; // thanks Firefox - } else { - textTrack.track.mode = 'hidden'; + } else { + textTrack.track.mode = 'hidden'; video!.textTracks[trackIdx].mode = 'hidden'; // thanks Firefox + } } + }); + const video = document.querySelector('video'); + if (video) { + video.appendChild(track); } }); - const video = document.querySelector('video'); - if (video) { - video.appendChild(track); - } - }); + } } - } - // External functions - useImperativeHandle(forwardRefThing, () => ({ + // External functions + useImperativeHandle(forwardRefThing, () => ({ // Renders the current frame in the video element to a canvas // Returns the data url - captureVideo() { - const video = ref.current?.getInternalPlayer() as HTMLVideoElement - var canvas = document.createElement("canvas"); - canvas.width = video.videoWidth; - canvas.height = video.videoHeight; - var canvasContext = canvas.getContext("2d"); - if (canvasContext !== null) { - canvasContext.drawImage(video, 0, 0); - return canvas.toDataURL('image/png') + captureVideo() { + const video = ref.current?.getInternalPlayer() as HTMLVideoElement + var canvas = document.createElement("canvas"); + canvas.width = video.videoWidth; + canvas.height = video.videoHeight; + var canvasContext = canvas.getContext("2d"); + if (canvasContext !== null) { + canvasContext.drawImage(video, 0, 0); + return canvas.toDataURL('image/png') + } + } + })); + + const errorBoxStyle = css({ + ...(!errorState) && {display: "none"}, + borderColor: `${theme.error}`, + borderStyle: 'dashed', + fontWeight: 'bold', + padding: '10px', + }) + + const playerWrapper = css({ + position: 'relative', + width: '100%', + paddingTop: aspectRatio + '%', + }); + + const reactPlayerStyle = css({ + position: 'absolute', + top: 0, + left: 0, + background: ' black', + }) + + const render = () => { + if (!errorState) { + return( +
+ +
+ ); + } else { + return ( +
+ {t("video.loadError-text")} +
+ ); } } - })); - - const errorBoxStyle = css({ - ...(!errorState) && {display: "none"}, - borderColor: `${theme.error}`, - borderStyle: 'dashed', - fontWeight: 'bold', - padding: '10px', - }) - - const playerWrapper = css({ - position: 'relative', - width: '100%', - paddingTop: aspectRatio + '%', - }); - - const reactPlayerStyle = css({ - position: 'absolute', - top: 0, - left: 0, - background: ' black', - }) - - const render = () => { - if (!errorState) { - return( -
- -
- ); - } else { - return ( -
- {t("video.loadError-text")} -
- ); - } - } - return ( - <> - {render()} - - ); + return ( + <> + {render()} + + ); // return ( //
@@ -452,7 +452,7 @@ export const VideoPlayer = React.forwardRef( // //
// ); -}); + }); /** * Contains controls for manipulating multiple video players at once @@ -500,10 +500,10 @@ export const VideoControls: React.FC<{ setIsPlayPreview={setIsPlayPreview} />
- +
+ hotkeyName: (videoPlayerKeyMap[handlers.preview.name] as KeyMapOptions).sequence })} + >
- - { switchIsPlaying(event) }} - onKeyDown={(event: React.KeyboardEvent) => { if (event.key === "Enter") { // "Space" is handled by global key - switchIsPlaying(event) - }}} - /> + + { switchIsPlaying(event) }} + onKeyDown={(event: React.KeyboardEvent) => { if (event.key === "Enter") { // "Space" is handled by global key + switchIsPlaying(event) + }}} + />
); @@ -681,7 +681,7 @@ const VideoHeader: React.FC<{}> = () => { return (
- {metadataTitle ? metadataTitle : title} + {metadataTitle ? metadataTitle : title}
); } diff --git a/src/redux/metadataSlice.ts b/src/redux/metadataSlice.ts index b92f38647..d8c70f165 100644 --- a/src/redux/metadataSlice.ts +++ b/src/redux/metadataSlice.ts @@ -117,31 +117,31 @@ const metadataSlice = createSlice({ builder.addCase( fetchMetadata.pending, (state, action) => { state.status = 'loading' - }) + }) builder.addCase( fetchMetadata.fulfilled, (state, action) => { state.catalogs = action.payload state.status = 'success' - }) + }) builder.addCase( fetchMetadata.rejected, (state, action) => { state.status = 'failed' state.error = action.error.message - }) + }) builder.addCase( postMetadata.pending, (state, action) => { state.postStatus = 'loading' - }) + }) builder.addCase( postMetadata.fulfilled, (state, action) => { state.postStatus = 'success' - }) + }) builder.addCase( postMetadata.rejected, (state, action) => { state.postStatus = 'failed' state.postError = action.error.message - }) + }) } }) diff --git a/src/redux/themeSlice.ts b/src/redux/themeSlice.ts index 3e2664bb4..32395de08 100644 --- a/src/redux/themeSlice.ts +++ b/src/redux/themeSlice.ts @@ -96,7 +96,7 @@ const getTheme = () => { document.documentElement.setAttribute('data-theme', 'dark'); return darkMode } - return lightMode + return lightMode } export interface theme { diff --git a/src/redux/videoSlice.ts b/src/redux/videoSlice.ts index c79b67544..1fd459912 100644 --- a/src/redux/videoSlice.ts +++ b/src/redux/videoSlice.ts @@ -184,7 +184,7 @@ const videoSlice = createSlice({ builder.addCase( fetchVideoInformation.pending, (state, action) => { state.status = 'loading' - }) + }) builder.addCase( fetchVideoInformation.fulfilled, (state, action) => { state.status = 'success' @@ -219,12 +219,12 @@ const videoSlice = createSlice({ state.originalThumbnails = state.tracks.map((track: Track) => { return {id: track.id, uri: track.thumbnailUri} }) state.aspectRatios = new Array(state.videoCount) - }) + }) builder.addCase( fetchVideoInformation.rejected, (state, action) => { state.status = 'failed' state.error = action.error.message - }) + }) } }) @@ -281,35 +281,35 @@ const mergeSegments = (state: video, activeSegmentIndex: number, mergeSegmentInd const skipDeletedSegments = (state: video) => { if(state.isPlaying && state.segments[state.activeSegmentIndex].deleted && state.isPlayPreview) { - let endTime = state.segments[state.activeSegmentIndex].end + let endTime = state.segments[state.activeSegmentIndex].end - for (let index = state.activeSegmentIndex; index < state.segments.length; index++) { - endTime = state.segments[index].end + for (let index = state.activeSegmentIndex; index < state.segments.length; index++) { + endTime = state.segments[index].end - if (!state.segments[index].deleted) { - // Need to at +1 as start and end of neighbouring segments are identical - endTime = state.segments[index].start + 1 - break - } + if (!state.segments[index].deleted) { + // Need to at +1 as start and end of neighbouring segments are identical + endTime = state.segments[index].start + 1 + break + } - // If this is the last segment and it is deleted - if (index + 1 === state.segments.length) { - // Properly pause the player - state.isPlaying = false - // Jump to start of first non-deleted segment - for (let j = 0; j < state.segments.length; j++) { - if (!state.segments[j].deleted) { - endTime = state.segments[j].start - break - } + // If this is the last segment and it is deleted + if (index + 1 === state.segments.length) { + // Properly pause the player + state.isPlaying = false + // Jump to start of first non-deleted segment + for (let j = 0; j < state.segments.length; j++) { + if (!state.segments[j].deleted) { + endTime = state.segments[j].start + break } } } - - state.currentlyAt = endTime - state.previewTriggered = true - updateActiveSegment(state); } + + state.currentlyAt = endTime + state.previewTriggered = true + updateActiveSegment(state); + } } /** @@ -362,7 +362,7 @@ export const selectIsCurrentSegmentAlive = (state: { videoState: !state.videoState.segments[state.videoState.activeSegmentIndex].deleted export const selectSelectedWorkflowId = (state: { videoState: { selectedWorkflowId: video["selectedWorkflowId"]; }; }) => - state.videoState.selectedWorkflowId + state.videoState.selectedWorkflowId export const selectHasChanges = (state: { videoState: { hasChanges: video["hasChanges"]; }; }) => state.videoState.hasChanges export const selectWaveformImages = (state: { videoState: { waveformImages: video["waveformImages"]; }; }) => diff --git a/src/redux/workflowPostAndProcessSlice.ts b/src/redux/workflowPostAndProcessSlice.ts index bef4ae8ba..4b6793fcd 100644 --- a/src/redux/workflowPostAndProcessSlice.ts +++ b/src/redux/workflowPostAndProcessSlice.ts @@ -35,16 +35,16 @@ const workflowPostAndProcessSlice = createSlice({ builder.addCase( postVideoInformationWithWorkflow.pending, (state, action) => { state.status = 'loading' - }) + }) builder.addCase( postVideoInformationWithWorkflow.fulfilled, (state, action) => { state.status = 'success' - }) + }) builder.addCase( postVideoInformationWithWorkflow.rejected, (state, action) => { state.status = 'failed' state.error = action.error.message - }) + }) } }) diff --git a/src/redux/workflowPostSlice.ts b/src/redux/workflowPostSlice.ts index 06d178e93..a82f6bc21 100644 --- a/src/redux/workflowPostSlice.ts +++ b/src/redux/workflowPostSlice.ts @@ -36,16 +36,16 @@ const workflowPostSlice = createSlice({ builder.addCase( postVideoInformation.pending, (state, action) => { state.status = 'loading' - }) + }) builder.addCase( postVideoInformation.fulfilled, (state, action) => { state.status = 'success' - }) + }) builder.addCase( postVideoInformation.rejected, (state, action) => { state.status = 'failed' state.error = action.error.message - }) + }) } }) diff --git a/src/util/client.js b/src/util/client.js index 4da4d5eb9..d03cac0ae 100644 --- a/src/util/client.js +++ b/src/util/client.js @@ -50,9 +50,9 @@ export async function client(endpoint, { body, ...customConfig } = {}) { throw new Error(response.statusText) } catch (err) { return Promise.reject(response.status ? - "Status " + response.status + ": " + text : - err.message - ) + "Status " + response.status + ": " + text : + err.message + ) } } From 85548c1d3ae9695b747d3d37d6c792376ff21c00 Mon Sep 17 00:00:00 2001 From: Lukas Kalbertodt Date: Thu, 8 Jun 2023 18:34:38 +0200 Subject: [PATCH 25/47] Fix most `space-before-function-paren` lints Only the ones in `waveform.js` remaining --- src/main/SubtitleListEditor.tsx | 2 +- src/main/Thumbnail.tsx | 2 +- src/main/Timeline.tsx | 7 +++---- src/redux/videoSlice.ts | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/main/SubtitleListEditor.tsx b/src/main/SubtitleListEditor.tsx index 1f3fd7cc5..8f209afc9 100644 --- a/src/main/SubtitleListEditor.tsx +++ b/src/main/SubtitleListEditor.tsx @@ -578,7 +578,7 @@ const fillInMilliseconds = (val: number) => { * Utility function for TimeInpit * Converts a number in milliseoncsd to a string of the format HH:MM:SS:MSS */ -function toHHMMSSMS (ms: number) { +function toHHMMSSMS(ms: number) { const milliseconds = (ms % 1000) , seconds = Math.floor((ms/1000)%60) , minutes = Math.floor((ms/(1000*60))%60) diff --git a/src/main/Thumbnail.tsx b/src/main/Thumbnail.tsx index 19d7f9d46..26102e7db 100644 --- a/src/main/Thumbnail.tsx +++ b/src/main/Thumbnail.tsx @@ -64,7 +64,7 @@ const Thumbnail : React.FC<{}> = () => { } var reader = new FileReader(); - reader.onload = function(e) { + reader.onload = e => { // the result image data if (e.target && e.target.result) { const uri = e.target.result.toString(); diff --git a/src/main/Timeline.tsx b/src/main/Timeline.tsx index ebf24935d..604b7c952 100644 --- a/src/main/Timeline.tsx +++ b/src/main/Timeline.tsx @@ -423,21 +423,20 @@ export const Waveforms: React.FC<{timelineHeight: number}> = ({timelineHeight}) var xhr = new XMLHttpRequest() xhr.open("GET", videoURL) xhr.responseType = "blob" - xhr.onload = function() - { + xhr.onload = () => { blob = xhr.response var file = new File([blob], blob) // Start waveform worker with blob const waveformWorker : any = new Waveform({type: 'img', width: '2000', height: '230', samples: 100000, media: file}) - waveformWorker.onerror = function(error: string) { + waveformWorker.onerror = (error: string) => { setWaveformWorkerError(true) console.log("Waveform could not be generated:" + error) } // When done, save path to generated waveform img - waveformWorker.oncomplete = function(image: any, numSamples: any) { + waveformWorker.oncomplete = (image: any, numSamples: any) => { newImages.push(image) waveformsProcessed++ // If all images are generated, rerender diff --git a/src/redux/videoSlice.ts b/src/redux/videoSlice.ts index 1fd459912..67f677d3c 100644 --- a/src/redux/videoSlice.ts +++ b/src/redux/videoSlice.ts @@ -321,8 +321,8 @@ const skipDeletedSegments = (state: video) => { * TODO: Improve calculation to handle multiple rows of videos */ export const calculateTotalAspectRatio = (aspectRatios: video["aspectRatios"]) => { - let minHeight = Math.min.apply(Math, aspectRatios.map(function(o) { return o.height; })) - let minWidth = Math.min.apply(Math, aspectRatios.map(function(o) { return o.width; })) + let minHeight = Math.min.apply(Math, aspectRatios.map(o => o.height)) + let minWidth = Math.min.apply(Math, aspectRatios.map(o => o.width)) minWidth *= aspectRatios.length return Math.min((minHeight / minWidth) * 100, (9/32) * 100) } From 0b736ebb32c418b2bfae26f4b5053ef60fe0542c Mon Sep 17 00:00:00 2001 From: Lukas Kalbertodt Date: Thu, 8 Jun 2023 18:36:18 +0200 Subject: [PATCH 26/47] Fix `prefer-const` lints automatically via `eslint --fix` --- src/config.ts | 12 ++++++------ src/cssStyles.tsx | 4 ++-- src/main/Metadata.tsx | 12 ++++++------ src/main/Save.tsx | 2 +- src/main/SubtitleSelect.tsx | 12 ++++++------ src/main/SubtitleTimeline.tsx | 4 ++-- src/main/SubtitleVideoArea.tsx | 2 +- src/main/Timeline.tsx | 4 ++-- src/main/WorkflowConfiguration.tsx | 2 +- src/redux/__tests__/videoSlice.test.ts | 16 ++++++++-------- src/redux/subtitleSlice.ts | 2 +- src/redux/videoSlice.ts | 10 +++++----- src/redux/workflowPostSlice.ts | 2 +- src/util/utilityFunctions.ts | 12 ++++++------ 14 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/config.ts b/src/config.ts index ae0f2789a..c588500b7 100644 --- a/src/config.ts +++ b/src/config.ts @@ -114,7 +114,7 @@ export const init = async () => { // Get settings from URL query. var urlParams = new URLSearchParams(window.location.search); - let rawUrlSettings = {}; + const rawUrlSettings = {}; urlParams.forEach((value, key) => { // Create empty objects for full path (if the key contains '.') and set // the value at the end. @@ -255,7 +255,7 @@ const validate = (obj: Record | null, allowParse: boolean, src: str const validateObj = (schema: any, obj: Record | null, path: string) => { // We iterate through all keys of the given settings object, checking if // each key is valid and recursively validating the value of that key. - let out : {[k: string]: any} = {}; + const out : {[k: string]: any} = {}; for (const key in obj) { const newPath = path ? `${path}.${key}` : key; if (key in schema) { @@ -305,7 +305,7 @@ const types = { } }, 'map': (v: any, allowParse: any) => { - for (let key in v) { + for (const key in v) { if (typeof key !== 'string') { throw new Error("is not a string, but should be"); } @@ -315,15 +315,15 @@ const types = { } }, 'objectsWithinObjects': (v: any, allowParse: any) => { - for (let catalogName in v) { + for (const catalogName in v) { if (typeof catalogName !== 'string') { throw new Error("is not a string, but should be"); } - for (let fieldName in v[catalogName]) { + for (const fieldName in v[catalogName]) { if (typeof fieldName !== 'string') { throw new Error("is not a string, but should be"); } - for (let attributeName in v[catalogName][fieldName]) { + for (const attributeName in v[catalogName][fieldName]) { if (typeof attributeName !== 'string') { throw new Error("is not a string, but should be"); } diff --git a/src/cssStyles.tsx b/src/cssStyles.tsx index b85c60f38..84d24eb82 100644 --- a/src/cssStyles.tsx +++ b/src/cssStyles.tsx @@ -42,8 +42,8 @@ export const globalStyle = (theme: Theme) => css({ */ export const flexGapReplacementStyle = (flexGapValue: number, flexDirectionIsRow: boolean) => { - let half = flexGapValue / 2 - let quarter = flexGapValue / 4 + const half = flexGapValue / 2 + const quarter = flexGapValue / 4 return ( { diff --git a/src/main/Metadata.tsx b/src/main/Metadata.tsx index d243a5867..e7540b9d0 100644 --- a/src/main/Metadata.tsx +++ b/src/main/Metadata.tsx @@ -63,12 +63,12 @@ const Metadata: React.FC<{}> = () => { if (getStatus === 'success') { for(let catalogIndex = 0; catalogIndex < catalogs.length; catalogIndex++) { if (settings.metadata.configureFields) { - let configureFields = settings.metadata.configureFields - let catalog = catalogs[catalogIndex] + const configureFields = settings.metadata.configureFields + const catalog = catalogs[catalogIndex] if (catalog.title in configureFields) { if (Object.keys(configureFields[catalog.title]).length > 0) { - let configureFieldsCatalog = configureFields[catalog.title] + const configureFieldsCatalog = configureFields[catalog.title] for (let fieldIndex = 0; fieldIndex < catalog.fields.length; fieldIndex++) { if (catalog.fields[fieldIndex].id in configureFieldsCatalog) { @@ -253,7 +253,7 @@ const Metadata: React.FC<{}> = () => { let searchValue : any = field.value if (Array.isArray(searchValue)) { - let result: any[] = []; + const result: any[] = []; helperHandleArrays(library, field.value, result) searchValue = result } else { @@ -283,7 +283,7 @@ const Metadata: React.FC<{}> = () => { * @param value */ const duration = (value: any) => { - let re: RegExp = /^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]$/ + const re: RegExp = /^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]$/ return re.test(value) ? undefined : t("metadata.validation.duration-format") } @@ -430,7 +430,7 @@ const Metadata: React.FC<{}> = () => { const onSubmit = (values: { [x: string]: { [x: string]: any; }; }) => { // For each submitted value, get the catalog it belongs to Object.keys(values).forEach((formCatalogName: string) => { - let catalogIndex = parseInt(formCatalogName.replace("catalog", "")) + const catalogIndex = parseInt(formCatalogName.replace("catalog", "")) // For each field in the submitted values Object.keys(values[formCatalogName]).forEach((formFieldName: any) => { diff --git a/src/main/Save.tsx b/src/main/Save.tsx index 75513c9d8..61f50d940 100644 --- a/src/main/Save.tsx +++ b/src/main/Save.tsx @@ -142,7 +142,7 @@ export const SaveButton: React.FC<{}> = () => { const subtitlesForPosting = [] for (const identifier in subtitles) { - let flavor: Flavor = {type: identifier.split("/")[0], subtype: identifier.split("/")[1]} + const flavor: Flavor = {type: identifier.split("/")[0], subtype: identifier.split("/")[1]} subtitlesForPosting.push({flavor: flavor, subtitle: serializeSubtitle(subtitles[identifier])}) } diff --git a/src/main/SubtitleSelect.tsx b/src/main/SubtitleSelect.tsx index 0a34781fd..f8a54ad3f 100644 --- a/src/main/SubtitleSelect.tsx +++ b/src/main/SubtitleSelect.tsx @@ -30,14 +30,14 @@ const SubtitleSelect : React.FC<{}> = () => { // Update the displayFlavors and canBeAddedFlavors useEffect(() => { - let languages = { ...settings.subtitles.languages }; + const languages = { ...settings.subtitles.languages }; // Get flavors of already created tracks or existing subtitle tracks - let subtitleFlavors = captionTracks + const subtitleFlavors = captionTracks .map(track => track.flavor.type + '/' + track.flavor.subtype) .filter(flavor => !subtitles[flavor]) .concat(Object.keys(subtitles)); - let tempDisplayFlavors = [] + const tempDisplayFlavors = [] for (const flavor of subtitleFlavors) { const lang = flavor.replace(/^[^+]*/, '') || t('subtitles.generic'); tempDisplayFlavors.push({ @@ -48,7 +48,7 @@ const SubtitleSelect : React.FC<{}> = () => { tempDisplayFlavors.sort((f1, f2) => f1.title.localeCompare(f2.title)); // List of unused languages - let tempCanBeAddedFlavors = Object.keys(languages) + const tempCanBeAddedFlavors = Object.keys(languages) .map(flavor => ({subFlavor: flavor, title: languages[flavor]})) .sort((lang1, lang2) => lang1.title.localeCompare(lang2.title)); @@ -63,12 +63,12 @@ const SubtitleSelect : React.FC<{}> = () => { }) const renderButtons = () => { - let buttons : JSX.Element[] = [] + const buttons : JSX.Element[] = [] if (settings.subtitles.languages === undefined) { return buttons } - for (let subFlavor of displayFlavors) { + for (const subFlavor of displayFlavors) { const icon = ((settings.subtitles || {}).icons || {})[subFlavor.subFlavor]; buttons.push( = () => { }); const setCurrentlyAtToClick = (e: React.MouseEvent) => { - let rect = e.currentTarget.getBoundingClientRect() - let offsetX = e.clientX - rect.left + const rect = e.currentTarget.getBoundingClientRect() + const offsetX = e.clientX - rect.left dispatch(setClickTriggered(true)) dispatch(setCurrentlyAt((offsetX / widthMiniTimeline) * (duration))) } diff --git a/src/main/SubtitleVideoArea.tsx b/src/main/SubtitleVideoArea.tsx index 8b10d0eb4..dac1adcd0 100644 --- a/src/main/SubtitleVideoArea.tsx +++ b/src/main/SubtitleVideoArea.tsx @@ -38,7 +38,7 @@ import { selectFieldStyle } from "../cssStyles"; const SubtitleVideoArea : React.FC<{}> = () => { const tracks = useSelector(selectVideos) - let subtitle = useSelector(selectSelectedSubtitleByFlavor) + const subtitle = useSelector(selectSelectedSubtitleByFlavor) const [selectedFlavor, setSelectedFlavor] = useState() const [subtitleUrl, setSubtitleUrl] = useState("") diff --git a/src/main/Timeline.tsx b/src/main/Timeline.tsx index 604b7c952..e7d21d8a6 100644 --- a/src/main/Timeline.tsx +++ b/src/main/Timeline.tsx @@ -64,8 +64,8 @@ const Timeline: React.FC<{ // Update the current time based on the position clicked on the timeline const setCurrentlyAtToClick = (e: React.MouseEvent) => { - let rect = e.currentTarget.getBoundingClientRect() - let offsetX = e.clientX - rect.left + const rect = e.currentTarget.getBoundingClientRect() + const offsetX = e.clientX - rect.left dispatch(setClickTriggered(true)) dispatch(setCurrentlyAt((offsetX / width) * (duration))) } diff --git a/src/main/WorkflowConfiguration.tsx b/src/main/WorkflowConfiguration.tsx index 588b106eb..1dfa17690 100644 --- a/src/main/WorkflowConfiguration.tsx +++ b/src/main/WorkflowConfiguration.tsx @@ -96,7 +96,7 @@ export const SaveAndProcessButton: React.FC<{text: string}> = ({text}) => { const subtitlesForPosting = [] for (const identifier in subtitles) { - let flavor: Flavor = {type: identifier.split("/")[0], subtype: identifier.split("/")[1]} + const flavor: Flavor = {type: identifier.split("/")[0], subtype: identifier.split("/")[1]} subtitlesForPosting.push({flavor: flavor, subtitle: serializeSubtitle(subtitles[identifier])}) } diff --git a/src/redux/__tests__/videoSlice.test.ts b/src/redux/__tests__/videoSlice.test.ts index bee3411c1..7e65e6214 100644 --- a/src/redux/__tests__/videoSlice.test.ts +++ b/src/redux/__tests__/videoSlice.test.ts @@ -145,7 +145,7 @@ describe('Video reducer', () => { initState.segments = [ {id: '0', start: 0, end: 10, deleted: false}, ] - let resultSegments = [ + const resultSegments = [ {start: 0, end: 5, deleted: false}, {start: 5, end: 10, deleted: false} ] @@ -165,7 +165,7 @@ describe('Video reducer', () => { initState.segments = [ {id: '0', start: 0, end: 10, deleted: false}, ] - let resultSegments = [ + const resultSegments = [ {start: 0, end: 10, deleted: false}, ] @@ -184,7 +184,7 @@ describe('Video reducer', () => { initState.segments = [ {id: '0', start: 0, end: 10, deleted: false}, ] - let resultSegments = [ + const resultSegments = [ {start: 0, end: 10, deleted: false}, ] @@ -204,7 +204,7 @@ describe('Video reducer', () => { {id: '0', start: 0, end: 5, deleted: false}, {id: '0', start: 5, end: 10, deleted: false} ] - let resultSegments = [ + const resultSegments = [ {start: 0, end: 5, deleted: false}, {start: 5, end: 10, deleted: false} ] @@ -218,7 +218,7 @@ describe('Video reducer', () => { }) it('should mark a segment as deleted if alive', () => { - let resultSegments = [ + const resultSegments = [ {deleted: true}, ] @@ -235,7 +235,7 @@ describe('Video reducer', () => { {id: '0', start: 0, end: 5, deleted: false}, {id: '0', start: 5, end: 10, deleted: false} ] - let resultSegments = [ + const resultSegments = [ {start: 0, end: 10, deleted: false}, ] @@ -253,7 +253,7 @@ describe('Video reducer', () => { {id: '0', start: 0, end: 5, deleted: false}, {id: '0', start: 5, end: 10, deleted: false} ] - let resultSegments = [ + const resultSegments = [ {id: '0', start: 0, end: 5, deleted: false}, {id: '0', start: 5, end: 10, deleted: false} ] @@ -271,7 +271,7 @@ describe('Video reducer', () => { {id: '0', start: 0, end: 5, deleted: true}, {id: '0', start: 5, end: 10, deleted: false} ] - let resultSegments = [ + const resultSegments = [ {start: 0, end: 10, deleted: true}, ] diff --git a/src/redux/subtitleSlice.ts b/src/redux/subtitleSlice.ts index 5ee1a11fd..f0aaca441 100644 --- a/src/redux/subtitleSlice.ts +++ b/src/redux/subtitleSlice.ts @@ -83,7 +83,7 @@ export const subtitleSlice = createSlice({ return } - let cue = state.subtitles[action.payload.identifier][action.payload.cueIndex] + const cue = state.subtitles[action.payload.identifier][action.payload.cueIndex] cue.id = action.payload.newCue.id cue.idInternal = action.payload.newCue.idInternal cue.text = action.payload.newCue.text diff --git a/src/redux/videoSlice.ts b/src/redux/videoSlice.ts index 67f677d3c..f7ed8b875 100644 --- a/src/redux/videoSlice.ts +++ b/src/redux/videoSlice.ts @@ -91,7 +91,7 @@ const videoSlice = createSlice({ initialState, reducers: { setTrackEnabled: (state, action) => { - for (let track of state.tracks) { + for (const track of state.tracks) { if (track.id === action.payload.id) { track.audio_stream.enabled = action.payload.enabled; track.video_stream.enabled = action.payload.enabled; @@ -149,11 +149,11 @@ const videoSlice = createSlice({ } // Make two (new) segments out of it - let segmentA : Segment = {id: nanoid(), + const segmentA : Segment = {id: nanoid(), start: state.segments[state.activeSegmentIndex].start, end: state.currentlyAt, deleted: state.segments[state.activeSegmentIndex].deleted} - let segmentB : Segment = {id: nanoid(), + const segmentB : Segment = {id: nanoid(), start: state.currentlyAt, end: state.segments[state.activeSegmentIndex].end, deleted: state.segments[state.activeSegmentIndex].deleted} @@ -245,7 +245,7 @@ const updateActiveSegment = (state: video) => { * Helper Function for testing with current/old editor API */ export const parseSegments = (segments: Segment[], duration: number) => { - let newSegments : Segment[] = [] + const newSegments : Segment[] = [] if (segments.length === 0) { newSegments.push({id: nanoid(), start: 0, end: duration, deleted: false}) @@ -321,7 +321,7 @@ const skipDeletedSegments = (state: video) => { * TODO: Improve calculation to handle multiple rows of videos */ export const calculateTotalAspectRatio = (aspectRatios: video["aspectRatios"]) => { - let minHeight = Math.min.apply(Math, aspectRatios.map(o => o.height)) + const minHeight = Math.min.apply(Math, aspectRatios.map(o => o.height)) let minWidth = Math.min.apply(Math, aspectRatios.map(o => o.width)) minWidth *= aspectRatios.length return Math.min((minHeight / minWidth) * 100, (9/32) * 100) diff --git a/src/redux/workflowPostSlice.ts b/src/redux/workflowPostSlice.ts index a82f6bc21..ea8285dd6 100644 --- a/src/redux/workflowPostSlice.ts +++ b/src/redux/workflowPostSlice.ts @@ -59,7 +59,7 @@ interface segmentAPI { // Convert a segment from how it is stored in redux into // a segment that can be send to Opencast export const convertSegments = (segments: Segment[]) => { - let newSegments: segmentAPI[] = [] + const newSegments: segmentAPI[] = [] segments.forEach(segment => { newSegments.push({ diff --git a/src/util/utilityFunctions.ts b/src/util/utilityFunctions.ts index ef003e13c..e49901938 100644 --- a/src/util/utilityFunctions.ts +++ b/src/util/utilityFunctions.ts @@ -3,7 +3,7 @@ import { WebVTTParser, WebVTTSerializer } from 'webvtt-parser'; import { ExtendedSubtitleCue, SubtitleCue } from '../types'; export const roundToDecimalPlace = (num: number, decimalPlace: number) => { - let decimalFactor = Math.pow(10, decimalPlace) + const decimalFactor = Math.pow(10, decimalPlace) return Math.round((num + Number.EPSILON) * decimalFactor) / decimalFactor } @@ -14,11 +14,11 @@ export const sleep = (ms: number) => new Promise((resolve, reject) => setTimeout // Get an understandable time string for ARIA export const convertMsToReadableString = (ms: number): string => { - let hours = new Date((ms ? ms : 0)).toISOString().substr(11, 2) - let minutes = new Date((ms ? ms : 0)).toISOString().substr(14, 2) - let seconds = new Date((ms ? ms : 0)).toISOString().substr(17, 2) + const hours = new Date((ms ? ms : 0)).toISOString().substr(11, 2) + const minutes = new Date((ms ? ms : 0)).toISOString().substr(14, 2) + const seconds = new Date((ms ? ms : 0)).toISOString().substr(17, 2) - let result = [] + const result = [] if (parseInt(hours) > 0) { result.push(hours + " hours, ")} if (parseInt(minutes) > 0 || parseInt(hours) > 0) { result.push(minutes + " minutes, ")} result.push(seconds + " seconds") @@ -144,7 +144,7 @@ export function parseSubtitle(subtitle: String) { // Attach a unique id to each segment/cue // This is used by React to keep track of cues between changes (e.g. addition, deletion) let index = 0 - for (let cue of tree.cues) { + for (const cue of tree.cues) { if (!cue.id) { cue.idInternal = nanoid() tree.cues[index] = cue From d0a3f415ce053ee9c75fcc12f46e27a38defdc70 Mon Sep 17 00:00:00 2001 From: Lukas Kalbertodt Date: Thu, 8 Jun 2023 18:38:04 +0200 Subject: [PATCH 27/47] Use `string` instead of `String` as TS type Fixes `@typescript-eslint/ban-types` lints --- src/main/ThemeSwitcher.tsx | 2 +- src/redux/themeSlice.ts | 76 +++++++++++++++++++------------------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/src/main/ThemeSwitcher.tsx b/src/main/ThemeSwitcher.tsx index 6f2eda94f..205cd0075 100644 --- a/src/main/ThemeSwitcher.tsx +++ b/src/main/ThemeSwitcher.tsx @@ -29,7 +29,7 @@ const ThemeSwitcher: React.FC<{}> = () => { isDarkPrefered.addEventListener('change', systemPreferenceHasChanged) - const switchTheme = (themeState: String) => { + const switchTheme = (themeState: string) => { if(themeState === 'system'){ dispatch(setState('system')) } diff --git a/src/redux/themeSlice.ts b/src/redux/themeSlice.ts index 32395de08..dffef2a80 100644 --- a/src/redux/themeSlice.ts +++ b/src/redux/themeSlice.ts @@ -2,44 +2,44 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit"; import { darkMode, lightMode, highContrastDarkMode, highContrastLightMode } from "../themes"; export interface Theme { - background: String - menu_background: String - text: String - error: String - element_bg: String - multiValue: String - focused: String - focus_text: String - selected: String - disabled: String - menuBorder: String - boxShadow: String - singleKey_bg: String - singleKey_border: String - invert_wave: String - inverted_text: String - tooltip: String - tooltip_text: String - element_outline: String - selected_text: String - dropdown_border: String - menuButton_outline: String - button_outline: String - button_color: String - indicator_color: String - icon_color: String - waveform_filter: String - waveform_bg: String - scrubber: String - subtitle_segment_bg: String - subtitle_segment_border: String - subtitle_segment_text: String - clock_bg: String - clock_border: String - clock_hands: String - clock_focus: String - digit_selected: String - text_shadow: String + background: string + menu_background: string + text: string + error: string + element_bg: string + multiValue: string + focused: string + focus_text: string + selected: string + disabled: string + menuBorder: string + boxShadow: string + singleKey_bg: string + singleKey_border: string + invert_wave: string + inverted_text: string + tooltip: string + tooltip_text: string + element_outline: string + selected_text: string + dropdown_border: string + menuButton_outline: string + button_outline: string + button_color: string + indicator_color: string + icon_color: string + waveform_filter: string + waveform_bg: string + scrubber: string + subtitle_segment_bg: string + subtitle_segment_border: string + subtitle_segment_text: string + clock_bg: string + clock_border: string + clock_hands: string + clock_focus: string + digit_selected: string + text_shadow: string }; const getValue = () => { From 850a317472bf45cae1a03ac2eddaad86cde8b222 Mon Sep 17 00:00:00 2001 From: Lukas Kalbertodt Date: Thu, 8 Jun 2023 18:42:38 +0200 Subject: [PATCH 28/47] Remove usages of `{}` as a type Fixes `@typescript-eslint/ban-types` lints --- src/main/Body.tsx | 2 +- src/main/CuttingActions.tsx | 2 +- src/main/Discard.tsx | 4 ++-- src/main/Error.tsx | 2 +- src/main/Finish.tsx | 2 +- src/main/FinishMenu.tsx | 2 +- src/main/KeyboardControls.tsx | 2 +- src/main/Landing.tsx | 2 +- src/main/MainContent.tsx | 4 ++-- src/main/MainMenu.tsx | 2 +- src/main/Metadata.tsx | 2 +- src/main/Save.tsx | 4 ++-- src/main/Subtitle.tsx | 2 +- src/main/SubtitleEditor.tsx | 4 ++-- src/main/SubtitleListEditor.tsx | 2 +- src/main/SubtitleSelect.tsx | 2 +- src/main/SubtitleTimeline.tsx | 6 +++--- src/main/SubtitleVideoArea.tsx | 2 +- src/main/TheEnd.tsx | 4 ++-- src/main/ThemeSwitcher.tsx | 2 +- src/main/Thumbnail.tsx | 2 +- src/main/TrackSelection.tsx | 4 ++-- src/main/Video.tsx | 4 ++-- src/main/WorkflowConfiguration.tsx | 2 +- src/main/WorkflowSelection.tsx | 2 +- 25 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/main/Body.tsx b/src/main/Body.tsx index b4eb2ab65..5daf030d1 100644 --- a/src/main/Body.tsx +++ b/src/main/Body.tsx @@ -14,7 +14,7 @@ import { selectIsError } from "../redux/errorSlice"; import { settings } from '../config'; -const Body: React.FC<{}> = () => { +const Body: React.FC = () => { const isEnd = useSelector(selectIsEnd) const isError = useSelector(selectIsError) diff --git a/src/main/CuttingActions.tsx b/src/main/CuttingActions.tsx index 7f03fbd74..ec02f3116 100644 --- a/src/main/CuttingActions.tsx +++ b/src/main/CuttingActions.tsx @@ -29,7 +29,7 @@ import { ThemedTooltip } from "./Tooltip"; /** * Defines the different actions a user can perform while in cutting mode */ -const CuttingActions: React.FC<{}> = () => { +const CuttingActions: React.FC = () => { const { t } = useTranslation(); diff --git a/src/main/Discard.tsx b/src/main/Discard.tsx index d33ca4d58..7c518a9fe 100644 --- a/src/main/Discard.tsx +++ b/src/main/Discard.tsx @@ -21,7 +21,7 @@ import { selectTheme } from "../redux/themeSlice"; * Shown if the user wishes to abort. * Informs the user about aborting and displays abort button. */ -const Discard : React.FC<{}> = () => { +const Discard : React.FC = () => { const { t } = useTranslation(); @@ -51,7 +51,7 @@ const Discard : React.FC<{}> = () => { /** * Button that sets the app into an aborted state */ -const DiscardButton : React.FC<{}> = () => { +const DiscardButton : React.FC = () => { const { t } = useTranslation(); diff --git a/src/main/Error.tsx b/src/main/Error.tsx index 29a1b84cf..246f11d0d 100644 --- a/src/main/Error.tsx +++ b/src/main/Error.tsx @@ -15,7 +15,7 @@ import { useTranslation } from 'react-i18next'; * This page is to be displayed when the application has run into a critical error * from which it cannot recover. */ -const Error : React.FC<{}> = () => { +const Error : React.FC = () => { const { t } = useTranslation(); diff --git a/src/main/Finish.tsx b/src/main/Finish.tsx index c5b477fda..a75c03cd2 100644 --- a/src/main/Finish.tsx +++ b/src/main/Finish.tsx @@ -21,7 +21,7 @@ import { selectTheme } from "../redux/themeSlice"; /** * Displays a menu for selecting what should be done with the current changes */ -const Finish : React.FC<{}> = () => { +const Finish : React.FC = () => { const pageNumber = useSelector(selectPageNumber) diff --git a/src/main/FinishMenu.tsx b/src/main/FinishMenu.tsx index 51d2c19bd..daed094c6 100644 --- a/src/main/FinishMenu.tsx +++ b/src/main/FinishMenu.tsx @@ -17,7 +17,7 @@ import { selectTheme } from "../redux/themeSlice"; /** * Displays a menu for selecting what should be done with the current changes */ -const FinishMenu : React.FC<{}> = () => { +const FinishMenu : React.FC = () => { const finishMenuStyle = css({ display: 'flex', diff --git a/src/main/KeyboardControls.tsx b/src/main/KeyboardControls.tsx index 33164a0d2..dcc1ea546 100644 --- a/src/main/KeyboardControls.tsx +++ b/src/main/KeyboardControls.tsx @@ -101,7 +101,7 @@ const Entry: React.FC<{params: KeyMapDisplayOptions}> = ({params}) => { } -const KeyboardControls: React.FC<{}> = () => { +const KeyboardControls: React.FC = () => { const { t } = useTranslation(); diff --git a/src/main/Landing.tsx b/src/main/Landing.tsx index 971c83c4e..03fbef58b 100644 --- a/src/main/Landing.tsx +++ b/src/main/Landing.tsx @@ -8,7 +8,7 @@ import { useTranslation } from 'react-i18next'; * This page is to be displayed when the application has run into a critical error * from which it cannot recover. */ -const Landing : React.FC<{}> = () => { +const Landing : React.FC = () => { const { t } = useTranslation(); diff --git a/src/main/MainContent.tsx b/src/main/MainContent.tsx index 2956dbf87..ad90a0ef2 100644 --- a/src/main/MainContent.tsx +++ b/src/main/MainContent.tsx @@ -36,7 +36,7 @@ import Thumbnail from "./Thumbnail"; * A container for the main functionality * Shows different components depending on the state off the app */ -const MainContent: React.FC<{}> = () => { +const MainContent: React.FC = () => { const mainMenuState = useSelector(selectMainMenuState) const videoChanged = useSelector(videoSelectHasChanges) @@ -157,7 +157,7 @@ const MainContent: React.FC<{}> = () => { ); }; -const CuttingTimeline : React.FC<{}> = () => { +const CuttingTimeline : React.FC = () => { return ( = () => { +const MainMenu: React.FC = () => { const { t } = useTranslation(); const theme = useSelector(selectTheme); diff --git a/src/main/Metadata.tsx b/src/main/Metadata.tsx index e7540b9d0..d5750871f 100644 --- a/src/main/Metadata.tsx +++ b/src/main/Metadata.tsx @@ -38,7 +38,7 @@ import { TFuncKey } from "i18next"; * If something doesn't work, main places of interest are the submit function * and the initialValues function */ -const Metadata: React.FC<{}> = () => { +const Metadata: React.FC = () => { const { t, i18n } = useTranslation(); diff --git a/src/main/Save.tsx b/src/main/Save.tsx index 61f50d940..3e2ef9b92 100644 --- a/src/main/Save.tsx +++ b/src/main/Save.tsx @@ -31,7 +31,7 @@ import { ThemedTooltip } from "./Tooltip"; * Shown if the user wishes to save. * Informs the user about saving and displays a save button */ -const Save : React.FC<{}> = () => { +const Save : React.FC = () => { const { t } = useTranslation(); @@ -99,7 +99,7 @@ const Save : React.FC<{}> = () => { /** * Button that sends a post request to save current changes */ -export const SaveButton: React.FC<{}> = () => { +export const SaveButton: React.FC = () => { const { t } = useTranslation(); diff --git a/src/main/Subtitle.tsx b/src/main/Subtitle.tsx index 241e19f4c..d3e5b766c 100644 --- a/src/main/Subtitle.tsx +++ b/src/main/Subtitle.tsx @@ -7,7 +7,7 @@ import { selectIsDisplayEditView } from "../redux/subtitleSlice"; /** * A container for the various subtitle views */ -const Subtitle : React.FC<{}> = () => { +const Subtitle : React.FC = () => { const displayEditView = useSelector(selectIsDisplayEditView) diff --git a/src/main/SubtitleEditor.tsx b/src/main/SubtitleEditor.tsx index 63cab1d74..11b97a1b0 100644 --- a/src/main/SubtitleEditor.tsx +++ b/src/main/SubtitleEditor.tsx @@ -26,7 +26,7 @@ import { ThemedTooltip } from "./Tooltip"; /** * Displays an editor view for a selected subtitle file */ -const SubtitleEditor : React.FC<{}> = () => { +const SubtitleEditor : React.FC = () => { const { t } = useTranslation(); @@ -145,7 +145,7 @@ const SubtitleEditor : React.FC<{}> = () => { /** * Takes you to a different page */ -export const BackButton : React.FC<{}> = () => { +export const BackButton : React.FC = () => { const { t } = useTranslation(); const theme = useSelector(selectTheme) diff --git a/src/main/SubtitleListEditor.tsx b/src/main/SubtitleListEditor.tsx index 8f209afc9..186c6a86a 100644 --- a/src/main/SubtitleListEditor.tsx +++ b/src/main/SubtitleListEditor.tsx @@ -35,7 +35,7 @@ import { IconProp } from "@fortawesome/fontawesome-svg-core" /** * Displays everything needed to edit subtitles */ -const SubtitleListEditor : React.FC<{}> = () => { +const SubtitleListEditor : React.FC = () => { const dispatch = useDispatch() diff --git a/src/main/SubtitleSelect.tsx b/src/main/SubtitleSelect.tsx index f8a54ad3f..db4126226 100644 --- a/src/main/SubtitleSelect.tsx +++ b/src/main/SubtitleSelect.tsx @@ -19,7 +19,7 @@ import { ThemedTooltip } from "./Tooltip"; /** * Displays buttons that allow the user to select the flavor/language they want to edit */ -const SubtitleSelect : React.FC<{}> = () => { +const SubtitleSelect : React.FC = () => { const { t } = useTranslation(); const captionTracks = useSelector(selectCaptions) // track objects received from Opencast diff --git a/src/main/SubtitleTimeline.tsx b/src/main/SubtitleTimeline.tsx index 3d7857357..d27895e89 100644 --- a/src/main/SubtitleTimeline.tsx +++ b/src/main/SubtitleTimeline.tsx @@ -30,7 +30,7 @@ import { useTranslation } from "react-i18next"; * Copy-paste of the timeline in Video.tsx, so that we can make some small adjustments, * like adding in a list of subtitle segments */ -const SubtitleTimeline: React.FC<{}> = () => { +const SubtitleTimeline: React.FC = () => { const { t } = useTranslation(); const theme = useSelector(selectTheme) @@ -391,7 +391,7 @@ const TimelineSubtitleSegment: React.FC<{ // * For debugging // * Minimal example: Resizable // */ -// const Example: React.FC<{}> = () => { +// const Example: React.FC = () => { // const [absoluteWidth, setAbsoluteWidth] = useState(200) // const [absoluteHeight, setAbsoluteHeight] = useState(200) @@ -448,7 +448,7 @@ const TimelineSubtitleSegment: React.FC<{ // * Minimal example: Draggable + Resizable // * Erratic behaviour when resizing the east handle for smallish widths // */ -// const Example2: React.FC<{}> = () => { +// const Example2: React.FC = () => { // const [absoluteWidth, setAbsoluteWidth] = useState(200) // const [absoluteHeight, setAbsoluteHeight] = useState(200) diff --git a/src/main/SubtitleVideoArea.tsx b/src/main/SubtitleVideoArea.tsx index dac1adcd0..418c114f2 100644 --- a/src/main/SubtitleVideoArea.tsx +++ b/src/main/SubtitleVideoArea.tsx @@ -35,7 +35,7 @@ import { selectFieldStyle } from "../cssStyles"; * coming up with a proper fix appears to be rather difficult * TODO: Come up with a proper fix and create a PR */ -const SubtitleVideoArea : React.FC<{}> = () => { +const SubtitleVideoArea : React.FC = () => { const tracks = useSelector(selectVideos) const subtitle = useSelector(selectSelectedSubtitleByFlavor) diff --git a/src/main/TheEnd.tsx b/src/main/TheEnd.tsx index de1da1344..4443c3cb1 100644 --- a/src/main/TheEnd.tsx +++ b/src/main/TheEnd.tsx @@ -17,7 +17,7 @@ import { ThemedTooltip } from "./Tooltip"; * This page is to be displayed when the user is "done" with the editor * and should not be able to perfom any actions anymore */ -const TheEnd : React.FC<{}> = () => { +const TheEnd : React.FC = () => { const { t } = useTranslation(); @@ -60,7 +60,7 @@ const TheEnd : React.FC<{}> = () => { } -const StartOverButton: React.FC<{}> = () => { +const StartOverButton: React.FC = () => { const { t } = useTranslation(); const theme = useSelector(selectTheme); diff --git a/src/main/ThemeSwitcher.tsx b/src/main/ThemeSwitcher.tsx index 205cd0075..7def8b5ea 100644 --- a/src/main/ThemeSwitcher.tsx +++ b/src/main/ThemeSwitcher.tsx @@ -5,7 +5,7 @@ import { selectTheme, selectThemeState, toggleTheme, setState } from "../redux/t import Select from "react-select"; import { selectFieldStyle } from "../cssStyles"; -const ThemeSwitcher: React.FC<{}> = () => { +const ThemeSwitcher: React.FC = () => { const { t } = useTranslation(); diff --git a/src/main/Thumbnail.tsx b/src/main/Thumbnail.tsx index 26102e7db..aed7ccf2e 100644 --- a/src/main/Thumbnail.tsx +++ b/src/main/Thumbnail.tsx @@ -21,7 +21,7 @@ import { ThemedTooltip } from "./Tooltip"; /** * User interface for handling thumbnails */ -const Thumbnail : React.FC<{}> = () => { +const Thumbnail : React.FC = () => { const { t } = useTranslation() const dispatch = useDispatch() diff --git a/src/main/TrackSelection.tsx b/src/main/TrackSelection.tsx index d62bd43fb..8bf2b503f 100644 --- a/src/main/TrackSelection.tsx +++ b/src/main/TrackSelection.tsx @@ -20,7 +20,7 @@ import { ThemedTooltip } from "./Tooltip"; /** * Creates the track selection. */ -const TrackSelection: React.FC<{}> = () => { +const TrackSelection: React.FC = () => { // Generate list of tracks const tracks: Track[] = useSelector(selectVideos); @@ -38,7 +38,7 @@ const TrackSelection: React.FC<{}> = () => { } -const Description: React.FC<{}> = () => { +const Description: React.FC = () => { const { t } = useTranslation(); diff --git a/src/main/Video.tsx b/src/main/Video.tsx index 9707e561c..69173d589 100644 --- a/src/main/Video.tsx +++ b/src/main/Video.tsx @@ -38,7 +38,7 @@ import { selectTheme, Theme } from "../redux/themeSlice"; * Container for the videos and their controls * TODO: Move fetching to a more central part of the app */ -export const Video: React.FC<{}> = () => { +export const Video: React.FC = () => { const { t } = useTranslation(); @@ -674,7 +674,7 @@ const TimeDisplay: React.FC<{ /** * Displays elements above the video, e.g. title */ -const VideoHeader: React.FC<{}> = () => { +const VideoHeader: React.FC = () => { const title = useSelector(selectTitle) const metadataTitle = useSelector(selectTitleFromEpisodeDc) diff --git a/src/main/WorkflowConfiguration.tsx b/src/main/WorkflowConfiguration.tsx index 1dfa17690..009f8844a 100644 --- a/src/main/WorkflowConfiguration.tsx +++ b/src/main/WorkflowConfiguration.tsx @@ -25,7 +25,7 @@ import { selectTheme } from "../redux/themeSlice"; /** * Will eventually display settings based on the selected workflow index */ -const WorkflowConfiguration : React.FC<{}> = () => { +const WorkflowConfiguration : React.FC = () => { const { t } = useTranslation(); diff --git a/src/main/WorkflowSelection.tsx b/src/main/WorkflowSelection.tsx index 878b212ab..bbb035fea 100644 --- a/src/main/WorkflowSelection.tsx +++ b/src/main/WorkflowSelection.tsx @@ -24,7 +24,7 @@ import { selectTheme } from "../redux/themeSlice"; /** * Allows the user to select a workflow */ -const WorkflowSelection : React.FC<{}> = () => { +const WorkflowSelection : React.FC = () => { const { t } = useTranslation(); From 4b3051efd0c46f48f09622aff2d00d50c99c53b5 Mon Sep 17 00:00:00 2001 From: Lukas Kalbertodt Date: Thu, 8 Jun 2023 18:54:21 +0200 Subject: [PATCH 29/47] Fix `react/jsx-curly-spacing` lints --- src/main/CuttingActions.tsx | 2 +- src/main/Discard.tsx | 4 ++-- src/main/Finish.tsx | 2 +- src/main/FinishMenu.tsx | 2 +- src/main/MainMenu.tsx | 2 +- src/main/Save.tsx | 2 +- src/main/SubtitleEditor.tsx | 2 +- src/main/SubtitleSelect.tsx | 4 ++-- src/main/SubtitleTimeline.tsx | 2 +- src/main/TheEnd.tsx | 2 +- src/main/TrackSelection.tsx | 32 +++++++++++++++--------------- src/main/Video.tsx | 2 +- src/main/WorkflowConfiguration.tsx | 2 +- 13 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/main/CuttingActions.tsx b/src/main/CuttingActions.tsx index ec02f3116..39fb30f27 100644 --- a/src/main/CuttingActions.tsx +++ b/src/main/CuttingActions.tsx @@ -143,7 +143,7 @@ const CuttingActionsButton: React.FC = ({iconName
actionHandler(event, action, ref) } + onClick={(event: SyntheticEvent) => actionHandler(event, action, ref)} onKeyDown={(event: React.KeyboardEvent) => { if (event.key === " " || event.key === "Enter") { actionHandler(event, action, undefined) }}} diff --git a/src/main/Discard.tsx b/src/main/Discard.tsx index 7c518a9fe..816169843 100644 --- a/src/main/Discard.tsx +++ b/src/main/Discard.tsx @@ -66,11 +66,11 @@ const DiscardButton : React.FC = () => { return (
) => { if (event.key === " " || event.key === "Enter") { discard() }}}> - + {t("discard.confirm-button")}
); diff --git a/src/main/Finish.tsx b/src/main/Finish.tsx index a75c03cd2..21d4e80d5 100644 --- a/src/main/Finish.tsx +++ b/src/main/Finish.tsx @@ -79,7 +79,7 @@ export const PageButton : React.FC<{pageNumber: number, label: string, iconName: return (
) => { if (event.key === " " || event.key === "Enter") { onPageChange() }}}> diff --git a/src/main/FinishMenu.tsx b/src/main/FinishMenu.tsx index daed094c6..d132ecb35 100644 --- a/src/main/FinishMenu.tsx +++ b/src/main/FinishMenu.tsx @@ -69,7 +69,7 @@ const FinishMenuButton: React.FC<{iconName: IconDefinition, stateName: finish["v return (
) => { if (event.key === " " || event.key === "Enter") { finish() }}}> diff --git a/src/main/MainMenu.tsx b/src/main/MainMenu.tsx index f795f7c71..37a4615f5 100644 --- a/src/main/MainMenu.tsx +++ b/src/main/MainMenu.tsx @@ -170,7 +170,7 @@ const MainMenuButton: React.FC = ({iconName, stateName,
  • ) => { if (event.key === "Enter") { onMenuItemClicked() }}} diff --git a/src/main/Save.tsx b/src/main/Save.tsx index 3e2ef9b92..e27b95ada 100644 --- a/src/main/Save.tsx +++ b/src/main/Save.tsx @@ -184,7 +184,7 @@ export const SaveButton: React.FC = () => {
    ) => { if (event.key === " " || event.key === "Enter") { save() }}}> diff --git a/src/main/SubtitleEditor.tsx b/src/main/SubtitleEditor.tsx index 11b97a1b0..8c8d31849 100644 --- a/src/main/SubtitleEditor.tsx +++ b/src/main/SubtitleEditor.tsx @@ -165,7 +165,7 @@ export const BackButton : React.FC = () => {
    dispatch(setIsDisplayEditView(false)) } + onClick={() => dispatch(setIsDisplayEditView(false))} onKeyDown={(event: React.KeyboardEvent) => { if (event.key === " " || event.key === "Enter") { dispatch(setIsDisplayEditView(false)) }}}> diff --git a/src/main/SubtitleSelect.tsx b/src/main/SubtitleSelect.tsx index db4126226..85ebfcd6a 100644 --- a/src/main/SubtitleSelect.tsx +++ b/src/main/SubtitleSelect.tsx @@ -124,7 +124,7 @@ const SubtitleSelectButton: React.FC<{
    { + onClick={() => { dispatch(setIsDisplayEditView(true)) dispatch(setSelectedSubtitleFlavor(flavor)) }} @@ -200,7 +200,7 @@ const SubtitleAddButton: React.FC<{languages: {subFlavor: string, title: string}
    setIsPlusDisplay(false) } + onClick={() => setIsPlusDisplay(false)} onKeyDown={(event: React.KeyboardEvent) => { if (event.key === " " || event.key === "Enter") { setIsPlusDisplay(false) }}} diff --git a/src/main/SubtitleTimeline.tsx b/src/main/SubtitleTimeline.tsx index d27895e89..59393200e 100644 --- a/src/main/SubtitleTimeline.tsx +++ b/src/main/SubtitleTimeline.tsx @@ -379,7 +379,7 @@ const TimelineSubtitleSegment: React.FC<{ // Fix most likely requires changes in one of those modules resizeHandles={['w']} > -
    +
    {props.cue.text}
    diff --git a/src/main/TheEnd.tsx b/src/main/TheEnd.tsx index 4443c3cb1..98d0f4c7f 100644 --- a/src/main/TheEnd.tsx +++ b/src/main/TheEnd.tsx @@ -73,7 +73,7 @@ const StartOverButton: React.FC = () => {
    ) => { if (event.key === " " || event.key === "Enter") { reloadPage() }}}> diff --git a/src/main/TrackSelection.tsx b/src/main/TrackSelection.tsx index 8bf2b503f..f05c19a4f 100644 --- a/src/main/TrackSelection.tsx +++ b/src/main/TrackSelection.tsx @@ -26,7 +26,7 @@ const TrackSelection: React.FC = () => { const tracks: Track[] = useSelector(selectVideos); const enabledCount = tracks.filter(t => t.video_stream.enabled).length; const trackItems: JSX.Element[] = tracks.map((track: Track) => - + ); return ( @@ -53,7 +53,7 @@ const Description: React.FC = () => { }); return ( -