@xyo-network/react-node-renderer 2.47.36 → 2.47.38

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 (103) hide show
  1. package/dist/cjs/Cytoscape/CytoscapeElements.js +48 -0
  2. package/dist/cjs/Cytoscape/CytoscapeElements.js.map +1 -0
  3. package/dist/cjs/Cytoscape/CytoscapeIcons.js +18 -0
  4. package/dist/cjs/Cytoscape/CytoscapeIcons.js.map +1 -0
  5. package/dist/cjs/Cytoscape/CytoscapeStyles.js +39 -0
  6. package/dist/cjs/Cytoscape/CytoscapeStyles.js.map +1 -0
  7. package/dist/cjs/Cytoscape/index.js +7 -0
  8. package/dist/cjs/Cytoscape/index.js.map +1 -0
  9. package/dist/cjs/components/RelationalGraph.js +13 -4
  10. package/dist/cjs/components/RelationalGraph.js.map +1 -1
  11. package/dist/cjs/hooks/cytoscape/index.js +6 -0
  12. package/dist/cjs/hooks/cytoscape/index.js.map +1 -0
  13. package/dist/cjs/hooks/{useCytoscapeElements.js → cytoscape/useCytoscapeElements.js} +4 -39
  14. package/dist/cjs/hooks/cytoscape/useCytoscapeElements.js.map +1 -0
  15. package/dist/cjs/hooks/cytoscape/useCytoscapeLayout.js +13 -0
  16. package/dist/cjs/hooks/cytoscape/useCytoscapeLayout.js.map +1 -0
  17. package/dist/cjs/hooks/cytoscape/useCytoscapeOptions.js +18 -0
  18. package/dist/cjs/hooks/cytoscape/useCytoscapeOptions.js.map +1 -0
  19. package/dist/cjs/hooks/cytoscape/useCytoscapeStyle.js +19 -0
  20. package/dist/cjs/hooks/cytoscape/useCytoscapeStyle.js.map +1 -0
  21. package/dist/cjs/hooks/cytoscape/useIcons.js +22 -0
  22. package/dist/cjs/hooks/cytoscape/useIcons.js.map +1 -0
  23. package/dist/cjs/hooks/index.js +1 -2
  24. package/dist/cjs/hooks/index.js.map +1 -1
  25. package/dist/docs.json +214 -167
  26. package/dist/esm/Cytoscape/CytoscapeElements.js +40 -0
  27. package/dist/esm/Cytoscape/CytoscapeElements.js.map +1 -0
  28. package/dist/esm/Cytoscape/CytoscapeIcons.js +14 -0
  29. package/dist/esm/Cytoscape/CytoscapeIcons.js.map +1 -0
  30. package/dist/esm/Cytoscape/CytoscapeStyles.js +33 -0
  31. package/dist/esm/Cytoscape/CytoscapeStyles.js.map +1 -0
  32. package/dist/esm/Cytoscape/index.js +4 -0
  33. package/dist/esm/Cytoscape/index.js.map +1 -0
  34. package/dist/esm/components/RelationalGraph.js +14 -5
  35. package/dist/esm/components/RelationalGraph.js.map +1 -1
  36. package/dist/esm/hooks/cytoscape/index.js +3 -0
  37. package/dist/esm/hooks/cytoscape/index.js.map +1 -0
  38. package/dist/esm/hooks/{useCytoscapeElements.js → cytoscape/useCytoscapeElements.js} +4 -38
  39. package/dist/esm/hooks/cytoscape/useCytoscapeElements.js.map +1 -0
  40. package/dist/esm/hooks/cytoscape/useCytoscapeLayout.js +9 -0
  41. package/dist/esm/hooks/cytoscape/useCytoscapeLayout.js.map +1 -0
  42. package/dist/esm/hooks/cytoscape/useCytoscapeOptions.js +14 -0
  43. package/dist/esm/hooks/cytoscape/useCytoscapeOptions.js.map +1 -0
  44. package/dist/esm/hooks/cytoscape/useCytoscapeStyle.js +15 -0
  45. package/dist/esm/hooks/cytoscape/useCytoscapeStyle.js.map +1 -0
  46. package/dist/esm/hooks/cytoscape/useIcons.js +18 -0
  47. package/dist/esm/hooks/cytoscape/useIcons.js.map +1 -0
  48. package/dist/esm/hooks/index.js +1 -2
  49. package/dist/esm/hooks/index.js.map +1 -1
  50. package/dist/types/Cytoscape/CytoscapeElements.d.ts +18 -0
  51. package/dist/types/Cytoscape/CytoscapeElements.d.ts.map +1 -0
  52. package/dist/types/Cytoscape/CytoscapeIcons.d.ts +5 -0
  53. package/dist/types/Cytoscape/CytoscapeIcons.d.ts.map +1 -0
  54. package/dist/types/Cytoscape/CytoscapeStyles.d.ts +16 -0
  55. package/dist/types/Cytoscape/CytoscapeStyles.d.ts.map +1 -0
  56. package/dist/types/Cytoscape/index.d.ts +4 -0
  57. package/dist/types/Cytoscape/index.d.ts.map +1 -0
  58. package/dist/types/components/RelationalGraph.d.ts +1 -2
  59. package/dist/types/components/RelationalGraph.d.ts.map +1 -1
  60. package/dist/types/hooks/cytoscape/index.d.ts +3 -0
  61. package/dist/types/hooks/cytoscape/index.d.ts.map +1 -0
  62. package/dist/types/hooks/cytoscape/useCytoscapeElements.d.ts.map +1 -0
  63. package/dist/types/hooks/cytoscape/useCytoscapeLayout.d.ts +2 -0
  64. package/dist/types/hooks/cytoscape/useCytoscapeLayout.d.ts.map +1 -0
  65. package/dist/types/hooks/cytoscape/useCytoscapeOptions.d.ts +3 -0
  66. package/dist/types/hooks/cytoscape/useCytoscapeOptions.d.ts.map +1 -0
  67. package/dist/types/hooks/cytoscape/useCytoscapeStyle.d.ts +2 -0
  68. package/dist/types/hooks/cytoscape/useCytoscapeStyle.d.ts.map +1 -0
  69. package/dist/types/hooks/cytoscape/useIcons.d.ts +3 -0
  70. package/dist/types/hooks/cytoscape/useIcons.d.ts.map +1 -0
  71. package/dist/types/hooks/index.d.ts +1 -2
  72. package/dist/types/hooks/index.d.ts.map +1 -1
  73. package/package.json +6 -6
  74. package/src/Cytoscape/CytoscapeElements.ts +46 -0
  75. package/src/Cytoscape/CytoscapeIcons.tsx +18 -0
  76. package/src/Cytoscape/CytoscapeStyles.ts +38 -0
  77. package/src/Cytoscape/index.ts +3 -0
  78. package/src/components/RelationalGraph.tsx +20 -7
  79. package/src/hooks/cytoscape/index.ts +2 -0
  80. package/src/hooks/{useCytoscapeElements.ts → cytoscape/useCytoscapeElements.ts} +5 -43
  81. package/src/hooks/cytoscape/useCytoscapeLayout.ts +14 -0
  82. package/src/hooks/cytoscape/useCytoscapeOptions.ts +25 -0
  83. package/src/hooks/cytoscape/useCytoscapeStyle.ts +22 -0
  84. package/src/hooks/cytoscape/useIcons.tsx +19 -0
  85. package/src/hooks/index.ts +1 -2
  86. package/dist/cjs/hooks/useCytoscapeElements.js.map +0 -1
  87. package/dist/cjs/hooks/useCytoscapeOptions.js +0 -54
  88. package/dist/cjs/hooks/useCytoscapeOptions.js.map +0 -1
  89. package/dist/cjs/hooks/useIcons.js +0 -35
  90. package/dist/cjs/hooks/useIcons.js.map +0 -1
  91. package/dist/esm/hooks/useCytoscapeElements.js.map +0 -1
  92. package/dist/esm/hooks/useCytoscapeOptions.js +0 -50
  93. package/dist/esm/hooks/useCytoscapeOptions.js.map +0 -1
  94. package/dist/esm/hooks/useIcons.js +0 -30
  95. package/dist/esm/hooks/useIcons.js.map +0 -1
  96. package/dist/types/hooks/useCytoscapeElements.d.ts.map +0 -1
  97. package/dist/types/hooks/useCytoscapeOptions.d.ts +0 -3
  98. package/dist/types/hooks/useCytoscapeOptions.d.ts.map +0 -1
  99. package/dist/types/hooks/useIcons.d.ts +0 -3
  100. package/dist/types/hooks/useIcons.d.ts.map +0 -1
  101. package/src/hooks/useCytoscapeOptions.ts +0 -57
  102. package/src/hooks/useIcons.tsx +0 -35
  103. /package/dist/types/hooks/{useCytoscapeElements.d.ts → cytoscape/useCytoscapeElements.d.ts} +0 -0
@@ -1,19 +1,22 @@
1
+ import { Button, styled } from '@mui/material'
1
2
  import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'
2
- import { WithChildren } from '@xylabs/react-shared'
3
3
  import { useShareForwardedRef } from '@xyo-network/react-shared'
4
4
  import cytoscape, { Core, CytoscapeOptions } from 'cytoscape'
5
5
  import { forwardRef, useEffect, useState } from 'react'
6
6
 
7
- export interface NodeRelationalGraph extends WithChildren<FlexBoxProps> {
7
+ export interface NodeRelationalGraph extends FlexBoxProps {
8
8
  options?: CytoscapeOptions
9
9
  }
10
10
 
11
- export const NodeRelationalGraph = forwardRef<HTMLDivElement, NodeRelationalGraph>(({ children, options, ...props }, ref) => {
11
+ export const NodeRelationalGraph = forwardRef<HTMLDivElement, NodeRelationalGraph>(({ options, ...props }, ref) => {
12
12
  const sharedRef = useShareForwardedRef(ref)
13
- // TODO - likely a value to stick in context
14
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
13
  const [cy, setCy] = useState<Core>()
16
14
 
15
+ const handleReset = () => {
16
+ cy?.reset()
17
+ cy?.fit(undefined, 20)
18
+ }
19
+
17
20
  useEffect(() => {
18
21
  if (sharedRef) {
19
22
  setCy(
@@ -26,10 +29,20 @@ export const NodeRelationalGraph = forwardRef<HTMLDivElement, NodeRelationalGrap
26
29
  }, [options, sharedRef])
27
30
 
28
31
  return (
29
- <FlexCol ref={sharedRef} {...props}>
30
- {children}
32
+ <FlexCol {...props}>
33
+ <ResetButton size={'small'} variant={'contained'} onClick={handleReset}>
34
+ Reset
35
+ </ResetButton>
36
+ <FlexCol alignItems="stretch" height="100%" position="absolute" ref={sharedRef} width="100%"></FlexCol>
31
37
  </FlexCol>
32
38
  )
33
39
  })
34
40
 
35
41
  NodeRelationalGraph.displayName = 'NodeRelationalGraph'
42
+
43
+ const ResetButton = styled(Button, { name: 'ResetButton' })(() => ({
44
+ position: 'absolute',
45
+ right: '10px',
46
+ top: '10px',
47
+ zIndex: 2,
48
+ }))
@@ -0,0 +1,2 @@
1
+ export * from './useCytoscapeElements'
2
+ export * from './useCytoscapeOptions'
@@ -1,48 +1,10 @@
1
1
  import { useAsyncEffect } from '@xylabs/react-shared'
2
- import { EventUnsubscribeFunction, ModuleDescription, ModuleWrapper } from '@xyo-network/module'
3
- import { NodeWrapper } from '@xyo-network/node'
2
+ import { EventUnsubscribeFunction } from '@xyo-network/module'
4
3
  import { useProvidedWrappedNode } from '@xyo-network/react-node'
5
4
  import { ElementDefinition } from 'cytoscape'
6
5
  import { useEffect, useState } from 'react'
7
6
 
8
- import { parseModuleType } from '../lib'
9
-
10
- const MaxNameLength = 20
11
-
12
- const normalizeName = (name?: string) => {
13
- if (!name) return
14
- if (name.length > MaxNameLength) return `${name.substring(0, 20)}...`
15
- return name
16
- }
17
-
18
- const buildNode = (description: ModuleDescription): ElementDefinition => {
19
- const newNodeId = normalizeName(description.name) ?? description.address.substring(0, 8)
20
- return {
21
- data: {
22
- id: newNodeId,
23
- type: parseModuleType(description.queries),
24
- },
25
- }
26
- }
27
-
28
- const buildEdge = (rootNode: ElementDefinition, newNode: ElementDefinition) => ({
29
- data: {
30
- id: `${rootNode.data.id}/${newNode.data.id}`,
31
- source: rootNode.data.id,
32
- target: newNode.data.id,
33
- },
34
- })
35
-
36
- const buildRootNode = async (wrapper: NodeWrapper): Promise<[ModuleDescription, ElementDefinition]> => {
37
- const description = await wrapper?.describe()
38
- return [description, buildNode(description)]
39
- }
40
-
41
- const buildChild = async (wrapper: NodeWrapper, address: string) => {
42
- const [result] = await wrapper.resolveWrapped(ModuleWrapper, { address: [address] })
43
- const description = await result.describe()
44
- return buildNode(description)
45
- }
7
+ import { CytoscapeElements } from '../../Cytoscape'
46
8
 
47
9
  /**
48
10
  * Note: Relies on describe but could eventually be converted to a discover call
@@ -58,17 +20,17 @@ export const useCytoscapeElements = () => {
58
20
  async (mounted) => {
59
21
  if (node && refresh) {
60
22
  try {
61
- const [description, newRootNode] = await buildRootNode(node)
23
+ const [description, newRootNode] = await CytoscapeElements.buildRootNode(node)
62
24
  if (mounted()) setElements(() => [newRootNode])
63
25
 
64
26
  const children = description.children
65
27
  await Promise.allSettled(
66
28
  (children ?? [])?.map(async (address) => {
67
29
  try {
68
- const newNode = await buildChild(node, address)
30
+ const newNode = await CytoscapeElements.buildChild(node, address)
69
31
  if (mounted()) setElements((previous) => [...previous, newNode])
70
32
 
71
- const newEdge = buildEdge(newRootNode, newNode)
33
+ const newEdge = CytoscapeElements.buildEdge(newRootNode, newNode)
72
34
  if (mounted()) setElements((previous) => [...previous, newEdge])
73
35
  } catch (e) {
74
36
  console.error('Error parsing children', e)
@@ -0,0 +1,14 @@
1
+ import { CytoscapeOptions } from 'cytoscape'
2
+ import { useMemo } from 'react'
3
+
4
+ export const useCytoscapeLayout = () => {
5
+ const layout: CytoscapeOptions['layout'] = useMemo(
6
+ () => ({
7
+ minNodeSpacing: 75,
8
+ name: 'concentric',
9
+ }),
10
+ [],
11
+ )
12
+
13
+ return layout
14
+ }
@@ -0,0 +1,25 @@
1
+ import { CytoscapeOptions } from 'cytoscape'
2
+ import { useMemo } from 'react'
3
+
4
+ import { useCytoscapeLayout } from './useCytoscapeLayout'
5
+ import { useCytoscapeStyle } from './useCytoscapeStyle'
6
+
7
+ export const useCytoscapeOptions = (
8
+ elements: CytoscapeOptions['elements'],
9
+ style?: CytoscapeOptions['style'],
10
+ layout?: CytoscapeOptions['layout'],
11
+ ) => {
12
+ const defaultStyle = useCytoscapeStyle()
13
+ const defaultLayout = useCytoscapeLayout()
14
+
15
+ const options = useMemo<CytoscapeOptions>(
16
+ () => ({
17
+ elements,
18
+ layout: layout ?? defaultLayout,
19
+ style: style ?? defaultStyle,
20
+ }),
21
+ [defaultLayout, defaultStyle, elements, layout, style],
22
+ )
23
+
24
+ return options
25
+ }
@@ -0,0 +1,22 @@
1
+ import { useTheme } from '@mui/material'
2
+ import { CytoscapeOptions } from 'cytoscape'
3
+ import { useMemo } from 'react'
4
+
5
+ import { EdgeStyled, NodeIdStyles, NodeStyled } from '../../Cytoscape'
6
+ import { useIcons } from './useIcons'
7
+
8
+ export const useCytoscapeStyle = () => {
9
+ const theme = useTheme()
10
+ const icons = useIcons()
11
+
12
+ const style: CytoscapeOptions['style'] = useMemo(
13
+ () => [
14
+ NodeIdStyles(theme.palette.text.primary),
15
+ NodeStyled(icons, theme.palette.primary.main),
16
+ EdgeStyled(theme.palette.divider, theme.palette.divider),
17
+ ],
18
+ [icons, theme.palette.divider, theme.palette.primary.main, theme.palette.text.primary],
19
+ )
20
+
21
+ return style
22
+ }
@@ -0,0 +1,19 @@
1
+ import { useTheme } from '@mui/material'
2
+ import { useMemo } from 'react'
3
+
4
+ import { CyIconSet, CyNodeIcons } from '../../Cytoscape'
5
+ import { encodeSvg } from '../../lib'
6
+
7
+ export const useIcons = () => {
8
+ const theme = useTheme()
9
+ const icons = useMemo(() => {
10
+ const iconMap: Record<CyNodeIcons, string> = { archivist: '', diviner: '', module: '', node: '', witness: '' }
11
+ return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {
12
+ const icon = <IconComponent fontSize="small" />
13
+ acc[name as CyNodeIcons] = encodeSvg(icon, theme.palette.getContrastText(theme.palette.text.primary))
14
+ return acc
15
+ }, iconMap)
16
+ }, [theme.palette])
17
+
18
+ return icons
19
+ }
@@ -1,2 +1 @@
1
- export * from './useCytoscapeElements'
2
- export * from './useCytoscapeOptions'
1
+ export * from './cytoscape'
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCytoscapeElements.js","sourceRoot":"","sources":["../../../src/hooks/useCytoscapeElements.ts"],"names":[],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useCytoscapeOptions = void 0;
4
- const material_1 = require("@mui/material");
5
- const react_1 = require("react");
6
- const useIcons_1 = require("./useIcons");
7
- const useCytoscapeOptions = (elements) => {
8
- const theme = (0, material_1.useTheme)();
9
- const icons = (0, useIcons_1.useIcons)();
10
- const options = (0, react_1.useMemo)(() => ({
11
- elements,
12
- layout: {
13
- minNodeSpacing: 75,
14
- name: 'concentric',
15
- },
16
- style: [
17
- {
18
- selector: 'node[id]',
19
- style: {
20
- color: theme.palette.text.primary,
21
- 'font-family': 'Lexend Deca, Helvetica, sans-serif',
22
- 'font-size': 14,
23
- 'text-margin-y': -5,
24
- },
25
- },
26
- {
27
- selector: 'node',
28
- style: {
29
- 'background-color': theme.palette.primary.main,
30
- 'background-height': '75%',
31
- // TODO - make dynamic
32
- 'background-image': (elem) => icons[elem.data('type')],
33
- 'background-image-smoothing': 'yes',
34
- 'background-width': '75%',
35
- label: 'data(id)',
36
- },
37
- },
38
- {
39
- selector: 'edge',
40
- style: {
41
- 'curve-style': 'bezier',
42
- 'line-color': theme.palette.divider,
43
- 'line-opacity': 0.1,
44
- 'target-arrow-color': theme.palette.divider,
45
- 'target-arrow-shape': 'triangle',
46
- width: 3,
47
- },
48
- },
49
- ],
50
- }), [elements, icons, theme.palette.divider, theme.palette.primary.main, theme.palette.text.primary]);
51
- return options;
52
- };
53
- exports.useCytoscapeOptions = useCytoscapeOptions;
54
- //# sourceMappingURL=useCytoscapeOptions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCytoscapeOptions.js","sourceRoot":"","sources":["../../../src/hooks/useCytoscapeOptions.ts"],"names":[],"mappings":";;;AAAA,4CAAwC;AAExC,iCAA+B;AAE/B,yCAAkD;AAE3C,MAAM,mBAAmB,GAAG,CAAC,QAAsC,EAAE,EAAE;IAC5E,MAAM,KAAK,GAAG,IAAA,mBAAQ,GAAE,CAAA;IACxB,MAAM,KAAK,GAAG,IAAA,mBAAQ,GAAE,CAAA;IAExB,MAAM,OAAO,GAAG,IAAA,eAAO,EACrB,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ;QACR,MAAM,EAAE;YACN,cAAc,EAAE,EAAE;YAClB,IAAI,EAAE,YAAY;SACnB;QACD,KAAK,EAAE;YACL;gBACE,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE;oBACL,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;oBACjC,aAAa,EAAE,oCAAoC;oBACnD,WAAW,EAAE,EAAE;oBACf,eAAe,EAAE,CAAC,CAAC;iBACpB;aACF;YACD;gBACE,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE;oBACL,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;oBAC9C,mBAAmB,EAAE,KAAK;oBAC1B,sBAAsB;oBACtB,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAgB,CAAC;oBACrE,4BAA4B,EAAE,KAAK;oBACnC,kBAAkB,EAAE,KAAK;oBACzB,KAAK,EAAE,UAAU;iBAClB;aACF;YACD;gBACE,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE;oBACL,aAAa,EAAE,QAAQ;oBACvB,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;oBACnC,cAAc,EAAE,GAAG;oBACnB,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;oBAC3C,oBAAoB,EAAE,UAAU;oBAChC,KAAK,EAAE,CAAC;iBACT;aACF;SACF;KACF,CAAC,EACF,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CACjG,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAlDY,QAAA,mBAAmB,uBAkD/B"}
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useIcons = void 0;
4
- const tslib_1 = require("tslib");
5
- const jsx_runtime_1 = require("react/jsx-runtime");
6
- const CallMergeRounded_1 = tslib_1.__importDefault(require("@mui/icons-material/CallMergeRounded"));
7
- const GridViewRounded_1 = tslib_1.__importDefault(require("@mui/icons-material/GridViewRounded"));
8
- const Hub_1 = tslib_1.__importDefault(require("@mui/icons-material/Hub"));
9
- const QuestionMarkRounded_1 = tslib_1.__importDefault(require("@mui/icons-material/QuestionMarkRounded"));
10
- const VisibilityRounded_1 = tslib_1.__importDefault(require("@mui/icons-material/VisibilityRounded"));
11
- const material_1 = require("@mui/material");
12
- const react_1 = require("react");
13
- const lib_1 = require("../lib");
14
- // eslint-disable-next-line @typescript-eslint/ban-types
15
- const CyIconSet = {
16
- archivist: GridViewRounded_1.default,
17
- diviner: CallMergeRounded_1.default,
18
- module: QuestionMarkRounded_1.default,
19
- node: Hub_1.default,
20
- witness: VisibilityRounded_1.default,
21
- };
22
- const useIcons = () => {
23
- const theme = (0, material_1.useTheme)();
24
- const icons = (0, react_1.useMemo)(() => {
25
- const iconMap = { archivist: '', diviner: '', module: '', node: '', witness: '' };
26
- return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {
27
- const icon = (0, jsx_runtime_1.jsx)(IconComponent, { fontSize: "small" });
28
- acc[name] = (0, lib_1.encodeSvg)(icon, theme.palette.getContrastText(theme.palette.text.primary));
29
- return acc;
30
- }, iconMap);
31
- }, [theme.palette]);
32
- return icons;
33
- };
34
- exports.useIcons = useIcons;
35
- //# sourceMappingURL=useIcons.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIcons.js","sourceRoot":"","sources":["../../../src/hooks/useIcons.tsx"],"names":[],"mappings":";;;;;AAAA,oGAAuE;AACvE,kGAAqE;AACrE,0EAA6C;AAC7C,0GAA6E;AAC7E,sGAAyE;AACzE,4CAAwD;AAExD,iCAA+B;AAE/B,gCAAkC;AAIlC,wDAAwD;AACxD,MAAM,SAAS,GAAyE;IACtF,SAAS,EAAE,yBAAmB;IAC9B,OAAO,EAAE,0BAAoB;IAC7B,MAAM,EAAE,6BAAuB;IAC/B,IAAI,EAAE,aAAO;IACb,OAAO,EAAE,2BAAqB;CAC/B,CAAA;AAEM,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,KAAK,GAAG,IAAA,mBAAQ,GAAE,CAAA;IACxB,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACzB,MAAM,OAAO,GAAgC,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QAC9G,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE;YACrE,MAAM,IAAI,GAAG,uBAAC,aAAa,IAAC,QAAQ,EAAC,OAAO,GAAG,CAAA;YAC/C,GAAG,CAAC,IAAmB,CAAC,GAAG,IAAA,eAAS,EAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;YACrG,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,OAAO,CAAC,CAAA;IACb,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IAEnB,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAZY,QAAA,QAAQ,YAYpB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCytoscapeElements.js","sourceRoot":"","sources":["../../../src/hooks/useCytoscapeElements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAA+C,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEhG,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAExC,MAAM,aAAa,GAAG,EAAE,CAAA;AAExB,MAAM,aAAa,GAAG,CAAC,IAAa,EAAE,EAAE;IACtC,IAAI,CAAC,IAAI;QAAE,OAAM;IACjB,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa;QAAE,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAA;IACrE,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,WAA8B,EAAqB,EAAE;IACtE,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACxF,OAAO;QACL,IAAI,EAAE;YACJ,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC;SAC3C;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,SAAS,GAAG,CAAC,QAA2B,EAAE,OAA0B,EAAE,EAAE,CAAC,CAAC;IAC9E,IAAI,EAAE;QACJ,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;QAC5C,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;QACxB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;KACxB;CACF,CAAC,CAAA;AAEF,MAAM,aAAa,GAAG,KAAK,EAAE,OAAoB,EAAmD,EAAE;IACpG,MAAM,WAAW,GAAG,MAAM,OAAO,EAAE,QAAQ,EAAE,CAAA;IAC7C,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAA;AAC9C,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,KAAK,EAAE,OAAoB,EAAE,OAAe,EAAE,EAAE;IACjE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACpF,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC3C,OAAO,SAAS,CAAC,WAAW,CAAC,CAAA;AAC/B,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,MAAM,CAAC,IAAI,CAAC,GAAG,sBAAsB,EAAE,CAAA;IACvC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAsB,EAAE,CAAC,CAAA;IACjE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAEzC,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,IAAI,IAAI,IAAI,OAAO,EAAE;YACnB,IAAI;gBACF,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;gBAC5D,IAAI,OAAO,EAAE;oBAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;gBAE/C,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAA;gBACrC,MAAM,OAAO,CAAC,UAAU,CACtB,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;oBACtC,IAAI;wBACF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;wBAC/C,IAAI,OAAO,EAAE;4BAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;wBAEhE,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;wBAC/C,IAAI,OAAO,EAAE;4BAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;qBACjE;oBAAC,OAAO,CAAC,EAAE;wBACV,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAA;qBAC3C;gBACH,CAAC,CAAC,CACH,CAAA;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAA;aACtD;SACF;IACH,CAAC,EACD,CAAC,IAAI,EAAE,OAAO,CAAC,CAChB,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAkC,CAAA;QACtC,IAAI,IAAI,EAAE;YACR,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE;gBAClC,IAAI,SAAS,KAAK,gBAAgB;oBAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAA;YAC5E,CAAC,CAAC,CAAA;SACH;QACD,OAAO,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAA;IAC3B,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
@@ -1,50 +0,0 @@
1
- import { useTheme } from '@mui/material';
2
- import { useMemo } from 'react';
3
- import { useIcons } from './useIcons';
4
- export const useCytoscapeOptions = (elements) => {
5
- const theme = useTheme();
6
- const icons = useIcons();
7
- const options = useMemo(() => ({
8
- elements,
9
- layout: {
10
- minNodeSpacing: 75,
11
- name: 'concentric',
12
- },
13
- style: [
14
- {
15
- selector: 'node[id]',
16
- style: {
17
- color: theme.palette.text.primary,
18
- 'font-family': 'Lexend Deca, Helvetica, sans-serif',
19
- 'font-size': 14,
20
- 'text-margin-y': -5,
21
- },
22
- },
23
- {
24
- selector: 'node',
25
- style: {
26
- 'background-color': theme.palette.primary.main,
27
- 'background-height': '75%',
28
- // TODO - make dynamic
29
- 'background-image': (elem) => icons[elem.data('type')],
30
- 'background-image-smoothing': 'yes',
31
- 'background-width': '75%',
32
- label: 'data(id)',
33
- },
34
- },
35
- {
36
- selector: 'edge',
37
- style: {
38
- 'curve-style': 'bezier',
39
- 'line-color': theme.palette.divider,
40
- 'line-opacity': 0.1,
41
- 'target-arrow-color': theme.palette.divider,
42
- 'target-arrow-shape': 'triangle',
43
- width: 3,
44
- },
45
- },
46
- ],
47
- }), [elements, icons, theme.palette.divider, theme.palette.primary.main, theme.palette.text.primary]);
48
- return options;
49
- };
50
- //# sourceMappingURL=useCytoscapeOptions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCytoscapeOptions.js","sourceRoot":"","sources":["../../../src/hooks/useCytoscapeOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAe,QAAQ,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAsC,EAAE,EAAE;IAC5E,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IAExB,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ;QACR,MAAM,EAAE;YACN,cAAc,EAAE,EAAE;YAClB,IAAI,EAAE,YAAY;SACnB;QACD,KAAK,EAAE;YACL;gBACE,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE;oBACL,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;oBACjC,aAAa,EAAE,oCAAoC;oBACnD,WAAW,EAAE,EAAE;oBACf,eAAe,EAAE,CAAC,CAAC;iBACpB;aACF;YACD;gBACE,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE;oBACL,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;oBAC9C,mBAAmB,EAAE,KAAK;oBAC1B,sBAAsB;oBACtB,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAgB,CAAC;oBACrE,4BAA4B,EAAE,KAAK;oBACnC,kBAAkB,EAAE,KAAK;oBACzB,KAAK,EAAE,UAAU;iBAClB;aACF;YACD;gBACE,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE;oBACL,aAAa,EAAE,QAAQ;oBACvB,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;oBACnC,cAAc,EAAE,GAAG;oBACnB,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;oBAC3C,oBAAoB,EAAE,UAAU;oBAChC,KAAK,EAAE,CAAC;iBACT;aACF;SACF;KACF,CAAC,EACF,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CACjG,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
@@ -1,30 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import CallMergeRoundedIcon from '@mui/icons-material/CallMergeRounded';
3
- import GridViewRoundedIcon from '@mui/icons-material/GridViewRounded';
4
- import HubIcon from '@mui/icons-material/Hub';
5
- import QuestionMarkRoundedIcon from '@mui/icons-material/QuestionMarkRounded';
6
- import VisibilityRoundedIcon from '@mui/icons-material/VisibilityRounded';
7
- import { useTheme } from '@mui/material';
8
- import { useMemo } from 'react';
9
- import { encodeSvg } from '../lib';
10
- // eslint-disable-next-line @typescript-eslint/ban-types
11
- const CyIconSet = {
12
- archivist: GridViewRoundedIcon,
13
- diviner: CallMergeRoundedIcon,
14
- module: QuestionMarkRoundedIcon,
15
- node: HubIcon,
16
- witness: VisibilityRoundedIcon,
17
- };
18
- export const useIcons = () => {
19
- const theme = useTheme();
20
- const icons = useMemo(() => {
21
- const iconMap = { archivist: '', diviner: '', module: '', node: '', witness: '' };
22
- return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {
23
- const icon = _jsx(IconComponent, { fontSize: "small" });
24
- acc[name] = encodeSvg(icon, theme.palette.getContrastText(theme.palette.text.primary));
25
- return acc;
26
- }, iconMap);
27
- }, [theme.palette]);
28
- return icons;
29
- };
30
- //# sourceMappingURL=useIcons.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIcons.js","sourceRoot":"","sources":["../../../src/hooks/useIcons.tsx"],"names":[],"mappings":";AAAA,OAAO,oBAAoB,MAAM,sCAAsC,CAAA;AACvE,OAAO,mBAAmB,MAAM,qCAAqC,CAAA;AACrE,OAAO,OAAO,MAAM,yBAAyB,CAAA;AAC7C,OAAO,uBAAuB,MAAM,yCAAyC,CAAA;AAC7E,OAAO,qBAAqB,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAkB,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAIlC,wDAAwD;AACxD,MAAM,SAAS,GAAyE;IACtF,SAAS,EAAE,mBAAmB;IAC9B,OAAO,EAAE,oBAAoB;IAC7B,MAAM,EAAE,uBAAuB;IAC/B,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,qBAAqB;CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,MAAM,OAAO,GAAgC,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QAC9G,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE;YACrE,MAAM,IAAI,GAAG,KAAC,aAAa,IAAC,QAAQ,EAAC,OAAO,GAAG,CAAA;YAC/C,GAAG,CAAC,IAAmB,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;YACrG,OAAO,GAAG,CAAA;QACZ,CAAC,EAAE,OAAO,CAAC,CAAA;IACb,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IAEnB,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCytoscapeElements.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCytoscapeElements.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AA0C7C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,2BA8ChC,CAAA"}
@@ -1,3 +0,0 @@
1
- import { CytoscapeOptions } from 'cytoscape';
2
- export declare const useCytoscapeOptions: (elements: CytoscapeOptions['elements']) => CytoscapeOptions;
3
- //# sourceMappingURL=useCytoscapeOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCytoscapeOptions.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCytoscapeOptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAK5C,eAAO,MAAM,mBAAmB,aAAc,gBAAgB,CAAC,UAAU,CAAC,qBAkDzE,CAAA"}
@@ -1,3 +0,0 @@
1
- export type CyNodeIcons = 'archivist' | 'diviner' | 'module' | 'node' | 'witness';
2
- export declare const useIcons: () => Record<CyNodeIcons, string>;
3
- //# sourceMappingURL=useIcons.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIcons.d.ts","sourceRoot":"","sources":["../../../src/hooks/useIcons.tsx"],"names":[],"mappings":"AAWA,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;AAWjF,eAAO,MAAM,QAAQ,mCAYpB,CAAA"}
@@ -1,57 +0,0 @@
1
- import { useTheme } from '@mui/material'
2
- import { CytoscapeOptions } from 'cytoscape'
3
- import { useMemo } from 'react'
4
-
5
- import { CyNodeIcons, useIcons } from './useIcons'
6
-
7
- export const useCytoscapeOptions = (elements: CytoscapeOptions['elements']) => {
8
- const theme = useTheme()
9
- const icons = useIcons()
10
-
11
- const options = useMemo<CytoscapeOptions>(
12
- () => ({
13
- elements,
14
- layout: {
15
- minNodeSpacing: 75,
16
- name: 'concentric',
17
- },
18
- style: [
19
- {
20
- selector: 'node[id]',
21
- style: {
22
- color: theme.palette.text.primary,
23
- 'font-family': 'Lexend Deca, Helvetica, sans-serif',
24
- 'font-size': 14,
25
- 'text-margin-y': -5,
26
- },
27
- },
28
- {
29
- selector: 'node',
30
- style: {
31
- 'background-color': theme.palette.primary.main,
32
- 'background-height': '75%',
33
- // TODO - make dynamic
34
- 'background-image': (elem) => icons[elem.data('type') as CyNodeIcons],
35
- 'background-image-smoothing': 'yes',
36
- 'background-width': '75%',
37
- label: 'data(id)',
38
- },
39
- },
40
- {
41
- selector: 'edge',
42
- style: {
43
- 'curve-style': 'bezier',
44
- 'line-color': theme.palette.divider,
45
- 'line-opacity': 0.1,
46
- 'target-arrow-color': theme.palette.divider,
47
- 'target-arrow-shape': 'triangle',
48
- width: 3,
49
- },
50
- },
51
- ],
52
- }),
53
- [elements, icons, theme.palette.divider, theme.palette.primary.main, theme.palette.text.primary],
54
- )
55
-
56
- return options
57
- }
@@ -1,35 +0,0 @@
1
- import CallMergeRoundedIcon from '@mui/icons-material/CallMergeRounded'
2
- import GridViewRoundedIcon from '@mui/icons-material/GridViewRounded'
3
- import HubIcon from '@mui/icons-material/Hub'
4
- import QuestionMarkRoundedIcon from '@mui/icons-material/QuestionMarkRounded'
5
- import VisibilityRoundedIcon from '@mui/icons-material/VisibilityRounded'
6
- import { SvgIconTypeMap, useTheme } from '@mui/material'
7
- import { OverridableComponent } from '@mui/material/OverridableComponent'
8
- import { useMemo } from 'react'
9
-
10
- import { encodeSvg } from '../lib'
11
-
12
- export type CyNodeIcons = 'archivist' | 'diviner' | 'module' | 'node' | 'witness'
13
-
14
- // eslint-disable-next-line @typescript-eslint/ban-types
15
- const CyIconSet: Record<CyNodeIcons, OverridableComponent<SvgIconTypeMap<{}, 'svg'>>> = {
16
- archivist: GridViewRoundedIcon,
17
- diviner: CallMergeRoundedIcon,
18
- module: QuestionMarkRoundedIcon,
19
- node: HubIcon,
20
- witness: VisibilityRoundedIcon,
21
- }
22
-
23
- export const useIcons = () => {
24
- const theme = useTheme()
25
- const icons = useMemo(() => {
26
- const iconMap: Record<CyNodeIcons, string> = { archivist: '', diviner: '', module: '', node: '', witness: '' }
27
- return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {
28
- const icon = <IconComponent fontSize="small" />
29
- acc[name as CyNodeIcons] = encodeSvg(icon, theme.palette.getContrastText(theme.palette.text.primary))
30
- return acc
31
- }, iconMap)
32
- }, [theme.palette])
33
-
34
- return icons
35
- }