@decky/ui 4.0.0

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.
Files changed (150) hide show
  1. package/LICENSE +504 -0
  2. package/README.md +27 -0
  3. package/dist/class-mapper.d.ts +7 -0
  4. package/dist/class-mapper.js +26 -0
  5. package/dist/components/Button.d.ts +5 -0
  6. package/dist/components/Button.js +2 -0
  7. package/dist/components/ButtonItem.d.ts +7 -0
  8. package/dist/components/ButtonItem.js +3 -0
  9. package/dist/components/Carousel.d.ts +19 -0
  10. package/dist/components/Carousel.js +2 -0
  11. package/dist/components/ControlsList.d.ts +6 -0
  12. package/dist/components/ControlsList.js +2 -0
  13. package/dist/components/Dialog.d.ts +32 -0
  14. package/dist/components/Dialog.js +19 -0
  15. package/dist/components/DialogCheckbox.d.ts +17 -0
  16. package/dist/components/DialogCheckbox.js +14 -0
  17. package/dist/components/Dropdown.d.ts +34 -0
  18. package/dist/components/Dropdown.js +3 -0
  19. package/dist/components/Field.d.ts +22 -0
  20. package/dist/components/Field.js +2 -0
  21. package/dist/components/FocusRing.d.ts +9 -0
  22. package/dist/components/FocusRing.js +2 -0
  23. package/dist/components/Focusable.d.ts +12 -0
  24. package/dist/components/Focusable.js +2 -0
  25. package/dist/components/FooterLegend.d.ts +66 -0
  26. package/dist/components/FooterLegend.js +32 -0
  27. package/dist/components/Item.d.ts +11 -0
  28. package/dist/components/Item.js +1 -0
  29. package/dist/components/Marquee.d.ts +14 -0
  30. package/dist/components/Marquee.js +2 -0
  31. package/dist/components/Menu.d.ts +29 -0
  32. package/dist/components/Menu.js +8 -0
  33. package/dist/components/Modal.d.ts +52 -0
  34. package/dist/components/Modal.js +29 -0
  35. package/dist/components/Panel.d.ts +11 -0
  36. package/dist/components/Panel.js +4 -0
  37. package/dist/components/ProgressBar.d.ts +21 -0
  38. package/dist/components/ProgressBar.js +4 -0
  39. package/dist/components/Scroll.d.ts +7 -0
  40. package/dist/components/Scroll.js +5 -0
  41. package/dist/components/SidebarNavigation.d.ts +21 -0
  42. package/dist/components/SidebarNavigation.js +2 -0
  43. package/dist/components/SliderField.d.ts +26 -0
  44. package/dist/components/SliderField.js +2 -0
  45. package/dist/components/Spinner.d.ts +2 -0
  46. package/dist/components/Spinner.js +2 -0
  47. package/dist/components/SteamSpinner.d.ts +2 -0
  48. package/dist/components/SteamSpinner.js +2 -0
  49. package/dist/components/Tabs.d.ts +16 -0
  50. package/dist/components/Tabs.js +48 -0
  51. package/dist/components/TextField.d.ts +22 -0
  52. package/dist/components/TextField.js +2 -0
  53. package/dist/components/Toggle.d.ts +8 -0
  54. package/dist/components/Toggle.js +2 -0
  55. package/dist/components/ToggleField.d.ts +9 -0
  56. package/dist/components/ToggleField.js +2 -0
  57. package/dist/components/index.d.ts +25 -0
  58. package/dist/components/index.js +25 -0
  59. package/dist/custom-components/ColorPickerModal.d.ts +12 -0
  60. package/dist/custom-components/ColorPickerModal.js +87 -0
  61. package/dist/custom-components/ReorderableList.d.ts +26 -0
  62. package/dist/custom-components/ReorderableList.js +84 -0
  63. package/dist/custom-components/SuspensefulImage.d.ts +7 -0
  64. package/dist/custom-components/SuspensefulImage.js +27 -0
  65. package/dist/custom-components/index.d.ts +3 -0
  66. package/dist/custom-components/index.js +3 -0
  67. package/dist/custom-hooks/index.d.ts +1 -0
  68. package/dist/custom-hooks/index.js +1 -0
  69. package/dist/custom-hooks/useQuickAccessVisible.d.ts +1 -0
  70. package/dist/custom-hooks/useQuickAccessVisible.js +22 -0
  71. package/dist/deck-hooks/index.d.ts +1 -0
  72. package/dist/deck-hooks/index.js +1 -0
  73. package/dist/deck-hooks/useParams.d.ts +1 -0
  74. package/dist/deck-hooks/useParams.js +2 -0
  75. package/dist/globals/SteamClient.d.ts +307 -0
  76. package/dist/globals/SteamClient.js +1 -0
  77. package/dist/globals/index.d.ts +2 -0
  78. package/dist/globals/index.js +2 -0
  79. package/dist/globals/stores.d.ts +50 -0
  80. package/dist/globals/stores.js +1 -0
  81. package/dist/index.d.ts +10 -0
  82. package/dist/index.js +10 -0
  83. package/dist/logger.d.ts +17 -0
  84. package/dist/logger.js +46 -0
  85. package/dist/modules/Router.d.ts +110 -0
  86. package/dist/modules/Router.js +102 -0
  87. package/dist/modules/index.d.ts +1 -0
  88. package/dist/modules/index.js +1 -0
  89. package/dist/plugin.d.ts +68 -0
  90. package/dist/plugin.js +5 -0
  91. package/dist/utils/index.d.ts +12 -0
  92. package/dist/utils/index.js +23 -0
  93. package/dist/utils/patcher.d.ts +18 -0
  94. package/dist/utils/patcher.js +103 -0
  95. package/dist/utils/react.d.ts +18 -0
  96. package/dist/utils/react.js +74 -0
  97. package/dist/utils/static-classes.d.ts +52 -0
  98. package/dist/utils/static-classes.js +28 -0
  99. package/dist/webpack.d.ts +21 -0
  100. package/dist/webpack.js +102 -0
  101. package/package.json +82 -0
  102. package/src/class-mapper.ts +34 -0
  103. package/src/components/Button.tsx +8 -0
  104. package/src/components/ButtonItem.tsx +14 -0
  105. package/src/components/Carousel.ts +25 -0
  106. package/src/components/ControlsList.tsx +13 -0
  107. package/src/components/Dialog.tsx +86 -0
  108. package/src/components/DialogCheckbox.tsx +36 -0
  109. package/src/components/Dropdown.tsx +49 -0
  110. package/src/components/Field.tsx +28 -0
  111. package/src/components/FocusRing.ts +15 -0
  112. package/src/components/Focusable.tsx +18 -0
  113. package/src/components/FooterLegend.ts +67 -0
  114. package/src/components/Item.tsx +12 -0
  115. package/src/components/Marquee.tsx +20 -0
  116. package/src/components/Menu.tsx +57 -0
  117. package/src/components/Modal.tsx +119 -0
  118. package/src/components/Panel.tsx +26 -0
  119. package/src/components/ProgressBar.tsx +35 -0
  120. package/src/components/Scroll.tsx +15 -0
  121. package/src/components/SidebarNavigation.tsx +28 -0
  122. package/src/components/SliderField.tsx +33 -0
  123. package/src/components/Spinner.tsx +8 -0
  124. package/src/components/SteamSpinner.tsx +7 -0
  125. package/src/components/Tabs.tsx +127 -0
  126. package/src/components/TextField.tsx +28 -0
  127. package/src/components/Toggle.tsx +14 -0
  128. package/src/components/ToggleField.tsx +15 -0
  129. package/src/components/index.ts +25 -0
  130. package/src/custom-components/ColorPickerModal.tsx +132 -0
  131. package/src/custom-components/ReorderableList.tsx +183 -0
  132. package/src/custom-components/SuspensefulImage.tsx +44 -0
  133. package/src/custom-components/index.ts +3 -0
  134. package/src/custom-hooks/index.ts +1 -0
  135. package/src/custom-hooks/useQuickAccessVisible.tsx +63 -0
  136. package/src/deck-hooks/index.ts +1 -0
  137. package/src/deck-hooks/useParams.ts +15 -0
  138. package/src/globals/SteamClient.ts +321 -0
  139. package/src/globals/index.ts +2 -0
  140. package/src/globals/stores.ts +50 -0
  141. package/src/index.ts +11 -0
  142. package/src/logger.ts +77 -0
  143. package/src/modules/Router.tsx +174 -0
  144. package/src/modules/index.ts +1 -0
  145. package/src/plugin.tsx +96 -0
  146. package/src/utils/index.ts +43 -0
  147. package/src/utils/patcher.ts +160 -0
  148. package/src/utils/react.ts +119 -0
  149. package/src/utils/static-classes.ts +1104 -0
  150. package/src/webpack.ts +136 -0
@@ -0,0 +1,307 @@
1
+ declare global {
2
+ var SteamClient: SteamClient;
3
+ }
4
+ export interface Apps {
5
+ RegisterForAppOverviewChanges: any;
6
+ RegisterForAppDetails: any;
7
+ RegisterForLocalizationChanges: any;
8
+ RegisterForWorkshopChanges: any;
9
+ RegisterForWorkshopItemDownloads: any;
10
+ GetLibraryBootstrapData: any;
11
+ RegisterForAchievementChanges: any;
12
+ GetFriendAchievementsForApp: any;
13
+ GetMyAchievementsForApp: any;
14
+ AddUserTagToApps: any;
15
+ RemoveUserTagFromApps: any;
16
+ ClearUserTagsOnApps: any;
17
+ ClearAndSetUserTagsOnApp: any;
18
+ SetAppHidden: any;
19
+ ResetHiddenState: any;
20
+ SetAppLaunchOptions: any;
21
+ SetAppResolutionOverride: any;
22
+ SetAppCurrentLanguage: any;
23
+ SetAppAutoUpdateBehavior: any;
24
+ SetAppBackgroundDownloadsBehavior: any;
25
+ ToggleAppFamilyBlockedState: any;
26
+ ToggleAppSteamCloudEnabled: any;
27
+ ToggleAppSteamCloudSyncOnSuspendEnabled: any;
28
+ ToggleOverrideResolutionForInternalDisplay: any;
29
+ ToggleEnableSteamOverlayForApp: any;
30
+ ToggleEnableDesktopTheatreForApp: any;
31
+ BrowseLocalFilesForApp: any;
32
+ BrowseScreenshotsForApp: any;
33
+ BrowseScreenshotForApp: any;
34
+ BackupFilesForApp: any;
35
+ VerifyFilesForApp: any;
36
+ CreateDesktopShortcutForApp: any;
37
+ JoinAppContentBeta: any;
38
+ JoinAppContentBetaByPassword: any;
39
+ GetAchievementsInTimeRange: any;
40
+ GetSubscribedWorkshopItems: any;
41
+ SubscribeWorkshopItem: any;
42
+ GetDownloadedWorkshopItems: any;
43
+ DownloadWorkshopItem: any;
44
+ SetLocalScreenshotCaption: any;
45
+ SetLocalScreenshotSpoiler: any;
46
+ GetDetailsForScreenshotUpload: any;
47
+ UploadLocalScreenshot: any;
48
+ DeleteLocalScreenshot: any;
49
+ GetScreenshotsInTimeRange: any;
50
+ GetFriendsWhoPlay: any;
51
+ RequestLegacyCDKeysForApp: any;
52
+ GetSoundtrackDetails: any;
53
+ GetStoreTagLocalization: any;
54
+ GetLaunchOptionsForApp: any;
55
+ GetResolutionOverrideForApp: any;
56
+ ScanForShortcuts: any;
57
+ GetAllShortcuts: any;
58
+ GetShortcutData: any;
59
+ AddShortcut: any;
60
+ RemoveShortcut: any;
61
+ InstallFlatpakAppAndCreateShortcut: any;
62
+ ListFlatpakApps: any;
63
+ UninstallFlatpakApp: any;
64
+ ShowControllerConfigurator: any;
65
+ SetThirdPartyControllerConfiguration: any;
66
+ ToggleAllowDesktopConfiguration: any;
67
+ SetControllerRumblePreference: any;
68
+ GetCachedAppDetails: any;
69
+ SetCachedAppDetails: any;
70
+ ReportLibraryAssetCacheMiss: any;
71
+ SaveAchievementProgressCache: any;
72
+ SetStreamingClientForApp: any;
73
+ SetCustomArtworkForApp: any;
74
+ ClearCustomArtworkForApp: any;
75
+ SetCustomLogoPositionForApp: any;
76
+ ClearCustomLogoPositionForApp: any;
77
+ RequestIconDataForApp: any;
78
+ SpecifyCompatTool: any;
79
+ GetAvailableCompatTools: any;
80
+ SetShortcutName: any;
81
+ SetShortcutExe: any;
82
+ SetShortcutStartDir: any;
83
+ SetShortcutLaunchOptions: any;
84
+ SetShortcutIsVR: any;
85
+ PromptToChangeShortcut: any;
86
+ PromptToSelectShortcutIcon: any;
87
+ InstallApp: any;
88
+ RunGame: any;
89
+ VerifyApp: any;
90
+ StreamGame: any;
91
+ CancelLaunch: any;
92
+ TerminateApp: any;
93
+ UninstallApps: any;
94
+ ShowStore: any;
95
+ SetDLCEnabled: any;
96
+ ContinueGameAction: any;
97
+ CancelGameAction: any;
98
+ GetActiveGameActions: any;
99
+ GetGameActionDetails: any;
100
+ GetGameActionForApp: any;
101
+ SkipShaderProcessing: any;
102
+ MarkEulaAccepted: any;
103
+ MarkEulaRejected: any;
104
+ LoadEula: any;
105
+ GetConflictingFileTimestamps: any;
106
+ GetCloudPendingRemoteOperations: any;
107
+ ClearProton: any;
108
+ RegisterForMarketingMessages: any;
109
+ FetchMarketingMessages: any;
110
+ MarkMarketingMessageSeen: any;
111
+ ReportMarketingMessageSeen: any;
112
+ RegisterForGameActionStart: any;
113
+ RegisterForGameActionEnd: any;
114
+ RegisterForGameActionTaskChange: any;
115
+ RegisterForGameActionUserRequest: any;
116
+ RegisterForGameActionShowError: any;
117
+ RegisterForGameActionShowUI: any;
118
+ OpenAppSettingsDialog: any;
119
+ }
120
+ export interface Window {
121
+ RegisterForExternalDisplayChanged: any;
122
+ SetManualDisplayScaleFactor: any;
123
+ SetAutoDisplayScale: any;
124
+ Minimize: any;
125
+ ProcessShuttingDown: any;
126
+ ToggleMaximize: any;
127
+ MoveTo: any;
128
+ ResizeTo: any;
129
+ SetMinSize: any;
130
+ SetResizeGrip: any;
131
+ SetComposition: any;
132
+ GamescopeBlur: any;
133
+ BringToFront: any;
134
+ SetForegroundWindow: any;
135
+ SetKeyFocus: any;
136
+ FlashWindow: any;
137
+ StopFlashWindow: any;
138
+ ShowWindow: any;
139
+ HideWindow: any;
140
+ SetWindowIcon: any;
141
+ GetWindowDimensions: any;
142
+ GetWindowRestoreDetails: any;
143
+ PositionWindowRelative: any;
144
+ GetMousePositionDetails: any;
145
+ IsWindowMinimized: any;
146
+ GetBrowserID: any;
147
+ }
148
+ export interface SteamClient {
149
+ Apps: Apps;
150
+ Browser: any;
151
+ BrowserView: any;
152
+ ClientNotifications: any;
153
+ Cloud: any;
154
+ Console: any;
155
+ Downloads: any;
156
+ FamilySharing: any;
157
+ FriendSettings: any;
158
+ Friends: any;
159
+ GameSessions: any;
160
+ Input: any;
161
+ InstallFolder: any;
162
+ Installs: any;
163
+ MachineStorage: any;
164
+ Messaging: any;
165
+ Notifications: any;
166
+ OpenVR: any;
167
+ Overlay: any;
168
+ Parental: any;
169
+ RegisterIFrameNavigatedCallback: any;
170
+ RemotePlay: any;
171
+ RoamingStorage: any;
172
+ Screenshots: any;
173
+ Settings: any;
174
+ SharedConnection: any;
175
+ Stats: any;
176
+ Storage: any;
177
+ Streaming: any;
178
+ System: any;
179
+ UI: any;
180
+ URL: any;
181
+ Updates: any;
182
+ User: any;
183
+ WebChat: any;
184
+ Window: Window;
185
+ }
186
+ export interface SteamShortcut {
187
+ appid: number;
188
+ data: {
189
+ bIsApplication: boolean;
190
+ strAppName: string;
191
+ strExePath: string;
192
+ strArguments: string;
193
+ strShortcutPath: string;
194
+ strSortAs: string;
195
+ };
196
+ }
197
+ export interface LifetimeNotification {
198
+ unAppID: number;
199
+ nInstanceID: number;
200
+ bRunning: boolean;
201
+ }
202
+ export type AppAchievements = {
203
+ nAchieved: number;
204
+ nTotal: number;
205
+ vecAchievedHidden: any[];
206
+ vecHighlight: any[];
207
+ vecUnachieved: any[];
208
+ };
209
+ export type AppLanguages = {
210
+ strDisplayName: string;
211
+ strShortName: string;
212
+ };
213
+ export type LogoPinPositions = 'BottomLeft' | 'UpperLeft' | 'CenterCenter' | 'UpperCenter' | 'BottomCenter';
214
+ export interface LogoPosition {
215
+ pinnedPosition: LogoPinPositions;
216
+ nWidthPct: number;
217
+ nHeightPct: number;
218
+ }
219
+ export interface AppDetails {
220
+ achievements: AppAchievements;
221
+ bCanMoveInstallFolder: boolean;
222
+ bCloudAvailable: boolean;
223
+ bCloudEnabledForAccount: boolean;
224
+ bCloudEnabledForApp: boolean;
225
+ bCloudSyncOnSuspendAvailable: boolean;
226
+ bCloudSyncOnSuspendEnabled: boolean;
227
+ bCommunityMarketPresence: boolean;
228
+ bEnableAllowDesktopConfiguration: boolean;
229
+ bFreeRemovableLicense: boolean;
230
+ bHasAllLegacyCDKeys: boolean;
231
+ bHasAnyLocalContent: boolean;
232
+ bHasLockedPrivateBetas: boolean;
233
+ bIsExcludedFromSharing: boolean;
234
+ bIsSubscribedTo: boolean;
235
+ bOverlayEnabled: boolean;
236
+ bOverrideInternalResolution: boolean;
237
+ bRequiresLegacyCDKey: boolean;
238
+ bShortcutIsVR: boolean;
239
+ bShowCDKeyInMenus: boolean;
240
+ bShowControllerConfig: boolean;
241
+ bSupportsCDKeyCopyToClipboard: boolean;
242
+ bVRGameTheatreEnabled: boolean;
243
+ bWorkshopVisible: boolean;
244
+ eAppOwnershipFlags: number;
245
+ eAutoUpdateValue: number;
246
+ eBackgroundDownloads: number;
247
+ eCloudSync: number;
248
+ eControllerRumblePreference: number;
249
+ eDisplayStatus: number;
250
+ eEnableThirdPartyControllerConfiguration: number;
251
+ eSteamInputControllerMask: number;
252
+ iInstallFolder: number;
253
+ lDiskUsageBytes: number;
254
+ lDlcUsageBytes: number;
255
+ nBuildID: number;
256
+ nCompatToolPriority: number;
257
+ nPlaytimeForever: number;
258
+ nScreenshots: number;
259
+ rtLastTimePlayed: number;
260
+ rtLastUpdated: number;
261
+ rtPurchased: number;
262
+ selectedLanguage: {
263
+ strDisplayName: string;
264
+ strShortName: string;
265
+ };
266
+ strCloudBytesAvailable: string;
267
+ strCloudBytesUsed: string;
268
+ strCompatToolDisplayName: string;
269
+ strCompatToolName: string;
270
+ strDeveloperName: string;
271
+ strDeveloperURL: string;
272
+ strDisplayName: string;
273
+ strExternalSubscriptionURL: string;
274
+ strFlatpakAppID: string;
275
+ strHomepageURL: string;
276
+ strLaunchOptions: string;
277
+ strManualURL: string;
278
+ strOwnerSteamID: string;
279
+ strResolutionOverride: string;
280
+ strSelectedBeta: string;
281
+ strShortcutExe: string;
282
+ strShortcutLaunchOptions: string;
283
+ strShortcutStartDir: string;
284
+ strSteamDeckBlogURL: string;
285
+ unAppID: number;
286
+ vecBetas: any[];
287
+ vecDLC: any[];
288
+ vecDeckCompatTestResults: any[];
289
+ vecLanguages: AppLanguages[];
290
+ vecLegacyCDKeys: any[];
291
+ vecMusicAlbums: any[];
292
+ vecPlatforms: string[];
293
+ vecScreenShots: any[];
294
+ libraryAssets?: {
295
+ logoPosition?: LogoPosition;
296
+ };
297
+ }
298
+ export interface SteamAppOverview {
299
+ display_name: string;
300
+ gameid: string;
301
+ appid: number;
302
+ icon_hash: string;
303
+ third_party_mod?: boolean;
304
+ selected_clientid?: string;
305
+ BIsModOrShortcut: () => boolean;
306
+ BIsShortcut: () => boolean;
307
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export * from './SteamClient';
2
+ export * from './stores';
@@ -0,0 +1,2 @@
1
+ export * from './SteamClient';
2
+ export * from './stores';
@@ -0,0 +1,50 @@
1
+ import { AppDetails, LogoPosition, SteamAppOverview } from './SteamClient';
2
+ declare global {
3
+ interface Window {
4
+ LocalizationManager: {
5
+ m_mapTokens: Map<string, string>;
6
+ m_mapFallbackTokens: Map<string, string>;
7
+ m_rgLocalesToUse: string[];
8
+ };
9
+ App: {
10
+ m_CurrentUser: {
11
+ bIsLimited: boolean;
12
+ bIsOfflineMode: boolean;
13
+ bSupportAlertActive: boolean;
14
+ bCanInviteFriends: boolean;
15
+ NotificationCounts: {
16
+ comments: number;
17
+ inventory_items: number;
18
+ invites: number;
19
+ gifts: number;
20
+ offline_messages: number;
21
+ trade_offers: number;
22
+ async_game_updates: number;
23
+ moderator_messages: number;
24
+ help_request_replies: number;
25
+ };
26
+ strAccountBalance: string;
27
+ strAccountName: string;
28
+ strSteamID: string;
29
+ };
30
+ };
31
+ appStore: {
32
+ GetAppOverviewByAppID: (appId: number) => SteamAppOverview | null;
33
+ GetCustomVerticalCapsuleURLs: (app: SteamAppOverview) => string[];
34
+ GetCustomLandcapeImageURLs: (app: SteamAppOverview) => string[];
35
+ GetCustomHeroImageURLs: (app: SteamAppOverview) => string[];
36
+ GetCustomLogoImageURLs: (app: SteamAppOverview) => string[];
37
+ GetLandscapeImageURLForApp: (app: SteamAppOverview) => string;
38
+ GetVerticalCapsuleURLForApp: (app: SteamAppOverview) => string;
39
+ GetCachedLandscapeImageURLForApp: (app: SteamAppOverview) => string;
40
+ GetCachedVerticalImageURLForApp: (app: SteamAppOverview) => string;
41
+ GetPregeneratedVerticalCapsuleForApp: (app: SteamAppOverview) => string;
42
+ GetIconURLForApp: (app: SteamAppOverview) => string;
43
+ };
44
+ appDetailsStore: {
45
+ GetAppDetails: (appId: number) => AppDetails | null;
46
+ GetCustomLogoPosition: (app: SteamAppOverview) => LogoPosition | null;
47
+ SaveCustomLogoPosition: (app: SteamAppOverview, logoPositions: LogoPosition) => any;
48
+ };
49
+ }
50
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ export * from './custom-components';
2
+ export * from './custom-hooks';
3
+ export * from './components';
4
+ export * from './deck-hooks';
5
+ export * from './modules';
6
+ export * from './globals';
7
+ export * from './plugin';
8
+ export * from './webpack';
9
+ export * from './utils';
10
+ export * from './class-mapper';
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export * from './custom-components';
2
+ export * from './custom-hooks';
3
+ export * from './components';
4
+ export * from './deck-hooks';
5
+ export * from './modules';
6
+ export * from './globals';
7
+ export * from './plugin';
8
+ export * from './webpack';
9
+ export * from './utils';
10
+ export * from './class-mapper';
@@ -0,0 +1,17 @@
1
+ export declare const log: (name: string, ...args: any[]) => void;
2
+ export declare const group: (name: string, ...args: any[]) => void;
3
+ export declare const groupEnd: (name: string, ...args: any[]) => void;
4
+ export declare const debug: (name: string, ...args: any[]) => void;
5
+ export declare const warn: (name: string, ...args: any[]) => void;
6
+ export declare const error: (name: string, ...args: any[]) => void;
7
+ declare class Logger {
8
+ private name;
9
+ constructor(name: string);
10
+ log(...args: any[]): void;
11
+ debug(...args: any[]): void;
12
+ warn(...args: any[]): void;
13
+ error(...args: any[]): void;
14
+ group(...args: any[]): void;
15
+ groupEnd(...args: any[]): void;
16
+ }
17
+ export default Logger;
package/dist/logger.js ADDED
@@ -0,0 +1,46 @@
1
+ const bgStyle1 = 'background: #16a085; color: black;';
2
+ export const log = (name, ...args) => {
3
+ console.log(`%c @decky/ui %c ${name} %c`, bgStyle1, 'background: #1abc9c; color: black;', 'background: transparent;', ...args);
4
+ };
5
+ export const group = (name, ...args) => {
6
+ console.group(`%c @decky/ui %c ${name} %c`, bgStyle1, 'background: #1abc9c; color: black;', 'background: transparent;', ...args);
7
+ };
8
+ export const groupEnd = (name, ...args) => {
9
+ console.groupEnd();
10
+ if (args?.length > 0)
11
+ console.log(`^ %c @decky/ui %c ${name} %c`, bgStyle1, 'background: #1abc9c; color: black;', 'background: transparent;', ...args);
12
+ };
13
+ export const debug = (name, ...args) => {
14
+ console.debug(`%c @decky/ui %c ${name} %c`, bgStyle1, 'background: #1abc9c; color: black;', 'color: blue;', ...args);
15
+ };
16
+ export const warn = (name, ...args) => {
17
+ console.warn(`%c @decky/ui %c ${name} %c`, bgStyle1, 'background: #ffbb00; color: black;', 'color: blue;', ...args);
18
+ };
19
+ export const error = (name, ...args) => {
20
+ console.error(`%c @decky/ui %c ${name} %c`, bgStyle1, 'background: #FF0000;', 'background: transparent;', ...args);
21
+ };
22
+ class Logger {
23
+ constructor(name) {
24
+ this.name = name;
25
+ this.name = name;
26
+ }
27
+ log(...args) {
28
+ log(this.name, ...args);
29
+ }
30
+ debug(...args) {
31
+ debug(this.name, ...args);
32
+ }
33
+ warn(...args) {
34
+ warn(this.name, ...args);
35
+ }
36
+ error(...args) {
37
+ error(this.name, ...args);
38
+ }
39
+ group(...args) {
40
+ group(this.name, ...args);
41
+ }
42
+ groupEnd(...args) {
43
+ groupEnd(this.name, ...args);
44
+ }
45
+ }
46
+ export default Logger;
@@ -0,0 +1,110 @@
1
+ export declare enum SideMenu {
2
+ None = 0,
3
+ Main = 1,
4
+ QuickAccess = 2
5
+ }
6
+ export declare enum QuickAccessTab {
7
+ Notifications = 0,
8
+ RemotePlayTogetherControls = 1,
9
+ VoiceChat = 2,
10
+ Friends = 3,
11
+ Settings = 4,
12
+ Perf = 5,
13
+ Help = 6,
14
+ Music = 7,
15
+ Decky = 999
16
+ }
17
+ export declare enum DisplayStatus {
18
+ Invalid = 0,
19
+ Launching = 1,
20
+ Uninstalling = 2,
21
+ Installing = 3,
22
+ Running = 4,
23
+ Validating = 5,
24
+ Updating = 6,
25
+ Downloading = 7,
26
+ Synchronizing = 8,
27
+ ReadyToInstall = 9,
28
+ ReadyToPreload = 10,
29
+ ReadyToLaunch = 11,
30
+ RegionRestricted = 12,
31
+ PresaleOnly = 13,
32
+ InvalidPlatform = 14,
33
+ PreloadComplete = 16,
34
+ BorrowerLocked = 17,
35
+ UpdatePaused = 18,
36
+ UpdateQueued = 19,
37
+ UpdateRequired = 20,
38
+ UpdateDisabled = 21,
39
+ DownloadPaused = 22,
40
+ DownloadQueued = 23,
41
+ DownloadRequired = 24,
42
+ DownloadDisabled = 25,
43
+ LicensePending = 26,
44
+ LicenseExpired = 27,
45
+ AvailForFree = 28,
46
+ AvailToBorrow = 29,
47
+ AvailGuestPass = 30,
48
+ Purchase = 31,
49
+ Unavailable = 32,
50
+ NotLaunchable = 33,
51
+ CloudError = 34,
52
+ CloudOutOfDate = 35,
53
+ Terminating = 36
54
+ }
55
+ export type AppOverview = {
56
+ appid: string;
57
+ display_name: string;
58
+ display_status: DisplayStatus;
59
+ sort_as: string;
60
+ };
61
+ export interface MenuStore {
62
+ OpenSideMenu(sideMenu: SideMenu): void;
63
+ OpenQuickAccessMenu(quickAccessTab?: QuickAccessTab): void;
64
+ OpenMainMenu(): void;
65
+ }
66
+ export interface WindowRouter {
67
+ BrowserWindow: Window;
68
+ MenuStore: MenuStore;
69
+ Navigate(path: string): void;
70
+ NavigateToChat(): void;
71
+ NavigateToSteamWeb(url: string): void;
72
+ NavigateBack(): void;
73
+ }
74
+ export interface WindowStore {
75
+ GamepadUIMainWindowInstance?: WindowRouter;
76
+ SteamUIWindows: WindowRouter[];
77
+ OverlayWindows: WindowRouter[];
78
+ }
79
+ export interface Router {
80
+ WindowStore?: WindowStore;
81
+ CloseSideMenus(): void;
82
+ Navigate(path: string): void;
83
+ NavigateToAppProperties(): void;
84
+ NavigateToExternalWeb(url: string): void;
85
+ NavigateToInvites(): void;
86
+ NavigateToChat(): void;
87
+ NavigateToLibraryTab(): void;
88
+ NavigateToLayoutPreview(e: unknown): void;
89
+ OpenPowerMenu(unknown?: any): void;
90
+ get RunningApps(): AppOverview[];
91
+ get MainRunningApp(): AppOverview | undefined;
92
+ }
93
+ export declare const Router: Router;
94
+ export interface Navigation {
95
+ Navigate(path: string): void;
96
+ NavigateBack(): void;
97
+ NavigateToAppProperties(): void;
98
+ NavigateToExternalWeb(url: string): void;
99
+ NavigateToInvites(): void;
100
+ NavigateToChat(): void;
101
+ NavigateToLibraryTab(): void;
102
+ NavigateToLayoutPreview(e: unknown): void;
103
+ NavigateToSteamWeb(url: string): void;
104
+ OpenSideMenu(sideMenu: SideMenu): void;
105
+ OpenQuickAccessMenu(quickAccessTab?: QuickAccessTab): void;
106
+ OpenMainMenu(): void;
107
+ OpenPowerMenu(unknown?: any): void;
108
+ CloseSideMenus(): void;
109
+ }
110
+ export declare let Navigation: Navigation;
@@ -0,0 +1,102 @@
1
+ import { sleep } from '../utils';
2
+ import { findModuleExport } from '../webpack';
3
+ export var SideMenu;
4
+ (function (SideMenu) {
5
+ SideMenu[SideMenu["None"] = 0] = "None";
6
+ SideMenu[SideMenu["Main"] = 1] = "Main";
7
+ SideMenu[SideMenu["QuickAccess"] = 2] = "QuickAccess";
8
+ })(SideMenu || (SideMenu = {}));
9
+ export var QuickAccessTab;
10
+ (function (QuickAccessTab) {
11
+ QuickAccessTab[QuickAccessTab["Notifications"] = 0] = "Notifications";
12
+ QuickAccessTab[QuickAccessTab["RemotePlayTogetherControls"] = 1] = "RemotePlayTogetherControls";
13
+ QuickAccessTab[QuickAccessTab["VoiceChat"] = 2] = "VoiceChat";
14
+ QuickAccessTab[QuickAccessTab["Friends"] = 3] = "Friends";
15
+ QuickAccessTab[QuickAccessTab["Settings"] = 4] = "Settings";
16
+ QuickAccessTab[QuickAccessTab["Perf"] = 5] = "Perf";
17
+ QuickAccessTab[QuickAccessTab["Help"] = 6] = "Help";
18
+ QuickAccessTab[QuickAccessTab["Music"] = 7] = "Music";
19
+ QuickAccessTab[QuickAccessTab["Decky"] = 999] = "Decky";
20
+ })(QuickAccessTab || (QuickAccessTab = {}));
21
+ export var DisplayStatus;
22
+ (function (DisplayStatus) {
23
+ DisplayStatus[DisplayStatus["Invalid"] = 0] = "Invalid";
24
+ DisplayStatus[DisplayStatus["Launching"] = 1] = "Launching";
25
+ DisplayStatus[DisplayStatus["Uninstalling"] = 2] = "Uninstalling";
26
+ DisplayStatus[DisplayStatus["Installing"] = 3] = "Installing";
27
+ DisplayStatus[DisplayStatus["Running"] = 4] = "Running";
28
+ DisplayStatus[DisplayStatus["Validating"] = 5] = "Validating";
29
+ DisplayStatus[DisplayStatus["Updating"] = 6] = "Updating";
30
+ DisplayStatus[DisplayStatus["Downloading"] = 7] = "Downloading";
31
+ DisplayStatus[DisplayStatus["Synchronizing"] = 8] = "Synchronizing";
32
+ DisplayStatus[DisplayStatus["ReadyToInstall"] = 9] = "ReadyToInstall";
33
+ DisplayStatus[DisplayStatus["ReadyToPreload"] = 10] = "ReadyToPreload";
34
+ DisplayStatus[DisplayStatus["ReadyToLaunch"] = 11] = "ReadyToLaunch";
35
+ DisplayStatus[DisplayStatus["RegionRestricted"] = 12] = "RegionRestricted";
36
+ DisplayStatus[DisplayStatus["PresaleOnly"] = 13] = "PresaleOnly";
37
+ DisplayStatus[DisplayStatus["InvalidPlatform"] = 14] = "InvalidPlatform";
38
+ DisplayStatus[DisplayStatus["PreloadComplete"] = 16] = "PreloadComplete";
39
+ DisplayStatus[DisplayStatus["BorrowerLocked"] = 17] = "BorrowerLocked";
40
+ DisplayStatus[DisplayStatus["UpdatePaused"] = 18] = "UpdatePaused";
41
+ DisplayStatus[DisplayStatus["UpdateQueued"] = 19] = "UpdateQueued";
42
+ DisplayStatus[DisplayStatus["UpdateRequired"] = 20] = "UpdateRequired";
43
+ DisplayStatus[DisplayStatus["UpdateDisabled"] = 21] = "UpdateDisabled";
44
+ DisplayStatus[DisplayStatus["DownloadPaused"] = 22] = "DownloadPaused";
45
+ DisplayStatus[DisplayStatus["DownloadQueued"] = 23] = "DownloadQueued";
46
+ DisplayStatus[DisplayStatus["DownloadRequired"] = 24] = "DownloadRequired";
47
+ DisplayStatus[DisplayStatus["DownloadDisabled"] = 25] = "DownloadDisabled";
48
+ DisplayStatus[DisplayStatus["LicensePending"] = 26] = "LicensePending";
49
+ DisplayStatus[DisplayStatus["LicenseExpired"] = 27] = "LicenseExpired";
50
+ DisplayStatus[DisplayStatus["AvailForFree"] = 28] = "AvailForFree";
51
+ DisplayStatus[DisplayStatus["AvailToBorrow"] = 29] = "AvailToBorrow";
52
+ DisplayStatus[DisplayStatus["AvailGuestPass"] = 30] = "AvailGuestPass";
53
+ DisplayStatus[DisplayStatus["Purchase"] = 31] = "Purchase";
54
+ DisplayStatus[DisplayStatus["Unavailable"] = 32] = "Unavailable";
55
+ DisplayStatus[DisplayStatus["NotLaunchable"] = 33] = "NotLaunchable";
56
+ DisplayStatus[DisplayStatus["CloudError"] = 34] = "CloudError";
57
+ DisplayStatus[DisplayStatus["CloudOutOfDate"] = 35] = "CloudOutOfDate";
58
+ DisplayStatus[DisplayStatus["Terminating"] = 36] = "Terminating";
59
+ })(DisplayStatus || (DisplayStatus = {}));
60
+ export const Router = findModuleExport((e) => e.Navigate && e.NavigationManager);
61
+ export let Navigation = {};
62
+ try {
63
+ (async () => {
64
+ let InternalNavigators = {};
65
+ if (!Router.NavigateToAppProperties || Router.deckyShim) {
66
+ function initInternalNavigators() {
67
+ try {
68
+ InternalNavigators = findModuleExport((e) => e.GetNavigator && e.SetNavigator)?.GetNavigator();
69
+ }
70
+ catch (e) {
71
+ console.error('[DFL:Router]: Failed to init internal navigators, trying again');
72
+ }
73
+ }
74
+ initInternalNavigators();
75
+ while (!InternalNavigators?.AppProperties) {
76
+ console.log('[DFL:Router]: Trying to init internal navigators again');
77
+ await sleep(2000);
78
+ initInternalNavigators();
79
+ }
80
+ }
81
+ const newNavigation = {
82
+ Navigate: Router.Navigate?.bind(Router),
83
+ NavigateBack: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateBack?.bind(Router.WindowStore.GamepadUIMainWindowInstance),
84
+ NavigateToAppProperties: InternalNavigators?.AppProperties || Router.NavigateToAppProperties?.bind(Router),
85
+ NavigateToExternalWeb: InternalNavigators?.ExternalWeb || Router.NavigateToExternalWeb?.bind(Router),
86
+ NavigateToInvites: InternalNavigators?.Invites || Router.NavigateToInvites?.bind(Router),
87
+ NavigateToChat: InternalNavigators?.Chat || Router.NavigateToChat?.bind(Router),
88
+ NavigateToLibraryTab: InternalNavigators?.LibraryTab || Router.NavigateToLibraryTab?.bind(Router),
89
+ NavigateToLayoutPreview: Router.NavigateToLayoutPreview?.bind(Router),
90
+ NavigateToSteamWeb: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateToSteamWeb?.bind(Router.WindowStore.GamepadUIMainWindowInstance),
91
+ OpenSideMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenSideMenu?.bind(Router.WindowStore.GamepadUIMainWindowInstance.MenuStore),
92
+ OpenQuickAccessMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenQuickAccessMenu?.bind(Router.WindowStore.GamepadUIMainWindowInstance.MenuStore),
93
+ OpenMainMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenMainMenu?.bind(Router.WindowStore.GamepadUIMainWindowInstance.MenuStore),
94
+ CloseSideMenus: Router.CloseSideMenus?.bind(Router),
95
+ OpenPowerMenu: Router.OpenPowerMenu?.bind(Router),
96
+ };
97
+ Object.assign(Navigation, newNavigation);
98
+ })();
99
+ }
100
+ catch (e) {
101
+ console.error('[DFL:Router]: Error initializing Navigation interface', e);
102
+ }
@@ -0,0 +1 @@
1
+ export * from './Router';
@@ -0,0 +1 @@
1
+ export * from './Router';