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 | |
|---|---|---|---|
|
|
18ce1ad790 | ||
|
|
5a074b5bb6 | ||
|
|
d3b87b26c5 | ||
|
|
b64dd9f723 | ||
|
|
82214fef4c | ||
|
|
e559a43af9 | ||
|
|
c53d7f8448 | ||
|
|
68a46263a4 | ||
|
|
56e7b2c492 | ||
|
|
1282636b0b | ||
|
|
2343274a5b | ||
|
|
f965c05c27 | ||
|
|
f8c8ae7c29 | ||
|
|
3085efd439 | ||
|
|
db8d91a7ff | ||
|
|
2091daaeac |
15
CHANGELOG.md
15
CHANGELOG.md
@@ -1,3 +1,18 @@
|
||||
# [3.19.0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.11...v3.19.0) (2023-02-22)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* added reorderable list and updated fieldProps ([#57](https://github.com/SteamDeckHomebrew/decky-frontend-lib/issues/57)) ([5a074b5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/5a074b5bb68c675c484a7b693f67a67488be9bcf))
|
||||
|
||||
## [3.18.11](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.10...v3.18.11) (2023-02-18)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **Navigation:** fix NavigateToExternalWeb ([82214fe](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/82214fef4c0a383776631fbb754550fe69f9000d))
|
||||
* **Navigation:** fix NavigateToExternalWeb ([c53d7f8](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/c53d7f8448d8aad76dc699f1f309bdd547ee14df))
|
||||
|
||||
## [3.18.10](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.9...v3.18.10) (2023-01-17)
|
||||
|
||||
|
||||
|
||||
10
package.json
10
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "decky-frontend-lib",
|
||||
"version": "3.18.10",
|
||||
"version": "3.19.0",
|
||||
"description": "A library for building decky plugins",
|
||||
"main": "dist/index.js",
|
||||
"types": "dist/index.d.ts",
|
||||
@@ -9,7 +9,7 @@
|
||||
"scripts": {
|
||||
"build": "shx rm -rf dist && tsc -b",
|
||||
"dev": "tsc -b -w",
|
||||
"docs": "typedoc --tsconfig ./tsconfig.json src/**/*",
|
||||
"docs": "typedoc --theme wiki-js --tsconfig ./tsconfig.json src/**/*",
|
||||
"test": "echo 'No tests for now!'",
|
||||
"prepare": "husky install",
|
||||
"commit": "git-cz"
|
||||
@@ -59,11 +59,11 @@
|
||||
"semantic-release": "^19.0.3",
|
||||
"shx": "^0.3.4",
|
||||
"ts-jest": "^27.1.4",
|
||||
"typedoc": "^0.23.15",
|
||||
"typedoc-plugin-markdown": "^3.13.6",
|
||||
"typedoc": "^0.23.24",
|
||||
"typedoc-plugin-mdn-links": "^2.0.0",
|
||||
"typedoc-plugin-missing-exports": "^1.0.0",
|
||||
"typescript": "^4.6.3"
|
||||
"typedoc-wikijs-theme": "^1.0.5",
|
||||
"typescript": "^4.9.5"
|
||||
},
|
||||
"pnpm": {
|
||||
"peerDependencyRules": {
|
||||
|
||||
307
pnpm-lock.yaml
generated
307
pnpm-lock.yaml
generated
@@ -19,11 +19,11 @@ specifiers:
|
||||
semantic-release: ^19.0.3
|
||||
shx: ^0.3.4
|
||||
ts-jest: ^27.1.4
|
||||
typedoc: ^0.23.15
|
||||
typedoc-plugin-markdown: ^3.13.6
|
||||
typedoc: ^0.23.24
|
||||
typedoc-plugin-mdn-links: ^2.0.0
|
||||
typedoc-plugin-missing-exports: ^1.0.0
|
||||
typescript: ^4.6.3
|
||||
typedoc-wikijs-theme: ^1.0.5
|
||||
typescript: ^4.9.5
|
||||
|
||||
devDependencies:
|
||||
'@commitlint/cli': 17.0.2
|
||||
@@ -43,12 +43,12 @@ devDependencies:
|
||||
prettier-plugin-import-sort: 0.0.7_prettier@2.7.1
|
||||
semantic-release: 19.0.3
|
||||
shx: 0.3.4
|
||||
ts-jest: 27.1.4_ibhx3ehxrt2kgmkik4bkzmyeei
|
||||
typedoc: 0.23.15_typescript@4.6.4
|
||||
typedoc-plugin-markdown: 3.13.6_typedoc@0.23.15
|
||||
typedoc-plugin-mdn-links: 2.0.0_typedoc@0.23.15
|
||||
typedoc-plugin-missing-exports: 1.0.0_typedoc@0.23.15
|
||||
typescript: 4.6.4
|
||||
ts-jest: 27.1.4_nrlewyunxfyvapgcwhbeszaybu
|
||||
typedoc: 0.23.24_typescript@4.9.5
|
||||
typedoc-plugin-mdn-links: 2.0.0_typedoc@0.23.24
|
||||
typedoc-plugin-missing-exports: 1.0.0_typedoc@0.23.24
|
||||
typedoc-wikijs-theme: 1.0.5_typedoc@0.23.24
|
||||
typescript: 4.9.5
|
||||
|
||||
packages:
|
||||
|
||||
@@ -419,6 +419,15 @@ packages:
|
||||
ajv: 6.12.6
|
||||
dev: true
|
||||
|
||||
/@commitlint/config-validator/17.4.0:
|
||||
resolution: {integrity: sha512-Sa/+8KNpDXz4zT4bVbz2fpFjvgkPO6u2V2fP4TKgt6FjmOw2z3eEX859vtfeaTav/ukBw0/0jr+5ZTZp9zCBhA==}
|
||||
engines: {node: '>=v14'}
|
||||
dependencies:
|
||||
'@commitlint/types': 17.4.0
|
||||
ajv: 8.12.0
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@commitlint/cz-commitlint/17.0.0_commitizen@4.2.4:
|
||||
resolution: {integrity: sha512-Cq5rb3pUJRIp8M17/w8iUmDup/7KOZVt3OSDa3LKym9y9Y7/7MhiOHfWvTYcMJIOYT7TRbxVycbVvx5hPPjZ/A==}
|
||||
engines: {node: '>=v14'}
|
||||
@@ -451,6 +460,12 @@ packages:
|
||||
engines: {node: '>=v14'}
|
||||
dev: true
|
||||
|
||||
/@commitlint/execute-rule/17.4.0:
|
||||
resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==}
|
||||
engines: {node: '>=v14'}
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@commitlint/format/17.0.0:
|
||||
resolution: {integrity: sha512-MZzJv7rBp/r6ZQJDEodoZvdRM0vXu1PfQvMTNWFb8jFraxnISMTnPBWMMjr2G/puoMashwaNM//fl7j8gGV5lA==}
|
||||
engines: {node: '>=v14'}
|
||||
@@ -488,15 +503,39 @@ packages:
|
||||
'@types/node': 17.0.33
|
||||
chalk: 4.1.2
|
||||
cosmiconfig: 7.0.1
|
||||
cosmiconfig-typescript-loader: 2.0.1_2e3zkt3gzqz6r43dj4x46rot3i
|
||||
cosmiconfig-typescript-loader: 2.0.1_2pb7oj3w6ri7fljxteglruehxe
|
||||
lodash: 4.17.21
|
||||
resolve-from: 5.0.0
|
||||
typescript: 4.6.4
|
||||
typescript: 4.9.5
|
||||
transitivePeerDependencies:
|
||||
- '@swc/core'
|
||||
- '@swc/wasm'
|
||||
dev: true
|
||||
|
||||
/@commitlint/load/17.4.2:
|
||||
resolution: {integrity: sha512-Si++F85rJ9t4hw6JcOw1i2h0fdpdFQt0YKwjuK4bk9KhFjyFkRxvR3SB2dPaMs+EwWlDrDBGL+ygip1QD6gmPw==}
|
||||
engines: {node: '>=v14'}
|
||||
dependencies:
|
||||
'@commitlint/config-validator': 17.4.0
|
||||
'@commitlint/execute-rule': 17.4.0
|
||||
'@commitlint/resolve-extends': 17.4.0
|
||||
'@commitlint/types': 17.4.0
|
||||
'@types/node': 17.0.33
|
||||
chalk: 4.1.2
|
||||
cosmiconfig: 8.0.0
|
||||
cosmiconfig-typescript-loader: 4.3.0_fbkf72l7lgqvhdmgtmwxouknwy
|
||||
lodash.isplainobject: 4.0.6
|
||||
lodash.merge: 4.6.2
|
||||
lodash.uniq: 4.5.0
|
||||
resolve-from: 5.0.0
|
||||
ts-node: 10.9.1_2pb7oj3w6ri7fljxteglruehxe
|
||||
typescript: 4.9.5
|
||||
transitivePeerDependencies:
|
||||
- '@swc/core'
|
||||
- '@swc/wasm'
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@commitlint/message/17.0.0:
|
||||
resolution: {integrity: sha512-LpcwYtN+lBlfZijHUdVr8aNFTVpHjuHI52BnfoV01TF7iSLnia0jttzpLkrLmI8HNQz6Vhr9UrxDWtKZiMGsBw==}
|
||||
engines: {node: '>=v14'}
|
||||
@@ -533,6 +572,19 @@ packages:
|
||||
resolve-global: 1.0.0
|
||||
dev: true
|
||||
|
||||
/@commitlint/resolve-extends/17.4.0:
|
||||
resolution: {integrity: sha512-3JsmwkrCzoK8sO22AzLBvNEvC1Pmdn/65RKXzEtQMy6oYMl0Snrq97a5bQQEFETF0VsvbtUuKttLqqgn99OXRQ==}
|
||||
engines: {node: '>=v14'}
|
||||
dependencies:
|
||||
'@commitlint/config-validator': 17.4.0
|
||||
'@commitlint/types': 17.4.0
|
||||
import-fresh: 3.3.0
|
||||
lodash.mergewith: 4.6.2
|
||||
resolve-from: 5.0.0
|
||||
resolve-global: 1.0.0
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@commitlint/rules/17.0.0:
|
||||
resolution: {integrity: sha512-45nIy3dERKXWpnwX9HeBzK5SepHwlDxdGBfmedXhL30fmFCkJOdxHyOJsh0+B0RaVsLGT01NELpfzJUmtpDwdQ==}
|
||||
engines: {node: '>=v14'}
|
||||
@@ -563,6 +615,14 @@ packages:
|
||||
chalk: 4.1.2
|
||||
dev: true
|
||||
|
||||
/@commitlint/types/17.4.0:
|
||||
resolution: {integrity: sha512-2NjAnq5IcxY9kXtUeO2Ac0aPpvkuOmwbH/BxIm36XXK5LtWFObWJWjXOA+kcaABMrthjWu6la+FUpyYFMHRvbA==}
|
||||
engines: {node: '>=v14'}
|
||||
dependencies:
|
||||
chalk: 4.1.2
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@cspotcode/source-map-support/0.8.1:
|
||||
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
|
||||
engines: {node: '>=12'}
|
||||
@@ -1097,6 +1157,16 @@ packages:
|
||||
resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==}
|
||||
dev: true
|
||||
|
||||
/@tsconfig/node10/1.0.9:
|
||||
resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==}
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@tsconfig/node12/1.0.11:
|
||||
resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@tsconfig/node12/1.0.9:
|
||||
resolution: {integrity: sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==}
|
||||
dev: true
|
||||
@@ -1105,10 +1175,20 @@ packages:
|
||||
resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==}
|
||||
dev: true
|
||||
|
||||
/@tsconfig/node14/1.0.3:
|
||||
resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@tsconfig/node16/1.0.2:
|
||||
resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==}
|
||||
dev: true
|
||||
|
||||
/@tsconfig/node16/1.0.3:
|
||||
resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==}
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@types/babel__core/7.1.19:
|
||||
resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==}
|
||||
dependencies:
|
||||
@@ -1268,6 +1348,13 @@ packages:
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/acorn/8.8.2:
|
||||
resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/agent-base/6.0.2:
|
||||
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
|
||||
engines: {node: '>= 6.0.0'}
|
||||
@@ -1294,6 +1381,16 @@ packages:
|
||||
uri-js: 4.4.1
|
||||
dev: true
|
||||
|
||||
/ajv/8.12.0:
|
||||
resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
|
||||
dependencies:
|
||||
fast-deep-equal: 3.1.3
|
||||
json-schema-traverse: 1.0.0
|
||||
require-from-string: 2.0.2
|
||||
uri-js: 4.4.1
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/ansi-escapes/3.2.0:
|
||||
resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==}
|
||||
engines: {node: '>=4'}
|
||||
@@ -1369,6 +1466,11 @@ packages:
|
||||
sprintf-js: 1.0.3
|
||||
dev: true
|
||||
|
||||
/argparse/2.0.1:
|
||||
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/argv-formatter/1.0.0:
|
||||
resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==}
|
||||
dev: true
|
||||
@@ -1793,8 +1895,8 @@ packages:
|
||||
engines: {node: '>=10'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
is-text-path: 1.0.1
|
||||
JSONStream: 1.3.5
|
||||
is-text-path: 1.0.1
|
||||
lodash: 4.17.21
|
||||
meow: 8.1.2
|
||||
split2: 3.2.2
|
||||
@@ -1811,7 +1913,7 @@ packages:
|
||||
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
|
||||
dev: true
|
||||
|
||||
/cosmiconfig-typescript-loader/2.0.1_2e3zkt3gzqz6r43dj4x46rot3i:
|
||||
/cosmiconfig-typescript-loader/2.0.1_2pb7oj3w6ri7fljxteglruehxe:
|
||||
resolution: {integrity: sha512-B9s6sX/omXq7I6gC6+YgLmrBFMJhPWew7ty/X5Tuwtd2zOSgWaUdXjkuVwbe3qqcdETo60+1nSVMekq//LIXVA==}
|
||||
engines: {node: '>=12', npm: '>=6'}
|
||||
peerDependencies:
|
||||
@@ -1820,13 +1922,29 @@ packages:
|
||||
dependencies:
|
||||
'@types/node': 17.0.33
|
||||
cosmiconfig: 7.0.1
|
||||
ts-node: 10.8.1_2e3zkt3gzqz6r43dj4x46rot3i
|
||||
typescript: 4.6.4
|
||||
ts-node: 10.8.1_2pb7oj3w6ri7fljxteglruehxe
|
||||
typescript: 4.9.5
|
||||
transitivePeerDependencies:
|
||||
- '@swc/core'
|
||||
- '@swc/wasm'
|
||||
dev: true
|
||||
|
||||
/cosmiconfig-typescript-loader/4.3.0_fbkf72l7lgqvhdmgtmwxouknwy:
|
||||
resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==}
|
||||
engines: {node: '>=12', npm: '>=6'}
|
||||
peerDependencies:
|
||||
'@types/node': '*'
|
||||
cosmiconfig: '>=7'
|
||||
ts-node: '>=10'
|
||||
typescript: '>=3'
|
||||
dependencies:
|
||||
'@types/node': 17.0.33
|
||||
cosmiconfig: 8.0.0
|
||||
ts-node: 10.9.1_2pb7oj3w6ri7fljxteglruehxe
|
||||
typescript: 4.9.5
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/cosmiconfig/5.2.1:
|
||||
resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==}
|
||||
engines: {node: '>=4'}
|
||||
@@ -1848,6 +1966,17 @@ packages:
|
||||
yaml: 1.10.2
|
||||
dev: true
|
||||
|
||||
/cosmiconfig/8.0.0:
|
||||
resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==}
|
||||
engines: {node: '>=14'}
|
||||
dependencies:
|
||||
import-fresh: 3.3.0
|
||||
js-yaml: 4.1.0
|
||||
parse-json: 5.2.0
|
||||
path-type: 4.0.0
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/create-require/1.1.1:
|
||||
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
|
||||
dev: true
|
||||
@@ -1896,7 +2025,7 @@ packages:
|
||||
longest: 2.0.1
|
||||
word-wrap: 1.2.3
|
||||
optionalDependencies:
|
||||
'@commitlint/load': 17.0.0
|
||||
'@commitlint/load': 17.4.2
|
||||
transitivePeerDependencies:
|
||||
- '@swc/core'
|
||||
- '@swc/wasm'
|
||||
@@ -2470,7 +2599,7 @@ packages:
|
||||
source-map: 0.6.1
|
||||
wordwrap: 1.0.0
|
||||
optionalDependencies:
|
||||
uglify-js: 3.16.0
|
||||
uglify-js: 3.17.4
|
||||
dev: true
|
||||
|
||||
/hard-rejection/2.1.0:
|
||||
@@ -3376,6 +3505,14 @@ packages:
|
||||
esprima: 4.0.1
|
||||
dev: true
|
||||
|
||||
/js-yaml/4.1.0:
|
||||
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
argparse: 2.0.1
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/jsdom/16.7.0:
|
||||
resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -3436,6 +3573,11 @@ packages:
|
||||
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
|
||||
dev: true
|
||||
|
||||
/json-schema-traverse/1.0.0:
|
||||
resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/json-stringify-safe/5.0.1:
|
||||
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
|
||||
dev: true
|
||||
@@ -3556,6 +3698,21 @@ packages:
|
||||
resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=}
|
||||
dev: true
|
||||
|
||||
/lodash.merge/4.6.2:
|
||||
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/lodash.mergewith/4.6.2:
|
||||
resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==}
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/lodash.uniq/4.5.0:
|
||||
resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/lodash.uniqby/4.7.0:
|
||||
resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==}
|
||||
dev: true
|
||||
@@ -3628,8 +3785,8 @@ packages:
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/marked/4.1.1:
|
||||
resolution: {integrity: sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==}
|
||||
/marked/4.2.12:
|
||||
resolution: {integrity: sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==}
|
||||
engines: {node: '>= 12'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
@@ -3711,8 +3868,8 @@ packages:
|
||||
brace-expansion: 1.1.11
|
||||
dev: true
|
||||
|
||||
/minimatch/5.1.0:
|
||||
resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==}
|
||||
/minimatch/5.1.6:
|
||||
resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
|
||||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
brace-expansion: 2.0.1
|
||||
@@ -4287,6 +4444,12 @@ packages:
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
/require-from-string/2.0.2:
|
||||
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/resolve-cwd/3.0.0:
|
||||
resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==}
|
||||
engines: {node: '>=8'}
|
||||
@@ -4490,12 +4653,12 @@ packages:
|
||||
rechoir: 0.6.2
|
||||
dev: true
|
||||
|
||||
/shiki/0.11.1:
|
||||
resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==}
|
||||
/shiki/0.12.1:
|
||||
resolution: {integrity: sha512-aieaV1m349rZINEBkjxh2QbBvFFQOlgqYTNtCal82hHj4dDZ76oMlQIX+C7ryerBTDiga3e5NfH6smjdJ02BbQ==}
|
||||
dependencies:
|
||||
jsonc-parser: 3.2.0
|
||||
vscode-oniguruma: 1.6.2
|
||||
vscode-textmate: 6.0.0
|
||||
vscode-oniguruma: 1.7.0
|
||||
vscode-textmate: 8.0.0
|
||||
dev: true
|
||||
|
||||
/shx/0.3.4:
|
||||
@@ -4852,7 +5015,7 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
/ts-jest/27.1.4_ibhx3ehxrt2kgmkik4bkzmyeei:
|
||||
/ts-jest/27.1.4_nrlewyunxfyvapgcwhbeszaybu:
|
||||
resolution: {integrity: sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==}
|
||||
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
|
||||
hasBin: true
|
||||
@@ -4882,11 +5045,11 @@ packages:
|
||||
lodash.memoize: 4.1.2
|
||||
make-error: 1.3.6
|
||||
semver: 7.3.7
|
||||
typescript: 4.6.4
|
||||
typescript: 4.9.5
|
||||
yargs-parser: 20.2.9
|
||||
dev: true
|
||||
|
||||
/ts-node/10.8.1_2e3zkt3gzqz6r43dj4x46rot3i:
|
||||
/ts-node/10.8.1_2pb7oj3w6ri7fljxteglruehxe:
|
||||
resolution: {integrity: sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@@ -4912,11 +5075,43 @@ packages:
|
||||
create-require: 1.1.1
|
||||
diff: 4.0.2
|
||||
make-error: 1.3.6
|
||||
typescript: 4.6.4
|
||||
typescript: 4.9.5
|
||||
v8-compile-cache-lib: 3.0.1
|
||||
yn: 3.1.1
|
||||
dev: true
|
||||
|
||||
/ts-node/10.9.1_2pb7oj3w6ri7fljxteglruehxe:
|
||||
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@swc/core': '>=1.2.50'
|
||||
'@swc/wasm': '>=1.2.50'
|
||||
'@types/node': '*'
|
||||
typescript: '>=2.7'
|
||||
peerDependenciesMeta:
|
||||
'@swc/core':
|
||||
optional: true
|
||||
'@swc/wasm':
|
||||
optional: true
|
||||
dependencies:
|
||||
'@cspotcode/source-map-support': 0.8.1
|
||||
'@tsconfig/node10': 1.0.9
|
||||
'@tsconfig/node12': 1.0.11
|
||||
'@tsconfig/node14': 1.0.3
|
||||
'@tsconfig/node16': 1.0.3
|
||||
'@types/node': 17.0.33
|
||||
acorn: 8.8.2
|
||||
acorn-walk: 8.2.0
|
||||
arg: 4.1.3
|
||||
create-require: 1.1.1
|
||||
diff: 4.0.2
|
||||
make-error: 1.3.6
|
||||
typescript: 4.9.5
|
||||
v8-compile-cache-lib: 3.0.1
|
||||
yn: 3.1.1
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/tslib/1.14.1:
|
||||
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
|
||||
dev: true
|
||||
@@ -4969,43 +5164,51 @@ packages:
|
||||
is-typedarray: 1.0.0
|
||||
dev: true
|
||||
|
||||
/typedoc-plugin-markdown/3.13.6_typedoc@0.23.15:
|
||||
resolution: {integrity: sha512-ISSc9v3BK7HkokxSBuJPttXox4tJ6hP0N9wfSIk0fmLN67+eqtAxbk97gs2nDiuha+RTO5eW9gdeAb+RPP0mgg==}
|
||||
/typedoc-plugin-markdown/4.0.0-next.3_typedoc@0.23.24:
|
||||
resolution: {integrity: sha512-Koim98xkXOoY8KPlMNH/cKTfqTEocVEYMa3XZgoPX/DkGp7ioB6nl38p6Snl7rEmhcbHkFktcUoOQLn04Kk3sg==}
|
||||
peerDependencies:
|
||||
typedoc: '>=0.23.0'
|
||||
dependencies:
|
||||
handlebars: 4.7.7
|
||||
typedoc: 0.23.15_typescript@4.6.4
|
||||
typedoc: 0.23.24_typescript@4.9.5
|
||||
dev: true
|
||||
|
||||
/typedoc-plugin-mdn-links/2.0.0_typedoc@0.23.15:
|
||||
/typedoc-plugin-mdn-links/2.0.0_typedoc@0.23.24:
|
||||
resolution: {integrity: sha512-IGLuelXPOenGdmklr5DHgPPf/MfZj7aEYCxCMtPN8C1D0lA7w0YLahd0jhDDcOMU7zL1EPcM5pPnhZHltDhqGQ==}
|
||||
peerDependencies:
|
||||
typedoc: 0.22.x || 0.23.x
|
||||
dependencies:
|
||||
typedoc: 0.23.15_typescript@4.6.4
|
||||
typedoc: 0.23.24_typescript@4.9.5
|
||||
dev: true
|
||||
|
||||
/typedoc-plugin-missing-exports/1.0.0_typedoc@0.23.15:
|
||||
/typedoc-plugin-missing-exports/1.0.0_typedoc@0.23.24:
|
||||
resolution: {integrity: sha512-7s6znXnuAj1eD9KYPyzVzR1lBF5nwAY8IKccP5sdoO9crG4lpd16RoFpLsh2PccJM+I2NASpr0+/NMka6ThwVA==}
|
||||
peerDependencies:
|
||||
typedoc: 0.22.x || 0.23.x
|
||||
dependencies:
|
||||
typedoc: 0.23.15_typescript@4.6.4
|
||||
typedoc: 0.23.24_typescript@4.9.5
|
||||
dev: true
|
||||
|
||||
/typedoc/0.23.15_typescript@4.6.4:
|
||||
resolution: {integrity: sha512-x9Zu+tTnwxb9YdVr+zvX7LYzyBl1nieOr6lrSHbHsA22/RJK2m4Y525WIg5Mj4jWCmfL47v6f4hUzY7EIuwS5w==}
|
||||
/typedoc-wikijs-theme/1.0.5_typedoc@0.23.24:
|
||||
resolution: {integrity: sha512-nMHOcaER9EHh6XACq5wb+CBT26Xi3Coj7/0AAG1OdrNDzRirnxZVpqVNlFEcd7MOdTKauKgY6yAqfSjaJ6fapQ==}
|
||||
peerDependencies:
|
||||
typedoc: '>=0.23.0'
|
||||
dependencies:
|
||||
typedoc: 0.23.24_typescript@4.9.5
|
||||
typedoc-plugin-markdown: 4.0.0-next.3_typedoc@0.23.24
|
||||
dev: true
|
||||
|
||||
/typedoc/0.23.24_typescript@4.9.5:
|
||||
resolution: {integrity: sha512-bfmy8lNQh+WrPYcJbtjQ6JEEsVl/ce1ZIXyXhyW+a1vFrjO39t6J8sL/d6FfAGrJTc7McCXgk9AanYBSNvLdIA==}
|
||||
engines: {node: '>= 14.14'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
typescript: 4.6.x || 4.7.x || 4.8.x
|
||||
typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x
|
||||
dependencies:
|
||||
lunr: 2.3.9
|
||||
marked: 4.1.1
|
||||
minimatch: 5.1.0
|
||||
shiki: 0.11.1
|
||||
typescript: 4.6.4
|
||||
marked: 4.2.12
|
||||
minimatch: 5.1.6
|
||||
shiki: 0.12.1
|
||||
typescript: 4.9.5
|
||||
dev: true
|
||||
|
||||
/typescript/3.9.10:
|
||||
@@ -5014,14 +5217,14 @@ packages:
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/typescript/4.6.4:
|
||||
resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==}
|
||||
/typescript/4.9.5:
|
||||
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
|
||||
engines: {node: '>=4.2.0'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/uglify-js/3.16.0:
|
||||
resolution: {integrity: sha512-FEikl6bR30n0T3amyBh3LoiBdqHRy/f4H80+My34HOesOKyHfOsxAPAxOoqC0JUnC1amnO0IwkYC3sko51caSw==}
|
||||
/uglify-js/3.17.4:
|
||||
resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==}
|
||||
engines: {node: '>=0.8.0'}
|
||||
hasBin: true
|
||||
requiresBuild: true
|
||||
@@ -5083,12 +5286,12 @@ packages:
|
||||
spdx-expression-parse: 3.0.1
|
||||
dev: true
|
||||
|
||||
/vscode-oniguruma/1.6.2:
|
||||
resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==}
|
||||
/vscode-oniguruma/1.7.0:
|
||||
resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==}
|
||||
dev: true
|
||||
|
||||
/vscode-textmate/6.0.0:
|
||||
resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==}
|
||||
/vscode-textmate/8.0.0:
|
||||
resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==}
|
||||
dev: true
|
||||
|
||||
/w3c-hr-time/1.0.2:
|
||||
|
||||
174
src/custom-components/ReorderableList.tsx
Normal file
174
src/custom-components/ReorderableList.tsx
Normal file
@@ -0,0 +1,174 @@
|
||||
import { Fragment, JSXElementConstructor, ReactElement, useEffect, useState } from 'react';
|
||||
|
||||
import { Field, FieldProps, Focusable, GamepadButton } from '../deck-components';
|
||||
|
||||
/**
|
||||
* A ReorderableList entry of type <T>.
|
||||
* @param label The name of this entry in the list.
|
||||
* @param data Optional data to connect to this entry.
|
||||
* @param position The position of this entry in the list.
|
||||
*/
|
||||
export type ReorderableEntry<T> = {
|
||||
label: string;
|
||||
data?: T;
|
||||
position: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* Properties for a ReorderableList component of type <T>.
|
||||
*
|
||||
* @param animate If the list should animate. @default true
|
||||
*/
|
||||
export type ReorderableListProps<T> = {
|
||||
entries: ReorderableEntry<T>[];
|
||||
onSave: (entries: ReorderableEntry<T>[]) => void;
|
||||
interactables?: JSXElementConstructor<{ entry: ReorderableEntry<T> }>;
|
||||
fieldProps?: FieldProps;
|
||||
animate?: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
* A component for creating reorderable lists.
|
||||
*
|
||||
* See an example implementation {@linkplain https://github.com/Tormak9970/Component-Testing-Plugin/blob/main/src/testing-window/ReorderableListTest.tsx here}.
|
||||
*/
|
||||
export function ReorderableList<T>(props: ReorderableListProps<T>) {
|
||||
if (props.animate === undefined) props.animate = true;
|
||||
const [entryList, setEntryList] = useState<ReorderableEntry<T>[]>(
|
||||
props.entries.sort((a: ReorderableEntry<T>, b: ReorderableEntry<T>) => a.position - b.position),
|
||||
);
|
||||
const [reorderEnabled, setReorderEnabled] = useState<boolean>(false);
|
||||
|
||||
useEffect(() => {
|
||||
setEntryList(props.entries.sort((a: ReorderableEntry<T>, b: ReorderableEntry<T>) => a.position - b.position));
|
||||
}, [props.entries]);
|
||||
|
||||
function toggleReorderEnabled(): void {
|
||||
let newReorderValue = !reorderEnabled;
|
||||
setReorderEnabled(newReorderValue);
|
||||
|
||||
if (!newReorderValue) {
|
||||
props.onSave(entryList);
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<div
|
||||
style={{
|
||||
width: 'inherit',
|
||||
height: 'inherit',
|
||||
flex: '1 1 1px',
|
||||
scrollPadding: '48px 0px',
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
justifyContent: 'flex-start',
|
||||
alignContent: 'stretch',
|
||||
}}
|
||||
>
|
||||
<Focusable
|
||||
onSecondaryButton={toggleReorderEnabled}
|
||||
onSecondaryActionDescription={reorderEnabled ? 'Save Order' : 'Reorder'}
|
||||
onClick={toggleReorderEnabled}
|
||||
>
|
||||
{entryList.map((entry: ReorderableEntry<T>) => (
|
||||
<ReorderableItem
|
||||
animate={props.animate!}
|
||||
listData={entryList}
|
||||
entryData={entry}
|
||||
reorderEntryFunc={setEntryList}
|
||||
reorderEnabled={reorderEnabled}
|
||||
fieldProps={props.fieldProps}
|
||||
>
|
||||
{props.interactables ? <props.interactables entry={entry} /> : null}
|
||||
</ReorderableItem>
|
||||
))}
|
||||
</Focusable>
|
||||
</div>
|
||||
</Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Properties for a ReorderableItem component of type <T>
|
||||
*/
|
||||
export type ReorderableListEntryProps<T> = {
|
||||
fieldProps?: FieldProps;
|
||||
listData: ReorderableEntry<T>[];
|
||||
entryData: ReorderableEntry<T>;
|
||||
reorderEntryFunc: CallableFunction;
|
||||
reorderEnabled: boolean;
|
||||
animate: boolean;
|
||||
children: ReactElement | null;
|
||||
};
|
||||
|
||||
function ReorderableItem<T>(props: ReorderableListEntryProps<T>) {
|
||||
const [isSelected, _setIsSelected] = useState<boolean>(false);
|
||||
const [isSelectedLastFrame, setIsSelectedLastFrame] = useState<boolean>(false);
|
||||
const listEntries = props.listData;
|
||||
|
||||
function onReorder(e: Event): void {
|
||||
if (!props.reorderEnabled) return;
|
||||
|
||||
const event = e as CustomEvent;
|
||||
const currentIdx = listEntries.findIndex((entryData: ReorderableEntry<T>) => entryData === props.entryData);
|
||||
const currentIdxValue = listEntries[currentIdx];
|
||||
if (currentIdx < 0) return;
|
||||
|
||||
let targetPosition: number = -1;
|
||||
if (event.detail.button == GamepadButton.DIR_DOWN) {
|
||||
targetPosition = currentIdxValue.position + 1;
|
||||
} else if (event.detail.button == GamepadButton.DIR_UP) {
|
||||
targetPosition = currentIdxValue.position - 1;
|
||||
}
|
||||
|
||||
if (targetPosition >= listEntries.length || targetPosition < 0) return;
|
||||
|
||||
let otherToUpdate = listEntries.find((entryData: ReorderableEntry<T>) => entryData.position === targetPosition);
|
||||
if (!otherToUpdate) return;
|
||||
|
||||
let currentPosition = currentIdxValue.position;
|
||||
|
||||
currentIdxValue.position = otherToUpdate.position;
|
||||
otherToUpdate.position = currentPosition;
|
||||
|
||||
props.reorderEntryFunc(
|
||||
[...listEntries].sort((a: ReorderableEntry<T>, b: ReorderableEntry<T>) => a.position - b.position),
|
||||
);
|
||||
}
|
||||
|
||||
async function setIsSelected(val: boolean) {
|
||||
_setIsSelected(val);
|
||||
// Wait 3 frames, then set. I have no idea why, but if you dont wait long enough it doesn't work.
|
||||
for (let i = 0; i < 3; i++) await new Promise((res) => requestAnimationFrame(res));
|
||||
setIsSelectedLastFrame(val);
|
||||
}
|
||||
|
||||
return (
|
||||
<div
|
||||
style={
|
||||
props.animate
|
||||
? {
|
||||
transition:
|
||||
isSelected || isSelectedLastFrame
|
||||
? ''
|
||||
: 'transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), opacity 0.3s cubic-bezier(0.25, 1, 0.5, 1)', // easeOutQuart https://easings.net/#easeOutQuart
|
||||
transform: !props.reorderEnabled || isSelected ? 'scale(1)' : 'scale(0.9)',
|
||||
opacity: !props.reorderEnabled || isSelected ? 1 : 0.7,
|
||||
}
|
||||
: {}
|
||||
}
|
||||
>
|
||||
<Field
|
||||
label={props.entryData.label}
|
||||
{...props.fieldProps}
|
||||
focusable={!props.children}
|
||||
onButtonDown={onReorder}
|
||||
onGamepadBlur={() => setIsSelected(false)}
|
||||
onGamepadFocus={() => setIsSelected(true)}
|
||||
>
|
||||
<Focusable style={{ display: 'flex', width: '100%', position: 'relative' }}>{props.children}</Focusable>
|
||||
</Field>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -1,2 +1,3 @@
|
||||
export * from './SuspensefulImage';
|
||||
export * from './ColorPickerModal';
|
||||
export * from './ReorderableList';
|
||||
|
||||
@@ -123,7 +123,7 @@ export const ModalRoot = (Object.values(
|
||||
if (typeof m !== 'object') return false;
|
||||
|
||||
for (let prop in m) {
|
||||
if (m[prop]?.m_mapModalManager) {
|
||||
if (m[prop]?.m_mapModalManager && Object.values(m)?.find((x: any) => x?.type)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ try {
|
||||
Router.WindowStore.GamepadUIMainWindowInstance,
|
||||
),
|
||||
NavigateToAppProperties: InternalNavigators?.AppProperties || Router.NavigateToAppProperties.bind(Router),
|
||||
NavigateToExternalWeb: Router.NavigateToExternalWeb.bind(Router),
|
||||
NavigateToExternalWeb: InternalNavigators?.ExternalWeb || Router.NavigateToExternalWeb.bind(Router),
|
||||
NavigateToInvites: InternalNavigators?.Invites || Router.NavigateToInvites.bind(Router),
|
||||
NavigateToChat: Router.NavigateToChat.bind(Router),
|
||||
NavigateToLibraryTab: InternalNavigators?.LibraryTab || Router.NavigateToLibraryTab.bind(Router),
|
||||
|
||||
@@ -25,6 +25,7 @@ export interface SliderFieldProps extends ItemProps {
|
||||
valueSuffix?: string;
|
||||
minimumDpadGranularity?: number;
|
||||
onChange?(value: number): void;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
export const SliderField = Object.values(CommonUIModule).find((mod: any) =>
|
||||
|
||||
@@ -217,6 +217,14 @@ export type AppLanguages = {
|
||||
strShortName: string;
|
||||
};
|
||||
|
||||
export type LogoPinPositions = 'BottomLeft' | 'UpperLeft' | 'CenterCenter' | 'UpperCenter' | 'BottomCenter';
|
||||
|
||||
export interface LogoPosition {
|
||||
pinnedPosition: LogoPinPositions;
|
||||
nWidthPct: number;
|
||||
nHeightPct: number;
|
||||
};
|
||||
|
||||
export interface AppDetails {
|
||||
achievements: AppAchievements;
|
||||
bCanMoveInstallFolder: boolean;
|
||||
@@ -292,9 +300,18 @@ export interface AppDetails {
|
||||
vecMusicAlbums: any[];
|
||||
vecPlatforms: string[];
|
||||
vecScreenShots: any[];
|
||||
libraryAssets?: {
|
||||
logoPosition?: LogoPosition;
|
||||
};
|
||||
}
|
||||
|
||||
export interface SteamAppOverview {
|
||||
display_name: string;
|
||||
gameid: string;
|
||||
appid: number;
|
||||
icon_hash: string;
|
||||
third_party_mod?: boolean;
|
||||
selected_clientid?: string;
|
||||
BIsModOrShortcut: () => boolean;
|
||||
BIsShortcut: () => boolean;
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import { CommonUIModule } from '../webpack';
|
||||
import { ItemProps } from './Item';
|
||||
|
||||
export interface ToggleFieldProps extends ItemProps {
|
||||
highlightOnFocus?: boolean;
|
||||
checked: boolean;
|
||||
disabled?: boolean;
|
||||
onChange?(checked: boolean): void;
|
||||
|
||||
@@ -26,8 +26,55 @@ export * from './Toggle';
|
||||
export * from './ToggleField';
|
||||
export * from './SteamClient';
|
||||
|
||||
import {SteamClient} from './SteamClient'
|
||||
import { SteamClient, SteamAppOverview, LogoPosition } from './SteamClient';
|
||||
|
||||
declare global {
|
||||
var SteamClient: SteamClient;
|
||||
|
||||
interface Window {
|
||||
LocalizationManager: {
|
||||
m_mapTokens: Map<string, string>;
|
||||
m_mapFallbackTokens: Map<string, string>;
|
||||
m_rgLocalesToUse: string[];
|
||||
};
|
||||
App: {
|
||||
m_CurrentUser: {
|
||||
bIsLimited: boolean;
|
||||
bIsOfflineMode: boolean;
|
||||
bSupportAlertActive: boolean;
|
||||
bCanInviteFriends: boolean;
|
||||
NotificationCounts: {
|
||||
comments: number;
|
||||
inventory_items: number;
|
||||
invites: number;
|
||||
gifts: number;
|
||||
offline_messages: number;
|
||||
trade_offers: number;
|
||||
async_game_updates: number;
|
||||
moderator_messages: number;
|
||||
help_request_replies: number;
|
||||
};
|
||||
strAccountBalance: string;
|
||||
strAccountName: string;
|
||||
strSteamID: string;
|
||||
};
|
||||
};
|
||||
appStore: {
|
||||
GetAppOverviewByAppID: (appId: number) => SteamAppOverview | null;
|
||||
GetCustomVerticalCapsuleURLs: (app: SteamAppOverview) => string[];
|
||||
GetCustomLandcapeImageURLs: (app: SteamAppOverview) => string[];
|
||||
GetCustomHeroImageURLs: (app: SteamAppOverview) => string[];
|
||||
GetCustomLogoImageURLs: (app: SteamAppOverview) => string[];
|
||||
GetLandscapeImageURLForApp: (app: SteamAppOverview) => string;
|
||||
GetVerticalCapsuleURLForApp: (app: SteamAppOverview) => string;
|
||||
GetCachedLandscapeImageURLForApp: (app: SteamAppOverview) => string;
|
||||
GetCachedVerticalImageURLForApp: (app: SteamAppOverview) => string;
|
||||
GetPregeneratedVerticalCapsuleForApp: (app: SteamAppOverview) => string;
|
||||
GetIconURLForApp: (app: SteamAppOverview) => string;
|
||||
};
|
||||
appDetailsStore: {
|
||||
GetCustomLogoPosition: (app: SteamAppOverview) => LogoPosition | null;
|
||||
SaveCustomLogoPosition: (app: SteamAppOverview, logoPositions: LogoPosition) => any;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{
|
||||
"githubPages": false,
|
||||
"categorizeByGroup": false,
|
||||
"excludeExternals": true
|
||||
}
|
||||
Reference in New Issue
Block a user