jazz-tools 0.19.8 → 0.19.11

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 (154) hide show
  1. package/.turbo/turbo-build.log +56 -50
  2. package/CHANGELOG.md +30 -3
  3. package/dist/{chunk-2S3Z2CN6.js → chunk-HX5S6W5E.js} +372 -103
  4. package/dist/chunk-HX5S6W5E.js.map +1 -0
  5. package/dist/index.js +1 -1
  6. package/dist/inspector/account-switcher.d.ts +4 -0
  7. package/dist/inspector/account-switcher.d.ts.map +1 -0
  8. package/dist/inspector/chunk-C6BJPHBQ.js +4096 -0
  9. package/dist/inspector/chunk-C6BJPHBQ.js.map +1 -0
  10. package/dist/inspector/contexts/node.d.ts +19 -0
  11. package/dist/inspector/contexts/node.d.ts.map +1 -0
  12. package/dist/inspector/{custom-element-P76EIWEV.js → custom-element-GJVBPZES.js} +1011 -884
  13. package/dist/inspector/custom-element-GJVBPZES.js.map +1 -0
  14. package/dist/inspector/{viewer/new-app.d.ts → in-app.d.ts} +3 -3
  15. package/dist/inspector/in-app.d.ts.map +1 -0
  16. package/dist/inspector/index.d.ts +0 -11
  17. package/dist/inspector/index.d.ts.map +1 -1
  18. package/dist/inspector/index.js +56 -3910
  19. package/dist/inspector/index.js.map +1 -1
  20. package/dist/inspector/pages/home.d.ts +2 -0
  21. package/dist/inspector/pages/home.d.ts.map +1 -0
  22. package/dist/inspector/register-custom-element.js +1 -1
  23. package/dist/inspector/router/context.d.ts +12 -0
  24. package/dist/inspector/router/context.d.ts.map +1 -0
  25. package/dist/inspector/router/hash-router.d.ts +7 -0
  26. package/dist/inspector/router/hash-router.d.ts.map +1 -0
  27. package/dist/inspector/router/in-memory-router.d.ts +7 -0
  28. package/dist/inspector/router/in-memory-router.d.ts.map +1 -0
  29. package/dist/inspector/router/index.d.ts +5 -0
  30. package/dist/inspector/router/index.d.ts.map +1 -0
  31. package/dist/inspector/standalone.d.ts +6 -0
  32. package/dist/inspector/standalone.d.ts.map +1 -0
  33. package/dist/inspector/standalone.js +420 -0
  34. package/dist/inspector/standalone.js.map +1 -0
  35. package/dist/inspector/tests/router/hash-router.test.d.ts +2 -0
  36. package/dist/inspector/tests/router/hash-router.test.d.ts.map +1 -0
  37. package/dist/inspector/tests/router/in-memory-router.test.d.ts +2 -0
  38. package/dist/inspector/tests/router/in-memory-router.test.d.ts.map +1 -0
  39. package/dist/inspector/ui/modal.d.ts +1 -0
  40. package/dist/inspector/ui/modal.d.ts.map +1 -1
  41. package/dist/inspector/viewer/breadcrumbs.d.ts +1 -7
  42. package/dist/inspector/viewer/breadcrumbs.d.ts.map +1 -1
  43. package/dist/inspector/viewer/header.d.ts +7 -0
  44. package/dist/inspector/viewer/header.d.ts.map +1 -0
  45. package/dist/inspector/viewer/page-stack.d.ts +4 -13
  46. package/dist/inspector/viewer/page-stack.d.ts.map +1 -1
  47. package/dist/inspector/viewer/page.d.ts.map +1 -1
  48. package/dist/react/hooks.d.ts +1 -1
  49. package/dist/react/hooks.d.ts.map +1 -1
  50. package/dist/react/index.d.ts +1 -1
  51. package/dist/react/index.d.ts.map +1 -1
  52. package/dist/react/index.js +5 -1
  53. package/dist/react/index.js.map +1 -1
  54. package/dist/react-core/hooks.d.ts +59 -0
  55. package/dist/react-core/hooks.d.ts.map +1 -1
  56. package/dist/react-core/index.js +124 -36
  57. package/dist/react-core/index.js.map +1 -1
  58. package/dist/react-core/tests/testUtils.d.ts +1 -0
  59. package/dist/react-core/tests/testUtils.d.ts.map +1 -1
  60. package/dist/react-core/tests/useSuspenseAccount.test.d.ts +2 -0
  61. package/dist/react-core/tests/useSuspenseAccount.test.d.ts.map +1 -0
  62. package/dist/react-core/tests/useSuspenseCoState.test.d.ts +2 -0
  63. package/dist/react-core/tests/useSuspenseCoState.test.d.ts.map +1 -0
  64. package/dist/react-core/use.d.ts +3 -0
  65. package/dist/react-core/use.d.ts.map +1 -0
  66. package/dist/react-native/index.js +5 -1
  67. package/dist/react-native/index.js.map +1 -1
  68. package/dist/react-native-core/crypto/RNCrypto.d.ts +2 -0
  69. package/dist/react-native-core/crypto/RNCrypto.d.ts.map +1 -0
  70. package/dist/react-native-core/crypto/RNCrypto.js +3 -0
  71. package/dist/react-native-core/crypto/RNCrypto.js.map +1 -0
  72. package/dist/react-native-core/hooks.d.ts +1 -1
  73. package/dist/react-native-core/hooks.d.ts.map +1 -1
  74. package/dist/react-native-core/index.js +5 -1
  75. package/dist/react-native-core/index.js.map +1 -1
  76. package/dist/react-native-core/platform.d.ts +2 -1
  77. package/dist/react-native-core/platform.d.ts.map +1 -1
  78. package/dist/testing.js +1 -1
  79. package/dist/testing.js.map +1 -1
  80. package/dist/tools/coValues/account.d.ts +7 -1
  81. package/dist/tools/coValues/account.d.ts.map +1 -1
  82. package/dist/tools/coValues/interfaces.d.ts +1 -1
  83. package/dist/tools/coValues/interfaces.d.ts.map +1 -1
  84. package/dist/tools/implementation/ContextManager.d.ts +3 -0
  85. package/dist/tools/implementation/ContextManager.d.ts.map +1 -1
  86. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts +8 -1
  87. package/dist/tools/implementation/zodSchema/schemaTypes/AccountSchema.d.ts.map +1 -1
  88. package/dist/tools/implementation/zodSchema/zodCo.d.ts.map +1 -1
  89. package/dist/tools/subscribe/CoValueCoreSubscription.d.ts +8 -22
  90. package/dist/tools/subscribe/CoValueCoreSubscription.d.ts.map +1 -1
  91. package/dist/tools/subscribe/SubscriptionCache.d.ts +51 -0
  92. package/dist/tools/subscribe/SubscriptionCache.d.ts.map +1 -0
  93. package/dist/tools/subscribe/SubscriptionScope.d.ts +17 -1
  94. package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
  95. package/dist/tools/subscribe/utils.d.ts +9 -1
  96. package/dist/tools/subscribe/utils.d.ts.map +1 -1
  97. package/dist/tools/testing.d.ts +2 -2
  98. package/dist/tools/testing.d.ts.map +1 -1
  99. package/dist/tools/tests/SubscriptionCache.test.d.ts +2 -0
  100. package/dist/tools/tests/SubscriptionCache.test.d.ts.map +1 -0
  101. package/package.json +18 -6
  102. package/src/inspector/account-switcher.tsx +440 -0
  103. package/src/inspector/contexts/node.tsx +129 -0
  104. package/src/inspector/custom-element.tsx +2 -2
  105. package/src/inspector/in-app.tsx +61 -0
  106. package/src/inspector/index.tsx +2 -22
  107. package/src/inspector/pages/home.tsx +77 -0
  108. package/src/inspector/router/context.ts +21 -0
  109. package/src/inspector/router/hash-router.tsx +128 -0
  110. package/src/inspector/{viewer/use-page-path.ts → router/in-memory-router.tsx} +31 -29
  111. package/src/inspector/router/index.ts +4 -0
  112. package/src/inspector/standalone.tsx +60 -0
  113. package/src/inspector/tests/router/hash-router.test.tsx +847 -0
  114. package/src/inspector/tests/router/in-memory-router.test.tsx +724 -0
  115. package/src/inspector/ui/modal.tsx +5 -2
  116. package/src/inspector/viewer/breadcrumbs.tsx +5 -11
  117. package/src/inspector/viewer/header.tsx +67 -0
  118. package/src/inspector/viewer/page-stack.tsx +18 -26
  119. package/src/inspector/viewer/page.tsx +0 -1
  120. package/src/react/hooks.tsx +2 -0
  121. package/src/react/index.ts +1 -14
  122. package/src/react-core/hooks.ts +167 -18
  123. package/src/react-core/tests/createCoValueSubscriptionContext.test.tsx +18 -8
  124. package/src/react-core/tests/testUtils.tsx +67 -5
  125. package/src/react-core/tests/useCoState.test.ts +3 -7
  126. package/src/react-core/tests/useSubscriptionSelector.test.ts +3 -7
  127. package/src/react-core/tests/useSuspenseAccount.test.tsx +343 -0
  128. package/src/react-core/tests/useSuspenseCoState.test.tsx +1182 -0
  129. package/src/react-core/use.ts +46 -0
  130. package/src/react-native-core/crypto/RNCrypto.ts +1 -0
  131. package/src/react-native-core/hooks.tsx +2 -0
  132. package/src/react-native-core/platform.ts +2 -1
  133. package/src/tools/coValues/account.ts +13 -2
  134. package/src/tools/coValues/interfaces.ts +2 -3
  135. package/src/tools/implementation/ContextManager.ts +13 -0
  136. package/src/tools/implementation/zodSchema/schemaTypes/AccountSchema.ts +8 -1
  137. package/src/tools/subscribe/CoValueCoreSubscription.ts +71 -100
  138. package/src/tools/subscribe/SubscriptionCache.ts +272 -0
  139. package/src/tools/subscribe/SubscriptionScope.ts +113 -7
  140. package/src/tools/subscribe/utils.ts +77 -0
  141. package/src/tools/testing.ts +0 -3
  142. package/src/tools/tests/CoValueCoreSubscription.test.ts +46 -12
  143. package/src/tools/tests/ContextManager.test.ts +85 -0
  144. package/src/tools/tests/SubscriptionCache.test.ts +237 -0
  145. package/src/tools/tests/account.test.ts +11 -4
  146. package/src/tools/tests/coMap.test.ts +5 -7
  147. package/src/tools/tests/schema.resolved.test.ts +3 -3
  148. package/tsup.config.ts +2 -0
  149. package/dist/chunk-2S3Z2CN6.js.map +0 -1
  150. package/dist/inspector/custom-element-P76EIWEV.js.map +0 -1
  151. package/dist/inspector/viewer/new-app.d.ts.map +0 -1
  152. package/dist/inspector/viewer/use-page-path.d.ts +0 -10
  153. package/dist/inspector/viewer/use-page-path.d.ts.map +0 -1
  154. package/src/inspector/viewer/new-app.tsx +0 -156
@@ -0,0 +1,2 @@
1
+ export declare function HomePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=home.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home.d.ts","sourceRoot":"","sources":["../../../src/inspector/pages/home.tsx"],"names":[],"mappings":"AAQA,wBAAgB,QAAQ,4CAmDvB"}
@@ -1,5 +1,5 @@
1
1
  // src/inspector/register-custom-element.ts
2
2
  if (typeof window !== "undefined" && process.env.NODE_ENV === "development") {
3
- import("./custom-element-P76EIWEV.js");
3
+ import("./custom-element-GJVBPZES.js");
4
4
  }
5
5
  //# sourceMappingURL=register-custom-element.js.map
@@ -0,0 +1,12 @@
1
+ import { CoID, RawCoValue } from "cojson";
2
+ import { PageInfo } from "../viewer/types.js";
3
+ export interface Router {
4
+ path: PageInfo[];
5
+ setPage: (coId: CoID<RawCoValue>) => void;
6
+ addPages: (newPages: PageInfo[]) => void;
7
+ goToIndex: (index: number) => void;
8
+ goBack: () => void;
9
+ }
10
+ export declare const RouterContext: import("react").Context<Router | null>;
11
+ export declare function useRouter(): Router;
12
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/inspector/router/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC1C,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACzC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,wCAAqC,CAAC;AAEhE,wBAAgB,SAAS,IAAI,MAAM,CAMlC"}
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from "react";
2
+ import { PageInfo } from "../viewer/types.js";
3
+ export declare function HashRouterProvider({ children, defaultPath, }: {
4
+ children: ReactNode;
5
+ defaultPath?: PageInfo[];
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=hash-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-router.d.ts","sourceRoot":"","sources":["../../../src/inspector/router/hash-router.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,SAAS,EAKV,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC1B,2CAyFA"}
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from "react";
2
+ import { PageInfo } from "../viewer/types.js";
3
+ export declare function InMemoryRouterProvider({ children, defaultPath, }: {
4
+ children: ReactNode;
5
+ defaultPath?: PageInfo[];
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=in-memory-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-router.d.ts","sourceRoot":"","sources":["../../../src/inspector/router/in-memory-router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA6C,MAAM,OAAO,CAAC;AAG7E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9C,wBAAgB,sBAAsB,CAAC,EACrC,QAAQ,EACR,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC1B,2CAsDA"}
@@ -0,0 +1,5 @@
1
+ export type { Router } from "./context.js";
2
+ export { useRouter } from "./context.js";
3
+ export { InMemoryRouterProvider } from "./in-memory-router.js";
4
+ export { HashRouterProvider } from "./hash-router.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/inspector/router/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,6 @@
1
+ type InspectorAppProps = {
2
+ defaultSyncServer?: string;
3
+ };
4
+ export default function InspectorStandalone(props: InspectorAppProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=standalone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../src/inspector/standalone.tsx"],"names":[],"mappings":"AASA,KAAK,iBAAiB,GAAG;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAIF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,2CAuBnE"}
@@ -0,0 +1,420 @@
1
+ "use client";
2
+ import {
3
+ AccountOrGroupText,
4
+ Button,
5
+ GlobalStyles,
6
+ HashRouterProvider,
7
+ Header,
8
+ Icon,
9
+ Input,
10
+ Modal,
11
+ NodeContext,
12
+ NodeProvider,
13
+ PageStack,
14
+ useNode
15
+ } from "./chunk-C6BJPHBQ.js";
16
+
17
+ // src/inspector/standalone.tsx
18
+ import React2 from "react";
19
+ import { setup, styled as styled2 } from "goober";
20
+
21
+ // src/inspector/account-switcher.tsx
22
+ import { useCallback, useEffect, useState } from "react";
23
+ import { styled } from "goober";
24
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
25
+ function AccountSwitcher({
26
+ defaultSyncServer
27
+ }) {
28
+ const {
29
+ accountID: currentAccountId,
30
+ localNode,
31
+ createLocalNode,
32
+ reset
33
+ } = useNode();
34
+ const [accounts, setAccounts] = useState(() => {
35
+ const storedAccounts = localStorage.getItem("inspectorAccounts");
36
+ return storedAccounts ? JSON.parse(storedAccounts) : [];
37
+ });
38
+ const [isModalOpen, setIsModalOpen] = useState(false);
39
+ const [selectedAccountId, setSelectedAccountId] = useState(() => {
40
+ const lastSelectedAccountId = localStorage.getItem(
41
+ "lastSelectedAccountId"
42
+ );
43
+ return lastSelectedAccountId ? lastSelectedAccountId : currentAccountId;
44
+ });
45
+ const [newAccountId, setNewAccountId] = useState("");
46
+ const [newAccountSecret, setNewAccountSecret] = useState("");
47
+ const [newAccountSyncServer, setNewAccountSyncServer] = useState(
48
+ "wss://cloud.jazz.tools"
49
+ );
50
+ const [addAccountError, setAddAccountError] = useState(null);
51
+ const addAccount = (id, secret, syncServer) => {
52
+ const newAccount = {
53
+ id,
54
+ secret,
55
+ syncServer
56
+ };
57
+ const accountExists = accounts.some((account) => account.id === id);
58
+ if (!accountExists) {
59
+ const updatedAccounts = [...accounts, newAccount];
60
+ setAccounts(updatedAccounts);
61
+ localStorage.setItem(
62
+ "inspectorAccounts",
63
+ JSON.stringify(updatedAccounts)
64
+ );
65
+ setSelectedAccountId(id);
66
+ } else {
67
+ setSelectedAccountId(id);
68
+ }
69
+ setNewAccountId("");
70
+ setNewAccountSecret("");
71
+ setNewAccountSyncServer(syncServer);
72
+ setAddAccountError(null);
73
+ };
74
+ const deleteAccount = (accountId) => {
75
+ const updatedAccounts = accounts.filter(
76
+ (account) => account.id !== accountId
77
+ );
78
+ setAccounts(updatedAccounts);
79
+ localStorage.setItem("inspectorAccounts", JSON.stringify(updatedAccounts));
80
+ if (updatedAccounts.length > 0) {
81
+ setCurrentAccount(updatedAccounts[0].id);
82
+ } else {
83
+ setSelectedAccountId(null);
84
+ localStorage.removeItem("lastSelectedAccountId");
85
+ reset();
86
+ }
87
+ };
88
+ const deleteCurrentAccount = () => {
89
+ if (currentAccountId) {
90
+ deleteAccount(currentAccountId);
91
+ }
92
+ };
93
+ const setCurrentAccount = useCallback(
94
+ async (accountId) => {
95
+ if (accountId === null) {
96
+ localStorage.removeItem("lastSelectedAccountId");
97
+ reset();
98
+ setSelectedAccountId(null);
99
+ return;
100
+ }
101
+ const account = accounts.find((a) => a.id === accountId);
102
+ if (!account) {
103
+ throw new Error(`Account ${accountId} not found in accounts list`);
104
+ }
105
+ const syncServer = account.syncServer || defaultSyncServer || "wss://cloud.jazz.tools";
106
+ await createLocalNode(accountId, account.secret, syncServer);
107
+ setSelectedAccountId(accountId);
108
+ localStorage.setItem("lastSelectedAccountId", accountId);
109
+ },
110
+ [createLocalNode, accounts, defaultSyncServer]
111
+ );
112
+ const handleModalCancel = () => {
113
+ setSelectedAccountId(currentAccountId);
114
+ setNewAccountId("");
115
+ setNewAccountSecret("");
116
+ setNewAccountSyncServer("wss://cloud.jazz.tools/");
117
+ setAddAccountError(null);
118
+ setIsModalOpen(false);
119
+ };
120
+ const handleNewAccountIdChange = (e) => {
121
+ const value = e.target.value;
122
+ setNewAccountId(value);
123
+ if (value.trim().startsWith("{") && value.trim().endsWith("}")) {
124
+ try {
125
+ const parsed = JSON.parse(value);
126
+ if (parsed.accountID && parsed.accountSecret) {
127
+ setNewAccountId(parsed.accountID);
128
+ setNewAccountSecret(parsed.accountSecret);
129
+ }
130
+ } catch (error) {
131
+ console.log("Failed to parse JSON:", error);
132
+ }
133
+ }
134
+ };
135
+ const handleAddAccountSubmit = async (e) => {
136
+ e.preventDefault();
137
+ if (!newAccountId || !newAccountSecret) {
138
+ setAddAccountError("Account ID and secret are required");
139
+ return;
140
+ }
141
+ try {
142
+ addAccount(
143
+ newAccountId,
144
+ newAccountSecret,
145
+ newAccountSyncServer
146
+ );
147
+ setSelectedAccountId(newAccountId);
148
+ setIsModalOpen(false);
149
+ } catch (error) {
150
+ setAddAccountError(
151
+ error instanceof Error ? error.message : "Failed to add account"
152
+ );
153
+ deleteAccount(newAccountId);
154
+ }
155
+ };
156
+ useEffect(() => {
157
+ if (selectedAccountId) {
158
+ setCurrentAccount(selectedAccountId);
159
+ }
160
+ }, [selectedAccountId]);
161
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
162
+ /* @__PURE__ */ jsxs(AccountSwitcherContainer, { children: [
163
+ /* @__PURE__ */ jsx(
164
+ Button,
165
+ {
166
+ variant: "secondary",
167
+ onClick: () => {
168
+ setSelectedAccountId(currentAccountId);
169
+ setIsModalOpen(true);
170
+ },
171
+ className: "max-w-96",
172
+ children: currentAccountId ? localNode ? /* @__PURE__ */ jsx(
173
+ AccountOrGroupText,
174
+ {
175
+ coId: currentAccountId,
176
+ showId: true,
177
+ node: localNode
178
+ }
179
+ ) : currentAccountId : "Select account"
180
+ }
181
+ ),
182
+ currentAccountId && /* @__PURE__ */ jsx(
183
+ Button,
184
+ {
185
+ variant: "secondary",
186
+ onClick: deleteCurrentAccount,
187
+ className: "rounded-md p-2 ml-1",
188
+ "aria-label": "Remove account",
189
+ children: /* @__PURE__ */ jsx(Icon, { name: "delete", className: "text-gray-500" })
190
+ }
191
+ )
192
+ ] }),
193
+ /* @__PURE__ */ jsx(
194
+ Modal,
195
+ {
196
+ isOpen: isModalOpen,
197
+ onClose: handleModalCancel,
198
+ heading: "Select Account",
199
+ showButtons: false,
200
+ wide: true,
201
+ children: /* @__PURE__ */ jsxs(ModalContentGrid, { children: [
202
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(AccountSelectionFieldset, { children: [
203
+ /* @__PURE__ */ jsx("legend", { children: "Accounts" }),
204
+ accounts.length === 0 ? /* @__PURE__ */ jsx("p", { style: { color: "var(--j-text-color)", margin: "0.5rem 0" }, children: "No accounts available. Add one below." }) : accounts.map((account) => /* @__PURE__ */ jsxs(RadioOption, { children: [
205
+ /* @__PURE__ */ jsx(
206
+ "input",
207
+ {
208
+ type: "radio",
209
+ id: `account-${account.id}`,
210
+ name: "account-selection",
211
+ value: account.id,
212
+ checked: selectedAccountId === account.id,
213
+ onChange: (e) => setSelectedAccountId(e.target.value)
214
+ }
215
+ ),
216
+ /* @__PURE__ */ jsx("label", { htmlFor: `account-${account.id}`, children: /* @__PURE__ */ jsxs(AccountLabelContent, { children: [
217
+ localNode ? /* @__PURE__ */ jsx(
218
+ AccountOrGroupText,
219
+ {
220
+ coId: account.id,
221
+ showId: true,
222
+ node: localNode
223
+ }
224
+ ) : account.id,
225
+ /* @__PURE__ */ jsx(SyncServerText, { children: account.syncServer ?? "cloud.jazz.tools" })
226
+ ] }) })
227
+ ] }, account.id))
228
+ ] }) }),
229
+ /* @__PURE__ */ jsxs(ModalAddAccountForm, { onSubmit: handleAddAccountSubmit, children: [
230
+ /* @__PURE__ */ jsx(FormHeading, { children: "Add an account to inspect" }),
231
+ /* @__PURE__ */ jsxs(FormDescription, { children: [
232
+ "Use the ",
233
+ /* @__PURE__ */ jsx(CodeInline, { children: "jazz-logged-in-secret" }),
234
+ " local storage key from within your Jazz app for your account credentials. You can paste the full JSON object or enter the ID and secret separately."
235
+ ] }),
236
+ addAccountError && /* @__PURE__ */ jsx(ErrorText, { children: addAccountError }),
237
+ /* @__PURE__ */ jsx(
238
+ Input,
239
+ {
240
+ label: "Account ID",
241
+ value: newAccountId,
242
+ required: true,
243
+ placeholder: "co_z1234567890abcdef123456789 or paste full JSON",
244
+ onChange: handleNewAccountIdChange
245
+ }
246
+ ),
247
+ /* @__PURE__ */ jsx(
248
+ Input,
249
+ {
250
+ label: "Account secret",
251
+ type: "password",
252
+ required: true,
253
+ value: newAccountSecret,
254
+ onChange: (e) => setNewAccountSecret(e.target.value),
255
+ placeholder: "sealerSecret_ziz7NA12340abcdef123789..."
256
+ }
257
+ ),
258
+ /* @__PURE__ */ jsx(
259
+ Input,
260
+ {
261
+ label: "Sync server",
262
+ required: true,
263
+ value: newAccountSyncServer,
264
+ onChange: (e) => setNewAccountSyncServer(e.target.value),
265
+ placeholder: "wss://cloud.jazz.tools/"
266
+ }
267
+ ),
268
+ /* @__PURE__ */ jsx(Button, { className: "mt-3", type: "submit", children: "Add account" })
269
+ ] })
270
+ ] })
271
+ }
272
+ )
273
+ ] });
274
+ }
275
+ var AccountSwitcherContainer = styled("div")`
276
+ position: relative;
277
+ display: flex;
278
+ align-items: stretch;
279
+ gap: 0.25rem;
280
+ `;
281
+ var ModalContentGrid = styled("div")`
282
+ display: flex;
283
+ flex-direction: column;
284
+ gap: 1.5rem;
285
+
286
+ @media (min-width: 768px) {
287
+ display: grid;
288
+ grid-template-columns: 1fr 1fr;
289
+ gap: 1.5rem;
290
+ }
291
+ `;
292
+ var AccountSelectionFieldset = styled("fieldset")`
293
+ border: 1px solid var(--j-border-color);
294
+ border-radius: var(--j-radius-md);
295
+ padding: 1rem;
296
+ margin: 0;
297
+ display: flex;
298
+ flex-direction: column;
299
+ gap: 0.75rem;
300
+
301
+ legend {
302
+ padding: 0 0.5rem;
303
+ font-weight: 500;
304
+ color: var(--j-text-color);
305
+ }
306
+ `;
307
+ var ConfirmButtonContainer = styled("div")`
308
+ margin-top: 0.5rem;
309
+ display: flex;
310
+ justify-content: flex-end;
311
+ `;
312
+ var RadioOption = styled("div")`
313
+ display: flex;
314
+ align-items: flex-start;
315
+ gap: 0.5rem;
316
+
317
+ input[type="radio"] {
318
+ margin: 0;
319
+ cursor: pointer;
320
+ margin-top: 0.25rem;
321
+ }
322
+
323
+ label {
324
+ cursor: pointer;
325
+ color: var(--j-text-color);
326
+ flex: 1;
327
+ }
328
+ `;
329
+ var AccountLabelContent = styled("div")`
330
+ display: flex;
331
+ flex-direction: column;
332
+ gap: 0.25rem;
333
+ `;
334
+ var SyncServerText = styled("span")`
335
+ font-style: italic;
336
+ font-size: 0.875rem;
337
+ color: var(--j-text-color);
338
+ opacity: 0.7;
339
+ `;
340
+ var ModalAddAccountForm = styled("form")`
341
+ display: flex;
342
+ flex-direction: column;
343
+ gap: 1rem;
344
+
345
+ @media (max-width: 767px) {
346
+ padding-top: 1rem;
347
+ border-top: 1px solid var(--j-border-color);
348
+ }
349
+ `;
350
+ var ErrorText = styled("p")`
351
+ color: #b91c1c;
352
+ font-size: 0.875rem;
353
+ margin: 0;
354
+ padding: 0.5rem;
355
+ background-color: #fee2e2;
356
+ border-radius: var(--j-radius-sm);
357
+ border: 1px solid #f87171;
358
+
359
+ @media (prefers-color-scheme: dark) {
360
+ color: #fca5a5;
361
+ background-color: #7f1d1d;
362
+ border-color: #991b1b;
363
+ }
364
+ `;
365
+ var FormHeading = styled("h2")`
366
+ font-size: 1.5rem;
367
+ font-weight: 500;
368
+ color: #111827;
369
+
370
+ @media (prefers-color-scheme: dark) {
371
+ color: #fff;
372
+ }
373
+ `;
374
+ var FormDescription = styled("p")`
375
+ margin-bottom: 1.25rem;
376
+ font-size: 0.875rem;
377
+ color: var(--j-text-color);
378
+ `;
379
+ var CodeInline = styled("code")`
380
+ white-space: nowrap;
381
+ color: #0c0a09;
382
+ font-weight: 600;
383
+
384
+ @media (prefers-color-scheme: dark) {
385
+ color: #fff;
386
+ }
387
+ `;
388
+
389
+ // src/inspector/standalone.tsx
390
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
391
+ setup(React2.createElement);
392
+ function InspectorStandalone(props) {
393
+ return /* @__PURE__ */ jsx2(HashRouterProvider, { children: /* @__PURE__ */ jsx2(NodeProvider, { children: /* @__PURE__ */ jsxs2(InspectorContainer, { as: GlobalStyles, children: [
394
+ /* @__PURE__ */ jsx2(Header, { children: /* @__PURE__ */ jsx2(AccountSwitcher, { defaultSyncServer: props.defaultSyncServer }) }),
395
+ /* @__PURE__ */ jsx2(NodeContext.Consumer, { children: ({ accountID }) => accountID ? /* @__PURE__ */ jsx2(PageStack, {}) : /* @__PURE__ */ jsx2(CenteredMessage, { children: "Select an account to connect to the inspector." }) })
396
+ ] }) }) });
397
+ }
398
+ var InspectorContainer = styled2("div")`
399
+ height: 100vh;
400
+ overflow: hidden;
401
+ display: flex;
402
+ flex-direction: column;
403
+ color: #44403c; /* text-stone-700 */
404
+ background-color: #fff; /* bg-white */
405
+
406
+ @media (prefers-color-scheme: dark) {
407
+ color: #d6d3d1; /* text-stone-300 */
408
+ background-color: #0c0a09; /* bg-stone-950 */
409
+ }
410
+ `;
411
+ var CenteredMessage = styled2("p")`
412
+ text-align: center;
413
+ margin: 0;
414
+ padding: 1rem;
415
+ color: var(--j-text-color);
416
+ `;
417
+ export {
418
+ InspectorStandalone as default
419
+ };
420
+ //# sourceMappingURL=standalone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/inspector/standalone.tsx","../../src/inspector/account-switcher.tsx"],"sourcesContent":["import React from \"react\";\nimport { HashRouterProvider } from \"./router\";\nimport { setup, styled } from \"goober\";\nimport { NodeContext, NodeProvider } from \"./contexts/node\";\nimport { Header } from \"./viewer/header\";\nimport { GlobalStyles } from \"./ui/global-styles\";\nimport { PageStack } from \"./viewer/page-stack\";\nimport { AccountSwitcher } from \"./account-switcher\";\n\ntype InspectorAppProps = {\n defaultSyncServer?: string;\n};\n\nsetup(React.createElement);\n\nexport default function InspectorStandalone(props: InspectorAppProps) {\n return (\n <HashRouterProvider>\n <NodeProvider>\n <InspectorContainer as={GlobalStyles}>\n <Header>\n <AccountSwitcher defaultSyncServer={props.defaultSyncServer} />\n </Header>\n <NodeContext.Consumer>\n {({ accountID }) =>\n accountID ? (\n <PageStack />\n ) : (\n <CenteredMessage>\n Select an account to connect to the inspector.\n </CenteredMessage>\n )\n }\n </NodeContext.Consumer>\n </InspectorContainer>\n </NodeProvider>\n </HashRouterProvider>\n );\n}\n\nconst InspectorContainer = styled(\"div\")`\n height: 100vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n color: #44403c; /* text-stone-700 */\n background-color: #fff; /* bg-white */\n\n @media (prefers-color-scheme: dark) {\n color: #d6d3d1; /* text-stone-300 */\n background-color: #0c0a09; /* bg-stone-950 */\n }\n`;\n\nconst CenteredMessage = styled(\"p\")`\n text-align: center;\n margin: 0;\n padding: 1rem;\n color: var(--j-text-color);\n`;\n","import type { AgentSecret, RawAccountID } from \"cojson\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport { styled } from \"goober\";\nimport { useNode } from \"./contexts/node\";\nimport { Button, Icon, Input, Modal } from \"./ui\";\nimport { AccountOrGroupText } from \"./viewer/account-or-group-text\";\n\ninterface Account {\n id: RawAccountID;\n secret: AgentSecret;\n syncServer?: string;\n}\n\ninterface JazzLoggedInSecret {\n accountID: string;\n accountSecret: string;\n secretSeed?: number[];\n provider?: string;\n}\n\nexport function AccountSwitcher({\n defaultSyncServer,\n}: {\n defaultSyncServer?: string;\n}) {\n const {\n accountID: currentAccountId,\n localNode,\n createLocalNode,\n reset,\n } = useNode();\n const [accounts, setAccounts] = useState<Account[]>(() => {\n const storedAccounts = localStorage.getItem(\"inspectorAccounts\");\n return storedAccounts ? JSON.parse(storedAccounts) : [];\n });\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [selectedAccountId, setSelectedAccountId] =\n useState<RawAccountID | null>(() => {\n const lastSelectedAccountId = localStorage.getItem(\n \"lastSelectedAccountId\",\n );\n return lastSelectedAccountId\n ? (lastSelectedAccountId as RawAccountID)\n : currentAccountId;\n });\n const [newAccountId, setNewAccountId] = useState(\"\");\n const [newAccountSecret, setNewAccountSecret] = useState(\"\");\n const [newAccountSyncServer, setNewAccountSyncServer] = useState(\n \"wss://cloud.jazz.tools\",\n );\n const [addAccountError, setAddAccountError] = useState<string | null>(null);\n\n const addAccount = (\n id: RawAccountID,\n secret: AgentSecret,\n syncServer: string,\n ) => {\n const newAccount: Account = {\n id,\n secret,\n syncServer,\n };\n const accountExists = accounts.some((account) => account.id === id);\n if (!accountExists) {\n const updatedAccounts = [...accounts, newAccount];\n setAccounts(updatedAccounts);\n localStorage.setItem(\n \"inspectorAccounts\",\n JSON.stringify(updatedAccounts),\n );\n setSelectedAccountId(id);\n } else {\n setSelectedAccountId(id);\n }\n\n setNewAccountId(\"\");\n setNewAccountSecret(\"\");\n setNewAccountSyncServer(syncServer);\n setAddAccountError(null);\n };\n\n const deleteAccount = (accountId: RawAccountID) => {\n const updatedAccounts = accounts.filter(\n (account) => account.id !== accountId,\n );\n setAccounts(updatedAccounts);\n localStorage.setItem(\"inspectorAccounts\", JSON.stringify(updatedAccounts));\n if (updatedAccounts.length > 0) {\n setCurrentAccount(updatedAccounts[0]!.id);\n } else {\n setSelectedAccountId(null);\n localStorage.removeItem(\"lastSelectedAccountId\");\n reset();\n }\n };\n\n const deleteCurrentAccount = () => {\n if (currentAccountId) {\n deleteAccount(currentAccountId);\n }\n };\n\n const setCurrentAccount = useCallback(\n async (accountId: RawAccountID | null) => {\n if (accountId === null) {\n localStorage.removeItem(\"lastSelectedAccountId\");\n reset();\n setSelectedAccountId(null);\n\n return;\n }\n\n const account = accounts.find((a) => a.id === accountId);\n if (!account) {\n throw new Error(`Account ${accountId} not found in accounts list`);\n }\n const syncServer =\n account.syncServer || defaultSyncServer || \"wss://cloud.jazz.tools\";\n\n await createLocalNode(accountId, account.secret, syncServer);\n\n setSelectedAccountId(accountId);\n localStorage.setItem(\"lastSelectedAccountId\", accountId);\n },\n [createLocalNode, accounts, defaultSyncServer],\n );\n\n const handleModalCancel = () => {\n setSelectedAccountId(currentAccountId);\n setNewAccountId(\"\");\n setNewAccountSecret(\"\");\n setNewAccountSyncServer(\"wss://cloud.jazz.tools/\");\n setAddAccountError(null);\n setIsModalOpen(false);\n };\n\n const handleNewAccountIdChange = (\n e: React.ChangeEvent<HTMLInputElement>,\n ): void => {\n const value = e.target.value;\n setNewAccountId(value);\n\n if (value.trim().startsWith(\"{\") && value.trim().endsWith(\"}\")) {\n try {\n const parsed: JazzLoggedInSecret = JSON.parse(value);\n if (parsed.accountID && parsed.accountSecret) {\n setNewAccountId(parsed.accountID);\n setNewAccountSecret(parsed.accountSecret);\n }\n } catch (error) {\n console.log(\"Failed to parse JSON:\", error);\n }\n }\n };\n\n const handleAddAccountSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!newAccountId || !newAccountSecret) {\n setAddAccountError(\"Account ID and secret are required\");\n return;\n }\n try {\n // first: try to use the credentials\n // if successful, add the account to the list\n addAccount(\n newAccountId as RawAccountID,\n newAccountSecret as AgentSecret,\n newAccountSyncServer,\n );\n\n // await setCurrentAccount(newAccountId as RawAccountID);\n setSelectedAccountId(newAccountId as RawAccountID);\n\n setIsModalOpen(false);\n } catch (error) {\n setAddAccountError(\n error instanceof Error ? error.message : \"Failed to add account\",\n );\n deleteAccount(newAccountId as RawAccountID);\n }\n };\n\n useEffect(() => {\n if (selectedAccountId) {\n setCurrentAccount(selectedAccountId);\n }\n }, [selectedAccountId]);\n\n return (\n <>\n <AccountSwitcherContainer>\n <Button\n variant=\"secondary\"\n onClick={() => {\n setSelectedAccountId(currentAccountId);\n setIsModalOpen(true);\n }}\n className=\"max-w-96\"\n >\n {currentAccountId ? (\n localNode ? (\n <AccountOrGroupText\n coId={currentAccountId}\n showId\n node={localNode}\n />\n ) : (\n currentAccountId\n )\n ) : (\n \"Select account\"\n )}\n </Button>\n {currentAccountId && (\n <Button\n variant=\"secondary\"\n onClick={deleteCurrentAccount}\n className=\"rounded-md p-2 ml-1\"\n aria-label=\"Remove account\"\n >\n <Icon name=\"delete\" className=\"text-gray-500\" />\n </Button>\n )}\n </AccountSwitcherContainer>\n\n <Modal\n isOpen={isModalOpen}\n onClose={handleModalCancel}\n heading=\"Select Account\"\n showButtons={false}\n wide={true}\n >\n <ModalContentGrid>\n <div>\n <AccountSelectionFieldset>\n <legend>Accounts</legend>\n {accounts.length === 0 ? (\n <p style={{ color: \"var(--j-text-color)\", margin: \"0.5rem 0\" }}>\n No accounts available. Add one below.\n </p>\n ) : (\n accounts.map((account) => (\n <RadioOption key={account.id}>\n <input\n type=\"radio\"\n id={`account-${account.id}`}\n name=\"account-selection\"\n value={account.id}\n checked={selectedAccountId === account.id}\n onChange={(e) =>\n setSelectedAccountId(e.target.value as RawAccountID)\n }\n />\n <label htmlFor={`account-${account.id}`}>\n <AccountLabelContent>\n {localNode ? (\n <AccountOrGroupText\n coId={account.id}\n showId\n node={localNode}\n />\n ) : (\n account.id\n )}\n <SyncServerText>\n {account.syncServer ?? \"cloud.jazz.tools\"}\n </SyncServerText>\n </AccountLabelContent>\n </label>\n </RadioOption>\n ))\n )}\n </AccountSelectionFieldset>\n </div>\n\n <ModalAddAccountForm onSubmit={handleAddAccountSubmit}>\n <FormHeading>Add an account to inspect</FormHeading>\n <FormDescription>\n Use the <CodeInline>jazz-logged-in-secret</CodeInline> local\n storage key from within your Jazz app for your account\n credentials. You can paste the full JSON object or enter the ID\n and secret separately.\n </FormDescription>\n {addAccountError && <ErrorText>{addAccountError}</ErrorText>}\n <Input\n label=\"Account ID\"\n value={newAccountId}\n required\n placeholder=\"co_z1234567890abcdef123456789 or paste full JSON\"\n onChange={handleNewAccountIdChange}\n />\n <Input\n label=\"Account secret\"\n type=\"password\"\n required\n value={newAccountSecret}\n onChange={(e) => setNewAccountSecret(e.target.value)}\n placeholder=\"sealerSecret_ziz7NA12340abcdef123789...\"\n />\n <Input\n label=\"Sync server\"\n required\n value={newAccountSyncServer}\n onChange={(e) => setNewAccountSyncServer(e.target.value)}\n placeholder=\"wss://cloud.jazz.tools/\"\n />\n <Button className=\"mt-3\" type=\"submit\">\n Add account\n </Button>\n </ModalAddAccountForm>\n </ModalContentGrid>\n </Modal>\n </>\n );\n}\n\nconst AccountSwitcherContainer = styled(\"div\")`\n position: relative;\n display: flex;\n align-items: stretch;\n gap: 0.25rem;\n`;\n\nconst ModalContentGrid = styled(\"div\")`\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n\n @media (min-width: 768px) {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1.5rem;\n }\n`;\n\nconst AccountSelectionFieldset = styled(\"fieldset\")`\n border: 1px solid var(--j-border-color);\n border-radius: var(--j-radius-md);\n padding: 1rem;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n\n legend {\n padding: 0 0.5rem;\n font-weight: 500;\n color: var(--j-text-color);\n }\n`;\n\nconst ConfirmButtonContainer = styled(\"div\")`\n margin-top: 0.5rem;\n display: flex;\n justify-content: flex-end;\n`;\n\nconst RadioOption = styled(\"div\")`\n display: flex;\n align-items: flex-start;\n gap: 0.5rem;\n\n input[type=\"radio\"] {\n margin: 0;\n cursor: pointer;\n margin-top: 0.25rem;\n }\n\n label {\n cursor: pointer;\n color: var(--j-text-color);\n flex: 1;\n }\n`;\n\nconst AccountLabelContent = styled(\"div\")`\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n`;\n\nconst SyncServerText = styled(\"span\")`\n font-style: italic;\n font-size: 0.875rem;\n color: var(--j-text-color);\n opacity: 0.7;\n`;\n\nconst ModalAddAccountForm = styled(\"form\")`\n display: flex;\n flex-direction: column;\n gap: 1rem;\n\n @media (max-width: 767px) {\n padding-top: 1rem;\n border-top: 1px solid var(--j-border-color);\n }\n`;\n\nconst ErrorText = styled(\"p\")`\n color: #b91c1c;\n font-size: 0.875rem;\n margin: 0;\n padding: 0.5rem;\n background-color: #fee2e2;\n border-radius: var(--j-radius-sm);\n border: 1px solid #f87171;\n\n @media (prefers-color-scheme: dark) {\n color: #fca5a5;\n background-color: #7f1d1d;\n border-color: #991b1b;\n }\n`;\n\nconst FormHeading = styled(\"h2\")`\n font-size: 1.5rem;\n font-weight: 500;\n color: #111827;\n\n @media (prefers-color-scheme: dark) {\n color: #fff;\n }\n`;\n\nconst FormDescription = styled(\"p\")`\n margin-bottom: 1.25rem;\n font-size: 0.875rem;\n color: var(--j-text-color);\n`;\n\nconst CodeInline = styled(\"code\")`\n white-space: nowrap;\n color: #0c0a09;\n font-weight: 600;\n\n @media (prefers-color-scheme: dark) {\n color: #fff;\n }\n`;\n"],"mappings":"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","names":["React","styled","jsx","jsxs","React","styled"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hash-router.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-router.test.d.ts","sourceRoot":"","sources":["../../../../src/inspector/tests/router/hash-router.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=in-memory-router.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-router.test.d.ts","sourceRoot":"","sources":["../../../../src/inspector/tests/router/in-memory-router.test.tsx"],"names":[],"mappings":""}
@@ -10,6 +10,7 @@ interface ModalProps {
10
10
  onCancel?: () => void;
11
11
  showButtons?: boolean;
12
12
  className?: string;
13
+ wide?: boolean;
13
14
  }
14
15
  export declare const Modal: import("react").ForwardRefExoticComponent<ModalProps & import("react").RefAttributes<HTMLDialogElement>>;
15
16
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/inspector/ui/modal.tsx"],"names":[],"mappings":"AAKA,UAAU,UAAU;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA6DD,eAAO,MAAM,KAAK,0GA6EjB,CAAC"}
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/inspector/ui/modal.tsx"],"names":[],"mappings":"AAKA,UAAU,UAAU;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA6DD,eAAO,MAAM,KAAK,0GA+EjB,CAAC"}
@@ -1,9 +1,3 @@
1
1
  import React from "react";
2
- import { PageInfo } from "./types.js";
3
- interface BreadcrumbsProps {
4
- path: PageInfo[];
5
- onBreadcrumbClick: (index: number) => void;
6
- }
7
- export declare const Breadcrumbs: React.FC<BreadcrumbsProps>;
8
- export {};
2
+ export declare const Breadcrumbs: React.FC<{}>;
9
3
  //# sourceMappingURL=breadcrumbs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../../src/inspector/viewer/breadcrumbs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AActC,UAAU,gBAAgB;IACxB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA6BlD,CAAC"}
1
+ {"version":3,"file":"breadcrumbs.d.ts","sourceRoot":"","sources":["../../../src/inspector/viewer/breadcrumbs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CA4BpC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type PropsWithChildren } from "react";
2
+ export declare function Header({ showDeleteLocalData, showClose, onClose, children, }: PropsWithChildren<{
3
+ showDeleteLocalData?: boolean;
4
+ showClose?: boolean;
5
+ onClose?: () => void;
6
+ }>): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/inspector/viewer/header.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,KAAK,iBAAiB,EAAY,MAAM,OAAO,CAAC;AAOhE,wBAAgB,MAAM,CAAC,EACrB,mBAA2B,EAC3B,SAAiB,EACjB,OAAO,EACP,QAAQ,GACT,EAAE,iBAAiB,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC,2CAoCD"}
@@ -1,15 +1,6 @@
1
- import { CoID, LocalNode, RawCoValue } from "cojson";
2
- interface PageInfo {
3
- coId: CoID<RawCoValue>;
4
- name?: string;
5
- }
6
- interface PageStackProps {
7
- path: PageInfo[];
8
- node?: LocalNode | null;
9
- goBack: () => void;
10
- addPages: (pages: PageInfo[]) => void;
11
- children?: React.ReactNode;
12
- }
13
- export declare function PageStack({ path, node, goBack, addPages, children, }: PageStackProps): import("react/jsx-runtime").JSX.Element;
1
+ type PageStackProps = {
2
+ homePage?: React.ReactNode;
3
+ };
4
+ export declare function PageStack({ homePage }: PageStackProps): import("react/jsx-runtime").JSX.Element;
14
5
  export {};
15
6
  //# sourceMappingURL=page-stack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-stack.d.ts","sourceRoot":"","sources":["../../../src/inspector/viewer/page-stack.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAMrD,UAAU,QAAQ;IAChB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,UAAU,cAAc;IACtB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAWD,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,GACT,EAAE,cAAc,2CAuBhB"}
1
+ {"version":3,"file":"page-stack.d.ts","sourceRoot":"","sources":["../../../src/inspector/viewer/page-stack.tsx"],"names":[],"mappings":"AAiBA,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,cAAc,2CA6BrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/inspector/viewer/page.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,SAAS,EAKT,UAAU,EAEX,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAgEtC,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA6FF,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,2CA6EpC"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/inspector/viewer/page.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,SAAS,EAKT,UAAU,EACX,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAgEtC,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA6FF,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,2CA6EpC"}
@@ -5,5 +5,5 @@ export declare function useAcceptInvite<S extends CoValueClassOrSchema>({ invite
5
5
  onAccept: (valueID: string) => void;
6
6
  forValueHint?: string;
7
7
  }): void;
8
- export { experimental_useInboxSender, useJazzContext, useAccount, useAgent, useLogOut, useSyncConnectionStatus, useCoValueSubscription, useAccountSubscription, useSubscriptionSelector, } from "jazz-tools/react-core";
8
+ export { experimental_useInboxSender, useJazzContext, useAccount, useAgent, useLogOut, useSyncConnectionStatus, useCoValueSubscription, useAccountSubscription, useSubscriptionSelector, useSuspenseAccount, useSuspenseCoState, } from "jazz-tools/react-core";
9
9
  //# sourceMappingURL=hooks.d.ts.map