From 6996e5424f33467ef5bb93f47614058c127cb3ee Mon Sep 17 00:00:00 2001 From: Lukas Senionis Date: Sat, 24 Sep 2022 20:49:23 +0300 Subject: [PATCH 01/40] fix(modal): update showModal types (#27) --- src/deck-components/Modal.tsx | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/deck-components/Modal.tsx b/src/deck-components/Modal.tsx index ea0ff5f..fb6ac44 100755 --- a/src/deck-components/Modal.tsx +++ b/src/deck-components/Modal.tsx @@ -1,9 +1,33 @@ import { FC, ReactNode } from 'react'; - import { findModuleChild } from '../webpack'; -// TODO: there is another argument, figure out what it does -export const showModal: (children: ReactNode, parent?: EventTarget) => void = findModuleChild((m) => { +// All of the popout options + strTitle are related. Proper usage is not yet known... +export interface ShowModalProps { + browserContext?: unknown; // This is another Deck Object that is yet to be found + bForcePopOut?: boolean; + bHideActionIcons?: boolean; + bHideMainWindowForPopouts?: boolean; + bNeverPopOut?: boolean; + fnOnClose?: () => void; // Seems to be the same as "closeModal" callback, but only when the modal is a popout. Will no longer work after "Update" invocation! + popupHeight?: number; + popupWidth?: number; + promiseRenderComplete?: Promise; // Invoked once the render is complete. Currently, it seems to be used as image loading success/error callback... + strTitle?: string; +} + +export interface ShowModalResult { + // This method will not invoke any of the variations of "closeModal" callbacks! + Close: () => void; + + // This method will replace the modal element completely and will not update the callback chains, + // meaning that "closeModal" and etc. will not automatically close the modal anymore (also "fnOnClose" + // will not be even called upon close anymore)! You have to manually call the "Close" method when, for example, + // the "closeModal" is invoked in the newly updated modal: + // { console.log("ABOUT TO CLOSE"); showModalRes.Close(); }} /> + Update: (modal: ReactNode) => void; +} + +export const showModal: (modal: ReactNode, parent?: EventTarget, props?: ShowModalProps) => Promise = findModuleChild((m) => { if (typeof m !== 'object') return undefined; for (let prop in m) { if (typeof m[prop] === 'function' && m[prop].toString().includes('bHideMainWindowForPopouts:!0')) { @@ -46,4 +70,4 @@ export const ModalRoot = findModuleChild((m) => { return m[prop]; } } -}) as FC; \ No newline at end of file +}) as FC; From 66eb0cbbf3b949b7a9de47c98cee3428e0868cb3 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 24 Sep 2022 17:49:57 +0000 Subject: [PATCH 02/40] chore(release): 3.2.1 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60bd9c5..16c7ee0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.2.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.2.0...v3.2.1) (2022-09-24) + + +### Bug Fixes + +* **modal:** update showModal types ([#27](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/27)) ([6996e54](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/6996e5424f33467ef5bb93f47614058c127cb3ee)) + # [3.2.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.1.4...v3.2.0) (2022-09-20) diff --git a/package-lock.json b/package-lock.json index 4559925..fc67fca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.2.0", + "version": "3.2.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.2.0", + "version": "3.2.1", "license": "GPL-2.0-or-later", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index 71a11be..cf4bda5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.2.0", + "version": "3.2.1", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 1fbe55aa544c9e84e2b3e2d6af9950db2fe7546c Mon Sep 17 00:00:00 2001 From: Lukas Senionis Date: Thu, 29 Sep 2022 19:34:00 +0300 Subject: [PATCH 03/40] fix(modal): extend props for modals (#32) --- src/deck-components/Modal.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/deck-components/Modal.tsx b/src/deck-components/Modal.tsx index fb6ac44..862944a 100755 --- a/src/deck-components/Modal.tsx +++ b/src/deck-components/Modal.tsx @@ -48,10 +48,18 @@ export interface ModalRootProps { bDisableBackgroundDismiss?: boolean; bHideCloseIcon?: boolean; bOKDisabled?: boolean; + bCancelDisabled?: boolean; } export interface ConfirmModalProps extends ModalRootProps { - onMiddleButton?(): void; + onMiddleButton?(): void; // setting this prop will enable the middle button + strTitle?: ReactNode; + strDescription?: ReactNode; + strOKButtonText?: ReactNode; + strCancelButtonText?: ReactNode; + strMiddleButtonText?: ReactNode; + bAlertDialog?: boolean; // This will open a modal with only OK button enabled + bMiddleDisabled?: boolean; } export const ConfirmModal = findModuleChild((m) => { From 35a061759ac404b87c20fc9d15a2bbe47d0bcfca Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 29 Sep 2022 16:36:04 +0000 Subject: [PATCH 04/40] chore(release): 3.2.2 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 16c7ee0..eb7142c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.2.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.2.1...v3.2.2) (2022-09-29) + + +### Bug Fixes + +* **modal:** extend props for modals ([#32](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/32)) ([1fbe55a](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/1fbe55aa544c9e84e2b3e2d6af9950db2fe7546c)) + ## [3.2.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.2.0...v3.2.1) (2022-09-24) diff --git a/package-lock.json b/package-lock.json index fc67fca..2c64787 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.2.1", + "version": "3.2.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.2.1", + "version": "3.2.2", "license": "GPL-2.0-or-later", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index cf4bda5..a351d60 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.2.1", + "version": "3.2.2", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 5d9c506fe70aeda521b9391a7b755916fe20d17d Mon Sep 17 00:00:00 2001 From: TrainDoctor Date: Fri, 30 Sep 2022 21:48:33 -0700 Subject: [PATCH 05/40] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a351d60..8a84510 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "components" ], "author": "Jonas Dellinger ", - "license": "LGPL-2.1-with-decky-exceptions", + "license": "LGPL-2.1", "bugs": { "url": "https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues" }, From 43cb2726d86012ed5595befb96835e8ba532c8ac Mon Sep 17 00:00:00 2001 From: TrainDoctor Date: Fri, 30 Sep 2022 21:50:23 -0700 Subject: [PATCH 06/40] chore(license): remove un-needed exceptions --- LICENSE | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/LICENSE b/LICENSE index b4821e3..8d8c7cf 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ - GNU LESSER GENERAL PUBLIC LICENSE (DECKY-FRONTEND-LIB v1) + GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. @@ -457,24 +457,6 @@ DAMAGES. END OF TERMS AND CONDITIONS -EXCEPTION NOTICE - -1. The exception is that you may use, copy, link, modify and distribute -under your own terms, binary object code versions of works based on the -Library. - -2. If you copy code from files distributed under the terms of the GNU -General Public Licence or the GNU Library General Public Licence into a -copy of this library, as this licence permits, the exception does not apply -to the code that you add in this way. To avoid misleading anyone as to the -status of such modified files, you must delete this exception notice from -such code and/or adjust the licensing conditions notice accordingly. - -3. If you write modifications of your own for this library, it is your -choice whether to permit this exception to apply to your modifications. If -you do not wish that, you must delete the exception notice from such code -and/or adjust the licensing conditions notice accordingly. - How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest From 4233128c7ee8c6e5ab4ee74385c7b1b911d507a6 Mon Sep 17 00:00:00 2001 From: Barend Du Toit Date: Sat, 1 Oct 2022 19:31:18 -0600 Subject: [PATCH 07/40] feat(Menu): add nested menu groups + more props (#30) --- src/deck-components/Menu.tsx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/deck-components/Menu.tsx b/src/deck-components/Menu.tsx index 85c34fd..3f31692 100755 --- a/src/deck-components/Menu.tsx +++ b/src/deck-components/Menu.tsx @@ -15,6 +15,7 @@ export interface MenuProps { label: string; onCancel?(): void; cancelText?: string; + children?: ReactNode; } export const Menu: FC = findModuleChild((m) => { @@ -27,8 +28,26 @@ export const Menu: FC = findModuleChild((m) => { } }); +export interface MenuGroupProps { + label: string; + disabled?: boolean; + children?: ReactNode; +} + +export const MenuGroup: FC = findModuleChild((m) => { + if (typeof m !== 'object') return undefined; + + for (let prop in m) { + if (m[prop]?.prototype?.RenderSubMenu && m[prop]?.prototype?.ShowSubMenu) { + return m[prop]; + } + } +}); + export interface MenuItemProps { onSelected?(): void; + disabled?: boolean; + children?: ReactNode; } export const MenuItem: FC = findModuleChild((m) => { From 0b4fcb8d4984a0ac2145ae2c2e23c51ce51ee8ab Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 2 Oct 2022 01:31:47 +0000 Subject: [PATCH 08/40] chore(release): 3.3.0 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb7142c..bebf4a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.3.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.2.2...v3.3.0) (2022-10-02) + + +### Features + +* **Menu:** add nested menu groups + more props ([#30](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/30)) ([4233128](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/4233128c7ee8c6e5ab4ee74385c7b1b911d507a6)) + ## [3.2.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.2.1...v3.2.2) (2022-09-29) diff --git a/package-lock.json b/package-lock.json index 2c64787..a58ac30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.2.2", + "version": "3.3.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.2.2", + "version": "3.3.0", "license": "GPL-2.0-or-later", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index 8a84510..6141a6a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.2.2", + "version": "3.3.0", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From a064163b49b467c79ad9ab11946b20e1ac3113c5 Mon Sep 17 00:00:00 2001 From: Travis Lane <63308171+Tormak9970@users.noreply.github.com> Date: Sat, 1 Oct 2022 20:32:23 -0500 Subject: [PATCH 09/40] updated static-classes (#26) --- src/deck-components/static-classes.ts | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/deck-components/static-classes.ts b/src/deck-components/static-classes.ts index a15447b..7e102e5 100644 --- a/src/deck-components/static-classes.ts +++ b/src/deck-components/static-classes.ts @@ -1,6 +1,6 @@ import { findModule } from '../webpack'; -type StaticClasses = Record< +type QuickAccessMenuClasses = Record< | 'ActiveTab' | 'AllTabContents' | 'BatteryDetailsLabels' @@ -63,7 +63,7 @@ type StaticClasses = Record< string >; -type ScrollClasses = Record< +type ScrollPanelClasses = Record< | 'ScrollBoth' | 'ScrollPanel' | 'ScrollX' @@ -355,10 +355,18 @@ type GamepadSliderClasses = Record< string >; -export const staticClasses: StaticClasses = findModule((mod) => typeof mod === 'object' && mod.TransitionMenuDelay); -export const scrollClasses: ScrollClasses = findModule((mod) => typeof mod === 'object' && mod.ScrollPanel && mod.ScrollY); -export const gamepadDialogClasses: GamepadDialogClasses = findModule((mod) => typeof mod === 'object' && mod.WithFirstRow); -export const quickAccessControlsClasses: QuickAccessControlsClasses = findModule((mod) => typeof mod === 'object' && mod.PanelSectionRow); -export const updaterFieldClasses: UpdaterFieldClasses = findModule((mod) => typeof mod === 'object' && mod.PatchNotes && mod.PostedTime); -export const playSectionClasses: PlaySectionClasses = findModule((mod) => typeof mod === 'object' && mod.MenuButton && mod.MenuActive); -export const gamepadSliderClasses: GamepadSliderClasses = findModule((mod) => typeof mod === 'object' && mod.SliderTrack && mod.SliderHasNotches); \ No newline at end of file +export const quickAccessMenuClasses: QuickAccessMenuClasses = findModule((mod) => typeof mod === 'object' && mod?.Title?.includes('quickaccessmenu')); +/** + * @depreciated please use quickAccessMenuClasses instead + */ +export const staticClasses = quickAccessMenuClasses; +export const scrollPanelClasses: ScrollPanelClasses = findModule((mod) => typeof mod === 'object' && mod?.ScrollPanel?.includes('scrollpanel')); +/** + * @depreciated please use scrollPanelClasses instead + */ +export const scrollClasses = scrollPanelClasses; +export const gamepadDialogClasses: GamepadDialogClasses = findModule((mod) => typeof mod === 'object' && mod?.GamepadDialogContent?.includes('gamepaddialog')); +export const quickAccessControlsClasses: QuickAccessControlsClasses = findModule((mod) => typeof mod === 'object' && mod?.PanelSection?.includes('quickaccesscontrols')); +export const updaterFieldClasses: UpdaterFieldClasses = findModule((mod) => typeof mod === 'object' && mod?.OOBEUpdateStatusContainer?.includes('updaterfield')); +export const playSectionClasses: PlaySectionClasses = findModule((mod) => typeof mod === 'object' && mod?.Container?.includes('appdetailsplaysection')); +export const gamepadSliderClasses: GamepadSliderClasses = findModule((mod) => typeof mod === 'object' && mod?.SliderControlPanelGroup?.includes('gamepadslider')); \ No newline at end of file From ed0be5e87e964ed57cc99b40ff55fe35a2f518b2 Mon Sep 17 00:00:00 2001 From: Barend Du Toit Date: Sat, 1 Oct 2022 19:33:02 -0600 Subject: [PATCH 10/40] fix(SidebarNavigation): add more props (#29) --- src/deck-components/SidebarNavigation.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/deck-components/SidebarNavigation.tsx b/src/deck-components/SidebarNavigation.tsx index 3305b37..1e29df7 100644 --- a/src/deck-components/SidebarNavigation.tsx +++ b/src/deck-components/SidebarNavigation.tsx @@ -4,8 +4,14 @@ import { Module, findModuleChild } from '../webpack'; export interface SidebarNavigationPages { title: string; - route: string; content: ReactNode; + icon?: ReactNode; + visible?: boolean; + hideTitle?: boolean; + identifier?: string; + route?: string; + link?: string; + padding?: "none" | "compact"; } export interface SidebarNavigationProps { @@ -13,6 +19,8 @@ export interface SidebarNavigationProps { pages: SidebarNavigationPages[]; showTitle?: boolean; disableRouteReporting?: boolean; + page?: string; + onPageRequested?: (page: string) => void; } export const SidebarNavigation = findModuleChild((mod: Module) => { From 54a1ef6201c9f6366cf7de6036220027fef24f91 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 2 Oct 2022 01:33:33 +0000 Subject: [PATCH 11/40] chore(release): 3.3.1 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bebf4a5..6288c7f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.3.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.0...v3.3.1) (2022-10-02) + + +### Bug Fixes + +* **SidebarNavigation:** add more props ([#29](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/29)) ([ed0be5e](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/ed0be5e87e964ed57cc99b40ff55fe35a2f518b2)) + # [3.3.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.2.2...v3.3.0) (2022-10-02) diff --git a/package-lock.json b/package-lock.json index a58ac30..8da6e64 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.3.0", + "version": "3.3.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.3.0", + "version": "3.3.1", "license": "GPL-2.0-or-later", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index 6141a6a..8b8c870 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.3.0", + "version": "3.3.1", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 4cbb30c21cfe3df3998bf7d9f90623e3afd6a403 Mon Sep 17 00:00:00 2001 From: Lukas Senionis Date: Sun, 2 Oct 2022 04:38:46 +0300 Subject: [PATCH 12/40] Add custom-hook: useQuickAccessVisible (#28) --- src/custom-hooks/index.ts | 1 + src/custom-hooks/usequickaccessvisible.tsx | 67 ++++++++++++++++++++++ src/index.ts | 1 + 3 files changed, 69 insertions(+) create mode 100644 src/custom-hooks/index.ts create mode 100644 src/custom-hooks/usequickaccessvisible.tsx diff --git a/src/custom-hooks/index.ts b/src/custom-hooks/index.ts new file mode 100644 index 0000000..56ae7bf --- /dev/null +++ b/src/custom-hooks/index.ts @@ -0,0 +1 @@ +export * from './usequickaccessvisible'; diff --git a/src/custom-hooks/usequickaccessvisible.tsx b/src/custom-hooks/usequickaccessvisible.tsx new file mode 100644 index 0000000..e66de38 --- /dev/null +++ b/src/custom-hooks/usequickaccessvisible.tsx @@ -0,0 +1,67 @@ +import { useState, useEffect } from 'react'; + +declare global { + var FocusNavController: any; +} + +/** + * Returns state indicating the visibility of quick access menu. + * + * @remarks + * During development it is possible to open the quick access menu without giving it + * focus in some cases. In such cases, the quick access menu state is invisible. + * + * This seems to be impossible to replicate when running the deck normally. Even in + * the edge cases it always seems to have a focus. + * + * @returns `true` if quick access menu is visible (focused) and `false` otherwise. + * + * @example + * import { VFC, useEffect } from "react"; + * import { useQuickAccessVisible } from "decky-frontend-lib"; + * + * export const PluginPanelView: VFC<{}> = ({ }) => { + * const isVisible = useQuickAccessVisible(); + * + * useEffect(() => { + * if (!isVisible) { + * return; + * } + * + * const interval = setInterval(() => console.log("Hello world!"), 1000); + * return () => { + * clearInterval(interval); + * } + * }, [isVisible]) + * + * return ( + *
+ * {isVisible ? "VISIBLE" : "INVISIBLE"} + *
+ * ); + * }; + */ +export function useQuickAccessVisible(): boolean { + // Assuming that the component is rendered in QAM already, so true by default... + const [isVisible, setIsVisible] = useState(true); + + useEffect(() => { + const quickAccessWindow: Window | null = FocusNavController?.GetGamepadNavTreeByID("QuickAccess-NA")?.m_Root?.m_element?.ownerDocument.defaultView ?? null; + if (quickAccessWindow === null) { + console.error("Could not get window of QuickAccess menu!"); + return; + } + + const onBlur = () => setIsVisible(false); + const onFocus = () => setIsVisible(true); + + quickAccessWindow.addEventListener("blur", onBlur); + quickAccessWindow.addEventListener("focus", onFocus); + return () => { + quickAccessWindow.removeEventListener("blur", onBlur); + quickAccessWindow.removeEventListener("focus", onFocus); + }; + }, []); + + return isVisible; +} diff --git a/src/index.ts b/src/index.ts index ad884b4..3ab76d5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,6 @@ // export * from './deck-libs'; export * from './custom-components'; +export * from './custom-hooks'; export * from './deck-components'; export * from './plugin'; export * from './webpack'; From c910dbde79339f580f982ef5e7185f16146333ff Mon Sep 17 00:00:00 2001 From: Lukas Senionis Date: Sun, 2 Oct 2022 04:41:47 +0300 Subject: [PATCH 13/40] Add dialog components (#22) --- src/deck-components/Button.tsx | 24 +++---------- src/deck-components/Dialog.tsx | 63 ++++++++++++++++++++++++++++++++++ src/deck-components/index.ts | 1 + 3 files changed, 69 insertions(+), 19 deletions(-) create mode 100644 src/deck-components/Dialog.tsx diff --git a/src/deck-components/Button.tsx b/src/deck-components/Button.tsx index 11cf75e..9fee9c6 100644 --- a/src/deck-components/Button.tsx +++ b/src/deck-components/Button.tsx @@ -1,22 +1,8 @@ -import { CSSProperties, FC, RefAttributes } from 'react'; +import { FC } from 'react'; +import { DialogButton, DialogButtonProps } from "./Dialog"; -import { CommonUIModule } from '../webpack'; -import { FooterLegendProps } from './FooterLegend'; - -export interface DialogButtonProps extends RefAttributes, FooterLegendProps { - label?: string; - style?: CSSProperties; - className?: string; - noFocusRing?: boolean; - description?: string; - layout?: 'below'; - onClick?(e: MouseEvent): void; - disabled?: boolean; - bottomSeparator?: boolean; +export interface ButtonProps extends DialogButtonProps { } -export const DialogButton = Object.values(CommonUIModule).find( - (mod: any) => - mod?.render?.toString()?.includes('Object.assign({type:"button"') && - mod?.render?.toString()?.includes('DialogButton'), -) as FC; \ No newline at end of file +// Button isn't exported, so call DialogButton to grab it +export const Button = (DialogButton as any)?.render({}).type as FC; diff --git a/src/deck-components/Dialog.tsx b/src/deck-components/Dialog.tsx new file mode 100644 index 0000000..87d4edb --- /dev/null +++ b/src/deck-components/Dialog.tsx @@ -0,0 +1,63 @@ +import { CommonUIModule } from "../webpack"; +import { CSSProperties, FC, RefAttributes } from "react"; +import { FooterLegendProps } from './FooterLegend'; + +export interface DialogCommonProps extends RefAttributes { + style?: CSSProperties; + className?: string; +} + +export interface DialogButtonProps extends DialogCommonProps, FooterLegendProps { + noFocusRing?: boolean; + disabled?: boolean; + onClick?(e: MouseEvent): void; + onPointerDown?(e: PointerEvent): void; + onPointerUp?(e: PointerEvent): void; + onPointerCancel?(e: PointerEvent): void; + onMouseDown?(e: MouseEvent): void; + onMouseUp?(e: MouseEvent): void; + onTouchStart?(e: TouchEvent): void; + onTouchEnd?(e: TouchEvent): void; + onTouchCancel?(e: TouchEvent): void; + onSubmit?(e: SubmitEvent): void; +} + +const CommonDialogDivs = Object.values(CommonUIModule).filter((m: any) => typeof m === "object" && m?.render?.toString().includes('"div",Object.assign({},')); +const MappedDialogDivs = new Map(Object.values(CommonDialogDivs).map((m: any) => { + const renderedDiv = m.render({}); + // Take only the first class name segment as it identifies the element we want + return [renderedDiv.props.className.split(" ")[0], m] +})); + +export const DialogHeader = MappedDialogDivs.get("DialogHeader") as FC; +export const DialogSubHeader = MappedDialogDivs.get("DialogSubHeader") as FC; +export const DialogFooter = MappedDialogDivs.get("DialogFooter") as FC; +export const DialogLabel = MappedDialogDivs.get("DialogLabel") as FC; +export const DialogBodyText = MappedDialogDivs.get("DialogBodyText") as FC; +export const DialogBody = MappedDialogDivs.get("DialogBody") as FC; +export const DialogControlsSection = MappedDialogDivs.get("DialogControlsSection") as FC; +export const DialogControlsSectionHeader = MappedDialogDivs.get("DialogControlsSectionHeader") as FC; + +export const DialogButtonPrimary = Object.values(CommonUIModule).find( + (mod: any) => + mod?.render?.toString()?.includes('DialogButton') && + mod?.render?.toString()?.includes('Primary') +) as FC; + +export const DialogButtonSecondary = Object.values(CommonUIModule).find( + (mod: any) => + mod?.render?.toString()?.includes('Object.assign({type:"button"') && + mod?.render?.toString()?.includes('DialogButton') && + mod?.render?.toString()?.includes('Secondary') +) as FC; + +export const DialogButtonSmall = Object.values(CommonUIModule).find( + (mod: any) => + mod?.render?.toString()?.includes('Object.assign({type:"button"') && + mod?.render?.toString()?.includes('DialogButton') && + mod?.render?.toString()?.includes('Small') +) as FC; + +// This is the "main" button. The Primary can act as a submit button, +// therefore secondary is chosen (also for backwards comp. reasons) +export const DialogButton = DialogButtonSecondary; diff --git a/src/deck-components/index.ts b/src/deck-components/index.ts index 2eb94af..c44446d 100755 --- a/src/deck-components/index.ts +++ b/src/deck-components/index.ts @@ -1,6 +1,7 @@ export * from './Button'; export * from './ButtonItem'; export * from './Carousel'; +export * from './Dialog'; export * from './Dropdown'; export * from './Field'; export * from './Focusable'; From 40871af8539858f435c83123a56d4b31b63d627d Mon Sep 17 00:00:00 2001 From: AAGaming Date: Sat, 1 Oct 2022 22:30:33 -0400 Subject: [PATCH 14/40] fix(modal): allow children --- src/deck-components/Modal.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/deck-components/Modal.tsx b/src/deck-components/Modal.tsx index 862944a..c3846ad 100755 --- a/src/deck-components/Modal.tsx +++ b/src/deck-components/Modal.tsx @@ -37,6 +37,7 @@ export const showModal: (modal: ReactNode, parent?: EventTarget, props?: ShowMod }); export interface ModalRootProps { + children: ReactNode; onCancel?(): void; closeModal?(): void; onOK?(): void; From b5dc08a977030d2813435dc3b0d43dafdde75411 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 2 Oct 2022 02:31:09 +0000 Subject: [PATCH 15/40] chore(release): 3.3.2 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6288c7f..aa84f81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.3.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.1...v3.3.2) (2022-10-02) + + +### Bug Fixes + +* **modal:** allow children ([40871af](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/40871af8539858f435c83123a56d4b31b63d627d)) + ## [3.3.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.0...v3.3.1) (2022-10-02) diff --git a/package-lock.json b/package-lock.json index 8da6e64..d00de2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.3.1", + "version": "3.3.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.3.1", + "version": "3.3.2", "license": "GPL-2.0-or-later", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index 8b8c870..1c5ef94 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.3.1", + "version": "3.3.2", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 99ad7543a9966b8ff3f4ec01e6f05c94e5242c93 Mon Sep 17 00:00:00 2001 From: Lukas Senionis Date: Sun, 2 Oct 2022 15:36:00 +0300 Subject: [PATCH 16/40] fix(modal): make children optional (#34) --- src/deck-components/Modal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deck-components/Modal.tsx b/src/deck-components/Modal.tsx index c3846ad..12064c0 100755 --- a/src/deck-components/Modal.tsx +++ b/src/deck-components/Modal.tsx @@ -37,7 +37,7 @@ export const showModal: (modal: ReactNode, parent?: EventTarget, props?: ShowMod }); export interface ModalRootProps { - children: ReactNode; + children?: ReactNode; onCancel?(): void; closeModal?(): void; onOK?(): void; From 4b76ccd91ac75442b53fe8503b0bce151efc2d27 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 2 Oct 2022 12:36:26 +0000 Subject: [PATCH 17/40] chore(release): 3.3.3 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa84f81..b12c1ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.3.3](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.2...v3.3.3) (2022-10-02) + + +### Bug Fixes + +* **modal:** make children optional ([#34](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/34)) ([99ad754](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/99ad7543a9966b8ff3f4ec01e6f05c94e5242c93)) + ## [3.3.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.1...v3.3.2) (2022-10-02) diff --git a/package-lock.json b/package-lock.json index d00de2b..2b55ce8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.3.2", + "version": "3.3.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.3.2", + "version": "3.3.3", "license": "GPL-2.0-or-later", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index 1c5ef94..4ed2a43 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.3.2", + "version": "3.3.3", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 33dd4e55486cbf7b07fa8558d9cba814470caed8 Mon Sep 17 00:00:00 2001 From: AAGaming Date: Sun, 2 Oct 2022 12:22:58 -0400 Subject: [PATCH 18/40] chore(docs): initial typedoc setup (#35) --- .github/workflows/docs.yaml | 53 +++++++++ .gitignore | 2 + package-lock.json | 215 ++++++++++++++++++++++++++++++++++-- package.json | 5 + typedoc.json | 5 + 5 files changed, 273 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/docs.yaml create mode 100644 typedoc.json diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml new file mode 100644 index 0000000..916301c --- /dev/null +++ b/.github/workflows/docs.yaml @@ -0,0 +1,53 @@ +name: Generate docs + +on: + push: + branches: + - main + +jobs: + release: + name: Generate Docs + runs-on: ubuntu-22.04 + steps: + - name: Setup | Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + path: lib + - name: Setup | Checkout wiki + uses: actions/checkout@v3 + with: + repository: SteamDeckHomebrew/wiki + path: wiki + ssh-key: ${{ secrets.SSH_DEPLOY_KEY }} + persist-credentials: true + - name: Setup | Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Setup | Dependencies + run: | + cd lib + npm ci + + - name: Build Docs + run: | + cd lib + npm run docs -- --out ../wiki/api-docs/decky-frontend-lib + + - name: Commit files + run: | + cd wiki + git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + git add ./api-docs/decky-frontend-lib + git commit -m "Update decky-frontend-lib API docs" + + - name: Push changes + uses: ad-m/github-push-action@master + with: + ssh: true + directory: ./wiki + repository: SteamDeckHomebrew/wiki + branch: main \ No newline at end of file diff --git a/.gitignore b/.gitignore index 2f8f83d..711fd5b 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,5 @@ research/ # PNPM lockfile pnpm-lock.yaml + +docs/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2b55ce8..b58fbfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,7 @@ "": { "name": "decky-frontend-lib", "version": "3.3.3", - "license": "GPL-2.0-or-later", + "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" }, @@ -28,6 +28,10 @@ "semantic-release": "^19.0.3", "shx": "^0.3.4", "ts-jest": "^27.1.4", + "typedoc": "^0.23.15", + "typedoc-plugin-markdown": "^3.13.6", + "typedoc-plugin-mdn-links": "^2.0.0", + "typedoc-plugin-missing-exports": "^1.0.0", "typescript": "^4.6.3" } }, @@ -7335,6 +7339,12 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -7624,6 +7634,12 @@ "node": ">=10" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -7667,9 +7683,9 @@ } }, "node_modules/marked": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.16.tgz", - "integrity": "sha512-wahonIQ5Jnyatt2fn8KqF/nIqZM8mh3oRu2+l5EANGMhu6RFjiSG52QNE2eWzFMI94HqYSgN184NurgNG6CztA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.1.tgz", + "integrity": "sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==", "dev": true, "bin": { "marked": "bin/marked.js" @@ -11706,6 +11722,17 @@ "node": ">=4" } }, + "node_modules/shiki": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.11.1.tgz", + "integrity": "sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.0.0", + "vscode-oniguruma": "^1.6.1", + "vscode-textmate": "^6.0.0" + } + }, "node_modules/shx": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", @@ -12401,6 +12428,78 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typedoc": { + "version": "0.23.15", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.15.tgz", + "integrity": "sha512-x9Zu+tTnwxb9YdVr+zvX7LYzyBl1nieOr6lrSHbHsA22/RJK2m4Y525WIg5Mj4jWCmfL47v6f4hUzY7EIuwS5w==", + "dev": true, + "dependencies": { + "lunr": "^2.3.9", + "marked": "^4.0.19", + "minimatch": "^5.1.0", + "shiki": "^0.11.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 14.14" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x" + } + }, + "node_modules/typedoc-plugin-markdown": { + "version": "3.13.6", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.13.6.tgz", + "integrity": "sha512-ISSc9v3BK7HkokxSBuJPttXox4tJ6hP0N9wfSIk0fmLN67+eqtAxbk97gs2nDiuha+RTO5eW9gdeAb+RPP0mgg==", + "dev": true, + "dependencies": { + "handlebars": "^4.7.7" + }, + "peerDependencies": { + "typedoc": ">=0.23.0" + } + }, + "node_modules/typedoc-plugin-mdn-links": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-2.0.0.tgz", + "integrity": "sha512-IGLuelXPOenGdmklr5DHgPPf/MfZj7aEYCxCMtPN8C1D0lA7w0YLahd0jhDDcOMU7zL1EPcM5pPnhZHltDhqGQ==", + "dev": true, + "peerDependencies": { + "typedoc": "0.22.x || 0.23.x" + } + }, + "node_modules/typedoc-plugin-missing-exports": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-1.0.0.tgz", + "integrity": "sha512-7s6znXnuAj1eD9KYPyzVzR1lBF5nwAY8IKccP5sdoO9crG4lpd16RoFpLsh2PccJM+I2NASpr0+/NMka6ThwVA==", + "dev": true, + "peerDependencies": { + "typedoc": "0.22.x || 0.23.x" + } + }, + "node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typedoc/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/typescript": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", @@ -12514,6 +12613,18 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/vscode-oniguruma": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz", + "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==", + "dev": true + }, + "node_modules/vscode-textmate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-6.0.0.tgz", + "integrity": "sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==", + "dev": true + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -18354,6 +18465,12 @@ "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "dev": true }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -18581,6 +18698,12 @@ "yallist": "^4.0.0" } }, + "lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -18612,9 +18735,9 @@ "dev": true }, "marked": { - "version": "4.0.16", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.16.tgz", - "integrity": "sha512-wahonIQ5Jnyatt2fn8KqF/nIqZM8mh3oRu2+l5EANGMhu6RFjiSG52QNE2eWzFMI94HqYSgN184NurgNG6CztA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.1.tgz", + "integrity": "sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==", "dev": true }, "marked-terminal": { @@ -21487,6 +21610,17 @@ "rechoir": "^0.6.2" } }, + "shiki": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.11.1.tgz", + "integrity": "sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==", + "dev": true, + "requires": { + "jsonc-parser": "^3.0.0", + "vscode-oniguruma": "^1.6.1", + "vscode-textmate": "^6.0.0" + } + }, "shx": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", @@ -22008,6 +22142,61 @@ "is-typedarray": "^1.0.0" } }, + "typedoc": { + "version": "0.23.15", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.15.tgz", + "integrity": "sha512-x9Zu+tTnwxb9YdVr+zvX7LYzyBl1nieOr6lrSHbHsA22/RJK2m4Y525WIg5Mj4jWCmfL47v6f4hUzY7EIuwS5w==", + "dev": true, + "requires": { + "lunr": "^2.3.9", + "marked": "^4.0.19", + "minimatch": "^5.1.0", + "shiki": "^0.11.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "typedoc-plugin-markdown": { + "version": "3.13.6", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.13.6.tgz", + "integrity": "sha512-ISSc9v3BK7HkokxSBuJPttXox4tJ6hP0N9wfSIk0fmLN67+eqtAxbk97gs2nDiuha+RTO5eW9gdeAb+RPP0mgg==", + "dev": true, + "requires": { + "handlebars": "^4.7.7" + } + }, + "typedoc-plugin-mdn-links": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-2.0.0.tgz", + "integrity": "sha512-IGLuelXPOenGdmklr5DHgPPf/MfZj7aEYCxCMtPN8C1D0lA7w0YLahd0jhDDcOMU7zL1EPcM5pPnhZHltDhqGQ==", + "dev": true, + "requires": {} + }, + "typedoc-plugin-missing-exports": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-1.0.0.tgz", + "integrity": "sha512-7s6znXnuAj1eD9KYPyzVzR1lBF5nwAY8IKccP5sdoO9crG4lpd16RoFpLsh2PccJM+I2NASpr0+/NMka6ThwVA==", + "dev": true, + "requires": {} + }, "typescript": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", @@ -22098,6 +22287,18 @@ "spdx-expression-parse": "^3.0.0" } }, + "vscode-oniguruma": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz", + "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==", + "dev": true + }, + "vscode-textmate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-6.0.0.tgz", + "integrity": "sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==", + "dev": true + }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", diff --git a/package.json b/package.json index 4ed2a43..ed5bdda 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "scripts": { "build": "shx rm -rf dist && tsc -b", "dev": "tsc -b -w", + "docs": "typedoc --tsconfig ./tsconfig.json src/*", "prepack": "npm run build", "test": "echo 'No tests for now!'", "prepare": "husky install", @@ -57,6 +58,10 @@ "semantic-release": "^19.0.3", "shx": "^0.3.4", "ts-jest": "^27.1.4", + "typedoc": "^0.23.15", + "typedoc-plugin-markdown": "^3.13.6", + "typedoc-plugin-mdn-links": "^2.0.0", + "typedoc-plugin-missing-exports": "^1.0.0", "typescript": "^4.6.3" }, "pnpm": { diff --git a/typedoc.json b/typedoc.json new file mode 100644 index 0000000..b11720c --- /dev/null +++ b/typedoc.json @@ -0,0 +1,5 @@ +{ + "githubPages": false, + "categorizeByGroup": true, + "excludeExternals": true +} \ No newline at end of file From fbd936dc1fe4c23c72f4ee27af95abc004382acd Mon Sep 17 00:00:00 2001 From: AAGaming Date: Sun, 2 Oct 2022 12:33:20 -0400 Subject: [PATCH 19/40] fix(docs): build each component as a seperate page --- .github/workflows/docs.yaml | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 916301c..4b6c597 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -41,7 +41,7 @@ jobs: cd wiki git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" git config --local user.name "github-actions[bot]" - git add ./api-docs/decky-frontend-lib + git add -A ./api-docs/decky-frontend-lib git commit -m "Update decky-frontend-lib API docs" - name: Push changes diff --git a/package.json b/package.json index ed5bdda..c9f0165 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "build": "shx rm -rf dist && tsc -b", "dev": "tsc -b -w", - "docs": "typedoc --tsconfig ./tsconfig.json src/*", + "docs": "typedoc --tsconfig ./tsconfig.json src/**/*", "prepack": "npm run build", "test": "echo 'No tests for now!'", "prepare": "husky install", From 472307e4a4587682a749c7d15d8cddc46f8ba4f2 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 2 Oct 2022 16:34:00 +0000 Subject: [PATCH 20/40] chore(release): 3.3.4 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b12c1ac..2278727 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.3.4](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.3...v3.3.4) (2022-10-02) + + +### Bug Fixes + +* **docs:** build each component as a seperate page ([fbd936d](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/fbd936dc1fe4c23c72f4ee27af95abc004382acd)) + ## [3.3.3](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.2...v3.3.3) (2022-10-02) diff --git a/package-lock.json b/package-lock.json index b58fbfe..8bd4671 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.3.3", + "version": "3.3.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.3.3", + "version": "3.3.4", "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index c9f0165..af27736 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.3.3", + "version": "3.3.4", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 0f205e891694e2cee211b0c2db74a6dda2432507 Mon Sep 17 00:00:00 2001 From: AAGaming Date: Sun, 2 Oct 2022 12:37:43 -0400 Subject: [PATCH 21/40] fix(docs): set categorizeByGroup to true --- typedoc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typedoc.json b/typedoc.json index b11720c..057e6c2 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,5 +1,5 @@ { "githubPages": false, - "categorizeByGroup": true, + "categorizeByGroup": false, "excludeExternals": true } \ No newline at end of file From 67a76e269144cfd50d5ca68105d5e6dadf30df99 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 2 Oct 2022 16:38:31 +0000 Subject: [PATCH 22/40] chore(release): 3.3.5 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2278727..b32b4e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.3.5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.4...v3.3.5) (2022-10-02) + + +### Bug Fixes + +* **docs:** set categorizeByGroup to true ([0f205e8](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/0f205e891694e2cee211b0c2db74a6dda2432507)) + ## [3.3.4](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.3...v3.3.4) (2022-10-02) diff --git a/package-lock.json b/package-lock.json index 8bd4671..ae5850f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.3.4", + "version": "3.3.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.3.4", + "version": "3.3.5", "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index af27736..a287fad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.3.4", + "version": "3.3.5", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From e2920dd91e81d915a2319280d8473df71a4e4232 Mon Sep 17 00:00:00 2001 From: OMGDuke Date: Wed, 5 Oct 2022 19:42:54 -0600 Subject: [PATCH 23/40] feat(hooks): Added useParams hook (#36) --- src/deck-hooks/index.ts | 1 + src/deck-hooks/useParams.ts | 15 +++++++++++++++ src/index.ts | 1 + 3 files changed, 17 insertions(+) create mode 100644 src/deck-hooks/index.ts create mode 100644 src/deck-hooks/useParams.ts diff --git a/src/deck-hooks/index.ts b/src/deck-hooks/index.ts new file mode 100644 index 0000000..1009bae --- /dev/null +++ b/src/deck-hooks/index.ts @@ -0,0 +1 @@ +export * from './useParams' diff --git a/src/deck-hooks/useParams.ts b/src/deck-hooks/useParams.ts new file mode 100644 index 0000000..39f7fe3 --- /dev/null +++ b/src/deck-hooks/useParams.ts @@ -0,0 +1,15 @@ +import { ReactRouter } from "../webpack"; + +/** + * Get the current params from ReactRouter + * + * @returns an object with the current ReactRouter params + * + * @example + * import { useParams } from "decky-frontend-lib"; + * + * const { appid } = useParams<{ appid: string }>() + */ +export const useParams = Object.values(ReactRouter).find((val) => + /return (\w)\?\1\.params:{}/.test(`${val}`) +) as () => T \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 3ab76d5..0d36125 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,7 @@ export * from './custom-components'; export * from './custom-hooks'; export * from './deck-components'; +export * from './deck-hooks' export * from './plugin'; export * from './webpack'; export * from './utils'; From 621e47c6a0a0f24ce154c6032de1d188d821d1a1 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 6 Oct 2022 01:43:25 +0000 Subject: [PATCH 24/40] chore(release): 3.4.0 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b32b4e8..2c73614 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.4.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.5...v3.4.0) (2022-10-06) + + +### Features + +* **hooks:** Added useParams hook ([#36](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/36)) ([e2920dd](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/e2920dd91e81d915a2319280d8473df71a4e4232)) + ## [3.3.5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.4...v3.3.5) (2022-10-02) diff --git a/package-lock.json b/package-lock.json index ae5850f..03d13d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.3.5", + "version": "3.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.3.5", + "version": "3.4.0", "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index a287fad..e25a86c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.3.5", + "version": "3.4.0", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From abbd3cddae24039cbc9b7d955924431e8fbacf94 Mon Sep 17 00:00:00 2001 From: AAGaming Date: Fri, 7 Oct 2022 22:04:00 -0400 Subject: [PATCH 25/40] feat(Tabs): initial tabs component, props, docs --- src/deck-components/Tabs.tsx | 47 ++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/deck-components/Tabs.tsx diff --git a/src/deck-components/Tabs.tsx b/src/deck-components/Tabs.tsx new file mode 100644 index 0000000..fecbffc --- /dev/null +++ b/src/deck-components/Tabs.tsx @@ -0,0 +1,47 @@ +import { FC, ReactNode } from 'react'; +import { findModule } from '../webpack'; +import { FooterLegendProps } from './FooterLegend'; + +/** + * Individual tab objects for the Tabs component + * + * @property id ID of this tab, can be used with activeTab to auto-focus a given tab + * @property title Title shown in the header bar + * @property renderTabAddon Return a {@link ReactNode} to render it next to the tab title, i.e. the counts for each tab on the Media page + * @property content Content of the tab + * @property footer Sets up button handlers and labels + */ +export interface Tab { + id: string; + title: string; + renderTabAddon?: () => ReactNode; + content: ReactNode; + footer?: FooterLegendProps; +} + +/** + * Props for the {@link Tabs} + * + * @property tabs array of {@link Tab} + * @property activeTab tab to automatically focus, {@link Tab.id} + * @property onShowTab Currently unknown. + * @property autoFocusContents Whether to automatically focus the tab contents or not. + * @property footer Sets up button handlers and labels + */ +export interface TabsProps { + tabs: Tab[]; + activeTab?: string; + onShowTab?: (...args: unknown[]) => void; + autoFocusContents?: boolean; +} + +/** + * Tabs component as used in the library and media tabs. See {@link TabsProps} + */ +export const Tabs = Object.values(findModule((m) => { + if (typeof m !== 'object') return false; + for (let prop in m) { + if (m[prop]?.Unbleed) return true; + } + return false; +})).find((x: any) => x?.type?.toString()?.includes("((function(){")) as FC; \ No newline at end of file From e5120928d36b5a035a1fe095a6bb8c0f18ed8cfd Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 8 Oct 2022 02:04:42 +0000 Subject: [PATCH 26/40] chore(release): 3.5.0 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c73614..f9bed98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.5.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.4.0...v3.5.0) (2022-10-08) + + +### Features + +* **Tabs:** initial tabs component, props, docs ([abbd3cd](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/abbd3cddae24039cbc9b7d955924431e8fbacf94)) + # [3.4.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.3.5...v3.4.0) (2022-10-06) diff --git a/package-lock.json b/package-lock.json index 03d13d6..59b0b23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.4.0", + "version": "3.5.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.4.0", + "version": "3.5.0", "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index e25a86c..7d74b7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.4.0", + "version": "3.5.0", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 0e0e0d204adc8d888f05e98edb6c1a1a171d00bb Mon Sep 17 00:00:00 2001 From: AAGaming Date: Fri, 7 Oct 2022 22:11:20 -0400 Subject: [PATCH 27/40] fix(Tabs): actually export it lmao --- src/deck-components/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/deck-components/index.ts b/src/deck-components/index.ts index c44446d..490c033 100755 --- a/src/deck-components/index.ts +++ b/src/deck-components/index.ts @@ -17,6 +17,7 @@ export * from './SliderField'; export * from './Spinner'; export * from './static-classes'; export * from './SteamSpinner'; +export * from './Tabs'; export * from './TextField'; export * from './Toggle'; export * from './ToggleField'; From c60d1e978735a772a380ec22a9384ce97e37c73d Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 8 Oct 2022 02:11:59 +0000 Subject: [PATCH 28/40] chore(release): 3.5.1 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f9bed98..dd5cc03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.5.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.0...v3.5.1) (2022-10-08) + + +### Bug Fixes + +* **Tabs:** actually export it lmao ([0e0e0d2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/0e0e0d204adc8d888f05e98edb6c1a1a171d00bb)) + # [3.5.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.4.0...v3.5.0) (2022-10-08) diff --git a/package-lock.json b/package-lock.json index 59b0b23..bd34efd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.5.0", + "version": "3.5.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.5.0", + "version": "3.5.1", "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index 7d74b7b..cd655de 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.5.0", + "version": "3.5.1", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 7161e757e9c98d677510e03eb2606ce58152f3b1 Mon Sep 17 00:00:00 2001 From: AAGaming Date: Fri, 7 Oct 2022 22:21:27 -0400 Subject: [PATCH 29/40] fix(Tabs): make onShowTab required --- src/deck-components/Tabs.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/deck-components/Tabs.tsx b/src/deck-components/Tabs.tsx index fecbffc..e7133e7 100644 --- a/src/deck-components/Tabs.tsx +++ b/src/deck-components/Tabs.tsx @@ -24,14 +24,14 @@ export interface Tab { * * @property tabs array of {@link Tab} * @property activeTab tab to automatically focus, {@link Tab.id} - * @property onShowTab Currently unknown. + * @property onShowTab Currently unknown, but required. * @property autoFocusContents Whether to automatically focus the tab contents or not. * @property footer Sets up button handlers and labels */ export interface TabsProps { tabs: Tab[]; activeTab?: string; - onShowTab?: (...args: unknown[]) => void; + onShowTab: (...args: unknown[]) => void; autoFocusContents?: boolean; } From 245dd0f3cf34915d027c4549adf6a9c75e2e37d5 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 8 Oct 2022 02:22:06 +0000 Subject: [PATCH 30/40] chore(release): 3.5.2 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd5cc03..e3ee1c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.5.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.1...v3.5.2) (2022-10-08) + + +### Bug Fixes + +* **Tabs:** make onShowTab required ([7161e75](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/7161e757e9c98d677510e03eb2606ce58152f3b1)) + ## [3.5.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.0...v3.5.1) (2022-10-08) diff --git a/package-lock.json b/package-lock.json index bd34efd..5bf05d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.5.1", + "version": "3.5.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.5.1", + "version": "3.5.2", "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index cd655de..cd7b3a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.5.1", + "version": "3.5.2", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 4024b76918eea43e43a24c162a937877f18627f0 Mon Sep 17 00:00:00 2001 From: AAGaming Date: Fri, 7 Oct 2022 22:51:59 -0400 Subject: [PATCH 31/40] fix(tabs): fix props and add example --- .releaserc.json | 3 ++- src/deck-components/Tabs.tsx | 51 +++++++++++++++++++++++++++--------- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/.releaserc.json b/.releaserc.json index 3db0142..cce7e56 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -6,7 +6,8 @@ { "preset": "angular", "releaseRules": [ - {"type": "chore", "scope": "classes", "release": "patch"} + {"type": "chore", "scope": "classes", "release": "patch"}, + {"type": "*", "scope": "docs", "release": false} ] } ], diff --git a/src/deck-components/Tabs.tsx b/src/deck-components/Tabs.tsx index e7133e7..cc12f86 100644 --- a/src/deck-components/Tabs.tsx +++ b/src/deck-components/Tabs.tsx @@ -5,11 +5,11 @@ import { FooterLegendProps } from './FooterLegend'; /** * Individual tab objects for the Tabs component * - * @property id ID of this tab, can be used with activeTab to auto-focus a given tab - * @property title Title shown in the header bar - * @property renderTabAddon Return a {@link ReactNode} to render it next to the tab title, i.e. the counts for each tab on the Media page - * @property content Content of the tab - * @property footer Sets up button handlers and labels + * `id` ID of this tab, can be used with activeTab to auto-focus a given tab + * `title` Title shown in the header bar + * `renderTabAddon` Return a {@link ReactNode} to render it next to the tab title, i.e. the counts for each tab on the Media page + * `content` Content of the tab + * `footer` Sets up button handlers and labels */ export interface Tab { id: string; @@ -22,16 +22,43 @@ export interface Tab { /** * Props for the {@link Tabs} * - * @property tabs array of {@link Tab} - * @property activeTab tab to automatically focus, {@link Tab.id} - * @property onShowTab Currently unknown, but required. - * @property autoFocusContents Whether to automatically focus the tab contents or not. - * @property footer Sets up button handlers and labels + * `tabs` array of {@link Tab} + * `activeTab` tab currently active, needs to be one of the tabs {@link Tab.id}, must be set using a `useState` in the `onShowTab` handler + * `onShowTab` Called when the active tab should change, needs to set `activeTab`. See example. + * `autoFocusContents` Whether to automatically focus the tab contents or not. + * `footer` Sets up button handlers and labels + * + * @example + * const Component: FC = () => { + * const [currentTab, setCurrentTab] = useState("Tab1"); + * + * return ( + * { + * setCurrentTabRoute(tabID); + * }} + * tabs={[ + * { + * title: "Tab 1", + * content: , + * id: "Tab1", + * }, + * { + * title: "Tab 2", + * content: , + * id: "Tab2", + * }, + * ]} + * /> + * ); + * }; */ export interface TabsProps { tabs: Tab[]; - activeTab?: string; - onShowTab: (...args: unknown[]) => void; + activeTab: string; + onShowTab: (tab: string) => void; autoFocusContents?: boolean; } From f8ddf210f0bbbadd1f3b7c33ddc222c838558a37 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 8 Oct 2022 02:52:44 +0000 Subject: [PATCH 32/40] chore(release): 3.5.3 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3ee1c8..2a49c51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.5.3](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.2...v3.5.3) (2022-10-08) + + +### Bug Fixes + +* **tabs:** fix props and add example ([4024b76](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/4024b76918eea43e43a24c162a937877f18627f0)) + ## [3.5.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.1...v3.5.2) (2022-10-08) diff --git a/package-lock.json b/package-lock.json index 5bf05d6..f225584 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.5.2", + "version": "3.5.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.5.2", + "version": "3.5.3", "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index cd7b3a6..b443566 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.5.2", + "version": "3.5.3", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From d6b00b07337f7a9d38813eeec7c0a848d5c15f17 Mon Sep 17 00:00:00 2001 From: AAGaming Date: Sat, 8 Oct 2022 01:50:25 -0400 Subject: [PATCH 33/40] fix(sidebarnavigation): allow null pags --- src/deck-components/SidebarNavigation.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/deck-components/SidebarNavigation.tsx b/src/deck-components/SidebarNavigation.tsx index 1e29df7..8ed84ac 100644 --- a/src/deck-components/SidebarNavigation.tsx +++ b/src/deck-components/SidebarNavigation.tsx @@ -2,7 +2,7 @@ import { ReactNode, VFC } from 'react'; import { Module, findModuleChild } from '../webpack'; -export interface SidebarNavigationPages { +export interface SidebarNavigationPage { title: string; content: ReactNode; icon?: ReactNode; @@ -16,7 +16,7 @@ export interface SidebarNavigationPages { export interface SidebarNavigationProps { title?: string; - pages: SidebarNavigationPages[]; + pages: (SidebarNavigationPage | null)[]; showTitle?: boolean; disableRouteReporting?: boolean; page?: string; From 554163cc5d04f97ed88bd1faa52d680773736504 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 8 Oct 2022 05:51:16 +0000 Subject: [PATCH 34/40] chore(release): 3.5.4 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a49c51..a1533cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.5.4](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.3...v3.5.4) (2022-10-08) + + +### Bug Fixes + +* **sidebarnavigation:** allow null pags ([d6b00b0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/d6b00b07337f7a9d38813eeec7c0a848d5c15f17)) + ## [3.5.3](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.2...v3.5.3) (2022-10-08) diff --git a/package-lock.json b/package-lock.json index f225584..1b54746 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.5.3", + "version": "3.5.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.5.3", + "version": "3.5.4", "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index b443566..fc743e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.5.3", + "version": "3.5.4", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 0ce1b5499df699f602aa83ab87ad8b246d133eac Mon Sep 17 00:00:00 2001 From: AAGaming Date: Sat, 8 Oct 2022 01:53:33 -0400 Subject: [PATCH 35/40] fix(sidebarnavigation): no dont --- src/deck-components/SidebarNavigation.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deck-components/SidebarNavigation.tsx b/src/deck-components/SidebarNavigation.tsx index 8ed84ac..85228cc 100644 --- a/src/deck-components/SidebarNavigation.tsx +++ b/src/deck-components/SidebarNavigation.tsx @@ -16,7 +16,7 @@ export interface SidebarNavigationPage { export interface SidebarNavigationProps { title?: string; - pages: (SidebarNavigationPage | null)[]; + pages: SidebarNavigationPage[]; showTitle?: boolean; disableRouteReporting?: boolean; page?: string; From 8a887ca858970fec771c1afd10f74fcfc9e3020c Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 8 Oct 2022 05:54:20 +0000 Subject: [PATCH 36/40] chore(release): 3.5.5 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1533cb..11f78cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.5.5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.4...v3.5.5) (2022-10-08) + + +### Bug Fixes + +* **sidebarnavigation:** no dont ([0ce1b54](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/0ce1b5499df699f602aa83ab87ad8b246d133eac)) + ## [3.5.4](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.3...v3.5.4) (2022-10-08) diff --git a/package-lock.json b/package-lock.json index 1b54746..07cea43 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.5.4", + "version": "3.5.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.5.4", + "version": "3.5.5", "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index fc743e4..1caf4da 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.5.4", + "version": "3.5.5", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 5a5218a7c43f6a90fc4de5f7a0cd524d1cd298d6 Mon Sep 17 00:00:00 2001 From: Lukas Senionis Date: Sat, 8 Oct 2022 15:56:14 +0300 Subject: [PATCH 37/40] fix(Dialog): remove not exported dialog button (#37) --- src/deck-components/Dialog.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/deck-components/Dialog.tsx b/src/deck-components/Dialog.tsx index 87d4edb..dd88e5c 100644 --- a/src/deck-components/Dialog.tsx +++ b/src/deck-components/Dialog.tsx @@ -51,13 +51,6 @@ export const DialogButtonSecondary = Object.values(CommonUIModule).find( mod?.render?.toString()?.includes('Secondary') ) as FC; -export const DialogButtonSmall = Object.values(CommonUIModule).find( - (mod: any) => - mod?.render?.toString()?.includes('Object.assign({type:"button"') && - mod?.render?.toString()?.includes('DialogButton') && - mod?.render?.toString()?.includes('Small') -) as FC; - // This is the "main" button. The Primary can act as a submit button, // therefore secondary is chosen (also for backwards comp. reasons) export const DialogButton = DialogButtonSecondary; From 1143a9f3e0a0e27f398b13cef85cd7328b38c419 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 8 Oct 2022 12:57:07 +0000 Subject: [PATCH 38/40] chore(release): 3.5.6 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11f78cf..5ee9fd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.5.6](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.5...v3.5.6) (2022-10-08) + + +### Bug Fixes + +* **Dialog:** remove not exported dialog button ([#37](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/37)) ([5a5218a](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/5a5218a7c43f6a90fc4de5f7a0cd524d1cd298d6)) + ## [3.5.5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.4...v3.5.5) (2022-10-08) diff --git a/package-lock.json b/package-lock.json index 07cea43..dc8fc41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.5.5", + "version": "3.5.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.5.5", + "version": "3.5.6", "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index 1caf4da..2c1bb1e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.5.5", + "version": "3.5.6", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 2fc2060a6c0d9414d1c36a1a022fdc6f2cd7f8bb Mon Sep 17 00:00:00 2001 From: AAGaming Date: Fri, 14 Oct 2022 23:43:45 -0400 Subject: [PATCH 39/40] feat(plugin): add alwaysRender --- src/plugin.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugin.tsx b/src/plugin.tsx index b07d378..de09949 100644 --- a/src/plugin.tsx +++ b/src/plugin.tsx @@ -6,6 +6,7 @@ export interface Plugin { icon: JSX.Element; content?: JSX.Element; onDismount?(): void; + alwaysRender?: boolean; } interface ServerResponseSuccess { @@ -37,8 +38,8 @@ export interface ToastData { icon?: ReactNode; className?: string; contentClassName?: string; - duration?: number - critical?: boolean + duration?: number; + critical?: boolean; } export interface Toaster { From 276e4eccd2ada15af5578cffba1cc352e3ff1e58 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 15 Oct 2022 03:44:35 +0000 Subject: [PATCH 40/40] chore(release): 3.6.0 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ee9fd9..3e13775 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.6.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.6...v3.6.0) (2022-10-15) + + +### Features + +* **plugin:** add alwaysRender ([2fc2060](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/2fc2060a6c0d9414d1c36a1a022fdc6f2cd7f8bb)) + ## [3.5.6](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.5.5...v3.5.6) (2022-10-08) diff --git a/package-lock.json b/package-lock.json index dc8fc41..7b8243b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decky-frontend-lib", - "version": "3.5.6", + "version": "3.6.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decky-frontend-lib", - "version": "3.5.6", + "version": "3.6.0", "license": "LGPL-2.1", "dependencies": { "minimist": "^1.2.6" diff --git a/package.json b/package.json index 2c1bb1e..13a6f71 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.5.6", + "version": "3.6.0", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts",