{
isFetching && !isPopulated &&
@@ -318,7 +313,7 @@ class SearchIndex extends Component {
isLoaded &&
{
- scrollPositions.movieIndex = scrollTop;
- };
-
//
// Render
diff --git a/frontend/src/Search/Table/ProtocolLabel.css.d.ts b/frontend/src/Search/Table/ProtocolLabel.css.d.ts
new file mode 100644
index 000000000..f3b389e3d
--- /dev/null
+++ b/frontend/src/Search/Table/ProtocolLabel.css.d.ts
@@ -0,0 +1,8 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'torrent': string;
+ 'usenet': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Search/Table/SearchIndexHeader.css.d.ts b/frontend/src/Search/Table/SearchIndexHeader.css.d.ts
new file mode 100644
index 000000000..73ea36855
--- /dev/null
+++ b/frontend/src/Search/Table/SearchIndexHeader.css.d.ts
@@ -0,0 +1,17 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'actions': string;
+ 'age': string;
+ 'category': string;
+ 'files': string;
+ 'grabs': string;
+ 'indexer': string;
+ 'indexerFlags': string;
+ 'peers': string;
+ 'protocol': string;
+ 'size': string;
+ 'title': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Search/Table/SearchIndexRow.css.d.ts b/frontend/src/Search/Table/SearchIndexRow.css.d.ts
new file mode 100644
index 000000000..54cc9d675
--- /dev/null
+++ b/frontend/src/Search/Table/SearchIndexRow.css.d.ts
@@ -0,0 +1,21 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'actions': string;
+ 'age': string;
+ 'category': string;
+ 'cell': string;
+ 'checkInput': string;
+ 'downloadLink': string;
+ 'externalLinks': string;
+ 'files': string;
+ 'grabs': string;
+ 'indexer': string;
+ 'indexerFlags': string;
+ 'peers': string;
+ 'protocol': string;
+ 'size': string;
+ 'title': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Search/Table/SearchIndexTable.css.d.ts b/frontend/src/Search/Table/SearchIndexTable.css.d.ts
new file mode 100644
index 000000000..fbc2e3b9a
--- /dev/null
+++ b/frontend/src/Search/Table/SearchIndexTable.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'tableContainer': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/AdvancedSettingsButton.css.d.ts b/frontend/src/Settings/AdvancedSettingsButton.css.d.ts
new file mode 100644
index 000000000..7392c59a9
--- /dev/null
+++ b/frontend/src/Settings/AdvancedSettingsButton.css.d.ts
@@ -0,0 +1,13 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'button': string;
+ 'disabled': string;
+ 'enabled': string;
+ 'indicatorBackground': string;
+ 'indicatorContainer': string;
+ 'label': string;
+ 'labelContainer': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Applications/Applications/AddApplicationItem.css.d.ts b/frontend/src/Settings/Applications/Applications/AddApplicationItem.css.d.ts
new file mode 100644
index 000000000..0062a109b
--- /dev/null
+++ b/frontend/src/Settings/Applications/Applications/AddApplicationItem.css.d.ts
@@ -0,0 +1,13 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'actions': string;
+ 'application': string;
+ 'name': string;
+ 'overlay': string;
+ 'presetsMenu': string;
+ 'presetsMenuButton': string;
+ 'underlay': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Applications/Applications/AddApplicationModalContent.css.d.ts b/frontend/src/Settings/Applications/Applications/AddApplicationModalContent.css.d.ts
new file mode 100644
index 000000000..9f183cbe2
--- /dev/null
+++ b/frontend/src/Settings/Applications/Applications/AddApplicationModalContent.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'applications': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Applications/Applications/Application.css.d.ts b/frontend/src/Settings/Applications/Applications/Application.css.d.ts
new file mode 100644
index 000000000..58a29f414
--- /dev/null
+++ b/frontend/src/Settings/Applications/Applications/Application.css.d.ts
@@ -0,0 +1,9 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'application': string;
+ 'enabled': string;
+ 'name': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Applications/Applications/Applications.css.d.ts b/frontend/src/Settings/Applications/Applications/Applications.css.d.ts
new file mode 100644
index 000000000..737eeb917
--- /dev/null
+++ b/frontend/src/Settings/Applications/Applications/Applications.css.d.ts
@@ -0,0 +1,9 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'addApplication': string;
+ 'applications': string;
+ 'center': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Applications/Applications/EditApplicationModalContent.css.d.ts b/frontend/src/Settings/Applications/Applications/EditApplicationModalContent.css.d.ts
new file mode 100644
index 000000000..37d918628
--- /dev/null
+++ b/frontend/src/Settings/Applications/Applications/EditApplicationModalContent.css.d.ts
@@ -0,0 +1,8 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'deleteButton': string;
+ 'message': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/AddDownloadClientItem.css.d.ts b/frontend/src/Settings/DownloadClients/DownloadClients/AddDownloadClientItem.css.d.ts
new file mode 100644
index 000000000..158cff1be
--- /dev/null
+++ b/frontend/src/Settings/DownloadClients/DownloadClients/AddDownloadClientItem.css.d.ts
@@ -0,0 +1,13 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'actions': string;
+ 'downloadClient': string;
+ 'name': string;
+ 'overlay': string;
+ 'presetsMenu': string;
+ 'presetsMenuButton': string;
+ 'underlay': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/AddDownloadClientModalContent.css.d.ts b/frontend/src/Settings/DownloadClients/DownloadClients/AddDownloadClientModalContent.css.d.ts
new file mode 100644
index 000000000..de5a807be
--- /dev/null
+++ b/frontend/src/Settings/DownloadClients/DownloadClients/AddDownloadClientModalContent.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'downloadClients': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/Categories/AddCategoryModalContent.css.d.ts b/frontend/src/Settings/DownloadClients/DownloadClients/Categories/AddCategoryModalContent.css.d.ts
new file mode 100644
index 000000000..c5f0ef8a7
--- /dev/null
+++ b/frontend/src/Settings/DownloadClients/DownloadClients/Categories/AddCategoryModalContent.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'deleteButton': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/Categories/Category.css.d.ts b/frontend/src/Settings/DownloadClients/DownloadClients/Categories/Category.css.d.ts
new file mode 100644
index 000000000..b9d39c3af
--- /dev/null
+++ b/frontend/src/Settings/DownloadClients/DownloadClients/Categories/Category.css.d.ts
@@ -0,0 +1,11 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'customFormat': string;
+ 'labels': string;
+ 'name': string;
+ 'nameContainer': string;
+ 'tooltipLabel': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClient.css.d.ts b/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClient.css.d.ts
new file mode 100644
index 000000000..b32dc3bf0
--- /dev/null
+++ b/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClient.css.d.ts
@@ -0,0 +1,9 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'downloadClient': string;
+ 'enabled': string;
+ 'name': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClients.css.d.ts b/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClients.css.d.ts
new file mode 100644
index 000000000..9ede3bd35
--- /dev/null
+++ b/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClients.css.d.ts
@@ -0,0 +1,9 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'addDownloadClient': string;
+ 'center': string;
+ 'downloadClients': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/EditDownloadClientModalContent.css.d.ts b/frontend/src/Settings/DownloadClients/DownloadClients/EditDownloadClientModalContent.css.d.ts
new file mode 100644
index 000000000..37d918628
--- /dev/null
+++ b/frontend/src/Settings/DownloadClients/DownloadClients/EditDownloadClientModalContent.css.d.ts
@@ -0,0 +1,8 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'deleteButton': string;
+ 'message': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Indexers/IndexerProxies/AddIndexerProxyItem.css.d.ts b/frontend/src/Settings/Indexers/IndexerProxies/AddIndexerProxyItem.css.d.ts
new file mode 100644
index 000000000..a1a6465f5
--- /dev/null
+++ b/frontend/src/Settings/Indexers/IndexerProxies/AddIndexerProxyItem.css.d.ts
@@ -0,0 +1,13 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'actions': string;
+ 'indexerProxy': string;
+ 'name': string;
+ 'overlay': string;
+ 'presetsMenu': string;
+ 'presetsMenuButton': string;
+ 'underlay': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Indexers/IndexerProxies/AddIndexerProxyModalContent.css.d.ts b/frontend/src/Settings/Indexers/IndexerProxies/AddIndexerProxyModalContent.css.d.ts
new file mode 100644
index 000000000..94064e8ab
--- /dev/null
+++ b/frontend/src/Settings/Indexers/IndexerProxies/AddIndexerProxyModalContent.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'indexerProxies': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Indexers/IndexerProxies/EditIndexerProxyModalContent.css.d.ts b/frontend/src/Settings/Indexers/IndexerProxies/EditIndexerProxyModalContent.css.d.ts
new file mode 100644
index 000000000..37d918628
--- /dev/null
+++ b/frontend/src/Settings/Indexers/IndexerProxies/EditIndexerProxyModalContent.css.d.ts
@@ -0,0 +1,8 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'deleteButton': string;
+ 'message': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Indexers/IndexerProxies/IndexerProxies.css.d.ts b/frontend/src/Settings/Indexers/IndexerProxies/IndexerProxies.css.d.ts
new file mode 100644
index 000000000..260f46d44
--- /dev/null
+++ b/frontend/src/Settings/Indexers/IndexerProxies/IndexerProxies.css.d.ts
@@ -0,0 +1,9 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'addIndexerProxy': string;
+ 'center': string;
+ 'indexerProxies': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Indexers/IndexerProxies/IndexerProxy.css.d.ts b/frontend/src/Settings/Indexers/IndexerProxies/IndexerProxy.css.d.ts
new file mode 100644
index 000000000..a6174b7ab
--- /dev/null
+++ b/frontend/src/Settings/Indexers/IndexerProxies/IndexerProxy.css.d.ts
@@ -0,0 +1,10 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'enabled': string;
+ 'indexerProxy': string;
+ 'indexers': string;
+ 'name': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Notifications/Notifications/AddNotificationItem.css.d.ts b/frontend/src/Settings/Notifications/Notifications/AddNotificationItem.css.d.ts
new file mode 100644
index 000000000..952689303
--- /dev/null
+++ b/frontend/src/Settings/Notifications/Notifications/AddNotificationItem.css.d.ts
@@ -0,0 +1,13 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'actions': string;
+ 'name': string;
+ 'notification': string;
+ 'overlay': string;
+ 'presetsMenu': string;
+ 'presetsMenuButton': string;
+ 'underlay': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Notifications/Notifications/AddNotificationModalContent.css.d.ts b/frontend/src/Settings/Notifications/Notifications/AddNotificationModalContent.css.d.ts
new file mode 100644
index 000000000..172f4fc5b
--- /dev/null
+++ b/frontend/src/Settings/Notifications/Notifications/AddNotificationModalContent.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'notifications': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.css.d.ts b/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.css.d.ts
new file mode 100644
index 000000000..37d918628
--- /dev/null
+++ b/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.css.d.ts
@@ -0,0 +1,8 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'deleteButton': string;
+ 'message': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Notifications/Notifications/Notification.css.d.ts b/frontend/src/Settings/Notifications/Notifications/Notification.css.d.ts
new file mode 100644
index 000000000..5c52ad42f
--- /dev/null
+++ b/frontend/src/Settings/Notifications/Notifications/Notification.css.d.ts
@@ -0,0 +1,9 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'enabled': string;
+ 'name': string;
+ 'notification': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.css.d.ts b/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.css.d.ts
new file mode 100644
index 000000000..931fd2781
--- /dev/null
+++ b/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'events': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Notifications/Notifications/Notifications.css.d.ts b/frontend/src/Settings/Notifications/Notifications/Notifications.css.d.ts
new file mode 100644
index 000000000..2607f835d
--- /dev/null
+++ b/frontend/src/Settings/Notifications/Notifications/Notifications.css.d.ts
@@ -0,0 +1,9 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'addNotification': string;
+ 'center': string;
+ 'notifications': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Profiles/App/AppProfile.css.d.ts b/frontend/src/Settings/Profiles/App/AppProfile.css.d.ts
new file mode 100644
index 000000000..fc5824f81
--- /dev/null
+++ b/frontend/src/Settings/Profiles/App/AppProfile.css.d.ts
@@ -0,0 +1,11 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'appProfile': string;
+ 'cloneButton': string;
+ 'name': string;
+ 'nameContainer': string;
+ 'tooltipLabel': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Profiles/App/AppProfiles.css.d.ts b/frontend/src/Settings/Profiles/App/AppProfiles.css.d.ts
new file mode 100644
index 000000000..a3bfc3cfb
--- /dev/null
+++ b/frontend/src/Settings/Profiles/App/AppProfiles.css.d.ts
@@ -0,0 +1,9 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'addAppProfile': string;
+ 'appProfiles': string;
+ 'center': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Profiles/App/EditAppProfileModalContent.css.d.ts b/frontend/src/Settings/Profiles/App/EditAppProfileModalContent.css.d.ts
new file mode 100644
index 000000000..24232a842
--- /dev/null
+++ b/frontend/src/Settings/Profiles/App/EditAppProfileModalContent.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'deleteButtonContainer': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Settings.css.d.ts b/frontend/src/Settings/Settings.css.d.ts
new file mode 100644
index 000000000..ad1605615
--- /dev/null
+++ b/frontend/src/Settings/Settings.css.d.ts
@@ -0,0 +1,8 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'link': string;
+ 'summary': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Tags/Details/TagDetailsModalContent.css.d.ts b/frontend/src/Settings/Tags/Details/TagDetailsModalContent.css.d.ts
new file mode 100644
index 000000000..81112f53f
--- /dev/null
+++ b/frontend/src/Settings/Tags/Details/TagDetailsModalContent.css.d.ts
@@ -0,0 +1,10 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'deleteButton': string;
+ 'item': string;
+ 'items': string;
+ 'restriction': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Tags/Tag.css.d.ts b/frontend/src/Settings/Tags/Tag.css.d.ts
new file mode 100644
index 000000000..51d18383e
--- /dev/null
+++ b/frontend/src/Settings/Tags/Tag.css.d.ts
@@ -0,0 +1,8 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'label': string;
+ 'tag': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Settings/Tags/Tags.css.d.ts b/frontend/src/Settings/Tags/Tags.css.d.ts
new file mode 100644
index 000000000..bf5da21eb
--- /dev/null
+++ b/frontend/src/Settings/Tags/Tags.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'tags': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Store/Actions/commandActions.js b/frontend/src/Store/Actions/commandActions.js
index a31979d0d..083bdd61f 100644
--- a/frontend/src/Store/Actions/commandActions.js
+++ b/frontend/src/Store/Actions/commandActions.js
@@ -17,6 +17,7 @@ export const section = 'commands';
let lastCommand = null;
let lastCommandTimeout = null;
const removeCommandTimeoutIds = {};
+const commandFinishedCallbacks = {};
//
// State
@@ -119,7 +120,7 @@ function scheduleRemoveCommand(command, dispatch) {
}, 60000 * 5);
}
-export function executeCommandHelper( payload, dispatch) {
+export function executeCommandHelper(payload, dispatch) {
// TODO: show a message for the user
if (lastCommand && isSameCommand(lastCommand, payload)) {
console.warn('Please wait at least 5 seconds before running this command again');
@@ -136,14 +137,23 @@ export function executeCommandHelper( payload, dispatch) {
lastCommand = null;
}, 5000);
+ const {
+ commandFinished,
+ ...requestPayload
+ } = payload;
+
const promise = createAjaxRequest({
url: '/command',
method: 'POST',
- data: JSON.stringify(payload),
+ data: JSON.stringify(requestPayload),
dataType: 'json'
}).request;
return promise.then((data) => {
+ if (commandFinished) {
+ commandFinishedCallbacks[data.id] = commandFinished;
+ }
+
dispatch(addCommand(data));
});
}
@@ -183,12 +193,20 @@ export const actionHandlers = handleThunks({
}
});
+ const commandFinished = commandFinishedCallbacks[payload.id];
+
+ if (commandFinished) {
+ commandFinished(payload);
+ }
+
+ delete commandFinishedCallbacks[payload.id];
+
dispatch(updateItem({ section: 'commands', ...payload }));
scheduleRemoveCommand(payload, dispatch);
showCommandMessage(payload, dispatch);
},
- [ADD_COMMAND]: function(getState, payload, dispatch) {
+ [REMOVE_COMMAND]: function(getState, payload, dispatch) {
dispatch(removeItem({ section: 'commands', ...payload }));
}
diff --git a/frontend/src/Store/Actions/indexerIndexActions.js b/frontend/src/Store/Actions/indexerIndexActions.js
index db6516972..0d7dc028a 100644
--- a/frontend/src/Store/Actions/indexerIndexActions.js
+++ b/frontend/src/Store/Actions/indexerIndexActions.js
@@ -34,14 +34,6 @@ export const defaultState = {
},
columns: [
- {
- name: 'select',
- columnLabel: translate('Select'),
- isSortable: false,
- isVisible: true,
- isModifiable: false,
- isHidden: true
- },
{
name: 'status',
columnLabel: translate('ReleaseStatus'),
@@ -178,20 +170,20 @@ export const persistState = [
//
// Actions Types
-export const SET_MOVIE_SORT = 'indexerIndex/setMovieSort';
-export const SET_MOVIE_FILTER = 'indexerIndex/setMovieFilter';
-export const SET_MOVIE_VIEW = 'indexerIndex/setMovieView';
-export const SET_MOVIE_TABLE_OPTION = 'indexerIndex/setMovieTableOption';
+export const SET_INDEXER_SORT = 'indexerIndex/setIndexerSort';
+export const SET_INDEXER_FILTER = 'indexerIndex/setIndexerFilter';
+export const SET_INDEXER_VIEW = 'indexerIndex/setIndexerView';
+export const SET_INDEXER_TABLE_OPTION = 'indexerIndex/setIndexerTableOption';
export const SAVE_INDEXER_EDITOR = 'indexerIndex/saveIndexerEditor';
export const BULK_DELETE_INDEXERS = 'indexerIndex/bulkDeleteIndexers';
//
// Action Creators
-export const setMovieSort = createAction(SET_MOVIE_SORT);
-export const setMovieFilter = createAction(SET_MOVIE_FILTER);
-export const setMovieView = createAction(SET_MOVIE_VIEW);
-export const setMovieTableOption = createAction(SET_MOVIE_TABLE_OPTION);
+export const setIndexerSort = createAction(SET_INDEXER_SORT);
+export const setIndexerFilter = createAction(SET_INDEXER_FILTER);
+export const setIndexerView = createAction(SET_INDEXER_VIEW);
+export const setIndexerTableOption = createAction(SET_INDEXER_TABLE_OPTION);
export const saveIndexerEditor = createThunk(SAVE_INDEXER_EDITOR);
export const bulkDeleteIndexers = createThunk(BULK_DELETE_INDEXERS);
@@ -281,13 +273,13 @@ export const actionHandlers = handleThunks({
export const reducers = createHandleActions({
- [SET_MOVIE_SORT]: createSetClientSideCollectionSortReducer(section),
- [SET_MOVIE_FILTER]: createSetClientSideCollectionFilterReducer(section),
+ [SET_INDEXER_SORT]: createSetClientSideCollectionSortReducer(section),
+ [SET_INDEXER_FILTER]: createSetClientSideCollectionFilterReducer(section),
- [SET_MOVIE_VIEW]: function(state, { payload }) {
+ [SET_INDEXER_VIEW]: function(state, { payload }) {
return Object.assign({}, state, { view: payload.view });
},
- [SET_MOVIE_TABLE_OPTION]: createSetTableOptionReducer(section)
+ [SET_INDEXER_TABLE_OPTION]: createSetTableOptionReducer(section)
}, defaultState, section);
diff --git a/frontend/src/Store/Middleware/createPersistState.js b/frontend/src/Store/Middleware/createPersistState.js
index 257521305..73047b5de 100644
--- a/frontend/src/Store/Middleware/createPersistState.js
+++ b/frontend/src/Store/Middleware/createPersistState.js
@@ -1,6 +1,7 @@
import _ from 'lodash';
import persistState from 'redux-localstorage';
import actions from 'Store/Actions';
+import migrate from 'Store/Migrators/migrate';
const columnPaths = [];
@@ -98,6 +99,7 @@ const config = {
export default function createPersistState() {
// Migrate existing local storage before proceeding
const persistedState = JSON.parse(localStorage.getItem(config.key));
+ migrate(persistedState);
localStorage.setItem(config.key, serialize(persistedState));
return persistState(paths, config);
diff --git a/frontend/src/Store/Migrators/migrate.js b/frontend/src/Store/Migrators/migrate.js
new file mode 100644
index 000000000..71edc894f
--- /dev/null
+++ b/frontend/src/Store/Migrators/migrate.js
@@ -0,0 +1,3 @@
+export default function migrate(persistedState) {
+ return;
+}
diff --git a/frontend/src/Store/Selectors/createClientSideCollectionSelector.js b/frontend/src/Store/Selectors/createClientSideCollectionSelector.js
index a42ec9bb2..ae1031dca 100644
--- a/frontend/src/Store/Selectors/createClientSideCollectionSelector.js
+++ b/frontend/src/Store/Selectors/createClientSideCollectionSelector.js
@@ -44,7 +44,14 @@ function filter(items, state) {
const predicate = filterPredicates[key];
if (Array.isArray(value)) {
- accepted = value.some((v) => predicate(item, v, type));
+ if (
+ type === filterTypes.NOT_CONTAINS ||
+ type === filterTypes.NOT_EQUAL
+ ) {
+ accepted = value.every((v) => predicate(item, v, type));
+ } else {
+ accepted = value.some((v) => predicate(item, v, type));
+ }
} else {
accepted = predicate(item, value, type);
}
diff --git a/frontend/src/Store/Selectors/createIndexerAppProfileSelector.js b/frontend/src/Store/Selectors/createIndexerAppProfileSelector.js
index ef89945d5..683f0419b 100644
--- a/frontend/src/Store/Selectors/createIndexerAppProfileSelector.js
+++ b/frontend/src/Store/Selectors/createIndexerAppProfileSelector.js
@@ -1,10 +1,10 @@
import { createSelector } from 'reselect';
import createIndexerSelector from './createIndexerSelector';
-function createIndexerAppProfileSelector() {
+function createIndexerAppProfileSelector(indexerId) {
return createSelector(
(state) => state.settings.appProfiles.items,
- createIndexerSelector(),
+ createIndexerSelector(indexerId),
(appProfiles, indexer = {}) => {
return appProfiles.find((profile) => {
return profile.id === indexer.appProfileId;
diff --git a/frontend/src/Store/Selectors/createIndexerSelector.js b/frontend/src/Store/Selectors/createIndexerSelector.js
index 86a9fe1c1..220f9b15e 100644
--- a/frontend/src/Store/Selectors/createIndexerSelector.js
+++ b/frontend/src/Store/Selectors/createIndexerSelector.js
@@ -1,15 +1,22 @@
import { createSelector } from 'reselect';
-function createIndexerSelector() {
+function createIndexerSelector(id) {
+ if (id == null) {
+ return createSelector(
+ (state, { indexerId }) => indexerId,
+ (state) => state.indexers.itemMap,
+ (state) => state.indexers.items,
+ (indexerId, itemMap, allIndexers) => {
+ return allIndexers[itemMap[indexerId]];
+ }
+ );
+ }
+
return createSelector(
- (state, { indexerId }) => indexerId,
(state) => state.indexers.itemMap,
(state) => state.indexers.items,
- (indexerId, itemMap, allIndexers) => {
- if (allIndexers && itemMap && indexerId in itemMap) {
- return allIndexers[itemMap[indexerId]];
- }
- return undefined;
+ (itemMap, allIndexers) => {
+ return allIndexers[itemMap[id]];
}
);
}
diff --git a/frontend/src/Store/scrollPositions.js b/frontend/src/Store/scrollPositions.js
index 4f926b7c0..6aeed381f 100644
--- a/frontend/src/Store/scrollPositions.js
+++ b/frontend/src/Store/scrollPositions.js
@@ -1,5 +1,5 @@
const scrollPositions = {
- movieIndex: 0
+ indexerIndex: 0
};
export default scrollPositions;
diff --git a/frontend/src/System/Backup/BackupRow.css.d.ts b/frontend/src/System/Backup/BackupRow.css.d.ts
new file mode 100644
index 000000000..d758c14ca
--- /dev/null
+++ b/frontend/src/System/Backup/BackupRow.css.d.ts
@@ -0,0 +1,8 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'actions': string;
+ 'type': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/System/Backup/RestoreBackupModalContent.css.d.ts b/frontend/src/System/Backup/RestoreBackupModalContent.css.d.ts
new file mode 100644
index 000000000..6603c6533
--- /dev/null
+++ b/frontend/src/System/Backup/RestoreBackupModalContent.css.d.ts
@@ -0,0 +1,10 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'additionalInfo': string;
+ 'step': string;
+ 'stepState': string;
+ 'steps': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/System/Events/LogsTableDetailsModal.css.d.ts b/frontend/src/System/Events/LogsTableDetailsModal.css.d.ts
new file mode 100644
index 000000000..09b8fe302
--- /dev/null
+++ b/frontend/src/System/Events/LogsTableDetailsModal.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'detailsText': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/System/Events/LogsTableRow.css.d.ts b/frontend/src/System/Events/LogsTableRow.css.d.ts
new file mode 100644
index 000000000..c0267e838
--- /dev/null
+++ b/frontend/src/System/Events/LogsTableRow.css.d.ts
@@ -0,0 +1,14 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'actions': string;
+ 'debug': string;
+ 'error': string;
+ 'fatal': string;
+ 'info': string;
+ 'level': string;
+ 'trace': string;
+ 'warn': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/System/Logs/Files/LogFilesTableRow.css.d.ts b/frontend/src/System/Logs/Files/LogFilesTableRow.css.d.ts
new file mode 100644
index 000000000..0a1fbfe07
--- /dev/null
+++ b/frontend/src/System/Logs/Files/LogFilesTableRow.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'download': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/System/Status/About/About.css.d.ts b/frontend/src/System/Status/About/About.css.d.ts
new file mode 100644
index 000000000..34c1578a4
--- /dev/null
+++ b/frontend/src/System/Status/About/About.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'descriptionList': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/System/Status/Health/Health.css.d.ts b/frontend/src/System/Status/Health/Health.css.d.ts
new file mode 100644
index 000000000..e7f690aec
--- /dev/null
+++ b/frontend/src/System/Status/Health/Health.css.d.ts
@@ -0,0 +1,11 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'actions': string;
+ 'healthOk': string;
+ 'legend': string;
+ 'loading': string;
+ 'status': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/System/Status/styles.css.d.ts b/frontend/src/System/Status/styles.css.d.ts
new file mode 100644
index 000000000..521c670e6
--- /dev/null
+++ b/frontend/src/System/Status/styles.css.d.ts
@@ -0,0 +1,8 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'logo': string;
+ 'logoContainer': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/System/Tasks/Queued/QueuedTaskRow.css.d.ts b/frontend/src/System/Tasks/Queued/QueuedTaskRow.css.d.ts
new file mode 100644
index 000000000..3bc00b738
--- /dev/null
+++ b/frontend/src/System/Tasks/Queued/QueuedTaskRow.css.d.ts
@@ -0,0 +1,15 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'actions': string;
+ 'commandName': string;
+ 'duration': string;
+ 'ended': string;
+ 'queued': string;
+ 'started': string;
+ 'trigger': string;
+ 'triggerContent': string;
+ 'userAgent': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/System/Tasks/Scheduled/ScheduledTaskRow.css.d.ts b/frontend/src/System/Tasks/Scheduled/ScheduledTaskRow.css.d.ts
new file mode 100644
index 000000000..5b9af5313
--- /dev/null
+++ b/frontend/src/System/Tasks/Scheduled/ScheduledTaskRow.css.d.ts
@@ -0,0 +1,11 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'actions': string;
+ 'interval': string;
+ 'lastDuration': string;
+ 'lastExecution': string;
+ 'nextExecution': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/System/Updates/UpdateChanges.css.d.ts b/frontend/src/System/Updates/UpdateChanges.css.d.ts
new file mode 100644
index 000000000..86bceec06
--- /dev/null
+++ b/frontend/src/System/Updates/UpdateChanges.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'title': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/System/Updates/Updates.css.d.ts b/frontend/src/System/Updates/Updates.css.d.ts
new file mode 100644
index 000000000..ed1f5434f
--- /dev/null
+++ b/frontend/src/System/Updates/Updates.css.d.ts
@@ -0,0 +1,16 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+ 'date': string;
+ 'info': string;
+ 'label': string;
+ 'loading': string;
+ 'message': string;
+ 'messageContainer': string;
+ 'space': string;
+ 'upToDateIcon': string;
+ 'update': string;
+ 'version': string;
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/src/Utilities/Array/getIndexOfFirstCharacter.js b/frontend/src/Utilities/Array/getIndexOfFirstCharacter.js
index 165bb5cc1..5cbb30085 100644
--- a/frontend/src/Utilities/Array/getIndexOfFirstCharacter.js
+++ b/frontend/src/Utilities/Array/getIndexOfFirstCharacter.js
@@ -1,7 +1,5 @@
-import _ from 'lodash';
-
export default function getIndexOfFirstCharacter(items, character) {
- return _.findIndex(items, (item) => {
+ return items.findIndex((item) => {
const firstCharacter = item.sortTitle.charAt(0);
if (character === '#') {
diff --git a/frontend/src/Utilities/Table/toggleSelected.js b/frontend/src/Utilities/Table/toggleSelected.js
index d03dcef36..cdc11e5c1 100644
--- a/frontend/src/Utilities/Table/toggleSelected.js
+++ b/frontend/src/Utilities/Table/toggleSelected.js
@@ -1,29 +1,29 @@
import areAllSelected from './areAllSelected';
import getToggledRange from './getToggledRange';
-function toggleSelected(state, items, id, selected, shiftKey, idProp = 'id') {
- const lastToggled = state.lastToggled;
- const selectedState = {
- ...state.selectedState,
+function toggleSelected(selectedState, items, id, selected, shiftKey, idProp = 'id') {
+ const lastToggled = selectedState.lastToggled;
+ const nextSelectedState = {
+ ...selectedState.selectedState,
[id]: selected
};
if (selected == null) {
- delete selectedState[id];
+ delete nextSelectedState[id];
}
if (shiftKey && lastToggled) {
const { lower, upper } = getToggledRange(items, id, lastToggled);
for (let i = lower; i < upper; i++) {
- selectedState[items[i][idProp]] = selected;
+ nextSelectedState[items[i][idProp]] = selected;
}
}
return {
- ...areAllSelected(selectedState),
+ ...areAllSelected(nextSelectedState),
lastToggled: id,
- selectedState
+ selectedState: nextSelectedState
};
}
diff --git a/frontend/src/Utilities/mobile.js b/frontend/src/Utilities/browser.js
similarity index 69%
rename from frontend/src/Utilities/mobile.js
rename to frontend/src/Utilities/browser.js
index e52975963..ff896e801 100644
--- a/frontend/src/Utilities/mobile.js
+++ b/frontend/src/Utilities/browser.js
@@ -10,3 +10,7 @@ export function isMobile() {
export function isIOS() {
return mobileDetect.is('iOS');
}
+
+export function isFirefox() {
+ return window.navigator.userAgent.toLowerCase().indexOf('firefox/') >= 0;
+}
diff --git a/frontend/src/index.css.d.ts b/frontend/src/index.css.d.ts
new file mode 100644
index 000000000..132b232e8
--- /dev/null
+++ b/frontend/src/index.css.d.ts
@@ -0,0 +1,7 @@
+// This file is automatically generated.
+// Please do not change this file!
+interface CssExports {
+
+}
+export const cssExports: CssExports;
+export default cssExports;
diff --git a/frontend/typings/Globals.d.ts b/frontend/typings/Globals.d.ts
index 60260a3ad..9ee649b4f 100644
--- a/frontend/typings/Globals.d.ts
+++ b/frontend/typings/Globals.d.ts
@@ -1 +1,11 @@
declare module '*.module.css';
+
+interface Window {
+ Prowlarr: {
+ apiKey: string;
+ instanceName: string;
+ theme: string;
+ urlBase: string;
+ version: string;
+ };
+}
diff --git a/package.json b/package.json
index 2dd9d5fec..b0e116335 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
"@fortawesome/free-regular-svg-icons": "6.2.1",
"@fortawesome/free-solid-svg-icons": "6.2.1",
"@fortawesome/react-fontawesome": "0.2.0",
+ "@juggle/resize-observer": "3.4.0",
"@microsoft/signalr": "6.0.13",
"@sentry/browser": "7.28.0",
"@sentry/integrations": "7.28.0",
@@ -71,17 +72,20 @@
"react-lazyload": "3.2.0",
"react-measure": "1.4.7",
"react-popper": "1.3.7",
- "react-redux": "8.0.5",
+ "react-redux": "7.2.4",
"react-router": "5.2.0",
"react-router-dom": "5.2.0",
"react-text-truncate": "0.19.0",
+ "react-use-measure": "2.1.1",
"react-virtualized": "9.21.1",
+ "react-window": "1.8.8",
"redux": "4.2.0",
"redux-actions": "2.6.5",
"redux-batched-actions": "0.5.0",
"redux-localstorage": "0.4.1",
"redux-thunk": "2.4.2",
"reselect": "4.1.7",
+ "stacktrace-js": "2.0.2",
"typescript": "4.9.4"
},
"devDependencies": {
@@ -100,10 +104,12 @@
"@babel/preset-env": "7.20.2",
"@babel/preset-react": "7.18.6",
"@babel/preset-typescript": "7.18.6",
+ "@types/react-window": "1.8.5",
"@typescript-eslint/eslint-plugin": "5.48.1",
"@typescript-eslint/parser": "5.48.0",
"are-you-es5": "2.1.2",
"autoprefixer": "10.4.13",
+ "babel-eslint": "10.1.0",
"babel-loader": "9.1.0",
"babel-plugin-inline-classnames": "2.0.1",
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
diff --git a/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs b/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs
index 38bc7c281..3439c1204 100644
--- a/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs
+++ b/src/Prowlarr.Api.V1/Indexers/IndexerEditorController.cs
@@ -29,9 +29,9 @@ namespace Prowlarr.Api.V1.Indexers
foreach (var indexer in indexersToUpdate)
{
- if (resource.Enable.IsNotNullOrWhiteSpace())
+ if (resource.Enable.HasValue)
{
- indexer.Enable = bool.Parse(resource.Enable);
+ indexer.Enable = resource.Enable.Value;
}
if (resource.AppProfileId.HasValue)
diff --git a/src/Prowlarr.Api.V1/Indexers/IndexerEditorResource.cs b/src/Prowlarr.Api.V1/Indexers/IndexerEditorResource.cs
index 86120700e..ab5cb0a7c 100644
--- a/src/Prowlarr.Api.V1/Indexers/IndexerEditorResource.cs
+++ b/src/Prowlarr.Api.V1/Indexers/IndexerEditorResource.cs
@@ -5,7 +5,7 @@ namespace Prowlarr.Api.V1.Indexers
public class IndexerEditorResource
{
public List IndexerIds { get; set; }
- public string Enable { get; set; }
+ public bool? Enable { get; set; }
public int? AppProfileId { get; set; }
public List Tags { get; set; }
public ApplyTags ApplyTags { get; set; }
diff --git a/yarn.lock b/yarn.lock
index 4b3066a7f..0602e3bd3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -280,7 +280,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.20.5", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0":
+"@babel/parser@^7.20.5", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.7.0":
version "7.21.1"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.1.tgz#a8f81ee2fe872af23faea4b17a08fcc869de7bcc"
integrity sha512-JzhBFpkuhBNYUY7qs+wTzNmyCWUHEaAFpQQD2YfU1rPL38/L43Wvid0fFkiOCnHvsGncRZgEPyGnltABLcVDTg==
@@ -1049,7 +1049,7 @@
"@babel/parser" "^7.20.7"
"@babel/types" "^7.20.7"
-"@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0":
+"@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.7.0":
version "7.21.0"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.0.tgz#0e1807abd5db98e6a19c204b80ed1e3f5bca0edc"
integrity sha512-Xdt2P1H4LKTO8ApPfnO1KmzYMFpp7D/EinoXzLYN/cHcBNrVCAkAtGUcXnHXrl/VGktureU6fkQrHSBE2URfoA==
@@ -1065,7 +1065,7 @@
debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.4.4":
+"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
version "7.21.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.0.tgz#1da00d89c2f18b226c9207d96edbeb79316a1819"
integrity sha512-uR7NWq2VNFnDi7EYqiRz2Jv/VQIu38tu64Zy8TX2nQFQ6etJ9V/Rr2msW8BS132mum2rL645qpDrLtAJtVpuow==
@@ -1230,6 +1230,11 @@
"@jridgewell/resolve-uri" "3.1.0"
"@jridgewell/sourcemap-codec" "1.4.14"
+"@juggle/resize-observer@3.4.0":
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60"
+ integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==
+
"@kurkle/color@^0.3.0":
version "0.3.2"
resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.2.tgz#5acd38242e8bde4f9986e7913c8fdf49d3aa199f"
@@ -1387,7 +1392,7 @@
"@types/minimatch" "^5.1.2"
"@types/node" "*"
-"@types/hoist-non-react-statics@^3.3.1":
+"@types/hoist-non-react-statics@^3.3.0":
version "3.3.1"
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
@@ -1479,6 +1484,23 @@
dependencies:
"@types/react" "*"
+"@types/react-redux@^7.1.16":
+ version "7.1.25"
+ resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.25.tgz#de841631205b24f9dfb4967dd4a7901e048f9a88"
+ integrity sha512-bAGh4e+w5D8dajd6InASVIyCo4pZLJ66oLb80F9OBLO1gKESbZcRCJpTT6uLXX+HAB57zw1WTdwJdAsewuTweg==
+ dependencies:
+ "@types/hoist-non-react-statics" "^3.3.0"
+ "@types/react" "*"
+ hoist-non-react-statics "^3.3.0"
+ redux "^4.0.0"
+
+"@types/react-window@1.8.5":
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/@types/react-window/-/react-window-1.8.5.tgz#285fcc5cea703eef78d90f499e1457e9b5c02fc1"
+ integrity sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw==
+ dependencies:
+ "@types/react" "*"
+
"@types/react@*":
version "18.0.28"
resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.28.tgz#accaeb8b86f4908057ad629a26635fe641480065"
@@ -1512,11 +1534,6 @@
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
-"@types/use-sync-external-store@^0.0.3":
- version "0.0.3"
- resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43"
- integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==
-
"@types/yargs-parser@*":
version "21.0.0"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
@@ -2097,6 +2114,18 @@ available-typed-arrays@^1.0.5:
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
+babel-eslint@10.1.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
+ integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.7.0"
+ "@babel/traverse" "^7.7.0"
+ "@babel/types" "^7.7.0"
+ eslint-visitor-keys "^1.0.0"
+ resolve "^1.12.0"
+
babel-loader@9.1.0:
version "9.1.0"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.0.tgz#839e9ae88aea930864ef9ec0f356dfca96ecf238"
@@ -2668,6 +2697,11 @@ cuint@^0.2.2:
resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b"
integrity sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==
+debounce@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
+ integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
+
debug@^2.6.9:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -2926,6 +2960,13 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
+error-stack-parser@^2.0.6:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286"
+ integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==
+ dependencies:
+ stackframe "^1.3.4"
+
error@^7.0.0:
version "7.2.1"
resolved "https://registry.yarnpkg.com/error/-/error-7.2.1.tgz#eab21a4689b5f684fc83da84a0e390de82d94894"
@@ -3138,6 +3179,11 @@ eslint-utils@^3.0.0:
dependencies:
eslint-visitor-keys "^2.0.0"
+eslint-visitor-keys@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
+ integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+
eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
@@ -4547,6 +4593,11 @@ memfs@^3.4.1:
dependencies:
fs-monkey "^1.0.3"
+"memoize-one@>=3.1.1 <6":
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
+ integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==
+
meow@^9.0.0:
version "9.0.0"
resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364"
@@ -5513,17 +5564,17 @@ react-popper@1.3.7:
typed-styles "^0.0.7"
warning "^4.0.2"
-react-redux@8.0.5:
- version "8.0.5"
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.0.5.tgz#e5fb8331993a019b8aaf2e167a93d10af469c7bd"
- integrity sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==
+react-redux@7.2.4:
+ version "7.2.4"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.4.tgz#1ebb474032b72d806de2e0519cd07761e222e225"
+ integrity sha512-hOQ5eOSkEJEXdpIKbnRyl04LhaWabkDPV+Ix97wqQX3T3d2NQ8DUblNXXtNMavc7DpswyQM6xfaN4HQDKNY2JA==
dependencies:
"@babel/runtime" "^7.12.1"
- "@types/hoist-non-react-statics" "^3.3.1"
- "@types/use-sync-external-store" "^0.0.3"
+ "@types/react-redux" "^7.1.16"
hoist-non-react-statics "^3.3.2"
- react-is "^18.0.0"
- use-sync-external-store "^1.0.0"
+ loose-envify "^1.4.0"
+ prop-types "^15.7.2"
+ react-is "^16.13.1"
react-router-dom@5.2.0:
version "5.2.0"
@@ -5575,6 +5626,13 @@ react-themeable@^1.1.0:
dependencies:
object-assign "^3.0.0"
+react-use-measure@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/react-use-measure/-/react-use-measure-2.1.1.tgz#5824537f4ee01c9469c45d5f7a8446177c6cc4ba"
+ integrity sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==
+ dependencies:
+ debounce "^1.2.1"
+
react-virtualized@9.21.1:
version "9.21.1"
resolved "https://registry.yarnpkg.com/react-virtualized/-/react-virtualized-9.21.1.tgz#4dbbf8f0a1420e2de3abf28fbb77120815277b3a"
@@ -5588,6 +5646,14 @@ react-virtualized@9.21.1:
prop-types "^15.6.0"
react-lifecycles-compat "^3.0.4"
+react-window@1.8.8:
+ version "1.8.8"
+ resolved "https://registry.yarnpkg.com/react-window/-/react-window-1.8.8.tgz#1b52919f009ddf91970cbdb2050a6c7be44df243"
+ integrity sha512-D4IiBeRtGXziZ1n0XklnFGu7h9gU684zepqyKzgPNzrsrk7xOCxni+TCckjg2Nr/DiaEEGVVmnhYSlT2rB47dQ==
+ dependencies:
+ "@babel/runtime" "^7.0.0"
+ memoize-one ">=3.1.1 <6"
+
react@17.0.2:
version "17.0.2"
resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
@@ -5704,7 +5770,7 @@ redux@4.2.0:
dependencies:
"@babel/runtime" "^7.9.2"
-redux@^4.1.1:
+redux@^4.0.0, redux@^4.1.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197"
integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==
@@ -5841,7 +5907,7 @@ resolve-pathname@^3.0.0:
resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd"
integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==
-resolve@^1.10.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1:
+resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1:
version "1.22.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
@@ -6071,6 +6137,11 @@ source-map-support@~0.5.20:
buffer-from "^1.0.0"
source-map "^0.6.0"
+source-map@0.5.6:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+ integrity sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==
+
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
@@ -6107,6 +6178,13 @@ spdx-license-ids@^3.0.0:
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779"
integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==
+stack-generator@^2.0.5:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/stack-generator/-/stack-generator-2.0.10.tgz#8ae171e985ed62287d4f1ed55a1633b3fb53bb4d"
+ integrity sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==
+ dependencies:
+ stackframe "^1.3.4"
+
stack-utils@^2.0.3:
version "2.0.6"
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
@@ -6114,6 +6192,28 @@ stack-utils@^2.0.3:
dependencies:
escape-string-regexp "^2.0.0"
+stackframe@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310"
+ integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
+
+stacktrace-gps@^3.0.4:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/stacktrace-gps/-/stacktrace-gps-3.1.2.tgz#0c40b24a9b119b20da4525c398795338966a2fb0"
+ integrity sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==
+ dependencies:
+ source-map "0.5.6"
+ stackframe "^1.3.4"
+
+stacktrace-js@2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/stacktrace-js/-/stacktrace-js-2.0.2.tgz#4ca93ea9f494752d55709a081d400fdaebee897b"
+ integrity sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==
+ dependencies:
+ error-stack-parser "^2.0.6"
+ stack-generator "^2.0.5"
+ stacktrace-gps "^3.0.4"
+
streamqueue@1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/streamqueue/-/streamqueue-1.1.2.tgz#6c99c7c20d62b57f5819296bf9ec942542380192"
@@ -6678,11 +6778,6 @@ use-sidecar@^1.1.2:
detect-node-es "^1.1.0"
tslib "^2.0.0"
-use-sync-external-store@^1.0.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
- integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
-
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"