@xyo-network/react-archivist 2.64.0 → 2.64.3

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 (46) hide show
  1. package/dist/browser/components/Card/Card.js +176 -8
  2. package/dist/browser/components/Card/Card.js.map +1 -1
  3. package/dist/browser/components/Card/CardActions.js +3 -2
  4. package/dist/browser/components/Card/CardActions.js.map +1 -1
  5. package/dist/browser/components/Card/CardContent.js +42 -6
  6. package/dist/browser/components/Card/CardContent.js.map +1 -1
  7. package/dist/browser/components/Card/CardHeader.js +92 -9
  8. package/dist/browser/components/Card/CardHeader.js.map +1 -1
  9. package/dist/browser/components/Card/components/ArchivistParent.js +3 -2
  10. package/dist/browser/components/Card/components/ArchivistParent.js.map +1 -1
  11. package/dist/browser/components/Card/components/ArchivistParents.js +26 -12
  12. package/dist/browser/components/Card/components/ArchivistParents.js.map +1 -1
  13. package/dist/browser/components/Card/components/Stats/ArchivistStats.js +3 -2
  14. package/dist/browser/components/Card/components/Stats/ArchivistStats.js.map +1 -1
  15. package/dist/browser/components/Card/components/Stats/MemoryArchivistStats.js +21 -4
  16. package/dist/browser/components/Card/components/Stats/MemoryArchivistStats.js.map +1 -1
  17. package/dist/browser/components/Card/components/Stats/index.js +84 -2
  18. package/dist/browser/components/Card/components/Stats/index.js.map +1 -1
  19. package/dist/browser/components/Card/components/index.js +120 -3
  20. package/dist/browser/components/Card/components/index.js.map +1 -1
  21. package/dist/browser/components/Card/index.js +186 -3
  22. package/dist/browser/components/Card/index.js.map +1 -1
  23. package/dist/browser/components/Details/Details.js +23 -7
  24. package/dist/browser/components/Details/Details.js.map +1 -1
  25. package/dist/browser/components/Details/index.js +78 -1
  26. package/dist/browser/components/Details/index.js.map +1 -1
  27. package/dist/browser/components/index.js +263 -2
  28. package/dist/browser/components/index.js.map +1 -1
  29. package/dist/browser/hooks/index.js +75 -2
  30. package/dist/browser/hooks/index.js.map +1 -1
  31. package/dist/browser/hooks/node/index.js +40 -2
  32. package/dist/browser/hooks/node/index.js.map +1 -1
  33. package/dist/browser/hooks/node/useArchivistFromNode.js +2 -1
  34. package/dist/browser/hooks/node/useArchivistFromNode.js.map +1 -1
  35. package/dist/browser/hooks/node/useArchivistsFromNode.js +2 -1
  36. package/dist/browser/hooks/node/useArchivistsFromNode.js.map +1 -1
  37. package/dist/browser/hooks/queries/index.js +36 -2
  38. package/dist/browser/hooks/queries/index.js.map +1 -1
  39. package/dist/browser/hooks/queries/useArchivistAll.js +2 -1
  40. package/dist/browser/hooks/queries/useArchivistAll.js.map +1 -1
  41. package/dist/browser/hooks/queries/useArchivistGet.js +2 -1
  42. package/dist/browser/hooks/queries/useArchivistGet.js.map +1 -1
  43. package/dist/browser/index.js +323 -2
  44. package/dist/browser/index.js.map +1 -1
  45. package/dist/docs.json +16 -16
  46. package/package.json +20 -20
@@ -1,11 +1,28 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ // src/components/Card/components/Stats/MemoryArchivistStats.tsx
2
2
  import { useAsyncEffect } from "@xylabs/react-async-effect";
3
3
  import { ArchivistAllQuerySchema } from "@xyo-network/archivist";
4
4
  import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
5
5
  import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
6
6
  import { useCallback, useEffect, useMemo, useState } from "react";
7
- import { ArchivistStats } from "./ArchivistStats";
8
- const MemoryArchivistsStats = ({ archivist }) => {
7
+
8
+ // src/components/Card/components/Stats/ArchivistStats.tsx
9
+ import { Badge, Tooltip } from "@mui/material";
10
+ import { FlexRow } from "@xylabs/react-flexbox";
11
+ import { BsFileEarmarkCode } from "react-icons/bs/index.js";
12
+ import { VscOrganization, VscSymbolMethod, VscSymbolNamespace } from "react-icons/vsc/index.js";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ var ArchivistStats = ({ addresses = {}, boundWitnesses, payloads, schemas = {} }) => {
15
+ return /* @__PURE__ */ jsxs(FlexRow, { gap: 2, mr: 0.5, children: [
16
+ payloads?.length ? /* @__PURE__ */ jsx(Tooltip, { title: "Payloads", children: /* @__PURE__ */ jsx(Badge, { badgeContent: payloads?.length, color: "primary", children: /* @__PURE__ */ jsx(VscSymbolNamespace, { size: 20 }) }) }) : null,
17
+ boundWitnesses?.length ? /* @__PURE__ */ jsx(Tooltip, { title: "Blocks", children: /* @__PURE__ */ jsx(Badge, { badgeContent: boundWitnesses?.length, color: "primary", children: /* @__PURE__ */ jsx(VscSymbolMethod, { size: 20 }) }) }) : null,
18
+ Object.entries(schemas).length ? /* @__PURE__ */ jsx(Tooltip, { title: "Schemas", children: /* @__PURE__ */ jsx(Badge, { badgeContent: Object.entries(schemas).length, color: "primary", children: /* @__PURE__ */ jsx(BsFileEarmarkCode, { size: 20 }) }) }) : null,
19
+ Object.entries(addresses).length ? /* @__PURE__ */ jsx(Tooltip, { title: "Addresses", children: /* @__PURE__ */ jsx(Badge, { badgeContent: Object.entries(addresses).length, color: "primary", children: /* @__PURE__ */ jsx(VscOrganization, { size: 20 }) }) }) : null
20
+ ] });
21
+ };
22
+
23
+ // src/components/Card/components/Stats/MemoryArchivistStats.tsx
24
+ import { jsx as jsx2 } from "react/jsx-runtime";
25
+ var MemoryArchivistsStats = ({ archivist }) => {
9
26
  const [all, setAll] = useState();
10
27
  const getAll = useCallback(async (archivist2) => {
11
28
  const all2 = await archivist2?.all?.();
@@ -61,7 +78,7 @@ const MemoryArchivistsStats = ({ archivist }) => {
61
78
  ) ?? {},
62
79
  [all]
63
80
  );
64
- return /* @__PURE__ */ jsx(ArchivistStats, { addresses, boundWitnesses, payloads, schemas });
81
+ return /* @__PURE__ */ jsx2(ArchivistStats, { addresses, boundWitnesses, payloads, schemas });
65
82
  };
66
83
  export {
67
84
  MemoryArchivistsStats
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Card/components/Stats/MemoryArchivistStats.tsx"],"sourcesContent":["import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ArchivistAllQuerySchema, ArchivistInstance } from '@xyo-network/archivist'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { EventUnsubscribeFunction } from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { ArchivistStats } from './ArchivistStats'\n\nexport interface MemoryArchivistStatsProps {\n archivist?: ArchivistInstance\n}\n\nexport const MemoryArchivistsStats: React.FC<MemoryArchivistStatsProps> = ({ archivist }) => {\n const [all, setAll] = useState<Payload[] | null>()\n\n const getAll = useCallback(async (archivist?: ArchivistInstance) => {\n const all = await archivist?.all?.()\n setAll(all)\n }, [])\n\n useEffect(() => {\n const listeners: EventUnsubscribeFunction[] = []\n\n if (archivist?.queries.includes(ArchivistAllQuerySchema)) {\n const insertListener = archivist.on('inserted', async () => {\n await getAll(archivist)\n })\n listeners.push(insertListener)\n\n const clearListener = archivist.on('cleared', async () => {\n await getAll(archivist)\n })\n listeners.push(clearListener)\n }\n\n return () => listeners.forEach((listener) => listener?.())\n }, [archivist, getAll])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n if (archivist?.queries.includes(ArchivistAllQuerySchema)) {\n await getAll(archivist)\n } else {\n setAll(null)\n }\n },\n [archivist, getAll],\n )\n\n const payloads = useMemo(() => (all === null ? [] : all?.filter((payload) => payload.schema !== BoundWitnessSchema)), [all])\n const boundWitnesses = useMemo(() => (all === null ? [] : all?.filter((payload) => payload.schema === BoundWitnessSchema)), [all])\n const addresses = useMemo(\n () =>\n all?.reduce(\n (prev, payload) => {\n const w = BoundWitnessWrapper.tryParse(payload) as BoundWitnessWrapper | undefined\n w?.addresses?.forEach((address) => {\n prev[address] = (prev[address] ?? 0) + 1\n })\n return prev\n },\n {} as Record<string, number>,\n ) ?? {},\n [all],\n )\n const schemas = useMemo(\n () =>\n all?.reduce(\n (prev, payload) => {\n prev[payload.schema] = (prev[payload.schema] ?? 0) + 1\n return prev\n },\n {} as Record<string, number>,\n ) ?? {},\n [all],\n )\n\n return <ArchivistStats addresses={addresses} boundWitnesses={boundWitnesses} payloads={payloads} schemas={schemas} />\n}\n"],"mappings":"AAgFS;AAhFT,SAAS,sBAAsB;AAC/B,SAAS,+BAAkD;AAC3D,SAAS,0BAA0B;AACnC,SAAS,2BAA2B;AAGpC,SAAS,aAAa,WAAW,SAAS,gBAAgB;AAE1D,SAAS,sBAAsB;AAMxB,MAAM,wBAA6D,CAAC,EAAE,UAAU,MAAM;AAC3F,QAAM,CAAC,KAAK,MAAM,IAAI,SAA2B;AAEjD,QAAM,SAAS,YAAY,OAAOA,eAAkC;AAClE,UAAMC,OAAM,MAAMD,YAAW,MAAM;AACnC,WAAOC,IAAG;AAAA,EACZ,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,UAAM,YAAwC,CAAC;AAE/C,QAAI,WAAW,QAAQ,SAAS,uBAAuB,GAAG;AACxD,YAAM,iBAAiB,UAAU,GAAG,YAAY,YAAY;AAC1D,cAAM,OAAO,SAAS;AAAA,MACxB,CAAC;AACD,gBAAU,KAAK,cAAc;AAE7B,YAAM,gBAAgB,UAAU,GAAG,WAAW,YAAY;AACxD,cAAM,OAAO,SAAS;AAAA,MACxB,CAAC;AACD,gBAAU,KAAK,aAAa;AAAA,IAC9B;AAEA,WAAO,MAAM,UAAU,QAAQ,CAAC,aAAa,WAAW,CAAC;AAAA,EAC3D,GAAG,CAAC,WAAW,MAAM,CAAC;AAEtB;AAAA;AAAA,IAEE,YAAY;AACV,UAAI,WAAW,QAAQ,SAAS,uBAAuB,GAAG;AACxD,cAAM,OAAO,SAAS;AAAA,MACxB,OAAO;AACL,eAAO,IAAI;AAAA,MACb;AAAA,IACF;AAAA,IACA,CAAC,WAAW,MAAM;AAAA,EACpB;AAEA,QAAM,WAAW,QAAQ,MAAO,QAAQ,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,YAAY,QAAQ,WAAW,kBAAkB,GAAI,CAAC,GAAG,CAAC;AAC3H,QAAM,iBAAiB,QAAQ,MAAO,QAAQ,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,YAAY,QAAQ,WAAW,kBAAkB,GAAI,CAAC,GAAG,CAAC;AACjI,QAAM,YAAY;AAAA,IAChB,MACE,KAAK;AAAA,MACH,CAAC,MAAM,YAAY;AACjB,cAAM,IAAI,oBAAoB,SAAS,OAAO;AAC9C,WAAG,WAAW,QAAQ,CAAC,YAAY;AACjC,eAAK,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK;AAAA,QACzC,CAAC;AACD,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH,KAAK,CAAC;AAAA,IACR,CAAC,GAAG;AAAA,EACN;AACA,QAAM,UAAU;AAAA,IACd,MACE,KAAK;AAAA,MACH,CAAC,MAAM,YAAY;AACjB,aAAK,QAAQ,MAAM,KAAK,KAAK,QAAQ,MAAM,KAAK,KAAK;AACrD,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH,KAAK,CAAC;AAAA,IACR,CAAC,GAAG;AAAA,EACN;AAEA,SAAO,oBAAC,kBAAe,WAAsB,gBAAgC,UAAoB,SAAkB;AACrH;","names":["archivist","all"]}
1
+ {"version":3,"sources":["../../../../../../src/components/Card/components/Stats/MemoryArchivistStats.tsx","../../../../../../src/components/Card/components/Stats/ArchivistStats.tsx"],"sourcesContent":["import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ArchivistAllQuerySchema, ArchivistInstance } from '@xyo-network/archivist'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { EventUnsubscribeFunction } from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { ArchivistStats } from './ArchivistStats'\n\nexport interface MemoryArchivistStatsProps {\n archivist?: ArchivistInstance\n}\n\nexport const MemoryArchivistsStats: React.FC<MemoryArchivistStatsProps> = ({ archivist }) => {\n const [all, setAll] = useState<Payload[] | null>()\n\n const getAll = useCallback(async (archivist?: ArchivistInstance) => {\n const all = await archivist?.all?.()\n setAll(all)\n }, [])\n\n useEffect(() => {\n const listeners: EventUnsubscribeFunction[] = []\n\n if (archivist?.queries.includes(ArchivistAllQuerySchema)) {\n const insertListener = archivist.on('inserted', async () => {\n await getAll(archivist)\n })\n listeners.push(insertListener)\n\n const clearListener = archivist.on('cleared', async () => {\n await getAll(archivist)\n })\n listeners.push(clearListener)\n }\n\n return () => listeners.forEach((listener) => listener?.())\n }, [archivist, getAll])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n if (archivist?.queries.includes(ArchivistAllQuerySchema)) {\n await getAll(archivist)\n } else {\n setAll(null)\n }\n },\n [archivist, getAll],\n )\n\n const payloads = useMemo(() => (all === null ? [] : all?.filter((payload) => payload.schema !== BoundWitnessSchema)), [all])\n const boundWitnesses = useMemo(() => (all === null ? [] : all?.filter((payload) => payload.schema === BoundWitnessSchema)), [all])\n const addresses = useMemo(\n () =>\n all?.reduce(\n (prev, payload) => {\n const w = BoundWitnessWrapper.tryParse(payload) as BoundWitnessWrapper | undefined\n w?.addresses?.forEach((address) => {\n prev[address] = (prev[address] ?? 0) + 1\n })\n return prev\n },\n {} as Record<string, number>,\n ) ?? {},\n [all],\n )\n const schemas = useMemo(\n () =>\n all?.reduce(\n (prev, payload) => {\n prev[payload.schema] = (prev[payload.schema] ?? 0) + 1\n return prev\n },\n {} as Record<string, number>,\n ) ?? {},\n [all],\n )\n\n return <ArchivistStats addresses={addresses} boundWitnesses={boundWitnesses} payloads={payloads} schemas={schemas} />\n}\n","import { Badge, Tooltip } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { Payload } from '@xyo-network/payload-model'\n// eslint-disable-next-line import/no-internal-modules\nimport { BsFileEarmarkCode } from 'react-icons/bs/index.js'\n// eslint-disable-next-line import/no-internal-modules\nimport { VscOrganization, VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc/index.js'\n\nexport interface ArchivistStatsProps {\n addresses?: Record<string, number>\n boundWitnesses?: Payload[] | null\n payloads?: Payload[] | null\n schemas?: Record<string, number>\n}\n\nexport const ArchivistStats: React.FC<ArchivistStatsProps> = ({ addresses = {}, boundWitnesses, payloads, schemas = {} }) => {\n return (\n <FlexRow gap={2} mr={0.5}>\n {payloads?.length ? (\n <Tooltip title=\"Payloads\">\n <Badge badgeContent={payloads?.length} color=\"primary\">\n <VscSymbolNamespace size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {boundWitnesses?.length ? (\n <Tooltip title=\"Blocks\">\n <Badge badgeContent={boundWitnesses?.length} color=\"primary\">\n <VscSymbolMethod size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {Object.entries(schemas).length ? (\n <Tooltip title=\"Schemas\">\n <Badge badgeContent={Object.entries(schemas).length} color=\"primary\">\n <BsFileEarmarkCode size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {Object.entries(addresses).length ? (\n <Tooltip title=\"Addresses\">\n <Badge badgeContent={Object.entries(addresses).length} color=\"primary\">\n <VscOrganization size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n </FlexRow>\n )\n}\n"],"mappings":"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","names":["jsx","archivist","all"]}
@@ -1,3 +1,85 @@
1
- export * from "./ArchivistStats";
2
- export * from "./MemoryArchivistStats";
1
+ // src/components/Card/components/Stats/ArchivistStats.tsx
2
+ import { Badge, Tooltip } from "@mui/material";
3
+ import { FlexRow } from "@xylabs/react-flexbox";
4
+ import { BsFileEarmarkCode } from "react-icons/bs/index.js";
5
+ import { VscOrganization, VscSymbolMethod, VscSymbolNamespace } from "react-icons/vsc/index.js";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ var ArchivistStats = ({ addresses = {}, boundWitnesses, payloads, schemas = {} }) => {
8
+ return /* @__PURE__ */ jsxs(FlexRow, { gap: 2, mr: 0.5, children: [
9
+ payloads?.length ? /* @__PURE__ */ jsx(Tooltip, { title: "Payloads", children: /* @__PURE__ */ jsx(Badge, { badgeContent: payloads?.length, color: "primary", children: /* @__PURE__ */ jsx(VscSymbolNamespace, { size: 20 }) }) }) : null,
10
+ boundWitnesses?.length ? /* @__PURE__ */ jsx(Tooltip, { title: "Blocks", children: /* @__PURE__ */ jsx(Badge, { badgeContent: boundWitnesses?.length, color: "primary", children: /* @__PURE__ */ jsx(VscSymbolMethod, { size: 20 }) }) }) : null,
11
+ Object.entries(schemas).length ? /* @__PURE__ */ jsx(Tooltip, { title: "Schemas", children: /* @__PURE__ */ jsx(Badge, { badgeContent: Object.entries(schemas).length, color: "primary", children: /* @__PURE__ */ jsx(BsFileEarmarkCode, { size: 20 }) }) }) : null,
12
+ Object.entries(addresses).length ? /* @__PURE__ */ jsx(Tooltip, { title: "Addresses", children: /* @__PURE__ */ jsx(Badge, { badgeContent: Object.entries(addresses).length, color: "primary", children: /* @__PURE__ */ jsx(VscOrganization, { size: 20 }) }) }) : null
13
+ ] });
14
+ };
15
+
16
+ // src/components/Card/components/Stats/MemoryArchivistStats.tsx
17
+ import { useAsyncEffect } from "@xylabs/react-async-effect";
18
+ import { ArchivistAllQuerySchema } from "@xyo-network/archivist";
19
+ import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
20
+ import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
21
+ import { useCallback, useEffect, useMemo, useState } from "react";
22
+ import { jsx as jsx2 } from "react/jsx-runtime";
23
+ var MemoryArchivistsStats = ({ archivist }) => {
24
+ const [all, setAll] = useState();
25
+ const getAll = useCallback(async (archivist2) => {
26
+ const all2 = await archivist2?.all?.();
27
+ setAll(all2);
28
+ }, []);
29
+ useEffect(() => {
30
+ const listeners = [];
31
+ if (archivist?.queries.includes(ArchivistAllQuerySchema)) {
32
+ const insertListener = archivist.on("inserted", async () => {
33
+ await getAll(archivist);
34
+ });
35
+ listeners.push(insertListener);
36
+ const clearListener = archivist.on("cleared", async () => {
37
+ await getAll(archivist);
38
+ });
39
+ listeners.push(clearListener);
40
+ }
41
+ return () => listeners.forEach((listener) => listener?.());
42
+ }, [archivist, getAll]);
43
+ useAsyncEffect(
44
+ // eslint-disable-next-line react-hooks/exhaustive-deps
45
+ async () => {
46
+ if (archivist?.queries.includes(ArchivistAllQuerySchema)) {
47
+ await getAll(archivist);
48
+ } else {
49
+ setAll(null);
50
+ }
51
+ },
52
+ [archivist, getAll]
53
+ );
54
+ const payloads = useMemo(() => all === null ? [] : all?.filter((payload) => payload.schema !== BoundWitnessSchema), [all]);
55
+ const boundWitnesses = useMemo(() => all === null ? [] : all?.filter((payload) => payload.schema === BoundWitnessSchema), [all]);
56
+ const addresses = useMemo(
57
+ () => all?.reduce(
58
+ (prev, payload) => {
59
+ const w = BoundWitnessWrapper.tryParse(payload);
60
+ w?.addresses?.forEach((address) => {
61
+ prev[address] = (prev[address] ?? 0) + 1;
62
+ });
63
+ return prev;
64
+ },
65
+ {}
66
+ ) ?? {},
67
+ [all]
68
+ );
69
+ const schemas = useMemo(
70
+ () => all?.reduce(
71
+ (prev, payload) => {
72
+ prev[payload.schema] = (prev[payload.schema] ?? 0) + 1;
73
+ return prev;
74
+ },
75
+ {}
76
+ ) ?? {},
77
+ [all]
78
+ );
79
+ return /* @__PURE__ */ jsx2(ArchivistStats, { addresses, boundWitnesses, payloads, schemas });
80
+ };
81
+ export {
82
+ ArchivistStats,
83
+ MemoryArchivistsStats
84
+ };
3
85
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/Card/components/Stats/index.ts"],"sourcesContent":["export * from './ArchivistStats'\nexport * from './MemoryArchivistStats'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../../../../src/components/Card/components/Stats/ArchivistStats.tsx","../../../../../../src/components/Card/components/Stats/MemoryArchivistStats.tsx"],"sourcesContent":["import { Badge, Tooltip } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { Payload } from '@xyo-network/payload-model'\n// eslint-disable-next-line import/no-internal-modules\nimport { BsFileEarmarkCode } from 'react-icons/bs/index.js'\n// eslint-disable-next-line import/no-internal-modules\nimport { VscOrganization, VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc/index.js'\n\nexport interface ArchivistStatsProps {\n addresses?: Record<string, number>\n boundWitnesses?: Payload[] | null\n payloads?: Payload[] | null\n schemas?: Record<string, number>\n}\n\nexport const ArchivistStats: React.FC<ArchivistStatsProps> = ({ addresses = {}, boundWitnesses, payloads, schemas = {} }) => {\n return (\n <FlexRow gap={2} mr={0.5}>\n {payloads?.length ? (\n <Tooltip title=\"Payloads\">\n <Badge badgeContent={payloads?.length} color=\"primary\">\n <VscSymbolNamespace size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {boundWitnesses?.length ? (\n <Tooltip title=\"Blocks\">\n <Badge badgeContent={boundWitnesses?.length} color=\"primary\">\n <VscSymbolMethod size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {Object.entries(schemas).length ? (\n <Tooltip title=\"Schemas\">\n <Badge badgeContent={Object.entries(schemas).length} color=\"primary\">\n <BsFileEarmarkCode size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {Object.entries(addresses).length ? (\n <Tooltip title=\"Addresses\">\n <Badge badgeContent={Object.entries(addresses).length} color=\"primary\">\n <VscOrganization size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n </FlexRow>\n )\n}\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ArchivistAllQuerySchema, ArchivistInstance } from '@xyo-network/archivist'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { EventUnsubscribeFunction } from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { ArchivistStats } from './ArchivistStats'\n\nexport interface MemoryArchivistStatsProps {\n archivist?: ArchivistInstance\n}\n\nexport const MemoryArchivistsStats: React.FC<MemoryArchivistStatsProps> = ({ archivist }) => {\n const [all, setAll] = useState<Payload[] | null>()\n\n const getAll = useCallback(async (archivist?: ArchivistInstance) => {\n const all = await archivist?.all?.()\n setAll(all)\n }, [])\n\n useEffect(() => {\n const listeners: EventUnsubscribeFunction[] = []\n\n if (archivist?.queries.includes(ArchivistAllQuerySchema)) {\n const insertListener = archivist.on('inserted', async () => {\n await getAll(archivist)\n })\n listeners.push(insertListener)\n\n const clearListener = archivist.on('cleared', async () => {\n await getAll(archivist)\n })\n listeners.push(clearListener)\n }\n\n return () => listeners.forEach((listener) => listener?.())\n }, [archivist, getAll])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n if (archivist?.queries.includes(ArchivistAllQuerySchema)) {\n await getAll(archivist)\n } else {\n setAll(null)\n }\n },\n [archivist, getAll],\n )\n\n const payloads = useMemo(() => (all === null ? [] : all?.filter((payload) => payload.schema !== BoundWitnessSchema)), [all])\n const boundWitnesses = useMemo(() => (all === null ? [] : all?.filter((payload) => payload.schema === BoundWitnessSchema)), [all])\n const addresses = useMemo(\n () =>\n all?.reduce(\n (prev, payload) => {\n const w = BoundWitnessWrapper.tryParse(payload) as BoundWitnessWrapper | undefined\n w?.addresses?.forEach((address) => {\n prev[address] = (prev[address] ?? 0) + 1\n })\n return prev\n },\n {} as Record<string, number>,\n ) ?? {},\n [all],\n )\n const schemas = useMemo(\n () =>\n all?.reduce(\n (prev, payload) => {\n prev[payload.schema] = (prev[payload.schema] ?? 0) + 1\n return prev\n },\n {} as Record<string, number>,\n ) ?? {},\n [all],\n )\n\n return <ArchivistStats addresses={addresses} boundWitnesses={boundWitnesses} payloads={payloads} schemas={schemas} />\n}\n"],"mappings":"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","names":["jsx","archivist","all"]}
@@ -1,4 +1,121 @@
1
- export * from "./ArchivistParent";
2
- export * from "./ArchivistParents";
3
- export * from "./Stats";
1
+ // src/components/Card/components/ArchivistParent.tsx
2
+ import { ListItem, Typography } from "@mui/material";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ var ArchivistParent = ({ archivistType, parentArchivists }) => /* @__PURE__ */ jsx(Fragment, { children: parentArchivists?.map((address) => {
5
+ return /* @__PURE__ */ jsx(ListItem, { children: /* @__PURE__ */ jsxs(Typography, { variant: "subtitle2", children: [
6
+ archivistType,
7
+ ":",
8
+ " ",
9
+ /* @__PURE__ */ jsx(Typography, { variant: "caption", sx: { ml: 0.5 }, children: address })
10
+ ] }) }, address);
11
+ }) });
12
+
13
+ // src/components/Card/components/ArchivistParents.tsx
14
+ import { ArrowRightRounded as ArrowRightRoundedIcon } from "@mui/icons-material";
15
+ import { Collapse, IconButton, List, Paper, Typography as Typography2 } from "@mui/material";
16
+ import { FlexCol } from "@xylabs/react-flexbox";
17
+ import { useState } from "react";
18
+ import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
19
+ var ArchivistParents = ({ config, ...props }) => {
20
+ const [parentArchivistCollapse, setParentArchivistCollapse] = useState(false);
21
+ const { commit, read, write } = config?.parents ?? {};
22
+ return /* @__PURE__ */ jsx2(Fragment2, { children: commit || read || write ? /* @__PURE__ */ jsxs2(FlexCol, { alignItems: "start", ...props, children: [
23
+ /* @__PURE__ */ jsxs2("span", { onClick: () => setParentArchivistCollapse(!parentArchivistCollapse), children: [
24
+ /* @__PURE__ */ jsx2(Typography2, { variant: "subtitle2", sx: { cursor: "pointer", display: "inline-block" }, children: "Parents" }),
25
+ /* @__PURE__ */ jsx2(IconButton, { size: "small", children: /* @__PURE__ */ jsx2(ArrowRightRoundedIcon, { sx: { rotate: parentArchivistCollapse ? "90deg" : "0deg", transition: "all .25s" } }) })
26
+ ] }),
27
+ /* @__PURE__ */ jsx2(Collapse, { in: parentArchivistCollapse, children: /* @__PURE__ */ jsx2(Paper, { elevation: 2, children: /* @__PURE__ */ jsxs2(List, { children: [
28
+ /* @__PURE__ */ jsx2(ArchivistParent, { archivistType: "Commit", parentArchivists: commit }),
29
+ /* @__PURE__ */ jsx2(ArchivistParent, { archivistType: "Read", parentArchivists: read }),
30
+ /* @__PURE__ */ jsx2(ArchivistParent, { archivistType: "Write", parentArchivists: write })
31
+ ] }) }) })
32
+ ] }) : null });
33
+ };
34
+
35
+ // src/components/Card/components/Stats/ArchivistStats.tsx
36
+ import { Badge, Tooltip } from "@mui/material";
37
+ import { FlexRow } from "@xylabs/react-flexbox";
38
+ import { BsFileEarmarkCode } from "react-icons/bs/index.js";
39
+ import { VscOrganization, VscSymbolMethod, VscSymbolNamespace } from "react-icons/vsc/index.js";
40
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
41
+ var ArchivistStats = ({ addresses = {}, boundWitnesses, payloads, schemas = {} }) => {
42
+ return /* @__PURE__ */ jsxs3(FlexRow, { gap: 2, mr: 0.5, children: [
43
+ payloads?.length ? /* @__PURE__ */ jsx3(Tooltip, { title: "Payloads", children: /* @__PURE__ */ jsx3(Badge, { badgeContent: payloads?.length, color: "primary", children: /* @__PURE__ */ jsx3(VscSymbolNamespace, { size: 20 }) }) }) : null,
44
+ boundWitnesses?.length ? /* @__PURE__ */ jsx3(Tooltip, { title: "Blocks", children: /* @__PURE__ */ jsx3(Badge, { badgeContent: boundWitnesses?.length, color: "primary", children: /* @__PURE__ */ jsx3(VscSymbolMethod, { size: 20 }) }) }) : null,
45
+ Object.entries(schemas).length ? /* @__PURE__ */ jsx3(Tooltip, { title: "Schemas", children: /* @__PURE__ */ jsx3(Badge, { badgeContent: Object.entries(schemas).length, color: "primary", children: /* @__PURE__ */ jsx3(BsFileEarmarkCode, { size: 20 }) }) }) : null,
46
+ Object.entries(addresses).length ? /* @__PURE__ */ jsx3(Tooltip, { title: "Addresses", children: /* @__PURE__ */ jsx3(Badge, { badgeContent: Object.entries(addresses).length, color: "primary", children: /* @__PURE__ */ jsx3(VscOrganization, { size: 20 }) }) }) : null
47
+ ] });
48
+ };
49
+
50
+ // src/components/Card/components/Stats/MemoryArchivistStats.tsx
51
+ import { useAsyncEffect } from "@xylabs/react-async-effect";
52
+ import { ArchivistAllQuerySchema } from "@xyo-network/archivist";
53
+ import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
54
+ import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
55
+ import { useCallback, useEffect, useMemo, useState as useState2 } from "react";
56
+ import { jsx as jsx4 } from "react/jsx-runtime";
57
+ var MemoryArchivistsStats = ({ archivist }) => {
58
+ const [all, setAll] = useState2();
59
+ const getAll = useCallback(async (archivist2) => {
60
+ const all2 = await archivist2?.all?.();
61
+ setAll(all2);
62
+ }, []);
63
+ useEffect(() => {
64
+ const listeners = [];
65
+ if (archivist?.queries.includes(ArchivistAllQuerySchema)) {
66
+ const insertListener = archivist.on("inserted", async () => {
67
+ await getAll(archivist);
68
+ });
69
+ listeners.push(insertListener);
70
+ const clearListener = archivist.on("cleared", async () => {
71
+ await getAll(archivist);
72
+ });
73
+ listeners.push(clearListener);
74
+ }
75
+ return () => listeners.forEach((listener) => listener?.());
76
+ }, [archivist, getAll]);
77
+ useAsyncEffect(
78
+ // eslint-disable-next-line react-hooks/exhaustive-deps
79
+ async () => {
80
+ if (archivist?.queries.includes(ArchivistAllQuerySchema)) {
81
+ await getAll(archivist);
82
+ } else {
83
+ setAll(null);
84
+ }
85
+ },
86
+ [archivist, getAll]
87
+ );
88
+ const payloads = useMemo(() => all === null ? [] : all?.filter((payload) => payload.schema !== BoundWitnessSchema), [all]);
89
+ const boundWitnesses = useMemo(() => all === null ? [] : all?.filter((payload) => payload.schema === BoundWitnessSchema), [all]);
90
+ const addresses = useMemo(
91
+ () => all?.reduce(
92
+ (prev, payload) => {
93
+ const w = BoundWitnessWrapper.tryParse(payload);
94
+ w?.addresses?.forEach((address) => {
95
+ prev[address] = (prev[address] ?? 0) + 1;
96
+ });
97
+ return prev;
98
+ },
99
+ {}
100
+ ) ?? {},
101
+ [all]
102
+ );
103
+ const schemas = useMemo(
104
+ () => all?.reduce(
105
+ (prev, payload) => {
106
+ prev[payload.schema] = (prev[payload.schema] ?? 0) + 1;
107
+ return prev;
108
+ },
109
+ {}
110
+ ) ?? {},
111
+ [all]
112
+ );
113
+ return /* @__PURE__ */ jsx4(ArchivistStats, { addresses, boundWitnesses, payloads, schemas });
114
+ };
115
+ export {
116
+ ArchivistParent,
117
+ ArchivistParents,
118
+ ArchivistStats,
119
+ MemoryArchivistsStats
120
+ };
4
121
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/Card/components/index.ts"],"sourcesContent":["export * from './ArchivistParent'\nexport * from './ArchivistParents'\nexport * from './Stats'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../../../src/components/Card/components/ArchivistParent.tsx","../../../../../src/components/Card/components/ArchivistParents.tsx","../../../../../src/components/Card/components/Stats/ArchivistStats.tsx","../../../../../src/components/Card/components/Stats/MemoryArchivistStats.tsx"],"sourcesContent":["import { ListItem, Typography } from '@mui/material'\n\nexport interface ArchivistTypeProps {\n archivistType?: 'Commit' | 'Read' | 'Write'\n parentArchivists?: string[]\n}\n\nexport const ArchivistParent: React.FC<ArchivistTypeProps> = ({ archivistType, parentArchivists }) => (\n <>\n {parentArchivists?.map((address) => {\n return (\n <ListItem key={address}>\n <Typography variant=\"subtitle2\">\n {archivistType}:{' '}\n <Typography variant={'caption'} sx={{ ml: 0.5 }}>\n {address}\n </Typography>\n </Typography>\n </ListItem>\n )\n })}\n </>\n)\n","import { ArrowRightRounded as ArrowRightRoundedIcon } from '@mui/icons-material'\nimport { Collapse, IconButton, List, Paper, Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { ArchivistConfig } from '@xyo-network/archivist'\nimport { useState } from 'react'\n\nimport { ArchivistParent } from './ArchivistParent'\n\nexport interface ArchivistParentsProps extends FlexBoxProps {\n config?: ArchivistConfig\n}\n\nexport const ArchivistParents: React.FC<ArchivistParentsProps> = ({ config, ...props }) => {\n const [parentArchivistCollapse, setParentArchivistCollapse] = useState(false)\n\n const { commit, read, write } = config?.parents ?? {}\n\n return (\n <>\n {commit || read || write ? (\n <FlexCol alignItems=\"start\" {...props}>\n <span onClick={() => setParentArchivistCollapse(!parentArchivistCollapse)}>\n <Typography variant=\"subtitle2\" sx={{ cursor: 'pointer', display: 'inline-block' }}>\n Parents\n </Typography>\n <IconButton size=\"small\">\n <ArrowRightRoundedIcon sx={{ rotate: parentArchivistCollapse ? '90deg' : '0deg', transition: 'all .25s' }} />\n </IconButton>\n </span>\n <Collapse in={parentArchivistCollapse}>\n <Paper elevation={2}>\n <List>\n <ArchivistParent archivistType=\"Commit\" parentArchivists={commit} />\n <ArchivistParent archivistType=\"Read\" parentArchivists={read} />\n <ArchivistParent archivistType=\"Write\" parentArchivists={write} />\n </List>\n </Paper>\n </Collapse>\n </FlexCol>\n ) : null}\n </>\n )\n}\n","import { Badge, Tooltip } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { Payload } from '@xyo-network/payload-model'\n// eslint-disable-next-line import/no-internal-modules\nimport { BsFileEarmarkCode } from 'react-icons/bs/index.js'\n// eslint-disable-next-line import/no-internal-modules\nimport { VscOrganization, VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc/index.js'\n\nexport interface ArchivistStatsProps {\n addresses?: Record<string, number>\n boundWitnesses?: Payload[] | null\n payloads?: Payload[] | null\n schemas?: Record<string, number>\n}\n\nexport const ArchivistStats: React.FC<ArchivistStatsProps> = ({ addresses = {}, boundWitnesses, payloads, schemas = {} }) => {\n return (\n <FlexRow gap={2} mr={0.5}>\n {payloads?.length ? (\n <Tooltip title=\"Payloads\">\n <Badge badgeContent={payloads?.length} color=\"primary\">\n <VscSymbolNamespace size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {boundWitnesses?.length ? (\n <Tooltip title=\"Blocks\">\n <Badge badgeContent={boundWitnesses?.length} color=\"primary\">\n <VscSymbolMethod size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {Object.entries(schemas).length ? (\n <Tooltip title=\"Schemas\">\n <Badge badgeContent={Object.entries(schemas).length} color=\"primary\">\n <BsFileEarmarkCode size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {Object.entries(addresses).length ? (\n <Tooltip title=\"Addresses\">\n <Badge badgeContent={Object.entries(addresses).length} color=\"primary\">\n <VscOrganization size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n </FlexRow>\n )\n}\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ArchivistAllQuerySchema, ArchivistInstance } from '@xyo-network/archivist'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { EventUnsubscribeFunction } from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { ArchivistStats } from './ArchivistStats'\n\nexport interface MemoryArchivistStatsProps {\n archivist?: ArchivistInstance\n}\n\nexport const MemoryArchivistsStats: React.FC<MemoryArchivistStatsProps> = ({ archivist }) => {\n const [all, setAll] = useState<Payload[] | null>()\n\n const getAll = useCallback(async (archivist?: ArchivistInstance) => {\n const all = await archivist?.all?.()\n setAll(all)\n }, [])\n\n useEffect(() => {\n const listeners: EventUnsubscribeFunction[] = []\n\n if (archivist?.queries.includes(ArchivistAllQuerySchema)) {\n const insertListener = archivist.on('inserted', async () => {\n await getAll(archivist)\n })\n listeners.push(insertListener)\n\n const clearListener = archivist.on('cleared', async () => {\n await getAll(archivist)\n })\n listeners.push(clearListener)\n }\n\n return () => listeners.forEach((listener) => listener?.())\n }, [archivist, getAll])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n if (archivist?.queries.includes(ArchivistAllQuerySchema)) {\n await getAll(archivist)\n } else {\n setAll(null)\n }\n },\n [archivist, getAll],\n )\n\n const payloads = useMemo(() => (all === null ? [] : all?.filter((payload) => payload.schema !== BoundWitnessSchema)), [all])\n const boundWitnesses = useMemo(() => (all === null ? [] : all?.filter((payload) => payload.schema === BoundWitnessSchema)), [all])\n const addresses = useMemo(\n () =>\n all?.reduce(\n (prev, payload) => {\n const w = BoundWitnessWrapper.tryParse(payload) as BoundWitnessWrapper | undefined\n w?.addresses?.forEach((address) => {\n prev[address] = (prev[address] ?? 0) + 1\n })\n return prev\n },\n {} as Record<string, number>,\n ) ?? {},\n [all],\n )\n const schemas = useMemo(\n () =>\n all?.reduce(\n (prev, payload) => {\n prev[payload.schema] = (prev[payload.schema] ?? 0) + 1\n return prev\n },\n {} as Record<string, number>,\n ) ?? {},\n [all],\n )\n\n return <ArchivistStats addresses={addresses} boundWitnesses={boundWitnesses} payloads={payloads} schemas={schemas} />\n}\n"],"mappings":"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","names":["Typography","Fragment","jsx","jsxs","Typography","jsx","jsxs","useState","jsx","useState","archivist","all"]}
@@ -1,4 +1,187 @@
1
- export * from "./Card";
2
- export * from "./CardContent";
3
- export * from "./CardHeader";
1
+ // src/components/Card/Card.tsx
2
+ import { Card } from "@mui/material";
3
+ import { ModuleCardActions } from "@xyo-network/react-module";
4
+
5
+ // src/components/Card/CardContent.tsx
6
+ import { useAsyncEffect as useAsyncEffect2 } from "@xylabs/react-async-effect";
7
+ import { FlexGrowRow } from "@xylabs/react-flexbox";
8
+ import { ModuleWrapper } from "@xyo-network/module";
9
+ import { ModuleCardContent } from "@xyo-network/react-module";
10
+ import { useWallet } from "@xyo-network/react-wallet";
11
+ import { useState as useState3 } from "react";
12
+
13
+ // src/components/Card/components/ArchivistParent.tsx
14
+ import { ListItem, Typography } from "@mui/material";
15
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
16
+ var ArchivistParent = ({ archivistType, parentArchivists }) => /* @__PURE__ */ jsx(Fragment, { children: parentArchivists?.map((address) => {
17
+ return /* @__PURE__ */ jsx(ListItem, { children: /* @__PURE__ */ jsxs(Typography, { variant: "subtitle2", children: [
18
+ archivistType,
19
+ ":",
20
+ " ",
21
+ /* @__PURE__ */ jsx(Typography, { variant: "caption", sx: { ml: 0.5 }, children: address })
22
+ ] }) }, address);
23
+ }) });
24
+
25
+ // src/components/Card/components/ArchivistParents.tsx
26
+ import { ArrowRightRounded as ArrowRightRoundedIcon } from "@mui/icons-material";
27
+ import { Collapse, IconButton, List, Paper, Typography as Typography2 } from "@mui/material";
28
+ import { FlexCol } from "@xylabs/react-flexbox";
29
+ import { useState } from "react";
30
+ import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
31
+ var ArchivistParents = ({ config, ...props }) => {
32
+ const [parentArchivistCollapse, setParentArchivistCollapse] = useState(false);
33
+ const { commit, read, write } = config?.parents ?? {};
34
+ return /* @__PURE__ */ jsx2(Fragment2, { children: commit || read || write ? /* @__PURE__ */ jsxs2(FlexCol, { alignItems: "start", ...props, children: [
35
+ /* @__PURE__ */ jsxs2("span", { onClick: () => setParentArchivistCollapse(!parentArchivistCollapse), children: [
36
+ /* @__PURE__ */ jsx2(Typography2, { variant: "subtitle2", sx: { cursor: "pointer", display: "inline-block" }, children: "Parents" }),
37
+ /* @__PURE__ */ jsx2(IconButton, { size: "small", children: /* @__PURE__ */ jsx2(ArrowRightRoundedIcon, { sx: { rotate: parentArchivistCollapse ? "90deg" : "0deg", transition: "all .25s" } }) })
38
+ ] }),
39
+ /* @__PURE__ */ jsx2(Collapse, { in: parentArchivistCollapse, children: /* @__PURE__ */ jsx2(Paper, { elevation: 2, children: /* @__PURE__ */ jsxs2(List, { children: [
40
+ /* @__PURE__ */ jsx2(ArchivistParent, { archivistType: "Commit", parentArchivists: commit }),
41
+ /* @__PURE__ */ jsx2(ArchivistParent, { archivistType: "Read", parentArchivists: read }),
42
+ /* @__PURE__ */ jsx2(ArchivistParent, { archivistType: "Write", parentArchivists: write })
43
+ ] }) }) })
44
+ ] }) : null });
45
+ };
46
+
47
+ // src/components/Card/components/Stats/ArchivistStats.tsx
48
+ import { Badge, Tooltip } from "@mui/material";
49
+ import { FlexRow } from "@xylabs/react-flexbox";
50
+ import { BsFileEarmarkCode } from "react-icons/bs/index.js";
51
+ import { VscOrganization, VscSymbolMethod, VscSymbolNamespace } from "react-icons/vsc/index.js";
52
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
53
+ var ArchivistStats = ({ addresses = {}, boundWitnesses, payloads, schemas = {} }) => {
54
+ return /* @__PURE__ */ jsxs3(FlexRow, { gap: 2, mr: 0.5, children: [
55
+ payloads?.length ? /* @__PURE__ */ jsx3(Tooltip, { title: "Payloads", children: /* @__PURE__ */ jsx3(Badge, { badgeContent: payloads?.length, color: "primary", children: /* @__PURE__ */ jsx3(VscSymbolNamespace, { size: 20 }) }) }) : null,
56
+ boundWitnesses?.length ? /* @__PURE__ */ jsx3(Tooltip, { title: "Blocks", children: /* @__PURE__ */ jsx3(Badge, { badgeContent: boundWitnesses?.length, color: "primary", children: /* @__PURE__ */ jsx3(VscSymbolMethod, { size: 20 }) }) }) : null,
57
+ Object.entries(schemas).length ? /* @__PURE__ */ jsx3(Tooltip, { title: "Schemas", children: /* @__PURE__ */ jsx3(Badge, { badgeContent: Object.entries(schemas).length, color: "primary", children: /* @__PURE__ */ jsx3(BsFileEarmarkCode, { size: 20 }) }) }) : null,
58
+ Object.entries(addresses).length ? /* @__PURE__ */ jsx3(Tooltip, { title: "Addresses", children: /* @__PURE__ */ jsx3(Badge, { badgeContent: Object.entries(addresses).length, color: "primary", children: /* @__PURE__ */ jsx3(VscOrganization, { size: 20 }) }) }) : null
59
+ ] });
60
+ };
61
+
62
+ // src/components/Card/components/Stats/MemoryArchivistStats.tsx
63
+ import { useAsyncEffect } from "@xylabs/react-async-effect";
64
+ import { ArchivistAllQuerySchema } from "@xyo-network/archivist";
65
+ import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
66
+ import { BoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
67
+ import { useCallback, useEffect, useMemo, useState as useState2 } from "react";
68
+ import { jsx as jsx4 } from "react/jsx-runtime";
69
+ var MemoryArchivistsStats = ({ archivist }) => {
70
+ const [all, setAll] = useState2();
71
+ const getAll = useCallback(async (archivist2) => {
72
+ const all2 = await archivist2?.all?.();
73
+ setAll(all2);
74
+ }, []);
75
+ useEffect(() => {
76
+ const listeners = [];
77
+ if (archivist?.queries.includes(ArchivistAllQuerySchema)) {
78
+ const insertListener = archivist.on("inserted", async () => {
79
+ await getAll(archivist);
80
+ });
81
+ listeners.push(insertListener);
82
+ const clearListener = archivist.on("cleared", async () => {
83
+ await getAll(archivist);
84
+ });
85
+ listeners.push(clearListener);
86
+ }
87
+ return () => listeners.forEach((listener) => listener?.());
88
+ }, [archivist, getAll]);
89
+ useAsyncEffect(
90
+ // eslint-disable-next-line react-hooks/exhaustive-deps
91
+ async () => {
92
+ if (archivist?.queries.includes(ArchivistAllQuerySchema)) {
93
+ await getAll(archivist);
94
+ } else {
95
+ setAll(null);
96
+ }
97
+ },
98
+ [archivist, getAll]
99
+ );
100
+ const payloads = useMemo(() => all === null ? [] : all?.filter((payload) => payload.schema !== BoundWitnessSchema), [all]);
101
+ const boundWitnesses = useMemo(() => all === null ? [] : all?.filter((payload) => payload.schema === BoundWitnessSchema), [all]);
102
+ const addresses = useMemo(
103
+ () => all?.reduce(
104
+ (prev, payload) => {
105
+ const w = BoundWitnessWrapper.tryParse(payload);
106
+ w?.addresses?.forEach((address) => {
107
+ prev[address] = (prev[address] ?? 0) + 1;
108
+ });
109
+ return prev;
110
+ },
111
+ {}
112
+ ) ?? {},
113
+ [all]
114
+ );
115
+ const schemas = useMemo(
116
+ () => all?.reduce(
117
+ (prev, payload) => {
118
+ prev[payload.schema] = (prev[payload.schema] ?? 0) + 1;
119
+ return prev;
120
+ },
121
+ {}
122
+ ) ?? {},
123
+ [all]
124
+ );
125
+ return /* @__PURE__ */ jsx4(ArchivistStats, { addresses, boundWitnesses, payloads, schemas });
126
+ };
127
+
128
+ // src/components/Card/CardContent.tsx
129
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
130
+ var ArchivistCardContent = ({ children, module, ...props }) => {
131
+ const [config, setConfig] = useState3();
132
+ const [wallet] = useWallet();
133
+ useAsyncEffect2(
134
+ // eslint-disable-next-line react-hooks/exhaustive-deps
135
+ async (mounted) => {
136
+ if (wallet && module) {
137
+ const wrapper = ModuleWrapper.wrap(module, wallet);
138
+ const payloads = await wrapper?.discover();
139
+ if (mounted()) {
140
+ setConfig(payloads?.[0]);
141
+ }
142
+ } else {
143
+ setConfig(void 0);
144
+ }
145
+ },
146
+ [module, wallet]
147
+ );
148
+ return /* @__PURE__ */ jsx5(ModuleCardContent, { module, ...props, children: /* @__PURE__ */ jsxs4(FlexGrowRow, { flexWrap: "wrap", justifyContent: "start", gap: 2, children: [
149
+ children,
150
+ /* @__PURE__ */ jsx5(ArchivistParents, { config })
151
+ ] }) });
152
+ };
153
+
154
+ // src/components/Card/CardHeader.tsx
155
+ import { MemoryArchivistConfigSchema } from "@xyo-network/archivist";
156
+ import { ModuleCardHeader } from "@xyo-network/react-module";
157
+ import { useMemo as useMemo2 } from "react";
158
+ import { Fragment as Fragment3, jsx as jsx6 } from "react/jsx-runtime";
159
+ var ArchivistStats2 = (archivist) => {
160
+ switch (archivist?.config.schema) {
161
+ case MemoryArchivistConfigSchema:
162
+ return /* @__PURE__ */ jsx6(MemoryArchivistsStats, { archivist });
163
+ default:
164
+ return /* @__PURE__ */ jsx6(Fragment3, {});
165
+ }
166
+ };
167
+ var ArchivistCardHeader = ({ title, module, ...props }) => {
168
+ const Stats = useMemo2(() => ArchivistStats2(module), [module]);
169
+ return /* @__PURE__ */ jsx6(ModuleCardHeader, { module, title: title ?? module?.config.name ?? "Archivist", action: Stats, ...props });
170
+ };
171
+
172
+ // src/components/Card/Card.tsx
173
+ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
174
+ var ArchivistCard = ({ children, module, ...props }) => {
175
+ return /* @__PURE__ */ jsxs5(Card, { ...props, children: [
176
+ /* @__PURE__ */ jsx7(ArchivistCardHeader, { module }),
177
+ /* @__PURE__ */ jsx7(ArchivistCardContent, { module }),
178
+ children,
179
+ /* @__PURE__ */ jsx7(ModuleCardActions, { module })
180
+ ] });
181
+ };
182
+ export {
183
+ ArchivistCard,
184
+ ArchivistCardContent,
185
+ ArchivistCardHeader
186
+ };
4
187
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Card/index.ts"],"sourcesContent":["export * from './Card'\nexport * from './CardContent'\nexport * from './CardHeader'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/Card/Card.tsx","../../../../src/components/Card/CardContent.tsx","../../../../src/components/Card/components/ArchivistParent.tsx","../../../../src/components/Card/components/ArchivistParents.tsx","../../../../src/components/Card/components/Stats/ArchivistStats.tsx","../../../../src/components/Card/components/Stats/MemoryArchivistStats.tsx","../../../../src/components/Card/CardHeader.tsx"],"sourcesContent":["import { Card, CardProps } from '@mui/material'\nimport { ArchivistInstance } from '@xyo-network/archivist'\nimport { ModuleCardActions, ModuleRenderProps } from '@xyo-network/react-module'\n\nimport { ArchivistCardContent } from './CardContent'\nimport { ArchivistCardHeader } from './CardHeader'\n\nexport const ArchivistCard: React.FC<CardProps & ModuleRenderProps<ArchivistInstance>> = ({ children, module, ...props }) => {\n return (\n <Card {...props}>\n <ArchivistCardHeader module={module} />\n <ArchivistCardContent module={module} />\n {children}\n <ModuleCardActions module={module} />\n </Card>\n )\n}\n","import { CardContentProps } from '@mui/material'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { FlexGrowRow } from '@xylabs/react-flexbox'\nimport { ArchivistConfig, ArchivistInstance } from '@xyo-network/archivist'\nimport { ModuleWrapper } from '@xyo-network/module'\nimport { ModuleCardContent, ModuleRenderProps } from '@xyo-network/react-module'\nimport { useWallet } from '@xyo-network/react-wallet'\nimport React, { useState } from 'react'\n\nimport { ArchivistParents } from './components'\n\nexport const ArchivistCardContent: React.FC<ModuleRenderProps<ArchivistInstance> & CardContentProps> = ({ children, module, ...props }) => {\n const [config, setConfig] = useState<ArchivistConfig>()\n const [wallet] = useWallet()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n if (wallet && module) {\n const wrapper = ModuleWrapper.wrap(module, wallet)\n const payloads = await wrapper?.discover()\n if (mounted()) {\n setConfig(payloads?.[0] as ArchivistConfig)\n }\n } else {\n setConfig(undefined)\n }\n },\n [module, wallet],\n )\n\n return (\n <ModuleCardContent module={module} {...props}>\n <FlexGrowRow flexWrap=\"wrap\" justifyContent=\"start\" gap={2}>\n {children}\n <ArchivistParents config={config} />\n </FlexGrowRow>\n </ModuleCardContent>\n )\n}\n","import { ListItem, Typography } from '@mui/material'\n\nexport interface ArchivistTypeProps {\n archivistType?: 'Commit' | 'Read' | 'Write'\n parentArchivists?: string[]\n}\n\nexport const ArchivistParent: React.FC<ArchivistTypeProps> = ({ archivistType, parentArchivists }) => (\n <>\n {parentArchivists?.map((address) => {\n return (\n <ListItem key={address}>\n <Typography variant=\"subtitle2\">\n {archivistType}:{' '}\n <Typography variant={'caption'} sx={{ ml: 0.5 }}>\n {address}\n </Typography>\n </Typography>\n </ListItem>\n )\n })}\n </>\n)\n","import { ArrowRightRounded as ArrowRightRoundedIcon } from '@mui/icons-material'\nimport { Collapse, IconButton, List, Paper, Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { ArchivistConfig } from '@xyo-network/archivist'\nimport { useState } from 'react'\n\nimport { ArchivistParent } from './ArchivistParent'\n\nexport interface ArchivistParentsProps extends FlexBoxProps {\n config?: ArchivistConfig\n}\n\nexport const ArchivistParents: React.FC<ArchivistParentsProps> = ({ config, ...props }) => {\n const [parentArchivistCollapse, setParentArchivistCollapse] = useState(false)\n\n const { commit, read, write } = config?.parents ?? {}\n\n return (\n <>\n {commit || read || write ? (\n <FlexCol alignItems=\"start\" {...props}>\n <span onClick={() => setParentArchivistCollapse(!parentArchivistCollapse)}>\n <Typography variant=\"subtitle2\" sx={{ cursor: 'pointer', display: 'inline-block' }}>\n Parents\n </Typography>\n <IconButton size=\"small\">\n <ArrowRightRoundedIcon sx={{ rotate: parentArchivistCollapse ? '90deg' : '0deg', transition: 'all .25s' }} />\n </IconButton>\n </span>\n <Collapse in={parentArchivistCollapse}>\n <Paper elevation={2}>\n <List>\n <ArchivistParent archivistType=\"Commit\" parentArchivists={commit} />\n <ArchivistParent archivistType=\"Read\" parentArchivists={read} />\n <ArchivistParent archivistType=\"Write\" parentArchivists={write} />\n </List>\n </Paper>\n </Collapse>\n </FlexCol>\n ) : null}\n </>\n )\n}\n","import { Badge, Tooltip } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { Payload } from '@xyo-network/payload-model'\n// eslint-disable-next-line import/no-internal-modules\nimport { BsFileEarmarkCode } from 'react-icons/bs/index.js'\n// eslint-disable-next-line import/no-internal-modules\nimport { VscOrganization, VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc/index.js'\n\nexport interface ArchivistStatsProps {\n addresses?: Record<string, number>\n boundWitnesses?: Payload[] | null\n payloads?: Payload[] | null\n schemas?: Record<string, number>\n}\n\nexport const ArchivistStats: React.FC<ArchivistStatsProps> = ({ addresses = {}, boundWitnesses, payloads, schemas = {} }) => {\n return (\n <FlexRow gap={2} mr={0.5}>\n {payloads?.length ? (\n <Tooltip title=\"Payloads\">\n <Badge badgeContent={payloads?.length} color=\"primary\">\n <VscSymbolNamespace size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {boundWitnesses?.length ? (\n <Tooltip title=\"Blocks\">\n <Badge badgeContent={boundWitnesses?.length} color=\"primary\">\n <VscSymbolMethod size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {Object.entries(schemas).length ? (\n <Tooltip title=\"Schemas\">\n <Badge badgeContent={Object.entries(schemas).length} color=\"primary\">\n <BsFileEarmarkCode size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n {Object.entries(addresses).length ? (\n <Tooltip title=\"Addresses\">\n <Badge badgeContent={Object.entries(addresses).length} color=\"primary\">\n <VscOrganization size={20} />\n </Badge>\n </Tooltip>\n ) : null}\n </FlexRow>\n )\n}\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ArchivistAllQuerySchema, ArchivistInstance } from '@xyo-network/archivist'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport { EventUnsubscribeFunction } from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { ArchivistStats } from './ArchivistStats'\n\nexport interface MemoryArchivistStatsProps {\n archivist?: ArchivistInstance\n}\n\nexport const MemoryArchivistsStats: React.FC<MemoryArchivistStatsProps> = ({ archivist }) => {\n const [all, setAll] = useState<Payload[] | null>()\n\n const getAll = useCallback(async (archivist?: ArchivistInstance) => {\n const all = await archivist?.all?.()\n setAll(all)\n }, [])\n\n useEffect(() => {\n const listeners: EventUnsubscribeFunction[] = []\n\n if (archivist?.queries.includes(ArchivistAllQuerySchema)) {\n const insertListener = archivist.on('inserted', async () => {\n await getAll(archivist)\n })\n listeners.push(insertListener)\n\n const clearListener = archivist.on('cleared', async () => {\n await getAll(archivist)\n })\n listeners.push(clearListener)\n }\n\n return () => listeners.forEach((listener) => listener?.())\n }, [archivist, getAll])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n if (archivist?.queries.includes(ArchivistAllQuerySchema)) {\n await getAll(archivist)\n } else {\n setAll(null)\n }\n },\n [archivist, getAll],\n )\n\n const payloads = useMemo(() => (all === null ? [] : all?.filter((payload) => payload.schema !== BoundWitnessSchema)), [all])\n const boundWitnesses = useMemo(() => (all === null ? [] : all?.filter((payload) => payload.schema === BoundWitnessSchema)), [all])\n const addresses = useMemo(\n () =>\n all?.reduce(\n (prev, payload) => {\n const w = BoundWitnessWrapper.tryParse(payload) as BoundWitnessWrapper | undefined\n w?.addresses?.forEach((address) => {\n prev[address] = (prev[address] ?? 0) + 1\n })\n return prev\n },\n {} as Record<string, number>,\n ) ?? {},\n [all],\n )\n const schemas = useMemo(\n () =>\n all?.reduce(\n (prev, payload) => {\n prev[payload.schema] = (prev[payload.schema] ?? 0) + 1\n return prev\n },\n {} as Record<string, number>,\n ) ?? {},\n [all],\n )\n\n return <ArchivistStats addresses={addresses} boundWitnesses={boundWitnesses} payloads={payloads} schemas={schemas} />\n}\n","import { CardHeaderProps } from '@mui/material'\nimport { ArchivistInstance, MemoryArchivistConfigSchema } from '@xyo-network/archivist'\nimport { ModuleCardHeader, ModuleRenderProps } from '@xyo-network/react-module'\nimport { useMemo } from 'react'\n\nimport { MemoryArchivistsStats } from './components'\n\nconst ArchivistStats = (archivist?: ArchivistInstance) => {\n switch (archivist?.config.schema) {\n case MemoryArchivistConfigSchema:\n return <MemoryArchivistsStats archivist={archivist} />\n default:\n return <></>\n }\n}\n\nexport const ArchivistCardHeader: React.FC<ModuleRenderProps<ArchivistInstance> & CardHeaderProps> = ({ title, module, ...props }) => {\n const Stats = useMemo(() => ArchivistStats(module), [module])\n return <ModuleCardHeader module={module} title={title ?? module?.config.name ?? 'Archivist'} action={Stats} {...props} />\n}\n"],"mappings":";AAAA,SAAS,YAAuB;AAEhC,SAAS,yBAA4C;;;ACDrD,SAAS,kBAAAA,uBAAsB;AAC/B,SAAS,mBAAmB;AAE5B,SAAS,qBAAqB;AAC9B,SAAS,yBAA4C;AACrD,SAAS,iBAAiB;AAC1B,SAAgB,YAAAC,iBAAgB;;;ACPhC,SAAS,UAAU,kBAAkB;AAQnC,mBAMU,KAFF,YAJR;AADK,IAAM,kBAAgD,CAAC,EAAE,eAAe,iBAAiB,MAC9F,gCACG,4BAAkB,IAAI,CAAC,YAAY;AAClC,SACE,oBAAC,YACC,+BAAC,cAAW,SAAQ,aACjB;AAAA;AAAA,IAAc;AAAA,IAAE;AAAA,IACjB,oBAAC,cAAW,SAAS,WAAW,IAAI,EAAE,IAAI,IAAI,GAC3C,mBACH;AAAA,KACF,KANa,OAOf;AAEJ,CAAC,GACH;;;ACrBF,SAAS,qBAAqB,6BAA6B;AAC3D,SAAS,UAAU,YAAY,MAAM,OAAO,cAAAC,mBAAkB;AAC9D,SAAuB,eAAe;AAEtC,SAAS,gBAAgB;AAcrB,qBAAAC,WAIQ,OAAAC,MADF,QAAAC,aAHN;AANG,IAAM,mBAAoD,CAAC,EAAE,QAAQ,GAAG,MAAM,MAAM;AACzF,QAAM,CAAC,yBAAyB,0BAA0B,IAAI,SAAS,KAAK;AAE5E,QAAM,EAAE,QAAQ,MAAM,MAAM,IAAI,QAAQ,WAAW,CAAC;AAEpD,SACE,gBAAAD,KAAAD,WAAA,EACG,oBAAU,QAAQ,QACjB,gBAAAE,MAAC,WAAQ,YAAW,SAAS,GAAG,OAC9B;AAAA,oBAAAA,MAAC,UAAK,SAAS,MAAM,2BAA2B,CAAC,uBAAuB,GACtE;AAAA,sBAAAD,KAACE,aAAA,EAAW,SAAQ,aAAY,IAAI,EAAE,QAAQ,WAAW,SAAS,eAAe,GAAG,qBAEpF;AAAA,MACA,gBAAAF,KAAC,cAAW,MAAK,SACf,0BAAAA,KAAC,yBAAsB,IAAI,EAAE,QAAQ,0BAA0B,UAAU,QAAQ,YAAY,WAAW,GAAG,GAC7G;AAAA,OACF;AAAA,IACA,gBAAAA,KAAC,YAAS,IAAI,yBACZ,0BAAAA,KAAC,SAAM,WAAW,GAChB,0BAAAC,MAAC,QACC;AAAA,sBAAAD,KAAC,mBAAgB,eAAc,UAAS,kBAAkB,QAAQ;AAAA,MAClE,gBAAAA,KAAC,mBAAgB,eAAc,QAAO,kBAAkB,MAAM;AAAA,MAC9D,gBAAAA,KAAC,mBAAgB,eAAc,SAAQ,kBAAkB,OAAO;AAAA,OAClE,GACF,GACF;AAAA,KACF,IACE,MACN;AAEJ;;;AC1CA,SAAS,OAAO,eAAe;AAC/B,SAAS,eAAe;AAGxB,SAAS,yBAAyB;AAElC,SAAS,iBAAiB,iBAAiB,0BAA0B;AAWjE,SAIQ,OAAAG,MAJR,QAAAC,aAAA;AAFG,IAAM,iBAAgD,CAAC,EAAE,YAAY,CAAC,GAAG,gBAAgB,UAAU,UAAU,CAAC,EAAE,MAAM;AAC3H,SACE,gBAAAA,MAAC,WAAQ,KAAK,GAAG,IAAI,KAClB;AAAA,cAAU,SACT,gBAAAD,KAAC,WAAQ,OAAM,YACb,0BAAAA,KAAC,SAAM,cAAc,UAAU,QAAQ,OAAM,WAC3C,0BAAAA,KAAC,sBAAmB,MAAM,IAAI,GAChC,GACF,IACE;AAAA,IACH,gBAAgB,SACf,gBAAAA,KAAC,WAAQ,OAAM,UACb,0BAAAA,KAAC,SAAM,cAAc,gBAAgB,QAAQ,OAAM,WACjD,0BAAAA,KAAC,mBAAgB,MAAM,IAAI,GAC7B,GACF,IACE;AAAA,IACH,OAAO,QAAQ,OAAO,EAAE,SACvB,gBAAAA,KAAC,WAAQ,OAAM,WACb,0BAAAA,KAAC,SAAM,cAAc,OAAO,QAAQ,OAAO,EAAE,QAAQ,OAAM,WACzD,0BAAAA,KAAC,qBAAkB,MAAM,IAAI,GAC/B,GACF,IACE;AAAA,IACH,OAAO,QAAQ,SAAS,EAAE,SACzB,gBAAAA,KAAC,WAAQ,OAAM,aACb,0BAAAA,KAAC,SAAM,cAAc,OAAO,QAAQ,SAAS,EAAE,QAAQ,OAAM,WAC3D,0BAAAA,KAAC,mBAAgB,MAAM,IAAI,GAC7B,GACF,IACE;AAAA,KACN;AAEJ;;;AChDA,SAAS,sBAAsB;AAC/B,SAAS,+BAAkD;AAC3D,SAAS,0BAA0B;AACnC,SAAS,2BAA2B;AAGpC,SAAS,aAAa,WAAW,SAAS,YAAAE,iBAAgB;AA0EjD,gBAAAC,YAAA;AAlEF,IAAM,wBAA6D,CAAC,EAAE,UAAU,MAAM;AAC3F,QAAM,CAAC,KAAK,MAAM,IAAIC,UAA2B;AAEjD,QAAM,SAAS,YAAY,OAAOC,eAAkC;AAClE,UAAMC,OAAM,MAAMD,YAAW,MAAM;AACnC,WAAOC,IAAG;AAAA,EACZ,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,UAAM,YAAwC,CAAC;AAE/C,QAAI,WAAW,QAAQ,SAAS,uBAAuB,GAAG;AACxD,YAAM,iBAAiB,UAAU,GAAG,YAAY,YAAY;AAC1D,cAAM,OAAO,SAAS;AAAA,MACxB,CAAC;AACD,gBAAU,KAAK,cAAc;AAE7B,YAAM,gBAAgB,UAAU,GAAG,WAAW,YAAY;AACxD,cAAM,OAAO,SAAS;AAAA,MACxB,CAAC;AACD,gBAAU,KAAK,aAAa;AAAA,IAC9B;AAEA,WAAO,MAAM,UAAU,QAAQ,CAAC,aAAa,WAAW,CAAC;AAAA,EAC3D,GAAG,CAAC,WAAW,MAAM,CAAC;AAEtB;AAAA;AAAA,IAEE,YAAY;AACV,UAAI,WAAW,QAAQ,SAAS,uBAAuB,GAAG;AACxD,cAAM,OAAO,SAAS;AAAA,MACxB,OAAO;AACL,eAAO,IAAI;AAAA,MACb;AAAA,IACF;AAAA,IACA,CAAC,WAAW,MAAM;AAAA,EACpB;AAEA,QAAM,WAAW,QAAQ,MAAO,QAAQ,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,YAAY,QAAQ,WAAW,kBAAkB,GAAI,CAAC,GAAG,CAAC;AAC3H,QAAM,iBAAiB,QAAQ,MAAO,QAAQ,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,YAAY,QAAQ,WAAW,kBAAkB,GAAI,CAAC,GAAG,CAAC;AACjI,QAAM,YAAY;AAAA,IAChB,MACE,KAAK;AAAA,MACH,CAAC,MAAM,YAAY;AACjB,cAAM,IAAI,oBAAoB,SAAS,OAAO;AAC9C,WAAG,WAAW,QAAQ,CAAC,YAAY;AACjC,eAAK,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK;AAAA,QACzC,CAAC;AACD,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH,KAAK,CAAC;AAAA,IACR,CAAC,GAAG;AAAA,EACN;AACA,QAAM,UAAU;AAAA,IACd,MACE,KAAK;AAAA,MACH,CAAC,MAAM,YAAY;AACjB,aAAK,QAAQ,MAAM,KAAK,KAAK,QAAQ,MAAM,KAAK,KAAK;AACrD,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH,KAAK,CAAC;AAAA,IACR,CAAC,GAAG;AAAA,EACN;AAEA,SAAO,gBAAAH,KAAC,kBAAe,WAAsB,gBAAgC,UAAoB,SAAkB;AACrH;;;AJhDM,SAEE,OAAAI,MAFF,QAAAC,aAAA;AAtBC,IAAM,uBAA0F,CAAC,EAAE,UAAU,QAAQ,GAAG,MAAM,MAAM;AACzI,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAA0B;AACtD,QAAM,CAAC,MAAM,IAAI,UAAU;AAE3B,EAAAC;AAAA;AAAA,IAEE,OAAO,YAAY;AACjB,UAAI,UAAU,QAAQ;AACpB,cAAM,UAAU,cAAc,KAAK,QAAQ,MAAM;AACjD,cAAM,WAAW,MAAM,SAAS,SAAS;AACzC,YAAI,QAAQ,GAAG;AACb,oBAAU,WAAW,CAAC,CAAoB;AAAA,QAC5C;AAAA,MACF,OAAO;AACL,kBAAU,MAAS;AAAA,MACrB;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,MAAM;AAAA,EACjB;AAEA,SACE,gBAAAH,KAAC,qBAAkB,QAAiB,GAAG,OACrC,0BAAAC,MAAC,eAAY,UAAS,QAAO,gBAAe,SAAQ,KAAK,GACtD;AAAA;AAAA,IACD,gBAAAD,KAAC,oBAAiB,QAAgB;AAAA,KACpC,GACF;AAEJ;;;AKtCA,SAA4B,mCAAmC;AAC/D,SAAS,wBAA2C;AACpD,SAAS,WAAAI,gBAAe;AAOX,SAEA,YAAAC,WAFA,OAAAC,YAAA;AAHb,IAAMC,kBAAiB,CAAC,cAAkC;AACxD,UAAQ,WAAW,OAAO,QAAQ;AAAA,IAChC,KAAK;AACH,aAAO,gBAAAD,KAAC,yBAAsB,WAAsB;AAAA,IACtD;AACE,aAAO,gBAAAA,KAAAD,WAAA,EAAE;AAAA,EACb;AACF;AAEO,IAAM,sBAAwF,CAAC,EAAE,OAAO,QAAQ,GAAG,MAAM,MAAM;AACpI,QAAM,QAAQG,SAAQ,MAAMD,gBAAe,MAAM,GAAG,CAAC,MAAM,CAAC;AAC5D,SAAO,gBAAAD,KAAC,oBAAiB,QAAgB,OAAO,SAAS,QAAQ,OAAO,QAAQ,aAAa,QAAQ,OAAQ,GAAG,OAAO;AACzH;;;ANVI,SACE,OAAAG,MADF,QAAAC,aAAA;AAFG,IAAM,gBAA4E,CAAC,EAAE,UAAU,QAAQ,GAAG,MAAM,MAAM;AAC3H,SACE,gBAAAA,MAAC,QAAM,GAAG,OACR;AAAA,oBAAAD,KAAC,uBAAoB,QAAgB;AAAA,IACrC,gBAAAA,KAAC,wBAAqB,QAAgB;AAAA,IACrC;AAAA,IACD,gBAAAA,KAAC,qBAAkB,QAAgB;AAAA,KACrC;AAEJ;","names":["useAsyncEffect","useState","Typography","Fragment","jsx","jsxs","Typography","jsx","jsxs","useState","jsx","useState","archivist","all","jsx","jsxs","useState","useAsyncEffect","useMemo","Fragment","jsx","ArchivistStats","useMemo","jsx","jsxs"]}
@@ -1,4 +1,4 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
1
+ // src/components/Details/Details.tsx
2
2
  import { ButtonGroup, Typography } from "@mui/material";
3
3
  import { useAsyncEffect } from "@xylabs/react-async-effect";
4
4
  import { ButtonEx } from "@xylabs/react-button";
@@ -6,12 +6,28 @@ import { FlexCol } from "@xylabs/react-flexbox";
6
6
  import { ArchivistClearQuerySchema, ArchivistCommitQuerySchema } from "@xyo-network/archivist";
7
7
  import { QueryBoundWitnessBuilder } from "@xyo-network/boundwitness-builder";
8
8
  import { useState } from "react";
9
- import { useArchivistFromNode } from "../../hooks";
10
- const testQueryCommit = { schema: ArchivistCommitQuerySchema };
11
- const testQueryCommitBoundWitnessBuilder = new QueryBoundWitnessBuilder({ inlinePayloads: true }).query(testQueryCommit);
12
- const testQueryClear = { schema: ArchivistClearQuerySchema };
13
- const testQueryClearBoundWitnessBuilder = new QueryBoundWitnessBuilder({ inlinePayloads: true }).query(testQueryClear);
14
- const ArchivistDetails = ({ address, ...props }) => {
9
+
10
+ // src/hooks/node/useArchivistFromNode.tsx
11
+ import { asArchivistInstance } from "@xyo-network/archivist-model";
12
+ import { useModuleFromNode } from "@xyo-network/react-node";
13
+ var useArchivistFromNode = (nameOrAddressOrInstance, config) => {
14
+ const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config);
15
+ const instance = asArchivistInstance(module);
16
+ if (module && !instance) {
17
+ const error2 = Error(`Resolved module is not a ArchivistInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`);
18
+ console.error(error2.message);
19
+ return [void 0, error2];
20
+ }
21
+ return [instance, error];
22
+ };
23
+
24
+ // src/components/Details/Details.tsx
25
+ import { jsx, jsxs } from "react/jsx-runtime";
26
+ var testQueryCommit = { schema: ArchivistCommitQuerySchema };
27
+ var testQueryCommitBoundWitnessBuilder = new QueryBoundWitnessBuilder({ inlinePayloads: true }).query(testQueryCommit);
28
+ var testQueryClear = { schema: ArchivistClearQuerySchema };
29
+ var testQueryClearBoundWitnessBuilder = new QueryBoundWitnessBuilder({ inlinePayloads: true }).query(testQueryClear);
30
+ var ArchivistDetails = ({ address, ...props }) => {
15
31
  const [archivist] = useArchivistFromNode(address);
16
32
  const [payloads, setPayloads] = useState();
17
33
  const [refresh, setRefresh] = useState(0);