mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-09 17:44:01 -07:00
Merge branch 'master' into build/bump-qt
This commit is contained in:
commit
a6eee23852
22 changed files with 440 additions and 463 deletions
2
.github/workflows/documentation-build.yml
vendored
2
.github/workflows/documentation-build.yml
vendored
|
|
@ -31,7 +31,7 @@ jobs:
|
|||
dot -V
|
||||
|
||||
- name: Install Doxygen
|
||||
uses: ssciwr/doxygen-install@v1
|
||||
uses: ssciwr/doxygen-install@v2
|
||||
with:
|
||||
version: "1.14.0"
|
||||
|
||||
|
|
|
|||
|
|
@ -268,9 +268,6 @@ SettingsCache::SettingsCache()
|
|||
picDownload = settings->value("personal/picturedownload", true).toBool();
|
||||
showStatusBar = settings->value("personal/showStatusBar", false).toBool();
|
||||
|
||||
mainWindowGeometry = settings->value("interface/main_window_geometry").toByteArray();
|
||||
tokenDialogGeometry = settings->value("interface/token_dialog_geometry").toByteArray();
|
||||
setsDialogGeometry = settings->value("interface/sets_dialog_geometry").toByteArray();
|
||||
notificationsEnabled = settings->value("interface/notificationsenabled", true).toBool();
|
||||
spectatorNotificationsEnabled = settings->value("interface/specnotificationsenabled", false).toBool();
|
||||
buddyConnectNotificationsEnabled = settings->value("interface/buddyconnectnotificationsenabled", true).toBool();
|
||||
|
|
@ -280,7 +277,6 @@ SettingsCache::SettingsCache()
|
|||
doNotDeleteArrowsInSubPhases = settings->value("interface/doNotDeleteArrowsInSubPhases", true).toBool();
|
||||
startingHandSize = settings->value("interface/startinghandsize", 7).toInt();
|
||||
annotateTokens = settings->value("interface/annotatetokens", false).toBool();
|
||||
tabGameSplitterSizes = settings->value("interface/tabgame_splittersizes").toByteArray();
|
||||
knownMissingFeatures = settings->value("interface/knownmissingfeatures", "").toString();
|
||||
useTearOffMenus = settings->value("interface/usetearoffmenus", true).toBool();
|
||||
cardViewInitialRowsMax = settings->value("interface/cardViewInitialRowsMax", 14).toInt();
|
||||
|
|
@ -713,12 +709,6 @@ void SettingsCache::setAnnotateTokens(QT_STATE_CHANGED_T _annotateTokens)
|
|||
settings->setValue("interface/annotatetokens", annotateTokens);
|
||||
}
|
||||
|
||||
void SettingsCache::setTabGameSplitterSizes(const QByteArray &_tabGameSplitterSizes)
|
||||
{
|
||||
tabGameSplitterSizes = _tabGameSplitterSizes;
|
||||
settings->setValue("interface/tabgame_splittersizes", tabGameSplitterSizes);
|
||||
}
|
||||
|
||||
void SettingsCache::setShowShortcuts(QT_STATE_CHANGED_T _showShortcuts)
|
||||
{
|
||||
showShortcuts = static_cast<bool>(_showShortcuts);
|
||||
|
|
@ -1090,24 +1080,6 @@ void SettingsCache::setIgnoreUnregisteredUserMessages(QT_STATE_CHANGED_T _ignore
|
|||
settings->setValue("chat/ignore_unregistered_messages", ignoreUnregisteredUserMessages);
|
||||
}
|
||||
|
||||
void SettingsCache::setMainWindowGeometry(const QByteArray &_mainWindowGeometry)
|
||||
{
|
||||
mainWindowGeometry = _mainWindowGeometry;
|
||||
settings->setValue("interface/main_window_geometry", mainWindowGeometry);
|
||||
}
|
||||
|
||||
void SettingsCache::setTokenDialogGeometry(const QByteArray &_tokenDialogGeometry)
|
||||
{
|
||||
tokenDialogGeometry = _tokenDialogGeometry;
|
||||
settings->setValue("interface/token_dialog_geometry", tokenDialogGeometry);
|
||||
}
|
||||
|
||||
void SettingsCache::setSetsDialogGeometry(const QByteArray &_setsDialogGeometry)
|
||||
{
|
||||
setsDialogGeometry = _setsDialogGeometry;
|
||||
settings->setValue("interface/sets_dialog_geometry", setsDialogGeometry);
|
||||
}
|
||||
|
||||
void SettingsCache::setPixmapCacheSize(const int _pixmapCacheSize)
|
||||
{
|
||||
pixmapCacheSize = _pixmapCacheSize;
|
||||
|
|
|
|||
|
|
@ -205,9 +205,6 @@ private:
|
|||
DebugSettings *debugSettings;
|
||||
CardCounterSettings *cardCounterSettings;
|
||||
|
||||
QByteArray mainWindowGeometry;
|
||||
QByteArray tokenDialogGeometry;
|
||||
QByteArray setsDialogGeometry;
|
||||
QString lang;
|
||||
QString deckPath, filtersPath, replaysPath, picsPath, redirectCachePath, customPicsPath, cardDatabasePath,
|
||||
customCardDatabasePath, themesPath, spoilerDatabasePath, tokenDatabasePath, themeName, homeTabBackgroundSource;
|
||||
|
|
@ -238,7 +235,6 @@ private:
|
|||
bool doNotDeleteArrowsInSubPhases;
|
||||
int startingHandSize;
|
||||
bool annotateTokens;
|
||||
QByteArray tabGameSplitterSizes;
|
||||
bool showShortcuts;
|
||||
bool showGameSelectorFilterToolbar;
|
||||
bool displayCardNames;
|
||||
|
|
@ -345,18 +341,6 @@ public:
|
|||
QString getSettingsPath();
|
||||
[[nodiscard]] QString getCachePath() const;
|
||||
[[nodiscard]] QString getNetworkCachePath() const;
|
||||
[[nodiscard]] const QByteArray &getMainWindowGeometry() const
|
||||
{
|
||||
return mainWindowGeometry;
|
||||
}
|
||||
[[nodiscard]] const QByteArray &getTokenDialogGeometry() const
|
||||
{
|
||||
return tokenDialogGeometry;
|
||||
}
|
||||
[[nodiscard]] const QByteArray &getSetsDialogGeometry() const
|
||||
{
|
||||
return setsDialogGeometry;
|
||||
}
|
||||
[[nodiscard]] QString getLang() const
|
||||
{
|
||||
return lang;
|
||||
|
|
@ -555,10 +539,6 @@ public:
|
|||
{
|
||||
return annotateTokens;
|
||||
}
|
||||
[[nodiscard]] QByteArray getTabGameSplitterSizes() const
|
||||
{
|
||||
return tabGameSplitterSizes;
|
||||
}
|
||||
[[nodiscard]] bool getShowShortcuts() const
|
||||
{
|
||||
return showShortcuts;
|
||||
|
|
@ -995,9 +975,6 @@ public:
|
|||
public slots:
|
||||
void setDownloadSpoilerStatus(bool _spoilerStatus);
|
||||
|
||||
void setMainWindowGeometry(const QByteArray &_mainWindowGeometry);
|
||||
void setTokenDialogGeometry(const QByteArray &_tokenDialog);
|
||||
void setSetsDialogGeometry(const QByteArray &_setsDialog);
|
||||
void setLang(const QString &_lang);
|
||||
void setShowTipsOnStartup(bool _showTipsOnStartup);
|
||||
void setSeenTips(const QList<int> &_seenTips);
|
||||
|
|
@ -1034,7 +1011,6 @@ public slots:
|
|||
void setDoNotDeleteArrowsInSubPhases(QT_STATE_CHANGED_T _doNotDeleteArrowsInSubPhases);
|
||||
void setStartingHandSize(int _startingHandSize);
|
||||
void setAnnotateTokens(QT_STATE_CHANGED_T _annotateTokens);
|
||||
void setTabGameSplitterSizes(const QByteArray &_tabGameSplitterSizes);
|
||||
void setShowShortcuts(QT_STATE_CHANGED_T _showShortcuts);
|
||||
void setShowGameSelectorFilterToolbar(QT_STATE_CHANGED_T _showGameSelectorFilterToolbar);
|
||||
void setDisplayCardNames(QT_STATE_CHANGED_T _displayCardNames);
|
||||
|
|
|
|||
|
|
@ -146,13 +146,13 @@ DlgCreateToken::DlgCreateToken(const QStringList &_predefinedTokens, QWidget *pa
|
|||
setWindowTitle(tr("Create token"));
|
||||
|
||||
resize(600, 500);
|
||||
restoreGeometry(SettingsCache::instance().getTokenDialogGeometry());
|
||||
restoreGeometry(SettingsCache::instance().layouts().getTokenDialogGeometry());
|
||||
}
|
||||
|
||||
void DlgCreateToken::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
event->accept();
|
||||
SettingsCache::instance().setTokenDialogGeometry(saveGeometry());
|
||||
SettingsCache::instance().layouts().setTokenDialogGeometry(saveGeometry());
|
||||
}
|
||||
|
||||
void DlgCreateToken::faceDownCheckBoxToggled(bool checked)
|
||||
|
|
@ -225,13 +225,13 @@ void DlgCreateToken::actChooseTokenFromDeck(bool checked)
|
|||
|
||||
void DlgCreateToken::actOk()
|
||||
{
|
||||
SettingsCache::instance().setTokenDialogGeometry(saveGeometry());
|
||||
SettingsCache::instance().layouts().setTokenDialogGeometry(saveGeometry());
|
||||
accept();
|
||||
}
|
||||
|
||||
void DlgCreateToken::actReject()
|
||||
{
|
||||
SettingsCache::instance().setTokenDialogGeometry(saveGeometry());
|
||||
SettingsCache::instance().layouts().setTokenDialogGeometry(saveGeometry());
|
||||
reject();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -189,11 +189,11 @@ WndSets::WndSets(QWidget *parent) : QMainWindow(parent)
|
|||
|
||||
setWindowTitle(tr("Manage sets"));
|
||||
setMinimumSize(800, 500);
|
||||
auto &geometry = SettingsCache::instance().getSetsDialogGeometry();
|
||||
auto geometry = SettingsCache::instance().layouts().getSetsDialogGeometry();
|
||||
if (!geometry.isEmpty()) {
|
||||
restoreGeometry(geometry);
|
||||
}
|
||||
auto &headerState = SettingsCache::instance().layouts().getSetsDialogHeaderState();
|
||||
auto headerState = SettingsCache::instance().layouts().getSetsDialogHeaderState();
|
||||
if (!headerState.isEmpty()) {
|
||||
view->header()->restoreState(headerState);
|
||||
view->header()->setSortIndicator(SORT_RESET, Qt::DescendingOrder);
|
||||
|
|
@ -209,7 +209,7 @@ WndSets::~WndSets()
|
|||
|
||||
void WndSets::closeEvent(QCloseEvent * /*ev*/)
|
||||
{
|
||||
SettingsCache::instance().setSetsDialogGeometry(saveGeometry());
|
||||
SettingsCache::instance().layouts().setSetsDialogGeometry(saveGeometry());
|
||||
}
|
||||
|
||||
void WndSets::saveHeaderState()
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ AbstractTabDeckEditor::AbstractTabDeckEditor(TabSupervisor *_tabSupervisor) : Ta
|
|||
&AbstractTabDeckEditor::refreshShortcuts);
|
||||
}
|
||||
|
||||
void AbstractTabDeckEditor::registerDockWidget(QMenu *_viewMenu, QDockWidget *widget)
|
||||
void AbstractTabDeckEditor::registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize)
|
||||
{
|
||||
QMenu *menu = _viewMenu->addMenu(QString());
|
||||
|
||||
|
|
@ -102,7 +102,7 @@ void AbstractTabDeckEditor::registerDockWidget(QMenu *_viewMenu, QDockWidget *wi
|
|||
connect(filter, &VisibilityChangeListener::visibilityChanged, aVisible,
|
||||
[aVisible](bool visible) { aVisible->setChecked(visible); });
|
||||
|
||||
dockToActions.insert(widget, {menu, aVisible, aFloating});
|
||||
dockToActions.insert(widget, {menu, aVisible, aFloating, defaultSize});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -274,13 +274,14 @@ protected:
|
|||
QMenu *menu; ///< The menu containing the actions
|
||||
QAction *aVisible; ///< The menu action that toggles visibility
|
||||
QAction *aFloating; ///< The menu action that toggles floating
|
||||
QSize defaultSize; ///< The default size of the dock
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief registers a QDockWidget as a managed dock widget. Creates the associated actions and menu, adds them to
|
||||
* the viewMenu, and connects those actions to the tab's slots.
|
||||
*/
|
||||
void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget);
|
||||
void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize);
|
||||
|
||||
/** @brief Confirms deck open action based on settings and modified state.
|
||||
* @param openInSameTabIfBlank Whether to reuse same tab if blank.
|
||||
|
|
|
|||
|
|
@ -54,11 +54,11 @@ void TabDeckEditor::createMenus()
|
|||
|
||||
viewMenu = new QMenu(this);
|
||||
|
||||
registerDockWidget(viewMenu, cardDatabaseDockWidget);
|
||||
registerDockWidget(viewMenu, cardInfoDockWidget);
|
||||
registerDockWidget(viewMenu, deckDockWidget);
|
||||
registerDockWidget(viewMenu, filterDockWidget);
|
||||
registerDockWidget(viewMenu, printingSelectorDockWidget);
|
||||
registerDockWidget(viewMenu, cardDatabaseDockWidget, {500, 500});
|
||||
registerDockWidget(viewMenu, cardInfoDockWidget, {250, 500});
|
||||
registerDockWidget(viewMenu, deckDockWidget, {250, 360});
|
||||
registerDockWidget(viewMenu, filterDockWidget, {250, 250});
|
||||
registerDockWidget(viewMenu, printingSelectorDockWidget, {525, 250});
|
||||
|
||||
connect(&SettingsCache::instance(), &SettingsCache::overrideAllCardArtWithPersonalPreferenceChanged, this,
|
||||
[this](bool enabled) { dockToActions[printingSelectorDockWidget].menu->setEnabled(!enabled); });
|
||||
|
|
@ -136,7 +136,7 @@ void TabDeckEditor::loadLayout()
|
|||
{
|
||||
LayoutsSettings &layouts = SettingsCache::instance().layouts();
|
||||
|
||||
auto &layoutState = layouts.getDeckEditorLayoutState();
|
||||
auto layoutState = layouts.getDeckEditorLayoutState();
|
||||
if (layoutState.isNull())
|
||||
restartLayout();
|
||||
else {
|
||||
|
|
@ -144,20 +144,14 @@ void TabDeckEditor::loadLayout()
|
|||
restoreGeometry(layouts.getDeckEditorGeometry());
|
||||
}
|
||||
|
||||
cardDatabaseDockWidget->setMinimumSize(layouts.getDeckEditorCardDatabaseSize());
|
||||
cardDatabaseDockWidget->setMaximumSize(layouts.getDeckEditorCardDatabaseSize());
|
||||
for (auto it = dockToActions.constKeyValueBegin(); it != dockToActions.constKeyValueEnd(); ++it) {
|
||||
auto dockWidget = it->first;
|
||||
auto actions = it->second;
|
||||
|
||||
cardInfoDockWidget->setMinimumSize(layouts.getDeckEditorCardSize());
|
||||
cardInfoDockWidget->setMaximumSize(layouts.getDeckEditorCardSize());
|
||||
|
||||
filterDockWidget->setMinimumSize(layouts.getDeckEditorFilterSize());
|
||||
filterDockWidget->setMaximumSize(layouts.getDeckEditorFilterSize());
|
||||
|
||||
deckDockWidget->setMinimumSize(layouts.getDeckEditorDeckSize());
|
||||
deckDockWidget->setMaximumSize(layouts.getDeckEditorDeckSize());
|
||||
|
||||
printingSelectorDockWidget->setMinimumSize(layouts.getDeckEditorPrintingSelectorSize());
|
||||
printingSelectorDockWidget->setMaximumSize(layouts.getDeckEditorPrintingSelectorSize());
|
||||
QSize size = layouts.getDeckEditorWidgetSize(dockWidget->objectName(), actions.defaultSize);
|
||||
dockWidget->setMinimumSize(size);
|
||||
dockWidget->setMaximumSize(size);
|
||||
}
|
||||
|
||||
QTimer::singleShot(100, this, &TabDeckEditor::freeDocksSize);
|
||||
}
|
||||
|
|
@ -190,12 +184,9 @@ void TabDeckEditor::restartLayout()
|
|||
/** @brief Frees dock sizes to allow flexible resizing. */
|
||||
void TabDeckEditor::freeDocksSize()
|
||||
{
|
||||
const QSize minSize(100, 100);
|
||||
const QSize maxSize(5000, 5000);
|
||||
|
||||
for (auto dockWidget : dockToActions.keys()) {
|
||||
dockWidget->setMinimumSize(minSize);
|
||||
dockWidget->setMaximumSize(maxSize);
|
||||
dockWidget->setMinimumSize(100, 100);
|
||||
dockWidget->setMaximumSize(5000, 5000);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -211,11 +202,10 @@ bool TabDeckEditor::eventFilter(QObject *o, QEvent *e)
|
|||
LayoutsSettings &layouts = SettingsCache::instance().layouts();
|
||||
layouts.setDeckEditorLayoutState(saveState());
|
||||
layouts.setDeckEditorGeometry(saveGeometry());
|
||||
layouts.setDeckEditorCardDatabaseSize(cardDatabaseDockWidget->size());
|
||||
layouts.setDeckEditorCardSize(cardInfoDockWidget->size());
|
||||
layouts.setDeckEditorFilterSize(filterDockWidget->size());
|
||||
layouts.setDeckEditorDeckSize(deckDockWidget->size());
|
||||
layouts.setDeckEditorPrintingSelectorSize(printingSelectorDockWidget->size());
|
||||
|
||||
for (auto dockWidget : dockToActions.keys()) {
|
||||
layouts.setDeckEditorWidgetSize(dockWidget->objectName(), dockWidget->size());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1034,12 +1034,12 @@ void TabGame::createViewMenuItems()
|
|||
{
|
||||
viewMenu = new QMenu(this);
|
||||
|
||||
registerDockWidget(viewMenu, cardInfoDock);
|
||||
registerDockWidget(viewMenu, messageLayoutDock);
|
||||
registerDockWidget(viewMenu, playerListDock);
|
||||
registerDockWidget(viewMenu, cardInfoDock, {250, 360});
|
||||
registerDockWidget(viewMenu, messageLayoutDock, {250, 200});
|
||||
registerDockWidget(viewMenu, playerListDock, {250, 50});
|
||||
|
||||
if (replayDock) {
|
||||
registerDockWidget(viewMenu, replayDock);
|
||||
registerDockWidget(viewMenu, replayDock, {900, 100});
|
||||
}
|
||||
|
||||
viewMenu->addSeparator();
|
||||
|
|
@ -1051,7 +1051,7 @@ void TabGame::createViewMenuItems()
|
|||
addTabMenu(viewMenu);
|
||||
}
|
||||
|
||||
void TabGame::registerDockWidget(QMenu *_viewMenu, QDockWidget *widget)
|
||||
void TabGame::registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize)
|
||||
{
|
||||
QMenu *menu = _viewMenu->addMenu(QString());
|
||||
|
||||
|
|
@ -1078,7 +1078,7 @@ void TabGame::registerDockWidget(QMenu *_viewMenu, QDockWidget *widget)
|
|||
connect(filter, &VisibilityChangeListener::visibilityChanged, aVisible,
|
||||
[aVisible](bool visible) { aVisible->setChecked(visible); });
|
||||
|
||||
dockToActions.insert(widget, {menu, aVisible, aFloating});
|
||||
dockToActions.insert(widget, {menu, aVisible, aFloating, defaultSize});
|
||||
}
|
||||
|
||||
void TabGame::loadLayout()
|
||||
|
|
@ -1088,24 +1088,27 @@ void TabGame::loadLayout()
|
|||
restoreGeometry(layouts.getReplayPlayAreaGeometry());
|
||||
restoreState(layouts.getReplayPlayAreaLayoutState());
|
||||
|
||||
cardInfoDock->setMinimumSize(layouts.getReplayCardInfoSize());
|
||||
cardInfoDock->setMaximumSize(layouts.getReplayCardInfoSize());
|
||||
messageLayoutDock->setMinimumSize(layouts.getReplayMessageLayoutSize());
|
||||
messageLayoutDock->setMaximumSize(layouts.getReplayMessageLayoutSize());
|
||||
playerListDock->setMinimumSize(layouts.getReplayPlayerListSize());
|
||||
playerListDock->setMaximumSize(layouts.getReplayPlayerListSize());
|
||||
replayDock->setMinimumSize(layouts.getReplayReplaySize());
|
||||
replayDock->setMaximumSize(layouts.getReplayReplaySize());
|
||||
for (auto it = dockToActions.constKeyValueBegin(); it != dockToActions.constKeyValueEnd(); ++it) {
|
||||
auto dockWidget = it->first;
|
||||
auto actions = it->second;
|
||||
|
||||
QSize size = layouts.getReplayPlayAreaWidgetSize(dockWidget->objectName(), actions.defaultSize);
|
||||
dockWidget->setMinimumSize(size);
|
||||
dockWidget->setMaximumSize(size);
|
||||
}
|
||||
|
||||
} else {
|
||||
restoreGeometry(layouts.getGamePlayAreaGeometry());
|
||||
restoreState(layouts.getGamePlayAreaLayoutState());
|
||||
|
||||
cardInfoDock->setMinimumSize(layouts.getGameCardInfoSize());
|
||||
cardInfoDock->setMaximumSize(layouts.getGameCardInfoSize());
|
||||
messageLayoutDock->setMinimumSize(layouts.getGameMessageLayoutSize());
|
||||
messageLayoutDock->setMaximumSize(layouts.getGameMessageLayoutSize());
|
||||
playerListDock->setMinimumSize(layouts.getGamePlayerListSize());
|
||||
playerListDock->setMaximumSize(layouts.getGamePlayerListSize());
|
||||
for (auto it = dockToActions.constKeyValueBegin(); it != dockToActions.constKeyValueEnd(); ++it) {
|
||||
auto dockWidget = it->first;
|
||||
auto actions = it->second;
|
||||
|
||||
QSize size = layouts.getGamePlayAreaWidgetSize(dockWidget->objectName(), actions.defaultSize);
|
||||
dockWidget->setMinimumSize(size);
|
||||
dockWidget->setMaximumSize(size);
|
||||
}
|
||||
}
|
||||
|
||||
QTimer::singleShot(100, this, &TabGame::freeDocksSize);
|
||||
|
|
@ -1113,18 +1116,9 @@ void TabGame::loadLayout()
|
|||
|
||||
void TabGame::freeDocksSize()
|
||||
{
|
||||
cardInfoDock->setMinimumSize(100, 100);
|
||||
cardInfoDock->setMaximumSize(5000, 5000);
|
||||
|
||||
messageLayoutDock->setMinimumSize(100, 100);
|
||||
messageLayoutDock->setMaximumSize(5000, 5000);
|
||||
|
||||
playerListDock->setMinimumSize(100, 100);
|
||||
playerListDock->setMaximumSize(5000, 5000);
|
||||
|
||||
if (replayDock) {
|
||||
replayDock->setMinimumSize(100, 100);
|
||||
replayDock->setMaximumSize(5000, 5000);
|
||||
for (auto dockWidget : dockToActions.keys()) {
|
||||
dockWidget->setMinimumSize(100, 100);
|
||||
dockWidget->setMaximumSize(5000, 5000);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1342,16 +1336,17 @@ void TabGame::hideEvent(QHideEvent *event)
|
|||
if (replayDock) {
|
||||
layouts.setReplayPlayAreaState(saveState());
|
||||
layouts.setReplayPlayAreaGeometry(saveGeometry());
|
||||
layouts.setReplayCardInfoSize(cardInfoDock->size());
|
||||
layouts.setReplayMessageLayoutSize(messageLayoutDock->size());
|
||||
layouts.setReplayPlayerListSize(playerListDock->size());
|
||||
layouts.setReplayReplaySize(replayDock->size());
|
||||
|
||||
for (auto dockWidget : dockToActions.keys()) {
|
||||
layouts.setReplayPlayAreaWidgetSize(dockWidget->objectName(), dockWidget->size());
|
||||
}
|
||||
} else {
|
||||
layouts.setGamePlayAreaState(saveState());
|
||||
layouts.setGamePlayAreaGeometry(saveGeometry());
|
||||
layouts.setGameCardInfoSize(cardInfoDock->size());
|
||||
layouts.setGameMessageLayoutSize(messageLayoutDock->size());
|
||||
layouts.setGamePlayerListSize(playerListDock->size());
|
||||
|
||||
for (auto dockWidget : dockToActions.keys()) {
|
||||
layouts.setGamePlayAreaWidgetSize(dockWidget->objectName(), dockWidget->size());
|
||||
}
|
||||
}
|
||||
|
||||
Tab::hideEvent(event);
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ private:
|
|||
QMenu *menu;
|
||||
QAction *aVisible;
|
||||
QAction *aFloating;
|
||||
QSize defaultSize;
|
||||
};
|
||||
|
||||
QMap<QDockWidget *, DockActions> dockToActions;
|
||||
|
|
@ -117,7 +118,7 @@ private:
|
|||
void createMenuItems();
|
||||
void createReplayMenuItems();
|
||||
void createViewMenuItems();
|
||||
void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget);
|
||||
void registerDockWidget(QMenu *_viewMenu, QDockWidget *widget, const QSize &defaultSize);
|
||||
void createCardInfoDock(bool bReplay = false);
|
||||
void createPlayerListDock(bool bReplay = false);
|
||||
void createMessageDock(bool bReplay = false);
|
||||
|
|
|
|||
|
|
@ -97,10 +97,10 @@ void TabDeckEditorVisual::createMenus()
|
|||
|
||||
viewMenu = new QMenu(this);
|
||||
|
||||
registerDockWidget(viewMenu, cardInfoDockWidget);
|
||||
registerDockWidget(viewMenu, deckDockWidget);
|
||||
registerDockWidget(viewMenu, filterDockWidget);
|
||||
registerDockWidget(viewMenu, printingSelectorDockWidget);
|
||||
registerDockWidget(viewMenu, cardInfoDockWidget, {250, 500});
|
||||
registerDockWidget(viewMenu, deckDockWidget, {250, 360});
|
||||
registerDockWidget(viewMenu, filterDockWidget, {250, 250});
|
||||
registerDockWidget(viewMenu, printingSelectorDockWidget, {525, 250});
|
||||
|
||||
viewMenu->addSeparator();
|
||||
|
||||
|
|
@ -249,17 +249,10 @@ void TabDeckEditorVisual::showPrintingSelector()
|
|||
/** @brief Set size restrictions for free floating dock widgets. */
|
||||
void TabDeckEditorVisual::freeDocksSize()
|
||||
{
|
||||
deckDockWidget->setMinimumSize(100, 100);
|
||||
deckDockWidget->setMaximumSize(5000, 5000);
|
||||
|
||||
cardInfoDockWidget->setMinimumSize(100, 100);
|
||||
cardInfoDockWidget->setMaximumSize(5000, 5000);
|
||||
|
||||
filterDockWidget->setMinimumSize(100, 100);
|
||||
filterDockWidget->setMaximumSize(5000, 5000);
|
||||
|
||||
printingSelectorDockWidget->setMinimumSize(100, 100);
|
||||
printingSelectorDockWidget->setMaximumSize(5000, 5000);
|
||||
for (auto dockWidget : dockToActions.keys()) {
|
||||
dockWidget->setMinimumSize(100, 100);
|
||||
dockWidget->setMaximumSize(5000, 5000);
|
||||
}
|
||||
}
|
||||
|
||||
/** @brief Refreshes keyboard shortcuts for this tab from settings. */
|
||||
|
|
@ -273,25 +266,22 @@ void TabDeckEditorVisual::refreshShortcuts()
|
|||
void TabDeckEditorVisual::loadLayout()
|
||||
{
|
||||
LayoutsSettings &layouts = SettingsCache::instance().layouts();
|
||||
auto &layoutState = layouts.getDeckEditorLayoutState();
|
||||
auto layoutState = layouts.getVisualDeckEditorLayoutState();
|
||||
if (layoutState.isNull()) {
|
||||
restartLayout();
|
||||
} else {
|
||||
restoreState(layoutState);
|
||||
restoreGeometry(layouts.getDeckEditorGeometry());
|
||||
restoreGeometry(layouts.getVisualDeckEditorGeometry());
|
||||
}
|
||||
|
||||
cardInfoDockWidget->setMinimumSize(layouts.getDeckEditorCardSize());
|
||||
cardInfoDockWidget->setMaximumSize(layouts.getDeckEditorCardSize());
|
||||
for (auto it = dockToActions.constKeyValueBegin(); it != dockToActions.constKeyValueEnd(); ++it) {
|
||||
auto dockWidget = it->first;
|
||||
auto actions = it->second;
|
||||
|
||||
filterDockWidget->setMinimumSize(layouts.getDeckEditorFilterSize());
|
||||
filterDockWidget->setMaximumSize(layouts.getDeckEditorFilterSize());
|
||||
|
||||
deckDockWidget->setMinimumSize(layouts.getDeckEditorDeckSize());
|
||||
deckDockWidget->setMaximumSize(layouts.getDeckEditorDeckSize());
|
||||
|
||||
printingSelectorDockWidget->setMinimumSize(layouts.getDeckEditorPrintingSelectorSize());
|
||||
printingSelectorDockWidget->setMaximumSize(layouts.getDeckEditorPrintingSelectorSize());
|
||||
QSize size = layouts.getVisualDeckEditorWidgetSize(dockWidget->objectName(), actions.defaultSize);
|
||||
dockWidget->setMinimumSize(size);
|
||||
dockWidget->setMaximumSize(size);
|
||||
}
|
||||
|
||||
QTimer::singleShot(100, this, &TabDeckEditorVisual::freeDocksSize);
|
||||
}
|
||||
|
|
@ -354,12 +344,12 @@ bool TabDeckEditorVisual::eventFilter(QObject *o, QEvent *e)
|
|||
{
|
||||
if (o == this && e->type() == QEvent::Hide) {
|
||||
LayoutsSettings &layouts = SettingsCache::instance().layouts();
|
||||
layouts.setDeckEditorLayoutState(saveState());
|
||||
layouts.setDeckEditorGeometry(saveGeometry());
|
||||
layouts.setDeckEditorCardSize(cardInfoDockWidget->size());
|
||||
layouts.setDeckEditorFilterSize(filterDockWidget->size());
|
||||
layouts.setDeckEditorDeckSize(deckDockWidget->size());
|
||||
layouts.setDeckEditorPrintingSelectorSize(printingSelectorDockWidget->size());
|
||||
layouts.setVisualDeckEditorLayoutState(saveState());
|
||||
layouts.setVisualDeckEditorGeometry(saveGeometry());
|
||||
|
||||
for (auto dockWidget : dockToActions.keys()) {
|
||||
layouts.setVisualDeckEditorWidgetSize(dockWidget->objectName(), dockWidget->size());
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
VisualDeckDisplayOptionsWidget::VisualDeckDisplayOptionsWidget(QWidget *parent) : QWidget(parent)
|
||||
{
|
||||
groupAndSortLayout = new QHBoxLayout(this);
|
||||
groupAndSortLayout->setContentsMargins(0, 0, 0, 0);
|
||||
groupAndSortLayout->setSpacing(3);
|
||||
groupAndSortLayout->setAlignment(Qt::AlignLeft);
|
||||
this->setLayout(groupAndSortLayout);
|
||||
|
||||
|
|
|
|||
|
|
@ -161,6 +161,7 @@ void VisualDeckEditorWidget::initializeDisplayOptionsAndSearchWidget()
|
|||
|
||||
displayOptionsAndSearch = new QWidget(this);
|
||||
displayOptionsAndSearchLayout = new QHBoxLayout(displayOptionsAndSearch);
|
||||
displayOptionsAndSearchLayout->setContentsMargins(0, 0, 0, 0);
|
||||
displayOptionsAndSearchLayout->setAlignment(Qt::AlignLeft);
|
||||
displayOptionsAndSearch->setLayout(displayOptionsAndSearchLayout);
|
||||
|
||||
|
|
|
|||
|
|
@ -879,7 +879,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|||
|
||||
retranslateUi();
|
||||
|
||||
if (!restoreGeometry(SettingsCache::instance().getMainWindowGeometry())) {
|
||||
if (!restoreGeometry(SettingsCache::instance().layouts().getMainWindowGeometry())) {
|
||||
setWindowState(Qt::WindowMaximized);
|
||||
}
|
||||
aFullScreen->setChecked(static_cast<bool>(windowState() & Qt::WindowFullScreen));
|
||||
|
|
@ -1098,7 +1098,7 @@ void MainWindow::closeEvent(QCloseEvent *event)
|
|||
tip->close();
|
||||
|
||||
event->accept();
|
||||
SettingsCache::instance().setMainWindowGeometry(saveGeometry());
|
||||
SettingsCache::instance().layouts().setMainWindowGeometry(saveGeometry());
|
||||
tabSupervisor->deleteLater();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -340,6 +340,9 @@ bool DeckListModel::removeRows(int row, int count, const QModelIndex &parent)
|
|||
emitRecursiveUpdates(parent);
|
||||
}
|
||||
|
||||
deckList->refreshDeckHash();
|
||||
emit deckHashChanged();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -448,8 +451,6 @@ QModelIndex DeckListModel::addCard(const ExactCard &card, const QString &zoneNam
|
|||
cardNode->setCardSetShortName(cardSetName);
|
||||
cardNode->setCardCollectorNumber(printingInfo.getProperty("num"));
|
||||
cardNode->setCardProviderId(printingInfo.getProperty("uuid"));
|
||||
deckList->refreshDeckHash();
|
||||
emit deckHashChanged();
|
||||
// Emit dataChanged for the amount column since we modified it
|
||||
QModelIndex cardIndex = nodeToIndex(cardNode);
|
||||
QModelIndex amountIndex = cardIndex.sibling(cardIndex.row(), DeckListModelColumns::CARD_AMOUNT);
|
||||
|
|
@ -458,6 +459,10 @@ QModelIndex DeckListModel::addCard(const ExactCard &card, const QString &zoneNam
|
|||
sort(lastKnownColumn, lastKnownOrder);
|
||||
refreshCardFormatLegalities();
|
||||
emitRecursiveUpdates(parentIndex);
|
||||
|
||||
deckList->refreshDeckHash();
|
||||
emit deckHashChanged();
|
||||
|
||||
auto index = nodeToIndex(cardNode);
|
||||
|
||||
if (cardNodeAdded) {
|
||||
|
|
|
|||
|
|
@ -1,218 +1,193 @@
|
|||
#include "layouts_settings.h"
|
||||
|
||||
const static QString STATE_PROP = "state";
|
||||
const static QString GEOMETRY_PROP = "geometry";
|
||||
const static QString SIZE_PROP = "widgetSize";
|
||||
|
||||
const static QString GROUP_MAIN_WINDOW = "mainWindow";
|
||||
const static QString GROUP_DECK_EDITOR = "deckEditor";
|
||||
const static QString GROUP_VISUAL_DECK_EDITOR = "visualDeckEditor";
|
||||
const static QString GROUP_DECK_EDITOR_DB = "deckEditorDb";
|
||||
const static QString GROUP_SETS_DIALOG = "setsDialog";
|
||||
const static QString GROUP_TOKEN_DIALOG = "tokenDialog";
|
||||
const static QString GROUP_GAME_PLAY_AREA = "gamePlayArea";
|
||||
const static QString GROUP_REPLAY_PLAY_AREA = "replayPlayArea";
|
||||
|
||||
LayoutsSettings::LayoutsSettings(const QString &settingPath, QObject *parent)
|
||||
: SettingsManager(settingPath + "layouts.ini", "layouts", QString(), parent)
|
||||
: SettingsManager(settingPath + "layouts.ini", QString(), QString(), parent)
|
||||
{
|
||||
}
|
||||
|
||||
const QByteArray LayoutsSettings::getDeckEditorLayoutState()
|
||||
void LayoutsSettings::setMainWindowGeometry(const QByteArray &value)
|
||||
{
|
||||
return getValue("layouts/deckEditor_state").toByteArray();
|
||||
setValue(value, GEOMETRY_PROP, GROUP_MAIN_WINDOW);
|
||||
}
|
||||
|
||||
QByteArray LayoutsSettings::getMainWindowGeometry()
|
||||
{
|
||||
return getValue(GEOMETRY_PROP, GROUP_MAIN_WINDOW).toByteArray();
|
||||
}
|
||||
|
||||
QByteArray LayoutsSettings::getDeckEditorLayoutState()
|
||||
{
|
||||
return getValue(STATE_PROP, GROUP_DECK_EDITOR).toByteArray();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setDeckEditorLayoutState(const QByteArray &value)
|
||||
{
|
||||
setValue(value, "layouts/deckEditor_state");
|
||||
setValue(value, STATE_PROP, GROUP_DECK_EDITOR);
|
||||
}
|
||||
|
||||
const QByteArray LayoutsSettings::getDeckEditorGeometry()
|
||||
QByteArray LayoutsSettings::getDeckEditorGeometry()
|
||||
{
|
||||
return getValue("layouts/deckEditor_geometry").toByteArray();
|
||||
return getValue(GEOMETRY_PROP, GROUP_DECK_EDITOR).toByteArray();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setDeckEditorGeometry(const QByteArray &value)
|
||||
{
|
||||
setValue(value, "layouts/deckEditor_geometry");
|
||||
setValue(value, GEOMETRY_PROP, GROUP_DECK_EDITOR);
|
||||
}
|
||||
|
||||
QSize LayoutsSettings::getDeckEditorCardDatabaseSize()
|
||||
void LayoutsSettings::setDeckEditorWidgetSize(const QString &widgetName, const QSize &value)
|
||||
{
|
||||
QVariant previous = getValue("layouts/deckEditor_CardDatabaseSize");
|
||||
return previous == QVariant() ? QSize(500, 500) : previous.toSize();
|
||||
setValue(value, widgetName, GROUP_DECK_EDITOR, SIZE_PROP);
|
||||
}
|
||||
|
||||
void LayoutsSettings::setDeckEditorCardDatabaseSize(const QSize &value)
|
||||
QSize LayoutsSettings::getDeckEditorWidgetSize(const QString &widgetName, const QSize &defaultValue)
|
||||
{
|
||||
setValue(value, "layouts/deckEditor_CardDatabaseSize");
|
||||
QVariant previous = getValue(widgetName, GROUP_DECK_EDITOR, SIZE_PROP);
|
||||
return previous == QVariant() ? defaultValue : previous.toSize();
|
||||
}
|
||||
|
||||
QSize LayoutsSettings::getDeckEditorCardSize()
|
||||
QByteArray LayoutsSettings::getVisualDeckEditorLayoutState()
|
||||
{
|
||||
QVariant previous = getValue("layouts/deckEditor_CardSize");
|
||||
return previous == QVariant() ? QSize(250, 500) : previous.toSize();
|
||||
return getValue(STATE_PROP, GROUP_VISUAL_DECK_EDITOR).toByteArray();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setDeckEditorCardSize(const QSize &value)
|
||||
void LayoutsSettings::setVisualDeckEditorLayoutState(const QByteArray &value)
|
||||
{
|
||||
setValue(value, "layouts/deckEditor_CardSize");
|
||||
setValue(value, STATE_PROP, GROUP_VISUAL_DECK_EDITOR);
|
||||
}
|
||||
|
||||
QSize LayoutsSettings::getDeckEditorDeckSize()
|
||||
QByteArray LayoutsSettings::getVisualDeckEditorGeometry()
|
||||
{
|
||||
QVariant previous = getValue("layouts/deckEditor_DeckSize");
|
||||
return previous == QVariant() ? QSize(250, 360) : previous.toSize();
|
||||
return getValue(GEOMETRY_PROP, GROUP_VISUAL_DECK_EDITOR).toByteArray();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setDeckEditorDeckSize(const QSize &value)
|
||||
void LayoutsSettings::setVisualDeckEditorGeometry(const QByteArray &value)
|
||||
{
|
||||
setValue(value, "layouts/deckEditor_DeckSize");
|
||||
setValue(value, GEOMETRY_PROP, GROUP_VISUAL_DECK_EDITOR);
|
||||
}
|
||||
|
||||
QSize LayoutsSettings::getDeckEditorPrintingSelectorSize()
|
||||
void LayoutsSettings::setVisualDeckEditorWidgetSize(const QString &widgetName, const QSize &value)
|
||||
{
|
||||
QVariant previous = getValue("layouts/deckEditor_PrintingSelectorSize");
|
||||
return previous == QVariant() ? QSize(525, 250) : previous.toSize();
|
||||
setValue(value, widgetName, GROUP_VISUAL_DECK_EDITOR, SIZE_PROP);
|
||||
}
|
||||
|
||||
void LayoutsSettings::setDeckEditorPrintingSelectorSize(const QSize &value)
|
||||
QSize LayoutsSettings::getVisualDeckEditorWidgetSize(const QString &widgetName, const QSize &defaultValue)
|
||||
{
|
||||
setValue(value, "layouts/deckEditor_PrintingSelectorSize");
|
||||
QVariant previous = getValue(widgetName, GROUP_VISUAL_DECK_EDITOR, SIZE_PROP);
|
||||
return previous == QVariant() ? defaultValue : previous.toSize();
|
||||
}
|
||||
|
||||
QSize LayoutsSettings::getDeckEditorFilterSize()
|
||||
QByteArray LayoutsSettings::getDeckEditorDbHeaderState()
|
||||
{
|
||||
QVariant previous = getValue("layouts/deckEditor_FilterSize");
|
||||
return previous == QVariant() ? QSize(250, 250) : previous.toSize();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setDeckEditorFilterSize(const QSize &value)
|
||||
{
|
||||
setValue(value, "layouts/deckEditor_FilterSize");
|
||||
}
|
||||
|
||||
const QByteArray LayoutsSettings::getDeckEditorDbHeaderState()
|
||||
{
|
||||
return getValue("layouts/deckEditorDbHeader_state").toByteArray();
|
||||
return getValue(STATE_PROP, GROUP_DECK_EDITOR_DB, "header").toByteArray();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setDeckEditorDbHeaderState(const QByteArray &value)
|
||||
{
|
||||
setValue(value, "layouts/deckEditorDbHeader_state");
|
||||
setValue(value, STATE_PROP, GROUP_DECK_EDITOR_DB, "header");
|
||||
}
|
||||
|
||||
const QByteArray LayoutsSettings::getSetsDialogHeaderState()
|
||||
QByteArray LayoutsSettings::getSetsDialogHeaderState()
|
||||
{
|
||||
return getValue("layouts/setsDialogHeader_state").toByteArray();
|
||||
return getValue(STATE_PROP, GROUP_SETS_DIALOG, "header").toByteArray();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setSetsDialogHeaderState(const QByteArray &value)
|
||||
{
|
||||
setValue(value, "layouts/setsDialogHeader_state");
|
||||
setValue(value, STATE_PROP, GROUP_SETS_DIALOG, "header");
|
||||
}
|
||||
|
||||
void LayoutsSettings::setSetsDialogGeometry(const QByteArray &value)
|
||||
{
|
||||
setValue(value, GEOMETRY_PROP, GROUP_SETS_DIALOG);
|
||||
}
|
||||
|
||||
QByteArray LayoutsSettings::getSetsDialogGeometry()
|
||||
{
|
||||
return getValue(GEOMETRY_PROP, GROUP_SETS_DIALOG).toByteArray();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setTokenDialogGeometry(const QByteArray &value)
|
||||
{
|
||||
setValue(value, GEOMETRY_PROP, GROUP_TOKEN_DIALOG);
|
||||
}
|
||||
|
||||
QByteArray LayoutsSettings::getTokenDialogGeometry()
|
||||
{
|
||||
return getValue(GEOMETRY_PROP, GROUP_TOKEN_DIALOG).toByteArray();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setGamePlayAreaGeometry(const QByteArray &value)
|
||||
{
|
||||
setValue(value, "layouts/gameplayarea_geometry");
|
||||
setValue(value, GEOMETRY_PROP, GROUP_GAME_PLAY_AREA);
|
||||
}
|
||||
|
||||
void LayoutsSettings::setGamePlayAreaState(const QByteArray &value)
|
||||
{
|
||||
setValue(value, "layouts/gameplayarea_state");
|
||||
setValue(value, STATE_PROP, GROUP_GAME_PLAY_AREA);
|
||||
}
|
||||
|
||||
const QByteArray LayoutsSettings::getGamePlayAreaLayoutState()
|
||||
QByteArray LayoutsSettings::getGamePlayAreaLayoutState()
|
||||
{
|
||||
return getValue("layouts/gameplayarea_state").toByteArray();
|
||||
return getValue(STATE_PROP, GROUP_GAME_PLAY_AREA).toByteArray();
|
||||
}
|
||||
|
||||
const QByteArray LayoutsSettings::getGamePlayAreaGeometry()
|
||||
QByteArray LayoutsSettings::getGamePlayAreaGeometry()
|
||||
{
|
||||
return getValue("layouts/gameplayarea_geometry").toByteArray();
|
||||
return getValue(GEOMETRY_PROP, GROUP_GAME_PLAY_AREA).toByteArray();
|
||||
}
|
||||
|
||||
const QSize LayoutsSettings::getGameCardInfoSize()
|
||||
void LayoutsSettings::setGamePlayAreaWidgetSize(const QString &widgetName, const QSize &value)
|
||||
{
|
||||
QVariant previous = getValue("layouts/gameplayarea_CardInfoSize");
|
||||
return previous == QVariant() ? QSize(250, 360) : previous.toSize();
|
||||
setValue(value, widgetName, GROUP_GAME_PLAY_AREA, SIZE_PROP);
|
||||
}
|
||||
|
||||
void LayoutsSettings::setGameCardInfoSize(const QSize &value)
|
||||
QSize LayoutsSettings::getGamePlayAreaWidgetSize(const QString &widgetName, const QSize &defaultValue)
|
||||
{
|
||||
setValue(value, "layouts/gameplayarea_CardInfoSize");
|
||||
}
|
||||
|
||||
const QSize LayoutsSettings::getGameMessageLayoutSize()
|
||||
{
|
||||
QVariant previous = getValue("layouts/gameplayarea_MessageLayoutSize");
|
||||
return previous == QVariant() ? QSize(250, 250) : previous.toSize();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setGameMessageLayoutSize(const QSize &value)
|
||||
{
|
||||
setValue(value, "layouts/gameplayarea_MessageLayoutSize");
|
||||
}
|
||||
|
||||
const QSize LayoutsSettings::getGamePlayerListSize()
|
||||
{
|
||||
QVariant previous = getValue("layouts/gameplayarea_PlayerListSize");
|
||||
return previous == QVariant() ? QSize(250, 50) : previous.toSize();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setGamePlayerListSize(const QSize &value)
|
||||
{
|
||||
setValue(value, "layouts/gameplayarea_PlayerListSize");
|
||||
QVariant previous = getValue(widgetName, GROUP_GAME_PLAY_AREA, SIZE_PROP);
|
||||
return previous == QVariant() ? defaultValue : previous.toSize();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setReplayPlayAreaGeometry(const QByteArray &value)
|
||||
{
|
||||
setValue(value, "layouts/replayplayarea_geometry");
|
||||
setValue(value, GEOMETRY_PROP, GROUP_REPLAY_PLAY_AREA);
|
||||
}
|
||||
|
||||
void LayoutsSettings::setReplayPlayAreaState(const QByteArray &value)
|
||||
{
|
||||
setValue(value, "layouts/replayplayarea_state");
|
||||
setValue(value, STATE_PROP, GROUP_REPLAY_PLAY_AREA);
|
||||
}
|
||||
|
||||
const QByteArray LayoutsSettings::getReplayPlayAreaLayoutState()
|
||||
QByteArray LayoutsSettings::getReplayPlayAreaLayoutState()
|
||||
{
|
||||
return getValue("layouts/replayplayarea_state").toByteArray();
|
||||
return getValue(STATE_PROP, GROUP_REPLAY_PLAY_AREA).toByteArray();
|
||||
}
|
||||
|
||||
const QByteArray LayoutsSettings::getReplayPlayAreaGeometry()
|
||||
QByteArray LayoutsSettings::getReplayPlayAreaGeometry()
|
||||
{
|
||||
return getValue("layouts/replayplayarea_geometry").toByteArray();
|
||||
return getValue(GEOMETRY_PROP, GROUP_REPLAY_PLAY_AREA).toByteArray();
|
||||
}
|
||||
|
||||
const QSize LayoutsSettings::getReplayCardInfoSize()
|
||||
void LayoutsSettings::setReplayPlayAreaWidgetSize(const QString &widgetName, const QSize &value)
|
||||
{
|
||||
QVariant previous = getValue("layouts/replayplayarea_CardInfoSize");
|
||||
return previous == QVariant() ? QSize(250, 360) : previous.toSize();
|
||||
setValue(value, widgetName, GROUP_REPLAY_PLAY_AREA, SIZE_PROP);
|
||||
}
|
||||
|
||||
void LayoutsSettings::setReplayCardInfoSize(const QSize &value)
|
||||
QSize LayoutsSettings::getReplayPlayAreaWidgetSize(const QString &widgetName, const QSize &defaultValue)
|
||||
{
|
||||
setValue(value, "layouts/replayplayarea_CardInfoSize");
|
||||
}
|
||||
|
||||
const QSize LayoutsSettings::getReplayMessageLayoutSize()
|
||||
{
|
||||
QVariant previous = getValue("layouts/replayplayarea_MessageLayoutSize");
|
||||
return previous == QVariant() ? QSize(250, 200) : previous.toSize();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setReplayMessageLayoutSize(const QSize &value)
|
||||
{
|
||||
setValue(value, "layouts/replayplayarea_MessageLayoutSize");
|
||||
}
|
||||
|
||||
const QSize LayoutsSettings::getReplayPlayerListSize()
|
||||
{
|
||||
QVariant previous = getValue("layouts/replayplayarea_PlayerListSize");
|
||||
return previous == QVariant() ? QSize(250, 50) : previous.toSize();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setReplayPlayerListSize(const QSize &value)
|
||||
{
|
||||
setValue(value, "layouts/replayplayarea_PlayerListSize");
|
||||
}
|
||||
|
||||
const QSize LayoutsSettings::getReplayReplaySize()
|
||||
{
|
||||
QVariant previous = getValue("layouts/replayplayarea_ReplaySize");
|
||||
return previous == QVariant() ? QSize(900, 100) : previous.toSize();
|
||||
}
|
||||
|
||||
void LayoutsSettings::setReplayReplaySize(const QSize &value)
|
||||
{
|
||||
setValue(value, "layouts/replayplayarea_ReplaySize");
|
||||
QVariant previous = getValue(widgetName, GROUP_REPLAY_PLAY_AREA, SIZE_PROP);
|
||||
return previous == QVariant() ? defaultValue : previous.toSize();
|
||||
}
|
||||
|
|
@ -17,51 +17,51 @@ class LayoutsSettings : public SettingsManager
|
|||
friend class SettingsCache;
|
||||
|
||||
public:
|
||||
void setMainWindowGeometry(const QByteArray &value);
|
||||
|
||||
void setDeckEditorLayoutState(const QByteArray &value);
|
||||
void setDeckEditorGeometry(const QByteArray &value);
|
||||
void setDeckEditorCardDatabaseSize(const QSize &value);
|
||||
void setDeckEditorCardSize(const QSize &value);
|
||||
void setDeckEditorDeckSize(const QSize &value);
|
||||
void setDeckEditorPrintingSelectorSize(const QSize &value);
|
||||
void setDeckEditorFilterSize(const QSize &value);
|
||||
void setDeckEditorWidgetSize(const QString &widgetName, const QSize &value);
|
||||
|
||||
void setVisualDeckEditorLayoutState(const QByteArray &value);
|
||||
void setVisualDeckEditorGeometry(const QByteArray &value);
|
||||
void setVisualDeckEditorWidgetSize(const QString &widgetName, const QSize &value);
|
||||
|
||||
void setDeckEditorDbHeaderState(const QByteArray &value);
|
||||
void setSetsDialogHeaderState(const QByteArray &value);
|
||||
void setSetsDialogGeometry(const QByteArray &value);
|
||||
void setTokenDialogGeometry(const QByteArray &value);
|
||||
|
||||
void setGamePlayAreaGeometry(const QByteArray &value);
|
||||
void setGamePlayAreaState(const QByteArray &value);
|
||||
void setGameCardInfoSize(const QSize &value);
|
||||
void setGameMessageLayoutSize(const QSize &value);
|
||||
void setGamePlayerListSize(const QSize &value);
|
||||
void setGamePlayAreaWidgetSize(const QString &widgetName, const QSize &value);
|
||||
|
||||
void setReplayPlayAreaGeometry(const QByteArray &value);
|
||||
void setReplayPlayAreaState(const QByteArray &value);
|
||||
void setReplayCardInfoSize(const QSize &value);
|
||||
void setReplayMessageLayoutSize(const QSize &value);
|
||||
void setReplayPlayerListSize(const QSize &value);
|
||||
void setReplayReplaySize(const QSize &value);
|
||||
void setReplayPlayAreaWidgetSize(const QString &widgetName, const QSize &value);
|
||||
|
||||
const QByteArray getDeckEditorLayoutState();
|
||||
const QByteArray getDeckEditorGeometry();
|
||||
QSize getDeckEditorCardDatabaseSize();
|
||||
QSize getDeckEditorCardSize();
|
||||
QSize getDeckEditorDeckSize();
|
||||
QSize getDeckEditorPrintingSelectorSize();
|
||||
QSize getDeckEditorFilterSize();
|
||||
const QByteArray getDeckEditorDbHeaderState();
|
||||
const QByteArray getSetsDialogHeaderState();
|
||||
QByteArray getMainWindowGeometry();
|
||||
|
||||
const QByteArray getGamePlayAreaLayoutState();
|
||||
const QByteArray getGamePlayAreaGeometry();
|
||||
const QSize getGameCardInfoSize();
|
||||
const QSize getGameMessageLayoutSize();
|
||||
const QSize getGamePlayerListSize();
|
||||
QByteArray getDeckEditorLayoutState();
|
||||
QByteArray getDeckEditorGeometry();
|
||||
QSize getDeckEditorWidgetSize(const QString &widgetName, const QSize &defaultValue = {});
|
||||
|
||||
const QByteArray getReplayPlayAreaLayoutState();
|
||||
const QByteArray getReplayPlayAreaGeometry();
|
||||
const QSize getReplayCardInfoSize();
|
||||
const QSize getReplayMessageLayoutSize();
|
||||
const QSize getReplayPlayerListSize();
|
||||
const QSize getReplayReplaySize();
|
||||
QByteArray getVisualDeckEditorLayoutState();
|
||||
QByteArray getVisualDeckEditorGeometry();
|
||||
QSize getVisualDeckEditorWidgetSize(const QString &widgetName, const QSize &defaultValue = {});
|
||||
|
||||
QByteArray getDeckEditorDbHeaderState();
|
||||
QByteArray getSetsDialogHeaderState();
|
||||
QByteArray getSetsDialogGeometry();
|
||||
QByteArray getTokenDialogGeometry();
|
||||
|
||||
QByteArray getGamePlayAreaLayoutState();
|
||||
QByteArray getGamePlayAreaGeometry();
|
||||
QSize getGamePlayAreaWidgetSize(const QString &widgetName, const QSize &defaultValue = {});
|
||||
|
||||
QByteArray getReplayPlayAreaLayoutState();
|
||||
QByteArray getReplayPlayAreaGeometry();
|
||||
QSize getReplayPlayAreaWidgetSize(const QString &widgetName, const QSize &defaultValue = {});
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
#include "oracleimporter.h"
|
||||
|
||||
#include "client/settings/cache_settings.h"
|
||||
#include "libcockatrice/interfaces/noop_card_preference_provider.h"
|
||||
#include "libcockatrice/interfaces/noop_card_set_priority_controller.h"
|
||||
#include "parsehelpers.h"
|
||||
|
|
|
|||
|
|
@ -21,7 +21,14 @@ OracleWizard::OracleWizard(QWidget *parent) : QWizard(parent)
|
|||
// define a dummy context that will be used where needed
|
||||
QString dummy = QT_TRANSLATE_NOOP("i18n", "English");
|
||||
|
||||
settings = new QSettings(SettingsCache::instance().getSettingsPath() + "global.ini", QSettings::IniFormat, this);
|
||||
QString oracleSettingsFile = SettingsCache::instance().getSettingsPath() + "oracle.ini";
|
||||
settings = new QSettings(oracleSettingsFile, QSettings::IniFormat, this);
|
||||
|
||||
// We moved the oracle-specific settings from global.ini to a separate oracle.ini after 2.10
|
||||
if (!QFile::exists(oracleSettingsFile)) {
|
||||
migrateOracleSettings();
|
||||
}
|
||||
|
||||
connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &OracleWizard::updateLanguage);
|
||||
|
||||
importer = new OracleImporter(this);
|
||||
|
|
@ -50,6 +57,26 @@ OracleWizard::OracleWizard(QWidget *parent) : QWizard(parent)
|
|||
retranslateUi();
|
||||
}
|
||||
|
||||
/**
|
||||
* Migrates the oracle-specific settings from global.ini to oracle.ini
|
||||
*/
|
||||
void OracleWizard::migrateOracleSettings()
|
||||
{
|
||||
QString filePath = SettingsCache::instance().getSettingsPath() + "global.ini";
|
||||
auto globalSettings = QSettings(filePath, QSettings::IniFormat, this);
|
||||
|
||||
auto tryMigrateValue = [this, &globalSettings](const QString &name) {
|
||||
QVariant variant = globalSettings.value(name);
|
||||
if (variant.isValid()) {
|
||||
settings->setValue(name, variant.toString());
|
||||
}
|
||||
};
|
||||
|
||||
tryMigrateValue("allsetsurl");
|
||||
tryMigrateValue("tokensurl");
|
||||
tryMigrateValue("spoilersurl");
|
||||
}
|
||||
|
||||
void OracleWizard::updateLanguage()
|
||||
{
|
||||
qApp->removeTranslator(translator);
|
||||
|
|
|
|||
|
|
@ -75,6 +75,8 @@ private:
|
|||
QString cardSourceUrl;
|
||||
QString cardSourceVersion;
|
||||
|
||||
void migrateOracleSettings();
|
||||
|
||||
protected:
|
||||
void changeEvent(QEvent *event) override;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@
|
|||
<message>
|
||||
<location filename="src/pages.cpp" line="726"/>
|
||||
<source>spoiler</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>spoiler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/pages.cpp" line="731"/>
|
||||
|
|
@ -192,7 +192,7 @@
|
|||
<message>
|
||||
<location filename="src/pages.cpp" line="735"/>
|
||||
<source>Local file:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Fichier local:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/pages.cpp" line="736"/>
|
||||
|
|
@ -202,7 +202,7 @@
|
|||
<message>
|
||||
<location filename="src/pages.cpp" line="737"/>
|
||||
<source>Choose file...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Choisissez un fichier...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/pages.cpp" line="739"/>
|
||||
|
|
@ -230,7 +230,7 @@
|
|||
<message>
|
||||
<location filename="src/pages.cpp" line="681"/>
|
||||
<source>tokens</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>jetons</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/pages.cpp" line="686"/>
|
||||
|
|
@ -250,7 +250,7 @@
|
|||
<message>
|
||||
<location filename="src/pages.cpp" line="690"/>
|
||||
<source>Local file:</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Ficher local:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/pages.cpp" line="691"/>
|
||||
|
|
@ -260,7 +260,7 @@
|
|||
<message>
|
||||
<location filename="src/pages.cpp" line="692"/>
|
||||
<source>Choose file...</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Choisissez un ficher...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/pages.cpp" line="694"/>
|
||||
|
|
@ -391,12 +391,12 @@
|
|||
<message>
|
||||
<location filename="src/pagetemplates.cpp" line="72"/>
|
||||
<source>Load %1 file</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Chargez le fichier %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/pagetemplates.cpp" line="82"/>
|
||||
<source>%1 file (%1)</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>fichier %1 (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/pagetemplates.cpp" line="111"/>
|
||||
|
|
@ -420,12 +420,12 @@
|
|||
<message>
|
||||
<location filename="src/pagetemplates.cpp" line="129"/>
|
||||
<source>Please choose a file.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Merci de choisir un fichier.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/pagetemplates.cpp" line="134"/>
|
||||
<source>Cannot open file '%1'.</source>
|
||||
<translation type="unfinished"/>
|
||||
<translation>Le fichier '%1' ne peut pas être ouvert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="src/pagetemplates.cpp" line="159"/>
|
||||
|
|
|
|||
297
webclient/package-lock.json
generated
297
webclient/package-lock.json
generated
|
|
@ -4866,9 +4866,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@types/estree": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
|
||||
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
|
||||
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
|
||||
},
|
||||
"node_modules/@types/express": {
|
||||
"version": "4.17.14",
|
||||
|
|
@ -5641,9 +5641,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/acorn": {
|
||||
"version": "8.14.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
|
||||
"integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
|
||||
"version": "8.15.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
|
||||
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
},
|
||||
|
|
@ -5671,6 +5671,17 @@
|
|||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/acorn-import-phases": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz",
|
||||
"integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==",
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"acorn": "^8.14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/acorn-jsx": {
|
||||
"version": "5.3.2",
|
||||
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
|
||||
|
|
@ -6344,6 +6355,14 @@
|
|||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
},
|
||||
"node_modules/baseline-browser-mapping": {
|
||||
"version": "2.9.19",
|
||||
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
|
||||
"integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==",
|
||||
"bin": {
|
||||
"baseline-browser-mapping": "dist/cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/batch": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
|
||||
|
|
@ -6481,9 +6500,9 @@
|
|||
"integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
|
||||
},
|
||||
"node_modules/browserslist": {
|
||||
"version": "4.24.5",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz",
|
||||
"integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==",
|
||||
"version": "4.28.1",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
|
||||
"integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
|
|
@ -6499,10 +6518,11 @@
|
|||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"caniuse-lite": "^1.0.30001716",
|
||||
"electron-to-chromium": "^1.5.149",
|
||||
"node-releases": "^2.0.19",
|
||||
"update-browserslist-db": "^1.1.3"
|
||||
"baseline-browser-mapping": "^2.9.0",
|
||||
"caniuse-lite": "^1.0.30001759",
|
||||
"electron-to-chromium": "^1.5.263",
|
||||
"node-releases": "^2.0.27",
|
||||
"update-browserslist-db": "^1.2.0"
|
||||
},
|
||||
"bin": {
|
||||
"browserslist": "cli.js"
|
||||
|
|
@ -6609,9 +6629,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001718",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz",
|
||||
"integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==",
|
||||
"version": "1.0.30001769",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz",
|
||||
"integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
|
|
@ -7849,9 +7869,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.5.155",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.155.tgz",
|
||||
"integrity": "sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng=="
|
||||
"version": "1.5.286",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz",
|
||||
"integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A=="
|
||||
},
|
||||
"node_modules/emittery": {
|
||||
"version": "0.8.1",
|
||||
|
|
@ -7886,12 +7906,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/enhanced-resolve": {
|
||||
"version": "5.18.1",
|
||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
|
||||
"integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
|
||||
"version": "5.19.0",
|
||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz",
|
||||
"integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==",
|
||||
"dependencies": {
|
||||
"graceful-fs": "^4.2.4",
|
||||
"tapable": "^2.2.0"
|
||||
"tapable": "^2.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
|
|
@ -8002,9 +8022,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/es-module-lexer": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
|
||||
"integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz",
|
||||
"integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw=="
|
||||
},
|
||||
"node_modules/es-shim-unscopables": {
|
||||
"version": "1.0.0",
|
||||
|
|
@ -14383,11 +14403,15 @@
|
|||
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
|
||||
},
|
||||
"node_modules/loader-runner": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
|
||||
"integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==",
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz",
|
||||
"integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==",
|
||||
"engines": {
|
||||
"node": ">=6.11.5"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/webpack"
|
||||
}
|
||||
},
|
||||
"node_modules/loader-utils": {
|
||||
|
|
@ -14815,9 +14839,9 @@
|
|||
"integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="
|
||||
},
|
||||
"node_modules/node-releases": {
|
||||
"version": "2.0.19",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
|
||||
"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="
|
||||
"version": "2.0.27",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
|
||||
"integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="
|
||||
},
|
||||
"node_modules/normalize-path": {
|
||||
"version": "3.0.0",
|
||||
|
|
@ -18747,11 +18771,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/tapable": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
|
||||
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
|
||||
"integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/webpack"
|
||||
}
|
||||
},
|
||||
"node_modules/temp-dir": {
|
||||
|
|
@ -18823,9 +18851,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
"version": "5.3.14",
|
||||
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz",
|
||||
"integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==",
|
||||
"version": "5.3.16",
|
||||
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz",
|
||||
"integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==",
|
||||
"dependencies": {
|
||||
"@jridgewell/trace-mapping": "^0.3.25",
|
||||
"jest-worker": "^27.4.5",
|
||||
|
|
@ -19208,9 +19236,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
|
||||
"integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
|
||||
"integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
|
|
@ -19367,9 +19395,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/watchpack": {
|
||||
"version": "2.4.4",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz",
|
||||
"integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==",
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz",
|
||||
"integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==",
|
||||
"dependencies": {
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.1.2"
|
||||
|
|
@ -19395,34 +19423,35 @@
|
|||
}
|
||||
},
|
||||
"node_modules/webpack": {
|
||||
"version": "5.99.9",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz",
|
||||
"integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==",
|
||||
"version": "5.105.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz",
|
||||
"integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==",
|
||||
"dependencies": {
|
||||
"@types/eslint-scope": "^3.7.7",
|
||||
"@types/estree": "^1.0.6",
|
||||
"@types/estree": "^1.0.8",
|
||||
"@types/json-schema": "^7.0.15",
|
||||
"@webassemblyjs/ast": "^1.14.1",
|
||||
"@webassemblyjs/wasm-edit": "^1.14.1",
|
||||
"@webassemblyjs/wasm-parser": "^1.14.1",
|
||||
"acorn": "^8.14.0",
|
||||
"browserslist": "^4.24.0",
|
||||
"acorn": "^8.15.0",
|
||||
"acorn-import-phases": "^1.0.3",
|
||||
"browserslist": "^4.28.1",
|
||||
"chrome-trace-event": "^1.0.2",
|
||||
"enhanced-resolve": "^5.17.1",
|
||||
"es-module-lexer": "^1.2.1",
|
||||
"enhanced-resolve": "^5.19.0",
|
||||
"es-module-lexer": "^2.0.0",
|
||||
"eslint-scope": "5.1.1",
|
||||
"events": "^3.2.0",
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"json-parse-even-better-errors": "^2.3.1",
|
||||
"loader-runner": "^4.2.0",
|
||||
"loader-runner": "^4.3.1",
|
||||
"mime-types": "^2.1.27",
|
||||
"neo-async": "^2.6.2",
|
||||
"schema-utils": "^4.3.2",
|
||||
"tapable": "^2.1.1",
|
||||
"terser-webpack-plugin": "^5.3.11",
|
||||
"watchpack": "^2.4.1",
|
||||
"webpack-sources": "^3.2.3"
|
||||
"schema-utils": "^4.3.3",
|
||||
"tapable": "^2.3.0",
|
||||
"terser-webpack-plugin": "^5.3.16",
|
||||
"watchpack": "^2.5.1",
|
||||
"webpack-sources": "^3.3.3"
|
||||
},
|
||||
"bin": {
|
||||
"webpack": "bin/webpack.js"
|
||||
|
|
@ -19670,9 +19699,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/webpack-sources": {
|
||||
"version": "3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
|
||||
"integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz",
|
||||
"integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==",
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
|
|
@ -19709,9 +19738,9 @@
|
|||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
|
||||
},
|
||||
"node_modules/webpack/node_modules/schema-utils": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz",
|
||||
"integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==",
|
||||
"version": "4.3.3",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
|
||||
"integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
|
||||
"dependencies": {
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"ajv": "^8.9.0",
|
||||
|
|
@ -23591,9 +23620,9 @@
|
|||
}
|
||||
},
|
||||
"@types/estree": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz",
|
||||
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
|
||||
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
|
||||
},
|
||||
"@types/express": {
|
||||
"version": "4.17.14",
|
||||
|
|
@ -24245,9 +24274,9 @@
|
|||
}
|
||||
},
|
||||
"acorn": {
|
||||
"version": "8.14.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
|
||||
"integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg=="
|
||||
"version": "8.15.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
|
||||
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="
|
||||
},
|
||||
"acorn-globals": {
|
||||
"version": "6.0.0",
|
||||
|
|
@ -24265,6 +24294,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"acorn-import-phases": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz",
|
||||
"integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ=="
|
||||
},
|
||||
"acorn-jsx": {
|
||||
"version": "5.3.2",
|
||||
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
|
||||
|
|
@ -24752,6 +24786,11 @@
|
|||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||
},
|
||||
"baseline-browser-mapping": {
|
||||
"version": "2.9.19",
|
||||
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz",
|
||||
"integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg=="
|
||||
},
|
||||
"batch": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
|
||||
|
|
@ -24869,14 +24908,15 @@
|
|||
"integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
|
||||
},
|
||||
"browserslist": {
|
||||
"version": "4.24.5",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz",
|
||||
"integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==",
|
||||
"version": "4.28.1",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
|
||||
"integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
|
||||
"requires": {
|
||||
"caniuse-lite": "^1.0.30001716",
|
||||
"electron-to-chromium": "^1.5.149",
|
||||
"node-releases": "^2.0.19",
|
||||
"update-browserslist-db": "^1.1.3"
|
||||
"baseline-browser-mapping": "^2.9.0",
|
||||
"caniuse-lite": "^1.0.30001759",
|
||||
"electron-to-chromium": "^1.5.263",
|
||||
"node-releases": "^2.0.27",
|
||||
"update-browserslist-db": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"bser": {
|
||||
|
|
@ -24950,9 +24990,9 @@
|
|||
}
|
||||
},
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001718",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz",
|
||||
"integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw=="
|
||||
"version": "1.0.30001769",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001769.tgz",
|
||||
"integrity": "sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg=="
|
||||
},
|
||||
"case-sensitive-paths-webpack-plugin": {
|
||||
"version": "2.4.0",
|
||||
|
|
@ -25843,9 +25883,9 @@
|
|||
}
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.5.155",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.155.tgz",
|
||||
"integrity": "sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng=="
|
||||
"version": "1.5.286",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz",
|
||||
"integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A=="
|
||||
},
|
||||
"emittery": {
|
||||
"version": "0.8.1",
|
||||
|
|
@ -25868,12 +25908,12 @@
|
|||
"integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="
|
||||
},
|
||||
"enhanced-resolve": {
|
||||
"version": "5.18.1",
|
||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
|
||||
"integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
|
||||
"version": "5.19.0",
|
||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz",
|
||||
"integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.2.4",
|
||||
"tapable": "^2.2.0"
|
||||
"tapable": "^2.3.0"
|
||||
}
|
||||
},
|
||||
"entities": {
|
||||
|
|
@ -25963,9 +26003,9 @@
|
|||
}
|
||||
},
|
||||
"es-module-lexer": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
|
||||
"integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz",
|
||||
"integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw=="
|
||||
},
|
||||
"es-shim-unscopables": {
|
||||
"version": "1.0.0",
|
||||
|
|
@ -30636,9 +30676,9 @@
|
|||
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
|
||||
},
|
||||
"loader-runner": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz",
|
||||
"integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg=="
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz",
|
||||
"integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q=="
|
||||
},
|
||||
"loader-utils": {
|
||||
"version": "2.0.4",
|
||||
|
|
@ -30953,9 +30993,9 @@
|
|||
"integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw=="
|
||||
},
|
||||
"node-releases": {
|
||||
"version": "2.0.19",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
|
||||
"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw=="
|
||||
"version": "2.0.27",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
|
||||
"integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="
|
||||
},
|
||||
"normalize-path": {
|
||||
"version": "3.0.0",
|
||||
|
|
@ -33582,9 +33622,9 @@
|
|||
}
|
||||
},
|
||||
"tapable": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
|
||||
"integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ=="
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz",
|
||||
"integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg=="
|
||||
},
|
||||
"temp-dir": {
|
||||
"version": "2.0.0",
|
||||
|
|
@ -33637,9 +33677,9 @@
|
|||
}
|
||||
},
|
||||
"terser-webpack-plugin": {
|
||||
"version": "5.3.14",
|
||||
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz",
|
||||
"integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==",
|
||||
"version": "5.3.16",
|
||||
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz",
|
||||
"integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==",
|
||||
"requires": {
|
||||
"@jridgewell/trace-mapping": "^0.3.25",
|
||||
"jest-worker": "^27.4.5",
|
||||
|
|
@ -33910,9 +33950,9 @@
|
|||
"integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg=="
|
||||
},
|
||||
"update-browserslist-db": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
|
||||
"integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
|
||||
"integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
|
||||
"requires": {
|
||||
"escalade": "^3.2.0",
|
||||
"picocolors": "^1.1.1"
|
||||
|
|
@ -34023,9 +34063,9 @@
|
|||
}
|
||||
},
|
||||
"watchpack": {
|
||||
"version": "2.4.4",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz",
|
||||
"integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==",
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz",
|
||||
"integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==",
|
||||
"requires": {
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.1.2"
|
||||
|
|
@ -34045,34 +34085,35 @@
|
|||
"integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w=="
|
||||
},
|
||||
"webpack": {
|
||||
"version": "5.99.9",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.9.tgz",
|
||||
"integrity": "sha512-brOPwM3JnmOa+7kd3NsmOUOwbDAj8FT9xDsG3IW0MgbN9yZV7Oi/s/+MNQ/EcSMqw7qfoRyXPoeEWT8zLVdVGg==",
|
||||
"version": "5.105.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.0.tgz",
|
||||
"integrity": "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==",
|
||||
"requires": {
|
||||
"@types/eslint-scope": "^3.7.7",
|
||||
"@types/estree": "^1.0.6",
|
||||
"@types/estree": "^1.0.8",
|
||||
"@types/json-schema": "^7.0.15",
|
||||
"@webassemblyjs/ast": "^1.14.1",
|
||||
"@webassemblyjs/wasm-edit": "^1.14.1",
|
||||
"@webassemblyjs/wasm-parser": "^1.14.1",
|
||||
"acorn": "^8.14.0",
|
||||
"browserslist": "^4.24.0",
|
||||
"acorn": "^8.15.0",
|
||||
"acorn-import-phases": "^1.0.3",
|
||||
"browserslist": "^4.28.1",
|
||||
"chrome-trace-event": "^1.0.2",
|
||||
"enhanced-resolve": "^5.17.1",
|
||||
"es-module-lexer": "^1.2.1",
|
||||
"enhanced-resolve": "^5.19.0",
|
||||
"es-module-lexer": "^2.0.0",
|
||||
"eslint-scope": "5.1.1",
|
||||
"events": "^3.2.0",
|
||||
"glob-to-regexp": "^0.4.1",
|
||||
"graceful-fs": "^4.2.11",
|
||||
"json-parse-even-better-errors": "^2.3.1",
|
||||
"loader-runner": "^4.2.0",
|
||||
"loader-runner": "^4.3.1",
|
||||
"mime-types": "^2.1.27",
|
||||
"neo-async": "^2.6.2",
|
||||
"schema-utils": "^4.3.2",
|
||||
"tapable": "^2.1.1",
|
||||
"terser-webpack-plugin": "^5.3.11",
|
||||
"watchpack": "^2.4.1",
|
||||
"webpack-sources": "^3.2.3"
|
||||
"schema-utils": "^4.3.3",
|
||||
"tapable": "^2.3.0",
|
||||
"terser-webpack-plugin": "^5.3.16",
|
||||
"watchpack": "^2.5.1",
|
||||
"webpack-sources": "^3.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
|
|
@ -34100,9 +34141,9 @@
|
|||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
|
||||
},
|
||||
"schema-utils": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz",
|
||||
"integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==",
|
||||
"version": "4.3.3",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
|
||||
"integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
|
||||
"requires": {
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"ajv": "^8.9.0",
|
||||
|
|
@ -34265,9 +34306,9 @@
|
|||
}
|
||||
},
|
||||
"webpack-sources": {
|
||||
"version": "3.2.3",
|
||||
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
|
||||
"integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz",
|
||||
"integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg=="
|
||||
},
|
||||
"websocket-driver": {
|
||||
"version": "0.7.4",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue