@xyo-network/react-network 7.5.7 → 7.5.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.
@@ -1 +1 @@
1
- {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../../../src/contexts/Provider/Route.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAAiC,MAAM,OAAO,CAAA;AAOrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAwDtD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAQlF,CAAA"}
1
+ {"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../../../../src/contexts/Provider/Route.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAEN,MAAM,OAAO,CAAA;AAOd,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAyDtD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAQlF,CAAA"}
@@ -1,19 +1,15 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/components/SelectEx/NetworkSelectEx.tsx
5
2
  import { MenuItem } from "@mui/material";
6
3
  import { SelectEx } from "@xylabs/react-select";
7
4
  import { useBreakpoint } from "@xylabs/react-shared";
8
5
  import { assertEx } from "@xylabs/sdk-js";
9
- import React3 from "react";
10
6
 
11
7
  // src/contexts/Context.ts
12
8
  import { createContextEx } from "@xylabs/react-shared";
13
9
  var NetworkContext = createContextEx();
14
10
 
15
11
  // src/contexts/Provider/Memory.tsx
16
- import React, { useMemo, useState } from "react";
12
+ import { useMemo, useState } from "react";
17
13
 
18
14
  // src/lib/archivistPresets.ts
19
15
  import { NetworkNodeSchema } from "@xyo-network/network";
@@ -37,11 +33,11 @@ var ExplorerMapHashes = {
37
33
  };
38
34
 
39
35
  // src/lib/archivistPresets.ts
40
- var findArchivistPreset = /* @__PURE__ */ __name((slug) => {
36
+ var findArchivistPreset = (slug) => {
41
37
  return archivistPresets.find((item) => {
42
38
  return item.slug === slug;
43
39
  }) ?? archivistPresets[0];
44
- }, "findArchivistPreset");
40
+ };
45
41
  var archivistPresets = [
46
42
  {
47
43
  docs: "https://beta.archivist.xyo.network/api",
@@ -72,25 +68,25 @@ var archivistPresets = [
72
68
  ];
73
69
 
74
70
  // src/lib/archivistNameToUri.ts
75
- var archivistUriToName = /* @__PURE__ */ __name(() => {
71
+ var archivistUriToName = () => {
76
72
  return archivistPresets.reduce((acc, { name, uri }) => {
77
73
  if (name) {
78
74
  acc[uri] = name;
79
75
  }
80
76
  return acc;
81
77
  }, {});
82
- }, "archivistUriToName");
78
+ };
83
79
 
84
80
  // src/lib/Config/default.ts
85
81
  import { NetworkSchema } from "@xyo-network/network";
86
82
 
87
83
  // src/lib/divinerPresets.ts
88
84
  import { NetworkNodeSchema as NetworkNodeSchema2 } from "@xyo-network/network";
89
- var findDivinerPreset = /* @__PURE__ */ __name((slug) => {
85
+ var findDivinerPreset = (slug) => {
90
86
  return divinerPresets.find((item) => {
91
87
  return item.slug === slug;
92
88
  }) ?? divinerPresets[0];
93
- }, "findDivinerPreset");
89
+ };
94
90
  var divinerPresets = [
95
91
  {
96
92
  name: "XYO Location (beta)",
@@ -122,37 +118,25 @@ var divinerPresets = [
122
118
  var defaultNetworkConfigs = [
123
119
  {
124
120
  name: "Kerplunk",
125
- nodes: [
126
- findArchivistPreset("kerplunk-archivist-xyo-network"),
127
- findDivinerPreset("beta-location-diviner-xyo-network")
128
- ],
121
+ nodes: [findArchivistPreset("kerplunk-archivist-xyo-network"), findDivinerPreset("beta-location-diviner-xyo-network")],
129
122
  schema: NetworkSchema,
130
123
  slug: "kerplunk"
131
124
  },
132
125
  {
133
126
  name: "Main",
134
- nodes: [
135
- findArchivistPreset("main-archivist-xyo-network"),
136
- findDivinerPreset("location-diviner-xyo-network")
137
- ],
127
+ nodes: [findArchivistPreset("main-archivist-xyo-network"), findDivinerPreset("location-diviner-xyo-network")],
138
128
  schema: NetworkSchema,
139
129
  slug: "main"
140
130
  },
141
131
  {
142
132
  name: "Local",
143
- nodes: [
144
- findArchivistPreset("local-archivist-xyo-network"),
145
- findDivinerPreset("local-location-diviner-xyo-network")
146
- ],
133
+ nodes: [findArchivistPreset("local-archivist-xyo-network"), findDivinerPreset("local-location-diviner-xyo-network")],
147
134
  schema: NetworkSchema,
148
135
  slug: "local"
149
136
  },
150
137
  {
151
138
  name: "Custom",
152
- nodes: [
153
- findArchivistPreset("kerplunk-archivist-xyo-network"),
154
- findDivinerPreset("beta-location-diviner-xyo-network")
155
- ],
139
+ nodes: [findArchivistPreset("kerplunk-archivist-xyo-network"), findDivinerPreset("beta-location-diviner-xyo-network")],
156
140
  schema: NetworkSchema,
157
141
  slug: "custom"
158
142
  }
@@ -160,15 +144,15 @@ var defaultNetworkConfigs = [
160
144
  var networkPresets = defaultNetworkConfigs;
161
145
 
162
146
  // src/lib/Config/find.ts
163
- var findNetworkConfig = /* @__PURE__ */ __name((slug, configs = defaultNetworkConfigs) => {
147
+ var findNetworkConfig = (slug, configs = defaultNetworkConfigs) => {
164
148
  return configs.find((item) => {
165
149
  return item.slug === slug;
166
150
  });
167
- }, "findNetworkConfig");
151
+ };
168
152
  var findNetworkPreset = findNetworkConfig;
169
153
 
170
154
  // src/lib/Config/resolveNetworkFromHostname.ts
171
- var resolveNetworkFromHostName = /* @__PURE__ */ __name((fallback = "Kerplunk", siteName) => {
155
+ var resolveNetworkFromHostName = (fallback = "Kerplunk", siteName) => {
172
156
  switch (document.location.hostname) {
173
157
  case `${siteName}.xyo.network`: {
174
158
  return "Main";
@@ -180,10 +164,15 @@ var resolveNetworkFromHostName = /* @__PURE__ */ __name((fallback = "Kerplunk",
180
164
  return fallback;
181
165
  }
182
166
  }
183
- }, "resolveNetworkFromHostName");
167
+ };
184
168
 
185
169
  // src/contexts/Provider/Memory.tsx
186
- var NetworkMemoryProvider = /* @__PURE__ */ __name(({ defaultNetworkConfig, defaultNetworkName, ...props }) => {
170
+ import { jsx } from "react/jsx-runtime";
171
+ var NetworkMemoryProvider = ({
172
+ defaultNetworkConfig,
173
+ defaultNetworkName,
174
+ ...props
175
+ }) => {
187
176
  if (defaultNetworkConfig && defaultNetworkName) {
188
177
  console.warn("Both defaultNetworkConfig and defaultNetworkName were passed to provider. Falling back to defaultNetworkConfig");
189
178
  }
@@ -194,55 +183,51 @@ var NetworkMemoryProvider = /* @__PURE__ */ __name(({ defaultNetworkConfig, defa
194
183
  networks: defaultNetworkConfigs,
195
184
  provided: true,
196
185
  setNetwork
197
- }), [
198
- network,
199
- setNetwork
200
- ]);
201
- return /* @__PURE__ */ React.createElement(NetworkContext, {
202
- value,
203
- ...props
204
- });
205
- }, "NetworkMemoryProvider");
186
+ }), [network, setNetwork]);
187
+ return /* @__PURE__ */ jsx(NetworkContext, { value, ...props });
188
+ };
206
189
  var NetworkProvider = NetworkMemoryProvider;
207
190
 
208
191
  // src/contexts/Provider/Route.tsx
209
- import React2, { useCallback, useEffect } from "react";
192
+ import {
193
+ useCallback,
194
+ useEffect,
195
+ useMemo as useMemo2
196
+ } from "react";
210
197
  import { useSearchParams } from "react-router-dom";
211
198
 
212
199
  // src/contexts/use.ts
213
200
  import { useContextEx } from "@xylabs/react-shared";
214
- var useNetwork = /* @__PURE__ */ __name((required = false) => {
201
+ var useNetwork = (required = false) => {
215
202
  return useContextEx(NetworkContext, "Network", required);
216
- }, "useNetwork");
203
+ };
217
204
 
218
205
  // src/contexts/Provider/Route.tsx
219
- var NetworkRouteProviderInner = /* @__PURE__ */ __name(({ children }) => {
206
+ import { jsx as jsx2 } from "react/jsx-runtime";
207
+ var NetworkRouteProviderInner = ({ children }) => {
220
208
  const { network, setNetwork } = useNetwork();
221
209
  const [params, setParams] = useSearchParams();
222
210
  const slug = params.get("network");
223
211
  const routeNetwork = slug ? findNetworkConfig(slug) : void 0;
224
- const setNetworkParam = useCallback((network2) => {
225
- if (network2) {
226
- params.set("network", network2.slug);
227
- setParams(params, {
228
- replace: true
229
- });
212
+ const setNetworkParam = useCallback(
213
+ (network2) => {
214
+ if (network2) {
215
+ params.set("network", network2.slug);
216
+ setParams(params, { replace: true });
217
+ setNetwork?.(network2);
218
+ } else {
219
+ params.delete("network");
220
+ }
221
+ },
222
+ [params, setParams, setNetwork]
223
+ );
224
+ const setNetworkLocal = useCallback(
225
+ (network2) => {
226
+ setNetworkParam(network2);
230
227
  setNetwork?.(network2);
231
- } else {
232
- params.delete("network");
233
- }
234
- }, [
235
- params,
236
- setParams,
237
- setNetwork
238
- ]);
239
- const setNetworkLocal = useCallback((network2) => {
240
- setNetworkParam(network2);
241
- setNetwork?.(network2);
242
- }, [
243
- setNetworkParam,
244
- setNetwork
245
- ]);
228
+ },
229
+ [setNetworkParam, setNetwork]
230
+ );
246
231
  useEffect(() => {
247
232
  if (routeNetwork !== network) {
248
233
  if (routeNetwork === void 0 && network !== void 0) {
@@ -251,50 +236,56 @@ var NetworkRouteProviderInner = /* @__PURE__ */ __name(({ children }) => {
251
236
  setNetwork?.(routeNetwork);
252
237
  }
253
238
  }
254
- }, [
255
- routeNetwork,
239
+ }, [routeNetwork, network, setNetworkParam, setNetwork]);
240
+ const value = useMemo2(() => ({
256
241
  network,
257
- setNetworkParam,
258
- setNetwork
259
- ]);
260
- return /* @__PURE__ */ React2.createElement(NetworkContext, {
261
- value: {
262
- network,
263
- networks: defaultNetworkConfigs,
264
- provided: true,
265
- setNetwork: setNetworkLocal
266
- }
267
- }, network ? children : null);
268
- }, "NetworkRouteProviderInner");
269
- var NetworkRouteProvider = /* @__PURE__ */ __name(({ defaultNetworkConfig, defaultNetworkName, ...props }) => {
270
- return /* @__PURE__ */ React2.createElement(NetworkMemoryProvider, {
271
- defaultNetworkConfig,
272
- defaultNetworkName
273
- }, /* @__PURE__ */ React2.createElement(NetworkRouteProviderInner, props));
274
- }, "NetworkRouteProvider");
242
+ networks: defaultNetworkConfigs,
243
+ provided: true,
244
+ setNetwork: setNetworkLocal
245
+ }), [network, setNetworkLocal]);
246
+ return /* @__PURE__ */ jsx2(NetworkContext, { value, children: network ? children : null });
247
+ };
248
+ var NetworkRouteProvider = ({
249
+ defaultNetworkConfig,
250
+ defaultNetworkName,
251
+ ...props
252
+ }) => {
253
+ return /* @__PURE__ */ jsx2(NetworkMemoryProvider, { defaultNetworkConfig, defaultNetworkName, children: /* @__PURE__ */ jsx2(NetworkRouteProviderInner, { ...props }) });
254
+ };
275
255
 
276
256
  // src/components/SelectEx/NetworkSelectEx.tsx
277
- var NetworkSelectEx = /* @__PURE__ */ __name(({ onChange, variant = "outlined", responsive = true, ...props }) => {
278
- const { network, setNetwork, networks } = useNetwork(false);
257
+ import { jsx as jsx3 } from "react/jsx-runtime";
258
+ var NetworkSelectEx = ({
259
+ onChange,
260
+ variant = "outlined",
261
+ responsive = true,
262
+ ...props
263
+ }) => {
264
+ const {
265
+ network,
266
+ setNetwork,
267
+ networks
268
+ } = useNetwork(false);
279
269
  const sm = useBreakpoint() === "sm";
280
- return /* @__PURE__ */ React3.createElement(SelectEx, {
281
- variant,
282
- size: "small",
283
- value: network?.slug ?? "",
284
- onChange: /* @__PURE__ */ __name((event, child) => {
285
- if (event.target.value !== network?.slug) {
286
- onChange?.(event, child);
287
- setNetwork?.(assertEx(findNetworkConfig(event.target.value, networks)));
288
- }
289
- }, "onChange"),
290
- ...props
291
- }, networks?.map((network2) => {
292
- return /* @__PURE__ */ React3.createElement(MenuItem, {
293
- key: network2.slug,
294
- value: network2.slug
295
- }, responsive && sm ? network2.name?.[0].toUpperCase() : network2.name);
296
- }));
297
- }, "NetworkSelectEx");
270
+ return /* @__PURE__ */ jsx3(
271
+ SelectEx,
272
+ {
273
+ variant,
274
+ size: "small",
275
+ value: network?.slug ?? "",
276
+ onChange: (event, child) => {
277
+ if (event.target.value !== network?.slug) {
278
+ onChange?.(event, child);
279
+ setNetwork?.(assertEx(findNetworkConfig(event.target.value, networks)));
280
+ }
281
+ },
282
+ ...props,
283
+ children: networks?.map((network2) => {
284
+ return /* @__PURE__ */ jsx3(MenuItem, { value: network2.slug, children: responsive && sm ? network2.name?.[0].toUpperCase() : network2.name }, network2.slug);
285
+ })
286
+ }
287
+ );
288
+ };
298
289
  export {
299
290
  NetworkContext,
300
291
  NetworkMemoryProvider,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/SelectEx/NetworkSelectEx.tsx","../../src/contexts/Context.ts","../../src/contexts/Provider/Memory.tsx","../../src/lib/archivistPresets.ts","../../src/lib/ExplorerMapHashes.ts","../../src/lib/archivistNameToUri.ts","../../src/lib/Config/default.ts","../../src/lib/divinerPresets.ts","../../src/lib/Config/find.ts","../../src/lib/Config/resolveNetworkFromHostname.ts","../../src/contexts/Provider/Route.tsx","../../src/contexts/use.ts"],"sourcesContent":["import { MenuItem } from '@mui/material'\nimport type { SelectExProps } from '@xylabs/react-select'\nimport { SelectEx } from '@xylabs/react-select'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport { assertEx } from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport { useNetwork } from '../../contexts/index.ts'\nimport { findNetworkConfig } from '../../lib/index.ts'\n\nexport type NetworkSelectExProps = Omit<SelectExProps<string>, 'variant'>\n & Partial<SelectExProps<string>> & {\n responsive?: boolean\n }\n\nexport const NetworkSelectEx: React.FC<NetworkSelectExProps> = ({\n onChange, variant = 'outlined', responsive = true, ...props\n}) => {\n const {\n network, setNetwork, networks,\n } = useNetwork(false)\n const sm = useBreakpoint() === 'sm'\n return (\n <SelectEx\n variant={variant}\n size=\"small\"\n value={network?.slug ?? ''}\n onChange={(event, child) => {\n if (event.target.value !== network?.slug) {\n onChange?.(event, child)\n setNetwork?.(assertEx(findNetworkConfig(event.target.value, networks)))\n }\n }}\n {...props}\n >\n {networks?.map((network) => {\n return (\n <MenuItem key={network.slug} value={network.slug}>\n {responsive && sm ? network.name?.[0].toUpperCase() : network.name}\n </MenuItem>\n )\n })}\n </SelectEx>\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { NetworkContextState } from './State.ts'\n\nexport const NetworkContext = createContextEx<NetworkContextState>()\n","import type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { defaultNetworkConfigs } from '../../lib/index.ts'\nimport { NetworkContext } from '../Context.ts'\nimport type { NetworkContextState } from '../State.ts'\nimport type { NetworkProviderProps } from './Props.ts'\n\nexport const NetworkMemoryProvider: React.FC<PropsWithChildren<NetworkProviderProps>> = ({\n defaultNetworkConfig, defaultNetworkName, ...props\n}) => {\n if (defaultNetworkConfig && defaultNetworkName) {\n console.warn('Both defaultNetworkConfig and defaultNetworkName were passed to provider. Falling back to defaultNetworkConfig')\n }\n\n const resolvedDefaultNetworkConfig = defaultNetworkName ? defaultNetworkConfigs.find(config => config.name === defaultNetworkName) : undefined\n\n const [network, setNetwork] = useState(defaultNetworkConfig ?? resolvedDefaultNetworkConfig ?? defaultNetworkConfigs[0])\n\n const value: NetworkContextState = useMemo(() => ({\n network, networks: defaultNetworkConfigs, provided: true, setNetwork,\n }), [network, setNetwork])\n\n return <NetworkContext value={value} {...props} />\n}\n\n/** @deprecated use NetworkMemoryProvider instead */\nexport const NetworkProvider = NetworkMemoryProvider\n","import type { Hash } from '@xylabs/sdk-js'\nimport type { NetworkNodePayload } from '@xyo-network/network'\nimport { NetworkNodeSchema } from '@xyo-network/network'\n\nimport { ExplorerMapHashes } from './ExplorerMapHashes.ts'\n\nexport type ArchivistPreset = NetworkNodePayload & {\n explorerMapHashes?: {\n animatedAnswerHashes: Hash[]\n staticAnswerHash: Hash\n }\n}\n\nexport const findArchivistPreset = (slug: string) => {\n return (\n archivistPresets.find((item) => {\n return item.slug === slug\n }) ?? archivistPresets[0]\n )\n}\n\nexport const archivistPresets: ArchivistPreset[] = [\n {\n docs: 'https://beta.archivist.xyo.network/api',\n explorerMapHashes: ExplorerMapHashes,\n name: 'XYO Shared Archivist (kerplunk)',\n schema: NetworkNodeSchema,\n slug: 'kerplunk-archivist-xyo-network',\n type: 'archivist',\n uri: 'https://beta.api.archivist.xyo.network',\n },\n {\n docs: 'https://archivist.xyo.network/api',\n explorerMapHashes: ExplorerMapHashes,\n name: 'XYO Shared Archivist (main)',\n schema: NetworkNodeSchema,\n slug: 'main-archivist-xyo-network',\n type: 'archivist',\n uri: 'https://api.archivist.xyo.network',\n },\n {\n docs: 'http://localhost:8080/api',\n name: 'XYO Shared Archivist (local)',\n schema: NetworkNodeSchema,\n slug: 'local-archivist-xyo-network',\n type: 'archivist',\n uri: 'http://localhost:8080',\n },\n]\n","import type { Hash } from '@xylabs/sdk-js'\nexport const ExplorerMapHashes: { animatedAnswerHashes: Hash[]; staticAnswerHash: Hash } = {\n animatedAnswerHashes: [\n '79af071f451fc7af10d009dc63236ef9a9b211732c1ee0c06f028fcecf2336c5',\n '531bfba6d8dfefd3bcc888aca54cdbbd4574ed2b3ec551b230845a1f9a608898',\n 'c874412b4faa4947de81372fd1ba12fdd6f43f5e408622b7f357cb2bcb3f17cb',\n '29d3f8b882c61a82a1a1675782a27e797ea7196f45a23b4409680ab8b8d5f14e',\n 'cfd20f80ac073fd9518f4ef3f43d2a1f5e4e56e40c2677f38d6f6fecd05df60c',\n '1354fa73497519a39aed19fc99bdbae78a880a1eafb2f7898d607e07db36528d',\n '1043b0d25eacfc5013ae9dba780305a6fbf01a43543bd871d7c00537fca142a9',\n '973dfc5df142851ced258d52d0ac2784e814000ac22e35776f772256b0d4dde9',\n '463808eb74d3d87e6563970e0301a493577f8cd1b501e6e0ffa5e027ad2cea95',\n '15b21acea2e3fd9d1ace3768a72636ee7bdf67a6f8e0807bfa2273dea2207555',\n '32d377bfe7ebe382598c54dd13f8af7510e0a1e2fd2e913311fdd58e517e5e2e',\n ] as Hash[],\n staticAnswerHash: 'c7bbf61f61cfd4a1b2def160c28136fc1d100d39fbdb67b227a2c6e558d9d3a5' as Hash,\n}\n","import { archivistPresets } from './archivistPresets.ts'\n\nexport const archivistUriToName = () => {\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistPresets.reduce<Record<string, string>>((acc, { name, uri }) => {\n if (name) {\n acc[uri] = name\n }\n return acc\n }, {})\n}\n","import type { NetworkPayload } from '@xyo-network/network'\nimport { NetworkSchema } from '@xyo-network/network'\n\nimport { findArchivistPreset } from '../archivistPresets.ts'\nimport { findDivinerPreset } from '../divinerPresets.ts'\n\nexport const defaultNetworkConfigs: (Omit<NetworkPayload, 'schema'> & { schema: NetworkSchema })[] = [\n {\n name: 'Kerplunk',\n nodes: [findArchivistPreset('kerplunk-archivist-xyo-network'), findDivinerPreset('beta-location-diviner-xyo-network')],\n schema: NetworkSchema,\n slug: 'kerplunk',\n },\n {\n name: 'Main',\n nodes: [findArchivistPreset('main-archivist-xyo-network'), findDivinerPreset('location-diviner-xyo-network')],\n schema: NetworkSchema,\n slug: 'main',\n },\n {\n name: 'Local',\n nodes: [findArchivistPreset('local-archivist-xyo-network'), findDivinerPreset('local-location-diviner-xyo-network')],\n schema: NetworkSchema,\n slug: 'local',\n },\n {\n name: 'Custom',\n nodes: [findArchivistPreset('kerplunk-archivist-xyo-network'), findDivinerPreset('beta-location-diviner-xyo-network')],\n schema: NetworkSchema,\n slug: 'custom',\n },\n]\n\n/** @deprecated use defaultNetworkConfigs instead */\nexport const networkPresets = defaultNetworkConfigs\n","import type { NetworkNodePayload } from '@xyo-network/network'\nimport { NetworkNodeSchema } from '@xyo-network/network'\n\nexport const findDivinerPreset = (slug: string) => {\n return (\n divinerPresets.find((item) => {\n return item.slug === slug\n }) ?? divinerPresets[0]\n )\n}\n\nexport const divinerPresets: NetworkNodePayload[] = [\n {\n name: 'XYO Location (beta)',\n schema: NetworkNodeSchema,\n slug: 'beta-location-diviner-xyo-network',\n type: 'diviner',\n uri: 'https://beta.api.location.diviner.xyo.network',\n web: 'https://beta.explore.xyo.network',\n },\n {\n name: 'XYO Location',\n schema: NetworkNodeSchema,\n slug: 'location-diviner-xyo-network',\n type: 'diviner',\n uri: 'https://api.location.diviner.xyo.network',\n web: 'https://explore.xyo.network',\n },\n {\n name: 'XYO Location (local)',\n schema: NetworkNodeSchema,\n slug: 'local-location-diviner-xyo-network',\n type: 'diviner',\n uri: 'http://localhost:8082',\n web: 'http://localhost:3000',\n },\n]\n","import { defaultNetworkConfigs } from './default.ts'\n\nexport const findNetworkConfig = (slug: string, configs = defaultNetworkConfigs) => {\n return configs.find((item) => {\n return item.slug === slug\n })\n}\n\n/** @deprecated use findNetworkConfig instead */\nexport const findNetworkPreset = findNetworkConfig\n","import type { NetworkNames } from './NetworkNames.ts'\n\nexport type SiteName = 'explore' | 'node'\n\nexport const resolveNetworkFromHostName = (fallback: NetworkNames = 'Kerplunk', siteName: SiteName) => {\n switch (document.location.hostname) {\n case `${siteName}.xyo.network`: {\n return 'Main'\n }\n case `beta.${siteName}.xyo.network`: {\n return 'Kerplunk'\n }\n default: {\n return fallback\n }\n }\n}\n","import type { NetworkPayload, NetworkSchema } from '@xyo-network/network'\nimport type { PropsWithChildren } from 'react'\nimport React, { useCallback, useEffect } from 'react'\nimport { useSearchParams } from 'react-router-dom'\n\nimport { defaultNetworkConfigs, findNetworkConfig } from '../../lib/index.ts'\nimport { NetworkContext } from '../Context.ts'\nimport { useNetwork } from '../use.ts'\nimport { NetworkMemoryProvider } from './Memory.tsx'\nimport type { NetworkProviderProps } from './Props.ts'\n\nconst NetworkRouteProviderInner: React.FC<PropsWithChildren> = ({ children }) => {\n const { network, setNetwork } = useNetwork()\n\n const [params, setParams] = useSearchParams()\n\n const slug = params.get('network')\n const routeNetwork = slug ? findNetworkConfig(slug) : undefined\n\n // update the network stored in the route\n const setNetworkParam = useCallback(\n (network?: Omit<NetworkPayload, 'schema'> & { schema: NetworkSchema }) => {\n if (network) {\n params.set('network', network.slug)\n setParams(params, { replace: true })\n setNetwork?.(network)\n } else {\n params.delete('network')\n }\n },\n [params, setParams, setNetwork],\n )\n\n // if the network is actively changed, update both memory and route\n const setNetworkLocal = useCallback(\n (network: Omit<NetworkPayload, 'schema'> & { schema: NetworkSchema }) => {\n setNetworkParam(network)\n setNetwork?.(network)\n },\n [setNetworkParam, setNetwork],\n )\n\n // sync memory and route storage of network\n useEffect(() => {\n if (routeNetwork !== network) {\n if (routeNetwork === undefined && network !== undefined) {\n // if the route does not have a network selected, use what is in the memory context\n setNetworkParam(network)\n } else if (routeNetwork !== undefined) {\n // if the route has a selection and it is different from memory, update memory\n setNetwork?.(routeNetwork)\n }\n }\n }, [routeNetwork, network, setNetworkParam, setNetwork])\n\n return (\n <NetworkContext value={{\n network, networks: defaultNetworkConfigs, provided: true, setNetwork: setNetworkLocal,\n }}\n >\n {network ? children : null}\n </NetworkContext>\n )\n}\n\nexport const NetworkRouteProvider: React.FC<PropsWithChildren<NetworkProviderProps>> = ({\n defaultNetworkConfig, defaultNetworkName, ...props\n}) => {\n return (\n <NetworkMemoryProvider defaultNetworkConfig={defaultNetworkConfig} defaultNetworkName={defaultNetworkName}>\n <NetworkRouteProviderInner {...props} />\n </NetworkMemoryProvider>\n )\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { NetworkContext } from './Context.ts'\nimport type { NetworkContextState } from './State.ts'\n\nexport const useNetwork = (required = false) => {\n return useContextEx<NetworkContextState>(NetworkContext, 'Network', required)\n}\n"],"mappings":"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","names":["MenuItem","SelectEx","useBreakpoint","assertEx","React","createContextEx","NetworkContext","React","useMemo","useState","NetworkNodeSchema","ExplorerMapHashes","animatedAnswerHashes","staticAnswerHash","findArchivistPreset","slug","archivistPresets","find","item","docs","explorerMapHashes","ExplorerMapHashes","name","schema","NetworkNodeSchema","type","uri","archivistUriToName","archivistPresets","reduce","acc","name","uri","NetworkSchema","NetworkNodeSchema","findDivinerPreset","slug","divinerPresets","find","item","name","schema","NetworkNodeSchema","type","uri","web","defaultNetworkConfigs","name","nodes","findArchivistPreset","findDivinerPreset","schema","NetworkSchema","slug","networkPresets","findNetworkConfig","slug","configs","defaultNetworkConfigs","find","item","findNetworkPreset","resolveNetworkFromHostName","fallback","siteName","document","location","hostname","NetworkMemoryProvider","defaultNetworkConfig","defaultNetworkName","props","console","warn","resolvedDefaultNetworkConfig","defaultNetworkConfigs","find","config","name","undefined","network","setNetwork","useState","value","useMemo","networks","provided","NetworkContext","NetworkProvider","React","useCallback","useEffect","useSearchParams","useContextEx","useNetwork","required","useContextEx","NetworkContext","NetworkRouteProviderInner","children","network","setNetwork","useNetwork","params","setParams","useSearchParams","slug","get","routeNetwork","findNetworkConfig","undefined","setNetworkParam","useCallback","set","replace","delete","setNetworkLocal","useEffect","React","NetworkContext","value","networks","defaultNetworkConfigs","provided","NetworkRouteProvider","defaultNetworkConfig","defaultNetworkName","props","NetworkMemoryProvider","NetworkSelectEx","onChange","variant","responsive","props","network","setNetwork","networks","useNetwork","sm","useBreakpoint","React","SelectEx","size","value","slug","event","child","target","assertEx","findNetworkConfig","map","MenuItem","key","name","toUpperCase"]}
1
+ {"version":3,"sources":["../../src/components/SelectEx/NetworkSelectEx.tsx","../../src/contexts/Context.ts","../../src/contexts/Provider/Memory.tsx","../../src/lib/archivistPresets.ts","../../src/lib/ExplorerMapHashes.ts","../../src/lib/archivistNameToUri.ts","../../src/lib/Config/default.ts","../../src/lib/divinerPresets.ts","../../src/lib/Config/find.ts","../../src/lib/Config/resolveNetworkFromHostname.ts","../../src/contexts/Provider/Route.tsx","../../src/contexts/use.ts"],"sourcesContent":["import { MenuItem } from '@mui/material'\nimport type { SelectExProps } from '@xylabs/react-select'\nimport { SelectEx } from '@xylabs/react-select'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport { assertEx } from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport { useNetwork } from '../../contexts/index.ts'\nimport { findNetworkConfig } from '../../lib/index.ts'\n\nexport type NetworkSelectExProps = Omit<SelectExProps<string>, 'variant'>\n & Partial<SelectExProps<string>> & {\n responsive?: boolean\n }\n\nexport const NetworkSelectEx: React.FC<NetworkSelectExProps> = ({\n onChange, variant = 'outlined', responsive = true, ...props\n}) => {\n const {\n network, setNetwork, networks,\n } = useNetwork(false)\n const sm = useBreakpoint() === 'sm'\n return (\n <SelectEx\n variant={variant}\n size=\"small\"\n value={network?.slug ?? ''}\n onChange={(event, child) => {\n if (event.target.value !== network?.slug) {\n onChange?.(event, child)\n setNetwork?.(assertEx(findNetworkConfig(event.target.value, networks)))\n }\n }}\n {...props}\n >\n {networks?.map((network) => {\n return (\n <MenuItem key={network.slug} value={network.slug}>\n {responsive && sm ? network.name?.[0].toUpperCase() : network.name}\n </MenuItem>\n )\n })}\n </SelectEx>\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { NetworkContextState } from './State.ts'\n\nexport const NetworkContext = createContextEx<NetworkContextState>()\n","import type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { defaultNetworkConfigs } from '../../lib/index.ts'\nimport { NetworkContext } from '../Context.ts'\nimport type { NetworkContextState } from '../State.ts'\nimport type { NetworkProviderProps } from './Props.ts'\n\nexport const NetworkMemoryProvider: React.FC<PropsWithChildren<NetworkProviderProps>> = ({\n defaultNetworkConfig, defaultNetworkName, ...props\n}) => {\n if (defaultNetworkConfig && defaultNetworkName) {\n console.warn('Both defaultNetworkConfig and defaultNetworkName were passed to provider. Falling back to defaultNetworkConfig')\n }\n\n const resolvedDefaultNetworkConfig = defaultNetworkName ? defaultNetworkConfigs.find(config => config.name === defaultNetworkName) : undefined\n\n const [network, setNetwork] = useState(defaultNetworkConfig ?? resolvedDefaultNetworkConfig ?? defaultNetworkConfigs[0])\n\n const value: NetworkContextState = useMemo(() => ({\n network, networks: defaultNetworkConfigs, provided: true, setNetwork,\n }), [network, setNetwork])\n\n return <NetworkContext value={value} {...props} />\n}\n\n/** @deprecated use NetworkMemoryProvider instead */\nexport const NetworkProvider = NetworkMemoryProvider\n","import type { Hash } from '@xylabs/sdk-js'\nimport type { NetworkNodePayload } from '@xyo-network/network'\nimport { NetworkNodeSchema } from '@xyo-network/network'\n\nimport { ExplorerMapHashes } from './ExplorerMapHashes.ts'\n\nexport type ArchivistPreset = NetworkNodePayload & {\n explorerMapHashes?: {\n animatedAnswerHashes: Hash[]\n staticAnswerHash: Hash\n }\n}\n\nexport const findArchivistPreset = (slug: string) => {\n return (\n archivistPresets.find((item) => {\n return item.slug === slug\n }) ?? archivistPresets[0]\n )\n}\n\nexport const archivistPresets: ArchivistPreset[] = [\n {\n docs: 'https://beta.archivist.xyo.network/api',\n explorerMapHashes: ExplorerMapHashes,\n name: 'XYO Shared Archivist (kerplunk)',\n schema: NetworkNodeSchema,\n slug: 'kerplunk-archivist-xyo-network',\n type: 'archivist',\n uri: 'https://beta.api.archivist.xyo.network',\n },\n {\n docs: 'https://archivist.xyo.network/api',\n explorerMapHashes: ExplorerMapHashes,\n name: 'XYO Shared Archivist (main)',\n schema: NetworkNodeSchema,\n slug: 'main-archivist-xyo-network',\n type: 'archivist',\n uri: 'https://api.archivist.xyo.network',\n },\n {\n docs: 'http://localhost:8080/api',\n name: 'XYO Shared Archivist (local)',\n schema: NetworkNodeSchema,\n slug: 'local-archivist-xyo-network',\n type: 'archivist',\n uri: 'http://localhost:8080',\n },\n]\n","import type { Hash } from '@xylabs/sdk-js'\nexport const ExplorerMapHashes: { animatedAnswerHashes: Hash[]; staticAnswerHash: Hash } = {\n animatedAnswerHashes: [\n '79af071f451fc7af10d009dc63236ef9a9b211732c1ee0c06f028fcecf2336c5',\n '531bfba6d8dfefd3bcc888aca54cdbbd4574ed2b3ec551b230845a1f9a608898',\n 'c874412b4faa4947de81372fd1ba12fdd6f43f5e408622b7f357cb2bcb3f17cb',\n '29d3f8b882c61a82a1a1675782a27e797ea7196f45a23b4409680ab8b8d5f14e',\n 'cfd20f80ac073fd9518f4ef3f43d2a1f5e4e56e40c2677f38d6f6fecd05df60c',\n '1354fa73497519a39aed19fc99bdbae78a880a1eafb2f7898d607e07db36528d',\n '1043b0d25eacfc5013ae9dba780305a6fbf01a43543bd871d7c00537fca142a9',\n '973dfc5df142851ced258d52d0ac2784e814000ac22e35776f772256b0d4dde9',\n '463808eb74d3d87e6563970e0301a493577f8cd1b501e6e0ffa5e027ad2cea95',\n '15b21acea2e3fd9d1ace3768a72636ee7bdf67a6f8e0807bfa2273dea2207555',\n '32d377bfe7ebe382598c54dd13f8af7510e0a1e2fd2e913311fdd58e517e5e2e',\n ] as Hash[],\n staticAnswerHash: 'c7bbf61f61cfd4a1b2def160c28136fc1d100d39fbdb67b227a2c6e558d9d3a5' as Hash,\n}\n","import { archivistPresets } from './archivistPresets.ts'\n\nexport const archivistUriToName = () => {\n // eslint-disable-next-line unicorn/no-array-reduce\n return archivistPresets.reduce<Record<string, string>>((acc, { name, uri }) => {\n if (name) {\n acc[uri] = name\n }\n return acc\n }, {})\n}\n","import type { NetworkPayload } from '@xyo-network/network'\nimport { NetworkSchema } from '@xyo-network/network'\n\nimport { findArchivistPreset } from '../archivistPresets.ts'\nimport { findDivinerPreset } from '../divinerPresets.ts'\n\nexport const defaultNetworkConfigs: (Omit<NetworkPayload, 'schema'> & { schema: NetworkSchema })[] = [\n {\n name: 'Kerplunk',\n nodes: [findArchivistPreset('kerplunk-archivist-xyo-network'), findDivinerPreset('beta-location-diviner-xyo-network')],\n schema: NetworkSchema,\n slug: 'kerplunk',\n },\n {\n name: 'Main',\n nodes: [findArchivistPreset('main-archivist-xyo-network'), findDivinerPreset('location-diviner-xyo-network')],\n schema: NetworkSchema,\n slug: 'main',\n },\n {\n name: 'Local',\n nodes: [findArchivistPreset('local-archivist-xyo-network'), findDivinerPreset('local-location-diviner-xyo-network')],\n schema: NetworkSchema,\n slug: 'local',\n },\n {\n name: 'Custom',\n nodes: [findArchivistPreset('kerplunk-archivist-xyo-network'), findDivinerPreset('beta-location-diviner-xyo-network')],\n schema: NetworkSchema,\n slug: 'custom',\n },\n]\n\n/** @deprecated use defaultNetworkConfigs instead */\nexport const networkPresets = defaultNetworkConfigs\n","import type { NetworkNodePayload } from '@xyo-network/network'\nimport { NetworkNodeSchema } from '@xyo-network/network'\n\nexport const findDivinerPreset = (slug: string) => {\n return (\n divinerPresets.find((item) => {\n return item.slug === slug\n }) ?? divinerPresets[0]\n )\n}\n\nexport const divinerPresets: NetworkNodePayload[] = [\n {\n name: 'XYO Location (beta)',\n schema: NetworkNodeSchema,\n slug: 'beta-location-diviner-xyo-network',\n type: 'diviner',\n uri: 'https://beta.api.location.diviner.xyo.network',\n web: 'https://beta.explore.xyo.network',\n },\n {\n name: 'XYO Location',\n schema: NetworkNodeSchema,\n slug: 'location-diviner-xyo-network',\n type: 'diviner',\n uri: 'https://api.location.diviner.xyo.network',\n web: 'https://explore.xyo.network',\n },\n {\n name: 'XYO Location (local)',\n schema: NetworkNodeSchema,\n slug: 'local-location-diviner-xyo-network',\n type: 'diviner',\n uri: 'http://localhost:8082',\n web: 'http://localhost:3000',\n },\n]\n","import { defaultNetworkConfigs } from './default.ts'\n\nexport const findNetworkConfig = (slug: string, configs = defaultNetworkConfigs) => {\n return configs.find((item) => {\n return item.slug === slug\n })\n}\n\n/** @deprecated use findNetworkConfig instead */\nexport const findNetworkPreset = findNetworkConfig\n","import type { NetworkNames } from './NetworkNames.ts'\n\nexport type SiteName = 'explore' | 'node'\n\nexport const resolveNetworkFromHostName = (fallback: NetworkNames = 'Kerplunk', siteName: SiteName) => {\n switch (document.location.hostname) {\n case `${siteName}.xyo.network`: {\n return 'Main'\n }\n case `beta.${siteName}.xyo.network`: {\n return 'Kerplunk'\n }\n default: {\n return fallback\n }\n }\n}\n","import type { NetworkPayload, NetworkSchema } from '@xyo-network/network'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n useCallback, useEffect, useMemo,\n} from 'react'\nimport { useSearchParams } from 'react-router-dom'\n\nimport { defaultNetworkConfigs, findNetworkConfig } from '../../lib/index.ts'\nimport { NetworkContext } from '../Context.ts'\nimport { useNetwork } from '../use.ts'\nimport { NetworkMemoryProvider } from './Memory.tsx'\nimport type { NetworkProviderProps } from './Props.ts'\n\nconst NetworkRouteProviderInner: React.FC<PropsWithChildren> = ({ children }) => {\n const { network, setNetwork } = useNetwork()\n\n const [params, setParams] = useSearchParams()\n\n const slug = params.get('network')\n const routeNetwork = slug ? findNetworkConfig(slug) : undefined\n\n // update the network stored in the route\n const setNetworkParam = useCallback(\n (network?: Omit<NetworkPayload, 'schema'> & { schema: NetworkSchema }) => {\n if (network) {\n params.set('network', network.slug)\n setParams(params, { replace: true })\n setNetwork?.(network)\n } else {\n params.delete('network')\n }\n },\n [params, setParams, setNetwork],\n )\n\n // if the network is actively changed, update both memory and route\n const setNetworkLocal = useCallback(\n (network: Omit<NetworkPayload, 'schema'> & { schema: NetworkSchema }) => {\n setNetworkParam(network)\n setNetwork?.(network)\n },\n [setNetworkParam, setNetwork],\n )\n\n // sync memory and route storage of network\n useEffect(() => {\n if (routeNetwork !== network) {\n if (routeNetwork === undefined && network !== undefined) {\n // if the route does not have a network selected, use what is in the memory context\n setNetworkParam(network)\n } else if (routeNetwork !== undefined) {\n // if the route has a selection and it is different from memory, update memory\n setNetwork?.(routeNetwork)\n }\n }\n }, [routeNetwork, network, setNetworkParam, setNetwork])\n\n const value = useMemo(() => ({\n network, networks: defaultNetworkConfigs, provided: true as const, setNetwork: setNetworkLocal,\n }), [network, setNetworkLocal])\n\n return (\n <NetworkContext value={value}>\n {network ? children : null}\n </NetworkContext>\n )\n}\n\nexport const NetworkRouteProvider: React.FC<PropsWithChildren<NetworkProviderProps>> = ({\n defaultNetworkConfig, defaultNetworkName, ...props\n}) => {\n return (\n <NetworkMemoryProvider defaultNetworkConfig={defaultNetworkConfig} defaultNetworkName={defaultNetworkName}>\n <NetworkRouteProviderInner {...props} />\n </NetworkMemoryProvider>\n )\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { NetworkContext } from './Context.ts'\nimport type { NetworkContextState } from './State.ts'\n\nexport const useNetwork = (required = false) => {\n return useContextEx<NetworkContextState>(NetworkContext, 'Network', required)\n}\n"],"mappings":"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","names":["NetworkNodeSchema","useMemo","jsx","network","useMemo","jsx","network"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-network",
3
- "version": "7.5.7",
3
+ "version": "7.5.11",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -36,46 +36,71 @@
36
36
  },
37
37
  "./package.json": "./package.json"
38
38
  },
39
- "module": "dist/browser/index.mjs",
40
- "types": "dist/browser/index.d.ts",
41
39
  "files": [
42
40
  "dist",
43
- "src"
41
+ "README.md"
44
42
  ],
45
- "dependencies": {
46
- "@xylabs/react-select": "~7.1.17",
47
- "@xylabs/react-shared": "~7.1.17",
48
- "@xylabs/sdk-js": "~5.0.90",
49
- "@xyo-network/network": "~5.3.17",
50
- "react-router-dom": "^7.13.2"
51
- },
52
43
  "devDependencies": {
53
- "@mui/icons-material": "~7.3.9",
54
- "@mui/material": "~7.3.9",
55
- "@storybook/react-vite": "~10.3.3",
44
+ "@mui/material": "^7.3.10",
45
+ "@opentelemetry/api": "^1.9.1",
46
+ "@opentelemetry/sdk-trace-base": "^2.7.0",
47
+ "@storybook/react-vite": "~10.3.5",
48
+ "@types/node": "~25.6.0",
56
49
  "@types/react": "^19.2.14",
57
- "@xylabs/react-flexbox": "~7.1.17",
58
- "@xylabs/ts-scripts-common": "~7.5.6",
59
- "@xylabs/ts-scripts-yarn3": "~7.5.6",
60
- "@xylabs/tsconfig": "~7.5.6",
61
- "@xylabs/tsconfig-dom": "~7.5.6",
62
- "@xylabs/tsconfig-react": "~7.5.6",
63
- "react": "^19.2.4",
64
- "react-dom": "^19.2.4",
65
- "storybook": "~10.3.3",
50
+ "@xylabs/react-async-effect": "~7.1.20",
51
+ "@xylabs/react-flexbox": "~7.1.20",
52
+ "@xylabs/react-promise": "~7.1.20",
53
+ "@xylabs/react-select": "~7.1.20",
54
+ "@xylabs/react-shared": "~7.1.20",
55
+ "@xylabs/sdk-js": "^5.0.100",
56
+ "@xylabs/threads": "~5.0.100",
57
+ "@xylabs/toolchain": "~7.11.9",
58
+ "@xylabs/tsconfig": "^7.11.9",
59
+ "@xylabs/tsconfig-dom": "^7.11.9",
60
+ "@xylabs/tsconfig-react": "~7.11.9",
61
+ "@xyo-network/network": "~5.5.1",
62
+ "async-mutex": "^0.5.0",
63
+ "axios": "^1.15.2",
64
+ "bn.js": "^5.2.3",
65
+ "buffer": "^6.0.3",
66
+ "chalk": "^5.6.2",
67
+ "debug": "~4.4.3",
68
+ "esbuild": "~0.28.0",
69
+ "eslint": "^10.2.1",
70
+ "ethers": "^6.16.0",
71
+ "hash-wasm": "~4.12.0",
72
+ "observable-fns": "~0.6.1",
73
+ "pako": "^2.1.0",
74
+ "react": "^19.2.5",
75
+ "react-dom": "^19.2.5",
76
+ "react-router-dom": "^7.14.2",
77
+ "storybook": "^10.3.5",
66
78
  "typescript": "^5.9.3",
67
- "vite": "~8.0.3",
79
+ "vite": "^8.0.10",
80
+ "wasm-feature-detect": "~1.8.0",
68
81
  "zod": "^4.3.6"
69
82
  },
70
83
  "peerDependencies": {
71
- "@mui/icons-material": ">=6 <8",
72
- "@mui/material": ">=6 <8",
73
- "react": "^19",
74
- "react-dom": "^19",
75
- "zod": "^4"
84
+ "@mui/material": "^7.3.10",
85
+ "@opentelemetry/sdk-trace-base": "^2.7.0",
86
+ "@xylabs/react-async-effect": "~7.1.20",
87
+ "@xylabs/react-select": "~7.1.20",
88
+ "@xylabs/react-shared": "~7.1.20",
89
+ "@xylabs/sdk-js": "^5.0.100",
90
+ "@xyo-network/network": "~5.5.1",
91
+ "async-mutex": "^0.5.0",
92
+ "bn.js": "^5.2.3",
93
+ "buffer": "^6.0.3",
94
+ "chalk": "^5.6.2",
95
+ "ethers": "^6.16.0",
96
+ "pako": "^2.1.0",
97
+ "react": "^19.2.5",
98
+ "react-dom": "^19.2.5",
99
+ "react-router-dom": "^7.14.2",
100
+ "zod": "^4.3.6"
76
101
  },
77
102
  "publishConfig": {
78
103
  "access": "public"
79
104
  },
80
105
  "docs": "dist/docs.json"
81
- }
106
+ }
@@ -1,99 +0,0 @@
1
- import { Card, CardContent } from '@mui/material'
2
- import type { Meta, StoryFn } from '@storybook/react-vite'
3
- import { FlexCol } from '@xylabs/react-flexbox'
4
- import type { FC } from 'react'
5
- import React, {
6
- useEffect, useMemo, useState,
7
- } from 'react'
8
- import { BrowserRouter } from 'react-router-dom'
9
-
10
- import {
11
- NetworkMemoryProvider, NetworkRouteProvider, useNetwork,
12
- } from '../../contexts/index.ts'
13
- import type { NetworkSelectExProps } from './NetworkSelectEx.tsx'
14
- import { NetworkSelectEx } from './NetworkSelectEx.tsx'
15
-
16
- const StorybookEntry = {
17
- argTypes: { responsive: { defaultValue: false } },
18
- component: NetworkSelectEx,
19
- parameters: { docs: { page: null } },
20
- title: 'network/NetworkSelectEx',
21
- } as Meta<typeof NetworkSelectEx>
22
-
23
- const NetworkConfigOutput = () => {
24
- const { network } = useNetwork()
25
- return (
26
- <FlexCol my={2}>
27
- <Card>
28
- <CardContent>
29
- <pre>{JSON.stringify(network, null, 2)}</pre>
30
- </CardContent>
31
- </Card>
32
- </FlexCol>
33
- )
34
- }
35
-
36
- const Template: StoryFn<typeof NetworkSelectEx> = (args) => {
37
- return <NetworkSelectEx {...args}></NetworkSelectEx>
38
- }
39
-
40
- const TemplateWithMemoryProvider: StoryFn<typeof NetworkSelectEx> = (props) => {
41
- return (
42
- <NetworkMemoryProvider>
43
- <NetworkSelectEx {...props}></NetworkSelectEx>
44
- <NetworkConfigOutput />
45
- </NetworkMemoryProvider>
46
- )
47
- }
48
-
49
- const TemplateWithRouteProvider: StoryFn<typeof NetworkSelectEx> = (props) => {
50
- const url = new URL(globalThis.location.toString())
51
- url.searchParams.set('network', 'main')
52
- history.pushState({}, '', url)
53
- return (
54
- <BrowserRouter>
55
- <NetworkRouteProvider>
56
- <TemplateWithRouteProviderInner {...props} />
57
- </NetworkRouteProvider>
58
- </BrowserRouter>
59
- )
60
- }
61
-
62
- const TemplateWithRouteProviderInner: FC<NetworkSelectExProps> = (props) => {
63
- const { network } = useNetwork()
64
- const [uris, setUris] = useState<(string | undefined)[]>([])
65
-
66
- useEffect(() => {
67
- setUris(previous => [...previous, network?.nodes?.find(node => node.type === 'archivist')?.uri])
68
- }, [network?.nodes])
69
-
70
- useEffect(() => {
71
- if (uris.length > 1) {
72
- throw new Error('Error: Route Provider sent multiple network uris but should only send one.')
73
- }
74
- })
75
-
76
- return (
77
- <>
78
- <NetworkSelectEx {...props}></NetworkSelectEx>
79
- {uris.map(uri => (
80
- <p key={uri}>{uri}</p>
81
- ))}
82
- </>
83
- )
84
- }
85
-
86
- const Default = Template.bind({})
87
- Default.args = {}
88
-
89
- const WithMemoryProvider = TemplateWithMemoryProvider.bind({})
90
- WithMemoryProvider.args = {}
91
-
92
- const WithRouteProvider = TemplateWithRouteProvider.bind({})
93
- WithRouteProvider.args = {}
94
-
95
- export {
96
- Default, WithMemoryProvider, WithRouteProvider,
97
- }
98
-
99
- export default StorybookEntry
@@ -1,45 +0,0 @@
1
- import { MenuItem } from '@mui/material'
2
- import type { SelectExProps } from '@xylabs/react-select'
3
- import { SelectEx } from '@xylabs/react-select'
4
- import { useBreakpoint } from '@xylabs/react-shared'
5
- import { assertEx } from '@xylabs/sdk-js'
6
- import React from 'react'
7
-
8
- import { useNetwork } from '../../contexts/index.ts'
9
- import { findNetworkConfig } from '../../lib/index.ts'
10
-
11
- export type NetworkSelectExProps = Omit<SelectExProps<string>, 'variant'>
12
- & Partial<SelectExProps<string>> & {
13
- responsive?: boolean
14
- }
15
-
16
- export const NetworkSelectEx: React.FC<NetworkSelectExProps> = ({
17
- onChange, variant = 'outlined', responsive = true, ...props
18
- }) => {
19
- const {
20
- network, setNetwork, networks,
21
- } = useNetwork(false)
22
- const sm = useBreakpoint() === 'sm'
23
- return (
24
- <SelectEx
25
- variant={variant}
26
- size="small"
27
- value={network?.slug ?? ''}
28
- onChange={(event, child) => {
29
- if (event.target.value !== network?.slug) {
30
- onChange?.(event, child)
31
- setNetwork?.(assertEx(findNetworkConfig(event.target.value, networks)))
32
- }
33
- }}
34
- {...props}
35
- >
36
- {networks?.map((network) => {
37
- return (
38
- <MenuItem key={network.slug} value={network.slug}>
39
- {responsive && sm ? network.name?.[0].toUpperCase() : network.name}
40
- </MenuItem>
41
- )
42
- })}
43
- </SelectEx>
44
- )
45
- }
@@ -1 +0,0 @@
1
- export * from './NetworkSelectEx.tsx'
@@ -1 +0,0 @@
1
- export * from './SelectEx/index.ts'
@@ -1,5 +0,0 @@
1
- import { createContextEx } from '@xylabs/react-shared'
2
-
3
- import type { NetworkContextState } from './State.ts'
4
-
5
- export const NetworkContext = createContextEx<NetworkContextState>()
@@ -1,56 +0,0 @@
1
- import {
2
- Card, CardContent, Typography,
3
- } from '@mui/material'
4
- import type { Meta, StoryFn } from '@storybook/react-vite'
5
- import { FlexCol } from '@xylabs/react-flexbox'
6
- import React from 'react'
7
-
8
- import { defaultNetworkConfigs } from '../../lib/index.ts'
9
- import { useNetwork } from '../use.ts'
10
- import { NetworkMemoryProvider } from './Memory.tsx'
11
-
12
- const StorybookEntry: Meta = {
13
- component: NetworkMemoryProvider,
14
- title: 'network/NetworkMemoryProvider',
15
- }
16
-
17
- const NetworkConfigOutput = () => {
18
- const { network } = useNetwork()
19
- return (
20
- <FlexCol my={2}>
21
- <Card>
22
- <CardContent>
23
- <pre>{JSON.stringify(network, null, 2)}</pre>
24
- </CardContent>
25
- </Card>
26
- </FlexCol>
27
- )
28
- }
29
-
30
- const Template: StoryFn<typeof NetworkMemoryProvider> = (props) => {
31
- return (
32
- <NetworkMemoryProvider {...props}>
33
- <Typography>
34
- Props:
35
- {' '}
36
- <pre>{JSON.stringify(props, null, 2)}</pre>
37
- </Typography>
38
- <NetworkConfigOutput />
39
- </NetworkMemoryProvider>
40
- )
41
- }
42
-
43
- const Default = Template.bind({})
44
- Default.args = {}
45
-
46
- const DefaultNetworkName = Template.bind({})
47
- DefaultNetworkName.args = { defaultNetworkName: 'Main' }
48
-
49
- const DefaultNetworkConfig = Template.bind({})
50
- DefaultNetworkConfig.args = { defaultNetworkConfig: defaultNetworkConfigs[2] }
51
-
52
- export default StorybookEntry
53
-
54
- export {
55
- Default, DefaultNetworkConfig, DefaultNetworkName,
56
- }
@@ -1,28 +0,0 @@
1
- import type { PropsWithChildren } from 'react'
2
- import React, { useMemo, useState } from 'react'
3
-
4
- import { defaultNetworkConfigs } from '../../lib/index.ts'
5
- import { NetworkContext } from '../Context.ts'
6
- import type { NetworkContextState } from '../State.ts'
7
- import type { NetworkProviderProps } from './Props.ts'
8
-
9
- export const NetworkMemoryProvider: React.FC<PropsWithChildren<NetworkProviderProps>> = ({
10
- defaultNetworkConfig, defaultNetworkName, ...props
11
- }) => {
12
- if (defaultNetworkConfig && defaultNetworkName) {
13
- console.warn('Both defaultNetworkConfig and defaultNetworkName were passed to provider. Falling back to defaultNetworkConfig')
14
- }
15
-
16
- const resolvedDefaultNetworkConfig = defaultNetworkName ? defaultNetworkConfigs.find(config => config.name === defaultNetworkName) : undefined
17
-
18
- const [network, setNetwork] = useState(defaultNetworkConfig ?? resolvedDefaultNetworkConfig ?? defaultNetworkConfigs[0])
19
-
20
- const value: NetworkContextState = useMemo(() => ({
21
- network, networks: defaultNetworkConfigs, provided: true, setNetwork,
22
- }), [network, setNetwork])
23
-
24
- return <NetworkContext value={value} {...props} />
25
- }
26
-
27
- /** @deprecated use NetworkMemoryProvider instead */
28
- export const NetworkProvider = NetworkMemoryProvider
@@ -1,10 +0,0 @@
1
- import type { NetworkPayload, NetworkSchema } from '@xyo-network/network'
2
-
3
- import type { NetworkNames } from '../../lib/index.ts'
4
-
5
- export interface NetworkProviderProps {
6
- /** @deprecated use defaultNetworkConfig instead */
7
- defaultNetwork?: (Omit<NetworkPayload, 'schema'> & { schema: NetworkSchema })
8
- defaultNetworkConfig?: (Omit<NetworkPayload, 'schema'> & { schema: NetworkSchema })
9
- defaultNetworkName?: NetworkNames
10
- }
@@ -1,74 +0,0 @@
1
- import type { NetworkPayload, NetworkSchema } from '@xyo-network/network'
2
- import type { PropsWithChildren } from 'react'
3
- import React, { useCallback, useEffect } from 'react'
4
- import { useSearchParams } from 'react-router-dom'
5
-
6
- import { defaultNetworkConfigs, findNetworkConfig } from '../../lib/index.ts'
7
- import { NetworkContext } from '../Context.ts'
8
- import { useNetwork } from '../use.ts'
9
- import { NetworkMemoryProvider } from './Memory.tsx'
10
- import type { NetworkProviderProps } from './Props.ts'
11
-
12
- const NetworkRouteProviderInner: React.FC<PropsWithChildren> = ({ children }) => {
13
- const { network, setNetwork } = useNetwork()
14
-
15
- const [params, setParams] = useSearchParams()
16
-
17
- const slug = params.get('network')
18
- const routeNetwork = slug ? findNetworkConfig(slug) : undefined
19
-
20
- // update the network stored in the route
21
- const setNetworkParam = useCallback(
22
- (network?: Omit<NetworkPayload, 'schema'> & { schema: NetworkSchema }) => {
23
- if (network) {
24
- params.set('network', network.slug)
25
- setParams(params, { replace: true })
26
- setNetwork?.(network)
27
- } else {
28
- params.delete('network')
29
- }
30
- },
31
- [params, setParams, setNetwork],
32
- )
33
-
34
- // if the network is actively changed, update both memory and route
35
- const setNetworkLocal = useCallback(
36
- (network: Omit<NetworkPayload, 'schema'> & { schema: NetworkSchema }) => {
37
- setNetworkParam(network)
38
- setNetwork?.(network)
39
- },
40
- [setNetworkParam, setNetwork],
41
- )
42
-
43
- // sync memory and route storage of network
44
- useEffect(() => {
45
- if (routeNetwork !== network) {
46
- if (routeNetwork === undefined && network !== undefined) {
47
- // if the route does not have a network selected, use what is in the memory context
48
- setNetworkParam(network)
49
- } else if (routeNetwork !== undefined) {
50
- // if the route has a selection and it is different from memory, update memory
51
- setNetwork?.(routeNetwork)
52
- }
53
- }
54
- }, [routeNetwork, network, setNetworkParam, setNetwork])
55
-
56
- return (
57
- <NetworkContext value={{
58
- network, networks: defaultNetworkConfigs, provided: true, setNetwork: setNetworkLocal,
59
- }}
60
- >
61
- {network ? children : null}
62
- </NetworkContext>
63
- )
64
- }
65
-
66
- export const NetworkRouteProvider: React.FC<PropsWithChildren<NetworkProviderProps>> = ({
67
- defaultNetworkConfig, defaultNetworkName, ...props
68
- }) => {
69
- return (
70
- <NetworkMemoryProvider defaultNetworkConfig={defaultNetworkConfig} defaultNetworkName={defaultNetworkName}>
71
- <NetworkRouteProviderInner {...props} />
72
- </NetworkMemoryProvider>
73
- )
74
- }
@@ -1,3 +0,0 @@
1
- export * from './Memory.tsx'
2
- export * from './Props.ts'
3
- export * from './Route.tsx'
@@ -1,12 +0,0 @@
1
- import type { ContextExState } from '@xylabs/react-shared'
2
- import type { NetworkPayload } from '@xyo-network/network'
3
- import type { Dispatch } from 'react'
4
-
5
- export type NetworkContextState = ContextExState<{
6
- /** @field The currently selected XYO Network */
7
- network?: NetworkPayload
8
- /** @field The list of known available networks */
9
- networks?: NetworkPayload[]
10
- /** @field Function to set the selected Network */
11
- setNetwork?: Dispatch<NetworkPayload>
12
- }>
@@ -1,4 +0,0 @@
1
- export * from './Context.ts'
2
- export * from './Provider/index.ts'
3
- export * from './State.ts'
4
- export * from './use.ts'
@@ -1,8 +0,0 @@
1
- import { useContextEx } from '@xylabs/react-shared'
2
-
3
- import { NetworkContext } from './Context.ts'
4
- import type { NetworkContextState } from './State.ts'
5
-
6
- export const useNetwork = (required = false) => {
7
- return useContextEx<NetworkContextState>(NetworkContext, 'Network', required)
8
- }
package/src/index.ts DELETED
@@ -1,3 +0,0 @@
1
- export * from './components/index.ts'
2
- export * from './contexts/index.ts'
3
- export * from './lib/index.ts'
@@ -1 +0,0 @@
1
- export type NetworkNames = 'Kerplunk' | 'Main' | 'Local' | 'Custom'
@@ -1,35 +0,0 @@
1
- import type { NetworkPayload } from '@xyo-network/network'
2
- import { NetworkSchema } from '@xyo-network/network'
3
-
4
- import { findArchivistPreset } from '../archivistPresets.ts'
5
- import { findDivinerPreset } from '../divinerPresets.ts'
6
-
7
- export const defaultNetworkConfigs: (Omit<NetworkPayload, 'schema'> & { schema: NetworkSchema })[] = [
8
- {
9
- name: 'Kerplunk',
10
- nodes: [findArchivistPreset('kerplunk-archivist-xyo-network'), findDivinerPreset('beta-location-diviner-xyo-network')],
11
- schema: NetworkSchema,
12
- slug: 'kerplunk',
13
- },
14
- {
15
- name: 'Main',
16
- nodes: [findArchivistPreset('main-archivist-xyo-network'), findDivinerPreset('location-diviner-xyo-network')],
17
- schema: NetworkSchema,
18
- slug: 'main',
19
- },
20
- {
21
- name: 'Local',
22
- nodes: [findArchivistPreset('local-archivist-xyo-network'), findDivinerPreset('local-location-diviner-xyo-network')],
23
- schema: NetworkSchema,
24
- slug: 'local',
25
- },
26
- {
27
- name: 'Custom',
28
- nodes: [findArchivistPreset('kerplunk-archivist-xyo-network'), findDivinerPreset('beta-location-diviner-xyo-network')],
29
- schema: NetworkSchema,
30
- slug: 'custom',
31
- },
32
- ]
33
-
34
- /** @deprecated use defaultNetworkConfigs instead */
35
- export const networkPresets = defaultNetworkConfigs
@@ -1,10 +0,0 @@
1
- import { defaultNetworkConfigs } from './default.ts'
2
-
3
- export const findNetworkConfig = (slug: string, configs = defaultNetworkConfigs) => {
4
- return configs.find((item) => {
5
- return item.slug === slug
6
- })
7
- }
8
-
9
- /** @deprecated use findNetworkConfig instead */
10
- export const findNetworkPreset = findNetworkConfig
@@ -1,4 +0,0 @@
1
- export * from './default.ts'
2
- export * from './find.ts'
3
- export * from './NetworkNames.ts'
4
- export * from './resolveNetworkFromHostname.ts'
@@ -1,17 +0,0 @@
1
- import type { NetworkNames } from './NetworkNames.ts'
2
-
3
- export type SiteName = 'explore' | 'node'
4
-
5
- export const resolveNetworkFromHostName = (fallback: NetworkNames = 'Kerplunk', siteName: SiteName) => {
6
- switch (document.location.hostname) {
7
- case `${siteName}.xyo.network`: {
8
- return 'Main'
9
- }
10
- case `beta.${siteName}.xyo.network`: {
11
- return 'Kerplunk'
12
- }
13
- default: {
14
- return fallback
15
- }
16
- }
17
- }
@@ -1,17 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js'
2
- export const ExplorerMapHashes: { animatedAnswerHashes: Hash[]; staticAnswerHash: Hash } = {
3
- animatedAnswerHashes: [
4
- '79af071f451fc7af10d009dc63236ef9a9b211732c1ee0c06f028fcecf2336c5',
5
- '531bfba6d8dfefd3bcc888aca54cdbbd4574ed2b3ec551b230845a1f9a608898',
6
- 'c874412b4faa4947de81372fd1ba12fdd6f43f5e408622b7f357cb2bcb3f17cb',
7
- '29d3f8b882c61a82a1a1675782a27e797ea7196f45a23b4409680ab8b8d5f14e',
8
- 'cfd20f80ac073fd9518f4ef3f43d2a1f5e4e56e40c2677f38d6f6fecd05df60c',
9
- '1354fa73497519a39aed19fc99bdbae78a880a1eafb2f7898d607e07db36528d',
10
- '1043b0d25eacfc5013ae9dba780305a6fbf01a43543bd871d7c00537fca142a9',
11
- '973dfc5df142851ced258d52d0ac2784e814000ac22e35776f772256b0d4dde9',
12
- '463808eb74d3d87e6563970e0301a493577f8cd1b501e6e0ffa5e027ad2cea95',
13
- '15b21acea2e3fd9d1ace3768a72636ee7bdf67a6f8e0807bfa2273dea2207555',
14
- '32d377bfe7ebe382598c54dd13f8af7510e0a1e2fd2e913311fdd58e517e5e2e',
15
- ] as Hash[],
16
- staticAnswerHash: 'c7bbf61f61cfd4a1b2def160c28136fc1d100d39fbdb67b227a2c6e558d9d3a5' as Hash,
17
- }
@@ -1,11 +0,0 @@
1
- import { archivistPresets } from './archivistPresets.ts'
2
-
3
- export const archivistUriToName = () => {
4
- // eslint-disable-next-line unicorn/no-array-reduce
5
- return archivistPresets.reduce<Record<string, string>>((acc, { name, uri }) => {
6
- if (name) {
7
- acc[uri] = name
8
- }
9
- return acc
10
- }, {})
11
- }
@@ -1,49 +0,0 @@
1
- import type { Hash } from '@xylabs/sdk-js'
2
- import type { NetworkNodePayload } from '@xyo-network/network'
3
- import { NetworkNodeSchema } from '@xyo-network/network'
4
-
5
- import { ExplorerMapHashes } from './ExplorerMapHashes.ts'
6
-
7
- export type ArchivistPreset = NetworkNodePayload & {
8
- explorerMapHashes?: {
9
- animatedAnswerHashes: Hash[]
10
- staticAnswerHash: Hash
11
- }
12
- }
13
-
14
- export const findArchivistPreset = (slug: string) => {
15
- return (
16
- archivistPresets.find((item) => {
17
- return item.slug === slug
18
- }) ?? archivistPresets[0]
19
- )
20
- }
21
-
22
- export const archivistPresets: ArchivistPreset[] = [
23
- {
24
- docs: 'https://beta.archivist.xyo.network/api',
25
- explorerMapHashes: ExplorerMapHashes,
26
- name: 'XYO Shared Archivist (kerplunk)',
27
- schema: NetworkNodeSchema,
28
- slug: 'kerplunk-archivist-xyo-network',
29
- type: 'archivist',
30
- uri: 'https://beta.api.archivist.xyo.network',
31
- },
32
- {
33
- docs: 'https://archivist.xyo.network/api',
34
- explorerMapHashes: ExplorerMapHashes,
35
- name: 'XYO Shared Archivist (main)',
36
- schema: NetworkNodeSchema,
37
- slug: 'main-archivist-xyo-network',
38
- type: 'archivist',
39
- uri: 'https://api.archivist.xyo.network',
40
- },
41
- {
42
- docs: 'http://localhost:8080/api',
43
- name: 'XYO Shared Archivist (local)',
44
- schema: NetworkNodeSchema,
45
- slug: 'local-archivist-xyo-network',
46
- type: 'archivist',
47
- uri: 'http://localhost:8080',
48
- },
49
- ]
@@ -1,37 +0,0 @@
1
- import type { NetworkNodePayload } from '@xyo-network/network'
2
- import { NetworkNodeSchema } from '@xyo-network/network'
3
-
4
- export const findDivinerPreset = (slug: string) => {
5
- return (
6
- divinerPresets.find((item) => {
7
- return item.slug === slug
8
- }) ?? divinerPresets[0]
9
- )
10
- }
11
-
12
- export const divinerPresets: NetworkNodePayload[] = [
13
- {
14
- name: 'XYO Location (beta)',
15
- schema: NetworkNodeSchema,
16
- slug: 'beta-location-diviner-xyo-network',
17
- type: 'diviner',
18
- uri: 'https://beta.api.location.diviner.xyo.network',
19
- web: 'https://beta.explore.xyo.network',
20
- },
21
- {
22
- name: 'XYO Location',
23
- schema: NetworkNodeSchema,
24
- slug: 'location-diviner-xyo-network',
25
- type: 'diviner',
26
- uri: 'https://api.location.diviner.xyo.network',
27
- web: 'https://explore.xyo.network',
28
- },
29
- {
30
- name: 'XYO Location (local)',
31
- schema: NetworkNodeSchema,
32
- slug: 'local-location-diviner-xyo-network',
33
- type: 'diviner',
34
- uri: 'http://localhost:8082',
35
- web: 'http://localhost:3000',
36
- },
37
- ]
package/src/lib/index.ts DELETED
@@ -1,4 +0,0 @@
1
- export * from './archivistNameToUri.ts'
2
- export * from './archivistPresets.ts'
3
- export * from './Config/index.ts'
4
- export * from './divinerPresets.ts'