@powerhousedao/connect 6.2.2-dev.5 → 6.2.2-dev.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/document-icon-192x192.png +0 -0
- package/assets/document-icon-512x512.png +0 -0
- package/assets/pwa-192x192.png +0 -0
- package/assets/pwa-512x512-maskable.png +0 -0
- package/assets/pwa-512x512.png +0 -0
- package/dist/{AddDriveModal-MMHlkJBJ.js → AddDriveModal-Bw0YuxZg.js} +5 -5
- package/dist/AddDriveModal-Bw0YuxZg.js.map +1 -0
- package/dist/{ClearStorageModal--Kc9BLDH.js → ClearStorageModal-DDzOvG6T.js} +4 -4
- package/dist/{ClearStorageModal--Kc9BLDH.js.map → ClearStorageModal-DDzOvG6T.js.map} +1 -1
- package/dist/ConfirmDocumentUpgradeModal-9AaaQJTs.js +114 -0
- package/dist/ConfirmDocumentUpgradeModal-9AaaQJTs.js.map +1 -0
- package/dist/{CookiesPolicyModal-CkcUKPLb.js → CookiesPolicyModal-CQ-zHJdw.js} +3 -3
- package/dist/{CookiesPolicyModal-CkcUKPLb.js.map → CookiesPolicyModal-CQ-zHJdw.js.map} +1 -1
- package/dist/{CreateDocumentModal-CvsTh0HM.js → CreateDocumentModal-NNi4p6EI.js} +7 -5
- package/dist/CreateDocumentModal-NNi4p6EI.js.map +1 -0
- package/dist/{DebugSettingsModal-B7hFn_9k.js → DebugSettingsModal-k1l_X-wO.js} +6 -6
- package/dist/{DebugSettingsModal-B7hFn_9k.js.map → DebugSettingsModal-k1l_X-wO.js.map} +1 -1
- package/dist/{DeleteDriveModal-DSTK8FYk.js → DeleteDriveModal-C7fnXMsR.js} +4 -4
- package/dist/{DeleteDriveModal-DSTK8FYk.js.map → DeleteDriveModal-C7fnXMsR.js.map} +1 -1
- package/dist/{DeleteItemModal-B2nJmjsP.js → DeleteItemModal-BK_Y8Thj.js} +4 -4
- package/dist/{DeleteItemModal-B2nJmjsP.js.map → DeleteItemModal-BK_Y8Thj.js.map} +1 -1
- package/dist/{DisclaimerModal-D5FO34u9.js → DisclaimerModal-DJPHCnFY.js} +3 -3
- package/dist/{DisclaimerModal-D5FO34u9.js.map → DisclaimerModal-DJPHCnFY.js.map} +1 -1
- package/dist/DocumentVersionUnsupportedModal-tBHLK6b1.js +32 -0
- package/dist/DocumentVersionUnsupportedModal-tBHLK6b1.js.map +1 -0
- package/dist/{DownloadDocumentWithErrorsModal-tEr3bbtN.js → DownloadDocumentWithErrorsModal-sWu46HVB.js} +3 -3
- package/dist/{DownloadDocumentWithErrorsModal-tEr3bbtN.js.map → DownloadDocumentWithErrorsModal-sWu46HVB.js.map} +1 -1
- package/dist/DriveAuthRequiredModal-D3IPAst0.js +36 -0
- package/dist/DriveAuthRequiredModal-D3IPAst0.js.map +1 -0
- package/dist/{DriveSettingsModal-kR3hQnh4.js → DriveSettingsModal-7OKx8foy.js} +3 -3
- package/dist/{DriveSettingsModal-kR3hQnh4.js.map → DriveSettingsModal-7OKx8foy.js.map} +1 -1
- package/dist/{InspectorModal-DO7xAv0e.js → InspectorModal-DoIShIZU.js} +6 -6
- package/dist/{InspectorModal-DO7xAv0e.js.map → InspectorModal-DoIShIZU.js.map} +1 -1
- package/dist/LoginModal-Cd2wGgG4.js +75 -0
- package/dist/LoginModal-Cd2wGgG4.js.map +1 -0
- package/dist/{MissingPackageModal-BQcCQbOn.js → MissingPackageModal-DyP2-Ojb.js} +18 -6
- package/dist/MissingPackageModal-DyP2-Ojb.js.map +1 -0
- package/dist/OpenFileDocumentsModal-DH6sfJwe.js +311 -0
- package/dist/OpenFileDocumentsModal-DH6sfJwe.js.map +1 -0
- package/dist/{SettingsModal-5UjMFrlr.js → SettingsModal-CAKQhsAi.js} +26 -13
- package/dist/SettingsModal-CAKQhsAi.js.map +1 -0
- package/dist/{UpgradeDriveModal-BZGSE9_r.js → UpgradeDriveModal-wo5oO9mg.js} +3 -3
- package/dist/{UpgradeDriveModal-BZGSE9_r.js.map → UpgradeDriveModal-wo5oO9mg.js.map} +1 -1
- package/dist/{app-loader-C1rnoBbl.js → app-loader-0RTyMrTQ.js} +457 -89
- package/dist/app-loader-0RTyMrTQ.js.map +1 -0
- package/dist/app-loader-DeTgp8IP.js +4 -0
- package/dist/{build-info-COOSxFxb.js → build-info-B5u-94Xv.js} +5 -5
- package/dist/{build-info-COOSxFxb.js.map → build-info-B5u-94Xv.js.map} +1 -1
- package/dist/components-CqwpIQXY.js +5 -0
- package/dist/{connect.config-vgUeFoNp.js → connect.config-C-b_Yhd6.js} +9 -4
- package/dist/connect.config-C-b_Yhd6.js.map +1 -0
- package/dist/{connection-state-DO_2lAEJ.js → connection-state-KCa1yljA.js} +4 -4
- package/dist/{connection-state-DO_2lAEJ.js.map → connection-state-KCa1yljA.js.map} +1 -1
- package/dist/{load-BCpNI6yz.js → load-2EH2_hXZ.js} +10 -10
- package/dist/{load-BCpNI6yz.js.map → load-2EH2_hXZ.js.map} +1 -1
- package/dist/main.js +1 -1
- package/dist/{package-BJ5bAWw-.js → package-PM62ZNdm.js} +8 -4
- package/dist/package-PM62ZNdm.js.map +1 -0
- package/dist/{pglite-seed-z3B1JA38.js → pglite-seed-DRXPe7p-.js} +4 -4
- package/dist/{pglite-seed-z3B1JA38.js.map → pglite-seed-DRXPe7p-.js.map} +1 -1
- package/dist/pwa-manifest-link-CG8UajMz.js +34 -0
- package/dist/pwa-manifest-link-CG8UajMz.js.map +1 -0
- package/dist/{reactor-EirLqbNn.js → reactor-BqAu6N6i.js} +167 -20
- package/dist/reactor-BqAu6N6i.js.map +1 -0
- package/dist/reactor.worker.js +8 -6
- package/dist/reactor.worker.js.map +1 -1
- package/dist/{registerServiceWorker-nJIc0yEY.js → registerServiceWorker-Bn1KWmk0.js} +6 -4
- package/dist/registerServiceWorker-Bn1KWmk0.js.map +1 -0
- package/dist/{reload-connect-toast-D1Iqw9E_.js → reload-connect-toast-DDQEupCN.js} +23 -5
- package/dist/{reload-connect-toast-D1Iqw9E_.js.map → reload-connect-toast-DDQEupCN.js.map} +1 -1
- package/dist/start-connect.js +1 -1
- package/dist/style.css +100 -7
- package/dist/{toast-4t-VimvD.js → toast-CO6ChlzE.js} +8 -5
- package/dist/toast-CO6ChlzE.js.map +1 -0
- package/dist/use-renown-login-BtGljnB4.js +52 -0
- package/dist/use-renown-login-BtGljnB4.js.map +1 -0
- package/dist/useRegistryPackages-DMhCvTWq.js +314 -0
- package/dist/useRegistryPackages-DMhCvTWq.js.map +1 -0
- package/package.json +15 -11
- package/dist/AddDriveModal-MMHlkJBJ.js.map +0 -1
- package/dist/CreateDocumentModal-CvsTh0HM.js.map +0 -1
- package/dist/DriveAuthRequiredModal-BA2vS3oF.js +0 -40
- package/dist/DriveAuthRequiredModal-BA2vS3oF.js.map +0 -1
- package/dist/MissingPackageModal-BQcCQbOn.js.map +0 -1
- package/dist/SettingsModal-5UjMFrlr.js.map +0 -1
- package/dist/app-loader-C1rnoBbl.js.map +0 -1
- package/dist/app-loader-CpXJhHIH.js +0 -4
- package/dist/components-DHj3ZpJg.js +0 -5
- package/dist/connect.config-vgUeFoNp.js.map +0 -1
- package/dist/package-BJ5bAWw-.js.map +0 -1
- package/dist/reactor-EirLqbNn.js.map +0 -1
- package/dist/registerServiceWorker-nJIc0yEY.js.map +0 -1
- package/dist/toast-4t-VimvD.js.map +0 -1
- package/dist/useRegistryPackages-BaYtekjQ.js +0 -179
- package/dist/useRegistryPackages-BaYtekjQ.js.map +0 -1
package/dist/start-connect.js
CHANGED
|
@@ -5,7 +5,7 @@ import { createRoot } from "react-dom/client";
|
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region start-connect.tsx
|
|
7
7
|
await loadRuntimeConfig();
|
|
8
|
-
const { AppLoader } = await import("./components-
|
|
8
|
+
const { AppLoader } = await import("./components-CqwpIQXY.js");
|
|
9
9
|
function updateLocalPackage(pkg) {
|
|
10
10
|
window.ph?.vetraPackageManager?.updateLocalPackage(pkg);
|
|
11
11
|
}
|
package/dist/style.css
CHANGED
|
@@ -78,6 +78,7 @@
|
|
|
78
78
|
--font-weight-bold: 700;
|
|
79
79
|
--tracking-normal: 0em;
|
|
80
80
|
--tracking-wide: 0.025em;
|
|
81
|
+
--tracking-wider: 0.05em;
|
|
81
82
|
--leading-tight: 1.25;
|
|
82
83
|
--leading-normal: 1.5;
|
|
83
84
|
--leading-relaxed: 1.625;
|
|
@@ -372,6 +373,9 @@
|
|
|
372
373
|
.end {
|
|
373
374
|
inset-inline-end: var(--spacing);
|
|
374
375
|
}
|
|
376
|
+
.-top-2 {
|
|
377
|
+
top: calc(var(--spacing) * -2);
|
|
378
|
+
}
|
|
375
379
|
.top-0 {
|
|
376
380
|
top: calc(var(--spacing) * 0);
|
|
377
381
|
}
|
|
@@ -474,6 +478,9 @@
|
|
|
474
478
|
.z-50 {
|
|
475
479
|
z-index: 50;
|
|
476
480
|
}
|
|
481
|
+
.z-200 {
|
|
482
|
+
z-index: 200;
|
|
483
|
+
}
|
|
477
484
|
.z-1000 {
|
|
478
485
|
z-index: 1000;
|
|
479
486
|
}
|
|
@@ -618,6 +625,9 @@
|
|
|
618
625
|
.mb-1 {
|
|
619
626
|
margin-bottom: calc(var(--spacing) * 1);
|
|
620
627
|
}
|
|
628
|
+
.mb-1\.5 {
|
|
629
|
+
margin-bottom: calc(var(--spacing) * 1.5);
|
|
630
|
+
}
|
|
621
631
|
.mb-2 {
|
|
622
632
|
margin-bottom: calc(var(--spacing) * 2);
|
|
623
633
|
}
|
|
@@ -858,9 +868,6 @@
|
|
|
858
868
|
.h-\[420px\] {
|
|
859
869
|
height: 420px;
|
|
860
870
|
}
|
|
861
|
-
.h-\[500px\] {
|
|
862
|
-
height: 500px;
|
|
863
|
-
}
|
|
864
871
|
.h-\[600px\] {
|
|
865
872
|
height: 600px;
|
|
866
873
|
}
|
|
@@ -903,12 +910,18 @@
|
|
|
903
910
|
.max-h-\[60vh\] {
|
|
904
911
|
max-height: 60vh;
|
|
905
912
|
}
|
|
913
|
+
.max-h-\[85vh\] {
|
|
914
|
+
max-height: 85vh;
|
|
915
|
+
}
|
|
906
916
|
.max-h-\[245px\] {
|
|
907
917
|
max-height: 245px;
|
|
908
918
|
}
|
|
909
919
|
.max-h-\[404px\] {
|
|
910
920
|
max-height: 404px;
|
|
911
921
|
}
|
|
922
|
+
.max-h-\[calc\(100dvh-14rem\)\] {
|
|
923
|
+
max-height: calc(100dvh - 14rem);
|
|
924
|
+
}
|
|
912
925
|
.max-h-full {
|
|
913
926
|
max-height: 100%;
|
|
914
927
|
}
|
|
@@ -1089,6 +1102,9 @@
|
|
|
1089
1102
|
.w-\[408px\] {
|
|
1090
1103
|
width: 408px;
|
|
1091
1104
|
}
|
|
1105
|
+
.w-\[440px\] {
|
|
1106
|
+
width: 440px;
|
|
1107
|
+
}
|
|
1092
1108
|
.w-\[450px\] {
|
|
1093
1109
|
width: 450px;
|
|
1094
1110
|
}
|
|
@@ -1149,6 +1165,9 @@
|
|
|
1149
1165
|
.max-w-\[calc\(100\%-2rem\)\] {
|
|
1150
1166
|
max-width: calc(100% - 2rem);
|
|
1151
1167
|
}
|
|
1168
|
+
.max-w-\[calc\(100vw-2rem\)\] {
|
|
1169
|
+
max-width: calc(100vw - 2rem);
|
|
1170
|
+
}
|
|
1152
1171
|
.max-w-fit {
|
|
1153
1172
|
max-width: fit-content;
|
|
1154
1173
|
}
|
|
@@ -1495,6 +1514,9 @@
|
|
|
1495
1514
|
.overflow-y-auto {
|
|
1496
1515
|
overflow-y: auto;
|
|
1497
1516
|
}
|
|
1517
|
+
.overscroll-contain {
|
|
1518
|
+
overscroll-behavior: contain;
|
|
1519
|
+
}
|
|
1498
1520
|
.rounded {
|
|
1499
1521
|
border-radius: 0.25rem;
|
|
1500
1522
|
}
|
|
@@ -1587,6 +1609,10 @@
|
|
|
1587
1609
|
border-top-style: var(--tw-border-style);
|
|
1588
1610
|
border-top-width: 1px;
|
|
1589
1611
|
}
|
|
1612
|
+
.border-t-0 {
|
|
1613
|
+
border-top-style: var(--tw-border-style);
|
|
1614
|
+
border-top-width: 0px;
|
|
1615
|
+
}
|
|
1590
1616
|
.border-r {
|
|
1591
1617
|
border-right-style: var(--tw-border-style);
|
|
1592
1618
|
border-right-width: 1px;
|
|
@@ -1638,6 +1664,9 @@
|
|
|
1638
1664
|
.border-b-border {
|
|
1639
1665
|
border-bottom-color: var(--border);
|
|
1640
1666
|
}
|
|
1667
|
+
.bg-accent {
|
|
1668
|
+
background-color: var(--accent);
|
|
1669
|
+
}
|
|
1641
1670
|
.bg-background {
|
|
1642
1671
|
background-color: var(--background);
|
|
1643
1672
|
}
|
|
@@ -1647,6 +1676,9 @@
|
|
|
1647
1676
|
background-color: color-mix(in oklab, var(--background) 50%, transparent);
|
|
1648
1677
|
}
|
|
1649
1678
|
}
|
|
1679
|
+
.bg-border {
|
|
1680
|
+
background-color: var(--border);
|
|
1681
|
+
}
|
|
1650
1682
|
.bg-card {
|
|
1651
1683
|
background-color: var(--card);
|
|
1652
1684
|
}
|
|
@@ -1665,6 +1697,9 @@
|
|
|
1665
1697
|
background-color: color-mix(in oklab, var(--destructive) 10%, transparent);
|
|
1666
1698
|
}
|
|
1667
1699
|
}
|
|
1700
|
+
.bg-foreground {
|
|
1701
|
+
background-color: var(--foreground);
|
|
1702
|
+
}
|
|
1668
1703
|
.bg-info {
|
|
1669
1704
|
background-color: var(--info);
|
|
1670
1705
|
}
|
|
@@ -1812,6 +1847,9 @@
|
|
|
1812
1847
|
.px-10 {
|
|
1813
1848
|
padding-inline: calc(var(--spacing) * 10);
|
|
1814
1849
|
}
|
|
1850
|
+
.py-0 {
|
|
1851
|
+
padding-block: calc(var(--spacing) * 0);
|
|
1852
|
+
}
|
|
1815
1853
|
.py-0\.5 {
|
|
1816
1854
|
padding-block: calc(var(--spacing) * 0.5);
|
|
1817
1855
|
}
|
|
@@ -1881,6 +1919,9 @@
|
|
|
1881
1919
|
.pr-1 {
|
|
1882
1920
|
padding-right: calc(var(--spacing) * 1);
|
|
1883
1921
|
}
|
|
1922
|
+
.pr-1\.5 {
|
|
1923
|
+
padding-right: calc(var(--spacing) * 1.5);
|
|
1924
|
+
}
|
|
1884
1925
|
.pr-2 {
|
|
1885
1926
|
padding-right: calc(var(--spacing) * 2);
|
|
1886
1927
|
}
|
|
@@ -2041,6 +2082,9 @@
|
|
|
2041
2082
|
font-size: var(--text-xs);
|
|
2042
2083
|
line-height: calc(var(--spacing) * 5);
|
|
2043
2084
|
}
|
|
2085
|
+
.text-\[10px\] {
|
|
2086
|
+
font-size: 10px;
|
|
2087
|
+
}
|
|
2044
2088
|
.leading-4 {
|
|
2045
2089
|
--tw-leading: calc(var(--spacing) * 4);
|
|
2046
2090
|
line-height: calc(var(--spacing) * 4);
|
|
@@ -2049,10 +2093,6 @@
|
|
|
2049
2093
|
--tw-leading: calc(var(--spacing) * 4.5);
|
|
2050
2094
|
line-height: calc(var(--spacing) * 4.5);
|
|
2051
2095
|
}
|
|
2052
|
-
.leading-10 {
|
|
2053
|
-
--tw-leading: calc(var(--spacing) * 10);
|
|
2054
|
-
line-height: calc(var(--spacing) * 10);
|
|
2055
|
-
}
|
|
2056
2096
|
.leading-\[18px\] {
|
|
2057
2097
|
--tw-leading: 18px;
|
|
2058
2098
|
line-height: 18px;
|
|
@@ -2093,6 +2133,10 @@
|
|
|
2093
2133
|
--tw-tracking: var(--tracking-wide);
|
|
2094
2134
|
letter-spacing: var(--tracking-wide);
|
|
2095
2135
|
}
|
|
2136
|
+
.tracking-wider {
|
|
2137
|
+
--tw-tracking: var(--tracking-wider);
|
|
2138
|
+
letter-spacing: var(--tracking-wider);
|
|
2139
|
+
}
|
|
2096
2140
|
.wrap-anywhere {
|
|
2097
2141
|
overflow-wrap: anywhere;
|
|
2098
2142
|
}
|
|
@@ -2109,6 +2153,9 @@
|
|
|
2109
2153
|
.whitespace-nowrap {
|
|
2110
2154
|
white-space: nowrap;
|
|
2111
2155
|
}
|
|
2156
|
+
.text-background {
|
|
2157
|
+
color: var(--background);
|
|
2158
|
+
}
|
|
2112
2159
|
.text-current {
|
|
2113
2160
|
color: currentcolor;
|
|
2114
2161
|
}
|
|
@@ -2212,6 +2259,9 @@
|
|
|
2212
2259
|
.opacity-75 {
|
|
2213
2260
|
opacity: 75%;
|
|
2214
2261
|
}
|
|
2262
|
+
.opacity-80 {
|
|
2263
|
+
opacity: 80%;
|
|
2264
|
+
}
|
|
2215
2265
|
.opacity-100 {
|
|
2216
2266
|
opacity: 100%;
|
|
2217
2267
|
}
|
|
@@ -2920,6 +2970,13 @@
|
|
|
2920
2970
|
}
|
|
2921
2971
|
}
|
|
2922
2972
|
}
|
|
2973
|
+
.hover\:bg-accent {
|
|
2974
|
+
&:hover {
|
|
2975
|
+
@media (hover: hover) {
|
|
2976
|
+
background-color: var(--accent);
|
|
2977
|
+
}
|
|
2978
|
+
}
|
|
2979
|
+
}
|
|
2923
2980
|
.hover\:bg-muted {
|
|
2924
2981
|
&:hover {
|
|
2925
2982
|
@media (hover: hover) {
|
|
@@ -2927,6 +2984,16 @@
|
|
|
2927
2984
|
}
|
|
2928
2985
|
}
|
|
2929
2986
|
}
|
|
2987
|
+
.hover\:bg-primary\/85 {
|
|
2988
|
+
&:hover {
|
|
2989
|
+
@media (hover: hover) {
|
|
2990
|
+
background-color: var(--primary);
|
|
2991
|
+
@supports (color: color-mix(in lab, red, red)) {
|
|
2992
|
+
background-color: color-mix(in oklab, var(--primary) 85%, transparent);
|
|
2993
|
+
}
|
|
2994
|
+
}
|
|
2995
|
+
}
|
|
2996
|
+
}
|
|
2930
2997
|
.hover\:pr-6 {
|
|
2931
2998
|
&:hover {
|
|
2932
2999
|
@media (hover: hover) {
|
|
@@ -3089,6 +3156,11 @@
|
|
|
3089
3156
|
transition: filter 0.1s ease-in-out;
|
|
3090
3157
|
}
|
|
3091
3158
|
}
|
|
3159
|
+
.disabled\:pointer-events-none {
|
|
3160
|
+
&:disabled {
|
|
3161
|
+
pointer-events: none;
|
|
3162
|
+
}
|
|
3163
|
+
}
|
|
3092
3164
|
.disabled\:disabled-effect {
|
|
3093
3165
|
&:disabled {
|
|
3094
3166
|
cursor: not-allowed;
|
|
@@ -3116,6 +3188,16 @@
|
|
|
3116
3188
|
box-shadow: none;
|
|
3117
3189
|
}
|
|
3118
3190
|
}
|
|
3191
|
+
.disabled\:cursor-wait {
|
|
3192
|
+
&:disabled {
|
|
3193
|
+
cursor: wait;
|
|
3194
|
+
}
|
|
3195
|
+
}
|
|
3196
|
+
.disabled\:opacity-60 {
|
|
3197
|
+
&:disabled {
|
|
3198
|
+
opacity: 60%;
|
|
3199
|
+
}
|
|
3200
|
+
}
|
|
3119
3201
|
.disabled\:opacity-100 {
|
|
3120
3202
|
&:disabled {
|
|
3121
3203
|
opacity: 100%;
|
|
@@ -3293,6 +3375,12 @@
|
|
|
3293
3375
|
border-style: none;
|
|
3294
3376
|
}
|
|
3295
3377
|
}
|
|
3378
|
+
.dark\:shadow-modal-dark {
|
|
3379
|
+
&:where(.dark, .dark *) {
|
|
3380
|
+
--tw-shadow: 0px 0px 24px 4px var(--tw-shadow-color, rgba(255, 255, 255, 0.06)), 0px 44px 48px -12px var(--tw-shadow-color, rgba(255, 255, 255, 0.08)), 0px 2px 8px 0px var(--tw-shadow-color, rgba(255, 255, 255, 0.04));
|
|
3381
|
+
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
|
|
3382
|
+
}
|
|
3383
|
+
}
|
|
3296
3384
|
.dark\:ring-white\/10 {
|
|
3297
3385
|
&:where(.dark, .dark *) {
|
|
3298
3386
|
--tw-ring-color: color-mix(in srgb, hsl(0 0% 100%) 10%, transparent);
|
|
@@ -3416,6 +3504,11 @@
|
|
|
3416
3504
|
fill: var(--color-red-500);
|
|
3417
3505
|
}
|
|
3418
3506
|
}
|
|
3507
|
+
.\[\&_p\:empty\]\:hidden {
|
|
3508
|
+
& p:empty {
|
|
3509
|
+
display: none;
|
|
3510
|
+
}
|
|
3511
|
+
}
|
|
3419
3512
|
.\[\&_svg\]\:pointer-events-none {
|
|
3420
3513
|
& svg {
|
|
3421
3514
|
pointer-events: none;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d22e5acd-014d-560f-a589-64e7fe7b7685")}catch(e){}}();
|
|
3
3
|
import { createElement } from "react";
|
|
4
|
-
import { ToastContainer, toast } from "@powerhousedao/design-system/connect/toast";
|
|
4
|
+
import { ToastContainer, dismiss, toast } from "@powerhousedao/design-system/connect/toast";
|
|
5
5
|
//#region src/services/toast.ts
|
|
6
6
|
const CONNECT_TOAST_CONTAINER_ID = "connect";
|
|
7
7
|
const ToastContainer$1 = (props = {}) => createElement(ToastContainer, {
|
|
@@ -16,8 +16,11 @@ function toast$1(content, options) {
|
|
|
16
16
|
...restOptions
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
+
function dismissToast(toastId) {
|
|
20
|
+
return dismiss(toastId);
|
|
21
|
+
}
|
|
19
22
|
//#endregion
|
|
20
|
-
export { toast$1 as
|
|
23
|
+
export { dismissToast as n, toast$1 as r, ToastContainer$1 as t };
|
|
21
24
|
|
|
22
|
-
//# sourceMappingURL=toast-
|
|
23
|
-
//# debugId=
|
|
25
|
+
//# sourceMappingURL=toast-CO6ChlzE.js.map
|
|
26
|
+
//# debugId=d22e5acd-014d-560f-a589-64e7fe7b7685
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast-CO6ChlzE.js","sources":["../src/services/toast.ts"],"sourcesContent":["import type { ConnectToastOptions } from \"@powerhousedao/design-system/connect/toast\";\nimport {\n ToastContainer as BaseToastContainer,\n dismiss as baseDismiss,\n toast as baseToast,\n} from \"@powerhousedao/design-system/connect/toast\";\nimport { createElement, type ComponentProps } from \"react\";\n\nexport const CONNECT_TOAST_CONTAINER_ID = \"connect\";\n\ntype BaseToastContainerProps = ComponentProps<typeof BaseToastContainer>;\n\nexport const ToastContainer = (\n props: Omit<BaseToastContainerProps, \"containerId\"> = {},\n) =>\n createElement(BaseToastContainer, {\n containerId: CONNECT_TOAST_CONTAINER_ID,\n ...props,\n });\n\ntype ToastArgs = Parameters<typeof baseToast>;\nexport function toast(content: ToastArgs[0], options?: ConnectToastOptions) {\n const {\n type = \"default\",\n containerId = CONNECT_TOAST_CONTAINER_ID,\n ...restOptions\n } = options || {};\n return baseToast(content, { type, containerId, ...restOptions });\n}\n\nexport function dismissToast(toastId: string | number) {\n return baseDismiss(toastId);\n}\n"],"names":["ToastContainer","BaseToastContainer","toast","baseToast","baseDismiss"],"mappings":";;;;;AAQA,MAAa,6BAA6B;AAI1C,MAAaA,oBACX,QAAsD,EAAE,KAExD,cAAcC,gBAAoB;CAChC,aAAa;CACb,GAAG;CACJ,CAAC;AAGJ,SAAgBC,QAAM,SAAuB,SAA+B;CAC1E,MAAM,EACJ,OAAO,WACP,cAAc,4BACd,GAAG,gBACD,WAAW,EAAE;AACjB,QAAOC,MAAU,SAAS;EAAE;EAAM;EAAa,GAAG;EAAa,CAAC;;AAGlE,SAAgB,aAAa,SAA0B;AACrD,QAAOC,QAAY,QAAQ","debug_id":"d22e5acd-014d-560f-a589-64e7fe7b7685"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a9c447f4-bb72-553a-9b6f-82cb39a7bd7e")}catch(e){}}();
|
|
3
|
+
import { useCallback, useMemo } from "react";
|
|
4
|
+
import { openRenown, showPHModal, useRenownAuth, useRenownLoginMethods } from "@powerhousedao/reactor-browser";
|
|
5
|
+
//#region src/hooks/use-renown-login.ts
|
|
6
|
+
function useOpenRenownLogin() {
|
|
7
|
+
const methods = useRenownLoginMethods();
|
|
8
|
+
return useCallback(() => {
|
|
9
|
+
if (methods.length > 0) showPHModal({ type: "login" });
|
|
10
|
+
else openRenown();
|
|
11
|
+
}, [methods]);
|
|
12
|
+
}
|
|
13
|
+
const LAST_METHOD_KEY = "renown:last-login-method";
|
|
14
|
+
function getLastLoginMethod() {
|
|
15
|
+
try {
|
|
16
|
+
return localStorage.getItem(LAST_METHOD_KEY);
|
|
17
|
+
} catch {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function setLastLoginMethod(method) {
|
|
22
|
+
try {
|
|
23
|
+
localStorage.setItem(LAST_METHOD_KEY, method);
|
|
24
|
+
} catch {}
|
|
25
|
+
}
|
|
26
|
+
function useRenownLoginProps() {
|
|
27
|
+
const { login, pending, error } = useRenownAuth();
|
|
28
|
+
const onLogin = useCallback(() => login(), [login]);
|
|
29
|
+
const baseMethods = useRenownLoginMethods();
|
|
30
|
+
return {
|
|
31
|
+
onLogin,
|
|
32
|
+
methods: useMemo(() => {
|
|
33
|
+
const lastUsed = getLastLoginMethod();
|
|
34
|
+
return baseMethods.map((method) => ({
|
|
35
|
+
id: method.id,
|
|
36
|
+
label: method.label,
|
|
37
|
+
lastUsed: lastUsed === method.id,
|
|
38
|
+
onSelect: () => {
|
|
39
|
+
setLastLoginMethod(method.id);
|
|
40
|
+
login(void 0, method.id);
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
}, [baseMethods, login]),
|
|
44
|
+
loading: pending,
|
|
45
|
+
error: error?.message ?? null
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { useRenownLoginProps as n, useOpenRenownLogin as t };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=use-renown-login-BtGljnB4.js.map
|
|
52
|
+
//# debugId=a9c447f4-bb72-553a-9b6f-82cb39a7bd7e
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-renown-login-BtGljnB4.js","sources":["../src/hooks/use-renown-login.ts"],"sourcesContent":["import type { RenownLoginOption } from \"@powerhousedao/design-system/connect\";\nimport {\n openRenown,\n showPHModal,\n useRenownAuth,\n useRenownLoginMethods,\n} from \"@powerhousedao/reactor-browser\";\nimport { useCallback, useMemo } from \"react\";\n\n// Opens the in-page login modal when wallet adapters are configured; otherwise\n// redirects straight to the Renown portal (no modal with only a redirect button).\nexport function useOpenRenownLogin(): () => void {\n const methods = useRenownLoginMethods();\n return useCallback(() => {\n if (methods.length > 0) {\n showPHModal({ type: \"login\" });\n } else {\n openRenown();\n }\n }, [methods]);\n}\n\nexport interface RenownLoginProps {\n onLogin: () => void;\n // One option per configured login method (wallet, Google, email, …). Empty\n // only when no adapters are configured (the redirect Connect button is used).\n methods: RenownLoginOption[];\n loading: boolean;\n error: string | null;\n}\n\nconst LAST_METHOD_KEY = \"renown:last-login-method\";\n\nfunction getLastLoginMethod(): string | null {\n try {\n return localStorage.getItem(LAST_METHOD_KEY);\n } catch {\n return null;\n }\n}\n\nfunction setLastLoginMethod(method: string): void {\n try {\n localStorage.setItem(LAST_METHOD_KEY, method);\n } catch {\n // localStorage unavailable (private mode / SSR) — the badge is optional.\n }\n}\n\n// Single source of the login wiring shared by every Connect CTA: in-page\n// sign-in (with redirect fallback) plus pending/error feedback.\nexport function useRenownLoginProps(): RenownLoginProps {\n const { login, pending, error } = useRenownAuth();\n const onLogin = useCallback(() => login(), [login]);\n\n // Method list (labels) comes from the shared primitive; Connect adds the\n // last-used badge + the onSelect wiring for its design-system card.\n const baseMethods = useRenownLoginMethods();\n\n const methods = useMemo<RenownLoginOption[]>(() => {\n const lastUsed = getLastLoginMethod();\n return baseMethods.map((method) => ({\n id: method.id,\n label: method.label,\n lastUsed: lastUsed === method.id,\n onSelect: () => {\n setLastLoginMethod(method.id);\n login(undefined, method.id);\n },\n }));\n }, [baseMethods, login]);\n\n return { onLogin, methods, loading: pending, error: error?.message ?? null };\n}\n"],"names":[],"mappings":";;;;;AAWA,SAAgB,qBAAiC;CAC/C,MAAM,UAAU,uBAAuB;AACvC,QAAO,kBAAkB;AACvB,MAAI,QAAQ,SAAS,EACnB,aAAY,EAAE,MAAM,SAAS,CAAC;MAE9B,aAAY;IAEb,CAAC,QAAQ,CAAC;;AAYf,MAAM,kBAAkB;AAExB,SAAS,qBAAoC;AAC3C,KAAI;AACF,SAAO,aAAa,QAAQ,gBAAgB;SACtC;AACN,SAAO;;;AAIX,SAAS,mBAAmB,QAAsB;AAChD,KAAI;AACF,eAAa,QAAQ,iBAAiB,OAAO;SACvC;;AAOV,SAAgB,sBAAwC;CACtD,MAAM,EAAE,OAAO,SAAS,UAAU,eAAe;CACjD,MAAM,UAAU,kBAAkB,OAAO,EAAE,CAAC,MAAM,CAAC;CAInD,MAAM,cAAc,uBAAuB;AAe3C,QAAO;EAAE;EAAS,SAbF,cAAmC;GACjD,MAAM,WAAW,oBAAoB;AACrC,UAAO,YAAY,KAAK,YAAY;IAClC,IAAI,OAAO;IACX,OAAO,OAAO;IACd,UAAU,aAAa,OAAO;IAC9B,gBAAgB;AACd,wBAAmB,OAAO,GAAG;AAC7B,WAAM,KAAA,GAAW,OAAO,GAAG;;IAE9B,EAAE;KACF,CAAC,aAAa,MAAM,CAAC;EAEG,SAAS;EAAS,OAAO,OAAO,WAAW;EAAM","debug_id":"a9c447f4-bb72-553a-9b6f-82cb39a7bd7e"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a2bca0ce-adce-512d-a646-5adf41d1dd3f")}catch(e){}}();
|
|
3
|
+
import { n as getRuntimeConfig } from "./runtime-config-DL3QjcfM.js";
|
|
4
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
|
+
import { getPackagePage, getPackagesForDocumentType, trimTrailingSlash, useVetraPackageManager } from "@powerhousedao/reactor-browser";
|
|
6
|
+
import { slimManifest } from "@powerhousedao/shared/registry/manifest-slim";
|
|
7
|
+
//#region src/hooks/useRegistryPackages.ts
|
|
8
|
+
/** Page size for the paginated Available-packages listing. */
|
|
9
|
+
const AVAILABLE_PAGE_SIZE = 30;
|
|
10
|
+
function useRegistryPackages() {
|
|
11
|
+
const packageManager = useVetraPackageManager();
|
|
12
|
+
const packageManagerPackages = packageManager?.packages;
|
|
13
|
+
const registryUrl = getRuntimeConfig().packageRegistryUrl ?? null;
|
|
14
|
+
const [registryPackagesMap, setRegistryPackagesMap] = useBestEffortLocalStorage(`REGISTRY_PACKAGES:${registryUrl === null ? null : trimTrailingSlash(registryUrl)}`, {});
|
|
15
|
+
const registryPackageList = useMemo(() => {
|
|
16
|
+
return Array.from(Object.values(registryPackagesMap)).filter((p) => p !== void 0);
|
|
17
|
+
}, [registryPackagesMap]);
|
|
18
|
+
const installedPackages = useMemo(() => registryPackageList.filter((p) => p.status === "local-install" || p.status === "registry-install"), [registryPackageList]);
|
|
19
|
+
const [availableOrder, setAvailableOrder] = useState([]);
|
|
20
|
+
const [availableTotal, setAvailableTotal] = useState(null);
|
|
21
|
+
const [availableHasMore, setAvailableHasMore] = useState(false);
|
|
22
|
+
const [isLoadingAvailable, setIsLoadingAvailable] = useState(false);
|
|
23
|
+
const [isLoadingMoreAvailable, setIsLoadingMoreAvailable] = useState(false);
|
|
24
|
+
const [availableError, setAvailableError] = useState(false);
|
|
25
|
+
const availableQueryRef = useRef("");
|
|
26
|
+
const nextOffsetRef = useRef(0);
|
|
27
|
+
const requestGenerationRef = useRef(0);
|
|
28
|
+
const debounceRef = useRef(null);
|
|
29
|
+
const availablePackages = useMemo(() => availableOrder.map((name) => registryPackagesMap[name]).filter((p) => p !== void 0 && (p.status === "available" || p.status === "dismissed")), [availableOrder, registryPackagesMap]);
|
|
30
|
+
const fetchAvailablePage = useCallback(async ({ reset }) => {
|
|
31
|
+
if (registryUrl === null || !packageManager) return;
|
|
32
|
+
const generation = ++requestGenerationRef.current;
|
|
33
|
+
const offset = reset ? 0 : nextOffsetRef.current;
|
|
34
|
+
const search = availableQueryRef.current;
|
|
35
|
+
if (reset) setIsLoadingAvailable(true);
|
|
36
|
+
else setIsLoadingMoreAvailable(true);
|
|
37
|
+
setAvailableError(false);
|
|
38
|
+
try {
|
|
39
|
+
const page = await getPackagePage(registryUrl, {
|
|
40
|
+
limit: AVAILABLE_PAGE_SIZE,
|
|
41
|
+
offset,
|
|
42
|
+
search: search || void 0
|
|
43
|
+
});
|
|
44
|
+
if (generation !== requestGenerationRef.current) return;
|
|
45
|
+
setRegistryPackagesMap((oldPackages) => {
|
|
46
|
+
const next = { ...oldPackages };
|
|
47
|
+
for (const item of page.items) {
|
|
48
|
+
const existing = next[item.name];
|
|
49
|
+
if (!existing) {
|
|
50
|
+
const status = getPackageStatusFromPackageSource(packageManager.getPackageSource(item.name));
|
|
51
|
+
next[item.name] = makeRegistryPackageFromListItem(item, status);
|
|
52
|
+
} else next[item.name] = {
|
|
53
|
+
...existing,
|
|
54
|
+
version: packageManager.getPackageVersion(item.name) ?? item.version ?? existing.version,
|
|
55
|
+
status: promoteStatus(existing.status, packageManager.getPackageSource(item.name))
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return next;
|
|
59
|
+
});
|
|
60
|
+
setAvailableOrder((prev) => {
|
|
61
|
+
const base = reset ? [] : prev;
|
|
62
|
+
const seen = new Set(base);
|
|
63
|
+
const merged = [...base];
|
|
64
|
+
for (const item of page.items) if (!seen.has(item.name)) {
|
|
65
|
+
seen.add(item.name);
|
|
66
|
+
merged.push(item.name);
|
|
67
|
+
}
|
|
68
|
+
return merged;
|
|
69
|
+
});
|
|
70
|
+
nextOffsetRef.current = offset + page.items.length;
|
|
71
|
+
setAvailableTotal(page.total);
|
|
72
|
+
setAvailableHasMore(page.hasMore);
|
|
73
|
+
} catch (error) {
|
|
74
|
+
if (generation !== requestGenerationRef.current) return;
|
|
75
|
+
console.error(error);
|
|
76
|
+
setAvailableError(true);
|
|
77
|
+
} finally {
|
|
78
|
+
if (generation === requestGenerationRef.current) {
|
|
79
|
+
setIsLoadingAvailable(false);
|
|
80
|
+
setIsLoadingMoreAvailable(false);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}, [
|
|
84
|
+
registryUrl,
|
|
85
|
+
packageManager,
|
|
86
|
+
setRegistryPackagesMap
|
|
87
|
+
]);
|
|
88
|
+
/** Debounced server search — resets to page 1 for the new query. */
|
|
89
|
+
const setAvailableSearch = useCallback((query) => {
|
|
90
|
+
availableQueryRef.current = query;
|
|
91
|
+
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
92
|
+
debounceRef.current = setTimeout(() => {
|
|
93
|
+
fetchAvailablePage({ reset: true });
|
|
94
|
+
}, 300);
|
|
95
|
+
}, [fetchAvailablePage]);
|
|
96
|
+
/** Load the next page (infinite scroll). No-op when exhausted/busy. */
|
|
97
|
+
const loadMoreAvailable = useCallback(() => {
|
|
98
|
+
if (!availableHasMore || isLoadingAvailable || isLoadingMoreAvailable) return;
|
|
99
|
+
fetchAvailablePage({ reset: false });
|
|
100
|
+
}, [
|
|
101
|
+
availableHasMore,
|
|
102
|
+
isLoadingAvailable,
|
|
103
|
+
isLoadingMoreAvailable,
|
|
104
|
+
fetchAvailablePage
|
|
105
|
+
]);
|
|
106
|
+
/**
|
|
107
|
+
* Load page 1 the first time the Available tab is opened. Re-opening keeps
|
|
108
|
+
* the accumulated pages; a fetch error leaves the panel's Retry to re-fetch
|
|
109
|
+
* (this guard avoids auto-retry loops on tab re-open).
|
|
110
|
+
*/
|
|
111
|
+
function ensureAvailableLoaded() {
|
|
112
|
+
if (availableOrder.length > 0 || isLoadingAvailable || availableError) return;
|
|
113
|
+
fetchAvailablePage({ reset: true });
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Fetch full package info for a document type (via the legacy
|
|
117
|
+
* `?documentType=` filter) and merge into the map. Lets MissingPackageModal
|
|
118
|
+
* offer installs without loading the whole paginated listing.
|
|
119
|
+
*/
|
|
120
|
+
const fetchPackagesByDocumentType = useCallback(async (documentType) => {
|
|
121
|
+
if (registryUrl === null || !packageManager) return [];
|
|
122
|
+
try {
|
|
123
|
+
const infos = await getPackagesForDocumentType(registryUrl, documentType);
|
|
124
|
+
setRegistryPackagesMap((oldPackages) => {
|
|
125
|
+
const next = { ...oldPackages };
|
|
126
|
+
for (const info of infos) {
|
|
127
|
+
const existing = next[info.name];
|
|
128
|
+
const status = getPackageStatusFromPackageSource(packageManager.getPackageSource(info.name));
|
|
129
|
+
next[info.name] = existing ? {
|
|
130
|
+
...existing,
|
|
131
|
+
status: promoteStatus(existing.status, packageManager.getPackageSource(info.name))
|
|
132
|
+
} : makeRegistryPackageFromPackageInfo(info, status);
|
|
133
|
+
}
|
|
134
|
+
return next;
|
|
135
|
+
});
|
|
136
|
+
return infos.map((info) => makeRegistryPackageFromPackageInfo(info, getPackageStatusFromPackageSource(packageManager.getPackageSource(info.name))));
|
|
137
|
+
} catch (error) {
|
|
138
|
+
console.error(error);
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
}, [
|
|
142
|
+
registryUrl,
|
|
143
|
+
packageManager,
|
|
144
|
+
setRegistryPackagesMap
|
|
145
|
+
]);
|
|
146
|
+
useEffect(() => () => {
|
|
147
|
+
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
148
|
+
}, []);
|
|
149
|
+
useEffect(() => {
|
|
150
|
+
if (!packageManager) return;
|
|
151
|
+
if (packageManagerPackages?.length) for (const packageManagerPackage of packageManagerPackages) setRegistryPackagesMap((existingRegistryPackages) => {
|
|
152
|
+
const packageName = packageManagerPackage.manifest.name;
|
|
153
|
+
const existingPackage = existingRegistryPackages[packageName];
|
|
154
|
+
const newRegistryPackages = { ...existingRegistryPackages };
|
|
155
|
+
const version = packageManager.getPackageVersion(packageName);
|
|
156
|
+
if (existingPackage) newRegistryPackages[packageName] = {
|
|
157
|
+
...existingPackage,
|
|
158
|
+
version: version ?? existingPackage.version,
|
|
159
|
+
status: promoteStatus(existingPackage.status, packageManager.getPackageSource(packageName))
|
|
160
|
+
};
|
|
161
|
+
else newRegistryPackages[packageName] = makeRegistryPackageFromDocumentModelLib(packageManagerPackage, getPackageStatusFromPackageSource(packageManager.getPackageSource(packageName)), version);
|
|
162
|
+
return newRegistryPackages;
|
|
163
|
+
});
|
|
164
|
+
}, [packageManagerPackages]);
|
|
165
|
+
function updateRegistryPackageStatus(packageName, newStatus) {
|
|
166
|
+
setRegistryPackagesMap((oldRegistryPackages) => {
|
|
167
|
+
const newRegistryPackages = { ...oldRegistryPackages };
|
|
168
|
+
const newRegistryPackage = newRegistryPackages[packageName];
|
|
169
|
+
if (!newRegistryPackage) {
|
|
170
|
+
console.error("Attempting to update status for package that does not exist.");
|
|
171
|
+
return newRegistryPackages;
|
|
172
|
+
}
|
|
173
|
+
newRegistryPackages[packageName] = {
|
|
174
|
+
...newRegistryPackage,
|
|
175
|
+
status: newStatus
|
|
176
|
+
};
|
|
177
|
+
return newRegistryPackages;
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Register a freshly-installed package that came in via the npm-uplink
|
|
182
|
+
* fallback — the user typed a bare name, our local `/packages` didn't know
|
|
183
|
+
* it, but the install succeeded because verdaccio proxy-fetched the tarball.
|
|
184
|
+
*
|
|
185
|
+
* This is the one legitimate case where the status update runs against a
|
|
186
|
+
* name that wasn't in the registry map. We treat it as an insert rather
|
|
187
|
+
* than logging the "does not exist" error. Data is pulled from the loaded
|
|
188
|
+
* module so the UI card shows the real manifest immediately; the next
|
|
189
|
+
* `/packages` refresh will add `versions`/`distTags`.
|
|
190
|
+
*/
|
|
191
|
+
function registerFallbackRegistryPackage(packageName, loadedPackage, version, status) {
|
|
192
|
+
setRegistryPackagesMap((oldRegistryPackages) => {
|
|
193
|
+
const newRegistryPackages = { ...oldRegistryPackages };
|
|
194
|
+
newRegistryPackages[packageName] = {
|
|
195
|
+
...makeRegistryPackageFromDocumentModelLib(loadedPackage, status, version),
|
|
196
|
+
name: packageName
|
|
197
|
+
};
|
|
198
|
+
return newRegistryPackages;
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
return {
|
|
202
|
+
registryPackagesMap,
|
|
203
|
+
registryPackageList,
|
|
204
|
+
installedPackages,
|
|
205
|
+
availablePackages,
|
|
206
|
+
availableTotal,
|
|
207
|
+
availableHasMore,
|
|
208
|
+
isLoadingAvailable,
|
|
209
|
+
isLoadingMoreAvailable,
|
|
210
|
+
availableError,
|
|
211
|
+
ensureAvailableLoaded,
|
|
212
|
+
fetchAvailablePage,
|
|
213
|
+
loadMoreAvailable,
|
|
214
|
+
setAvailableSearch,
|
|
215
|
+
fetchPackagesByDocumentType,
|
|
216
|
+
updateRegistryPackageStatus,
|
|
217
|
+
registerFallbackRegistryPackage
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Build a RegistryPackage from a trimmed paginated list item. Version metadata
|
|
222
|
+
* (distTags/versions) and documentTypes are absent — the row lazy-loads them.
|
|
223
|
+
*/
|
|
224
|
+
function makeRegistryPackageFromListItem(item, status) {
|
|
225
|
+
return {
|
|
226
|
+
name: item.name,
|
|
227
|
+
path: item.path,
|
|
228
|
+
documentTypes: [],
|
|
229
|
+
version: item.version,
|
|
230
|
+
status,
|
|
231
|
+
manifest: {
|
|
232
|
+
name: item.name,
|
|
233
|
+
...item.description !== void 0 ? { description: item.description } : {},
|
|
234
|
+
...item.category !== void 0 ? { category: item.category } : {},
|
|
235
|
+
...item.publisher !== void 0 ? { publisher: item.publisher } : {}
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
function makeRegistryPackageFromDocumentModelLib(documentModelLib, status, version) {
|
|
240
|
+
return {
|
|
241
|
+
name: documentModelLib.manifest.name,
|
|
242
|
+
path: "stub-path",
|
|
243
|
+
documentTypes: documentModelLib.documentModels.map((d) => d.documentModel.global.id),
|
|
244
|
+
status,
|
|
245
|
+
manifest: slimManifest(documentModelLib.manifest),
|
|
246
|
+
version
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
function makeRegistryPackageFromPackageInfo(packageInfo, status) {
|
|
250
|
+
return {
|
|
251
|
+
...packageInfo,
|
|
252
|
+
manifest: slimManifest(packageInfo.manifest),
|
|
253
|
+
documentTypes: packageInfo.manifest?.documentModels?.map((d) => d.id) ?? [],
|
|
254
|
+
status
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Like usehooks-ts' useLocalStorage, but persistence is best-effort: a failed
|
|
259
|
+
* `setItem` (e.g. QuotaExceededError on an oversized payload) keeps the
|
|
260
|
+
* in-memory state so the package manager still works for the session.
|
|
261
|
+
* useLocalStorage couples the state update to the write — when the write
|
|
262
|
+
* threw, the freshly fetched package list was discarded and the registry UI
|
|
263
|
+
* rendered (and searched) an empty list.
|
|
264
|
+
*
|
|
265
|
+
* The key is derived from the boot-time runtime config and never changes
|
|
266
|
+
* within a session, so no key-change rehydration is needed.
|
|
267
|
+
*/
|
|
268
|
+
function useBestEffortLocalStorage(key, initialValue) {
|
|
269
|
+
const [value, setValue] = useState(() => readJsonFromStorage(key) ?? initialValue);
|
|
270
|
+
useEffect(() => {
|
|
271
|
+
try {
|
|
272
|
+
window.localStorage.setItem(key, JSON.stringify(value));
|
|
273
|
+
} catch (error) {
|
|
274
|
+
try {
|
|
275
|
+
window.localStorage.removeItem(key);
|
|
276
|
+
window.localStorage.setItem(key, JSON.stringify(value));
|
|
277
|
+
} catch {
|
|
278
|
+
console.warn(`Failed to persist "${key}" to localStorage; continuing with in-memory data.`, error);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}, [key, value]);
|
|
282
|
+
return [value, setValue];
|
|
283
|
+
}
|
|
284
|
+
function readJsonFromStorage(key) {
|
|
285
|
+
try {
|
|
286
|
+
const raw = window.localStorage.getItem(key);
|
|
287
|
+
return raw === null ? null : JSON.parse(raw);
|
|
288
|
+
} catch {
|
|
289
|
+
return null;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* When refreshing a cached entry, promote `"available"` to whatever the
|
|
294
|
+
* packageManager now reports — the cached `"available"` was almost certainly
|
|
295
|
+
* recorded before `packageManager.addPackages()` finished on a prior session.
|
|
296
|
+
* Never downgrade an already-installed entry, and never overwrite a deliberate
|
|
297
|
+
* `"dismissed"` choice.
|
|
298
|
+
*/
|
|
299
|
+
function promoteStatus(cachedStatus, packageSource) {
|
|
300
|
+
if (cachedStatus !== "available") return cachedStatus;
|
|
301
|
+
if (packageSource === null) return cachedStatus;
|
|
302
|
+
return getPackageStatusFromPackageSource(packageSource);
|
|
303
|
+
}
|
|
304
|
+
function getPackageStatusFromPackageSource(packageSource) {
|
|
305
|
+
if (packageSource === null) return "available";
|
|
306
|
+
if (packageSource === "local-install" || packageSource === "common" || packageSource === "project") return "local-install";
|
|
307
|
+
if (packageSource === "registry-install") return "registry-install";
|
|
308
|
+
return "available";
|
|
309
|
+
}
|
|
310
|
+
//#endregion
|
|
311
|
+
export { useRegistryPackages as t };
|
|
312
|
+
|
|
313
|
+
//# sourceMappingURL=useRegistryPackages-DMhCvTWq.js.map
|
|
314
|
+
//# debugId=a2bca0ce-adce-512d-a646-5adf41d1dd3f
|