Compare commits

..

29 Commits

Author SHA1 Message Date
semantic-release-bot
678084e4fd chore(release): 3.22.0 [CI SKIP] 2023-08-09 22:23:32 +00:00
TrainDoctor
4f8f65d429 feat: add components found while working on tabmaster 2023-08-09 15:22:56 -07:00
Tormak
8a352d288d chore: adjusted per aa's request 2023-08-09 13:17:52 -05:00
Tormak
fd0d011cbf feat: add components found while working on tabmaster 2023-07-10 07:47:03 -05:00
Travis Lane
70219d90bc Merge branch 'SteamDeckHomebrew:main' into main 2023-07-10 07:32:04 -05:00
semantic-release-bot
1ff9351f96 chore(release): 3.21.8 [CI SKIP] 2023-06-27 13:38:46 +00:00
Marco Rodolfi
c256d341c8 Merge pull request #89 from SteamDeckHomebrew/RodoMa92-patch-1
fix: the typescript compiler was eating the enum
2023-06-27 15:38:13 +02:00
Marco Rodolfi
c9b583945c fix: the typescript compiler was eating the enum
If not defined with a const keyword
2023-06-27 15:38:04 +02:00
semantic-release-bot
c213204ff4 chore(release): 3.21.7 [CI SKIP] 2023-06-26 16:30:09 +00:00
Travis Lane
9128c1e7da fix: add patch indicator to prevent crashes (#88) 2023-06-26 12:29:21 -04:00
Travis Lane
a06650cf09 Update react.ts with requested changes 2023-06-26 11:26:45 -05:00
Tormak
3170779c6b fix: add patch indicator to prevent crashes 2023-06-25 17:23:45 -05:00
semantic-release-bot
5ffa14bec8 chore(release): 3.21.6 [CI SKIP] 2023-06-22 15:27:59 +00:00
Marco Rodolfi
ee51dc5fc0 fix: reposition parameter for file picker V2 2023-06-22 17:27:14 +02:00
semantic-release-bot
b38ec17d8f chore(release): 3.21.5 [CI SKIP] 2023-06-22 10:16:29 +00:00
Marco Rodolfi
8b54ee990e fix: missing parameter 2023-06-22 12:15:08 +02:00
Marco Rodolfi
7e01781d40 chore: better order for file picker v2 call 2023-06-22 11:59:32 +02:00
semantic-release-bot
2b31473614 chore(release): 3.21.4 [CI SKIP] 2023-06-22 09:39:28 +00:00
Marco Rodolfi
8bfeae4b35 fix: move the new file picker api as v2 2023-06-22 11:38:45 +02:00
semantic-release-bot
a7761321bc chore(release): 3.21.3 [CI SKIP] 2023-06-22 08:41:58 +00:00
Marco Rodolfi
979a630f2b fix: total is not needed as a return value to plugins 2023-06-22 10:41:09 +02:00
Marco Rodolfi
a4d1fcf086 Merge pull request #86 from SteamDeckHomebrew/file_picker_call
chore: add new interface for openfilepicker
2023-06-22 10:13:39 +02:00
Marco Rodolfi
e9e7f5c026 chore: add new interface for openfilepicker 2023-06-22 10:09:01 +02:00
semantic-release-bot
9a691cea09 chore(release): 3.21.2 [CI SKIP] 2023-06-18 17:15:58 +00:00
AAGaming
44d9b90cdc fix(SidebarNavigation): allow ReactNode for page title 2023-06-18 13:15:21 -04:00
TrainDoctor
585c3b8348 Merge pull request #85 from Woovie/patch-1
Update Discord link
2023-06-07 17:35:53 -07:00
Jordan Banasik
1287493b63 Update Discord link 2023-06-07 17:15:40 -07:00
semantic-release-bot
bf01a0184b chore(release): 3.21.1 [CI SKIP] 2023-05-28 23:16:04 +00:00
Jonas Dellinger
fb5f043ba9 fix(reorderable-list): open label type from string to ReactNode 2023-05-29 01:14:59 +02:00
11 changed files with 136 additions and 10 deletions

View File

@@ -1,3 +1,72 @@
# [3.22.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.21.8...v3.22.0) (2023-08-09)
### Bug Fixes
* add patch indicator to prevent crashes ([3170779](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/3170779c6b3d02ea17f7b6c1fbd57e00498ffe4f))
### Features
* add components found while working on tabmaster ([4f8f65d](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/4f8f65d42979149cc80b4a86545d3d0d9bf14bf3))
* add components found while working on tabmaster ([fd0d011](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/fd0d011cbf05790c5a1078970b5be72f9267402c))
## [3.21.8](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.21.7...v3.21.8) (2023-06-27)
### Bug Fixes
* the typescript compiler was eating the enum ([c9b5839](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/c9b583945c1cb5267b41a821743590a841572abe))
## [3.21.7](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.21.6...v3.21.7) (2023-06-26)
### Bug Fixes
* add patch indicator to prevent crashes ([#88](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/88)) ([9128c1e](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/9128c1e7dadb98a8926d3dba9907a01cc78d90cf))
## [3.21.6](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.21.5...v3.21.6) (2023-06-22)
### Bug Fixes
* reposition parameter for file picker V2 ([ee51dc5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/ee51dc5fc0dd5bdc2b0b9e10aa27607fbe51f491))
## [3.21.5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.21.4...v3.21.5) (2023-06-22)
### Bug Fixes
* missing parameter ([8b54ee9](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/8b54ee990ee4d9b51174737979c35ab7ad92ed7a))
## [3.21.4](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.21.3...v3.21.4) (2023-06-22)
### Bug Fixes
* move the new file picker api as v2 ([8bfeae4](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/8bfeae4b3593b2efa0aa075a0d9e0b5926cdf169))
## [3.21.3](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.21.2...v3.21.3) (2023-06-22)
### Bug Fixes
* total is not needed as a return value to plugins ([979a630](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/979a630f2b02ac4a1ac19e38002244f9dfe97177))
## [3.21.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.21.1...v3.21.2) (2023-06-18)
### Bug Fixes
* **SidebarNavigation:** allow ReactNode for page title ([44d9b90](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/44d9b90cdcfb9e6441fdb1e4b21fe844f1f29fd5))
## [3.21.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.21.0...v3.21.1) (2023-05-28)
### Bug Fixes
* **reorderable-list:** open label type from string to ReactNode ([fb5f043](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/fb5f043ba9eeed0209960c8ae4ae597c2831b8c8))
# [3.21.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.20.7...v3.21.0) (2023-05-19)

View File

@@ -2,9 +2,9 @@
Library used to develop plugins used for use with [decky-loader](https://github.com/SteamDeckHomebrew/decky-loader).
## Decky Loader Discord [![Chat](https://img.shields.io/badge/chat-on%20discord-7289da.svg)](https://discord.gg/ZU74G2NJzk)
## Decky Loader Discord [![Chat](https://img.shields.io/discord/960281551428522045?color=%235865F2&label=discord)](https://deckbrew.xyz/discord)
Please contact the developers here for questions and support that cannot be addressed via a Github issue.
Please [contact the developers here](https://deckbrew.xyz/discord) for questions and support that cannot be addressed via a Github issue.
## Developers and Contributors

View File

@@ -1,6 +1,6 @@
{
"name": "decky-frontend-lib",
"version": "3.21.0",
"version": "3.22.0",
"description": "A library for building decky plugins",
"main": "dist/index.js",
"types": "dist/index.d.ts",

View File

@@ -1,4 +1,4 @@
import { Fragment, JSXElementConstructor, ReactElement, useEffect, useState } from 'react';
import { Fragment, JSXElementConstructor, ReactElement, ReactNode, useEffect, useState } from 'react';
import { Field, FieldProps, Focusable, GamepadButton } from '../deck-components';
@@ -9,7 +9,7 @@ import { Field, FieldProps, Focusable, GamepadButton } from '../deck-components'
* @param position The position of this entry in the list.
*/
export type ReorderableEntry<T> = {
label: string;
label: ReactNode;
data?: T;
position: number;
};

View File

@@ -154,3 +154,16 @@ export const ModalRoot = (Object.values(
}
}
})) as FC<ModalRootProps>;
interface SimpleModalProps{
active?: boolean,
children: ReactNode
}
const ModalModule = findModule((mod) => {
if (typeof mod !== 'object' || !mod.__esModule) return undefined;
if (mod.SimpleModal && mod.ModalPosition) return mod;
})
export const SimpleModal = ModalModule.SimpleModal as FC<SimpleModalProps>
export const ModalPosition = ModalModule.ModalPosition as FC<SimpleModalProps>

View File

@@ -2,6 +2,11 @@ import { FC, ReactNode } from 'react';
import { findModuleChild } from '../webpack';
export const Panel: FC<{ children?: ReactNode; }> = findModuleChild((mod) => {
if (typeof mod !== 'object' || !mod.__esModule) return undefined;
return mod.Panel;
})
export interface PanelSectionProps {
title?: string;
spinner?: boolean;

View File

@@ -0,0 +1,14 @@
import { FC, ReactNode } from "react";
import { findModuleChild, findModule } from "../webpack";
const ScrollingModule = findModule((mod) => {
if (typeof mod !== 'object' || !mod.__esModule) return undefined;
if (mod.ScrollPanel) return mod;
});
export const ScrollPanel: FC<{ children?: ReactNode; }> = ScrollingModule.ScrollPanel;
export const ScrollPanelGroup: FC<{ children?: ReactNode; }> = findModuleChild((mod) => {
if (typeof mod !== 'object' || !mod.__esModule) return undefined;
return mod.ScrollPanelGroup;
})

View File

@@ -3,7 +3,7 @@ import { ReactNode, VFC } from 'react';
import { Module, findModuleChild } from '../webpack';
export interface SidebarNavigationPage {
title: string;
title: ReactNode;
content: ReactNode;
icon?: ReactNode;
visible?: boolean;

View File

@@ -25,6 +25,7 @@ export * from './TextField';
export * from './Toggle';
export * from './ToggleField';
export * from './SteamClient';
export * from './Scroll';
import { AppDetails, LogoPosition, SteamAppOverview, SteamClient } from './SteamClient';

View File

@@ -57,10 +57,26 @@ export interface FilePickerRes {
realpath: string;
}
export const enum FileSelectionType {
FILE,
FOLDER,
}
export interface ServerAPI {
routerHook: RouterHook;
toaster: Toaster;
openFilePicker(startPath: string, includeFiles?: boolean, regex?: RegExp): Promise<FilePickerRes>;
openFilePickerV2(
select: FileSelectionType,
startPath: string,
includeFiles?: boolean,
includeFolders?: boolean,
filter?: RegExp | ((file: File) => boolean),
extensions?: string[],
showHiddenFiles?: boolean,
allowAllFiles?: boolean,
max?: number,
): Promise<FilePickerRes>;
callPluginMethod<TArgs = {}, TRes = {}>(methodName: string, args: TArgs): Promise<ServerResponse<TRes>>;
callServerMethod<TArgs = {}, TRes = {}>(methodName: string, args: TArgs): Promise<ServerResponse<TRes>>;
fetchNoCors<TRes = {}>(url: RequestInfo, request?: RequestInit): Promise<ServerResponse<TRes>>;

View File

@@ -46,13 +46,21 @@ export function fakeRenderComponent(fun: Function, customHooks: any = {}): any {
}
export function wrapReactType(node: any, prop: any = 'type') {
return (node[prop] = { ...node[prop] });
if (node[prop]?.__DECKY_WRAPPED) {
return node[prop];
} else {
return (node[prop] = { ...node[prop], __DECKY_WRAPPED: true });
}
}
export function wrapReactClass(node: any, prop: any = 'type') {
const cls = node[prop];
const wrappedCls = class extends cls {};
return (node[prop] = wrappedCls);
if (node[prop]?.__DECKY_WRAPPED) {
return node[prop];
} else {
const cls = node[prop];
const wrappedCls = class extends cls { static __DECKY_WRAPPED = true; };
return (node[prop] = wrappedCls);
}
}
export function getReactInstance(o: HTMLElement | Element | Node) {