From c84a09146935f0942265b7a1e4aadc40e8cf22dc Mon Sep 17 00:00:00 2001 From: Jozen Blue Martinez Date: Mon, 28 Nov 2022 20:03:07 +0800 Subject: [PATCH 01/28] feat(MenuItem): add missing props (#59) --- src/deck-components/Menu.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/deck-components/Menu.tsx b/src/deck-components/Menu.tsx index 7ce937a..2a41a39 100755 --- a/src/deck-components/Menu.tsx +++ b/src/deck-components/Menu.tsx @@ -50,7 +50,11 @@ export const MenuGroup: FC = findModuleChild((m) => { }); export interface MenuItemProps { - onSelected?(): void; + bInteractableItem?: boolean; + onClick?(evt: Event): void; + onSelected?(evt: Event): void; + onMouseEnter?(evt: MouseEvent): void; + onMoveRight?(): void; disabled?: boolean; children?: ReactNode; } From 07d15f5dcad797a961ab3b4e7e62838c32432708 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 28 Nov 2022 12:03:43 +0000 Subject: [PATCH 02/28] chore(release): 3.12.0 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6218b83..00a8a26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.12.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.11.1...v3.12.0) (2022-11-28) + + +### Features + +* **MenuItem:** add missing props ([#59](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/59)) ([c84a091](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/c84a09146935f0942265b7a1e4aadc40e8cf22dc)) + ## [3.11.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.11.0...v3.11.1) (2022-11-20) diff --git a/package.json b/package.json index 2f0a6bb..807033a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.11.1", + "version": "3.12.0", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 678ba216f1e194986b0c391398e6f73536cd0102 Mon Sep 17 00:00:00 2001 From: Jozen Blue Martinez Date: Wed, 30 Nov 2022 04:00:45 +0800 Subject: [PATCH 03/28] feat(Menu): add more missing props (#60) [CI SKIP] * feat(Menu): extend FooterLegendProps * feat(MenuItem): add more missing props --- src/deck-components/Menu.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/deck-components/Menu.tsx b/src/deck-components/Menu.tsx index 2a41a39..afe1f25 100755 --- a/src/deck-components/Menu.tsx +++ b/src/deck-components/Menu.tsx @@ -2,6 +2,7 @@ import { FC, ReactNode } from 'react'; import { fakeRenderComponent } from '../utils'; import { findModuleChild } from '../webpack'; +import { FooterLegendProps } from './FooterLegend'; export const showContextMenu: (children: ReactNode, parent?: EventTarget) => void = findModuleChild((m) => { if (typeof m !== 'object') return undefined; @@ -12,7 +13,7 @@ export const showContextMenu: (children: ReactNode, parent?: EventTarget) => voi } }); -export interface MenuProps { +export interface MenuProps extends FooterLegendProps { label: string; onCancel?(): void; cancelText?: string; @@ -49,13 +50,16 @@ export const MenuGroup: FC = findModuleChild((m) => { } }); -export interface MenuItemProps { +export interface MenuItemProps extends FooterLegendProps { bInteractableItem?: boolean; onClick?(evt: Event): void; onSelected?(evt: Event): void; onMouseEnter?(evt: MouseEvent): void; onMoveRight?(): void; + selected?: boolean; disabled?: boolean; + bPlayAudio?: boolean; + tone?: 'positive' | 'emphasis' | 'destructive'; children?: ReactNode; } From 4c2a715324706bdf52c1ef82fc525fcbf436453a Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 29 Nov 2022 20:01:20 +0000 Subject: [PATCH 04/28] chore(release): 3.13.0 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00a8a26..af33d4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.13.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.12.0...v3.13.0) (2022-11-29) + + +### Features + +* **Menu:** add more missing props ([#60](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/60)) [CI SKIP] ([678ba21](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/678ba216f1e194986b0c391398e6f73536cd0102)) + # [3.12.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.11.1...v3.12.0) (2022-11-28) diff --git a/package.json b/package.json index 807033a..ebf52b7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.12.0", + "version": "3.13.0", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 7ba1229a4e24fea587b96dc8b078200faf45ddee Mon Sep 17 00:00:00 2001 From: jurassicplayer Date: Fri, 9 Dec 2022 16:13:37 -0800 Subject: [PATCH 05/28] feat(toast): add showToast/playSound to ToastData (#64) --- src/plugin.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/plugin.tsx b/src/plugin.tsx index 986699a..200a1f5 100644 --- a/src/plugin.tsx +++ b/src/plugin.tsx @@ -42,6 +42,10 @@ export interface ToastData { contentClassName?: string; duration?: number; critical?: boolean; + eType?: number; + sound?: number; + playSound?: boolean; + showToast?: boolean; } export interface Toaster { From 1e8979b6414e0def72f7a9970e7c612c6dd7f3e3 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 10 Dec 2022 00:14:13 +0000 Subject: [PATCH 06/28] chore(release): 3.14.0 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index af33d4d..29272f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.14.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.13.0...v3.14.0) (2022-12-10) + + +### Features + +* **toast:** add showToast/playSound to ToastData ([#64](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/64)) ([7ba1229](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/7ba1229a4e24fea587b96dc8b078200faf45ddee)) + # [3.13.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.12.0...v3.13.0) (2022-11-29) diff --git a/package.json b/package.json index ebf52b7..c5c301e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.13.0", + "version": "3.14.0", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From cc29ddaf578e21ab2abe1cd266f1d15debee0637 Mon Sep 17 00:00:00 2001 From: Jozen Blue Martinez Date: Sun, 11 Dec 2022 22:18:07 +0800 Subject: [PATCH 07/28] feat(Focusable): add noFocusRing prop type (#65) --- src/deck-components/Focusable.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/deck-components/Focusable.tsx b/src/deck-components/Focusable.tsx index eb49d97..3ec8445 100644 --- a/src/deck-components/Focusable.tsx +++ b/src/deck-components/Focusable.tsx @@ -8,6 +8,7 @@ export interface FocusableProps extends HTMLAttributes, FooterLe 'flow-children'?: string; focusClassName?: string; focusWithinClassName?: string; + noFocusRing?: boolean; onActivate?: (e: CustomEvent) => void; onCancel?: (e: CustomEvent) => void; } From 14c52109318d1aa18a39639d2db5a396f6ca30e4 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 11 Dec 2022 14:18:49 +0000 Subject: [PATCH 08/28] chore(release): 3.15.0 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29272f5..50831a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.15.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.14.0...v3.15.0) (2022-12-11) + + +### Features + +* **Focusable:** add noFocusRing prop type ([#65](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/65)) ([cc29dda](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/cc29ddaf578e21ab2abe1cd266f1d15debee0637)) + # [3.14.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.13.0...v3.14.0) (2022-12-10) diff --git a/package.json b/package.json index c5c301e..5bf08fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.14.0", + "version": "3.15.0", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 925ea8c3ceaaf6ff2f79b8808908a9b144a4fcff Mon Sep 17 00:00:00 2001 From: Jozen Blue Martinez Date: Sun, 11 Dec 2022 22:44:50 +0800 Subject: [PATCH 09/28] feat(Marquee): Add Marquee component (#63) --- src/deck-components/Marquee.tsx | 27 +++++++++++++++++++++++++++ src/deck-components/index.ts | 1 + 2 files changed, 28 insertions(+) create mode 100644 src/deck-components/Marquee.tsx diff --git a/src/deck-components/Marquee.tsx b/src/deck-components/Marquee.tsx new file mode 100644 index 0000000..60cea03 --- /dev/null +++ b/src/deck-components/Marquee.tsx @@ -0,0 +1,27 @@ +import { FC, CSSProperties } from 'react'; +import { findModuleChild } from '../webpack'; + +export interface MarqueeProps { + play?: boolean; + direction?: 'left' | 'right'; + speed?: number; + delay?: number; + fadeLength?: number; + center?: boolean; + resetOnPause?: boolean; + style?: CSSProperties; + className?: string; + children: React.ReactNode; +} + +const Marquee: FC = findModuleChild((m) => { + if (typeof m !== 'object') return; + for (const prop in m) { + if (m[prop]?.toString && m[prop].toString().includes('.Marquee') && m[prop].toString().includes('--fade-length')) { + return m[prop]; + } + } + return; +}); + +export default Marquee; diff --git a/src/deck-components/index.ts b/src/deck-components/index.ts index 20fa08b..392a440 100755 --- a/src/deck-components/index.ts +++ b/src/deck-components/index.ts @@ -7,6 +7,7 @@ export * from './Field'; export * from './Focusable'; export * from './FocusRing'; export * from './FooterLegend'; +export * from './Marquee'; export * from './Menu'; export * from './Modal'; export * from './Panel'; From 55507446cc7c6cd88f05b5b05d96426aaf709b1d Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 11 Dec 2022 14:45:21 +0000 Subject: [PATCH 10/28] chore(release): 3.16.0 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50831a0..be7148b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.16.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.15.0...v3.16.0) (2022-12-11) + + +### Features + +* **Marquee:** Add Marquee component ([#63](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/63)) ([925ea8c](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/925ea8c3ceaaf6ff2f79b8808908a9b144a4fcff)) + # [3.15.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.14.0...v3.15.0) (2022-12-11) diff --git a/package.json b/package.json index 5bf08fa..5780314 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.15.0", + "version": "3.16.0", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From d24136ecb6b0c5239b68723e8f92a4822aa7b590 Mon Sep 17 00:00:00 2001 From: Jozen Blue Martinez Date: Sun, 11 Dec 2022 22:45:40 +0800 Subject: [PATCH 11/28] fix(FooterLegend): change description types to ReactNode (#62) --- src/deck-components/FooterLegend.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/deck-components/FooterLegend.ts b/src/deck-components/FooterLegend.ts index cc400cd..a9a67ad 100644 --- a/src/deck-components/FooterLegend.ts +++ b/src/deck-components/FooterLegend.ts @@ -1,3 +1,5 @@ +import { ReactNode } from 'react'; + export enum GamepadButton { INVALID, OK, @@ -42,16 +44,16 @@ export interface GamepadEventDetail { source: number; } export declare type ActionDescriptionMap = { - [key in GamepadButton]?: string + [key in GamepadButton]?: ReactNode } export declare type GamepadEvent = CustomEvent; export interface FooterLegendProps { actionDescriptionMap?: ActionDescriptionMap; - onOKActionDescription?: string; - onCancelActionDescription?: string; - onSecondaryActionDescription?: string; - onOptionsActionDescription?: string; - onMenuActionDescription?: string; + onOKActionDescription?: ReactNode; + onCancelActionDescription?: ReactNode; + onSecondaryActionDescription?: ReactNode; + onOptionsActionDescription?: ReactNode; + onMenuActionDescription?: ReactNode; onButtonDown?: (evt: GamepadEvent) => void; onButtonUp?: (evt: GamepadEvent) => void; onOKButton?: (evt: GamepadEvent) => void; From 443c7850d7d1bf9a23df76f65ac2c20a77be382c Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 11 Dec 2022 14:46:16 +0000 Subject: [PATCH 12/28] chore(release): 3.16.1 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be7148b..58b7665 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.16.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.16.0...v3.16.1) (2022-12-11) + + +### Bug Fixes + +* **FooterLegend:** change description types to ReactNode ([#62](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/62)) ([d24136e](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/d24136ecb6b0c5239b68723e8f92a4822aa7b590)) + # [3.16.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.15.0...v3.16.0) (2022-12-11) diff --git a/package.json b/package.json index 5780314..832214f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.16.0", + "version": "3.16.1", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From cd0635e94f98499f9f5fc24a7fd4b93efe7dfc38 Mon Sep 17 00:00:00 2001 From: Jonas Dellinger Date: Sun, 11 Dec 2022 15:47:39 +0100 Subject: [PATCH 13/28] fix(Marquee): replace default export with named export --- src/deck-components/Marquee.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/deck-components/Marquee.tsx b/src/deck-components/Marquee.tsx index 60cea03..b285fd7 100644 --- a/src/deck-components/Marquee.tsx +++ b/src/deck-components/Marquee.tsx @@ -1,4 +1,5 @@ -import { FC, CSSProperties } from 'react'; +import { CSSProperties, FC } from 'react'; + import { findModuleChild } from '../webpack'; export interface MarqueeProps { @@ -14,7 +15,7 @@ export interface MarqueeProps { children: React.ReactNode; } -const Marquee: FC = findModuleChild((m) => { +export const Marquee: FC = findModuleChild((m) => { if (typeof m !== 'object') return; for (const prop in m) { if (m[prop]?.toString && m[prop].toString().includes('.Marquee') && m[prop].toString().includes('--fade-length')) { @@ -23,5 +24,3 @@ const Marquee: FC = findModuleChild((m) => { } return; }); - -export default Marquee; From d9150c2556ef856591792a13cf6751c1c1d6dd86 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 11 Dec 2022 14:48:15 +0000 Subject: [PATCH 14/28] chore(release): 3.16.2 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58b7665..1932833 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.16.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.16.1...v3.16.2) (2022-12-11) + + +### Bug Fixes + +* **Marquee:** replace default export with named export ([cd0635e](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/cd0635e94f98499f9f5fc24a7fd4b93efe7dfc38)) + ## [3.16.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.16.0...v3.16.1) (2022-12-11) diff --git a/package.json b/package.json index 832214f..33f581f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.16.1", + "version": "3.16.2", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From c586afb97d59928ecb703b5a254ed1b9405e2c7e Mon Sep 17 00:00:00 2001 From: Jozen Blue Martinez Date: Sun, 11 Dec 2022 23:07:31 +0800 Subject: [PATCH 15/28] feat(ControlsList): Add ControlsList component (#61) * feat(ControlsList): Add ControlsList component * fix(ControlsList): replace default export with named export --- src/deck-components/ControlsList.tsx | 17 +++++++++++++++++ src/deck-components/index.ts | 1 + 2 files changed, 18 insertions(+) create mode 100644 src/deck-components/ControlsList.tsx diff --git a/src/deck-components/ControlsList.tsx b/src/deck-components/ControlsList.tsx new file mode 100644 index 0000000..8c974f4 --- /dev/null +++ b/src/deck-components/ControlsList.tsx @@ -0,0 +1,17 @@ +import { findModuleChild } from '../webpack'; +import { FC } from 'react'; + +export interface ControlsListProps { + alignItems?: 'left' | 'right' | 'center'; + spacing?: 'standard' | 'extra'; +} + +export const ControlsList: FC = findModuleChild((m) => { + if (typeof m !== 'object') return; + for (const prop in m) { + if (m[prop]?.toString && m[prop].toString().includes('().ControlsListChild') && m[prop].toString().includes('().ControlsListOuterPanel')) { + return m[prop]; + } + } + return; +}); diff --git a/src/deck-components/index.ts b/src/deck-components/index.ts index 392a440..3bb96c3 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 './ControlsList'; export * from './Dialog'; export * from './Dropdown'; export * from './Field'; From 5bc78df918ba62ad05b4f6fa8edfc5f53759682f Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 11 Dec 2022 15:08:02 +0000 Subject: [PATCH 16/28] chore(release): 3.17.0 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1932833..0ecaa24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.17.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.16.2...v3.17.0) (2022-12-11) + + +### Features + +* **ControlsList:** Add ControlsList component ([#61](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/61)) ([c586afb](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/c586afb97d59928ecb703b5a254ed1b9405e2c7e)) + ## [3.16.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.16.1...v3.16.2) (2022-12-11) diff --git a/package.json b/package.json index 33f581f..b21cda9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.16.2", + "version": "3.17.0", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 88f245d476a6477e9fc0cd35e9b675961ecbc26c Mon Sep 17 00:00:00 2001 From: Jozen Blue Martinez Date: Sun, 11 Dec 2022 23:10:01 +0800 Subject: [PATCH 17/28] feat(DialogCheckbox): Add DialogCheckbox component (#58) * feat(DialogCheckbox): Add DialogCheckbox component * fix(DialogCheckbox): Better sibling match * fix(DialogCheckbox): Extend FocusableProps * fix(DialogCheckbox): Extend FooterLegendProps i should have probably tested that * feat(DialogCheckbox): add onClick() prop * fix(DialogCheckbox): replace default export with named export --- src/deck-components/DialogCheckbox.tsx | 33 ++++++++++++++++++++++++++ src/deck-components/index.ts | 1 + 2 files changed, 34 insertions(+) create mode 100644 src/deck-components/DialogCheckbox.tsx diff --git a/src/deck-components/DialogCheckbox.tsx b/src/deck-components/DialogCheckbox.tsx new file mode 100644 index 0000000..b16068d --- /dev/null +++ b/src/deck-components/DialogCheckbox.tsx @@ -0,0 +1,33 @@ +import { FC, ReactNode } from 'react'; + +import { findModule } from '../webpack'; +import { DialogCommonProps } from './Dialog'; +import { FooterLegendProps } from './FooterLegend'; + +export interface DialogCheckboxProps extends DialogCommonProps, FooterLegendProps { + onChange?(checked: boolean): void; + label?: ReactNode; + description?: ReactNode; + disabled?: boolean; + tooltip?: string; + color?: string; + highlightColor?: string; + bottomSeparator?: 'standard' | 'thick' | 'none'; + controlled?: boolean; + checked?: boolean; + onClick?(evt: Event): void; +} + +export const DialogCheckbox = Object.values(findModule((m: any) => { + if (typeof m !== 'object') return false; + for (const prop in m) { + if (m[prop]?.prototype?.GetPanelElementProps) return true; + } + return false; +})).find((m: any) => + m.contextType && + m.prototype?.render.toString().includes('fallback:') && + m?.prototype?.SetChecked && + m?.prototype?.Toggle && + m?.prototype?.GetPanelElementProps +) as FC; diff --git a/src/deck-components/index.ts b/src/deck-components/index.ts index 3bb96c3..d235e0f 100755 --- a/src/deck-components/index.ts +++ b/src/deck-components/index.ts @@ -3,6 +3,7 @@ export * from './ButtonItem'; export * from './Carousel'; export * from './ControlsList'; export * from './Dialog'; +export * from './DialogCheckbox'; export * from './Dropdown'; export * from './Field'; export * from './Focusable'; From bb291b211cb9da37475b3762eb3e4a2fad30d84d Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 11 Dec 2022 15:10:33 +0000 Subject: [PATCH 18/28] chore(release): 3.18.0 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ecaa24..a0ecd0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# [3.18.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.17.0...v3.18.0) (2022-12-11) + + +### Features + +* **DialogCheckbox:** Add DialogCheckbox component ([#58](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/58)) ([88f245d](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/88f245d476a6477e9fc0cd35e9b675961ecbc26c)) + # [3.17.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.16.2...v3.17.0) (2022-12-11) diff --git a/package.json b/package.json index b21cda9..10ff649 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.17.0", + "version": "3.18.0", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 6f14da152acc4757b814844f1b77bf83dd98d77e Mon Sep 17 00:00:00 2001 From: Lukas Senionis Date: Sun, 11 Dec 2022 22:01:41 +0200 Subject: [PATCH 19/28] fix(findSP): fallback to last active context (#53) --- src/custom-hooks/useQuickAccessVisible.tsx | 3 ++- src/utils/index.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/custom-hooks/useQuickAccessVisible.tsx b/src/custom-hooks/useQuickAccessVisible.tsx index 5872b40..973861b 100644 --- a/src/custom-hooks/useQuickAccessVisible.tsx +++ b/src/custom-hooks/useQuickAccessVisible.tsx @@ -6,7 +6,8 @@ declare global { function getQuickAccessWindow(): Window | null { try { - const navTrees = FocusNavController?.m_ActiveContext?.m_rgGamepadNavigationTrees || FocusNavController?.m_rgGamepadNavigationTrees; + const context = FocusNavController?.m_ActiveContext || FocusNavController?.m_LastActiveContext; + const navTrees = context?.m_ActiveContext?.m_rgGamepadNavigationTrees || FocusNavController?.m_rgGamepadNavigationTrees; return navTrees?.find((tree: any) => tree?.id === "QuickAccess-NA")?.m_Root?.m_element?.ownerDocument.defaultView ?? null; } catch (error) { console.error(error); diff --git a/src/utils/index.ts b/src/utils/index.ts index 713a006..d139e36 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -16,6 +16,7 @@ export function findSP(): Window { // old (SP as host) if (document.title == 'SP') return window; // new (SP as popup) - return FocusNavController.m_ActiveContext.m_rgGamepadNavigationTrees.find((x: any) => x.m_ID == 'root_1_').Root + const context = FocusNavController.m_ActiveContext || FocusNavController.m_LastActiveContext; + return context.m_rgGamepadNavigationTrees.find((x: any) => x.m_ID == 'root_1_').Root .Element.ownerDocument.defaultView; } From 52305987c52e633fdf5c5cb5de183cb66d9723de Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 11 Dec 2022 20:02:11 +0000 Subject: [PATCH 20/28] chore(release): 3.18.1 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0ecd0c..d7fd87a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.18.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.0...v3.18.1) (2022-12-11) + + +### Bug Fixes + +* **findSP:** fallback to last active context ([#53](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/53)) ([6f14da1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/6f14da152acc4757b814844f1b77bf83dd98d77e)) + # [3.18.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.17.0...v3.18.0) (2022-12-11) diff --git a/package.json b/package.json index 10ff649..0855b89 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.18.0", + "version": "3.18.1", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 767dc2fcee97d8b6c2d331ae29704d9b469de51a Mon Sep 17 00:00:00 2001 From: Lukas Senionis Date: Sun, 11 Dec 2022 22:12:22 +0200 Subject: [PATCH 21/28] fix(useQuickAccessVisible): remove invalid prop access (#66) --- src/custom-hooks/useQuickAccessVisible.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/custom-hooks/useQuickAccessVisible.tsx b/src/custom-hooks/useQuickAccessVisible.tsx index 973861b..296e26b 100644 --- a/src/custom-hooks/useQuickAccessVisible.tsx +++ b/src/custom-hooks/useQuickAccessVisible.tsx @@ -7,7 +7,7 @@ declare global { function getQuickAccessWindow(): Window | null { try { const context = FocusNavController?.m_ActiveContext || FocusNavController?.m_LastActiveContext; - const navTrees = context?.m_ActiveContext?.m_rgGamepadNavigationTrees || FocusNavController?.m_rgGamepadNavigationTrees; + const navTrees = context?.m_rgGamepadNavigationTrees || FocusNavController?.m_rgGamepadNavigationTrees; return navTrees?.find((tree: any) => tree?.id === "QuickAccess-NA")?.m_Root?.m_element?.ownerDocument.defaultView ?? null; } catch (error) { console.error(error); From ef6be8c6ecc13c971067fc58ddc5f1fcaf9685b7 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 11 Dec 2022 20:12:52 +0000 Subject: [PATCH 22/28] chore(release): 3.18.2 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7fd87a..1b8f6d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.18.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.1...v3.18.2) (2022-12-11) + + +### Bug Fixes + +* **useQuickAccessVisible:** remove invalid prop access ([#66](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/66)) ([767dc2f](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/767dc2fcee97d8b6c2d331ae29704d9b469de51a)) + ## [3.18.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.0...v3.18.1) (2022-12-11) diff --git a/package.json b/package.json index 0855b89..9c3a6f0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.18.1", + "version": "3.18.2", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From fd94842647e51dd9a104e170e0c5ee2bebce12d6 Mon Sep 17 00:00:00 2001 From: AAGaming Date: Sun, 11 Dec 2022 19:52:20 -0500 Subject: [PATCH 23/28] fix(modals): fix ModalRoot again --- src/deck-components/Modal.tsx | 39 +++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/src/deck-components/Modal.tsx b/src/deck-components/Modal.tsx index f0815c3..f01c5e7 100755 --- a/src/deck-components/Modal.tsx +++ b/src/deck-components/Modal.tsx @@ -38,7 +38,7 @@ const showModalRaw: unknown1?: unknown, hideActions?: { bHideActions?: boolean }, modalManager?: unknown, - ) => Promise) + ) => ShowModalResult) | void = findModuleChild((m) => { if (typeof m !== 'object') return undefined; for (let prop in m) { @@ -52,16 +52,15 @@ const showModalRaw: } }); -const oldShowModalRaw: - | ((modal: ReactNode, parent?: EventTarget, props?: ShowModalProps) => Promise) - | void = findModuleChild((m) => { - if (typeof m !== 'object') return undefined; - for (let prop in m) { - if (typeof m[prop] === 'function' && m[prop].toString().includes('bHideMainWindowForPopouts:!0')) { - return m[prop]; +const oldShowModalRaw: ((modal: ReactNode, parent?: EventTarget, props?: ShowModalProps) => ShowModalResult) | void = + findModuleChild((m) => { + if (typeof m !== 'object') return undefined; + for (let prop in m) { + if (typeof m[prop] === 'function' && m[prop].toString().includes('bHideMainWindowForPopouts:!0')) { + return m[prop]; + } } - } -}); + }); export const showModal = ( modal: ReactNode, @@ -70,7 +69,7 @@ export const showModal = ( strTitle: 'Decky Dialog', bHideMainWindowForPopouts: false, }, -): Promise => { +): ShowModalResult => { if (showModalRaw) { return showModalRaw(modal, parent || findSP(), props.strTitle, props, undefined, { bHideActions: props.bHideActionIcons, @@ -118,13 +117,13 @@ export const ConfirmModal = findModuleChild((m) => { } }) as FC; -// new +// new as of december 2022 on beta export const ModalRoot = (Object.values( findModule((m: any) => { if (typeof m !== 'object') return false; for (let prop in m) { - if (m[prop]?.toString()?.includes('"ModalManager","DialogWrapper"')) { + if (m[prop]?.m_mapModalManager) { return true; } } @@ -132,6 +131,20 @@ export const ModalRoot = (Object.values( return false; }) || {}, )?.find((x: any) => x?.type?.toString()?.includes('((function(){')) || + // before december 2022 beta + Object.values( + findModule((m: any) => { + if (typeof m !== 'object') return false; + + for (let prop in m) { + if (m[prop]?.toString()?.includes('"ModalManager","DialogWrapper"')) { + return true; + } + } + + return false; + }) || {}, + )?.find((x: any) => x?.type?.toString()?.includes('((function(){')) || // old findModuleChild((m) => { if (typeof m !== 'object') return undefined; From f0379e5d19279863b571e66918bc9107efedb612 Mon Sep 17 00:00:00 2001 From: Beebles <102569435+beebls@users.noreply.github.com> Date: Mon, 12 Dec 2022 16:48:52 -0700 Subject: [PATCH 24/28] fix(Router): update Router interface to SteamOS3.4 and add Navigation (#52) --- src/deck-components/Router.tsx | 100 ++++++++++++++++++++++++++------- 1 file changed, 79 insertions(+), 21 deletions(-) diff --git a/src/deck-components/Router.tsx b/src/deck-components/Router.tsx index 53c7706..252aba2 100644 --- a/src/deck-components/Router.tsx +++ b/src/deck-components/Router.tsx @@ -63,28 +63,38 @@ export type AppOverview = { sort_as: string; }; -export interface Router { - CloseSideMenus(): void; - OpenQuickAccessMenu(quickAccessTab?: QuickAccessTab): void; - GetQuickAccessTab(): QuickAccessTab; - Navigate(path: string): void; - NavigateBackOrOpenMenu(): void; - NavigateToAppProperties(): void; - NavigateToBugForum(): void; - NavigateToExternalWeb(url: string): void; - NavigateToHelp(): void; - NavigateToInvites(): void; - NavigateToRunningApp(replace?: boolean): void; - NavigateToStorage(): void; - NavigateToStore(): void; - NavigateToStoreApp(appId: number | string): void; - NavigateToStoreFreeToPlay(): void; - NavigateToStoreManual(): void; - NavigateToStoreNewReleases(): void; - NavigateToStoreOnSale(): void; - ToggleSideMenu(sideMenu: SideMenu): void; - CloseSideMenus(): void; +export interface MenuStore { OpenSideMenu(sideMenu: SideMenu): void; + OpenQuickAccessMenu(quickAccessTab?: QuickAccessTab): void; + OpenMainMenu(): void; +} + +export interface WindowRouter { + BrowserWindow: Window; + MenuStore: MenuStore; + Navigate(path: string): void; + NavigateToChat(): void; + NavigateToSteamWeb(url: string): void; + NavigateBack(): void; + NavigateToWebRoute(unknown?: any, unknown2?: any): void; +} + +export interface WindowStore { + GamepadUIMainWindowInstance?: WindowRouter; // Current + SteamUIWindows: WindowRouter[]; + OverlayWindows: WindowRouter[]; // Used by desktop GamepadUI +} + +export interface Router { + WindowStore?: WindowStore; + CloseSideMenus(): void; + Navigate(path: string): void; + NavigateToAppProperties(): void; + NavigateToExternalWeb(url: string): void; + NavigateToInvites(): void; + NavigateToChat(): void; + NavigateToLibraryTab(): void; + NavigateToLayoutPreview(e: unknown): void; OpenPowerMenu(unknown?: any): void; get RunningApps(): AppOverview[]; get MainRunningApp(): AppOverview | undefined; @@ -96,3 +106,51 @@ export const Router = findModuleChild((m: Module) => { if (m[prop]?.Navigate && m[prop]?.NavigationManager) return m[prop]; } }) as Router; + +export interface Navigation { + Navigate(path: string): void; + NavigateBack(): void; + NavigateToAppProperties(): void; + NavigateToExternalWeb(url: string): void; + NavigateToInvites(): void; + NavigateToChat(): void; + NavigateToLibraryTab(): void; + NavigateToLayoutPreview(e: unknown): void; + NavigateToSteamWeb(url: string): void; + NavigateToWebRoute(unknown?: any, unknown2?: any): void; + OpenSideMenu(sideMenu: SideMenu): void; + OpenQuickAccessMenu(quickAccessTab?: QuickAccessTab): void; + OpenMainMenu(): void; + OpenPowerMenu(unknown?: any): void; + CloseSideMenus(): void; +} + +export const Navigation = { + Navigate: Router.Navigate.bind(Router), + NavigateBack: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateBack.bind( + Router.WindowStore.GamepadUIMainWindowInstance, + ), + NavigateToAppProperties: Router.NavigateToAppProperties.bind(Router), + NavigateToExternalWeb: Router.NavigateToExternalWeb.bind(Router), + NavigateToInvites: Router.NavigateToInvites.bind(Router), + NavigateToChat: Router.NavigateToChat.bind(Router), + NavigateToLibraryTab: Router.NavigateToLibraryTab.bind(Router), + NavigateToLayoutPreview: Router.NavigateToLayoutPreview.bind(Router), + NavigateToSteamWeb: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateToSteamWeb.bind( + Router.WindowStore.GamepadUIMainWindowInstance, + ), + NavigateToWebRoute: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateToWebRoute.bind( + Router.WindowStore.GamepadUIMainWindowInstance, + ), + OpenSideMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenSideMenu.bind( + Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, + ), + OpenQuickAccessMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenQuickAccessMenu.bind( + Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, + ), + OpenMainMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenMainMenu.bind( + Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, + ), + CloseSideMenus: Router.CloseSideMenus.bind(Router), + OpenPowerMenu: Router.OpenPowerMenu.bind(Router), +} as Navigation; From dc196d53f50ace20fc0346ac851497c90b9f7034 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 12 Dec 2022 23:49:39 +0000 Subject: [PATCH 25/28] chore(release): 3.18.3 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b8f6d7..9139cc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.18.3](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.2...v3.18.3) (2022-12-12) + + +### Bug Fixes + +* **Router:** update Router interface to SteamOS3.4 and add Navigation ([#52](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/52)) ([f0379e5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/f0379e5d19279863b571e66918bc9107efedb612)) + ## [3.18.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.1...v3.18.2) (2022-12-11) diff --git a/package.json b/package.json index 9c3a6f0..58eeac8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.18.2", + "version": "3.18.3", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From e48c7bbadd578042d3508d5943bbac64e63280cb Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 16 Dec 2022 02:04:28 +0000 Subject: [PATCH 26/28] chore(release): 3.18.4 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9139cc3..900d4f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.18.4](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.3...v3.18.4) (2022-12-16) + + +### Bug Fixes + +* **modals:** fix ModalRoot again ([fd94842](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/fd94842647e51dd9a104e170e0c5ee2bebce12d6)) + ## [3.18.3](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.2...v3.18.3) (2022-12-12) diff --git a/package.json b/package.json index 58eeac8..b408831 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.18.3", + "version": "3.18.4", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", From 0b50f2cf0baa76fc00aa0a41a8435d7a512bff19 Mon Sep 17 00:00:00 2001 From: noot Date: Wed, 21 Dec 2022 10:56:39 -0500 Subject: [PATCH 27/28] fix: fixed prop interfaces (#70) --- src/deck-components/Panel.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/deck-components/Panel.tsx b/src/deck-components/Panel.tsx index 565370b..86c9d6d 100644 --- a/src/deck-components/Panel.tsx +++ b/src/deck-components/Panel.tsx @@ -1,10 +1,11 @@ -import { FC } from 'react'; +import { FC, ReactNode } from 'react'; import { findModuleChild } from '../webpack'; export interface PanelSectionProps { title?: string; spinner?: boolean; + children?: ReactNode } const [panelSection, mod] = findModuleChild((mod: any) => { @@ -18,6 +19,10 @@ const [panelSection, mod] = findModuleChild((mod: any) => { export const PanelSection = panelSection as FC; +export interface PanelSectionRowProps { + children?: ReactNode +} + export const PanelSectionRow = Object.values(mod).filter( (exp: any) => !exp?.toString()?.includes('.PanelSection'), -)[0] as FC; +)[0] as FC; From a656f4e57fe08600a6839bce5d7adeddcb3077f0 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 21 Dec 2022 15:57:16 +0000 Subject: [PATCH 28/28] chore(release): 3.18.5 [CI SKIP] --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 900d4f7..054a89c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.18.5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.4...v3.18.5) (2022-12-21) + + +### Bug Fixes + +* fixed prop interfaces ([#70](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/70)) ([0b50f2c](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/0b50f2cf0baa76fc00aa0a41a8435d7a512bff19)) + ## [3.18.4](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.3...v3.18.4) (2022-12-16) diff --git a/package.json b/package.json index b408831..d4ac054 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.18.4", + "version": "3.18.5", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts",