mirror of
https://github.com/SteamDeckHomebrew/decky-frontend-lib.git
synced 2026-05-20 18:10:08 +02:00
Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d46251bb91 | ||
|
|
5b29447cfa | ||
|
|
e993d06963 | ||
|
|
a3c136a07e | ||
|
|
994b9e2cc6 | ||
|
|
801d70f300 | ||
|
|
2fdfcdd478 | ||
|
|
9a728611f4 | ||
|
|
97997adfaf | ||
|
|
279069ee34 | ||
|
|
944a9024ff | ||
|
|
0a2220b4b4 | ||
|
|
aa567e9dd0 | ||
|
|
d9e4ff3ebd | ||
|
|
79d73dea2e | ||
|
|
602f93ae6a |
49
CHANGELOG.md
49
CHANGELOG.md
@@ -1,3 +1,52 @@
|
||||
# [1.3.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v1.2.4...v1.3.0) (2022-08-02)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **plugin:** api for patching existing routes ([5b29447](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/5b29447cfa597773a81aa233da9362346683505d))
|
||||
|
||||
## [1.2.4](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v1.2.3...v1.2.4) (2022-07-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Modal:** add closeModal ([994b9e2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/994b9e2cc6f41da3d813e6f339bd2fd30e4fa3ad))
|
||||
|
||||
## [1.2.3](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v1.2.2...v1.2.3) (2022-07-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Modal:** add another prop ([2fdfcdd](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/2fdfcdd4788ea0d6483e92729c3102212f3ec0fb))
|
||||
|
||||
## [1.2.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v1.2.1...v1.2.2) (2022-07-25)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Modal:** add more props to typings ([97997ad](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/97997adfaf1a68ef436279e6e48f34f5eaa9531c))
|
||||
|
||||
## [1.2.1](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v1.2.0...v1.2.1) (2022-07-13)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **ProgressBar:** extend correct prop type ([944a902](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/944a9024ff20f0b596869564d014d7dd73e74254))
|
||||
|
||||
# [1.2.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v1.1.0...v1.2.0) (2022-07-13)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **ProgressBar:** add new progress bars ([d9e4ff3](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/d9e4ff3ebd22a31306f564e7f8ad82879c8fb699))
|
||||
|
||||
# [1.1.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v1.0.2...v1.1.0) (2022-07-09)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **Router.tsx:** adds more methods to router ([#9](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/9)) ([602f93a](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/602f93ae6a5ceca5383b888cd4803638799558c5))
|
||||
|
||||
## [1.0.2](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v1.0.1...v1.0.2) (2022-07-07)
|
||||
|
||||
|
||||
|
||||
26
README.md
26
README.md
@@ -1 +1,27 @@
|
||||
# Decky Frontend Library
|
||||
|
||||
Library used to develop plugins used for use with [decky-loader](https://github.com/SteamDeckHomebrew/decky-loader).
|
||||
|
||||
## Decky Loader Discord [](https://discord.gg/ZU74G2NJzk)
|
||||
|
||||
Please contact the developers here for questions and support that cannot be addressed via a Github issue.
|
||||
|
||||
## Developers and Contributors
|
||||
|
||||
This library is focused on usage by developers to provide custom React components based on those found in the Steam Deck's React UI.
|
||||
This method allows developers to add UI elements and code without clobbering the existing UI of the deck in order to do so.
|
||||
This library can also theoretically be used to extend existing UI elements of the Steam Deck UI but this has not been tested extensively.
|
||||
|
||||
### Getting Started (Contributors)
|
||||
|
||||
1. Clone the repository to your preferred location
|
||||
2. If you wish to add features such as new UI components, please create a feature branch to PR to the original repo.
|
||||
3. Bug/hotfixes are acceptable on the main branch,
|
||||
|
||||
### Getting Started (Developers)
|
||||
|
||||
If you would like a feature added to decky-frontend-lib, please request it via a Github issue.
|
||||
|
||||
If you want to start making a plugin with decky-frontend-lib, please direct your attention to the [decky-plugin-template](https://github.com/SteamDeckHomebrew/decky-plugin-template) repository.
|
||||
|
||||
This library can be found on [npm](https://www.npmjs.com/package/decky-frontend-lib) and as such you can pull it without a local copy for your project as needed.
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "decky-frontend-lib",
|
||||
"version": "1.0.2",
|
||||
"version": "1.3.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "decky-frontend-lib",
|
||||
"version": "1.0.2",
|
||||
"version": "1.3.0",
|
||||
"hasInstallScript": true,
|
||||
"license": "GPL-2.0-or-later",
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "decky-frontend-lib",
|
||||
"version": "1.0.2",
|
||||
"version": "1.3.0",
|
||||
"description": "A library for building decky plugins",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
|
||||
@@ -16,7 +16,15 @@ export interface ModalRootProps {
|
||||
onMiddleButton?(): void;
|
||||
onCancel?(): void;
|
||||
onOK?(): void;
|
||||
onEscKeypress?(): void;
|
||||
closeModal?(): void;
|
||||
className?: string;
|
||||
modalClassName?: string;
|
||||
bAllowFullSize?: boolean;
|
||||
bDestructiveWarning?: boolean;
|
||||
bDisableBackgroundDismiss?: boolean;
|
||||
bHideCloseIcon?: boolean;
|
||||
bOKDisabled?: boolean;
|
||||
}
|
||||
|
||||
export const ModalRoot = findModuleChild((m) => {
|
||||
|
||||
@@ -1,18 +1,44 @@
|
||||
import { VFC } from 'react';
|
||||
import { VFC, ReactNode } from 'react';
|
||||
|
||||
import { findModuleChild } from '../webpack';
|
||||
import { ItemProps } from './Item';
|
||||
|
||||
export interface ProgressBarItem extends ItemProps {
|
||||
export interface ProgressBarItemProps extends ItemProps {
|
||||
indeterminate?: boolean;
|
||||
nTransitionSec?: number;
|
||||
nProgress?: number;
|
||||
focusable?: boolean;
|
||||
}
|
||||
|
||||
export interface ProgressBarProps {
|
||||
indeterminate?: boolean;
|
||||
nTransitionSec?: number;
|
||||
nProgress?: number;
|
||||
focusable?: boolean;
|
||||
}
|
||||
|
||||
export interface ProgressBarWithInfoProps extends ProgressBarItemProps {
|
||||
sTimeRemaining?: ReactNode;
|
||||
sOperationText?: ReactNode;
|
||||
}
|
||||
|
||||
export const ProgressBar = findModuleChild((m) => {
|
||||
if (typeof m !== 'object') return undefined;
|
||||
for (let prop in m) {
|
||||
if (m[prop]?.toString()?.includes('.ProgressBar,"standard"==')) return m[prop];
|
||||
}
|
||||
}) as VFC<ProgressBarProps>;
|
||||
|
||||
export const ProgressBarWithInfo = findModuleChild((m) => {
|
||||
if (typeof m !== 'object') return undefined;
|
||||
for (let prop in m) {
|
||||
if (m[prop]?.toString()?.includes('.ProgressBarFieldStatus},')) return m[prop];
|
||||
}
|
||||
}) as VFC<ProgressBarWithInfoProps>;
|
||||
|
||||
export const ProgressBarItem = findModuleChild((m) => {
|
||||
if (typeof m !== 'object') return undefined;
|
||||
for (let prop in m) {
|
||||
if (m[prop]?.toString()?.includes('"indeterminate","nTransitionSec"')) return m[prop];
|
||||
}
|
||||
}) as VFC<ProgressBarItem>;
|
||||
}) as VFC<ProgressBarItemProps>;
|
||||
|
||||
@@ -17,6 +17,52 @@ export enum QuickAccessTab {
|
||||
Decky,
|
||||
}
|
||||
|
||||
export enum DisplayStatus {
|
||||
Invalid = 0,
|
||||
Launching = 1,
|
||||
Uninstalling = 2,
|
||||
Installing = 3,
|
||||
Running = 4,
|
||||
Validating = 5,
|
||||
Updating = 6,
|
||||
Downloading = 7,
|
||||
Synchronizing = 8,
|
||||
ReadyToInstall = 9,
|
||||
ReadyToPreload = 10,
|
||||
ReadyToLaunch = 11,
|
||||
RegionRestricted = 12,
|
||||
PresaleOnly = 13,
|
||||
InvalidPlatform = 14,
|
||||
PreloadComplete = 16,
|
||||
BorrowerLocked = 17,
|
||||
UpdatePaused = 18,
|
||||
UpdateQueued = 19,
|
||||
UpdateRequired = 20,
|
||||
UpdateDisabled = 21,
|
||||
DownloadPaused = 22,
|
||||
DownloadQueued = 23,
|
||||
DownloadRequired = 24,
|
||||
DownloadDisabled = 25,
|
||||
LicensePending = 26,
|
||||
LicenseExpired = 27,
|
||||
AvailForFree = 28,
|
||||
AvailToBorrow = 29,
|
||||
AvailGuestPass = 30,
|
||||
Purchase = 31,
|
||||
Unavailable = 32,
|
||||
NotLaunchable = 33,
|
||||
CloudError = 34,
|
||||
CloudOutOfDate = 35,
|
||||
Terminating = 36,
|
||||
}
|
||||
|
||||
export type AppOverview = {
|
||||
appid: string
|
||||
display_name: string
|
||||
display_status: DisplayStatus
|
||||
sort_as: string
|
||||
}
|
||||
|
||||
export interface Router {
|
||||
CloseSideMenus(): void;
|
||||
OpenQuickAccessMenu(quickAccessTab?: QuickAccessTab): void;
|
||||
@@ -24,12 +70,14 @@ export interface Router {
|
||||
Navigate(path: string): void;
|
||||
NavigateBackOrOpenMenu(): void;
|
||||
NavigateToExternalWeb(url: string): void;
|
||||
NavigateToRunningApp(replace?: boolean): void;
|
||||
NavigateToStore(): void;
|
||||
ToggleSideMenu(sideMenu: SideMenu): void;
|
||||
CloseSideMenus(): void;
|
||||
OpenSideMenu(sideMenu: SideMenu): void;
|
||||
OpenPowerMenu(unknown?: any): void;
|
||||
get RunningApps(): any;
|
||||
get MainRunningApp(): AppOverview | undefined;
|
||||
}
|
||||
|
||||
export const Router = findModuleChild((m: Module) => {
|
||||
|
||||
@@ -20,8 +20,12 @@ interface ServerResponseError {
|
||||
|
||||
type ServerResponse<TRes> = ServerResponseSuccess<TRes> | ServerResponseError;
|
||||
|
||||
type RoutePatch = (route: RouteProps) => RouteProps;
|
||||
|
||||
interface RouterHook {
|
||||
addRoute(path: string, component: ComponentType, props?: Omit<RouteProps, 'path' | 'children'>): void;
|
||||
addPatch(path: string, patch: RoutePatch): RoutePatch;
|
||||
removePatch(path: string, patch: RoutePatch): void;
|
||||
removeRoute(path: string): void;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user