@decky/ui 4.15.0 → 4.16.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 (173) hide show
  1. package/dist/components/Dialog.js +1 -1
  2. package/dist/components/Dropdown.d.ts +2 -2
  3. package/dist/components/FooterLegend.d.ts +8 -2
  4. package/dist/components/FooterLegend.js +7 -0
  5. package/dist/components/Menu.d.ts +5 -9
  6. package/dist/components/Modal.d.ts +3 -2
  7. package/dist/globals/index.d.ts +25 -2
  8. package/dist/globals/index.js +1 -2
  9. package/dist/globals/shared/cm.d.ts +112 -0
  10. package/dist/globals/shared/enums.d.ts +80 -0
  11. package/dist/globals/shared/enums.js +85 -0
  12. package/dist/globals/shared/history.d.ts +12 -0
  13. package/dist/globals/shared/history.js +1 -0
  14. package/dist/globals/shared/index.d.ts +5 -0
  15. package/dist/globals/shared/index.js +5 -0
  16. package/dist/globals/shared/interfaces.d.ts +54 -0
  17. package/dist/globals/shared/interfaces.js +1 -0
  18. package/dist/globals/shared/navigation.d.ts +14 -0
  19. package/dist/globals/shared/navigation.js +10 -0
  20. package/dist/globals/shared/steamid.d.ts +36 -0
  21. package/dist/globals/shared/steamid.js +15 -0
  22. package/dist/globals/shared/storage.d.ts +27 -0
  23. package/dist/globals/shared/storage.js +11 -0
  24. package/dist/globals/steam-client/App.d.ts +1 -1
  25. package/dist/globals/steam-client/Auth.d.ts +1 -1
  26. package/dist/globals/steam-client/ClientNotifications.d.ts +1 -1
  27. package/dist/globals/steam-client/Overlay.d.ts +2 -1
  28. package/dist/globals/steam-client/Screenshots.d.ts +1 -1
  29. package/dist/globals/steam-client/Settings.d.ts +1 -1
  30. package/dist/globals/steam-client/SharedConnection.d.ts +2 -1
  31. package/dist/globals/steam-client/UI.d.ts +14 -3
  32. package/dist/globals/steam-client/UI.js +11 -0
  33. package/dist/globals/steam-client/User.d.ts +13 -0
  34. package/dist/globals/steam-client/User.js +7 -0
  35. package/dist/globals/steam-client/WebChat.d.ts +3 -2
  36. package/dist/globals/steam-client/shared.d.ts +0 -29
  37. package/dist/globals/steam-client/shared.js +0 -24
  38. package/dist/globals/stores/app.d.ts +35 -0
  39. package/dist/globals/stores/app.js +1 -0
  40. package/dist/globals/stores/appdetailsstore.d.ts +86 -0
  41. package/dist/globals/stores/appdetailsstore.js +1 -0
  42. package/dist/globals/stores/appinfostore.d.ts +56 -0
  43. package/dist/globals/stores/appinfostore.js +1 -0
  44. package/dist/globals/stores/appstore.d.ts +77 -0
  45. package/dist/globals/stores/appstore.js +1 -0
  46. package/dist/globals/stores/badgestore.d.ts +52 -0
  47. package/dist/globals/stores/badgestore.js +1 -0
  48. package/dist/globals/stores/collectionstore.d.ts +313 -0
  49. package/dist/globals/stores/collectionstore.js +143 -0
  50. package/dist/globals/stores/consolestore.d.ts +20 -0
  51. package/dist/globals/stores/consolestore.js +1 -0
  52. package/dist/globals/stores/focusnavcontroller.d.ts +383 -0
  53. package/dist/globals/stores/focusnavcontroller.js +29 -0
  54. package/dist/globals/stores/friendstore/clanstore.d.ts +75 -0
  55. package/dist/globals/stores/friendstore/clanstore.js +19 -0
  56. package/dist/globals/stores/friendstore/friendchat.d.ts +374 -0
  57. package/dist/globals/stores/friendstore/friendchat.js +56 -0
  58. package/dist/globals/stores/friendstore/friendgroupstore.d.ts +98 -0
  59. package/dist/globals/stores/friendstore/friendgroupstore.js +8 -0
  60. package/dist/globals/stores/friendstore/friendingamenotificationstore.d.ts +2 -0
  61. package/dist/globals/stores/friendstore/friendingamenotificationstore.js +1 -0
  62. package/dist/globals/stores/friendstore/friendslistfavoritesstore.d.ts +22 -0
  63. package/dist/globals/stores/friendstore/friendslistfavoritesstore.js +1 -0
  64. package/dist/globals/stores/friendstore/friendsuifriendstore.d.ts +125 -0
  65. package/dist/globals/stores/friendstore/friendsuifriendstore.js +1 -0
  66. package/dist/globals/stores/friendstore/index.d.ts +25 -0
  67. package/dist/globals/stores/friendstore/index.js +1 -0
  68. package/dist/globals/stores/friendstore/shared.d.ts +207 -0
  69. package/dist/globals/stores/friendstore/shared.js +41 -0
  70. package/dist/globals/stores/gamerecordingstore.d.ts +263 -0
  71. package/dist/globals/stores/gamerecordingstore.js +1 -0
  72. package/dist/globals/stores/index.d.ts +18 -0
  73. package/dist/globals/stores/index.js +18 -0
  74. package/dist/globals/stores/libraryuistore.d.ts +179 -0
  75. package/dist/globals/stores/libraryuistore.js +56 -0
  76. package/dist/globals/stores/localizationmanager.d.ts +18 -0
  77. package/dist/globals/stores/localizationmanager.js +1 -0
  78. package/dist/globals/stores/mainwindowbrowsermanager.d.ts +62 -0
  79. package/dist/globals/stores/mainwindowbrowsermanager.js +1 -0
  80. package/dist/globals/stores/notificationstore.d.ts +242 -0
  81. package/dist/globals/stores/notificationstore.js +20 -0
  82. package/dist/globals/stores/popupmanager.d.ts +128 -0
  83. package/dist/globals/stores/popupmanager.js +1 -0
  84. package/dist/globals/stores/securitystore.d.ts +35 -0
  85. package/dist/globals/stores/securitystore.js +1 -0
  86. package/dist/globals/stores/settingsstore.d.ts +86 -0
  87. package/dist/globals/stores/settingsstore.js +19 -0
  88. package/dist/globals/stores/steamuistore/gamepadbrowserview.d.ts +143 -0
  89. package/dist/globals/stores/steamuistore/gamepadbrowserview.js +9 -0
  90. package/dist/globals/stores/steamuistore/gamepaduiaudio.d.ts +36 -0
  91. package/dist/globals/stores/steamuistore/gamepaduiaudio.js +1 -0
  92. package/dist/globals/stores/steamuistore/index.d.ts +129 -0
  93. package/dist/globals/stores/steamuistore/index.js +11 -0
  94. package/dist/globals/stores/steamuistore/menu.d.ts +39 -0
  95. package/dist/globals/stores/steamuistore/menu.js +19 -0
  96. package/dist/globals/stores/steamuistore/window.d.ts +206 -0
  97. package/dist/globals/stores/steamuistore/window.js +6 -0
  98. package/dist/globals/stores/storeitemcache.d.ts +319 -0
  99. package/dist/globals/stores/storeitemcache.js +17 -0
  100. package/dist/globals/stores/urlstore.d.ts +57 -0
  101. package/dist/globals/stores/urlstore.js +1 -0
  102. package/dist/modules/Router.d.ts +5 -58
  103. package/dist/modules/Router.js +2 -20
  104. package/dist/tsconfig.tsbuildinfo +1 -1
  105. package/dist/utils/index.d.ts +0 -1
  106. package/dist/utils/react/treepatcher.js +7 -7
  107. package/package.json +1 -1
  108. package/src/components/Dialog.ts +1 -1
  109. package/src/components/Dropdown.tsx +2 -2
  110. package/src/components/FooterLegend.ts +10 -2
  111. package/src/components/Menu.ts +11 -21
  112. package/src/components/Modal.ts +40 -8
  113. package/src/globals/index.ts +45 -2
  114. package/src/globals/shared/cm.ts +158 -0
  115. package/src/globals/shared/enums.ts +97 -0
  116. package/src/globals/shared/history.ts +15 -0
  117. package/src/globals/shared/index.ts +5 -0
  118. package/src/globals/shared/interfaces.ts +147 -0
  119. package/src/globals/shared/navigation.ts +15 -0
  120. package/src/globals/shared/steamid.ts +49 -0
  121. package/src/globals/shared/storage.ts +62 -0
  122. package/src/globals/steam-client/App.ts +2 -2
  123. package/src/globals/steam-client/Auth.ts +2 -2
  124. package/src/globals/steam-client/ClientNotifications.ts +1 -1
  125. package/src/globals/steam-client/Overlay.ts +2 -1
  126. package/src/globals/steam-client/Screenshots.ts +1 -1
  127. package/src/globals/steam-client/Settings.ts +1 -1
  128. package/src/globals/steam-client/SharedConnection.ts +2 -1
  129. package/src/globals/steam-client/UI.ts +15 -6
  130. package/src/globals/steam-client/User.ts +20 -0
  131. package/src/globals/steam-client/WebChat.ts +3 -2
  132. package/src/globals/steam-client/shared.ts +0 -69
  133. package/src/globals/stores/app.ts +102 -0
  134. package/src/globals/stores/appdetailsstore.ts +235 -0
  135. package/src/globals/stores/appinfostore.ts +65 -0
  136. package/src/globals/stores/appstore.ts +166 -0
  137. package/src/globals/stores/badgestore.ts +87 -0
  138. package/src/globals/stores/collectionstore.ts +544 -0
  139. package/src/globals/stores/consolestore.ts +54 -0
  140. package/src/globals/stores/focusnavcontroller.ts +522 -0
  141. package/src/globals/stores/friendstore/clanstore.ts +89 -0
  142. package/src/globals/stores/friendstore/friendchat.ts +646 -0
  143. package/src/globals/stores/friendstore/friendgroupstore.ts +187 -0
  144. package/src/globals/stores/friendstore/friendingamenotificationstore.ts +1 -0
  145. package/src/globals/stores/friendstore/friendslistfavoritesstore.ts +37 -0
  146. package/src/globals/stores/friendstore/friendsuifriendstore.ts +274 -0
  147. package/src/globals/stores/friendstore/index.ts +58 -0
  148. package/src/globals/stores/friendstore/shared.ts +318 -0
  149. package/src/globals/stores/gamerecordingstore.ts +367 -0
  150. package/src/globals/stores/index.ts +18 -0
  151. package/src/globals/stores/libraryuistore.ts +395 -0
  152. package/src/globals/stores/localizationmanager.ts +56 -0
  153. package/src/globals/stores/mainwindowbrowsermanager.ts +135 -0
  154. package/src/globals/stores/notificationstore.ts +298 -0
  155. package/src/globals/stores/popupmanager.ts +352 -0
  156. package/src/globals/stores/securitystore.ts +36 -0
  157. package/src/globals/stores/settingsstore.ts +134 -0
  158. package/src/globals/stores/steamuistore/gamepadbrowserview.ts +172 -0
  159. package/src/globals/stores/steamuistore/gamepaduiaudio.ts +117 -0
  160. package/src/globals/stores/steamuistore/index.ts +212 -0
  161. package/src/globals/stores/steamuistore/menu.ts +89 -0
  162. package/src/globals/stores/steamuistore/window.ts +466 -0
  163. package/src/globals/stores/storeitemcache.ts +347 -0
  164. package/src/globals/stores/urlstore.ts +150 -0
  165. package/src/modules/Router.ts +11 -77
  166. package/src/utils/index.ts +0 -1
  167. package/src/utils/react/treepatcher.ts +9 -9
  168. package/dist/globals/SteamClient.d.ts +0 -5
  169. package/dist/globals/SteamClient.js +0 -1
  170. package/dist/globals/stores.d.ts +0 -70
  171. package/src/globals/SteamClient.ts +0 -6
  172. package/src/globals/stores.ts +0 -74
  173. /package/dist/globals/{stores.js → shared/cm.js} +0 -0
@@ -0,0 +1,347 @@
1
+ import type { ServiceTransport } from '../shared';
2
+ import type { EAppType, ESteamDeckCompatibilityCategory } from '../steam-client/App';
3
+ import type { ELanguage } from '../steam-client/Settings';
4
+ import type { EResult } from '../steam-client/shared';
5
+
6
+ // #region TODO(protobufs): generate
7
+ export enum ESteamOSCompatibilityCategory {
8
+ k_ESteamOSCompatibilityCategory_Unknown,
9
+ k_ESteamOSCompatibilityCategory_Unsupported,
10
+ k_ESteamOSCompatibilityCategory_Compatible,
11
+ }
12
+
13
+ export enum EStoreItemType {
14
+ k_EStoreItemType_Invalid = -1,
15
+ k_EStoreItemType_App,
16
+ k_EStoreItemType_Package,
17
+ k_EStoreItemType_Bundle,
18
+ k_EStoreItemType_Mtx,
19
+ k_EStoreItemType_Tag,
20
+ k_EStoreItemType_Creator,
21
+ k_EStoreItemType_HubCategory,
22
+ }
23
+
24
+ declare class StoreBrowseItemDataRequest {}
25
+ // #endregion
26
+
27
+ interface StoreItemAssets {
28
+ ConstructAssetURL(urlFormat: string, name: string): string | undefined;
29
+ GetCommunityIconURL(): string | undefined;
30
+ GetCommunityIconURL_Full(): string | undefined;
31
+ GetHeaderURL(): string | undefined;
32
+ GetHeroCapsuleURL(): string | undefined;
33
+ GetHeroCapsuleURL_2x(): string | undefined;
34
+ GetLibraryCapsuleURL(): string | undefined;
35
+ GetLibraryCapsuleURL_2x(): string | undefined;
36
+ GetLibraryHeroURL(): string | undefined;
37
+ GetLibraryHeroURL_2x(): string | undefined;
38
+ GetMainCapsuleURL(): string | undefined;
39
+ GetPackageHeaderURL(): string | undefined;
40
+ GetPageBackgroundURL(): string | undefined;
41
+ GetRawPageBackgroundURL(): string | undefined;
42
+ GetSmallCapsuleURL(): string | undefined;
43
+ }
44
+
45
+ export interface CStoreItem {
46
+ k_regexSalePage: RegExp;
47
+ m_Assets: StoreItemAssets | undefined;
48
+ m_AssetsWithoutOverrides: StoreItemAssets | undefined;
49
+ m_BasicInfo: {
50
+ developers: {
51
+ name: string;
52
+ }[];
53
+ franchises: {
54
+ creator_clan_account_id: number;
55
+ name: string;
56
+ }[];
57
+ publishers: {
58
+ creator_clan_account_id: number;
59
+ name: string;
60
+ }[];
61
+ short_description: string;
62
+ };
63
+ m_BestPurchaseOption: {
64
+ active_discounts: {
65
+ discount_amount: string;
66
+ discount_description: string;
67
+ discount_end_date: number;
68
+ }[];
69
+ discount_pct: number;
70
+ final_price_in_cents: string;
71
+ formatted_final_price: string;
72
+ formatted_original_price: string;
73
+ hide_discount_pct_for_compliance: boolean;
74
+ included_game_count: number;
75
+ original_price_in_cents: string;
76
+ packageid: number;
77
+ purchase_option_name: string;
78
+ user_can_purchase_as_gift: boolean;
79
+ };
80
+ m_ContentDescriptorIDs: any[];
81
+ m_DataRequested: {
82
+ include_assets: boolean;
83
+ include_basic_info: boolean;
84
+ include_tag_count: number;
85
+ };
86
+ m_Platforms: {
87
+ windows: boolean;
88
+ mac: boolean;
89
+ steamos_linux: boolean;
90
+ vr_support: {
91
+ vrhmd: boolean;
92
+ vrhmd_only: boolean;
93
+ htc_vive: boolean;
94
+ oculus_rift: boolean;
95
+ windows_mr: boolean;
96
+ valve_index: boolean;
97
+ };
98
+ steam_deck_compat_category: ESteamDeckCompatibilityCategory;
99
+ steam_os_compat_category: ESteamOSCompatibilityCategory;
100
+ };
101
+ m_RelatedItems: {
102
+ demo_appid: any[];
103
+ standalone_demo_appid: any[];
104
+ };
105
+ m_ReleaseInfo: any;
106
+ m_ReviewInfo: any;
107
+ m_Screenshots: any;
108
+ m_SelfPurchaseOption: any;
109
+ m_StoreCategories: {
110
+ controller_categoryids: number[];
111
+ feature_categoryids: number[];
112
+ supported_player_categoryids: number[];
113
+ };
114
+ m_Trailers: any;
115
+ m_bIsComingSoon: boolean;
116
+ m_bIsEarlyAccess: boolean;
117
+ m_bIsFree: boolean;
118
+ m_bIsFreeTemporary: boolean;
119
+ m_bVisible: boolean;
120
+ m_eAppType: EAppType;
121
+ m_eItemType: EStoreItemType;
122
+ m_freeWeekend: {};
123
+ m_rgIncludedAppIDs: any[];
124
+ m_rgIncludedAppTypes: any[];
125
+ m_rgLinks: any;
126
+ m_rgPurchaseOptions: any;
127
+ m_rgStoreTagIDs: any[];
128
+ m_rgStoreTags: any[];
129
+ m_rgSupportedLanguages: any;
130
+ m_strInternalName: string;
131
+ m_strName: string;
132
+ m_strStoreURLPath: string;
133
+ m_strStoreURLPathOverride: string;
134
+ m_unAppID: number;
135
+ m_unID: number;
136
+ m_userFilterFailure: any;
137
+
138
+ BCheckDataRequestIncluded(msg: StoreBrowseItemDataRequest): boolean;
139
+ BContainDataRequest(msg: StoreBrowseItemDataRequest): boolean;
140
+ BHasAgeSafeScreenshots(): boolean;
141
+ BHasDemo(): boolean;
142
+ BHasHighlightTrailers(param0: any): boolean;
143
+ BHasSomeLanguageSupport(lang: ELanguage): boolean;
144
+ BHasStoreCategory(category: number): boolean;
145
+ BHasTags(): boolean;
146
+ BHasTrailers(param0: any): boolean;
147
+ BIsAgeSafeScreenshot(param0: any): boolean;
148
+ BIsApplicationOrTool(): boolean;
149
+ BIsComingSoon(): boolean;
150
+ BIsCustomComingSoonDisplay(): boolean;
151
+ BIsEarlyAccess(): boolean;
152
+ BIsFree(): boolean;
153
+ BIsFreeTemporary(): boolean;
154
+ BIsFreeWeekend(): boolean;
155
+ BIsPrePurchase(): boolean;
156
+ BIsReleased(): boolean;
157
+ BIsSalePage(): boolean;
158
+ BIsVisible(): boolean;
159
+ BLimitedLaunchActive(): boolean;
160
+ GetAllCreatorClanIDs(): number[];
161
+ GetAllDeveloperCreatorClans(): number[];
162
+ GetAllFranchiseCreatorClans(): number[];
163
+ GetAllLanguagesWithSomeSupport(): any[];
164
+ GetAllPublisherCreatorClans(): number[];
165
+ GetAllPurchaseOptions(): this['m_rgPurchaseOptions'];
166
+ GetAllTrailers(): this['m_Trailers'];
167
+ GetAppID(): number;
168
+ GetAppIDToRun(): number;
169
+ GetAppType(): EAppType;
170
+ GetAssets(): this['m_Assets'];
171
+ GetAssetsWithoutOverrides(): this['m_AssetsWithoutOverrides'];
172
+ GetBestPurchaseOption(): this['m_BestPurchaseOption'];
173
+ GetBestPurchaseOriginalPriceFormatted(): string;
174
+ GetBestPurchaseOriginalPriceInCents(): number;
175
+ GetBestPurchasePriceFormatted(): string;
176
+ GetBestPurchasePriceInCents(): number;
177
+ GetCapsuleHeadline(): any;
178
+ GetCommunityDiscussionForumsURL(): string;
179
+ GetCommunityPageURL(): string;
180
+ GetContentDescriptorIDs(): any[];
181
+ GetDataRequest(): this['m_DataRequested'];
182
+ GetDemoAppIDs(): number[];
183
+ GetDemoStandaloneStorePageAppIDs(): number[];
184
+ GetDeveloperNames(): string[];
185
+ GetFilteredReviewSummary(): any;
186
+ GetFilteredReviewSummaryLanguage(): any;
187
+ GetFormattedSteamReleaseDate(): string;
188
+ GetFranchiseNames(): string[];
189
+ GetFreeWeekendEnd(): any;
190
+ GetFreeWeekendPlayTextOverride(): any;
191
+ GetID(): number;
192
+ GetIncludedAppIDs(): number[];
193
+ GetIncludedAppIDsOrSelf(): number[];
194
+ GetIncludedAppTypes(): EAppType[];
195
+ GetInternalName(): any;
196
+ GetLinks(): any;
197
+ GetMicroTrailer(e: any): any | null;
198
+ GetName(): string;
199
+ GetOriginalReleaseDateRTime(): any;
200
+ GetParentAppID(): number;
201
+ GetPlatforms(): this['m_Platforms'];
202
+ GetPublisherNames(): string[];
203
+ GetReleaseDateRTime(e?: boolean): number;
204
+ GetSalePageVanityURL(): string;
205
+ GetScreenshots(e: any): any[];
206
+ GetSelfPurchaseOption(): any;
207
+ GetShortDescription(): string;
208
+ GetStoreCategories_Controller(): number[];
209
+ GetStoreCategories_Features(): number[];
210
+ GetStoreCategories_SupportedPlayers(): number[];
211
+ GetStoreItemType(): EStoreItemType;
212
+ GetStorePageURL(demoPage?: boolean): string;
213
+ GetStorePageURLOverride(): string;
214
+ GetStorePageURLWithOverride(): string;
215
+ GetTagIDs(): any[];
216
+ GetTags(): any[];
217
+ GetUnfilteredReviewSummary(): any;
218
+ GetUniqueID(): string;
219
+ GetUserFilterFailure(): any;
220
+ HasContentDescriptorID(param0: any): boolean;
221
+ HasDemoStandaloneStorePage(): boolean;
222
+ MergeData(e: any, t: any): void;
223
+ ReplaceBestPurchaseOption(e: any): void;
224
+ }
225
+
226
+ export interface CStoreItemCache {
227
+ k_AlreadyResolvedBusy: Promise<EResult>;
228
+ k_AlreadyResolvedInvalid: Promise<EResult>;
229
+ k_AlreadyResolvedOK: Promise<EResult>;
230
+ k_QueueWaitUntilRequestMS: number;
231
+ k_nMaxBatchSize: number;
232
+ m_PendingInfoPromise: any;
233
+ m_PendingInfoResolve: any;
234
+ m_PendingTimer: any;
235
+ m_bActivelyResettingCache: boolean;
236
+ m_bInitialized: boolean;
237
+ m_bReturnUnavailableItems: boolean;
238
+ m_bUsePartnerAPI: boolean;
239
+ m_mapApps: Map<number, CStoreItem>;
240
+ m_mapAppsInFlight: Map<number, CStoreItem>;
241
+ m_mapBundleInFlight: Map<number, CStoreItem>;
242
+ m_mapBundles: Map<number, CStoreItem>;
243
+ m_mapCreators: Map<number, CStoreItem>;
244
+ m_mapCreatorsInFlight: Map<number, CStoreItem>;
245
+ m_mapHubCategories: Map<number, CStoreItem>;
246
+ m_mapHubCategoriesInFlight: Map<number, CStoreItem>;
247
+ m_mapPackageInFlight: Map<number, CStoreItem>;
248
+ m_mapPackages: Map<number, CStoreItem>;
249
+ m_mapTags: Map<number, CStoreItem>;
250
+ m_mapTagsInFlight: Map<number, CStoreItem>;
251
+ m_serviceTransport: ServiceTransport;
252
+ m_setPendingAppInfo: Set<number>;
253
+ m_setPendingBundleInfo: Set<number>;
254
+ m_setPendingCreatorInfo: Set<number>;
255
+ m_setPendingDataRequest: Set<number>;
256
+ m_setPendingHubCategoryInfo: Set<number>;
257
+ m_setPendingPackageInfo: Set<number>;
258
+ m_setPendingTagInfo: Set<number>;
259
+ m_setUnavailableApps: Set<number>;
260
+ m_setUnavailableBundles: Set<number>;
261
+ m_setUnavailableCreators: Set<number>;
262
+ m_setUnavailableDueToCountryRestrictionApps: Set<number>;
263
+ m_setUnavailableDueToCountryRestrictionBundles: Set<number>;
264
+ m_setUnavailableDueToCountryRestrictionPackages: Set<number>;
265
+ m_setUnavailableHubCategories: Set<number>;
266
+ m_setUnavailablePackages: Set<number>;
267
+ m_setUnavailableTags: Set<number>;
268
+
269
+ BHasApp(appid: number, msg: StoreBrowseItemDataRequest): boolean;
270
+ BHasBundle(appid: number, msg: StoreBrowseItemDataRequest): boolean;
271
+ BHasCreator(appid: number, msg: StoreBrowseItemDataRequest): boolean;
272
+ BHasHubCategory(appid: number, msg: StoreBrowseItemDataRequest): boolean;
273
+ BHasPackage(appid: number, msg: StoreBrowseItemDataRequest): boolean;
274
+ BHasStoreItem(appid: number, type: EStoreItemType, msg: StoreBrowseItemDataRequest): boolean;
275
+ BHasTag(appid: number, msg: StoreBrowseItemDataRequest): boolean;
276
+ BIsAppMissing(appid: number): boolean;
277
+ BIsAppUnavailableDueToCountryRestriction(appid: number): boolean;
278
+ BIsBundleMissing(appid: number): boolean;
279
+ BIsBundleUnavailableDueToCountryRestriction(appid: number): boolean;
280
+ BIsCreatorMissing(appid: number): boolean;
281
+ BIsHubCategoryMissing(appid: number): boolean;
282
+ BIsPackageMissing(appid: number): boolean;
283
+ BIsPackageUnavailableDueToCountryRestriction(appid: number): boolean;
284
+ BIsStoreItemMissing(appid: number, type: EStoreItemType): boolean;
285
+ BIsStoreItemUnavailableDueToCountryRestriction(appid: number, type: EStoreItemType): boolean;
286
+ BIsTagMissing(appid: number): boolean;
287
+ FlushPendingInfo(): Promise<void>;
288
+ GetApp(appid: number): CStoreItem;
289
+ GetBundle(appid: number): CStoreItem;
290
+ GetCreator(appid: number): CStoreItem;
291
+ GetHubCategory(appid: number): CStoreItem;
292
+ GetMapForType(appid: number, type: EStoreItemType): Map<number, CStoreItem>;
293
+ GetPackage(appid: number): CStoreItem;
294
+ /** return type not a mistake, actually valve */
295
+ GetPreviousSupersetLoadPromise(
296
+ appid: number,
297
+ type: EStoreItemType,
298
+ msg: StoreBrowseItemDataRequest,
299
+ ): Promise<EResult> | null;
300
+ GetReturnUnavailableItems(): boolean;
301
+ GetServiceTransport(): ServiceTransport;
302
+ GetStoreItem(appid: number, type: EStoreItemType): CStoreItem;
303
+ GetStoreItemDataRequest(appid: number, type: EStoreItemType): CStoreItem['m_DataRequested'] | null;
304
+ GetStoreItemWithLegacyVisibilityCheck(appid: number, type: EStoreItemType): CStoreItem | undefined;
305
+ GetTag(appid: number): CStoreItem;
306
+ HintLoadStoreApps(apps: number[], msg: StoreBrowseItemDataRequest): Promise<EResult | undefined>;
307
+ HintLoadStoreBundles(bundles: number[], msg: StoreBrowseItemDataRequest): Promise<EResult | undefined>;
308
+ HintLoadStoreItems(
309
+ apps: number[] | null,
310
+ packages: number[] | null,
311
+ bundles: number[] | null,
312
+ tags: number[] | null,
313
+ creators: number[] | null,
314
+ hubCategories: number[] | null,
315
+ msg: StoreBrowseItemDataRequest,
316
+ ): Promise<EResult | undefined>;
317
+ HintLoadStorePackages(packages: number[], msg: StoreBrowseItemDataRequest): Promise<EResult | undefined>;
318
+ /** StoreItemID & StoreBrowseItemDataRequest proto messages respectively */
319
+ InternalHandleLoadStoreItems(msg1: any, msg2: StoreBrowseItemDataRequest): Promise<any>;
320
+ /** @param msg StoreItemID proto message */
321
+ MarkStoreItemIDUnavailable(msgs: any[]): void;
322
+ QueueAppRequest(appid: number, msg: StoreBrowseItemDataRequest): Promise<EResult>;
323
+ QueueBundleRequest(appid: number, msg: StoreBrowseItemDataRequest): Promise<EResult>;
324
+ QueueCreatorRequest(appid: number, msg: StoreBrowseItemDataRequest): Promise<EResult>;
325
+ QueueHubCategoryRequest(appid: number, msg: StoreBrowseItemDataRequest): Promise<EResult>;
326
+ QueueMultipleAppRequests(appids: number[], msg: StoreBrowseItemDataRequest): Promise<EResult>;
327
+ QueueMultipleBundleRequests(appids: number[], msg: StoreBrowseItemDataRequest): Promise<EResult>;
328
+ QueueMultipleCreatorRequests(appids: number[], msg: StoreBrowseItemDataRequest): Promise<EResult>;
329
+ QueueMultipleHubCategoryRequests(appids: number[], msg: StoreBrowseItemDataRequest): Promise<EResult>;
330
+ QueueMultiplePackageRequests(appids: number[], msg: StoreBrowseItemDataRequest): Promise<EResult>;
331
+ QueueMultipleStoreItemRequests(
332
+ appids: number[],
333
+ type: EStoreItemType,
334
+ msg: StoreBrowseItemDataRequest,
335
+ ): Promise<EResult>;
336
+ QueueMultipleTagRequests(appids: number[], msg: StoreBrowseItemDataRequest): Promise<EResult>;
337
+ QueuePackageRequest(appid: number, msg: StoreBrowseItemDataRequest): Promise<EResult>;
338
+ QueueStoreItemRequest(appid: number, type: EStoreItemType, msg: StoreBrowseItemDataRequest): Promise<EResult>;
339
+ QueueTagRequest(appid: number, msg: StoreBrowseItemDataRequest): Promise<EResult>;
340
+ ReadResults(e: any[], t: any): any[];
341
+ ResetCache(): Promise<void>;
342
+ SetReturnUnavailableItems(value: boolean): void;
343
+ SetServiceTransport(value: ServiceTransport): void;
344
+ SetSteamInterface(value: any): void;
345
+ /** @param msg StoreItemID proto message */
346
+ SortStoreItems(msg: StoreBrowseItemDataRequest): any;
347
+ }
@@ -0,0 +1,150 @@
1
+ import type { EParentalFeature } from '../steam-client/Parental';
2
+ import type { SteamWebURL_t } from '../steam-client/URL';
3
+
4
+ type SteamURLs_t = {
5
+ [url in SteamWebURL_t]: { feature: EParentalFeature; regexMatchURL: RegExp; url: string };
6
+ };
7
+ type SteamURLsLowercase_t = {
8
+ [url in Lowercase<SteamWebURL_t>]: { bDuplicate: boolean; feature: EParentalFeature; url: string };
9
+ };
10
+
11
+ export interface CURLStore {
12
+ m_nGeneration: number;
13
+ m_steamUrls: SteamURLs_t & SteamURLsLowercase_t;
14
+
15
+ /**
16
+ * @returns `true` if the URL's domain matches either store, community, or
17
+ * help domains.
18
+ * @example
19
+ * ```js
20
+ * urlStore.BIsSteamURL('https://google.com')
21
+ * // false
22
+ * urlStore.BIsSteamURL('https://store.steampowered.com')
23
+ * // true
24
+ * ```
25
+ */
26
+ BIsSteamURL(url: string): boolean;
27
+
28
+ /**
29
+ * @returns the game's points shop URL.
30
+ */
31
+ BuildAppPointsShopURL(appId: number): string;
32
+
33
+ /**
34
+ * Like {@link BuildLibraryAssetURL}, but relative to
35
+ * `https://steamloopback.host`.
36
+ *
37
+ * @param appId Game's app ID.
38
+ * @param assetName e.g. `header.png`, `icon.jpg`, `library_hero`.
39
+ * @param timestamp UNIX timestamp.
40
+ */
41
+ BuildCachedLibraryAssetURL(appId: number, assetName: string, timestamp: number): string;
42
+
43
+ /**
44
+ * Like {@link BuildStoreAssetURL}, but relative to
45
+ * `https://steamloopback.host`.
46
+ *
47
+ * @param appId Game's app ID.
48
+ * @param assetName e.g. `header.png`, `icon.jpg`, `library_hero`.
49
+ * @param timestamp UNIX timestamp.
50
+ */
51
+ BuildCachedStoreAssetURL(appId: number, assetName: string, timestamp: number): string;
52
+
53
+ BuildCustomAssetURL(appId: number, assetName: string, extension: string, timestamp: number): string;
54
+
55
+ /**
56
+ * Like {@link BuildLibraryAssetURL}, but relative to
57
+ * `https://steamloopback.host`.
58
+ *
59
+ * It's very unlikely you will have to use this, prefer
60
+ * {@link BuildCachedLibraryAssetURL} instead.
61
+ *
62
+ * @param appId Game's app ID.
63
+ * @param icon e.g. `header.png`, `icon.jpg`, `library_hero`.
64
+ * @param timestamp UNIX timestamp.
65
+ */
66
+ BuildLegacyCachedLibraryAssetURL(appId: number, icon: string, timestamp: number): string;
67
+
68
+ /**
69
+ * @param appId Game's app ID.
70
+ * @param icon e.g. `header.png`, `icon.jpg`, `library_hero`.
71
+ * @param timestamp UNIX timestamp.
72
+ */
73
+ BuildLibraryAssetURL(appId: number, icon: string, timestamp: number): string;
74
+
75
+ /**
76
+ * Returns a Steam URL, e.g. `steam://url/SteamIDPage/{steamid64}`.
77
+ *
78
+ * @param name The URL to return.
79
+ * @param args Arguments to replace `%p1`, `%p2`, etc. with.
80
+ */
81
+ BuildSteamURL(name: SteamWebURL_t, ...args: string[]): string;
82
+
83
+ /**
84
+ * @param navParam Likely a tracking param to see where you clicked the link.
85
+ */
86
+ BuildStoreAppDlcURL(appId: number, navParam: string): string;
87
+
88
+ /**
89
+ * @param navParam Likely a tracking param to see where you clicked the link.
90
+ */
91
+ BuildStoreAppURL(appId: number, navParam: string): string;
92
+
93
+ BuildStoreAssetURL(appId: number, assetName: string): string;
94
+
95
+ GetAvatarBaseURL(): string;
96
+ GetBaseURLSharedCDN(): string;
97
+ GetClanCDNAssetURL(): string;
98
+ GetCommunityCDNAssetURL(): string;
99
+ GetCommunityCDNURL(): string;
100
+ GetCommunityImageURL(): string;
101
+ GetCommunityURL(): string;
102
+ GetHelpURL(): string;
103
+
104
+ /**
105
+ * Despite the name, only takes one argument and returns the first URL as an
106
+ * array.
107
+ *
108
+ * @example
109
+ * ```js
110
+ * urlStore.GetMatchingUrls('https://store.steampowered.com')[0].urlid
111
+ * // StoreFrontPage
112
+ * urlStore.m_steamUrls.StoreFrontPage.url
113
+ * // "https://store.steampowered.com/"
114
+ * ```
115
+ */
116
+ GetMatchingUrls(url: string): {
117
+ length: number;
118
+ urlid: SteamWebURL_t;
119
+ }[];
120
+
121
+ GetMediaCDNUrl(): string;
122
+ GetParentalFeature(name: SteamWebURL_t): EParentalFeature;
123
+ GetParentalFeatureForFullUrl(url: string): EParentalFeature;
124
+
125
+ GetStoreAppImageURL(): string;
126
+ GetStoreCDNURL(): string;
127
+ GetStoreGreatOnDeckURL(): string;
128
+ GetStoreIconBaseURL(): string;
129
+ GetStoreURL(): string;
130
+ GetStoreVRURL(): string;
131
+ GetVideoCDNAssetURL(): string;
132
+ GetWebApiURL(): string;
133
+
134
+ /**
135
+ * Navigates to given Steam URL from a provided event.
136
+ *
137
+ * @param ev Event to get the targetted window for.
138
+ * @param name The Steam URL to navigate to.
139
+ * @param args Arguments to replace `%p1`, `%p2`, etc. with.
140
+ */
141
+ NavigateToSteamURLInOwningWindow(ev: Event, name: SteamWebURL_t): void;
142
+
143
+ /**
144
+ * Resolves a Steam URL.
145
+ *
146
+ * @param name The URL to return.
147
+ * @param args Arguments to replace `%p1`, `%p2`, etc. with.
148
+ */
149
+ ResolveURL(name: SteamWebURL_t, ...args: string[]): string;
150
+ }
@@ -1,79 +1,13 @@
1
- import Logger from '../logger';
2
- import { Export, findModuleExport } from '../webpack';
3
- import {EDisplayStatus} from "../globals/steam-client/App";
1
+ import type { CSteamUIStore } from "../globals/stores/steamuistore";
2
+ import type { EQuickAccessTab, ESideMenu } from "../globals/stores/steamuistore/menu";
3
+ import type { SteamUIWindowInstance } from "../globals/stores/steamuistore/window";
4
+ import Logger from "../logger";
5
+ import { type Export, findModuleExport } from "../webpack";
4
6
 
5
- export enum SideMenu {
6
- None,
7
- Main,
8
- QuickAccess,
9
- }
10
-
11
- export enum QuickAccessTab {
12
- Notifications,
13
- RemotePlayTogetherControls,
14
- VoiceChat,
15
- Friends,
16
- Settings,
17
- Perf,
18
- Help,
19
- Music,
20
- Decky = 999,
21
- }
22
-
23
- export type AppOverview = {
24
- appid: string;
25
- display_name: string;
26
- display_status: EDisplayStatus;
27
- sort_as: string;
28
- };
29
-
30
- export interface MenuStore {
31
- OpenSideMenu(sideMenu: SideMenu): void;
32
- OpenQuickAccessMenu(quickAccessTab?: QuickAccessTab): void;
33
- OpenMainMenu(): void;
34
- }
35
-
36
- export interface WindowRouter {
37
- BrowserWindow: Window;
38
- MenuStore: MenuStore;
39
- Navigate(path: string): void;
40
- NavigateToChat(): void;
41
- NavigateToSteamWeb(url: string): void;
42
- NavigateBack(): void;
43
- }
44
-
45
- export interface WindowStore {
46
- GamepadUIMainWindowInstance?: WindowRouter; // Current
47
- SteamUIWindows: WindowRouter[];
48
- OverlayWindows: WindowRouter[]; // Used by desktop GamepadUI
49
- }
50
-
51
- export interface Router {
52
- WindowStore?: WindowStore;
53
- /** @deprecated use {@link Navigation} instead */
54
- CloseSideMenus(): void;
55
- /** @deprecated use {@link Navigation} instead */
56
- Navigate(path: string): void;
57
- /** @deprecated use {@link Navigation} instead */
58
- NavigateToAppProperties(): void;
59
- /** @deprecated use {@link Navigation} instead */
60
- NavigateToExternalWeb(url: string): void;
61
- /** @deprecated use {@link Navigation} instead */
62
- NavigateToInvites(): void;
63
- /** @deprecated use {@link Navigation} instead */
64
- NavigateToChat(): void;
65
- /** @deprecated use {@link Navigation} instead */
66
- NavigateToLibraryTab(): void;
67
- /** @deprecated use {@link Navigation} instead */
68
- NavigateToLayoutPreview(e: unknown): void;
69
- /** @deprecated use {@link Navigation} instead */
70
- OpenPowerMenu(unknown?: any): void;
71
- get RunningApps(): AppOverview[];
72
- get MainRunningApp(): AppOverview | undefined;
73
- }
74
-
75
- export const Router = findModuleExport((e: Export) => e.Navigate && e.NavigationManager) as Router;
7
+ // TODO(globals): maybe just use window.SteamUIStore ? it"s the exact same thing
8
+ export const Router = findModuleExport((e: Export) => e.Navigate && e.NavigationManager) as CSteamUIStore;
76
9
 
10
+ // TODO(globals): replace with MenuStore, etc. ?
77
11
  export interface Navigation {
78
12
  Navigate(path: string): void;
79
13
  NavigateBack(): void;
@@ -84,8 +18,8 @@ export interface Navigation {
84
18
  NavigateToLibraryTab(): void;
85
19
  NavigateToLayoutPreview(e: unknown): void;
86
20
  NavigateToSteamWeb(url: string): void;
87
- OpenSideMenu(sideMenu: SideMenu): void;
88
- OpenQuickAccessMenu(quickAccessTab?: QuickAccessTab): void;
21
+ OpenSideMenu(sideMenu: ESideMenu): void;
22
+ OpenQuickAccessMenu(quickAccessTab?: EQuickAccessTab): void;
89
23
  OpenMainMenu(): void;
90
24
  OpenPowerMenu(unknown?: any): void;
91
25
  /** if calling this to perform navigation, call it after Navigate to prevent a race condition in desktop Big Picture mode that hides the overlay unintentionally */
@@ -99,7 +33,7 @@ const logger = new Logger("Navigation");
99
33
  try {
100
34
  function createNavigationFunction(fncName: string, handler?: (win: any) => any) {
101
35
  return (...args: any) => {
102
- let win: WindowRouter | undefined;
36
+ let win: SteamUIWindowInstance | undefined;
103
37
  try {
104
38
  win = window.SteamUIStore.GetFocusedWindowInstance();
105
39
  } catch (e) {
@@ -5,7 +5,6 @@ export * from './react/fc';
5
5
  export * from './react/treepatcher';
6
6
 
7
7
  declare global {
8
- var FocusNavController: any;
9
8
  var GamepadNavTree: any;
10
9
  }
11
10
 
@@ -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
- loggingEnabled && logger.debug('Patching forwardref/memo');
39
- wrapReactType(node, prop);
40
- // Step down the object
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;
@@ -1,5 +0,0 @@
1
- import { SteamClient } from "./steam-client";
2
- export * from "./steam-client/shared";
3
- declare global {
4
- var SteamClient: SteamClient;
5
- }
@@ -1 +0,0 @@
1
- export * from "./steam-client/shared";