Compare commits

..

1 Commits

Author SHA1 Message Date
Jonas Dellinger
a52b73e152 0.0.5 2022-05-30 21:00:49 +02:00
7 changed files with 17 additions and 44 deletions

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "decky-frontend-lib",
"version": "0.0.6",
"version": "0.0.5",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "decky-frontend-lib",
"version": "0.0.6",
"version": "0.0.5",
"license": "GPL-2.0-or-later",
"devDependencies": {
"@types/jest": "^27.4.1",

View File

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

11
src/deck-components/Menu.tsx Executable file → Normal file
View File

@@ -1,16 +1,7 @@
import { FC, ReactNode } from 'react';
import { FC } from 'react';
import { findModuleChild } from '../webpack';
export const showContextMenu: (children: ReactNode, parent?: EventTarget) => void = findModuleChild((m) => {
if (typeof m !== 'object') return undefined;
for (let prop in m) {
if (typeof m[prop] === 'function' && m[prop].toString().includes('stopPropagation))')) {
return m[prop];
}
}
});
interface MenuProps {
label: string;
onCancel?(): void;

24
src/deck-components/Modal.tsx Executable file → Normal file
View File

@@ -1,28 +1,12 @@
import { FC, ReactNode } from 'react';
import { 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) => {
export const showModal: (children: ReactNode, parent: EventTarget) => 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')) {
if (typeof m[prop] === 'function' && m[prop].toString().includes('stopPropagation))')) {
return m[prop];
}
}
});
interface ModalRootProps {
onMiddleButton?(): void,
onCancel?(): void;
onOK?(): void;
bAllowFullSize?: boolean;
}
export const ModalRoot = findModuleChild(m => {
if (typeof m !== "object") return undefined;
for (let prop in m) {
if (!m[prop]?.prototype?.OK && m[prop]?.prototype?.Cancel && m[prop]?.prototype?.render) {
return m[prop];
}
}
}) as FC<ModalRootProps>;

10
src/deck-components/Spinner.tsx Executable file → Normal file
View File

@@ -2,7 +2,15 @@ import { FC } from 'react';
import { IconsModule } from '../webpack';
// TODO type this and other icons?
// interface ButtonProps {
// label?: string;
// description?: string;
// layout?: 'below';
// onClick?(e: MouseEvent): void;
// disabled?: boolean;
// bottomSeparator?: boolean;
// }
export const Spinner = Object.values(IconsModule).find((mod: any) =>
mod?.toString && /Spinner\)}\),.\.createElement\(\"path\",{d:\"M18 /.test(mod.toString())
) as FC<{}>;

View File

@@ -1,9 +0,0 @@
import { FC } from 'react';
import { findModuleChild } from '../webpack';
export const SteamSpinner = findModuleChild((m) => {
if (typeof m !== "object") return undefined;
for (let prop in m) {
if (m[prop]?.toString()?.includes("Steam Spinner") && m[prop].toString().includes("PreloadThrobber")) return m[prop]
}
}) as FC<{}>;

1
src/deck-components/index.ts Executable file → Normal file
View File

@@ -4,7 +4,6 @@ export * from './Menu';
export * from './Modal';
export * from './Panel';
export * from './Slider';
export * from './SteamSpinner';
export * from './Spinner';
export * from './static-classes';
export * from './Toggle';