@decky/ui 4.14.0 → 4.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Dialog.js +1 -1
- package/dist/components/ProgressBar.d.ts +1 -1
- package/dist/components/TextField.d.ts +1 -0
- package/dist/globals/steam-client/Screenshots.d.ts +1 -1
- package/dist/utils/react/treepatcher.js +7 -7
- package/package.json +1 -1
- package/src/components/Dialog.ts +1 -1
- package/src/components/ProgressBar.ts +2 -1
- package/src/components/TextField.ts +1 -0
- package/src/globals/steam-client/Screenshots.ts +1 -1
- package/src/utils/react/treepatcher.ts +9 -9
|
@@ -7,7 +7,7 @@ const CommonDialogDivs = Object.values(CommonUIModule).filter((m) => typeof m ==
|
|
|
7
7
|
const MappedDialogDivs = new Map(Object.values(CommonDialogDivs).map((m) => {
|
|
8
8
|
try {
|
|
9
9
|
const renderedDiv = m.render({});
|
|
10
|
-
return [renderedDiv
|
|
10
|
+
return [renderedDiv?.props?.className?.split(' ')[0], m];
|
|
11
11
|
}
|
|
12
12
|
catch (e) {
|
|
13
13
|
console.error("[DFL:Dialog]: failed to render common dialog component", e);
|
|
@@ -13,7 +13,7 @@ export interface ProgressBarProps {
|
|
|
13
13
|
focusable?: boolean;
|
|
14
14
|
}
|
|
15
15
|
export interface ProgressBarWithInfoProps extends ProgressBarItemProps {
|
|
16
|
-
|
|
16
|
+
rtEstimatedCompletionTime?: number;
|
|
17
17
|
sOperationText?: ReactNode;
|
|
18
18
|
}
|
|
19
19
|
export declare const ProgressBar: FC<ProgressBarProps>;
|
|
@@ -15,6 +15,7 @@ export interface TextFieldProps extends HTMLAttributes<HTMLInputElement> {
|
|
|
15
15
|
mustBeEmail?: boolean;
|
|
16
16
|
focusOnMount?: boolean;
|
|
17
17
|
tooltip?: string;
|
|
18
|
+
placeholder?: string;
|
|
18
19
|
inlineControls?: ReactNode;
|
|
19
20
|
onChange?: ChangeEventHandler<HTMLInputElement>;
|
|
20
21
|
value?: string;
|
|
@@ -9,7 +9,7 @@ export interface Screenshots {
|
|
|
9
9
|
GetLastScreenshotTaken(): Promise<Screenshot>;
|
|
10
10
|
GetLocalScreenshotByHandle(appId: string, screenshotIndex: number): Promise<Screenshot>;
|
|
11
11
|
GetLocalScreenshotCount(appId: number): Promise<number>;
|
|
12
|
-
GetLocalScreenshotPath(appId:
|
|
12
|
+
GetLocalScreenshotPath(appId: string, hHandle: number): Promise<string>;
|
|
13
13
|
GetNumGamesWithLocalScreenshots(): Promise<number>;
|
|
14
14
|
GetTotalDiskSpaceUsage(path: string): Promise<number>;
|
|
15
15
|
ShowScreenshotInSystemViewer(appId: string, screenshotIndex: number): void;
|
|
@@ -11,21 +11,21 @@ function patchComponent(node, handler, steps, step, caches, logger, prop = 'type
|
|
|
11
11
|
loggingEnabled && logger.group('Patching node:', node);
|
|
12
12
|
switch (typeof node?.[prop]) {
|
|
13
13
|
case 'function':
|
|
14
|
-
const patch = afterPatch(node, prop, steps[step + 1] ? createStepHandler(handler, steps, step + 1, caches, logger) : handler);
|
|
15
|
-
loggingEnabled && logger.debug('Patched a function component', patch);
|
|
16
|
-
break;
|
|
17
|
-
case 'object':
|
|
18
14
|
if (node[prop]?.prototype?.render) {
|
|
19
15
|
wrapReactClass(node);
|
|
20
16
|
const patch = afterPatch(node[prop].prototype, 'render', steps[step + 1] ? createStepHandler(handler, steps, step + 1, caches, logger) : handler);
|
|
21
17
|
loggingEnabled && logger.debug('Patched class component', patch);
|
|
22
18
|
}
|
|
23
19
|
else {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
patchComponent(node[prop], handler, steps, step, caches, logger, node[prop]?.render ? 'render' : 'type');
|
|
20
|
+
const patch = afterPatch(node, prop, steps[step + 1] ? createStepHandler(handler, steps, step + 1, caches, logger) : handler);
|
|
21
|
+
loggingEnabled && logger.debug('Patched a function component', patch);
|
|
27
22
|
}
|
|
28
23
|
break;
|
|
24
|
+
case 'object':
|
|
25
|
+
loggingEnabled && logger.debug('Patching forwardref/memo');
|
|
26
|
+
wrapReactType(node, prop);
|
|
27
|
+
patchComponent(node[prop], handler, steps, step, caches, logger, node[prop]?.render ? 'render' : 'type');
|
|
28
|
+
break;
|
|
29
29
|
default:
|
|
30
30
|
logger.error('Unhandled component type', node);
|
|
31
31
|
break;
|
package/package.json
CHANGED
package/src/components/Dialog.ts
CHANGED
|
@@ -69,7 +69,7 @@ const MappedDialogDivs = new Map(
|
|
|
69
69
|
try {
|
|
70
70
|
const renderedDiv = m.render({});
|
|
71
71
|
// Take only the first class name segment as it identifies the element we want
|
|
72
|
-
return [renderedDiv
|
|
72
|
+
return [renderedDiv?.props?.className?.split(' ')[0], m];
|
|
73
73
|
} catch (e) {
|
|
74
74
|
console.error("[DFL:Dialog]: failed to render common dialog component", e);
|
|
75
75
|
return [null, null];
|
|
@@ -19,7 +19,8 @@ export interface ProgressBarProps {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export interface ProgressBarWithInfoProps extends ProgressBarItemProps {
|
|
22
|
-
|
|
22
|
+
/** Timestamp of the completion time, has to be divided by 1000 */
|
|
23
|
+
rtEstimatedCompletionTime?: number;
|
|
23
24
|
sOperationText?: ReactNode;
|
|
24
25
|
}
|
|
25
26
|
|
|
@@ -18,6 +18,7 @@ export interface TextFieldProps extends HTMLAttributes<HTMLInputElement> {
|
|
|
18
18
|
mustBeEmail?: boolean;
|
|
19
19
|
focusOnMount?: boolean;
|
|
20
20
|
tooltip?: string;
|
|
21
|
+
placeholder?: string;
|
|
21
22
|
inlineControls?: ReactNode;
|
|
22
23
|
onChange?: ChangeEventHandler<HTMLInputElement>;
|
|
23
24
|
value?: string;
|
|
@@ -72,7 +72,7 @@ export interface Screenshots {
|
|
|
72
72
|
* @param hHandle The handle of the screenshot.
|
|
73
73
|
* @returns the screenshot path or the screenshot directory if no such handle.
|
|
74
74
|
*/
|
|
75
|
-
GetLocalScreenshotPath(appId:
|
|
75
|
+
GetLocalScreenshotPath(appId: string, hHandle: number): Promise<string>;
|
|
76
76
|
|
|
77
77
|
/**
|
|
78
78
|
* Retrieves the number of games with local screenshots.
|
|
@@ -23,11 +23,6 @@ function patchComponent(node: any, handler: GenericPatchHandler, steps: NodeStep
|
|
|
23
23
|
// We need to take extra care to not mutate the original node.type
|
|
24
24
|
switch (typeof node?.[prop]) {
|
|
25
25
|
case 'function':
|
|
26
|
-
// Function component
|
|
27
|
-
const patch = afterPatch(node, prop, steps[step + 1] ? createStepHandler(handler, steps, step + 1, caches, logger) : handler);
|
|
28
|
-
loggingEnabled && logger.debug('Patched a function component', patch);
|
|
29
|
-
break;
|
|
30
|
-
case 'object':
|
|
31
26
|
if (node[prop]?.prototype?.render) {
|
|
32
27
|
// Class component
|
|
33
28
|
// TODO handle patching custom methods
|
|
@@ -35,12 +30,17 @@ function patchComponent(node: any, handler: GenericPatchHandler, steps: NodeStep
|
|
|
35
30
|
const patch = afterPatch(node[prop].prototype, 'render', steps[step + 1] ? createStepHandler(handler, steps, step + 1, caches, logger) : handler);
|
|
36
31
|
loggingEnabled && logger.debug('Patched class component', patch);
|
|
37
32
|
} else {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
patchComponent(node[prop], handler, steps, step, caches, logger, node[prop]?.render ? 'render' : 'type');
|
|
33
|
+
// Function component
|
|
34
|
+
const patch = afterPatch(node, prop, steps[step + 1] ? createStepHandler(handler, steps, step + 1, caches, logger) : handler);
|
|
35
|
+
loggingEnabled && logger.debug('Patched a function component', patch);
|
|
42
36
|
}
|
|
43
37
|
break;
|
|
38
|
+
case 'object':
|
|
39
|
+
loggingEnabled && logger.debug('Patching forwardref/memo');
|
|
40
|
+
wrapReactType(node, prop);
|
|
41
|
+
// Step down the object
|
|
42
|
+
patchComponent(node[prop], handler, steps, step, caches, logger, node[prop]?.render ? 'render' : 'type');
|
|
43
|
+
break;
|
|
44
44
|
default:
|
|
45
45
|
logger.error('Unhandled component type', node);
|
|
46
46
|
break;
|