+
{isStarred ?
:
}
{/* Need to make the text size smaller or else it wraps */}
diff --git a/src/modules/expanded-view/components/ExpandedViewImageContainer.tsx b/src/modules/expanded-view/components/ExpandedViewImageContainer.tsx
index 6ccfb49..72d7997 100644
--- a/src/modules/expanded-view/components/ExpandedViewImageContainer.tsx
+++ b/src/modules/expanded-view/components/ExpandedViewImageContainer.tsx
@@ -14,7 +14,7 @@ export function ExpandedViewImageContainer() {
const setFocusedImage = useExpandedViewAction("setFocusedImage");
return (
-
+
{/* Image Carousel Container */}
{data.images.length > 1 && (
)}
-
+
);
}
diff --git a/src/modules/expanded-view/components/ExpandedViewScrollingSection.tsx b/src/modules/expanded-view/components/ExpandedViewScrollingSection.tsx
index c0c7c2b..cc32b50 100644
--- a/src/modules/expanded-view/components/ExpandedViewScrollingSection.tsx
+++ b/src/modules/expanded-view/components/ExpandedViewScrollingSection.tsx
@@ -1,11 +1,14 @@
-import { DialogButton, Focusable, ScrollPanelGroup } from "@decky/ui";
+import { DialogButton, Focusable, Navigation, ScrollPanelGroup } from "@decky/ui";
import { useExpandedViewAction, useExpandedViewValue } from "../context";
import { ExpandedViewImageContainer } from "./ExpandedViewImageContainer";
+import { useThemeBrowserSharedAction } from "@/modules/theme-store/context";
export function ExpandedViewScrollingSection() {
const data = useExpandedViewValue("data");
const close = useExpandedViewAction("close");
+ const setTargetOverride = useThemeBrowserSharedAction("setTargetOverride");
+
return (
-
+
-
+
{/* Title / Version */}
-
+
{data.displayName}
{data.version}
{/* Author / Modified Date */}
-
+
{data.specifiedAuthor}
Last Updated {new Date(data.updated).toLocaleDateString()}
-
+
{/* Description */}
{/* Targets */}
-
+
Targets
-
+
{data.targets.map((target) => (
{
- // TODO: target navigation
- // setGlobalState("themeSearchOpts", { ...themeSearchOpts, filters: e });
- // setGlobalState("currentTab", "ThemeBrowser");
- // setGlobalState("forceScrollBackUp", true);
- // Navigation.NavigateBack();
+ setTargetOverride(target);
+ Navigation.NavigateBack();
}}
className="cl_expandedview_targetbutton"
>
{target}
))}
-
-
-
-
+
+
+
+
);
}
diff --git a/src/modules/expanded-view/context/ExpandedViewStore.tsx b/src/modules/expanded-view/context/ExpandedViewStore.tsx
index 269b89d..d26dc75 100644
--- a/src/modules/expanded-view/context/ExpandedViewStore.tsx
+++ b/src/modules/expanded-view/context/ExpandedViewStore.tsx
@@ -105,7 +105,7 @@ const expandedViewStore = createStore
((set, get) => {
const { data, isStarred } = get();
const { apiFetch, apiFullToken } = getCSSLoaderState();
if (!apiFullToken && !data.id) return;
- const response = await apiFetch(`/users/me/stars/${data.id}`, {
+ await apiFetch(`/users/me/stars/${data.id}`, {
method: isStarred ? "DELETE" : "POST",
});
const newIsStarred = !isStarred;
diff --git a/src/modules/expanded-view/pages/ExpandedViewPage.tsx b/src/modules/expanded-view/pages/ExpandedViewPage.tsx
index 956e98d..fb2ea65 100644
--- a/src/modules/expanded-view/pages/ExpandedViewPage.tsx
+++ b/src/modules/expanded-view/pages/ExpandedViewPage.tsx
@@ -15,10 +15,12 @@ export function ExpandedViewPage() {
if (error) return {error};
return (
-
-
-
-
+
);
}
diff --git a/src/modules/qam-tab-page/components/QamRefreshButton.tsx b/src/modules/qam-tab-page/components/QamRefreshButton.tsx
index 729b4ed..1abbe62 100644
--- a/src/modules/qam-tab-page/components/QamRefreshButton.tsx
+++ b/src/modules/qam-tab-page/components/QamRefreshButton.tsx
@@ -1,5 +1,5 @@
import { ButtonItem, PanelSectionRow } from "@decky/ui";
-import { useCSSLoaderAction, useCSSLoaderValue } from "@/backend";
+import { useCSSLoaderAction } from "@/backend";
export function QamRefreshButton() {
const reloadPlugin = useCSSLoaderAction("reloadPlugin");
diff --git a/src/modules/theme-store/components/BrowserSearchFields.tsx b/src/modules/theme-store/components/BrowserSearchFields.tsx
index 4e72835..24c2ac8 100644
--- a/src/modules/theme-store/components/BrowserSearchFields.tsx
+++ b/src/modules/theme-store/components/BrowserSearchFields.tsx
@@ -23,6 +23,9 @@ export function BrowserSearchFields() {
const setSearchOpts = useThemeBrowserStoreAction("setSearchOpts");
const refreshThemes = useThemeBrowserStoreAction("refreshThemes");
+ const targetOverride = useThemeBrowserSharedValue("targetOverride");
+ const setTargetOverride = useThemeBrowserSharedAction("setTargetOverride");
+
const browserCardSize = useThemeBrowserSharedValue("browserCardSize");
const setBrowserCardSize = useThemeBrowserSharedAction("setBrowserCardSize");
@@ -62,10 +65,12 @@ export function BrowserSearchFields() {
menuLabel="Filter"
rgOptions={formattedFilters}
strDefaultLabel="All"
- selectedOption={searchOpts.filters}
+ selectedOption={targetOverride ?? searchOpts.filters}
onChange={(value) => {
+ // When you select a new target, remove the global override
const newSearchOpts = { ...searchOpts, filters: value.data };
setSearchOpts(newSearchOpts);
+ setTargetOverride(null);
}}
/>
diff --git a/src/modules/theme-store/components/ThemeCard.tsx b/src/modules/theme-store/components/ThemeCard.tsx
index d248af1..c50da9c 100644
--- a/src/modules/theme-store/components/ThemeCard.tsx
+++ b/src/modules/theme-store/components/ThemeCard.tsx
@@ -25,7 +25,7 @@ export const ThemeCard = forwardRef(({ theme, si
const cols = size ?? browserCardSize;
const installStatus = useThemeInstallState(theme);
- const openTheme = useExpandedViewStateAction("openTheme");
+ const openTheme = useExpandedViewAction("openTheme");
const imageUrl =
theme?.images[0]?.id && theme.images[0].id !== "MISSING"
diff --git a/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx b/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx
index 85d3aa8..b7a4978 100644
--- a/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx
+++ b/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx
@@ -6,10 +6,12 @@ export type ColumnNumbers = 3 | 4 | 5;
interface ThemeBrowserSharedStoreValues {
browserCardSize: ColumnNumbers;
+ targetOverride: string | null;
}
interface ThemeBrowserSharedStoreActions {
setBrowserCardSize: (value: ColumnNumbers) => void;
+ setTargetOverride: (value: string | null) => void;
}
interface IThemeBrowserSharedStore
@@ -19,7 +21,9 @@ interface IThemeBrowserSharedStore
const themeBrowserSharedStore = createStore((set) => {
return {
browserCardSize: 3,
+ targetOverride: "",
setBrowserCardSize: (value: ColumnNumbers) => set({ browserCardSize: value }),
+ setTargetOverride: (value: string | null) => set({ targetOverride: value }),
};
});
diff --git a/src/styles/styles.css b/src/styles/styles.css
index 8e6a5b8..a8cf083 100644
--- a/src/styles/styles.css
+++ b/src/styles/styles.css
@@ -344,7 +344,7 @@
.cl_expandedview_container {
background: rgb(27, 40, 56) !important;
- padding: auto 1rem !important;
+ padding: 0 1rem !important;
gap: 1rem !important;
display: flex !important;
justify-content: space-between !important;
@@ -404,6 +404,14 @@
}
}
+.cl_expandedview_infocontainer {
+ padding-left: 1rem;
+ padding-right: 1rem;
+ display: flex;
+ flex-direction: column;
+ gap: 0.25rem
+}
+
.cl_expandedview_title {
white-space: nowrap !important;
text-overflow: ellipsis !important;
From e8a349cf2444496300f73a712eb120f6d6450aab Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Sat, 12 Oct 2024 14:04:26 -0600
Subject: [PATCH 21/53] fix preset dropdown
---
package.json | 3 ++-
src/backend/state/theme-store.ts | 2 ++
.../PresetSelectionDropdown.tsx | 6 ++++--
.../components/ExpandedViewButtonsSection.tsx | 1 +
.../theme-store/context/ThemeBrowserStore.tsx | 5 ++++-
src/styles/styles-as-string.ts | 14 +++++++++++++-
6 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/package.json b/package.json
index e2bcc14..c4d8ae0 100644
--- a/package.json
+++ b/package.json
@@ -62,5 +62,6 @@
"react-dom"
]
}
- }
+ },
+ "packageManager": "pnpm@9.9.0+sha512.60c18acd138bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1"
}
diff --git a/src/backend/state/theme-store.ts b/src/backend/state/theme-store.ts
index cdb0b77..5007c3c 100644
--- a/src/backend/state/theme-store.ts
+++ b/src/backend/state/theme-store.ts
@@ -373,6 +373,7 @@ export const createCSSLoaderStore = (backend: Backend) =>
} catch (error) {}
},
installTheme: async (themeId: string) => {
+ set({ isWorking: true });
try {
await backend.downloadThemeFromUrl(themeId, apiUrl);
const { updateStatuses, reloadThemes } = get();
@@ -381,6 +382,7 @@ export const createCSSLoaderStore = (backend: Backend) =>
updateStatusesClone.push([themeId, "installed", false]);
set({ updateStatuses: updateStatusesClone });
} catch (error) {}
+ set({ isWorking: false });
},
toggleTheme: async (
theme: Theme,
diff --git a/src/lib/components/preset-selection-dropdown/PresetSelectionDropdown.tsx b/src/lib/components/preset-selection-dropdown/PresetSelectionDropdown.tsx
index 3b2c585..23edb86 100644
--- a/src/lib/components/preset-selection-dropdown/PresetSelectionDropdown.tsx
+++ b/src/lib/components/preset-selection-dropdown/PresetSelectionDropdown.tsx
@@ -9,11 +9,13 @@ export function PresetSelectionDropdown() {
const themes = useCSSLoaderValue("themes");
const selectedPreset = useCSSLoaderValue("selectedPreset");
const changePreset = useCSSLoaderAction("changePreset");
- const presets = useMemo(() => themes.filter((e) => e.flags.includes(Flags.isPreset)), [themes]);
- const hasInvalidPresetState = presets.length > 1;
+ const presets = themes.filter((e) => e.flags.includes(Flags.isPreset));
+ const hasInvalidPresetState = presets.filter((e) => e.enabled).length > 1;
const [render, rerender] = useForcedRerender();
+ console.log(themes, presets, selectedPreset, hasInvalidPresetState);
+
return (
<>
{render && (
diff --git a/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx b/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx
index 27a347b..ff42658 100644
--- a/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx
+++ b/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx
@@ -12,6 +12,7 @@ export function ExpandedViewButtonsSection() {
const toggleStar = useExpandedViewAction("toggleStar");
const apiFullToken = useCSSLoaderValue("apiFullToken");
+ // Because this is an action handled by the expanded view store and not the backend theme store, we can't just use the backend's isWorking
const [starButtonBlurred, setStarButtonBlurred] = useState(false);
const isWorking = useCSSLoaderValue("isWorking");
diff --git a/src/modules/theme-store/context/ThemeBrowserStore.tsx b/src/modules/theme-store/context/ThemeBrowserStore.tsx
index a77dfec..85f48ae 100644
--- a/src/modules/theme-store/context/ThemeBrowserStore.tsx
+++ b/src/modules/theme-store/context/ThemeBrowserStore.tsx
@@ -103,7 +103,10 @@ export function ThemeBrowserStoreProvider({
getThemes();
}
},
- refreshThemes: async () => {},
+ refreshThemes: async () => {
+ const { getThemes } = get();
+ await getThemes();
+ },
getThemes: async () => {
try {
const { searchOpts } = get();
diff --git a/src/styles/styles-as-string.ts b/src/styles/styles-as-string.ts
index bfa56dd..bcdb4d1 100644
--- a/src/styles/styles-as-string.ts
+++ b/src/styles/styles-as-string.ts
@@ -1,6 +1,10 @@
import { gamepadDialogClasses } from "@decky/ui";
export const styles = `
+/* THIS FILE IS NOT USED IN BUILD */
+/* ANY MODIFICATIONS HERE MUST BE COPY PASTED INTO stylesAsString.ts */
+/* THAT IS NEEDED FOR STATIC CLASS INJECTIOn */
+
.flex {
display: flex !important;
}
@@ -343,7 +347,7 @@ export const styles = `
.cl_expandedview_container {
background: rgb(27, 40, 56) !important;
- padding: auto 1rem !important;
+ padding: 0 1rem !important;
gap: 1rem !important;
display: flex !important;
justify-content: space-between !important;
@@ -403,6 +407,14 @@ export const styles = `
}
}
+.cl_expandedview_infocontainer {
+ padding-left: 1rem;
+ padding-right: 1rem;
+ display: flex;
+ flex-direction: column;
+ gap: 0.25rem
+}
+
.cl_expandedview_title {
white-space: nowrap !important;
text-overflow: ellipsis !important;
From c32077a077bdfa55adf85c8c65ca93fd34e80c72 Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Sat, 12 Oct 2024 14:22:23 -0600
Subject: [PATCH 22/53] fix styling on qam tab page
---
src/modules/qam-tab-page/pages/QamTabPage.tsx | 4 +++-
src/styles/styles.css | 5 +++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/modules/qam-tab-page/pages/QamTabPage.tsx b/src/modules/qam-tab-page/pages/QamTabPage.tsx
index 19ce28f..4ff9838 100644
--- a/src/modules/qam-tab-page/pages/QamTabPage.tsx
+++ b/src/modules/qam-tab-page/pages/QamTabPage.tsx
@@ -21,7 +21,9 @@ export function QamTabPage() {
-
+
+
+
>
);
}
diff --git a/src/styles/styles.css b/src/styles/styles.css
index a8cf083..3bd2cec 100644
--- a/src/styles/styles.css
+++ b/src/styles/styles.css
@@ -1,6 +1,7 @@
/* THIS FILE IS NOT USED IN BUILD */
-/* ANY MODIFICATIONS HERE MUST BE COPY PASTED INTO stylesAsString.ts */
-/* THAT IS NEEDED FOR STATIC CLASS INJECTIOn */
+/* ANY MODIFICATIONS HERE MUST BE COPY PASTED INTO styles-as-string.ts */
+/* THAT IS NEEDED FOR STATIC CLASS INJECTION */
+/* LINT ERRORS ARE TO BE EXPECTED, BECAUSE THIS USES TEMPLATE LITERALS THAT WILL BE FILLED IN BY styles-as-string.ts */
.flex {
display: flex !important;
From fc872d4140c6149910ca48791a913a6a26d86f44 Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Sat, 12 Oct 2024 15:02:39 -0600
Subject: [PATCH 23/53] fix dummy function result padding
---
src/decky-patches/decky-patch-store.ts | 1 +
.../qam-tab-page/components/QamDummyFunctionBoundary.tsx | 6 +++---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/decky-patches/decky-patch-store.ts b/src/decky-patches/decky-patch-store.ts
index ccb6690..fee5b98 100644
--- a/src/decky-patches/decky-patch-store.ts
+++ b/src/decky-patches/decky-patch-store.ts
@@ -25,6 +25,7 @@ const createDeckyPatchStore = (backend: Backend) =>
initializeStore: async () => {
try {
const shouldEnable = await backend.storeRead("enableNavPatch");
+ return;
if (shouldEnable) {
const patch = enableNavPatch();
set({ navPatchInstance: patch });
diff --git a/src/modules/qam-tab-page/components/QamDummyFunctionBoundary.tsx b/src/modules/qam-tab-page/components/QamDummyFunctionBoundary.tsx
index 0f8332e..9aff28a 100644
--- a/src/modules/qam-tab-page/components/QamDummyFunctionBoundary.tsx
+++ b/src/modules/qam-tab-page/components/QamDummyFunctionBoundary.tsx
@@ -1,5 +1,5 @@
import { useCSSLoaderValue } from "@/backend";
-import { PanelSectionRow } from "@decky/ui";
+import { PanelSection, PanelSectionRow } from "@decky/ui";
export function QamDummyFunctionBoundary({ children }: { children: React.ReactNode }) {
const dummyFunctionResult = useCSSLoaderValue("dummyFunctionResult");
@@ -7,12 +7,12 @@ export function QamDummyFunctionBoundary({ children }: { children: React.ReactNo
if (!dummyFunctionResult) {
return (
<>
-
+
CSS Loader failed to initialize, try reloading, and if that doesn't work, try restarting
your deck.
-
+
>
);
}
From ba538cf4757d824c369c62ad17bbbedfa4a61236 Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Sat, 12 Oct 2024 15:36:42 -0600
Subject: [PATCH 24/53] add visual feedback to refresh button
---
src/backend/services/backend-service.ts | 8 +++++-
src/backend/state/theme-store.ts | 26 +++++++++++++++----
.../unminify-mode/dump-mappings.ts | 14 ----------
.../components/QamRefreshButton.tsx | 5 +++-
4 files changed, 32 insertions(+), 21 deletions(-)
delete mode 100644 src/decky-patches/unminify-mode/dump-mappings.ts
diff --git a/src/backend/services/backend-service.ts b/src/backend/services/backend-service.ts
index 79cbb5f..003f551 100644
--- a/src/backend/services/backend-service.ts
+++ b/src/backend/services/backend-service.ts
@@ -22,7 +22,13 @@ export class Backend {
await Backend.repository.call<[], void>("reset", []);
}
async dummyFunction(): Promise {
- return await Backend.repository.call<[], boolean>("dummy_function", []);
+ // While most of the try catching should happen in the stores, this makes sense here
+ try {
+ const value = await Backend.repository.call<[], boolean>("dummy_function", []);
+ return value;
+ } catch (error) {
+ return false;
+ }
}
async storeRead(key: string) {
return Backend.repository.call<[string], string>("store_read", [key]);
diff --git a/src/backend/state/theme-store.ts b/src/backend/state/theme-store.ts
index 5007c3c..8289e22 100644
--- a/src/backend/state/theme-store.ts
+++ b/src/backend/state/theme-store.ts
@@ -171,7 +171,9 @@ export const createCSSLoaderStore = (backend: Backend) =>
const { bulkThemeUpdateCheck, scheduleBulkThemeUpdateCheck } = get();
await bulkThemeUpdateCheck();
scheduleBulkThemeUpdateCheck();
- } catch (error) {}
+ } catch (error) {
+ console.log("Error During Initialzation", error);
+ }
},
deactivate: () => {
const { updateCheckTimeout } = get();
@@ -181,17 +183,31 @@ export const createCSSLoaderStore = (backend: Backend) =>
backend.toast("CSS Loader", message);
},
reloadPlugin: async () => {
+ set({ isWorking: true });
try {
- const { reloadThemes, bulkThemeUpdateCheck } = get();
- await reloadThemes();
- await bulkThemeUpdateCheck();
+ const { reloadThemes, initializeStore, bulkThemeUpdateCheck, dummyFunctionResult } =
+ get();
+
+ // If the dummy func result is false, the plugin never initialized properly anyway, so we should just re-initialize the whole thing.
+ if (dummyFunctionResult === false) {
+ await initializeStore();
+ } else {
+ // Otherwise, we can just reload the necessary stuff
+ const dummyFunctionResult = await backend.dummyFunction();
+ set({ dummyFunctionResult });
+ await reloadThemes();
+ await bulkThemeUpdateCheck();
+ }
} catch (error) {}
+ set({ isWorking: false });
},
reloadThemes: async () => {
try {
await backend.reset();
await get().getThemes();
- } catch (error) {}
+ } catch (error) {
+ console.error("Error Reloading Themes", error);
+ }
},
refreshToken: async (): Promise => {
const { apiFullToken, apiTokenExpireDate } = get();
diff --git a/src/decky-patches/unminify-mode/dump-mappings.ts b/src/decky-patches/unminify-mode/dump-mappings.ts
deleted file mode 100644
index 8a76b63..0000000
--- a/src/decky-patches/unminify-mode/dump-mappings.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { saveMappings } from "../python";
-
-export async function dumpMappings() {
- try {
- if (!window.DFL) return;
- const map = window.DFL.classModuleMap as Map;
- if (!map) return;
- const jsonStr = JSON.stringify(Object.fromEntries(map));
-
- await saveMappings(jsonStr);
- } catch (error) {
- console.error("ERROR SAVING MAPPINGS", error);
- }
-}
diff --git a/src/modules/qam-tab-page/components/QamRefreshButton.tsx b/src/modules/qam-tab-page/components/QamRefreshButton.tsx
index 1abbe62..6ce94f2 100644
--- a/src/modules/qam-tab-page/components/QamRefreshButton.tsx
+++ b/src/modules/qam-tab-page/components/QamRefreshButton.tsx
@@ -1,12 +1,15 @@
import { ButtonItem, PanelSectionRow } from "@decky/ui";
-import { useCSSLoaderAction } from "@/backend";
+import { useCSSLoaderAction, useCSSLoaderValue } from "@/backend";
export function QamRefreshButton() {
const reloadPlugin = useCSSLoaderAction("reloadPlugin");
+ const isWorking = useCSSLoaderValue("isWorking");
return (
{
+ console.log("TEST");
void reloadPlugin();
}}
layout="below"
From 8d4c62cd328002ed0c02bc524ae927b44dec3bc4 Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Sat, 12 Oct 2024 15:40:38 -0600
Subject: [PATCH 25/53] focus refresh button after refresh
---
.../components/QamRefreshButton.tsx | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/modules/qam-tab-page/components/QamRefreshButton.tsx b/src/modules/qam-tab-page/components/QamRefreshButton.tsx
index 6ce94f2..7153616 100644
--- a/src/modules/qam-tab-page/components/QamRefreshButton.tsx
+++ b/src/modules/qam-tab-page/components/QamRefreshButton.tsx
@@ -1,16 +1,31 @@
import { ButtonItem, PanelSectionRow } from "@decky/ui";
import { useCSSLoaderAction, useCSSLoaderValue } from "@/backend";
+import { useEffect, useRef } from "react";
export function QamRefreshButton() {
const reloadPlugin = useCSSLoaderAction("reloadPlugin");
const isWorking = useCSSLoaderValue("isWorking");
+
+ const refreshButtonRef = useRef(null);
+
+ useEffect(() => {
+ console.log(refreshButtonRef.current);
+ });
+
+ async function handleRefresh() {
+ await reloadPlugin();
+ // This just ensures focus isn't lost
+ refreshButtonRef.current?.focus();
+ }
+
return (
{
- console.log("TEST");
- void reloadPlugin();
+ void handleRefresh();
}}
layout="below"
>
From 58b49efbcac56592a5d5b8f238408fa1c6e4d36e Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Sat, 12 Oct 2024 16:44:54 -0600
Subject: [PATCH 26/53] begin work on auto-style-commit script
---
commit-styles-macos.sh | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100755 commit-styles-macos.sh
diff --git a/commit-styles-macos.sh b/commit-styles-macos.sh
new file mode 100755
index 0000000..67ef9b1
--- /dev/null
+++ b/commit-styles-macos.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+# TODO: NOT FINISHED
+
+# This uses macos' sed, which is different from the one in linux
+
+css_file_path="$(dirname "$0")/src/styles/styles.css"
+css_as_string_path="$(dirname "$0")/src/styles/styles-as-string.ts"
+
+# Read the content of the CSS file, ignoring lines that start with '/*'
+css_content=$(sed '/^\s*\/\*/d' "$css_file_path")
+
+export_header_line_number=$(grep -n "export const styles" $css_as_string_path | cut -d: -f1)
+echo export_header_line_number: $export_header_line_number
\ No newline at end of file
From b909ed14fd3e831e7961d9f4a1df358ca385065e Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Sat, 12 Oct 2024 16:47:30 -0600
Subject: [PATCH 27/53] fix selected preset and style fixes
---
.../decky-backend-repository-impl.ts | 2 ++
src/backend/state/theme-store.ts | 8 +++++++-
.../components/ExpandedViewButtonsSection.tsx | 11 +++++++----
.../components/ExpandedViewScrollingSection.tsx | 2 +-
.../expanded-view/pages/ExpandedViewPage.tsx | 7 ++++---
.../context/ThemeBrowserSharedStore.tsx | 2 ++
.../theme-store/context/ThemeBrowserStore.tsx | 4 ++++
src/styles/styles-as-string.ts | 17 +++++++++++++----
src/styles/styles.css | 13 +++++++++++++
9 files changed, 53 insertions(+), 13 deletions(-)
diff --git a/src/backend-impl/decky-backend-repository-impl.ts b/src/backend-impl/decky-backend-repository-impl.ts
index 1d6f369..4735fb0 100644
--- a/src/backend-impl/decky-backend-repository-impl.ts
+++ b/src/backend-impl/decky-backend-repository-impl.ts
@@ -17,6 +17,8 @@ class DeckyBackendRepository implements IBackendRepository {
async fetch(url: string, request: RequestInit) {
try {
console.debug("CSSLOADER FETCH", url, request);
+ // TODO: Think this is a decky types issue
+ // @ts-ignore
const res = await fetchNoCors(url, request);
if (!res.ok) {
throw new Error(`Res Not Okay - Code ${res.status}`);
diff --git a/src/backend/state/theme-store.ts b/src/backend/state/theme-store.ts
index 8289e22..427f9e9 100644
--- a/src/backend/state/theme-store.ts
+++ b/src/backend/state/theme-store.ts
@@ -145,7 +145,11 @@ export const createCSSLoaderStore = (backend: Backend) =>
set({ backendVersion });
const themes = (await backend.getThemes()) ?? [];
- set({ themes, selectedPreset: themes.find((e) => e.flags.includes(Flags.isPreset)) });
+ console.log("THEMES", themes.length, themes.filter((e) => e.enabled).length);
+ set({
+ themes,
+ selectedPreset: themes.find((e) => e.flags.includes(Flags.isPreset) && e.enabled),
+ });
const themePath = await backend.fetchThemePath();
set({ themeRootPath: themePath });
@@ -284,7 +288,9 @@ export const createCSSLoaderStore = (backend: Backend) =>
async function fetchThemeIDS(idsToQuery: string[]): Promise {
const queryStr = "?ids=" + idsToQuery.join(".");
try {
+ console.log("FETCHTHEMEIDS STRING", themes.length);
const value = await apiFetch(`/themes/ids${queryStr}`);
+ console.log("VALUE", value);
if (value) return value;
} catch {}
return [];
diff --git a/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx b/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx
index ff42658..600efeb 100644
--- a/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx
+++ b/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx
@@ -1,7 +1,7 @@
import { shortenNumber, useThemeInstallState } from "@/lib";
import { useExpandedViewAction, useExpandedViewValue } from "../context";
import { FaRegStar, FaStar } from "react-icons/fa";
-import { DialogButton } from "@decky/ui";
+import { DialogButton, Focusable } from "@decky/ui";
import { useEffect, useRef, useState } from "react";
import { useCSSLoaderAction, useCSSLoaderValue } from "@/backend";
import { ImCog } from "react-icons/im";
@@ -36,8 +36,10 @@ export function ExpandedViewButtonsSection() {
}
}, [downloadButtonRef, hasBeenFocused]);
+ console.log("INSTALL STATUS, ", installStatus);
+
return (
-
+
{/* Star */}
@@ -81,7 +83,8 @@ export function ExpandedViewButtonsSection() {
}}
>
- {installStatus === "installed" && "Reinstall"}
+ {/* Technically 'local' should mean a remote copy doesn't exist, but there might be weird network race conditions on the install status check */}
+ {(installStatus === "installed" || installStatus === "local") && "Reinstall"}
{installStatus === "outdated" && "Update"}
{installStatus === "notinstalled" && "Install"}
@@ -107,6 +110,6 @@ export function ExpandedViewButtonsSection() {
)}
-
+
);
}
diff --git a/src/modules/expanded-view/components/ExpandedViewScrollingSection.tsx b/src/modules/expanded-view/components/ExpandedViewScrollingSection.tsx
index cc32b50..cc6090a 100644
--- a/src/modules/expanded-view/components/ExpandedViewScrollingSection.tsx
+++ b/src/modules/expanded-view/components/ExpandedViewScrollingSection.tsx
@@ -61,7 +61,7 @@ export function ExpandedViewScrollingSection() {
{/* Targets */}
Targets
-
+
{data.targets.map((target) => (
-
-
+
+
-
+
);
}
diff --git a/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx b/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx
index b7a4978..754d531 100644
--- a/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx
+++ b/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx
@@ -27,6 +27,8 @@ const themeBrowserSharedStore = createStore((set) => {
};
});
+export const getThemeBrowserSharedState = () => themeBrowserSharedStore.getState();
+
const useThemeBrowserSharedState = (fn: (state: IThemeBrowserSharedStore) => any) =>
useStore(themeBrowserSharedStore, fn);
diff --git a/src/modules/theme-store/context/ThemeBrowserStore.tsx b/src/modules/theme-store/context/ThemeBrowserStore.tsx
index 85f48ae..87135cf 100644
--- a/src/modules/theme-store/context/ThemeBrowserStore.tsx
+++ b/src/modules/theme-store/context/ThemeBrowserStore.tsx
@@ -3,6 +3,7 @@ import { FilterQueryResponse, ThemeQueryRequest, ThemeQueryResponse } from "@/ty
import { StoreApi, createStore, useStore } from "zustand";
import { getCSSLoaderState } from "@/backend";
import { isEqual } from "lodash";
+import { getThemeBrowserSharedState } from "./ThemeBrowserSharedStore";
interface ThemeBrowserStoreValues {
themes: ThemeQueryResponse;
@@ -110,6 +111,9 @@ export function ThemeBrowserStoreProvider({
getThemes: async () => {
try {
const { searchOpts } = get();
+ const { targetOverride } = getThemeBrowserSharedState();
+ const formattedSearchOpts = { ...searchOpts };
+ targetOverride && (formattedSearchOpts.filters = targetOverride);
const { apiFetch } = getCSSLoaderState();
const response = await apiFetch(
diff --git a/src/styles/styles-as-string.ts b/src/styles/styles-as-string.ts
index bcdb4d1..09c0e58 100644
--- a/src/styles/styles-as-string.ts
+++ b/src/styles/styles-as-string.ts
@@ -1,10 +1,6 @@
import { gamepadDialogClasses } from "@decky/ui";
export const styles = `
-/* THIS FILE IS NOT USED IN BUILD */
-/* ANY MODIFICATIONS HERE MUST BE COPY PASTED INTO stylesAsString.ts */
-/* THAT IS NEEDED FOR STATIC CLASS INJECTIOn */
-
.flex {
display: flex !important;
}
@@ -356,6 +352,8 @@ export const styles = `
.cl_expandedview_scrollpanel {
display: flex !important;
margin-bottom: 40px !important;
+ /* To be completely honest, I'm not sure why this isn't inherited from fullscrenroute_container */
+ height: calc(100vh - 40px) !important
}
.cl_expandedview_themedatacontainer {
@@ -436,6 +434,12 @@ export const styles = `
color: rgb(26, 159, 255) !important;
}
+.cl_expandedview_targetbuttonscontainer {
+ display: flex !important;
+ gap: 0.25rem !important;
+ padding-bottom: 80px !important;
+}
+
.cl_expandedview_targetbutton {
background: rgba(59, 90, 114, 0.5) !important;
color: rgb(26, 159, 255) !important;
@@ -443,6 +447,11 @@ export const styles = `
width: fit-content !important;
}
+.cl_expandedview_targetbutton.gpfocuswithin {
+ background: white !important;
+ color: black !important;
+}
+
.cl_expandedview_buttonscontainer {
position: sticky !important;
padding-top: 1em !important;
diff --git a/src/styles/styles.css b/src/styles/styles.css
index 3bd2cec..ab807c8 100644
--- a/src/styles/styles.css
+++ b/src/styles/styles.css
@@ -354,6 +354,8 @@
.cl_expandedview_scrollpanel {
display: flex !important;
margin-bottom: 40px !important;
+ /* To be completely honest, I'm not sure why this isn't inherited from fullscrenroute_container */
+ height: calc(100vh - 40px) !important
}
.cl_expandedview_themedatacontainer {
@@ -434,6 +436,12 @@
color: rgb(26, 159, 255) !important;
}
+.cl_expandedview_targetbuttonscontainer {
+ display: flex !important;
+ gap: 0.25rem !important;
+ padding-bottom: 80px !important;
+}
+
.cl_expandedview_targetbutton {
background: rgba(59, 90, 114, 0.5) !important;
color: rgb(26, 159, 255) !important;
@@ -441,6 +449,11 @@
width: fit-content !important;
}
+.cl_expandedview_targetbutton.gpfocuswithin {
+ background: white !important;
+ color: black !important;
+}
+
.cl_expandedview_buttonscontainer {
position: sticky !important;
padding-top: 1em !important;
From 102e5de65fb40f76c9a0091ee9874ccbf85a1eea Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Sat, 12 Oct 2024 17:31:00 -0600
Subject: [PATCH 28/53] final fixes to expanded view
---
src/backend/state/theme-store.ts | 3 -
.../components/ExpandedViewButtonsSection.tsx | 62 ++++++++++---------
.../components/ExpandedViewImageContainer.tsx | 2 +-
src/styles/styles-as-string.ts | 53 ++++++++--------
src/styles/styles.css | 53 ++++++++--------
5 files changed, 89 insertions(+), 84 deletions(-)
diff --git a/src/backend/state/theme-store.ts b/src/backend/state/theme-store.ts
index 427f9e9..7143ceb 100644
--- a/src/backend/state/theme-store.ts
+++ b/src/backend/state/theme-store.ts
@@ -145,7 +145,6 @@ export const createCSSLoaderStore = (backend: Backend) =>
set({ backendVersion });
const themes = (await backend.getThemes()) ?? [];
- console.log("THEMES", themes.length, themes.filter((e) => e.enabled).length);
set({
themes,
selectedPreset: themes.find((e) => e.flags.includes(Flags.isPreset) && e.enabled),
@@ -288,9 +287,7 @@ export const createCSSLoaderStore = (backend: Backend) =>
async function fetchThemeIDS(idsToQuery: string[]): Promise {
const queryStr = "?ids=" + idsToQuery.join(".");
try {
- console.log("FETCHTHEMEIDS STRING", themes.length);
const value = await apiFetch(`/themes/ids${queryStr}`);
- console.log("VALUE", value);
if (value) return value;
} catch {}
return [];
diff --git a/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx b/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx
index 600efeb..ab6f48f 100644
--- a/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx
+++ b/src/modules/expanded-view/components/ExpandedViewButtonsSection.tsx
@@ -73,41 +73,43 @@ export function ExpandedViewButtonsSection() {
{shortenNumber(data.download.downloadCount) ?? data.download.downloadCount} Download
{data.download.downloadCount === 1 ? "" : "s"}
- {
- installTheme(data.id);
- }}
- >
-
- {/* Technically 'local' should mean a remote copy doesn't exist, but there might be weird network race conditions on the install status check */}
- {(installStatus === "installed" || installStatus === "local") && "Reinstall"}
- {installStatus === "outdated" && "Update"}
- {installStatus === "notinstalled" && "Install"}
-
-
- {installStatus === "installed" && (
+
{
- // TODO: THEME SETTINGS MODAL
- // showModal(
- // e.id === fullThemeData.id)?.id ||
- // // using name here because in submissions id is different
- // installedThemes.find((e) => e.name === fullThemeData.name)!.id
- // }
- // />
- // );
+ installTheme(data.id);
}}
- className="relative"
>
-
+
+ {/* Technically 'local' should mean a remote copy doesn't exist, but there might be weird network race conditions on the install status check */}
+ {(installStatus === "installed" || installStatus === "local") && "Reinstall"}
+ {installStatus === "outdated" && "Update"}
+ {installStatus === "notinstalled" && "Install"}
+
- )}
+ {(installStatus === "installed" || installStatus === "local") && (
+ {
+ // TODO: THEME SETTINGS MODAL
+ // showModal(
+ // e.id === fullThemeData.id)?.id ||
+ // // using name here because in submissions id is different
+ // installedThemes.find((e) => e.name === fullThemeData.name)!.id
+ // }
+ // />
+ // );
+ }}
+ className="cl_expandedview_configure_button"
+ >
+
+
+ )}
+
diff --git a/src/modules/expanded-view/components/ExpandedViewImageContainer.tsx b/src/modules/expanded-view/components/ExpandedViewImageContainer.tsx
index 72d7997..590a276 100644
--- a/src/modules/expanded-view/components/ExpandedViewImageContainer.tsx
+++ b/src/modules/expanded-view/components/ExpandedViewImageContainer.tsx
@@ -35,7 +35,7 @@ export function ExpandedViewImageContainer() {
width={imageCarouselEntryWidth}
height={imageCarouselEntryHeight}
style={{ objectFit: "contain" }}
- src={`https://api.deckthemes.com/blobs/${focusedImageId}`}
+ src={`https://api.deckthemes.com/blobs/${image.id}`}
/>
))}
diff --git a/src/styles/styles-as-string.ts b/src/styles/styles-as-string.ts
index 09c0e58..d201bb9 100644
--- a/src/styles/styles-as-string.ts
+++ b/src/styles/styles-as-string.ts
@@ -78,10 +78,10 @@ export const styles = `
}
.absolute-center {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
+ position: absolute !important;
+ top: 50% !important;
+ left: 50% !important;
+ transform: translate(-50%, -50%) !important;
}
/* Fullscreen Routes */
@@ -352,8 +352,7 @@ export const styles = `
.cl_expandedview_scrollpanel {
display: flex !important;
margin-bottom: 40px !important;
- /* To be completely honest, I'm not sure why this isn't inherited from fullscrenroute_container */
- height: calc(100vh - 40px) !important
+ height: calc(100vh - 80px) !important
}
.cl_expandedview_themedatacontainer {
@@ -392,25 +391,24 @@ export const styles = `
}
.cl_expandedview_imagenumbercontainer {
- .image-number-container {
- width: 3em !important;
- height: 2em !important;
- display: flex !important;
- align-items: center !important;
- justify-content: center !important;
- background: #000a !important;
- position: absolute !important;
- bottom: 1em !important;
- right: 1em !important;
- }
+ width: 3em !important;
+ height: 2em !important;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: center !important;
+ background: #000a !important;
+ position: absolute !important;
+ bottom: 1em !important;
+ right: 1em !important;
}
.cl_expandedview_infocontainer {
- padding-left: 1rem;
- padding-right: 1rem;
- display: flex;
- flex-direction: column;
- gap: 0.25rem
+ padding-left: 1rem !important;
+ padding-right: 1rem !important;
+ padding-bottom: 1rem !important;
+ display: flex !important;
+ flex-direction: column !important;
+ gap: 0.25rem !important;
}
.cl_expandedview_title {
@@ -437,7 +435,6 @@ export const styles = `
.cl_expandedview_targetbuttonscontainer {
display: flex !important;
gap: 0.25rem !important;
- padding-bottom: 80px !important;
}
.cl_expandedview_targetbutton {
@@ -454,7 +451,7 @@ export const styles = `
.cl_expandedview_buttonscontainer {
position: sticky !important;
- padding-top: 1em !important;
+ padding-top: 1rem !important;
flex: 1 !important;
display: flex !important;
flex-direction: column !important;
@@ -463,7 +460,7 @@ export const styles = `
.cl_expandedview_singlebuttoncontainer {
background: #2a4153 !important;
- padding: 1em !important;
+ padding: 1rem !important;
}
.cl_expandedview_starbutton {
@@ -485,4 +482,10 @@ export const styles = `
.cl_expandedview_bluebutton.gpfocuswithin {
background: white !important;
}
+
+.cl_expandedview_configure_button {
+ width: 1rem !important;
+ min-width: 1rem !important;
+ position: relative;
+}
`;
diff --git a/src/styles/styles.css b/src/styles/styles.css
index ab807c8..d179ee2 100644
--- a/src/styles/styles.css
+++ b/src/styles/styles.css
@@ -80,10 +80,10 @@
}
.absolute-center {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
+ position: absolute !important;
+ top: 50% !important;
+ left: 50% !important;
+ transform: translate(-50%, -50%) !important;
}
/* Fullscreen Routes */
@@ -354,8 +354,7 @@
.cl_expandedview_scrollpanel {
display: flex !important;
margin-bottom: 40px !important;
- /* To be completely honest, I'm not sure why this isn't inherited from fullscrenroute_container */
- height: calc(100vh - 40px) !important
+ height: calc(100vh - 80px) !important
}
.cl_expandedview_themedatacontainer {
@@ -394,25 +393,24 @@
}
.cl_expandedview_imagenumbercontainer {
- .image-number-container {
- width: 3em !important;
- height: 2em !important;
- display: flex !important;
- align-items: center !important;
- justify-content: center !important;
- background: #000a !important;
- position: absolute !important;
- bottom: 1em !important;
- right: 1em !important;
- }
+ width: 3em !important;
+ height: 2em !important;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: center !important;
+ background: #000a !important;
+ position: absolute !important;
+ bottom: 1em !important;
+ right: 1em !important;
}
.cl_expandedview_infocontainer {
- padding-left: 1rem;
- padding-right: 1rem;
- display: flex;
- flex-direction: column;
- gap: 0.25rem
+ padding-left: 1rem !important;
+ padding-right: 1rem !important;
+ padding-bottom: 1rem !important;
+ display: flex !important;
+ flex-direction: column !important;
+ gap: 0.25rem !important;
}
.cl_expandedview_title {
@@ -439,7 +437,6 @@
.cl_expandedview_targetbuttonscontainer {
display: flex !important;
gap: 0.25rem !important;
- padding-bottom: 80px !important;
}
.cl_expandedview_targetbutton {
@@ -456,7 +453,7 @@
.cl_expandedview_buttonscontainer {
position: sticky !important;
- padding-top: 1em !important;
+ padding-top: 1rem !important;
flex: 1 !important;
display: flex !important;
flex-direction: column !important;
@@ -465,7 +462,7 @@
.cl_expandedview_singlebuttoncontainer {
background: #2a4153 !important;
- padding: 1em !important;
+ padding: 1rem !important;
}
.cl_expandedview_starbutton {
@@ -486,4 +483,10 @@
}
.cl_expandedview_bluebutton.gpfocuswithin {
background: white !important;
+}
+
+.cl_expandedview_configure_button {
+ width: 1rem !important;
+ min-width: 1rem !important;
+ position: relative;
}
\ No newline at end of file
From b182d8167f70fc656ac0bd24c204b965d6426b0b Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Wed, 6 Nov 2024 16:27:22 -0700
Subject: [PATCH 29/53] clean up unused dependencies and port rollup config
---
package.json | 14 +-
pnpm-lock.yaml | 1240 ++++++----------------------------------------
rollup.config.js | 66 +--
3 files changed, 177 insertions(+), 1143 deletions(-)
diff --git a/package.json b/package.json
index c4d8ae0..d616242 100644
--- a/package.json
+++ b/package.json
@@ -27,26 +27,18 @@
"homepage": "https://github.com/SteamDeckHomebrew/decky-plugin-template#readme",
"devDependencies": {
"@rollup/plugin-alias": "^5.1.0",
- "@rollup/plugin-commonjs": "^26.0.1",
- "@rollup/plugin-json": "^6.1.0",
- "@rollup/plugin-node-resolve": "^15.2.3",
- "@rollup/plugin-replace": "^5.0.7",
- "@rollup/plugin-typescript": "^11.1.6",
"@types/color": "^3.0.3",
"@types/lodash": "^4.14.191",
"@types/react": "16.14.0",
"@types/webpack": "^5.28.0",
- "rollup": "^4.18.0",
- "rollup-plugin-delete": "^2.0.0",
- "rollup-plugin-external-globals": "^0.10.0",
- "rollup-plugin-import-assets": "^1.1.1",
- "rollup-plugin-styles": "^4.0.0",
+ "rollup": "^4.24.4",
"shx": "^0.3.4",
"tslib": "^2.4.0",
- "typescript": "^4.6.4"
+ "typescript": "^5.6.3"
},
"dependencies": {
"@decky/api": "^1.0.6",
+ "@decky/rollup": "^1.0.1",
"@decky/ui": "^4.4.0",
"clsx": "^2.1.1",
"color": "^4.2.3",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index bd146cb..1214686 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,5 +1,4 @@
lockfileVersion: '9.0'
-lockfileVersion: '9.0'
settings:
autoInstallPeers: true
@@ -12,6 +11,9 @@ importers:
'@decky/api':
specifier: ^1.0.6
version: 1.0.6
+ '@decky/rollup':
+ specifier: ^1.0.1
+ version: 1.0.1
'@decky/ui':
specifier: ^4.4.0
version: 4.4.0
@@ -36,22 +38,7 @@ importers:
devDependencies:
'@rollup/plugin-alias':
specifier: ^5.1.0
- version: 5.1.0(rollup@4.18.0)
- '@rollup/plugin-commonjs':
- specifier: ^26.0.1
- version: 26.0.1(rollup@4.18.0)
- '@rollup/plugin-json':
- specifier: ^6.1.0
- version: 6.1.0(rollup@4.18.0)
- '@rollup/plugin-node-resolve':
- specifier: ^15.2.3
- version: 15.2.3(rollup@4.18.0)
- '@rollup/plugin-replace':
- specifier: ^5.0.7
- version: 5.0.7(rollup@4.18.0)
- '@rollup/plugin-typescript':
- specifier: ^11.1.6
- version: 11.1.6(rollup@4.18.0)(tslib@2.6.2)(typescript@4.9.5)
+ version: 5.1.0(rollup@4.24.4)
'@types/color':
specifier: ^3.0.3
version: 3.0.6
@@ -65,20 +52,8 @@ importers:
specifier: ^5.28.0
version: 5.28.5
rollup:
- specifier: ^4.18.0
- version: 4.18.0
- rollup-plugin-delete:
- specifier: ^2.0.0
- version: 2.0.0
- rollup-plugin-external-globals:
- specifier: ^0.10.0
- version: 0.10.0(rollup@4.18.0)
- rollup-plugin-import-assets:
- specifier: ^1.1.1
- version: 1.1.1(rollup@4.18.0)
- rollup-plugin-styles:
- specifier: ^4.0.0
- version: 4.0.0(rollup@4.18.0)
+ specifier: ^4.24.4
+ version: 4.24.4
shx:
specifier: ^0.3.4
version: 0.3.4
@@ -86,23 +61,11 @@ importers:
specifier: ^2.4.0
version: 2.6.2
typescript:
- specifier: ^4.6.4
- version: 4.9.5
+ specifier: ^5.6.3
+ version: 5.6.3
packages:
- '@babel/code-frame@7.24.2':
- resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.24.5':
- resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/highlight@7.24.5':
- resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==}
- engines: {node: '>=6.9.0'}
-
'@babel/runtime@7.24.5':
resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==}
engines: {node: '>=6.9.0'}
@@ -110,6 +73,9 @@ packages:
'@decky/api@1.0.6':
resolution: {integrity: sha512-pacO2qvAin7ZoB9AnCgQbevQS+6Wiy0t1C6QVEJPCWeQQdEgJaUm3KSeRjh2KNqsjKHsbV0j72Pv4X5Q44Lr7Q==}
+ '@decky/rollup@1.0.1':
+ resolution: {integrity: sha512-dx1VJwD7ul14PA/aZvOwAfY/GujHzqZJ+MFb4OIUVi63/z4KWMSuZrK6QWo0S4LrNW3RzB3ua6LT0WcJaNY9gw==}
+
'@decky/ui@4.4.0':
resolution: {integrity: sha512-w6hSoEdWQyXdvSk8cv4cGDJQ6/xoRx9LYrdNjTGPPj8hRmBcoRlThgZ+9vchmNsAJuOymwQ5hQXqHN6Y86eoOQ==}
@@ -212,10 +178,6 @@ packages:
tslib:
optional: true
- '@rollup/pluginutils@4.2.1':
- resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
- engines: {node: '>= 8.0.0'}
-
'@rollup/pluginutils@5.1.0':
resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
engines: {node: '>=14.0.0'}
@@ -225,90 +187,96 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.18.0':
- resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==}
+ '@rollup/rollup-android-arm-eabi@4.24.4':
+ resolution: {integrity: sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.18.0':
- resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==}
+ '@rollup/rollup-android-arm64@4.24.4':
+ resolution: {integrity: sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.18.0':
- resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==}
+ '@rollup/rollup-darwin-arm64@4.24.4':
+ resolution: {integrity: sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.18.0':
- resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==}
+ '@rollup/rollup-darwin-x64@4.24.4':
+ resolution: {integrity: sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-linux-arm-gnueabihf@4.18.0':
- resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==}
+ '@rollup/rollup-freebsd-arm64@4.24.4':
+ resolution: {integrity: sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.24.4':
+ resolution: {integrity: sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.24.4':
+ resolution: {integrity: sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.18.0':
- resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==}
+ '@rollup/rollup-linux-arm-musleabihf@4.24.4':
+ resolution: {integrity: sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.18.0':
- resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==}
+ '@rollup/rollup-linux-arm64-gnu@4.24.4':
+ resolution: {integrity: sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.18.0':
- resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==}
+ '@rollup/rollup-linux-arm64-musl@4.24.4':
+ resolution: {integrity: sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.18.0':
- resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.24.4':
+ resolution: {integrity: sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.18.0':
- resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==}
+ '@rollup/rollup-linux-riscv64-gnu@4.24.4':
+ resolution: {integrity: sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.18.0':
- resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==}
+ '@rollup/rollup-linux-s390x-gnu@4.24.4':
+ resolution: {integrity: sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.18.0':
- resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==}
+ '@rollup/rollup-linux-x64-gnu@4.24.4':
+ resolution: {integrity: sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.18.0':
- resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==}
+ '@rollup/rollup-linux-x64-musl@4.24.4':
+ resolution: {integrity: sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.18.0':
- resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==}
+ '@rollup/rollup-win32-arm64-msvc@4.24.4':
+ resolution: {integrity: sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.18.0':
- resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==}
+ '@rollup/rollup-win32-ia32-msvc@4.24.4':
+ resolution: {integrity: sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.18.0':
- resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==}
+ '@rollup/rollup-win32-x64-msvc@4.24.4':
+ resolution: {integrity: sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==}
cpu: [x64]
os: [win32]
- '@trysound/sax@0.2.0':
- resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
- engines: {node: '>=10.13.0'}
-
'@types/color-convert@2.0.3':
resolution: {integrity: sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg==}
@@ -318,10 +286,6 @@ packages:
'@types/color@3.0.6':
resolution: {integrity: sha512-NMiNcZFRUAiUUCCf7zkAelY8eV3aKqfbzyFQlXpPIEeoNDbsEHGpb854V3gzTsGKYj830I5zPuOwU/TP5/cW6A==}
- '@types/cssnano@5.1.0':
- resolution: {integrity: sha512-ikR+18UpFGgvaWSur4og6SJYF/6QEYHXvrIt36dp81p1MG3cAPTYDMBJGeyWa3LCnqEbgNMHKRb+FP0NrXtoWQ==}
- deprecated: This is a stub types definition. cssnano provides its own type definitions, so you do not need this installed.
-
'@types/eslint-scope@3.7.7':
resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
@@ -331,6 +295,9 @@ packages:
'@types/estree@1.0.5':
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ '@types/estree@1.0.6':
+ resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+
'@types/glob@7.2.0':
resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
@@ -346,9 +313,6 @@ packages:
'@types/node@20.12.12':
resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==}
- '@types/parse-json@4.0.2':
- resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
-
'@types/prop-types@15.7.12':
resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
@@ -442,10 +406,6 @@ packages:
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
engines: {node: '>=12'}
- ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
-
ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
@@ -461,9 +421,6 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- boolbase@1.0.0:
- resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
-
brace-expansion@1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
@@ -486,20 +443,9 @@ packages:
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
engines: {node: '>=6'}
- callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
-
- caniuse-api@3.0.0:
- resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
-
caniuse-lite@1.0.30001620:
resolution: {integrity: sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==}
- chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
-
chrome-trace-event@1.0.3:
resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
engines: {node: '>=6.0'}
@@ -512,16 +458,10 @@ packages:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
- color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
-
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
- color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
-
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
@@ -532,81 +472,22 @@ packages:
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
engines: {node: '>=12.5.0'}
- colord@2.9.3:
- resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
-
commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
- commander@7.2.0:
- resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
- engines: {node: '>= 10'}
-
commondir@1.0.1:
resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
- cosmiconfig@7.1.0:
- resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
- engines: {node: '>=10'}
-
cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
- css-declaration-sorter@6.4.1:
- resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==}
- engines: {node: ^10 || ^12 || >=14}
- peerDependencies:
- postcss: ^8.0.9
-
- css-select@4.3.0:
- resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
-
- css-tree@1.1.3:
- resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==}
- engines: {node: '>=8.0.0'}
-
- css-what@6.1.0:
- resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
- engines: {node: '>= 6'}
-
- cssesc@3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
- hasBin: true
-
- cssnano-preset-default@5.2.14:
- resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- cssnano-utils@3.1.0:
- resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- cssnano@5.1.15:
- resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- csso@4.2.0:
- resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==}
- engines: {node: '>=8.0.0'}
-
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
- decode-uri-component@0.2.2:
- resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
- engines: {node: '>=0.10'}
-
deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
@@ -619,19 +500,6 @@ packages:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
- dom-serializer@1.4.1:
- resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
-
- domelementtype@2.3.0:
- resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
-
- domhandler@4.3.1:
- resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==}
- engines: {node: '>= 4'}
-
- domutils@2.8.0:
- resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
-
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
@@ -648,12 +516,6 @@ packages:
resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==}
engines: {node: '>=10.13.0'}
- entities@2.2.0:
- resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
-
- error-ex@1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
-
es-module-lexer@1.5.3:
resolution: {integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==}
@@ -661,10 +523,6 @@ packages:
resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
engines: {node: '>=6'}
- escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
eslint-scope@5.1.1:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
engines: {node: '>=8.0.0'}
@@ -690,9 +548,6 @@ packages:
estree-walker@3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
- eventemitter3@4.0.7:
- resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
-
events@3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
@@ -714,18 +569,10 @@ packages:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
- filter-obj@1.1.0:
- resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
- engines: {node: '>=0.10.0'}
-
foreground-child@3.2.1:
resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==}
engines: {node: '>=14'}
- fs-extra@10.1.0:
- resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
- engines: {node: '>=12'}
-
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
@@ -759,10 +606,6 @@ packages:
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
-
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
@@ -771,20 +614,10 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
- icss-utils@5.1.0:
- resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
-
ignore@5.3.1:
resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
engines: {node: '>= 4'}
- import-fresh@3.3.0:
- resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
- engines: {node: '>=6'}
-
indent-string@4.0.0:
resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
engines: {node: '>=8'}
@@ -800,9 +633,6 @@ packages:
resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
engines: {node: '>= 0.10'}
- is-arrayish@0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
-
is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
@@ -846,6 +676,10 @@ packages:
is-reference@3.0.2:
resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
+ is-what@5.0.2:
+ resolution: {integrity: sha512-vI7Ui0qzNQ2ClDZd0bC7uqRk3T1imbX5cZODmVlqqdqiwmSIUX3CNSiRgFjFMJ987sVCMSa7xZeEDtpJduPg4A==}
+ engines: {node: '>=18'}
+
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@@ -866,26 +700,10 @@ packages:
json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
- jsonfile@6.1.0:
- resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
-
- lilconfig@2.1.0:
- resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
- engines: {node: '>=10'}
-
- lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
-
loader-runner@4.3.0:
resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
engines: {node: '>=6.11.5'}
- lodash.memoize@4.1.2:
- resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
-
- lodash.uniq@4.5.0:
- resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
-
lodash@4.17.21:
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
@@ -900,8 +718,9 @@ packages:
magic-string@0.30.10:
resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
- mdn-data@2.0.14:
- resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
+ merge-anything@6.0.2:
+ resolution: {integrity: sha512-U8x6DL/YVudOcf82B6hd8GFg+6gF6hEHYwzqdo67GrH6vnDZ5YBq6BYX3hHWyCnG3CcqJDB1a9tj9fzMI3RL9Q==}
+ engines: {node: '>=18'}
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -936,51 +755,19 @@ packages:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
- nanoid@3.3.7:
- resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
node-releases@2.0.14:
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
- normalize-url@6.1.0:
- resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
- engines: {node: '>=10'}
-
- nth-check@2.1.1:
- resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
-
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- p-finally@1.0.0:
- resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
- engines: {node: '>=4'}
-
p-map@3.0.0:
resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==}
engines: {node: '>=8'}
- p-queue@6.6.2:
- resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==}
- engines: {node: '>=8'}
-
- p-timeout@3.2.0:
- resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
- engines: {node: '>=8'}
-
- parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
-
- parse-json@5.2.0:
- resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
- engines: {node: '>=8'}
-
path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
@@ -1007,210 +794,10 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
- postcss-calc@8.2.4:
- resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==}
- peerDependencies:
- postcss: ^8.2.2
-
- postcss-colormin@5.3.1:
- resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-convert-values@5.1.3:
- resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-discard-comments@5.1.2:
- resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-discard-duplicates@5.1.0:
- resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-discard-empty@5.1.1:
- resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-discard-overridden@5.1.0:
- resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-merge-longhand@5.1.7:
- resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-merge-rules@5.1.4:
- resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-minify-font-values@5.1.0:
- resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-minify-gradients@5.1.1:
- resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-minify-params@5.1.4:
- resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-minify-selectors@5.2.1:
- resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-modules-extract-imports@3.1.0:
- resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
-
- postcss-modules-local-by-default@4.0.5:
- resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
-
- postcss-modules-scope@3.2.0:
- resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
-
- postcss-modules-values@4.0.0:
- resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==}
- engines: {node: ^10 || ^12 || >= 14}
- peerDependencies:
- postcss: ^8.1.0
-
- postcss-normalize-charset@5.1.0:
- resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-normalize-display-values@5.1.0:
- resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-normalize-positions@5.1.1:
- resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-normalize-repeat-style@5.1.1:
- resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-normalize-string@5.1.0:
- resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-normalize-timing-functions@5.1.0:
- resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-normalize-unicode@5.1.1:
- resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-normalize-url@5.1.0:
- resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-normalize-whitespace@5.1.1:
- resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-ordered-values@5.1.3:
- resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-reduce-initial@5.1.2:
- resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-reduce-transforms@5.1.0:
- resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-selector-parser@6.0.16:
- resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==}
- engines: {node: '>=4'}
-
- postcss-svgo@5.1.0:
- resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-unique-selectors@5.1.1:
- resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- postcss-value-parser@4.2.0:
- resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
-
- postcss@8.4.38:
- resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==}
- engines: {node: ^10 || ^12 || >=14}
-
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
- query-string@7.1.3:
- resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
- engines: {node: '>=6'}
-
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -1233,10 +820,6 @@ packages:
regenerator-runtime@0.14.1:
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
- resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
-
resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
@@ -1254,8 +837,8 @@ packages:
resolution: {integrity: sha512-/VpLMtDy+8wwRlDANuYmDa9ss/knGsAgrDhM+tEwB1npHwNu4DYNmDfUL55csse/GHs9Q+SMT/rw9uiaZ3pnzA==}
engines: {node: '>=10'}
- rollup-plugin-external-globals@0.10.0:
- resolution: {integrity: sha512-RXlupZrmn97AaaS5dWnktkjM+Iy+od0E+8L0mUkMIs3iuoUXNJebueQocQKV7Ircd54fSGGmkBaXwNzY05J1yQ==}
+ rollup-plugin-external-globals@0.11.0:
+ resolution: {integrity: sha512-LR+sH2WkgWMPxsA5o5rT7uW7BeWXSeygLe60QQi9qoN/ufaCuHDaVOIbndIkqDPnZt/wZugJh5DCzkZFdSWlLQ==}
peerDependencies:
rollup: ^2.25.0 || ^3.3.0 || ^4.1.4
@@ -1264,17 +847,11 @@ packages:
peerDependencies:
rollup: '>=1.9.0'
- rollup-plugin-styles@4.0.0:
- resolution: {integrity: sha512-A2K2sao84OsTmDxXG83JTCdXWrmgvQkkI38XDat46rdtpGMRm9tSYqeCdlwwGDJF4kKIafhV1mUidqu8MxUGig==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- peerDependencies:
- rollup: ^2.63.0
-
rollup-pluginutils@2.8.2:
resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
- rollup@4.18.0:
- resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==}
+ rollup@4.24.4:
+ resolution: {integrity: sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -1324,10 +901,6 @@ packages:
resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
engines: {node: '>=12'}
- source-map-js@1.2.0:
- resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
- engines: {node: '>=0.10.0'}
-
source-map-support@0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
@@ -1335,18 +908,6 @@ packages:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
- split-on-first@1.1.0:
- resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
- engines: {node: '>=6'}
-
- stable@0.1.8:
- resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
- deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
-
- strict-uri-encode@2.0.0:
- resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
- engines: {node: '>=4'}
-
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -1363,16 +924,6 @@ packages:
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
engines: {node: '>=12'}
- stylehacks@5.1.1:
- resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==}
- engines: {node: ^10 || ^12 || >=14.0}
- peerDependencies:
- postcss: ^8.2.15
-
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
-
supports-color@8.1.1:
resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
engines: {node: '>=10'}
@@ -1381,11 +932,6 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- svgo@2.8.0:
- resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==}
- engines: {node: '>=10.13.0'}
- hasBin: true
-
tailwind-merge@2.3.0:
resolution: {integrity: sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==}
@@ -1421,18 +967,17 @@ packages:
tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
- typescript@4.9.5:
- resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
- engines: {node: '>=4.2.0'}
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ typescript@5.6.3:
+ resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
+ engines: {node: '>=14.17'}
hasBin: true
undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
- universalify@2.0.1:
- resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
- engines: {node: '>= 10.0.0'}
-
update-browserslist-db@1.0.16:
resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==}
hasBin: true
@@ -1450,9 +995,6 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0
- util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
-
watchpack@2.4.1:
resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==}
engines: {node: '>=10.13.0'}
@@ -1487,10 +1029,6 @@ packages:
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- yaml@1.10.2:
- resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
- engines: {node: '>= 6'}
-
zustand@4.5.2:
resolution: {integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==}
engines: {node: '>=12.7.0'}
@@ -1508,26 +1046,27 @@ packages:
snapshots:
- '@babel/code-frame@7.24.2':
- dependencies:
- '@babel/highlight': 7.24.5
- picocolors: 1.0.1
-
- '@babel/helper-validator-identifier@7.24.5': {}
-
- '@babel/highlight@7.24.5':
- dependencies:
- '@babel/helper-validator-identifier': 7.24.5
- chalk: 2.4.2
- js-tokens: 4.0.0
- picocolors: 1.0.1
-
'@babel/runtime@7.24.5':
dependencies:
regenerator-runtime: 0.14.1
'@decky/api@1.0.6': {}
+ '@decky/rollup@1.0.1':
+ dependencies:
+ '@rollup/plugin-commonjs': 26.0.1(rollup@4.24.4)
+ '@rollup/plugin-json': 6.1.0(rollup@4.24.4)
+ '@rollup/plugin-node-resolve': 15.2.3(rollup@4.24.4)
+ '@rollup/plugin-replace': 5.0.7(rollup@4.24.4)
+ '@rollup/plugin-typescript': 11.1.6(rollup@4.24.4)(tslib@2.8.1)(typescript@5.6.3)
+ merge-anything: 6.0.2
+ rollup: 4.24.4
+ rollup-plugin-delete: 2.0.0
+ rollup-plugin-external-globals: 0.11.0(rollup@4.24.4)
+ rollup-plugin-import-assets: 1.1.1(rollup@4.24.4)
+ tslib: 2.8.1
+ typescript: 5.6.3
+
'@decky/ui@4.4.0': {}
'@isaacs/cliui@8.0.2':
@@ -1576,118 +1115,117 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
- '@rollup/plugin-alias@5.1.0(rollup@4.18.0)':
+ '@rollup/plugin-alias@5.1.0(rollup@4.24.4)':
dependencies:
slash: 4.0.0
optionalDependencies:
- rollup: 4.18.0
+ rollup: 4.24.4
- '@rollup/plugin-commonjs@26.0.1(rollup@4.18.0)':
+ '@rollup/plugin-commonjs@26.0.1(rollup@4.24.4)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
+ '@rollup/pluginutils': 5.1.0(rollup@4.24.4)
commondir: 1.0.1
estree-walker: 2.0.2
glob: 10.4.1
is-reference: 1.2.1
magic-string: 0.30.10
optionalDependencies:
- rollup: 4.18.0
+ rollup: 4.24.4
- '@rollup/plugin-json@6.1.0(rollup@4.18.0)':
+ '@rollup/plugin-json@6.1.0(rollup@4.24.4)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
+ '@rollup/pluginutils': 5.1.0(rollup@4.24.4)
optionalDependencies:
- rollup: 4.18.0
+ rollup: 4.24.4
- '@rollup/plugin-node-resolve@15.2.3(rollup@4.18.0)':
+ '@rollup/plugin-node-resolve@15.2.3(rollup@4.24.4)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
+ '@rollup/pluginutils': 5.1.0(rollup@4.24.4)
'@types/resolve': 1.20.2
deepmerge: 4.3.1
is-builtin-module: 3.2.1
is-module: 1.0.0
resolve: 1.22.8
optionalDependencies:
- rollup: 4.18.0
+ rollup: 4.24.4
- '@rollup/plugin-replace@5.0.7(rollup@4.18.0)':
+ '@rollup/plugin-replace@5.0.7(rollup@4.24.4)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
+ '@rollup/pluginutils': 5.1.0(rollup@4.24.4)
magic-string: 0.30.10
optionalDependencies:
- rollup: 4.18.0
+ rollup: 4.24.4
- '@rollup/plugin-typescript@11.1.6(rollup@4.18.0)(tslib@2.6.2)(typescript@4.9.5)':
+ '@rollup/plugin-typescript@11.1.6(rollup@4.24.4)(tslib@2.8.1)(typescript@5.6.3)':
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
+ '@rollup/pluginutils': 5.1.0(rollup@4.24.4)
resolve: 1.22.8
- typescript: 4.9.5
+ typescript: 5.6.3
optionalDependencies:
- rollup: 4.18.0
- tslib: 2.6.2
-
- '@rollup/pluginutils@4.2.1':
- dependencies:
- estree-walker: 2.0.2
- picomatch: 2.3.1
+ rollup: 4.24.4
+ tslib: 2.8.1
- '@rollup/pluginutils@5.1.0(rollup@4.18.0)':
+ '@rollup/pluginutils@5.1.0(rollup@4.24.4)':
dependencies:
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
optionalDependencies:
- rollup: 4.18.0
+ rollup: 4.24.4
- '@rollup/rollup-android-arm-eabi@4.18.0':
+ '@rollup/rollup-android-arm-eabi@4.24.4':
optional: true
- '@rollup/rollup-android-arm64@4.18.0':
+ '@rollup/rollup-android-arm64@4.24.4':
optional: true
- '@rollup/rollup-darwin-arm64@4.18.0':
+ '@rollup/rollup-darwin-arm64@4.24.4':
optional: true
- '@rollup/rollup-darwin-x64@4.18.0':
+ '@rollup/rollup-darwin-x64@4.24.4':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.18.0':
+ '@rollup/rollup-freebsd-arm64@4.24.4':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.18.0':
+ '@rollup/rollup-freebsd-x64@4.24.4':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.18.0':
+ '@rollup/rollup-linux-arm-gnueabihf@4.24.4':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.18.0':
+ '@rollup/rollup-linux-arm-musleabihf@4.24.4':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.18.0':
+ '@rollup/rollup-linux-arm64-gnu@4.24.4':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.18.0':
+ '@rollup/rollup-linux-arm64-musl@4.24.4':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.18.0':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.24.4':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.18.0':
+ '@rollup/rollup-linux-riscv64-gnu@4.24.4':
optional: true
- '@rollup/rollup-linux-x64-musl@4.18.0':
+ '@rollup/rollup-linux-s390x-gnu@4.24.4':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.18.0':
+ '@rollup/rollup-linux-x64-gnu@4.24.4':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.18.0':
+ '@rollup/rollup-linux-x64-musl@4.24.4':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.18.0':
+ '@rollup/rollup-win32-arm64-msvc@4.24.4':
optional: true
- '@trysound/sax@0.2.0': {}
+ '@rollup/rollup-win32-ia32-msvc@4.24.4':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.24.4':
+ optional: true
'@types/color-convert@2.0.3':
dependencies:
@@ -1699,12 +1237,6 @@ snapshots:
dependencies:
'@types/color-convert': 2.0.3
- '@types/cssnano@5.1.0(postcss@8.4.38)':
- dependencies:
- cssnano: 5.1.15(postcss@8.4.38)
- transitivePeerDependencies:
- - postcss
-
'@types/eslint-scope@3.7.7':
dependencies:
'@types/eslint': 8.56.10
@@ -1717,6 +1249,8 @@ snapshots:
'@types/estree@1.0.5': {}
+ '@types/estree@1.0.6': {}
+
'@types/glob@7.2.0':
dependencies:
'@types/minimatch': 5.1.2
@@ -1732,8 +1266,6 @@ snapshots:
dependencies:
undici-types: 5.26.5
- '@types/parse-json@4.0.2': {}
-
'@types/prop-types@15.7.12': {}
'@types/react@16.14.0':
@@ -1860,10 +1392,6 @@ snapshots:
ansi-regex@6.0.1: {}
- ansi-styles@3.2.1:
- dependencies:
- color-convert: 1.9.3
-
ansi-styles@4.3.0:
dependencies:
color-convert: 2.0.1
@@ -1874,8 +1402,6 @@ snapshots:
balanced-match@1.0.2: {}
- boolbase@1.0.0: {}
-
brace-expansion@1.1.11:
dependencies:
balanced-match: 1.0.2
@@ -1900,39 +1426,18 @@ snapshots:
builtin-modules@3.3.0: {}
- callsites@3.1.0: {}
-
- caniuse-api@3.0.0:
- dependencies:
- browserslist: 4.23.0
- caniuse-lite: 1.0.30001620
- lodash.memoize: 4.1.2
- lodash.uniq: 4.5.0
-
caniuse-lite@1.0.30001620: {}
- chalk@2.4.2:
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
-
chrome-trace-event@1.0.3: {}
clean-stack@2.2.0: {}
clsx@2.1.1: {}
- color-convert@1.9.3:
- dependencies:
- color-name: 1.1.3
-
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
- color-name@1.1.3: {}
-
color-name@1.1.4: {}
color-string@1.9.1:
@@ -1945,103 +1450,20 @@ snapshots:
color-convert: 2.0.1
color-string: 1.9.1
- colord@2.9.3: {}
-
commander@2.20.3: {}
- commander@7.2.0: {}
-
commondir@1.0.1: {}
concat-map@0.0.1: {}
- cosmiconfig@7.1.0:
- dependencies:
- '@types/parse-json': 4.0.2
- import-fresh: 3.3.0
- parse-json: 5.2.0
- path-type: 4.0.0
- yaml: 1.10.2
-
cross-spawn@7.0.3:
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
- css-declaration-sorter@6.4.1(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
-
- css-select@4.3.0:
- dependencies:
- boolbase: 1.0.0
- css-what: 6.1.0
- domhandler: 4.3.1
- domutils: 2.8.0
- nth-check: 2.1.1
-
- css-tree@1.1.3:
- dependencies:
- mdn-data: 2.0.14
- source-map: 0.6.1
-
- css-what@6.1.0: {}
-
- cssesc@3.0.0: {}
-
- cssnano-preset-default@5.2.14(postcss@8.4.38):
- dependencies:
- css-declaration-sorter: 6.4.1(postcss@8.4.38)
- cssnano-utils: 3.1.0(postcss@8.4.38)
- postcss: 8.4.38
- postcss-calc: 8.2.4(postcss@8.4.38)
- postcss-colormin: 5.3.1(postcss@8.4.38)
- postcss-convert-values: 5.1.3(postcss@8.4.38)
- postcss-discard-comments: 5.1.2(postcss@8.4.38)
- postcss-discard-duplicates: 5.1.0(postcss@8.4.38)
- postcss-discard-empty: 5.1.1(postcss@8.4.38)
- postcss-discard-overridden: 5.1.0(postcss@8.4.38)
- postcss-merge-longhand: 5.1.7(postcss@8.4.38)
- postcss-merge-rules: 5.1.4(postcss@8.4.38)
- postcss-minify-font-values: 5.1.0(postcss@8.4.38)
- postcss-minify-gradients: 5.1.1(postcss@8.4.38)
- postcss-minify-params: 5.1.4(postcss@8.4.38)
- postcss-minify-selectors: 5.2.1(postcss@8.4.38)
- postcss-normalize-charset: 5.1.0(postcss@8.4.38)
- postcss-normalize-display-values: 5.1.0(postcss@8.4.38)
- postcss-normalize-positions: 5.1.1(postcss@8.4.38)
- postcss-normalize-repeat-style: 5.1.1(postcss@8.4.38)
- postcss-normalize-string: 5.1.0(postcss@8.4.38)
- postcss-normalize-timing-functions: 5.1.0(postcss@8.4.38)
- postcss-normalize-unicode: 5.1.1(postcss@8.4.38)
- postcss-normalize-url: 5.1.0(postcss@8.4.38)
- postcss-normalize-whitespace: 5.1.1(postcss@8.4.38)
- postcss-ordered-values: 5.1.3(postcss@8.4.38)
- postcss-reduce-initial: 5.1.2(postcss@8.4.38)
- postcss-reduce-transforms: 5.1.0(postcss@8.4.38)
- postcss-svgo: 5.1.0(postcss@8.4.38)
- postcss-unique-selectors: 5.1.1(postcss@8.4.38)
-
- cssnano-utils@3.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
-
- cssnano@5.1.15(postcss@8.4.38):
- dependencies:
- cssnano-preset-default: 5.2.14(postcss@8.4.38)
- lilconfig: 2.1.0
- postcss: 8.4.38
- yaml: 1.10.2
-
- csso@4.2.0:
- dependencies:
- css-tree: 1.1.3
-
csstype@3.1.3: {}
- decode-uri-component@0.2.2: {}
-
deepmerge@4.3.1: {}
del@5.1.0:
@@ -2059,24 +1481,6 @@ snapshots:
dependencies:
path-type: 4.0.0
- dom-serializer@1.4.1:
- dependencies:
- domelementtype: 2.3.0
- domhandler: 4.3.1
- entities: 2.2.0
-
- domelementtype@2.3.0: {}
-
- domhandler@4.3.1:
- dependencies:
- domelementtype: 2.3.0
-
- domutils@2.8.0:
- dependencies:
- dom-serializer: 1.4.1
- domelementtype: 2.3.0
- domhandler: 4.3.1
-
eastasianwidth@0.2.0: {}
electron-to-chromium@1.4.775: {}
@@ -2090,18 +1494,10 @@ snapshots:
graceful-fs: 4.2.11
tapable: 2.2.1
- entities@2.2.0: {}
-
- error-ex@1.3.2:
- dependencies:
- is-arrayish: 0.2.1
-
es-module-lexer@1.5.3: {}
escalade@3.1.2: {}
- escape-string-regexp@1.0.5: {}
-
eslint-scope@5.1.1:
dependencies:
esrecurse: 4.3.0
@@ -2123,8 +1519,6 @@ snapshots:
dependencies:
'@types/estree': 1.0.5
- eventemitter3@4.0.7: {}
-
events@3.3.0: {}
fast-deep-equal@3.1.3: {}
@@ -2147,19 +1541,11 @@ snapshots:
dependencies:
to-regex-range: 5.0.1
- filter-obj@1.1.0: {}
-
foreground-child@3.2.1:
dependencies:
cross-spawn: 7.0.3
signal-exit: 4.1.0
- fs-extra@10.1.0:
- dependencies:
- graceful-fs: 4.2.11
- jsonfile: 6.1.0
- universalify: 2.0.1
-
fs.realpath@1.0.0: {}
fsevents@2.3.3:
@@ -2203,25 +1589,14 @@ snapshots:
graceful-fs@4.2.11: {}
- has-flag@3.0.0: {}
-
has-flag@4.0.0: {}
hasown@2.0.2:
dependencies:
function-bind: 1.1.2
- icss-utils@5.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
-
ignore@5.3.1: {}
- import-fresh@3.3.0:
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
-
indent-string@4.0.0: {}
inflight@1.0.6:
@@ -2233,8 +1608,6 @@ snapshots:
interpret@1.4.0: {}
- is-arrayish@0.2.1: {}
-
is-arrayish@0.3.2: {}
is-builtin-module@3.2.1:
@@ -2269,6 +1642,8 @@ snapshots:
dependencies:
'@types/estree': 1.0.5
+ is-what@5.0.2: {}
+
isexe@2.0.0: {}
jackspeak@3.4.0:
@@ -2289,22 +1664,8 @@ snapshots:
json-schema-traverse@0.4.1: {}
- jsonfile@6.1.0:
- dependencies:
- universalify: 2.0.1
- optionalDependencies:
- graceful-fs: 4.2.11
-
- lilconfig@2.1.0: {}
-
- lines-and-columns@1.2.4: {}
-
loader-runner@4.3.0: {}
- lodash.memoize@4.1.2: {}
-
- lodash.uniq@4.5.0: {}
-
lodash@4.17.21: {}
loose-envify@1.4.0:
@@ -2317,7 +1678,9 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
- mdn-data@2.0.14: {}
+ merge-anything@6.0.2:
+ dependencies:
+ is-what: 5.0.2
merge-stream@2.0.0: {}
@@ -2346,48 +1709,18 @@ snapshots:
minipass@7.1.2: {}
- nanoid@3.3.7: {}
-
neo-async@2.6.2: {}
node-releases@2.0.14: {}
- normalize-url@6.1.0: {}
-
- nth-check@2.1.1:
- dependencies:
- boolbase: 1.0.0
-
once@1.4.0:
dependencies:
wrappy: 1.0.2
- p-finally@1.0.0: {}
-
p-map@3.0.0:
dependencies:
aggregate-error: 3.1.0
- p-queue@6.6.2:
- dependencies:
- eventemitter3: 4.0.7
- p-timeout: 3.2.0
-
- p-timeout@3.2.0:
- dependencies:
- p-finally: 1.0.0
-
- parent-module@1.0.1:
- dependencies:
- callsites: 3.1.0
-
- parse-json@5.2.0:
- dependencies:
- '@babel/code-frame': 7.24.2
- error-ex: 1.3.2
- json-parse-even-better-errors: 2.3.1
- lines-and-columns: 1.2.4
-
path-is-absolute@1.0.1: {}
path-key@3.1.1: {}
@@ -2405,197 +1738,8 @@ snapshots:
picomatch@2.3.1: {}
- postcss-calc@8.2.4(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-selector-parser: 6.0.16
- postcss-value-parser: 4.2.0
-
- postcss-colormin@5.3.1(postcss@8.4.38):
- dependencies:
- browserslist: 4.23.0
- caniuse-api: 3.0.0
- colord: 2.9.3
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-convert-values@5.1.3(postcss@8.4.38):
- dependencies:
- browserslist: 4.23.0
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-discard-comments@5.1.2(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
-
- postcss-discard-duplicates@5.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
-
- postcss-discard-empty@5.1.1(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
-
- postcss-discard-overridden@5.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
-
- postcss-merge-longhand@5.1.7(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
- stylehacks: 5.1.1(postcss@8.4.38)
-
- postcss-merge-rules@5.1.4(postcss@8.4.38):
- dependencies:
- browserslist: 4.23.0
- caniuse-api: 3.0.0
- cssnano-utils: 3.1.0(postcss@8.4.38)
- postcss: 8.4.38
- postcss-selector-parser: 6.0.16
-
- postcss-minify-font-values@5.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-minify-gradients@5.1.1(postcss@8.4.38):
- dependencies:
- colord: 2.9.3
- cssnano-utils: 3.1.0(postcss@8.4.38)
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-minify-params@5.1.4(postcss@8.4.38):
- dependencies:
- browserslist: 4.23.0
- cssnano-utils: 3.1.0(postcss@8.4.38)
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-minify-selectors@5.2.1(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-selector-parser: 6.0.16
-
- postcss-modules-extract-imports@3.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
-
- postcss-modules-local-by-default@4.0.5(postcss@8.4.38):
- dependencies:
- icss-utils: 5.1.0(postcss@8.4.38)
- postcss: 8.4.38
- postcss-selector-parser: 6.0.16
- postcss-value-parser: 4.2.0
-
- postcss-modules-scope@3.2.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-selector-parser: 6.0.16
-
- postcss-modules-values@4.0.0(postcss@8.4.38):
- dependencies:
- icss-utils: 5.1.0(postcss@8.4.38)
- postcss: 8.4.38
-
- postcss-normalize-charset@5.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
-
- postcss-normalize-display-values@5.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-normalize-positions@5.1.1(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-normalize-repeat-style@5.1.1(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-normalize-string@5.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-normalize-timing-functions@5.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-normalize-unicode@5.1.1(postcss@8.4.38):
- dependencies:
- browserslist: 4.23.0
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-normalize-url@5.1.0(postcss@8.4.38):
- dependencies:
- normalize-url: 6.1.0
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-normalize-whitespace@5.1.1(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-ordered-values@5.1.3(postcss@8.4.38):
- dependencies:
- cssnano-utils: 3.1.0(postcss@8.4.38)
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-reduce-initial@5.1.2(postcss@8.4.38):
- dependencies:
- browserslist: 4.23.0
- caniuse-api: 3.0.0
- postcss: 8.4.38
-
- postcss-reduce-transforms@5.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
-
- postcss-selector-parser@6.0.16:
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
- postcss-svgo@5.1.0(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-value-parser: 4.2.0
- svgo: 2.8.0
-
- postcss-unique-selectors@5.1.1(postcss@8.4.38):
- dependencies:
- postcss: 8.4.38
- postcss-selector-parser: 6.0.16
-
- postcss-value-parser@4.2.0: {}
-
- postcss@8.4.38:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.0.1
- source-map-js: 1.2.0
-
punycode@2.3.1: {}
- query-string@7.1.3:
- dependencies:
- decode-uri-component: 0.2.2
- filter-obj: 1.1.0
- split-on-first: 1.1.0
- strict-uri-encode: 2.0.0
-
queue-microtask@1.2.3: {}
randombytes@2.1.0:
@@ -2616,8 +1760,6 @@ snapshots:
regenerator-runtime@0.14.1: {}
- resolve-from@4.0.0: {}
-
resolve@1.22.8:
dependencies:
is-core-module: 2.13.1
@@ -2634,66 +1776,46 @@ snapshots:
dependencies:
del: 5.1.0
- rollup-plugin-external-globals@0.10.0(rollup@4.18.0):
+ rollup-plugin-external-globals@0.11.0(rollup@4.24.4):
dependencies:
- '@rollup/pluginutils': 5.1.0(rollup@4.18.0)
+ '@rollup/pluginutils': 5.1.0(rollup@4.24.4)
estree-walker: 3.0.3
is-reference: 3.0.2
magic-string: 0.30.10
- rollup: 4.18.0
+ rollup: 4.24.4
- rollup-plugin-import-assets@1.1.1(rollup@4.18.0):
+ rollup-plugin-import-assets@1.1.1(rollup@4.24.4):
dependencies:
- rollup: 4.18.0
+ rollup: 4.24.4
rollup-pluginutils: 2.8.2
url-join: 4.0.1
- rollup-plugin-styles@4.0.0(rollup@4.18.0):
- dependencies:
- '@rollup/pluginutils': 4.2.1
- '@types/cssnano': 5.1.0(postcss@8.4.38)
- cosmiconfig: 7.1.0
- cssnano: 5.1.15(postcss@8.4.38)
- fs-extra: 10.1.0
- icss-utils: 5.1.0(postcss@8.4.38)
- mime-types: 2.1.35
- p-queue: 6.6.2
- postcss: 8.4.38
- postcss-modules-extract-imports: 3.1.0(postcss@8.4.38)
- postcss-modules-local-by-default: 4.0.5(postcss@8.4.38)
- postcss-modules-scope: 3.2.0(postcss@8.4.38)
- postcss-modules-values: 4.0.0(postcss@8.4.38)
- postcss-value-parser: 4.2.0
- query-string: 7.1.3
- resolve: 1.22.8
- rollup: 4.18.0
- source-map-js: 1.2.0
- tslib: 2.6.2
-
rollup-pluginutils@2.8.2:
dependencies:
estree-walker: 0.6.1
- rollup@4.18.0:
+ rollup@4.24.4:
dependencies:
- '@types/estree': 1.0.5
+ '@types/estree': 1.0.6
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.18.0
- '@rollup/rollup-android-arm64': 4.18.0
- '@rollup/rollup-darwin-arm64': 4.18.0
- '@rollup/rollup-darwin-x64': 4.18.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.18.0
- '@rollup/rollup-linux-arm-musleabihf': 4.18.0
- '@rollup/rollup-linux-arm64-gnu': 4.18.0
- '@rollup/rollup-linux-arm64-musl': 4.18.0
- '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0
- '@rollup/rollup-linux-riscv64-gnu': 4.18.0
- '@rollup/rollup-linux-s390x-gnu': 4.18.0
- '@rollup/rollup-linux-x64-gnu': 4.18.0
- '@rollup/rollup-linux-x64-musl': 4.18.0
- '@rollup/rollup-win32-arm64-msvc': 4.18.0
- '@rollup/rollup-win32-ia32-msvc': 4.18.0
- '@rollup/rollup-win32-x64-msvc': 4.18.0
+ '@rollup/rollup-android-arm-eabi': 4.24.4
+ '@rollup/rollup-android-arm64': 4.24.4
+ '@rollup/rollup-darwin-arm64': 4.24.4
+ '@rollup/rollup-darwin-x64': 4.24.4
+ '@rollup/rollup-freebsd-arm64': 4.24.4
+ '@rollup/rollup-freebsd-x64': 4.24.4
+ '@rollup/rollup-linux-arm-gnueabihf': 4.24.4
+ '@rollup/rollup-linux-arm-musleabihf': 4.24.4
+ '@rollup/rollup-linux-arm64-gnu': 4.24.4
+ '@rollup/rollup-linux-arm64-musl': 4.24.4
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.24.4
+ '@rollup/rollup-linux-riscv64-gnu': 4.24.4
+ '@rollup/rollup-linux-s390x-gnu': 4.24.4
+ '@rollup/rollup-linux-x64-gnu': 4.24.4
+ '@rollup/rollup-linux-x64-musl': 4.24.4
+ '@rollup/rollup-win32-arm64-msvc': 4.24.4
+ '@rollup/rollup-win32-ia32-msvc': 4.24.4
+ '@rollup/rollup-win32-x64-msvc': 4.24.4
fsevents: 2.3.3
run-parallel@1.2.0:
@@ -2739,8 +1861,6 @@ snapshots:
slash@4.0.0: {}
- source-map-js@1.2.0: {}
-
source-map-support@0.5.21:
dependencies:
buffer-from: 1.1.2
@@ -2748,12 +1868,6 @@ snapshots:
source-map@0.6.1: {}
- split-on-first@1.1.0: {}
-
- stable@0.1.8: {}
-
- strict-uri-encode@2.0.0: {}
-
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
@@ -2774,32 +1888,12 @@ snapshots:
dependencies:
ansi-regex: 6.0.1
- stylehacks@5.1.1(postcss@8.4.38):
- dependencies:
- browserslist: 4.23.0
- postcss: 8.4.38
- postcss-selector-parser: 6.0.16
-
- supports-color@5.5.0:
- dependencies:
- has-flag: 3.0.0
-
supports-color@8.1.1:
dependencies:
has-flag: 4.0.0
supports-preserve-symlinks-flag@1.0.0: {}
- svgo@2.8.0:
- dependencies:
- '@trysound/sax': 0.2.0
- commander: 7.2.0
- css-select: 4.3.0
- css-tree: 1.1.3
- csso: 4.2.0
- picocolors: 1.0.1
- stable: 0.1.8
-
tailwind-merge@2.3.0:
dependencies:
'@babel/runtime': 7.24.5
@@ -2828,11 +1922,11 @@ snapshots:
tslib@2.6.2: {}
- typescript@4.9.5: {}
+ tslib@2.8.1: {}
- undici-types@5.26.5: {}
+ typescript@5.6.3: {}
- universalify@2.0.1: {}
+ undici-types@5.26.5: {}
update-browserslist-db@1.0.16(browserslist@4.23.0):
dependencies:
@@ -2850,8 +1944,6 @@ snapshots:
dependencies:
react: 18.3.1
- util-deprecate@1.0.2: {}
-
watchpack@2.4.1:
dependencies:
glob-to-regexp: 0.4.1
@@ -2908,8 +2000,6 @@ snapshots:
wrappy@1.0.2: {}
- yaml@1.10.2: {}
-
zustand@4.5.2(@types/react@16.14.0)(react@18.3.1):
dependencies:
use-sync-external-store: 1.2.0(react@18.3.1)
diff --git a/rollup.config.js b/rollup.config.js
index 63360a9..5055b43 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -1,66 +1,18 @@
-import commonjs from "@rollup/plugin-commonjs";
-import json from "@rollup/plugin-json";
-import { nodeResolve } from "@rollup/plugin-node-resolve";
-import replace from "@rollup/plugin-replace";
-import typescript from "@rollup/plugin-typescript";
-import { defineConfig } from "rollup";
-import importAssets from "rollup-plugin-import-assets";
-import styles from "rollup-plugin-styles";
+import deckyPlugin from "@decky/rollup";
import alias from "@rollup/plugin-alias";
-import del from "rollup-plugin-delete";
-import externalGlobals from "rollup-plugin-external-globals";
-// replace "assert" with "with" once node implements that
-import manifest from "./plugin.json" assert { type: "json" };
-
-export default defineConfig({
- input: "./src/index.tsx",
+export default deckyPlugin({
plugins: [
- del({ targets: "./dist/*", force: true }),
- commonjs(),
- nodeResolve({
- browser: true,
- }),
- externalGlobals({
- react: "SP_REACT",
- "react-dom": "SP_REACTDOM",
- "@decky/ui": "DFL",
- "@decky/manifest": JSON.stringify(manifest),
- }),
- typescript(),
- json(),
- replace({
- preventAssignment: false,
- "process.env.NODE_ENV": JSON.stringify("production"),
- }),
- styles(),
alias({
entries: [
- { find: "@cssloader/backend", replacement: "./src/backend" },
- { find: "@/backend", replacement: "./src/backend-impl" },
- { find: "@/lib", replacement: "./src/lib" },
- { find: "@/styles", replacement: "./src/styles" },
- { find: "@/types", replacement: "./src/types" },
- { find: "@/modules", replacement: "./src/modules" },
- { find: "@/decky-patches", replacement: "./src/decky-patches" },
+ { find: "@cssloader/backend", replacement: `${import.meta.dirname}//src/backend` },
+ { find: "@/backend", replacement: `${import.meta.dirname}/src/backend-impl` },
+ { find: "@/lib", replacement: `${import.meta.dirname}/src/lib` },
+ { find: "@/styles", replacement: `${import.meta.dirname}/src/styles` },
+ { find: "@/types", replacement: `${import.meta.dirname}/src/types` },
+ { find: "@/modules", replacement: `${import.meta.dirname}/src/modules` },
+ { find: "@/decky-patches", replacement: `${import.meta.dirname}/src/decky-patches` },
],
}),
- importAssets({
- publicPath: `http://127.0.0.1:1337/plugins/${manifest.name}/`,
- }),
],
- context: "window",
- external: ["react", "react-dom", "@decky/ui"],
- output: {
- dir: "dist",
- format: "esm",
- sourcemap: true,
- // **Don't** change this.
- sourcemapPathTransform: (relativeSourcePath) =>
- relativeSourcePath.replace(
- /^\.\.\//,
- `decky://decky/plugin/${encodeURIComponent(manifest.name)}/`
- ),
- exports: "default",
- },
});
From 69eaf0e3b8fdb0a27a032a8a9d4011ebebad2d21 Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Fri, 8 Nov 2024 17:35:47 -0700
Subject: [PATCH 30/53] add loading indicator to theme store
---
.../components/ThemeBrowserPage.tsx | 44 ++++++++++++-------
.../theme-store/context/ThemeBrowserStore.tsx | 4 ++
2 files changed, 32 insertions(+), 16 deletions(-)
diff --git a/src/modules/theme-store/components/ThemeBrowserPage.tsx b/src/modules/theme-store/components/ThemeBrowserPage.tsx
index 51055c8..7fc3810 100644
--- a/src/modules/theme-store/components/ThemeBrowserPage.tsx
+++ b/src/modules/theme-store/components/ThemeBrowserPage.tsx
@@ -4,10 +4,12 @@ import { BrowserSearchFields } from "./BrowserSearchFields";
import { useCSSLoaderValue } from "@/backend";
import { ThemeCard } from "./ThemeCard";
import { useEffect, useRef } from "react";
+import { ImSpinner5 } from "react-icons/im";
export function ThemeBrowserPage() {
const initializeStore = useThemeBrowserStoreAction("initializeStore");
const themes = useThemeBrowserStoreValue("themes");
+ const loading = useThemeBrowserStoreValue("loading");
const indexToSnapToOnLoad = useThemeBrowserStoreValue("indexToSnapToOnLoad");
const backendVersion = useCSSLoaderValue("backendVersion");
@@ -21,22 +23,32 @@ export function ThemeBrowserPage() {
return (
<>
-
- {themes.items
- .filter((theme) => theme.manifestVersion <= backendVersion)
- .map((theme, index) => (
-
- ))}
+
+ {loading ? (
+
+
+ {/* Re-using expanded view's loading class */}
+ Loading
+
+ ) : (
+ <>
+ {themes.items
+ .filter((theme) => theme.manifestVersion <= backendVersion)
+ .map((theme, index) => (
+
+ ))}
+ >
+ )}
>
);
diff --git a/src/modules/theme-store/context/ThemeBrowserStore.tsx b/src/modules/theme-store/context/ThemeBrowserStore.tsx
index 87135cf..067d1df 100644
--- a/src/modules/theme-store/context/ThemeBrowserStore.tsx
+++ b/src/modules/theme-store/context/ThemeBrowserStore.tsx
@@ -6,6 +6,7 @@ import { isEqual } from "lodash";
import { getThemeBrowserSharedState } from "./ThemeBrowserSharedStore";
interface ThemeBrowserStoreValues {
+ loading: boolean;
themes: ThemeQueryResponse;
searchOpts: ThemeQueryRequest;
prevSearchOpts: ThemeQueryRequest;
@@ -57,6 +58,7 @@ export function ThemeBrowserStoreProvider({
if (!storeRef.current) {
storeRef.current = createStore((set, get) => ({
+ loading: true,
themes: { total: 0, items: [] },
searchOpts: {
page: 1,
@@ -109,6 +111,7 @@ export function ThemeBrowserStoreProvider({
await getThemes();
},
getThemes: async () => {
+ set({ loading: true });
try {
const { searchOpts } = get();
const { targetOverride } = getThemeBrowserSharedState();
@@ -125,6 +128,7 @@ export function ThemeBrowserStoreProvider({
set({ themes: response, indexToSnapToOnLoad: -1 });
}
} catch (error) {}
+ set({ loading: false });
},
}));
}
From 4e13bd201355e82a769c5a75a403a37e4a4c876b Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Fri, 8 Nov 2024 17:38:21 -0700
Subject: [PATCH 31/53] switch build to node 20
---
.github/workflows/push.yml | 110 ++++++++++++++++++-------------------
1 file changed, 55 insertions(+), 55 deletions(-)
diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml
index 3e19fe0..772202d 100644
--- a/.github/workflows/push.yml
+++ b/.github/workflows/push.yml
@@ -8,69 +8,69 @@ jobs:
runs-on: ubuntu-20.04
steps:
- - name: Checkout
- uses: actions/checkout@v3
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: Set up NodeJS 20
+ uses: actions/setup-node@v3
+ with:
+ node-version: 20
+
+ - name: Install JS dependencies
+ run: |
+ npm i -g pnpm
+ pnpm install
+
+ - name: Build Frontend
+ run: |
+ pnpm run build
+
+ - name: Package Release
+ run: |
+ mkdir "SDH-CssLoader"
+ cp *.py "./SDH-CssLoader"
+ cp *.json "./SDH-CssLoader"
+ cp LICENSE "./SDH-CssLoader"
+ cp README.md "./SDH-CssLoader"
+ cp -r dist "./SDH-CssLoader"
+ mkdir upload
+ mv "./SDH-CssLoader" ./upload
+
+ - name: Upload package artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: SDH-CSSLoader-Decky
+ path: ./upload
- - name: Set up NodeJS 18
- uses: actions/setup-node@v3
- with:
- node-version: 18
-
- - name: Install JS dependencies
- run: |
- npm i -g pnpm
- pnpm install
-
- - name: Build Frontend
- run: |
- pnpm run build
-
- - name: Package Release
- run: |
- mkdir "SDH-CssLoader"
- cp *.py "./SDH-CssLoader"
- cp *.json "./SDH-CssLoader"
- cp LICENSE "./SDH-CssLoader"
- cp README.md "./SDH-CssLoader"
- cp -r dist "./SDH-CssLoader"
- mkdir upload
- mv "./SDH-CssLoader" ./upload
-
- - name: Upload package artifact
- uses: actions/upload-artifact@v3
- with:
- name: SDH-CSSLoader-Decky
- path: ./upload
-
build-standalone-win:
name: Build SDH-CSSLoader Standalone for Windows
runs-on: windows-2022
steps:
- - name: Checkout
- uses: actions/checkout@v3
+ - name: Checkout
+ uses: actions/checkout@v3
- - name: Set up Python 3.10.2
- uses: actions/setup-python@v4
- with:
- python-version: "3.10.2"
+ - name: Set up Python 3.10.2
+ uses: actions/setup-python@v4
+ with:
+ python-version: "3.10.2"
- - name: Install Python dependencies
- run: |
- python -m pip install --upgrade pip
- pip install pyinstaller==5.5
- pip install -r requirements.txt
+ - name: Install Python dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install pyinstaller==5.5
+ pip install -r requirements.txt
- - name: Build Python Backend
- run: pyinstaller --noconfirm --onefile --add-data "./assets;/assets" --name "CssLoader-Standalone" ./main.py ./css_win_tray.py
+ - name: Build Python Backend
+ run: pyinstaller --noconfirm --onefile --add-data "./assets;/assets" --name "CssLoader-Standalone" ./main.py ./css_win_tray.py
- - name: Build Python Backend Headless
- run: pyinstaller --noconfirm --noconsole --onefile --add-data "./assets;/assets" --name "CssLoader-Standalone-Headless" ./main.py ./css_win_tray.py
+ - name: Build Python Backend Headless
+ run: pyinstaller --noconfirm --noconsole --onefile --add-data "./assets;/assets" --name "CssLoader-Standalone-Headless" ./main.py ./css_win_tray.py
- - name: Upload package artifact
- uses: actions/upload-artifact@v3
- with:
- name: SDH-CSSLoader-Win-Standalone
- path: |
- ./dist/CssLoader-Standalone.exe
- ./dist/CssLoader-Standalone-Headless.exe
+ - name: Upload package artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: SDH-CSSLoader-Win-Standalone
+ path: |
+ ./dist/CssLoader-Standalone.exe
+ ./dist/CssLoader-Standalone-Headless.exe
From 3ac1575c587a62a55b54a2f8c21f15d2e64b9afe Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Fri, 8 Nov 2024 19:17:08 -0700
Subject: [PATCH 32/53] (UNTESTED): fix target override
---
.../theme-store/context/ThemeBrowserSharedStore.tsx | 2 +-
src/modules/theme-store/context/ThemeBrowserStore.tsx | 8 +++++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx b/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx
index 754d531..8693ed7 100644
--- a/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx
+++ b/src/modules/theme-store/context/ThemeBrowserSharedStore.tsx
@@ -18,7 +18,7 @@ interface IThemeBrowserSharedStore
extends ThemeBrowserSharedStoreValues,
ThemeBrowserSharedStoreActions {}
-const themeBrowserSharedStore = createStore((set) => {
+export const themeBrowserSharedStore = createStore((set) => {
return {
browserCardSize: 3,
targetOverride: "",
diff --git a/src/modules/theme-store/context/ThemeBrowserStore.tsx b/src/modules/theme-store/context/ThemeBrowserStore.tsx
index 067d1df..8b005c1 100644
--- a/src/modules/theme-store/context/ThemeBrowserStore.tsx
+++ b/src/modules/theme-store/context/ThemeBrowserStore.tsx
@@ -3,7 +3,7 @@ import { FilterQueryResponse, ThemeQueryRequest, ThemeQueryResponse } from "@/ty
import { StoreApi, createStore, useStore } from "zustand";
import { getCSSLoaderState } from "@/backend";
import { isEqual } from "lodash";
-import { getThemeBrowserSharedState } from "./ThemeBrowserSharedStore";
+import { getThemeBrowserSharedState, themeBrowserSharedStore } from "./ThemeBrowserSharedStore";
interface ThemeBrowserStoreValues {
loading: boolean;
@@ -83,6 +83,12 @@ export function ThemeBrowserStoreProvider({
try {
await get().getFilters();
await get().getThemes();
+
+ themeBrowserSharedStore.subscribe((state, prevState) => {
+ if (state.targetOverride !== prevState.targetOverride) {
+ get().getThemes();
+ }
+ });
} catch (error) {}
},
getFilters: async () => {
From 1485804b1f8c618ab643ee9b79423a36236d207f Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Wed, 25 Dec 2024 18:49:40 -0700
Subject: [PATCH 33/53] add separate BPM and Desktop theme tabs
---
.../theme-store/context/ThemeBrowserStore.tsx | 28 +++++++++++--------
.../theme-store/pages/ThemeStoreRouter.tsx | 19 +++++++++++--
2 files changed, 34 insertions(+), 13 deletions(-)
diff --git a/src/modules/theme-store/context/ThemeBrowserStore.tsx b/src/modules/theme-store/context/ThemeBrowserStore.tsx
index 8b005c1..b1348b4 100644
--- a/src/modules/theme-store/context/ThemeBrowserStore.tsx
+++ b/src/modules/theme-store/context/ThemeBrowserStore.tsx
@@ -26,17 +26,14 @@ interface IThemeBrowserStore extends ThemeBrowserStoreValues, ThemeBrowserStoreA
const ThemeBrowserStoreContext = createContext | null>(null);
-function generateParamStr(searchOpts: ThemeQueryRequest) {
+function generateParamStr(searchOpts: ThemeQueryRequest, themeType: "ALL" | "DESKTOP" | "BPM") {
const searchOptsClone = structuredClone(searchOpts);
- let prependString = "BPM-CSS.-Preset";
- if (searchOptsClone.filters.includes("Desktop")) {
- prependString = "-Preset";
- }
- if (searchOptsClone.filters.includes("Preset")) {
- prependString = "BPM-CSS";
- }
+
+ let prependString =
+ themeType === "ALL" ? "CSS" : themeType === "DESKTOP" ? "DESKTOP-CSS" : "BPM-CSS";
+ // "All" is a fake term made up by the frontend to have a unique key for it, the server just expects empty
searchOptsClone.filters === "All" ? (searchOptsClone.filters = "") : (prependString += ".");
- prependString && (searchOptsClone.filters = prependString + searchOptsClone.filters);
+ searchOptsClone.filters = prependString + searchOptsClone.filters;
// @ts-expect-error
const paramStr = new URLSearchParams(searchOptsClone).toString();
@@ -47,11 +44,13 @@ export function ThemeBrowserStoreProvider({
children,
filterPath,
themePath,
+ themeType,
requiresAuth = false,
}: {
children: React.ReactNode;
filterPath: string;
themePath: string;
+ themeType: "ALL" | "DESKTOP" | "BPM";
requiresAuth?: boolean;
}) {
const storeRef = useRef | null>(null);
@@ -84,6 +83,7 @@ export function ThemeBrowserStoreProvider({
await get().getFilters();
await get().getThemes();
+ // This ensures that it actually fetches new themed when you click on a forced target
themeBrowserSharedStore.subscribe((state, prevState) => {
if (state.targetOverride !== prevState.targetOverride) {
get().getThemes();
@@ -93,9 +93,15 @@ export function ThemeBrowserStoreProvider({
},
getFilters: async () => {
const { apiFetch } = getCSSLoaderState();
+ const typeMapping = {
+ ALL: "CSS",
+ DESKTOP: "DESKTOP-CSS",
+ BPM: "BPM-CSS",
+ };
+
try {
const response = await apiFetch(
- `${filterPath}?type=CSS`,
+ `${filterPath}?type=${typeMapping[themeType]}`,
{},
requiresAuth
);
@@ -126,7 +132,7 @@ export function ThemeBrowserStoreProvider({
const { apiFetch } = getCSSLoaderState();
const response = await apiFetch(
- `${themePath}?${generateParamStr(searchOpts)}`,
+ `${themePath}?${generateParamStr(formattedSearchOpts, themeType)}`,
{},
requiresAuth
);
diff --git a/src/modules/theme-store/pages/ThemeStoreRouter.tsx b/src/modules/theme-store/pages/ThemeStoreRouter.tsx
index 61c5b88..7dca9c5 100644
--- a/src/modules/theme-store/pages/ThemeStoreRouter.tsx
+++ b/src/modules/theme-store/pages/ThemeStoreRouter.tsx
@@ -13,12 +13,27 @@ export function ThemeStoreRouter() {
onShowTab={(tab) => setCurrentTab(tab)}
tabs={[
{
- id: "allthemes",
- title: "All Themes",
+ id: "bpm-themes",
+ title: "BPM Themes",
content: (
+
+
+ ),
+ },
+ {
+ id: "desktop-themes",
+ title: "Desktop Themes",
+ content: (
+
From 23dafea623f86d1558622f7be5c26ac9ece8ee8a Mon Sep 17 00:00:00 2001
From: Beebles <102569435+beebls@users.noreply.github.com>
Date: Thu, 26 Dec 2024 13:08:24 -0700
Subject: [PATCH 34/53] add load more button
---
.../components/BrowserSearchFields.tsx | 12 +++---
.../theme-store/components/LoadMoreButton.tsx | 26 ++++++++++++
.../components/ThemeBrowserPage.tsx | 42 +++++++++++--------
.../theme-store/context/ThemeBrowserStore.tsx | 38 ++++++++++++-----
4 files changed, 85 insertions(+), 33 deletions(-)
create mode 100644 src/modules/theme-store/components/LoadMoreButton.tsx
diff --git a/src/modules/theme-store/components/BrowserSearchFields.tsx b/src/modules/theme-store/components/BrowserSearchFields.tsx
index 24c2ac8..61e5093 100644
--- a/src/modules/theme-store/components/BrowserSearchFields.tsx
+++ b/src/modules/theme-store/components/BrowserSearchFields.tsx
@@ -54,8 +54,8 @@ export function BrowserSearchFields() {
strDefaultLabel="Last Updated"
selectedOption={searchOpts.order}
onChange={(value) => {
- const newSearchOpts = { ...searchOpts, order: value.data };
- setSearchOpts(newSearchOpts);
+ const newSearchOpts = { ...searchOpts, order: value.data, page: 1 };
+ void setSearchOpts(newSearchOpts);
}}
/>
@@ -68,8 +68,8 @@ export function BrowserSearchFields() {
selectedOption={targetOverride ?? searchOpts.filters}
onChange={(value) => {
// When you select a new target, remove the global override
- const newSearchOpts = { ...searchOpts, filters: value.data };
- setSearchOpts(newSearchOpts);
+ const newSearchOpts = { ...searchOpts, filters: value.data, page: 1 };
+ void setSearchOpts(newSearchOpts);
setTargetOverride(null);
}}
/>
@@ -83,8 +83,8 @@ export function BrowserSearchFields() {
label="Search"
value={searchOpts.search}
onChange={(event) => {
- const newSearchOpts = { ...searchOpts, search: event.target.value };
- setSearchOpts(newSearchOpts);
+ const newSearchOpts = { ...searchOpts, search: event.target.value, page: 1 };
+ void setSearchOpts(newSearchOpts);
}}
/>