@xyo-network/react-node-renderer 2.75.7 → 2.76.1

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 (445) hide show
  1. package/dist/browser/Cytoscape/CytoscapeElements.d.cts +4 -4
  2. package/dist/browser/Cytoscape/CytoscapeElements.d.cts.map +1 -1
  3. package/dist/browser/Cytoscape/CytoscapeElements.d.mts +4 -4
  4. package/dist/browser/Cytoscape/CytoscapeElements.d.mts.map +1 -1
  5. package/dist/browser/Cytoscape/CytoscapeElements.d.ts +4 -4
  6. package/dist/browser/Cytoscape/CytoscapeElements.d.ts.map +1 -1
  7. package/dist/browser/Cytoscape/CytoscapeIcons.d.cts.map +1 -1
  8. package/dist/browser/Cytoscape/CytoscapeIcons.d.mts.map +1 -1
  9. package/dist/browser/Cytoscape/CytoscapeIcons.d.ts.map +1 -1
  10. package/dist/browser/Cytoscape/lib/iconMap.d.cts.map +1 -1
  11. package/dist/browser/Cytoscape/lib/iconMap.d.mts.map +1 -1
  12. package/dist/browser/Cytoscape/lib/iconMap.d.ts.map +1 -1
  13. package/dist/browser/Cytoscape/lib/parseModuleType.d.cts +1 -1
  14. package/dist/browser/Cytoscape/lib/parseModuleType.d.cts.map +1 -1
  15. package/dist/browser/Cytoscape/lib/parseModuleType.d.mts +1 -1
  16. package/dist/browser/Cytoscape/lib/parseModuleType.d.mts.map +1 -1
  17. package/dist/browser/Cytoscape/lib/parseModuleType.d.ts +1 -1
  18. package/dist/browser/Cytoscape/lib/parseModuleType.d.ts.map +1 -1
  19. package/dist/browser/components/lib/RelationalGraphProps.d.cts +4 -0
  20. package/dist/browser/components/lib/RelationalGraphProps.d.cts.map +1 -1
  21. package/dist/browser/components/lib/RelationalGraphProps.d.mts +4 -0
  22. package/dist/browser/components/lib/RelationalGraphProps.d.mts.map +1 -1
  23. package/dist/browser/components/lib/RelationalGraphProps.d.ts +4 -0
  24. package/dist/browser/components/lib/RelationalGraphProps.d.ts.map +1 -1
  25. package/dist/browser/components/module/CardParser.d.cts +1 -1
  26. package/dist/browser/components/module/CardParser.d.cts.map +1 -1
  27. package/dist/browser/components/module/CardParser.d.mts +1 -1
  28. package/dist/browser/components/module/CardParser.d.mts.map +1 -1
  29. package/dist/browser/components/module/CardParser.d.ts +1 -1
  30. package/dist/browser/components/module/CardParser.d.ts.map +1 -1
  31. package/dist/browser/components/relational/graph/Graph.d.cts.map +1 -1
  32. package/dist/browser/components/relational/graph/Graph.d.mts.map +1 -1
  33. package/dist/browser/components/relational/graph/Graph.d.ts.map +1 -1
  34. package/dist/browser/hooks/cytoscape/elements/useCytoscapeElements.d.cts +1 -1
  35. package/dist/browser/hooks/cytoscape/elements/useCytoscapeElements.d.cts.map +1 -1
  36. package/dist/browser/hooks/cytoscape/elements/useCytoscapeElements.d.mts +1 -1
  37. package/dist/browser/hooks/cytoscape/elements/useCytoscapeElements.d.mts.map +1 -1
  38. package/dist/browser/hooks/cytoscape/elements/useCytoscapeElements.d.ts +1 -1
  39. package/dist/browser/hooks/cytoscape/elements/useCytoscapeElements.d.ts.map +1 -1
  40. package/dist/browser/hooks/cytoscape/useModuleDetails.d.cts +1 -1
  41. package/dist/browser/hooks/cytoscape/useModuleDetails.d.mts +1 -1
  42. package/dist/browser/hooks/cytoscape/useModuleDetails.d.ts +1 -1
  43. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.d.cts +1 -1
  44. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.d.cts.map +1 -1
  45. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.d.mts +1 -1
  46. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.d.mts.map +1 -1
  47. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.d.ts +1 -1
  48. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.d.ts.map +1 -1
  49. package/dist/browser/index.cjs +82 -49
  50. package/dist/browser/index.cjs.map +1 -1
  51. package/dist/browser/index.js +87 -54
  52. package/dist/browser/index.js.map +1 -1
  53. package/dist/neutral/Cytoscape/CytoscapeElements.d.cts +29 -0
  54. package/dist/neutral/Cytoscape/CytoscapeElements.d.cts.map +1 -0
  55. package/dist/neutral/Cytoscape/CytoscapeElements.d.mts +29 -0
  56. package/dist/neutral/Cytoscape/CytoscapeElements.d.mts.map +1 -0
  57. package/dist/neutral/Cytoscape/CytoscapeElements.d.ts +29 -0
  58. package/dist/neutral/Cytoscape/CytoscapeElements.d.ts.map +1 -0
  59. package/dist/neutral/Cytoscape/CytoscapeIcons.d.cts +5 -0
  60. package/dist/neutral/Cytoscape/CytoscapeIcons.d.cts.map +1 -0
  61. package/dist/neutral/Cytoscape/CytoscapeIcons.d.mts +5 -0
  62. package/dist/neutral/Cytoscape/CytoscapeIcons.d.mts.map +1 -0
  63. package/dist/neutral/Cytoscape/CytoscapeIcons.d.ts +5 -0
  64. package/dist/neutral/Cytoscape/CytoscapeIcons.d.ts.map +1 -0
  65. package/dist/neutral/Cytoscape/CytoscapeStyles.d.cts +22 -0
  66. package/dist/neutral/Cytoscape/CytoscapeStyles.d.cts.map +1 -0
  67. package/dist/neutral/Cytoscape/CytoscapeStyles.d.mts +22 -0
  68. package/dist/neutral/Cytoscape/CytoscapeStyles.d.mts.map +1 -0
  69. package/dist/neutral/Cytoscape/CytoscapeStyles.d.ts +22 -0
  70. package/dist/neutral/Cytoscape/CytoscapeStyles.d.ts.map +1 -0
  71. package/dist/neutral/Cytoscape/index.d.cts +5 -0
  72. package/dist/neutral/Cytoscape/index.d.cts.map +1 -0
  73. package/dist/neutral/Cytoscape/index.d.mts +5 -0
  74. package/dist/neutral/Cytoscape/index.d.mts.map +1 -0
  75. package/dist/neutral/Cytoscape/index.d.ts +5 -0
  76. package/dist/neutral/Cytoscape/index.d.ts.map +1 -0
  77. package/dist/neutral/Cytoscape/lib/CyNodeModuleTypes.d.cts +2 -0
  78. package/dist/neutral/Cytoscape/lib/CyNodeModuleTypes.d.cts.map +1 -0
  79. package/dist/neutral/Cytoscape/lib/CyNodeModuleTypes.d.mts +2 -0
  80. package/dist/neutral/Cytoscape/lib/CyNodeModuleTypes.d.mts.map +1 -0
  81. package/dist/neutral/Cytoscape/lib/CyNodeModuleTypes.d.ts +2 -0
  82. package/dist/neutral/Cytoscape/lib/CyNodeModuleTypes.d.ts.map +1 -0
  83. package/dist/neutral/Cytoscape/lib/encodeSvg.d.cts +3 -0
  84. package/dist/neutral/Cytoscape/lib/encodeSvg.d.cts.map +1 -0
  85. package/dist/neutral/Cytoscape/lib/encodeSvg.d.mts +3 -0
  86. package/dist/neutral/Cytoscape/lib/encodeSvg.d.mts.map +1 -0
  87. package/dist/neutral/Cytoscape/lib/encodeSvg.d.ts +3 -0
  88. package/dist/neutral/Cytoscape/lib/encodeSvg.d.ts.map +1 -0
  89. package/dist/neutral/Cytoscape/lib/iconMap.d.cts +3 -0
  90. package/dist/neutral/Cytoscape/lib/iconMap.d.cts.map +1 -0
  91. package/dist/neutral/Cytoscape/lib/iconMap.d.mts +3 -0
  92. package/dist/neutral/Cytoscape/lib/iconMap.d.mts.map +1 -0
  93. package/dist/neutral/Cytoscape/lib/iconMap.d.ts +3 -0
  94. package/dist/neutral/Cytoscape/lib/iconMap.d.ts.map +1 -0
  95. package/dist/neutral/Cytoscape/lib/index.d.cts +6 -0
  96. package/dist/neutral/Cytoscape/lib/index.d.cts.map +1 -0
  97. package/dist/neutral/Cytoscape/lib/index.d.mts +6 -0
  98. package/dist/neutral/Cytoscape/lib/index.d.mts.map +1 -0
  99. package/dist/neutral/Cytoscape/lib/index.d.ts +6 -0
  100. package/dist/neutral/Cytoscape/lib/index.d.ts.map +1 -0
  101. package/dist/neutral/Cytoscape/lib/layout/ColaLayout.d.cts +6 -0
  102. package/dist/neutral/Cytoscape/lib/layout/ColaLayout.d.cts.map +1 -0
  103. package/dist/neutral/Cytoscape/lib/layout/ColaLayout.d.mts +6 -0
  104. package/dist/neutral/Cytoscape/lib/layout/ColaLayout.d.mts.map +1 -0
  105. package/dist/neutral/Cytoscape/lib/layout/ColaLayout.d.ts +6 -0
  106. package/dist/neutral/Cytoscape/lib/layout/ColaLayout.d.ts.map +1 -0
  107. package/dist/neutral/Cytoscape/lib/layout/ConcentricLayout.d.cts +3 -0
  108. package/dist/neutral/Cytoscape/lib/layout/ConcentricLayout.d.cts.map +1 -0
  109. package/dist/neutral/Cytoscape/lib/layout/ConcentricLayout.d.mts +3 -0
  110. package/dist/neutral/Cytoscape/lib/layout/ConcentricLayout.d.mts.map +1 -0
  111. package/dist/neutral/Cytoscape/lib/layout/ConcentricLayout.d.ts +3 -0
  112. package/dist/neutral/Cytoscape/lib/layout/ConcentricLayout.d.ts.map +1 -0
  113. package/dist/neutral/Cytoscape/lib/layout/index.d.cts +3 -0
  114. package/dist/neutral/Cytoscape/lib/layout/index.d.cts.map +1 -0
  115. package/dist/neutral/Cytoscape/lib/layout/index.d.mts +3 -0
  116. package/dist/neutral/Cytoscape/lib/layout/index.d.mts.map +1 -0
  117. package/dist/neutral/Cytoscape/lib/layout/index.d.ts +3 -0
  118. package/dist/neutral/Cytoscape/lib/layout/index.d.ts.map +1 -0
  119. package/dist/neutral/Cytoscape/lib/parseModuleType.d.cts +4 -0
  120. package/dist/neutral/Cytoscape/lib/parseModuleType.d.cts.map +1 -0
  121. package/dist/neutral/Cytoscape/lib/parseModuleType.d.mts +4 -0
  122. package/dist/neutral/Cytoscape/lib/parseModuleType.d.mts.map +1 -0
  123. package/dist/neutral/Cytoscape/lib/parseModuleType.d.ts +4 -0
  124. package/dist/neutral/Cytoscape/lib/parseModuleType.d.ts.map +1 -0
  125. package/dist/neutral/components/cytoscape-extensions/WithExtensions.d.cts +3 -0
  126. package/dist/neutral/components/cytoscape-extensions/WithExtensions.d.cts.map +1 -0
  127. package/dist/neutral/components/cytoscape-extensions/WithExtensions.d.mts +3 -0
  128. package/dist/neutral/components/cytoscape-extensions/WithExtensions.d.mts.map +1 -0
  129. package/dist/neutral/components/cytoscape-extensions/WithExtensions.d.ts +3 -0
  130. package/dist/neutral/components/cytoscape-extensions/WithExtensions.d.ts.map +1 -0
  131. package/dist/neutral/components/cytoscape-extensions/index.d.cts +2 -0
  132. package/dist/neutral/components/cytoscape-extensions/index.d.cts.map +1 -0
  133. package/dist/neutral/components/cytoscape-extensions/index.d.mts +2 -0
  134. package/dist/neutral/components/cytoscape-extensions/index.d.mts.map +1 -0
  135. package/dist/neutral/components/cytoscape-extensions/index.d.ts +2 -0
  136. package/dist/neutral/components/cytoscape-extensions/index.d.ts.map +1 -0
  137. package/dist/neutral/components/index.d.cts +4 -0
  138. package/dist/neutral/components/index.d.cts.map +1 -0
  139. package/dist/neutral/components/index.d.mts +4 -0
  140. package/dist/neutral/components/index.d.mts.map +1 -0
  141. package/dist/neutral/components/index.d.ts +4 -0
  142. package/dist/neutral/components/index.d.ts.map +1 -0
  143. package/dist/neutral/components/lib/RelationalGraphProps.d.cts +16 -0
  144. package/dist/neutral/components/lib/RelationalGraphProps.d.cts.map +1 -0
  145. package/dist/neutral/components/lib/RelationalGraphProps.d.mts +16 -0
  146. package/dist/neutral/components/lib/RelationalGraphProps.d.mts.map +1 -0
  147. package/dist/neutral/components/lib/RelationalGraphProps.d.ts +16 -0
  148. package/dist/neutral/components/lib/RelationalGraphProps.d.ts.map +1 -0
  149. package/dist/neutral/components/lib/index.d.cts +2 -0
  150. package/dist/neutral/components/lib/index.d.cts.map +1 -0
  151. package/dist/neutral/components/lib/index.d.mts +2 -0
  152. package/dist/neutral/components/lib/index.d.mts.map +1 -0
  153. package/dist/neutral/components/lib/index.d.ts +2 -0
  154. package/dist/neutral/components/lib/index.d.ts.map +1 -0
  155. package/dist/neutral/components/module/CardParser.d.cts +7 -0
  156. package/dist/neutral/components/module/CardParser.d.cts.map +1 -0
  157. package/dist/neutral/components/module/CardParser.d.mts +7 -0
  158. package/dist/neutral/components/module/CardParser.d.mts.map +1 -0
  159. package/dist/neutral/components/module/CardParser.d.ts +7 -0
  160. package/dist/neutral/components/module/CardParser.d.ts.map +1 -0
  161. package/dist/neutral/components/module/graph/DetailsFlexbox.d.cts +7 -0
  162. package/dist/neutral/components/module/graph/DetailsFlexbox.d.cts.map +1 -0
  163. package/dist/neutral/components/module/graph/DetailsFlexbox.d.mts +7 -0
  164. package/dist/neutral/components/module/graph/DetailsFlexbox.d.mts.map +1 -0
  165. package/dist/neutral/components/module/graph/DetailsFlexbox.d.ts +7 -0
  166. package/dist/neutral/components/module/graph/DetailsFlexbox.d.ts.map +1 -0
  167. package/dist/neutral/components/module/graph/GraphFlexBox.d.cts +13 -0
  168. package/dist/neutral/components/module/graph/GraphFlexBox.d.cts.map +1 -0
  169. package/dist/neutral/components/module/graph/GraphFlexBox.d.mts +13 -0
  170. package/dist/neutral/components/module/graph/GraphFlexBox.d.mts.map +1 -0
  171. package/dist/neutral/components/module/graph/GraphFlexBox.d.ts +13 -0
  172. package/dist/neutral/components/module/graph/GraphFlexBox.d.ts.map +1 -0
  173. package/dist/neutral/components/module/graph/Popper.d.cts +13 -0
  174. package/dist/neutral/components/module/graph/Popper.d.cts.map +1 -0
  175. package/dist/neutral/components/module/graph/Popper.d.mts +13 -0
  176. package/dist/neutral/components/module/graph/Popper.d.mts.map +1 -0
  177. package/dist/neutral/components/module/graph/Popper.d.ts +13 -0
  178. package/dist/neutral/components/module/graph/Popper.d.ts.map +1 -0
  179. package/dist/neutral/components/module/graph/index.d.cts +2 -0
  180. package/dist/neutral/components/module/graph/index.d.cts.map +1 -0
  181. package/dist/neutral/components/module/graph/index.d.mts +2 -0
  182. package/dist/neutral/components/module/graph/index.d.mts.map +1 -0
  183. package/dist/neutral/components/module/graph/index.d.ts +2 -0
  184. package/dist/neutral/components/module/graph/index.d.ts.map +1 -0
  185. package/dist/neutral/components/module/graph/node/Hover.d.cts +9 -0
  186. package/dist/neutral/components/module/graph/node/Hover.d.cts.map +1 -0
  187. package/dist/neutral/components/module/graph/node/Hover.d.mts +9 -0
  188. package/dist/neutral/components/module/graph/node/Hover.d.mts.map +1 -0
  189. package/dist/neutral/components/module/graph/node/Hover.d.ts +9 -0
  190. package/dist/neutral/components/module/graph/node/Hover.d.ts.map +1 -0
  191. package/dist/neutral/components/module/graph/node/hooks/index.d.cts +2 -0
  192. package/dist/neutral/components/module/graph/node/hooks/index.d.cts.map +1 -0
  193. package/dist/neutral/components/module/graph/node/hooks/index.d.mts +2 -0
  194. package/dist/neutral/components/module/graph/node/hooks/index.d.mts.map +1 -0
  195. package/dist/neutral/components/module/graph/node/hooks/index.d.ts +2 -0
  196. package/dist/neutral/components/module/graph/node/hooks/index.d.ts.map +1 -0
  197. package/dist/neutral/components/module/graph/node/hooks/useNodeElement.d.cts +8 -0
  198. package/dist/neutral/components/module/graph/node/hooks/useNodeElement.d.cts.map +1 -0
  199. package/dist/neutral/components/module/graph/node/hooks/useNodeElement.d.mts +8 -0
  200. package/dist/neutral/components/module/graph/node/hooks/useNodeElement.d.mts.map +1 -0
  201. package/dist/neutral/components/module/graph/node/hooks/useNodeElement.d.ts +8 -0
  202. package/dist/neutral/components/module/graph/node/hooks/useNodeElement.d.ts.map +1 -0
  203. package/dist/neutral/components/module/graph/node/index.d.cts +2 -0
  204. package/dist/neutral/components/module/graph/node/index.d.cts.map +1 -0
  205. package/dist/neutral/components/module/graph/node/index.d.mts +2 -0
  206. package/dist/neutral/components/module/graph/node/index.d.mts.map +1 -0
  207. package/dist/neutral/components/module/graph/node/index.d.ts +2 -0
  208. package/dist/neutral/components/module/graph/node/index.d.ts.map +1 -0
  209. package/dist/neutral/components/module/index.d.cts +3 -0
  210. package/dist/neutral/components/module/index.d.cts.map +1 -0
  211. package/dist/neutral/components/module/index.d.mts +3 -0
  212. package/dist/neutral/components/module/index.d.mts.map +1 -0
  213. package/dist/neutral/components/module/index.d.ts +3 -0
  214. package/dist/neutral/components/module/index.d.ts.map +1 -0
  215. package/dist/neutral/components/relational/graph/Graph.d.cts +6 -0
  216. package/dist/neutral/components/relational/graph/Graph.d.cts.map +1 -0
  217. package/dist/neutral/components/relational/graph/Graph.d.mts +6 -0
  218. package/dist/neutral/components/relational/graph/Graph.d.mts.map +1 -0
  219. package/dist/neutral/components/relational/graph/Graph.d.ts +6 -0
  220. package/dist/neutral/components/relational/graph/Graph.d.ts.map +1 -0
  221. package/dist/neutral/components/relational/graph/ProvidedNodeRenderer.d.cts +12 -0
  222. package/dist/neutral/components/relational/graph/ProvidedNodeRenderer.d.cts.map +1 -0
  223. package/dist/neutral/components/relational/graph/ProvidedNodeRenderer.d.mts +12 -0
  224. package/dist/neutral/components/relational/graph/ProvidedNodeRenderer.d.mts.map +1 -0
  225. package/dist/neutral/components/relational/graph/ProvidedNodeRenderer.d.ts +12 -0
  226. package/dist/neutral/components/relational/graph/ProvidedNodeRenderer.d.ts.map +1 -0
  227. package/dist/neutral/components/relational/graph/index.d.cts +3 -0
  228. package/dist/neutral/components/relational/graph/index.d.cts.map +1 -0
  229. package/dist/neutral/components/relational/graph/index.d.mts +3 -0
  230. package/dist/neutral/components/relational/graph/index.d.mts.map +1 -0
  231. package/dist/neutral/components/relational/graph/index.d.ts +3 -0
  232. package/dist/neutral/components/relational/graph/index.d.ts.map +1 -0
  233. package/dist/neutral/components/relational/graph/story/TestData.d.cts +3 -0
  234. package/dist/neutral/components/relational/graph/story/TestData.d.cts.map +1 -0
  235. package/dist/neutral/components/relational/graph/story/TestData.d.mts +3 -0
  236. package/dist/neutral/components/relational/graph/story/TestData.d.mts.map +1 -0
  237. package/dist/neutral/components/relational/graph/story/TestData.d.ts +3 -0
  238. package/dist/neutral/components/relational/graph/story/TestData.d.ts.map +1 -0
  239. package/dist/neutral/components/relational/graph/story/index.d.cts +2 -0
  240. package/dist/neutral/components/relational/graph/story/index.d.cts.map +1 -0
  241. package/dist/neutral/components/relational/graph/story/index.d.mts +2 -0
  242. package/dist/neutral/components/relational/graph/story/index.d.mts.map +1 -0
  243. package/dist/neutral/components/relational/graph/story/index.d.ts +2 -0
  244. package/dist/neutral/components/relational/graph/story/index.d.ts.map +1 -0
  245. package/dist/neutral/components/relational/index.d.cts +2 -0
  246. package/dist/neutral/components/relational/index.d.cts.map +1 -0
  247. package/dist/neutral/components/relational/index.d.mts +2 -0
  248. package/dist/neutral/components/relational/index.d.mts.map +1 -0
  249. package/dist/neutral/components/relational/index.d.ts +2 -0
  250. package/dist/neutral/components/relational/index.d.ts.map +1 -0
  251. package/dist/neutral/contexts/CytoscapeInstance/Context.d.cts +4 -0
  252. package/dist/neutral/contexts/CytoscapeInstance/Context.d.cts.map +1 -0
  253. package/dist/neutral/contexts/CytoscapeInstance/Context.d.mts +4 -0
  254. package/dist/neutral/contexts/CytoscapeInstance/Context.d.mts.map +1 -0
  255. package/dist/neutral/contexts/CytoscapeInstance/Context.d.ts +4 -0
  256. package/dist/neutral/contexts/CytoscapeInstance/Context.d.ts.map +1 -0
  257. package/dist/neutral/contexts/CytoscapeInstance/Provider.d.cts +8 -0
  258. package/dist/neutral/contexts/CytoscapeInstance/Provider.d.cts.map +1 -0
  259. package/dist/neutral/contexts/CytoscapeInstance/Provider.d.mts +8 -0
  260. package/dist/neutral/contexts/CytoscapeInstance/Provider.d.mts.map +1 -0
  261. package/dist/neutral/contexts/CytoscapeInstance/Provider.d.ts +8 -0
  262. package/dist/neutral/contexts/CytoscapeInstance/Provider.d.ts.map +1 -0
  263. package/dist/neutral/contexts/CytoscapeInstance/State.d.cts +8 -0
  264. package/dist/neutral/contexts/CytoscapeInstance/State.d.cts.map +1 -0
  265. package/dist/neutral/contexts/CytoscapeInstance/State.d.mts +8 -0
  266. package/dist/neutral/contexts/CytoscapeInstance/State.d.mts.map +1 -0
  267. package/dist/neutral/contexts/CytoscapeInstance/State.d.ts +8 -0
  268. package/dist/neutral/contexts/CytoscapeInstance/State.d.ts.map +1 -0
  269. package/dist/neutral/contexts/CytoscapeInstance/index.d.cts +5 -0
  270. package/dist/neutral/contexts/CytoscapeInstance/index.d.cts.map +1 -0
  271. package/dist/neutral/contexts/CytoscapeInstance/index.d.mts +5 -0
  272. package/dist/neutral/contexts/CytoscapeInstance/index.d.mts.map +1 -0
  273. package/dist/neutral/contexts/CytoscapeInstance/index.d.ts +5 -0
  274. package/dist/neutral/contexts/CytoscapeInstance/index.d.ts.map +1 -0
  275. package/dist/neutral/contexts/CytoscapeInstance/use.d.cts +2 -0
  276. package/dist/neutral/contexts/CytoscapeInstance/use.d.cts.map +1 -0
  277. package/dist/neutral/contexts/CytoscapeInstance/use.d.mts +2 -0
  278. package/dist/neutral/contexts/CytoscapeInstance/use.d.mts.map +1 -0
  279. package/dist/neutral/contexts/CytoscapeInstance/use.d.ts +2 -0
  280. package/dist/neutral/contexts/CytoscapeInstance/use.d.ts.map +1 -0
  281. package/dist/neutral/contexts/index.d.cts +2 -0
  282. package/dist/neutral/contexts/index.d.cts.map +1 -0
  283. package/dist/neutral/contexts/index.d.mts +2 -0
  284. package/dist/neutral/contexts/index.d.mts.map +1 -0
  285. package/dist/neutral/contexts/index.d.ts +2 -0
  286. package/dist/neutral/contexts/index.d.ts.map +1 -0
  287. package/dist/neutral/hooks/cytoscape/elements/index.d.cts +3 -0
  288. package/dist/neutral/hooks/cytoscape/elements/index.d.cts.map +1 -0
  289. package/dist/neutral/hooks/cytoscape/elements/index.d.mts +3 -0
  290. package/dist/neutral/hooks/cytoscape/elements/index.d.mts.map +1 -0
  291. package/dist/neutral/hooks/cytoscape/elements/index.d.ts +3 -0
  292. package/dist/neutral/hooks/cytoscape/elements/index.d.ts.map +1 -0
  293. package/dist/neutral/hooks/cytoscape/elements/useCytoscapeElements.d.cts +4 -0
  294. package/dist/neutral/hooks/cytoscape/elements/useCytoscapeElements.d.cts.map +1 -0
  295. package/dist/neutral/hooks/cytoscape/elements/useCytoscapeElements.d.mts +4 -0
  296. package/dist/neutral/hooks/cytoscape/elements/useCytoscapeElements.d.mts.map +1 -0
  297. package/dist/neutral/hooks/cytoscape/elements/useCytoscapeElements.d.ts +4 -0
  298. package/dist/neutral/hooks/cytoscape/elements/useCytoscapeElements.d.ts.map +1 -0
  299. package/dist/neutral/hooks/cytoscape/elements/useElements.d.cts +7 -0
  300. package/dist/neutral/hooks/cytoscape/elements/useElements.d.cts.map +1 -0
  301. package/dist/neutral/hooks/cytoscape/elements/useElements.d.mts +7 -0
  302. package/dist/neutral/hooks/cytoscape/elements/useElements.d.mts.map +1 -0
  303. package/dist/neutral/hooks/cytoscape/elements/useElements.d.ts +7 -0
  304. package/dist/neutral/hooks/cytoscape/elements/useElements.d.ts.map +1 -0
  305. package/dist/neutral/hooks/cytoscape/elements/useHoveredNode.d.cts +4 -0
  306. package/dist/neutral/hooks/cytoscape/elements/useHoveredNode.d.cts.map +1 -0
  307. package/dist/neutral/hooks/cytoscape/elements/useHoveredNode.d.mts +4 -0
  308. package/dist/neutral/hooks/cytoscape/elements/useHoveredNode.d.mts.map +1 -0
  309. package/dist/neutral/hooks/cytoscape/elements/useHoveredNode.d.ts +4 -0
  310. package/dist/neutral/hooks/cytoscape/elements/useHoveredNode.d.ts.map +1 -0
  311. package/dist/neutral/hooks/cytoscape/elements/useNewElements.d.cts +3 -0
  312. package/dist/neutral/hooks/cytoscape/elements/useNewElements.d.cts.map +1 -0
  313. package/dist/neutral/hooks/cytoscape/elements/useNewElements.d.mts +3 -0
  314. package/dist/neutral/hooks/cytoscape/elements/useNewElements.d.mts.map +1 -0
  315. package/dist/neutral/hooks/cytoscape/elements/useNewElements.d.ts +3 -0
  316. package/dist/neutral/hooks/cytoscape/elements/useNewElements.d.ts.map +1 -0
  317. package/dist/neutral/hooks/cytoscape/elements/useRenderNewElements.d.cts +3 -0
  318. package/dist/neutral/hooks/cytoscape/elements/useRenderNewElements.d.cts.map +1 -0
  319. package/dist/neutral/hooks/cytoscape/elements/useRenderNewElements.d.mts +3 -0
  320. package/dist/neutral/hooks/cytoscape/elements/useRenderNewElements.d.mts.map +1 -0
  321. package/dist/neutral/hooks/cytoscape/elements/useRenderNewElements.d.ts +3 -0
  322. package/dist/neutral/hooks/cytoscape/elements/useRenderNewElements.d.ts.map +1 -0
  323. package/dist/neutral/hooks/cytoscape/elements/useSelectedElement.d.cts +6 -0
  324. package/dist/neutral/hooks/cytoscape/elements/useSelectedElement.d.cts.map +1 -0
  325. package/dist/neutral/hooks/cytoscape/elements/useSelectedElement.d.mts +6 -0
  326. package/dist/neutral/hooks/cytoscape/elements/useSelectedElement.d.mts.map +1 -0
  327. package/dist/neutral/hooks/cytoscape/elements/useSelectedElement.d.ts +6 -0
  328. package/dist/neutral/hooks/cytoscape/elements/useSelectedElement.d.ts.map +1 -0
  329. package/dist/neutral/hooks/cytoscape/index.d.cts +5 -0
  330. package/dist/neutral/hooks/cytoscape/index.d.cts.map +1 -0
  331. package/dist/neutral/hooks/cytoscape/index.d.mts +5 -0
  332. package/dist/neutral/hooks/cytoscape/index.d.mts.map +1 -0
  333. package/dist/neutral/hooks/cytoscape/index.d.ts +5 -0
  334. package/dist/neutral/hooks/cytoscape/index.d.ts.map +1 -0
  335. package/dist/neutral/hooks/cytoscape/useCytoscapeOptions.d.cts +3 -0
  336. package/dist/neutral/hooks/cytoscape/useCytoscapeOptions.d.cts.map +1 -0
  337. package/dist/neutral/hooks/cytoscape/useCytoscapeOptions.d.mts +3 -0
  338. package/dist/neutral/hooks/cytoscape/useCytoscapeOptions.d.mts.map +1 -0
  339. package/dist/neutral/hooks/cytoscape/useCytoscapeOptions.d.ts +3 -0
  340. package/dist/neutral/hooks/cytoscape/useCytoscapeOptions.d.ts.map +1 -0
  341. package/dist/neutral/hooks/cytoscape/useCytoscapeStyle.d.cts +2 -0
  342. package/dist/neutral/hooks/cytoscape/useCytoscapeStyle.d.cts.map +1 -0
  343. package/dist/neutral/hooks/cytoscape/useCytoscapeStyle.d.mts +2 -0
  344. package/dist/neutral/hooks/cytoscape/useCytoscapeStyle.d.mts.map +1 -0
  345. package/dist/neutral/hooks/cytoscape/useCytoscapeStyle.d.ts +2 -0
  346. package/dist/neutral/hooks/cytoscape/useCytoscapeStyle.d.ts.map +1 -0
  347. package/dist/neutral/hooks/cytoscape/useIcons.d.cts +3 -0
  348. package/dist/neutral/hooks/cytoscape/useIcons.d.cts.map +1 -0
  349. package/dist/neutral/hooks/cytoscape/useIcons.d.mts +3 -0
  350. package/dist/neutral/hooks/cytoscape/useIcons.d.mts.map +1 -0
  351. package/dist/neutral/hooks/cytoscape/useIcons.d.ts +3 -0
  352. package/dist/neutral/hooks/cytoscape/useIcons.d.ts.map +1 -0
  353. package/dist/neutral/hooks/cytoscape/useModuleDetails.d.cts +17 -0
  354. package/dist/neutral/hooks/cytoscape/useModuleDetails.d.cts.map +1 -0
  355. package/dist/neutral/hooks/cytoscape/useModuleDetails.d.mts +17 -0
  356. package/dist/neutral/hooks/cytoscape/useModuleDetails.d.mts.map +1 -0
  357. package/dist/neutral/hooks/cytoscape/useModuleDetails.d.ts +17 -0
  358. package/dist/neutral/hooks/cytoscape/useModuleDetails.d.ts.map +1 -0
  359. package/dist/neutral/hooks/cytoscape/useRelationalGraphOptions.d.cts +7 -0
  360. package/dist/neutral/hooks/cytoscape/useRelationalGraphOptions.d.cts.map +1 -0
  361. package/dist/neutral/hooks/cytoscape/useRelationalGraphOptions.d.mts +7 -0
  362. package/dist/neutral/hooks/cytoscape/useRelationalGraphOptions.d.mts.map +1 -0
  363. package/dist/neutral/hooks/cytoscape/useRelationalGraphOptions.d.ts +7 -0
  364. package/dist/neutral/hooks/cytoscape/useRelationalGraphOptions.d.ts.map +1 -0
  365. package/dist/neutral/hooks/index.d.cts +2 -0
  366. package/dist/neutral/hooks/index.d.cts.map +1 -0
  367. package/dist/neutral/hooks/index.d.mts +2 -0
  368. package/dist/neutral/hooks/index.d.mts.map +1 -0
  369. package/dist/neutral/hooks/index.d.ts +2 -0
  370. package/dist/neutral/hooks/index.d.ts.map +1 -0
  371. package/dist/neutral/index.cjs +842 -0
  372. package/dist/neutral/index.cjs.map +1 -0
  373. package/dist/neutral/index.d.cts +5 -0
  374. package/dist/neutral/index.d.cts.map +1 -0
  375. package/dist/neutral/index.d.mts +5 -0
  376. package/dist/neutral/index.d.mts.map +1 -0
  377. package/dist/neutral/index.d.ts +5 -0
  378. package/dist/neutral/index.d.ts.map +1 -0
  379. package/dist/neutral/index.js +817 -0
  380. package/dist/neutral/index.js.map +1 -0
  381. package/dist/node/Cytoscape/CytoscapeElements.d.cts +4 -4
  382. package/dist/node/Cytoscape/CytoscapeElements.d.cts.map +1 -1
  383. package/dist/node/Cytoscape/CytoscapeElements.d.mts +4 -4
  384. package/dist/node/Cytoscape/CytoscapeElements.d.mts.map +1 -1
  385. package/dist/node/Cytoscape/CytoscapeElements.d.ts +4 -4
  386. package/dist/node/Cytoscape/CytoscapeElements.d.ts.map +1 -1
  387. package/dist/node/Cytoscape/CytoscapeIcons.d.cts.map +1 -1
  388. package/dist/node/Cytoscape/CytoscapeIcons.d.mts.map +1 -1
  389. package/dist/node/Cytoscape/CytoscapeIcons.d.ts.map +1 -1
  390. package/dist/node/Cytoscape/lib/iconMap.d.cts.map +1 -1
  391. package/dist/node/Cytoscape/lib/iconMap.d.mts.map +1 -1
  392. package/dist/node/Cytoscape/lib/iconMap.d.ts.map +1 -1
  393. package/dist/node/Cytoscape/lib/parseModuleType.d.cts +1 -1
  394. package/dist/node/Cytoscape/lib/parseModuleType.d.cts.map +1 -1
  395. package/dist/node/Cytoscape/lib/parseModuleType.d.mts +1 -1
  396. package/dist/node/Cytoscape/lib/parseModuleType.d.mts.map +1 -1
  397. package/dist/node/Cytoscape/lib/parseModuleType.d.ts +1 -1
  398. package/dist/node/Cytoscape/lib/parseModuleType.d.ts.map +1 -1
  399. package/dist/node/components/lib/RelationalGraphProps.d.cts +4 -0
  400. package/dist/node/components/lib/RelationalGraphProps.d.cts.map +1 -1
  401. package/dist/node/components/lib/RelationalGraphProps.d.mts +4 -0
  402. package/dist/node/components/lib/RelationalGraphProps.d.mts.map +1 -1
  403. package/dist/node/components/lib/RelationalGraphProps.d.ts +4 -0
  404. package/dist/node/components/lib/RelationalGraphProps.d.ts.map +1 -1
  405. package/dist/node/components/module/CardParser.d.cts +1 -1
  406. package/dist/node/components/module/CardParser.d.cts.map +1 -1
  407. package/dist/node/components/module/CardParser.d.mts +1 -1
  408. package/dist/node/components/module/CardParser.d.mts.map +1 -1
  409. package/dist/node/components/module/CardParser.d.ts +1 -1
  410. package/dist/node/components/module/CardParser.d.ts.map +1 -1
  411. package/dist/node/components/relational/graph/Graph.d.cts.map +1 -1
  412. package/dist/node/components/relational/graph/Graph.d.mts.map +1 -1
  413. package/dist/node/components/relational/graph/Graph.d.ts.map +1 -1
  414. package/dist/node/hooks/cytoscape/elements/useCytoscapeElements.d.cts +1 -1
  415. package/dist/node/hooks/cytoscape/elements/useCytoscapeElements.d.cts.map +1 -1
  416. package/dist/node/hooks/cytoscape/elements/useCytoscapeElements.d.mts +1 -1
  417. package/dist/node/hooks/cytoscape/elements/useCytoscapeElements.d.mts.map +1 -1
  418. package/dist/node/hooks/cytoscape/elements/useCytoscapeElements.d.ts +1 -1
  419. package/dist/node/hooks/cytoscape/elements/useCytoscapeElements.d.ts.map +1 -1
  420. package/dist/node/hooks/cytoscape/useModuleDetails.d.cts +1 -1
  421. package/dist/node/hooks/cytoscape/useModuleDetails.d.mts +1 -1
  422. package/dist/node/hooks/cytoscape/useModuleDetails.d.ts +1 -1
  423. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.d.cts +1 -1
  424. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.d.cts.map +1 -1
  425. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.d.mts +1 -1
  426. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.d.mts.map +1 -1
  427. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.d.ts +1 -1
  428. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.d.ts.map +1 -1
  429. package/dist/node/index.cjs +84 -49
  430. package/dist/node/index.cjs.map +1 -1
  431. package/dist/node/index.js +89 -54
  432. package/dist/node/index.js.map +1 -1
  433. package/package.json +24 -24
  434. package/src/Cytoscape/CytoscapeElements.ts +10 -10
  435. package/src/Cytoscape/CytoscapeIcons.tsx +1 -0
  436. package/src/Cytoscape/lib/iconMap.ts +1 -0
  437. package/src/Cytoscape/lib/parseModuleType.ts +8 -8
  438. package/src/components/lib/RelationalGraphProps.ts +4 -0
  439. package/src/components/module/CardParser.tsx +7 -7
  440. package/src/components/module/graph/GraphFlexBox.tsx +3 -3
  441. package/src/components/relational/graph/Graph.tsx +56 -9
  442. package/src/hooks/cytoscape/elements/useCytoscapeElements.ts +9 -9
  443. package/src/hooks/cytoscape/elements/useNewElements.tsx +2 -2
  444. package/src/hooks/cytoscape/useModuleDetails.tsx +1 -1
  445. package/src/hooks/cytoscape/useRelationalGraphOptions.tsx +2 -2
@@ -4,16 +4,16 @@ import { asDivinerInstance, isDivinerInstance } from "@xyo-network/diviner-model
4
4
  import { ArchivistCard } from "@xyo-network/react-archivist";
5
5
  import { DivinerCard, ModuleCard } from "@xyo-network/react-module";
6
6
  import { jsx } from "react/jsx-runtime";
7
- var ModuleCardParser = ({ module }) => {
7
+ var ModuleCardParser = ({ mod }) => {
8
8
  switch (true) {
9
- case isArchivistInstance(module): {
10
- return /* @__PURE__ */ jsx(ArchivistCard, { module: asArchivistInstance(module) });
9
+ case isArchivistInstance(mod): {
10
+ return /* @__PURE__ */ jsx(ArchivistCard, { mod: asArchivistInstance(mod) });
11
11
  }
12
- case isDivinerInstance(module): {
13
- return /* @__PURE__ */ jsx(DivinerCard, { module: asDivinerInstance(module) });
12
+ case isDivinerInstance(mod): {
13
+ return /* @__PURE__ */ jsx(DivinerCard, { mod: asDivinerInstance(mod) });
14
14
  }
15
15
  default: {
16
- return /* @__PURE__ */ jsx(ModuleCard, { module });
16
+ return /* @__PURE__ */ jsx(ModuleCard, { mod });
17
17
  }
18
18
  }
19
19
  };
@@ -69,6 +69,7 @@ var generateIconMap = () => ({
69
69
  archivist: "",
70
70
  bridge: "",
71
71
  diviner: "",
72
+ // eslint-disable-next-line id-denylist
72
73
  module: "",
73
74
  node: "",
74
75
  sentinel: "",
@@ -101,20 +102,20 @@ import { isDivinerInstance as isDivinerInstance2 } from "@xyo-network/diviner-mo
101
102
  import { isNodeInstance } from "@xyo-network/node-model";
102
103
  import { isSentinelInstance } from "@xyo-network/sentinel-model";
103
104
  import { isWitnessModule } from "@xyo-network/witness-model";
104
- var parseModuleType = (module) => {
105
+ var parseModuleType = (mod) => {
105
106
  let type = "module";
106
- if (module) {
107
- if (isArchivistInstance2(module)) {
107
+ if (mod) {
108
+ if (isArchivistInstance2(mod)) {
108
109
  type = "archivist";
109
- } else if (isBridgeInstance(module)) {
110
+ } else if (isBridgeInstance(mod)) {
110
111
  type = "bridge";
111
- } else if (isDivinerInstance2(module)) {
112
+ } else if (isDivinerInstance2(mod)) {
112
113
  type = "diviner";
113
- } else if (isNodeInstance(module)) {
114
+ } else if (isNodeInstance(mod)) {
114
115
  type = "node";
115
- } else if (isSentinelInstance(module)) {
116
+ } else if (isSentinelInstance(mod)) {
116
117
  type = "sentinel";
117
- } else if (isWitnessModule(module)) {
118
+ } else if (isWitnessModule(mod)) {
118
119
  type = "witness";
119
120
  } else {
120
121
  type = "module";
@@ -136,13 +137,13 @@ var CytoscapeElements = {
136
137
  }
137
138
  };
138
139
  },
139
- async buildElements(module) {
140
- const info = await CytoscapeElements.recurseNodes(module);
140
+ async buildElements(mod) {
141
+ const info = await CytoscapeElements.recurseNodes(mod);
141
142
  const newElements = await this.buildElementsFromInfo(info, void 0, ["activeNode"]);
142
143
  return newElements;
143
144
  },
144
145
  async buildElementsFromInfo(info, root, classes = []) {
145
- const newNode = CytoscapeElements.buildNode(info.module, { childCount: info.children.length, depth: info.depth }, classes);
146
+ const newNode = CytoscapeElements.buildNode(info.mod, { childCount: info.children.length, depth: info.depth }, classes);
146
147
  const newEdge = root ? CytoscapeElements.buildEdge(root, newNode, { depth: info.depth, siblingCount: info.children.length }) : void 0;
147
148
  const newElements = [newNode];
148
149
  if (newEdge) {
@@ -153,21 +154,21 @@ var CytoscapeElements = {
153
154
  }
154
155
  return newElements;
155
156
  },
156
- buildNode(module, properties, classes) {
157
- const { address, id } = module;
157
+ buildNode(mod, properties, classes) {
158
+ const { address, id } = mod;
158
159
  return {
159
160
  classes,
160
161
  data: {
161
162
  address,
162
163
  id: address,
163
164
  name: id,
164
- type: parseModuleType(module),
165
+ type: parseModuleType(mod),
165
166
  ...properties
166
167
  }
167
168
  };
168
169
  },
169
- buildRootNode: (module) => {
170
- return CytoscapeElements.buildNode(module, {}, ["activeNode"]);
170
+ buildRootNode: (mod) => {
171
+ return CytoscapeElements.buildNode(mod, {}, ["activeNode"]);
171
172
  },
172
173
  normalizeName(name) {
173
174
  if (!name)
@@ -177,7 +178,7 @@ var CytoscapeElements = {
177
178
  return name;
178
179
  },
179
180
  async recurseNodes(root, maxDepth = 10, depth = 1) {
180
- const info = { children: [], depth, module: root };
181
+ const info = { children: [], depth, mod: root };
181
182
  if (maxDepth > 0) {
182
183
  const children = await root.resolve("*", { direction: "down", maxDepth: 1 });
183
184
  info.children = (await Promise.all(
@@ -206,6 +207,7 @@ var CyIconSet = {
206
207
  archivist: Inventory2RoundedIcon,
207
208
  bridge: InsertLinkRoundedIcon,
208
209
  diviner: BubbleChartRoundedIcon,
210
+ // eslint-disable-next-line id-denylist
209
211
  module: QuestionMarkRoundedIcon,
210
212
  node: HubIcon,
211
213
  sentinel: TimerRoundedIcon,
@@ -256,29 +258,29 @@ var EdgeStyled = (lineColor, targetArrowColor) => ({
256
258
  });
257
259
 
258
260
  // src/hooks/cytoscape/elements/useCytoscapeElements.ts
259
- var useCytoscapeElements = (module) => {
261
+ var useCytoscapeElements = (mod) => {
260
262
  const [elements, setElements] = useState2([]);
261
263
  useAsyncEffect(
262
264
  // eslint-disable-next-line react-hooks/exhaustive-deps
263
265
  async () => {
264
- const moduleInstance = module?.deref();
266
+ const moduleInstance = mod?.deref();
265
267
  if (moduleInstance) {
266
268
  const newElements = await CytoscapeElements.buildElements(moduleInstance) ?? [];
267
269
  setElements(newElements);
268
270
  }
269
271
  },
270
- [module]
272
+ [mod]
271
273
  );
272
274
  useEffect2(() => {
273
275
  let attachedListener;
274
276
  let detachedListener;
275
- if (module && isNodeInstance2(module)) {
276
- attachedListener = module.on("moduleAttached", async () => {
277
- const newElements = await CytoscapeElements.buildElements(module) ?? [];
277
+ if (mod && isNodeInstance2(mod)) {
278
+ attachedListener = mod.on("moduleAttached", async () => {
279
+ const newElements = await CytoscapeElements.buildElements(mod) ?? [];
278
280
  setElements(newElements);
279
281
  });
280
- detachedListener = module.on("moduleDetached", async () => {
281
- const newElements = await CytoscapeElements.buildElements(module) ?? [];
282
+ detachedListener = mod.on("moduleDetached", async () => {
283
+ const newElements = await CytoscapeElements.buildElements(mod) ?? [];
282
284
  setElements(newElements);
283
285
  });
284
286
  }
@@ -286,7 +288,7 @@ var useCytoscapeElements = (module) => {
286
288
  attachedListener?.();
287
289
  detachedListener?.();
288
290
  };
289
- }, [module]);
291
+ }, [mod]);
290
292
  return elements;
291
293
  };
292
294
 
@@ -321,8 +323,8 @@ var useNewElements = (selectedElement) => {
321
323
  const { address: selectedAddress2 } = selectedElement?.data() ?? {};
322
324
  return selectedAddress2;
323
325
  }, [selectedElement]);
324
- const [module] = useWeakModuleFromNode(selectedAddress);
325
- const newElements = useCytoscapeElements(module);
326
+ const [mod] = useWeakModuleFromNode(selectedAddress);
327
+ const newElements = useCytoscapeElements(mod);
326
328
  return newElements;
327
329
  };
328
330
 
@@ -484,17 +486,17 @@ var useModuleDetails = (rootModule, onFoundModule) => {
484
486
  }
485
487
  setModuleAddress(address);
486
488
  };
487
- return { module: foundModule, onModuleDetails };
489
+ return { mod: foundModule, onModuleDetails };
488
490
  };
489
491
 
490
492
  // src/hooks/cytoscape/useRelationalGraphOptions.tsx
491
493
  import { useState as useState7 } from "react";
492
- var useRelationalGraphOptions = (module) => {
494
+ var useRelationalGraphOptions = (mod) => {
493
495
  const [hideLabels, setHideLabels] = useState7(true);
494
496
  const handleToggleLabels = () => {
495
497
  setHideLabels((oldValue) => !oldValue);
496
498
  };
497
- const elements = useCytoscapeElements(module);
499
+ const elements = useCytoscapeElements(mod);
498
500
  const style = useCytoscapeStyle(hideLabels);
499
501
  const options = useCytoscapeOptions(elements, style, ConcentricLayout);
500
502
  return { handleToggleLabels, hideLabels, options };
@@ -521,8 +523,11 @@ var WithExtensions = ({ children }) => {
521
523
  };
522
524
 
523
525
  // src/components/relational/graph/Graph.tsx
524
- import { Button, ButtonGroup, useTheme as useTheme3 } from "@mui/material";
526
+ import { Box, Button, ButtonGroup, Card, CardHeader, Paper, useTheme as useTheme3 } from "@mui/material";
527
+ import { asAddress } from "@xylabs/hex";
525
528
  import { FlexCol, FlexGrowRow, FlexRow } from "@xylabs/react-flexbox";
529
+ import { Identicon } from "@xylabs/react-identicon";
530
+ import { useWeakModuleFromNode as useWeakModuleFromNode2 } from "@xyo-network/react-node";
526
531
  import cytoscape2 from "cytoscape";
527
532
  import cola2 from "cytoscape-cola";
528
533
  import coseBilkentLayout from "cytoscape-cose-bilkent";
@@ -553,12 +558,42 @@ var loadLayout = (layout = "cola") => {
553
558
  }
554
559
  }
555
560
  };
561
+ var ModuleHoverDetails = ({ name, address, ...props }) => {
562
+ return /* @__PURE__ */ jsx5(Card, { elevation: 3, ...props, children: /* @__PURE__ */ jsx5(
563
+ CardHeader,
564
+ {
565
+ avatar: /* @__PURE__ */ jsx5(Paper, { elevation: 6, sx: { bgcolor: "#fff", p: 1 }, children: /* @__PURE__ */ jsx5(Identicon, { value: address, size: 24 }) }),
566
+ title: name,
567
+ subheader: address
568
+ }
569
+ ) });
570
+ };
556
571
  var NodeRelationalGraphFlexBox = forwardRef(
557
- ({ actions, children, layout, layoutOptions, showDetails, detail, options, ...props }, ref) => {
572
+ ({ actions, children, node, layout, layoutOptions, showDetails, detail, options, onHover, ...props }, ref) => {
558
573
  const theme = useTheme3();
559
574
  const [cy, setCy] = useState9();
560
- const { setCy: setCyContext } = useCytoscapeInstance();
561
575
  const cytoscapeRef = useRef();
576
+ const [hoverPosition, setHoverBoundingBox] = useState9();
577
+ const [hoverAddress, setHoverAddress] = useState9();
578
+ const [moduleInstance] = useWeakModuleFromNode2(hoverAddress, { node });
579
+ useEffect7(() => {
580
+ cy?.on("mouseover tap", ({ target }) => {
581
+ const cyNode = target;
582
+ const bb = cyNode?.renderedBoundingBox?.();
583
+ console.log(bb);
584
+ setHoverBoundingBox(bb);
585
+ const id = cyNode.id?.();
586
+ if (id) {
587
+ if (id.includes("/")) {
588
+ setHoverAddress(void 0);
589
+ onHover?.();
590
+ } else {
591
+ setHoverAddress(asAddress(id));
592
+ onHover?.(asAddress(id));
593
+ }
594
+ }
595
+ });
596
+ }, [onHover, cy]);
562
597
  const handleReset = () => {
563
598
  cy?.reset();
564
599
  applyLayout(cy, layout ?? "euler", layoutOptions);
@@ -584,10 +619,8 @@ var NodeRelationalGraphFlexBox = forwardRef(
584
619
  applyLayout(cy, layout ?? "euler", layoutOptions);
585
620
  }
586
621
  }, [cy, layoutOptions, layout]);
587
- useEffect7(() => {
588
- setCyContext?.(cy ? new WeakRef(cy) : void 0);
589
- }, [cy, setCyContext]);
590
622
  return /* @__PURE__ */ jsxs(FlexCol, { id: "relational-graph-wrapper", ref, ...props, children: [
623
+ hoverAddress && hoverPosition ? /* @__PURE__ */ jsx5(Box, { position: "absolute", top: hoverPosition.y1, left: hoverPosition.x1, zIndex: 100, children: /* @__PURE__ */ jsx5(ModuleHoverDetails, { address: hoverAddress, name: moduleInstance?.deref()?.id ?? "Unknown" }) }) : null,
591
624
  /* @__PURE__ */ jsx5(FlexRow, { justifyContent: "start", width: "100%", children: actions === null ? null : actions ? /* @__PURE__ */ jsxs(ButtonGroup, { children: [
592
625
  actions,
593
626
  /* @__PURE__ */ jsx5(Button, { size: "small", variant: "contained", onClick: handleReset, children: "Reset View" })
@@ -627,12 +660,12 @@ var ProvidedNodeRenderer = ({ node, ...props }) => {
627
660
 
628
661
  // src/components/module/graph/DetailsFlexbox.tsx
629
662
  import { CancelRounded } from "@mui/icons-material";
630
- import { IconButton } from "@mui/material";
663
+ import { IconButton as IconButton2 } from "@mui/material";
631
664
  import { FlexGrowCol, FlexRow as FlexRow2 } from "@xylabs/react-flexbox";
632
665
  import { jsx as jsx7, jsxs as jsxs2 } from "react/jsx-runtime";
633
666
  var DetailsFlexbox = ({ children, onClose }) => {
634
667
  return /* @__PURE__ */ jsxs2(FlexGrowCol, { alignItems: "end", justifyContent: "start", id: "module-detail", width: "100%", p: 2, gap: 2, children: [
635
- /* @__PURE__ */ jsx7(FlexRow2, { justifyContent: "end", children: /* @__PURE__ */ jsx7(IconButton, { onClick: onClose, size: "small", children: /* @__PURE__ */ jsx7(CancelRounded, {}) }) }),
668
+ /* @__PURE__ */ jsx7(FlexRow2, { justifyContent: "end", children: /* @__PURE__ */ jsx7(IconButton2, { onClick: onClose, size: "small", children: /* @__PURE__ */ jsx7(CancelRounded, {}) }) }),
636
669
  children
637
670
  ] });
638
671
  };
@@ -689,17 +722,17 @@ var StyledNodeGhostElementFlexCol = styled(FlexCol2, { name: "StyledNodeGhostEle
689
722
 
690
723
  // src/components/module/graph/Popper.tsx
691
724
  import { CancelRounded as CancelRounded2 } from "@mui/icons-material";
692
- import { Button as Button2, Card, CardActions, CardHeader, IconButton as IconButton2, Paper, Popper, styled as styled2 } from "@mui/material";
693
- import { Identicon } from "@xylabs/react-identicon";
725
+ import { Button as Button2, Card as Card2, CardActions, CardHeader as CardHeader2, IconButton as IconButton3, Paper as Paper2, Popper, styled as styled2 } from "@mui/material";
726
+ import { Identicon as Identicon2 } from "@xylabs/react-identicon";
694
727
  import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
695
728
  var ModuleHoverPopper = ({ anchorEl, onClose, onModuleDetails, onModuleExplore, node, ...props }) => {
696
729
  const { address, name } = node?.data() ?? {};
697
- return /* @__PURE__ */ jsx9(Fragment3, { children: anchorEl ? /* @__PURE__ */ jsx9(Popper, { anchorEl, ...props, children: /* @__PURE__ */ jsxs4(Card, { elevation: 3, children: [
730
+ return /* @__PURE__ */ jsx9(Fragment3, { children: anchorEl ? /* @__PURE__ */ jsx9(Popper, { anchorEl, ...props, children: /* @__PURE__ */ jsxs4(Card2, { elevation: 3, children: [
698
731
  /* @__PURE__ */ jsx9(
699
- CardHeader,
732
+ CardHeader2,
700
733
  {
701
- action: onClose ? /* @__PURE__ */ jsx9(IconButton2, { size: "small", onClick: onClose, children: /* @__PURE__ */ jsx9(CancelRounded2, {}) }) : null,
702
- avatar: /* @__PURE__ */ jsx9(Paper, { elevation: 6, sx: { bgcolor: "#fff", p: 1 }, children: /* @__PURE__ */ jsx9(Identicon, { value: address, size: 24 }) }),
734
+ action: onClose ? /* @__PURE__ */ jsx9(IconButton3, { size: "small", onClick: onClose, children: /* @__PURE__ */ jsx9(CancelRounded2, {}) }) : null,
735
+ avatar: /* @__PURE__ */ jsx9(Paper2, { elevation: 6, sx: { bgcolor: "#fff", p: 1 }, children: /* @__PURE__ */ jsx9(Identicon2, { value: address, size: 24 }) }),
703
736
  title: name,
704
737
  subheader: address
705
738
  }
@@ -724,12 +757,12 @@ var ModuleGraphFlexBox = ({ hideActions, rootModule, disableModuleDetails, ...pr
724
757
  const cytoscapeRef = useRef3(null);
725
758
  const { handleToggleLabels, hideLabels, options } = useRelationalGraphOptions(rootModule ?? void 0);
726
759
  const { hoveredNode, setHoveredNode, toggleSelectedElement } = useElements(hideLabels);
727
- const { module, onModuleDetails } = useModuleDetails(rootModule, () => setHoveredNode(void 0));
760
+ const { mod, onModuleDetails } = useModuleDetails(rootModule, () => setHoveredNode(void 0));
728
761
  return /* @__PURE__ */ jsx10(WithExtensions, { children: /* @__PURE__ */ jsx10(
729
762
  NodeRelationalGraphFlexBox,
730
763
  {
731
- actions: module ? null : hideActions ? null : /* @__PURE__ */ jsx10(Button3, { size: "small", onClick: handleToggleLabels, variant: "contained", children: "Toggle Labels" }),
732
- showDetails: !!module,
764
+ actions: mod ? null : hideActions ? null : /* @__PURE__ */ jsx10(Button3, { size: "small", onClick: handleToggleLabels, variant: "contained", children: "Toggle Labels" }),
765
+ showDetails: !!mod,
733
766
  detail: /* @__PURE__ */ jsx10(DetailsFlexbox, { onClose: () => onModuleDetails(null) }),
734
767
  options,
735
768
  ref: cytoscapeRef,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/module/CardParser.tsx","../../src/components/module/graph/GraphFlexBox.tsx","../../src/contexts/CytoscapeInstance/Context.ts","../../src/contexts/CytoscapeInstance/Provider.tsx","../../src/contexts/CytoscapeInstance/use.ts","../../src/hooks/cytoscape/elements/useCytoscapeElements.ts","../../src/Cytoscape/CytoscapeElements.ts","../../src/Cytoscape/lib/encodeSvg.ts","../../src/Cytoscape/lib/iconMap.ts","../../src/Cytoscape/lib/layout/ColaLayout.ts","../../src/Cytoscape/lib/layout/ConcentricLayout.ts","../../src/Cytoscape/lib/parseModuleType.ts","../../src/Cytoscape/CytoscapeIcons.tsx","../../src/Cytoscape/CytoscapeStyles.ts","../../src/hooks/cytoscape/elements/useHoveredNode.tsx","../../src/hooks/cytoscape/elements/useNewElements.tsx","../../src/hooks/cytoscape/elements/useRenderNewElements.tsx","../../src/hooks/cytoscape/elements/useSelectedElement.tsx","../../src/hooks/cytoscape/elements/useElements.tsx","../../src/hooks/cytoscape/useCytoscapeOptions.ts","../../src/hooks/cytoscape/useCytoscapeStyle.tsx","../../src/hooks/cytoscape/useIcons.tsx","../../src/hooks/cytoscape/useModuleDetails.tsx","../../src/hooks/cytoscape/useRelationalGraphOptions.tsx","../../src/components/cytoscape-extensions/WithExtensions.tsx","../../src/components/relational/graph/Graph.tsx","../../src/components/relational/graph/ProvidedNodeRenderer.tsx","../../src/components/module/graph/DetailsFlexbox.tsx","../../src/components/module/graph/node/Hover.tsx","../../src/components/module/graph/node/hooks/useNodeElement.tsx","../../src/components/module/graph/Popper.tsx"],"sourcesContent":["import { asArchivistInstance, isArchivistInstance } from '@xyo-network/archivist-model'\nimport { asDivinerInstance, isDivinerInstance } from '@xyo-network/diviner-model'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { ArchivistCard } from '@xyo-network/react-archivist'\nimport { DivinerCard, ModuleCard } from '@xyo-network/react-module'\n\nexport interface ModuleCardParserProps {\n module?: ModuleInstance\n}\n\nexport const ModuleCardParser: React.FC<ModuleCardParserProps> = ({ module }) => {\n switch (true) {\n case isArchivistInstance(module): {\n return <ArchivistCard module={asArchivistInstance(module)} />\n }\n case isDivinerInstance(module): {\n return <DivinerCard module={asDivinerInstance(module)} />\n }\n default: {\n return <ModuleCard module={module} />\n }\n }\n}\n","import { Button } from '@mui/material'\nimport { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useRef } from 'react'\n\nimport { CytoscapeInstanceProvider } from '../../../contexts'\nimport { useElements, useModuleDetails, useRelationalGraphOptions } from '../../../hooks'\nimport { WithExtensions } from '../../cytoscape-extensions'\nimport { NodeRelationalGraphFlexBox } from '../../relational'\nimport { DetailsFlexbox } from './DetailsFlexbox'\nimport { ModuleGraphNodeHover } from './node'\nimport { StyledModuleHoverPopper } from './Popper'\n\nexport interface ModuleGraphFlexBoxProps extends FlexBoxProps {\n disableModuleDetails?: boolean\n hideActions?: boolean\n layout?: 'dagre' | 'euler' | 'cose-bilkent' | 'cola'\n layoutOptions?: object\n rootModule?: WeakRef<ModuleInstance> | null\n}\n\nexport const ModuleGraphFlexBox: React.FC<ModuleGraphFlexBoxProps> = ({ hideActions, rootModule, disableModuleDetails, ...props }) => {\n const cytoscapeRef = useRef<HTMLDivElement>(null)\n const { handleToggleLabels, hideLabels, options } = useRelationalGraphOptions(rootModule ?? undefined)\n const { hoveredNode, setHoveredNode, toggleSelectedElement } = useElements(hideLabels)\n\n const { module, onModuleDetails } = useModuleDetails(rootModule, () => setHoveredNode(undefined))\n\n return (\n <WithExtensions>\n <NodeRelationalGraphFlexBox\n actions={\n module ? null\n : hideActions ?\n null\n : <Button size={'small'} onClick={handleToggleLabels} variant=\"contained\">\n Toggle Labels\n </Button>\n\n }\n showDetails={!!module}\n detail={<DetailsFlexbox onClose={() => onModuleDetails(null)} />}\n options={options}\n ref={cytoscapeRef}\n width=\"100%\"\n {...props}\n >\n <ModuleGraphNodeHover node={hoveredNode}>\n {(element) => (\n <StyledModuleHoverPopper\n anchorEl={element}\n container={cytoscapeRef.current}\n node={hoveredNode}\n onClose={() => setHoveredNode(undefined)}\n onModuleExplore={toggleSelectedElement}\n onModuleDetails={disableModuleDetails ? undefined : onModuleDetails}\n placement={'top'}\n open\n />\n )}\n </ModuleGraphNodeHover>\n </NodeRelationalGraphFlexBox>\n </WithExtensions>\n )\n}\n\nexport const ModuleGraphFlexBoxWithProvider: React.FC<ModuleGraphFlexBoxProps> = (props) => {\n return (\n <CytoscapeInstanceProvider>\n <ModuleGraphFlexBox {...props} />\n </CytoscapeInstanceProvider>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceState } from './State'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\n","import type { WithChildren } from '@xylabs/react-shared'\nimport { Core } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { CytoscapeInstanceContext } from './Context'\n\nexport interface CytoscapeInstanceProviderProps extends WithChildren {\n defaultInstance?: WeakRef<Core>\n}\n\nexport const CytoscapeInstanceProvider: React.FC<CytoscapeInstanceProviderProps> = ({ children, defaultInstance }) => {\n const [cy, setCy] = useState<WeakRef<Core> | undefined>(defaultInstance)\n useEffect(() => {\n setCy(defaultInstance)\n }, [defaultInstance])\n\n return <CytoscapeInstanceContext.Provider value={{ cy, provided: true, setCy }}>{children}</CytoscapeInstanceContext.Provider>\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceContext } from './Context'\n\nexport const useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, 'CytoscapeInstance', required)\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { EventUnsubscribeFunction } from '@xyo-network/module-events'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { ElementDefinition } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { CytoscapeElements } from '../../../Cytoscape'\n\nexport const useCytoscapeElements = (module?: WeakRef<ModuleInstance> | null) => {\n const [elements, setElements] = useState<ElementDefinition[]>([])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n const moduleInstance = module?.deref()\n if (moduleInstance) {\n const newElements = (await CytoscapeElements.buildElements(moduleInstance)) ?? []\n setElements(newElements)\n }\n },\n [module],\n )\n\n useEffect(() => {\n let attachedListener: EventUnsubscribeFunction | undefined\n let detachedListener: EventUnsubscribeFunction | undefined\n\n if (module && isNodeInstance(module)) {\n attachedListener = module.on('moduleAttached', async () => {\n const newElements = (await CytoscapeElements.buildElements(module)) ?? []\n setElements(newElements)\n })\n detachedListener = module.on('moduleDetached', async () => {\n const newElements = (await CytoscapeElements.buildElements(module)) ?? []\n setElements(newElements)\n })\n }\n\n return () => {\n attachedListener?.()\n detachedListener?.()\n }\n }, [module])\n\n return elements\n}\n","import { exists } from '@xylabs/exists'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { ElementDefinition } from 'cytoscape'\n\nimport { parseModuleType } from './lib'\n\ninterface ModuleInfo {\n children: ModuleInfo[]\n depth: number\n module: ModuleInstance\n}\n\nexport const CytoscapeElements = {\n MaxNameLength: 20,\n\n buildEdge(rootNode: ElementDefinition, newNode: ElementDefinition, properties?: { [key: string]: unknown }) {\n return {\n data: {\n id: `${rootNode.data.id}/${newNode.data.id}`,\n source: rootNode.data.id,\n target: newNode.data.id,\n ...properties,\n },\n }\n },\n\n async buildElements(module: ModuleInstance): Promise<ElementDefinition[]> {\n const info = await CytoscapeElements.recurseNodes(module)\n const newElements: ElementDefinition[] = await this.buildElementsFromInfo(info, undefined, ['activeNode'])\n\n return newElements\n },\n\n async buildElementsFromInfo(info: ModuleInfo, root?: ElementDefinition, classes: string[] = []): Promise<ElementDefinition[]> {\n const newNode = CytoscapeElements.buildNode(info.module, { childCount: info.children.length, depth: info.depth }, classes)\n const newEdge = root ? CytoscapeElements.buildEdge(root, newNode, { depth: info.depth, siblingCount: info.children.length }) : undefined\n const newElements: ElementDefinition[] = [newNode]\n if (newEdge) {\n newElements.push(newEdge)\n }\n\n for (const childInfo of info.children) {\n newElements.push(...(await this.buildElementsFromInfo(childInfo, newNode)))\n }\n\n return newElements\n },\n\n buildNode(module: ModuleInstance, properties?: { [key: string]: unknown }, classes?: string[]): ElementDefinition {\n const { address, id } = module\n return {\n classes,\n data: {\n address,\n id: address,\n name: id,\n type: parseModuleType(module),\n ...properties,\n },\n }\n },\n\n buildRootNode: (module: ModuleInstance): ElementDefinition => {\n return CytoscapeElements.buildNode(module, {}, ['activeNode'])\n },\n\n normalizeName(name?: string) {\n if (!name) return\n if (name.length > this.MaxNameLength) return `${name.slice(0, 20)}...`\n return name\n },\n\n async recurseNodes(root: ModuleInstance, maxDepth = 10, depth = 1): Promise<ModuleInfo> {\n const info: ModuleInfo = { children: [], depth, module: root }\n\n if (maxDepth > 0) {\n const children = await root.resolve('*', { direction: 'down', maxDepth: 1 })\n info.children = (\n await Promise.all(\n children.map(async (child) => {\n // don't re add the root module that was passed in\n if (child.address !== root.address) {\n return await this.recurseNodes(child, maxDepth - 1, depth + 1)\n }\n }),\n )\n ).filter(exists)\n }\n\n return info\n },\n}\n","import { ReactElement } from 'react'\n// eslint-disable-next-line import/no-internal-modules\nimport { renderToStaticMarkup } from 'react-dom/server'\n\nconst dataUri = 'data:image/svg+xml,'\n\nexport const encodeSvg = (reactElement: ReactElement, color?: string) => {\n const svgString = renderToStaticMarkup(reactElement)\n\n const doc = new DOMParser().parseFromString(svgString, 'text/html')\n const svgElement = doc.querySelectorAll('svg')[0]\n if (svgElement) {\n svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n svgElement.setAttribute('height', '100')\n svgElement.style.fill = color ?? 'black'\n }\n\n return `${dataUri}${window.encodeURIComponent(svgElement.outerHTML)}`\n}\n","import { CyNodeModuleTypes } from './CyNodeModuleTypes'\n\nexport const generateIconMap: () => Record<CyNodeModuleTypes, string> = () => ({\n archivist: '',\n bridge: '',\n diviner: '',\n module: '',\n node: '',\n sentinel: '',\n witness: '',\n})\n","export const ColaLayout = {\n centerGraph: false,\n convergenceThreshold: 0.01,\n name: 'cola',\n}\n","import { LayoutOptions } from 'cytoscape'\n\nexport const ConcentricLayout: LayoutOptions = {\n concentric: function (node) {\n return node.degree()\n },\n levelWidth: function () {\n return 2\n },\n minNodeSpacing: 75,\n name: 'concentric',\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessModule } from '@xyo-network/witness-model'\n\nimport { CyNodeModuleTypes } from './CyNodeModuleTypes'\n\nexport const parseModuleType = (module?: ModuleInstance): CyNodeModuleTypes => {\n let type: CyNodeModuleTypes = 'module'\n if (module) {\n if (isArchivistInstance(module)) {\n type = 'archivist'\n } else if (isBridgeInstance(module)) {\n type = 'bridge'\n } else if (isDivinerInstance(module)) {\n type = 'diviner'\n } else if (isNodeInstance(module)) {\n type = 'node'\n } else if (isSentinelInstance(module)) {\n type = 'sentinel'\n } else if (isWitnessModule(module)) {\n type = 'witness'\n } else {\n type = 'module'\n }\n }\n return type\n}\n","import {\n BubbleChartRounded as BubbleChartRoundedIcon,\n Hub as HubIcon,\n InsertLinkRounded as InsertLinkRoundedIcon,\n Inventory2Rounded as Inventory2RoundedIcon,\n QuestionMarkRounded as QuestionMarkRoundedIcon,\n TimerRounded as TimerRoundedIcon,\n VisibilityRounded as VisibilityRoundedIcon,\n} from '@mui/icons-material'\nimport { SvgIconTypeMap } from '@mui/material'\n// eslint-disable-next-line import/no-internal-modules\nimport { OverridableComponent } from '@mui/material/OverridableComponent'\n\nimport { CyNodeModuleTypes } from './lib'\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const CyIconSet: Record<CyNodeModuleTypes, OverridableComponent<SvgIconTypeMap<{}, 'svg'>>> = {\n archivist: Inventory2RoundedIcon,\n bridge: InsertLinkRoundedIcon,\n diviner: BubbleChartRoundedIcon,\n module: QuestionMarkRoundedIcon,\n node: HubIcon,\n sentinel: TimerRoundedIcon,\n witness: VisibilityRoundedIcon,\n}\n","import { Stylesheet } from 'cytoscape'\n\nimport { CyNodeModuleTypes } from './lib'\n\nexport const NodeWithName = (color?: string, outlineColor?: string): Stylesheet => ({\n selector: 'node[name]',\n style: {\n color,\n 'font-family': 'Lexend Deca, Helvetica, sans-serif',\n 'font-size': 12,\n 'overlay-padding': '6px',\n 'text-halign': 'center',\n 'text-outline-color': outlineColor,\n 'text-outline-width': '1px',\n 'text-valign': 'top',\n },\n})\n\nexport const Node = (icons: Record<CyNodeModuleTypes, string>, bgColor?: string, hideLabels = false): Stylesheet => ({\n selector: 'node',\n style: {\n 'background-color': bgColor,\n 'background-height': '75%',\n 'background-image': (elem) => icons[elem.data('type') as CyNodeModuleTypes],\n 'background-width': '24',\n label: hideLabels ? undefined : 'data(name)',\n shape: 'round-rectangle',\n },\n})\n\nexport const NodeAsRoot = (bgColor?: string) => ({\n selector: '.activeNode',\n style: {\n 'background-color': bgColor,\n },\n})\n\nexport const EdgeStyled = (lineColor?: string, targetArrowColor?: string) => ({\n selector: 'edge',\n style: {\n 'curve-style': 'bezier',\n 'line-color': lineColor,\n 'line-opacity': 0.1,\n 'target-arrow-color': targetArrowColor,\n 'target-arrow-shape': 'triangle',\n width: 3,\n },\n})\n","import { NodeCollection, NodeSingular } from 'cytoscape'\nimport { Dispatch, SetStateAction, useCallback, useEffect, useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts'\n\nexport const useHoveredNode = (renderedElements?: NodeCollection): [NodeSingular | undefined, Dispatch<SetStateAction<NodeSingular | undefined>>] => {\n const { cy } = useCytoscapeInstance(true)\n const [hoveredNode, setHoveredNode] = useState<NodeSingular>()\n\n const nodeListener = useCallback((node: NodeSingular) => {\n node.on('mouseover tap', () => {\n setHoveredNode(node)\n })\n }, [])\n\n useEffect(() => {\n if (renderedElements) {\n // eslint-disable-next-line unicorn/no-array-for-each\n renderedElements.nodes().forEach(nodeListener)\n }\n }, [nodeListener, renderedElements])\n\n useEffect(() => {\n cy?.deref()?.ready(() => {\n // eslint-disable-next-line unicorn/no-array-for-each\n cy?.deref()?.nodes().forEach(nodeListener)\n })\n }, [cy, nodeListener])\n\n return [hoveredNode, setHoveredNode]\n}\n","import { useWeakModuleFromNode } from '@xyo-network/react-node'\nimport { NodeSingular } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { useCytoscapeElements } from './useCytoscapeElements'\n\nexport const useNewElements = (selectedElement?: NodeSingular) => {\n const selectedAddress = useMemo(() => {\n const { address: selectedAddress } = selectedElement?.data() ?? {}\n return selectedAddress\n }, [selectedElement])\n\n const [module] = useWeakModuleFromNode(selectedAddress)\n const newElements = useCytoscapeElements(module)\n\n return newElements\n}\n","import { CollectionReturnValue, ElementDefinition } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts'\nimport { ColaLayout } from '../../../Cytoscape'\n\nexport const useRenderNewElements = (newElements: ElementDefinition[] = [], hideLabels?: boolean) => {\n const { cy } = useCytoscapeInstance(true)\n const [renderedElements, setRenderedElements] = useState<CollectionReturnValue>()\n\n useEffect(() => {\n if (newElements.length > 1) {\n const renderedElements = cy?.deref()?.add(newElements)\n setRenderedElements(renderedElements)\n cy?.deref()?.layout(ColaLayout).run()\n }\n }, [cy, hideLabels, newElements])\n\n return renderedElements\n}\n","import { NodeSingular } from 'cytoscape'\nimport { useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts'\n\nexport const useSelectedElement = () => {\n const [selectedElement, setSelectedElement] = useState<NodeSingular>()\n const { cy } = useCytoscapeInstance(true)\n\n const updateStyles = (element: NodeSingular) => {\n const nodes = cy?.deref()?.nodes()\n nodes?.toggleClass('activeNode', false)\n element.toggleClass('activeNode', true)\n }\n\n const toggleSelectedElement = (address?: string) => {\n const selectedNode = cy?.deref()?.nodes(`[id=\"${address}\"]`)?.[0]\n if (selectedNode) {\n setSelectedElement(selectedNode)\n updateStyles(selectedNode)\n }\n }\n\n return { selectedElement, toggleSelectedElement }\n}\n","import { useHoveredNode } from './useHoveredNode'\nimport { useNewElements } from './useNewElements'\nimport { useRenderNewElements } from './useRenderNewElements'\nimport { useSelectedElement } from './useSelectedElement'\n\nexport const useElements = (hideLabels: boolean) => {\n const { selectedElement, toggleSelectedElement } = useSelectedElement()\n const newElements = useNewElements(selectedElement)\n const renderedElements = useRenderNewElements(newElements, hideLabels)\n const [hoveredNode, setHoveredNode] = useHoveredNode(renderedElements)\n\n return { hoveredNode, setHoveredNode, toggleSelectedElement }\n}\n","import { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape'\nimport { useCytoscapeStyle } from './useCytoscapeStyle'\n\nexport const useCytoscapeOptions = (\n elements: CytoscapeOptions['elements'],\n style?: CytoscapeOptions['style'],\n layout?: CytoscapeOptions['layout'],\n) => {\n const defaultStyle = useCytoscapeStyle()\n\n const resolvedLayout = layout ?? ConcentricLayout\n const resolvedStyle = style ?? defaultStyle\n\n const options = useMemo<CytoscapeOptions | undefined>(() => {\n if (elements && resolvedLayout && resolvedStyle) {\n return {\n elements,\n layout: resolvedLayout,\n style: resolvedStyle,\n }\n }\n }, [elements, layout, style])\n\n return options\n}\n","import { useTheme } from '@mui/material'\nimport { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { EdgeStyled, Node, NodeAsRoot, NodeWithName } from '../../Cytoscape'\nimport { useIcons } from './useIcons'\n\nexport const useCytoscapeStyle = (hideLabels = false) => {\n const theme = useTheme()\n const icons = useIcons()\n\n const style: CytoscapeOptions['style'] = useMemo(\n () => [\n Node(icons, theme.palette.primary.main, hideLabels),\n NodeWithName(theme.palette.text.primary, theme.palette.getContrastText(theme.palette.text.primary)),\n NodeAsRoot(theme.palette.secondary.main),\n EdgeStyled(theme.palette.divider, theme.palette.divider),\n ],\n [icons, hideLabels, theme],\n )\n\n return style\n}\n","import { useTheme } from '@mui/material'\nimport { useMemo } from 'react'\n\nimport { CyIconSet, CyNodeModuleTypes, encodeSvg, generateIconMap } from '../../Cytoscape'\n\nexport const useIcons = () => {\n const theme = useTheme()\n const icons = useMemo(() => {\n const iconMap = generateIconMap()\n // eslint-disable-next-line unicorn/no-array-reduce\n return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {\n const icon = <IconComponent fontSize=\"small\" />\n acc[name as CyNodeModuleTypes] = encodeSvg(icon, theme.palette.getContrastText(theme.palette.text.primary))\n return acc\n }, iconMap)\n }, [theme.palette])\n\n return icons\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useEffect, useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../contexts'\n\nexport const useModuleDetails = (rootModule?: WeakRef<ModuleInstance> | null, onFoundModule?: () => void) => {\n const { cy } = useCytoscapeInstance()\n const [moduleAddress, setModuleAddress] = useState<string | null>()\n\n const [foundModule] = usePromise(async () => {\n if (moduleAddress === null) return null\n const rootModuleInstance = rootModule?.deref()\n if (moduleAddress && rootModuleInstance) {\n const foundModule = await rootModuleInstance.resolve(moduleAddress)\n return foundModule ?? null\n }\n }, [moduleAddress, rootModule])\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n if (moduleAddress === null) {\n // cytoscape tries to center prematurely without it :(\n setTimeout(() => {\n cy?.deref()?.center()\n }, 100)\n } else if (foundModule && cy) {\n const node = cy?.deref()?.nodes(`[id=\"${moduleAddress}\"]`)?.[0]\n // cy.pan(newPan)\n // cytoscape tries to center prematurely without it :(\n setTimeout(() => {\n cy?.deref()?.center(node)\n }, 100)\n }\n })\n\n const container = cy?.deref()?.container()\n if (container) {\n resizeObserver.observe(container)\n }\n\n return () => {\n if (container) resizeObserver.unobserve(container)\n }\n }, [cy, moduleAddress, foundModule, rootModule])\n\n useEffect(() => {\n if (foundModule) {\n onFoundModule?.()\n }\n }, [cy, moduleAddress, foundModule, onFoundModule])\n\n const onModuleDetails = (address?: string | null) => {\n const moduleNode = cy?.deref()?.nodes(`[id=\"${address}\"]`)\n const rootModuleNode = cy?.deref()?.nodes(`[id=\"${rootModule?.deref()?.address}\"]`)\n const foundModuleNode = cy?.deref()?.nodes(`[id=\"${foundModule?.address}\"]`)\n const notModuleNode = cy?.deref()?.nodes(`[id != \"${address}\"]`)\n\n if (address) {\n // address was passed so we set the node to active styles\n moduleNode?.toggleClass('activeNode', true)\n notModuleNode?.toggleClass('activeNode', false)\n } else {\n // no address was passes so we reset the state\n notModuleNode?.toggleClass('activeNode', false)\n const activeNode = foundModuleNode?.length ? foundModuleNode : rootModuleNode\n activeNode?.toggleClass('activeNode', true)\n }\n setModuleAddress(address)\n }\n\n return { module: foundModule, onModuleDetails }\n}\n","import { ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape'\nimport { useCytoscapeElements } from './elements'\nimport { useCytoscapeOptions } from './useCytoscapeOptions'\nimport { useCytoscapeStyle } from './useCytoscapeStyle'\n\nexport const useRelationalGraphOptions = (module?: WeakRef<ModuleInstance>) => {\n const [hideLabels, setHideLabels] = useState(true)\n\n const handleToggleLabels = () => {\n setHideLabels((oldValue) => !oldValue)\n }\n\n const elements = useCytoscapeElements(module)\n const style = useCytoscapeStyle(hideLabels)\n const options = useCytoscapeOptions(elements, style, ConcentricLayout)\n\n return { handleToggleLabels, hideLabels, options }\n}\n","import cytoscape from 'cytoscape'\nimport cola from 'cytoscape-cola'\nimport coseBilkent from 'cytoscape-cose-bilkent'\nimport dagre from 'cytoscape-dagre'\nimport euler from 'cytoscape-euler'\nimport { PropsWithChildren, useEffect, useState } from 'react'\n\nexport const WithExtensions: React.FC<PropsWithChildren> = ({ children }) => {\n const [initialized, setInitialized] = useState(false)\n useEffect(() => {\n cytoscape.use(cola)\n cytoscape.use(dagre)\n cytoscape.use(coseBilkent)\n cytoscape.use(euler)\n setInitialized(true)\n }, [])\n\n return <>{initialized ? children : undefined}</>\n}\n","import { Button, ButtonGroup, useTheme } from '@mui/material'\nimport { FlexCol, FlexGrowRow, FlexRow } from '@xylabs/react-flexbox'\nimport cytoscape, { Core } from 'cytoscape'\nimport cola from 'cytoscape-cola'\nimport coseBilkentLayout from 'cytoscape-cose-bilkent'\nimport dagre from 'cytoscape-dagre'\nimport eulerLayout from 'cytoscape-euler'\nimport { forwardRef, useEffect, useRef, useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts'\nimport { NodeRelationalGraphProps } from '../../lib'\n\nconst applyLayout = (cy?: cytoscape.Core, name = 'cola', options?: object) => {\n cy?.layout({ name, ...options }).run()\n}\n\nconst loadLayout = (layout = 'cola') => {\n switch (layout) {\n case 'dagre': {\n cytoscape.use(dagre)\n break\n }\n case 'euler': {\n cytoscape.use(eulerLayout)\n break\n }\n case 'cose-bilkent': {\n cytoscape.use(coseBilkentLayout)\n break\n }\n case 'cola': {\n cytoscape.use(cola)\n break\n }\n }\n}\n\nexport const NodeRelationalGraphFlexBox = forwardRef<HTMLDivElement, NodeRelationalGraphProps>(\n ({ actions, children, layout, layoutOptions, showDetails, detail, options, ...props }, ref) => {\n const theme = useTheme()\n const [cy, setCy] = useState<Core>()\n const { setCy: setCyContext } = useCytoscapeInstance()\n const cytoscapeRef = useRef<HTMLDivElement>()\n\n const handleReset = () => {\n cy?.reset()\n applyLayout(cy, layout ?? 'euler', layoutOptions)\n }\n\n useEffect(() => {\n let newCy: Core | undefined\n const container = cytoscapeRef.current\n if (container) {\n newCy = cytoscape({\n container,\n ...options,\n })\n setCy(newCy)\n }\n return () => {\n newCy?.destroy()\n setCy(undefined)\n }\n }, [options, cytoscapeRef, layoutOptions])\n\n useEffect(() => {\n if (cy) {\n loadLayout(layout)\n applyLayout(cy, layout ?? 'euler', layoutOptions)\n }\n }, [cy, layoutOptions, layout])\n\n useEffect(() => {\n setCyContext?.(cy ? new WeakRef(cy) : undefined)\n }, [cy, setCyContext])\n\n return (\n <FlexCol id=\"relational-graph-wrapper\" ref={ref} {...props}>\n <FlexRow justifyContent=\"start\" width=\"100%\">\n {actions === null ?\n null\n : actions ?\n <ButtonGroup>\n {actions}\n <Button size={'small'} variant={'contained'} onClick={handleReset}>\n Reset View\n </Button>\n </ButtonGroup>\n : <Button size={'small'} variant={'contained'} onClick={handleReset}>\n Reset\n </Button>\n }\n </FlexRow>\n <FlexGrowRow width=\"100%\" alignItems=\"start\">\n {showDetails ?\n <FlexCol height=\"100%\" width={'85%'}>\n {detail}\n </FlexCol>\n : null}\n <FlexCol\n justifyContent=\"start\"\n classes=\"cytoscape-wrap\"\n width={showDetails ? '15%' : '100%'}\n height={showDetails ? '50%' : '100%'}\n border={showDetails ? `1px solid ${theme.palette.divider}` : undefined}\n >\n {/* Cytoscape Element */}\n <FlexCol alignItems=\"stretch\" position=\"absolute\" width=\"100%\" height=\"100%\" ref={cytoscapeRef} />\n {children}\n </FlexCol>\n </FlexGrowRow>\n </FlexCol>\n )\n },\n)\n\nNodeRelationalGraphFlexBox.displayName = 'NodeRelationalGraph'\n\n/** @deprecated */\nexport const NodeRelationalGraph = NodeRelationalGraphFlexBox\n","import { AccountInstance } from '@xyo-network/account-model'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useWeakProvidedNode } from '@xyo-network/react-node'\n\nimport { useCytoscapeElements, useCytoscapeOptions } from '../../../hooks'\nimport { NodeRelationalGraphProps } from '../../lib'\nimport { NodeRelationalGraphFlexBox } from './Graph'\n\nexport interface ProvidedNodeRendererProps extends NodeRelationalGraphProps {\n account?: AccountInstance\n layout?: 'dagre' | 'euler' | 'cose-bilkent' | 'cola'\n layoutOptions?: object\n node?: WeakRef<NodeInstance>\n}\n\nexport const ProvidedNodeRenderer: React.FC<ProvidedNodeRendererProps> = ({ node, ...props }) => {\n const [providedNode] = useWeakProvidedNode()\n const elements = useCytoscapeElements(node ?? providedNode)\n const options = useCytoscapeOptions(elements)\n\n return <NodeRelationalGraphFlexBox alignItems=\"stretch\" flexGrow={1} height=\"100%\" options={options} {...props} />\n}\n","import { CancelRounded } from '@mui/icons-material'\nimport { IconButton } from '@mui/material'\nimport { FlexBoxProps, FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\n\nexport interface DetailsFlexboxProps extends FlexBoxProps {\n onClose?: () => void\n}\n\nexport const DetailsFlexbox: React.FC<DetailsFlexboxProps> = ({ children, onClose }) => {\n return (\n <FlexGrowCol alignItems=\"end\" justifyContent=\"start\" id=\"module-detail\" width=\"100%\" p={2} gap={2}>\n <FlexRow justifyContent=\"end\">\n <IconButton onClick={onClose} size={'small'}>\n <CancelRounded />\n </IconButton>\n </FlexRow>\n {children}\n </FlexGrowCol>\n )\n}\n","import { PopperProps, styled } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { NodeSingular } from 'cytoscape'\nimport { ReactElement } from 'react'\n\nimport { useNodeElement } from './hooks'\n\nexport interface ModuleHoverProps {\n children?: (anchorElement?: PopperProps['anchorEl'], container?: PopperProps['container']) => ReactElement\n node?: NodeSingular\n}\n\nexport const ModuleGraphNodeHover: React.FC<ModuleHoverProps> = ({ children, node }) => {\n const { boundingBox, ref, currentElement } = useNodeElement(node)\n\n return (\n <>\n <StyledNodeGhostElementFlexCol ref={ref} left={boundingBox?.x1} height={boundingBox?.h} top={boundingBox?.y1} width={boundingBox?.w} />\n {node ?\n <>{children?.(currentElement)}</>\n : null}\n </>\n )\n}\n\nconst StyledNodeGhostElementFlexCol = styled(FlexCol, { name: 'StyledNodeGhostElementFlexCol' })(() => ({\n // For easier debugging of the 'ghost' element that matches the hovered cytoscape node\n // backgroundColor: '#fff',\n // opacity: 0.25,\n\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix\n cursor: 'pointer',\n pointerEvents: 'none',\n position: 'absolute',\n}))\n","import { PopperProps } from '@mui/material'\nimport { NodeSingular } from 'cytoscape'\nimport { useEffect, useRef, useState } from 'react'\n\nexport const useNodeElement = (node?: NodeSingular) => {\n const ref = useRef<HTMLDivElement>(null)\n const [currentElement, setCurrentElement] = useState<PopperProps['anchorEl'] | null>(null)\n const [boundingBox, setBoundingBox] = useState(node?.renderedBoundingBox())\n\n // Ensure first render clears the previous element when node changes to avoid flicker\n useEffect(() => {\n setCurrentElement(null)\n }, [node])\n\n useEffect(() => {\n if (node) {\n setBoundingBox(node.renderedBoundingBox())\n }\n\n const listener = () => {\n setBoundingBox(node?.renderedBoundingBox())\n }\n\n node?.on('position', listener)\n\n return () => {\n node?.off('position', undefined, listener)\n }\n }, [node])\n\n // Once boundingBox state is set and applied to the layout, update the ref\n useEffect(() => {\n setCurrentElement(ref.current)\n }, [boundingBox])\n\n return { boundingBox, currentElement, ref }\n}\n","import { CancelRounded } from '@mui/icons-material'\nimport { Button, Card, CardActions, CardHeader, IconButton, Paper, Popper, PopperProps, styled } from '@mui/material'\nimport { Identicon } from '@xylabs/react-identicon'\nimport { NodeSingular } from 'cytoscape'\n\nexport interface ModuleHoverPopperProps extends PopperProps {\n node?: NodeSingular\n onClose?: () => void\n onModuleDetails?: (address?: string) => void\n onModuleExplore?: (address?: string) => void\n}\n\nexport const ModuleHoverPopper: React.FC<ModuleHoverPopperProps> = ({ anchorEl, onClose, onModuleDetails, onModuleExplore, node, ...props }) => {\n const { address, name } = node?.data() ?? {}\n return (\n <>\n {anchorEl ?\n <Popper anchorEl={anchorEl} {...props}>\n <Card elevation={3}>\n <CardHeader\n action={\n onClose ?\n <IconButton size=\"small\" onClick={onClose}>\n <CancelRounded />\n </IconButton>\n : null\n }\n avatar={\n <Paper elevation={6} sx={{ bgcolor: '#fff', p: 1 }}>\n <Identicon value={address} size={24} />\n </Paper>\n }\n title={name}\n subheader={address}\n />\n <StyledCardActions>\n {onModuleDetails ?\n <Button onClick={() => onModuleDetails?.(address)} size=\"small\" variant=\"contained\">\n Details\n </Button>\n : null}\n {onModuleExplore ?\n <Button onClick={() => onModuleExplore?.(address)} size=\"small\" variant=\"contained\">\n Explore\n </Button>\n : null}\n </StyledCardActions>\n </Card>\n </Popper>\n : null}\n </>\n )\n}\n\nexport const StyledModuleHoverPopper = styled(ModuleHoverPopper, { name: 'StyledComponents' })(() => ({\n zIndex: 2,\n}))\n\nexport const StyledCardActions = styled(CardActions, { name: 'StyledCardActions' })(() => ({\n display: 'flex',\n justifyContent: 'center',\n}))\n"],"mappings":"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","names":["Button","useRef","jsx","isNodeInstance","useEffect","useState","isArchivistInstance","isDivinerInstance","useState","useEffect","isNodeInstance","useEffect","useState","useState","useEffect","selectedAddress","useEffect","useState","useState","useEffect","renderedElements","useState","useState","useMemo","useTheme","useMemo","useMemo","jsx","useMemo","useTheme","useMemo","useMemo","useEffect","useState","useState","foundModule","useEffect","useState","useState","useEffect","useState","jsx","useTheme","cytoscape","cola","dagre","useEffect","useState","jsx","cytoscape","dagre","cola","useTheme","useState","useEffect","jsx","FlexRow","jsx","jsxs","FlexCol","useEffect","useRef","useState","Fragment","jsx","jsxs","FlexCol","CancelRounded","Button","IconButton","styled","Fragment","jsx","jsxs","jsx","useRef","Button"]}
1
+ {"version":3,"sources":["../../src/components/module/CardParser.tsx","../../src/components/module/graph/GraphFlexBox.tsx","../../src/contexts/CytoscapeInstance/Context.ts","../../src/contexts/CytoscapeInstance/Provider.tsx","../../src/contexts/CytoscapeInstance/use.ts","../../src/hooks/cytoscape/elements/useCytoscapeElements.ts","../../src/Cytoscape/CytoscapeElements.ts","../../src/Cytoscape/lib/encodeSvg.ts","../../src/Cytoscape/lib/iconMap.ts","../../src/Cytoscape/lib/layout/ColaLayout.ts","../../src/Cytoscape/lib/layout/ConcentricLayout.ts","../../src/Cytoscape/lib/parseModuleType.ts","../../src/Cytoscape/CytoscapeIcons.tsx","../../src/Cytoscape/CytoscapeStyles.ts","../../src/hooks/cytoscape/elements/useHoveredNode.tsx","../../src/hooks/cytoscape/elements/useNewElements.tsx","../../src/hooks/cytoscape/elements/useRenderNewElements.tsx","../../src/hooks/cytoscape/elements/useSelectedElement.tsx","../../src/hooks/cytoscape/elements/useElements.tsx","../../src/hooks/cytoscape/useCytoscapeOptions.ts","../../src/hooks/cytoscape/useCytoscapeStyle.tsx","../../src/hooks/cytoscape/useIcons.tsx","../../src/hooks/cytoscape/useModuleDetails.tsx","../../src/hooks/cytoscape/useRelationalGraphOptions.tsx","../../src/components/cytoscape-extensions/WithExtensions.tsx","../../src/components/relational/graph/Graph.tsx","../../src/components/relational/graph/ProvidedNodeRenderer.tsx","../../src/components/module/graph/DetailsFlexbox.tsx","../../src/components/module/graph/node/Hover.tsx","../../src/components/module/graph/node/hooks/useNodeElement.tsx","../../src/components/module/graph/Popper.tsx"],"sourcesContent":["import { asArchivistInstance, isArchivistInstance } from '@xyo-network/archivist-model'\nimport { asDivinerInstance, isDivinerInstance } from '@xyo-network/diviner-model'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { ArchivistCard } from '@xyo-network/react-archivist'\nimport { DivinerCard, ModuleCard } from '@xyo-network/react-module'\n\nexport interface ModuleCardParserProps {\n mod?: ModuleInstance\n}\n\nexport const ModuleCardParser: React.FC<ModuleCardParserProps> = ({ mod }) => {\n switch (true) {\n case isArchivistInstance(mod): {\n return <ArchivistCard mod={asArchivistInstance(mod)} />\n }\n case isDivinerInstance(mod): {\n return <DivinerCard mod={asDivinerInstance(mod)} />\n }\n default: {\n return <ModuleCard mod={mod} />\n }\n }\n}\n","import { Button } from '@mui/material'\nimport { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useRef } from 'react'\n\nimport { CytoscapeInstanceProvider } from '../../../contexts'\nimport { useElements, useModuleDetails, useRelationalGraphOptions } from '../../../hooks'\nimport { WithExtensions } from '../../cytoscape-extensions'\nimport { NodeRelationalGraphFlexBox } from '../../relational'\nimport { DetailsFlexbox } from './DetailsFlexbox'\nimport { ModuleGraphNodeHover } from './node'\nimport { StyledModuleHoverPopper } from './Popper'\n\nexport interface ModuleGraphFlexBoxProps extends FlexBoxProps {\n disableModuleDetails?: boolean\n hideActions?: boolean\n layout?: 'dagre' | 'euler' | 'cose-bilkent' | 'cola'\n layoutOptions?: object\n rootModule?: WeakRef<ModuleInstance> | null\n}\n\nexport const ModuleGraphFlexBox: React.FC<ModuleGraphFlexBoxProps> = ({ hideActions, rootModule, disableModuleDetails, ...props }) => {\n const cytoscapeRef = useRef<HTMLDivElement>(null)\n const { handleToggleLabels, hideLabels, options } = useRelationalGraphOptions(rootModule ?? undefined)\n const { hoveredNode, setHoveredNode, toggleSelectedElement } = useElements(hideLabels)\n\n const { mod, onModuleDetails } = useModuleDetails(rootModule, () => setHoveredNode(undefined))\n\n return (\n <WithExtensions>\n <NodeRelationalGraphFlexBox\n actions={\n mod ? null\n : hideActions ?\n null\n : <Button size={'small'} onClick={handleToggleLabels} variant=\"contained\">\n Toggle Labels\n </Button>\n\n }\n showDetails={!!mod}\n detail={<DetailsFlexbox onClose={() => onModuleDetails(null)} />}\n options={options}\n ref={cytoscapeRef}\n width=\"100%\"\n {...props}\n >\n <ModuleGraphNodeHover node={hoveredNode}>\n {(element) => (\n <StyledModuleHoverPopper\n anchorEl={element}\n container={cytoscapeRef.current}\n node={hoveredNode}\n onClose={() => setHoveredNode(undefined)}\n onModuleExplore={toggleSelectedElement}\n onModuleDetails={disableModuleDetails ? undefined : onModuleDetails}\n placement={'top'}\n open\n />\n )}\n </ModuleGraphNodeHover>\n </NodeRelationalGraphFlexBox>\n </WithExtensions>\n )\n}\n\nexport const ModuleGraphFlexBoxWithProvider: React.FC<ModuleGraphFlexBoxProps> = (props) => {\n return (\n <CytoscapeInstanceProvider>\n <ModuleGraphFlexBox {...props} />\n </CytoscapeInstanceProvider>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceState } from './State'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\n","import type { WithChildren } from '@xylabs/react-shared'\nimport { Core } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { CytoscapeInstanceContext } from './Context'\n\nexport interface CytoscapeInstanceProviderProps extends WithChildren {\n defaultInstance?: WeakRef<Core>\n}\n\nexport const CytoscapeInstanceProvider: React.FC<CytoscapeInstanceProviderProps> = ({ children, defaultInstance }) => {\n const [cy, setCy] = useState<WeakRef<Core> | undefined>(defaultInstance)\n useEffect(() => {\n setCy(defaultInstance)\n }, [defaultInstance])\n\n return <CytoscapeInstanceContext.Provider value={{ cy, provided: true, setCy }}>{children}</CytoscapeInstanceContext.Provider>\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceContext } from './Context'\n\nexport const useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, 'CytoscapeInstance', required)\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { EventUnsubscribeFunction } from '@xyo-network/module-events'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { ElementDefinition } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { CytoscapeElements } from '../../../Cytoscape'\n\nexport const useCytoscapeElements = (mod?: WeakRef<ModuleInstance> | null) => {\n const [elements, setElements] = useState<ElementDefinition[]>([])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n const moduleInstance = mod?.deref()\n if (moduleInstance) {\n const newElements = (await CytoscapeElements.buildElements(moduleInstance)) ?? []\n setElements(newElements)\n }\n },\n [mod],\n )\n\n useEffect(() => {\n let attachedListener: EventUnsubscribeFunction | undefined\n let detachedListener: EventUnsubscribeFunction | undefined\n\n if (mod && isNodeInstance(mod)) {\n attachedListener = mod.on('moduleAttached', async () => {\n const newElements = (await CytoscapeElements.buildElements(mod)) ?? []\n setElements(newElements)\n })\n detachedListener = mod.on('moduleDetached', async () => {\n const newElements = (await CytoscapeElements.buildElements(mod)) ?? []\n setElements(newElements)\n })\n }\n\n return () => {\n attachedListener?.()\n detachedListener?.()\n }\n }, [mod])\n\n return elements\n}\n","import { exists } from '@xylabs/exists'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { ElementDefinition } from 'cytoscape'\n\nimport { parseModuleType } from './lib'\n\ninterface ModuleInfo {\n children: ModuleInfo[]\n depth: number\n mod: ModuleInstance\n}\n\nexport const CytoscapeElements = {\n MaxNameLength: 20,\n\n buildEdge(rootNode: ElementDefinition, newNode: ElementDefinition, properties?: { [key: string]: unknown }) {\n return {\n data: {\n id: `${rootNode.data.id}/${newNode.data.id}`,\n source: rootNode.data.id,\n target: newNode.data.id,\n ...properties,\n },\n }\n },\n\n async buildElements(mod: ModuleInstance): Promise<ElementDefinition[]> {\n const info = await CytoscapeElements.recurseNodes(mod)\n const newElements: ElementDefinition[] = await this.buildElementsFromInfo(info, undefined, ['activeNode'])\n\n return newElements\n },\n\n async buildElementsFromInfo(info: ModuleInfo, root?: ElementDefinition, classes: string[] = []): Promise<ElementDefinition[]> {\n const newNode = CytoscapeElements.buildNode(info.mod, { childCount: info.children.length, depth: info.depth }, classes)\n const newEdge = root ? CytoscapeElements.buildEdge(root, newNode, { depth: info.depth, siblingCount: info.children.length }) : undefined\n const newElements: ElementDefinition[] = [newNode]\n if (newEdge) {\n newElements.push(newEdge)\n }\n\n for (const childInfo of info.children) {\n newElements.push(...(await this.buildElementsFromInfo(childInfo, newNode)))\n }\n\n return newElements\n },\n\n buildNode(mod: ModuleInstance, properties?: { [key: string]: unknown }, classes?: string[]): ElementDefinition {\n const { address, id } = mod\n return {\n classes,\n data: {\n address,\n id: address,\n name: id,\n type: parseModuleType(mod),\n ...properties,\n },\n }\n },\n\n buildRootNode: (mod: ModuleInstance): ElementDefinition => {\n return CytoscapeElements.buildNode(mod, {}, ['activeNode'])\n },\n\n normalizeName(name?: string) {\n if (!name) return\n if (name.length > this.MaxNameLength) return `${name.slice(0, 20)}...`\n return name\n },\n\n async recurseNodes(root: ModuleInstance, maxDepth = 10, depth = 1): Promise<ModuleInfo> {\n const info: ModuleInfo = { children: [], depth, mod: root }\n\n if (maxDepth > 0) {\n const children = await root.resolve('*', { direction: 'down', maxDepth: 1 })\n info.children = (\n await Promise.all(\n children.map(async (child) => {\n // don't re add the root module that was passed in\n if (child.address !== root.address) {\n return await this.recurseNodes(child, maxDepth - 1, depth + 1)\n }\n }),\n )\n ).filter(exists)\n }\n\n return info\n },\n}\n","import { ReactElement } from 'react'\n// eslint-disable-next-line import/no-internal-modules\nimport { renderToStaticMarkup } from 'react-dom/server'\n\nconst dataUri = 'data:image/svg+xml,'\n\nexport const encodeSvg = (reactElement: ReactElement, color?: string) => {\n const svgString = renderToStaticMarkup(reactElement)\n\n const doc = new DOMParser().parseFromString(svgString, 'text/html')\n const svgElement = doc.querySelectorAll('svg')[0]\n if (svgElement) {\n svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n svgElement.setAttribute('height', '100')\n svgElement.style.fill = color ?? 'black'\n }\n\n return `${dataUri}${window.encodeURIComponent(svgElement.outerHTML)}`\n}\n","import { CyNodeModuleTypes } from './CyNodeModuleTypes'\n\nexport const generateIconMap: () => Record<CyNodeModuleTypes, string> = () => ({\n archivist: '',\n bridge: '',\n diviner: '',\n // eslint-disable-next-line id-denylist\n module: '',\n node: '',\n sentinel: '',\n witness: '',\n})\n","export const ColaLayout = {\n centerGraph: false,\n convergenceThreshold: 0.01,\n name: 'cola',\n}\n","import { LayoutOptions } from 'cytoscape'\n\nexport const ConcentricLayout: LayoutOptions = {\n concentric: function (node) {\n return node.degree()\n },\n levelWidth: function () {\n return 2\n },\n minNodeSpacing: 75,\n name: 'concentric',\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessModule } from '@xyo-network/witness-model'\n\nimport { CyNodeModuleTypes } from './CyNodeModuleTypes'\n\nexport const parseModuleType = (mod?: ModuleInstance): CyNodeModuleTypes => {\n let type: CyNodeModuleTypes = 'module'\n if (mod) {\n if (isArchivistInstance(mod)) {\n type = 'archivist'\n } else if (isBridgeInstance(mod)) {\n type = 'bridge'\n } else if (isDivinerInstance(mod)) {\n type = 'diviner'\n } else if (isNodeInstance(mod)) {\n type = 'node'\n } else if (isSentinelInstance(mod)) {\n type = 'sentinel'\n } else if (isWitnessModule(mod)) {\n type = 'witness'\n } else {\n type = 'module'\n }\n }\n return type\n}\n","import {\n BubbleChartRounded as BubbleChartRoundedIcon,\n Hub as HubIcon,\n InsertLinkRounded as InsertLinkRoundedIcon,\n Inventory2Rounded as Inventory2RoundedIcon,\n QuestionMarkRounded as QuestionMarkRoundedIcon,\n TimerRounded as TimerRoundedIcon,\n VisibilityRounded as VisibilityRoundedIcon,\n} from '@mui/icons-material'\nimport { SvgIconTypeMap } from '@mui/material'\n// eslint-disable-next-line import/no-internal-modules\nimport { OverridableComponent } from '@mui/material/OverridableComponent'\n\nimport { CyNodeModuleTypes } from './lib'\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const CyIconSet: Record<CyNodeModuleTypes, OverridableComponent<SvgIconTypeMap<{}, 'svg'>>> = {\n archivist: Inventory2RoundedIcon,\n bridge: InsertLinkRoundedIcon,\n diviner: BubbleChartRoundedIcon,\n // eslint-disable-next-line id-denylist\n module: QuestionMarkRoundedIcon,\n node: HubIcon,\n sentinel: TimerRoundedIcon,\n witness: VisibilityRoundedIcon,\n}\n","import { Stylesheet } from 'cytoscape'\n\nimport { CyNodeModuleTypes } from './lib'\n\nexport const NodeWithName = (color?: string, outlineColor?: string): Stylesheet => ({\n selector: 'node[name]',\n style: {\n color,\n 'font-family': 'Lexend Deca, Helvetica, sans-serif',\n 'font-size': 12,\n 'overlay-padding': '6px',\n 'text-halign': 'center',\n 'text-outline-color': outlineColor,\n 'text-outline-width': '1px',\n 'text-valign': 'top',\n },\n})\n\nexport const Node = (icons: Record<CyNodeModuleTypes, string>, bgColor?: string, hideLabels = false): Stylesheet => ({\n selector: 'node',\n style: {\n 'background-color': bgColor,\n 'background-height': '75%',\n 'background-image': (elem) => icons[elem.data('type') as CyNodeModuleTypes],\n 'background-width': '24',\n label: hideLabels ? undefined : 'data(name)',\n shape: 'round-rectangle',\n },\n})\n\nexport const NodeAsRoot = (bgColor?: string) => ({\n selector: '.activeNode',\n style: {\n 'background-color': bgColor,\n },\n})\n\nexport const EdgeStyled = (lineColor?: string, targetArrowColor?: string) => ({\n selector: 'edge',\n style: {\n 'curve-style': 'bezier',\n 'line-color': lineColor,\n 'line-opacity': 0.1,\n 'target-arrow-color': targetArrowColor,\n 'target-arrow-shape': 'triangle',\n width: 3,\n },\n})\n","import { NodeCollection, NodeSingular } from 'cytoscape'\nimport { Dispatch, SetStateAction, useCallback, useEffect, useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts'\n\nexport const useHoveredNode = (renderedElements?: NodeCollection): [NodeSingular | undefined, Dispatch<SetStateAction<NodeSingular | undefined>>] => {\n const { cy } = useCytoscapeInstance(true)\n const [hoveredNode, setHoveredNode] = useState<NodeSingular>()\n\n const nodeListener = useCallback((node: NodeSingular) => {\n node.on('mouseover tap', () => {\n setHoveredNode(node)\n })\n }, [])\n\n useEffect(() => {\n if (renderedElements) {\n // eslint-disable-next-line unicorn/no-array-for-each\n renderedElements.nodes().forEach(nodeListener)\n }\n }, [nodeListener, renderedElements])\n\n useEffect(() => {\n cy?.deref()?.ready(() => {\n // eslint-disable-next-line unicorn/no-array-for-each\n cy?.deref()?.nodes().forEach(nodeListener)\n })\n }, [cy, nodeListener])\n\n return [hoveredNode, setHoveredNode]\n}\n","import { useWeakModuleFromNode } from '@xyo-network/react-node'\nimport { NodeSingular } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { useCytoscapeElements } from './useCytoscapeElements'\n\nexport const useNewElements = (selectedElement?: NodeSingular) => {\n const selectedAddress = useMemo(() => {\n const { address: selectedAddress } = selectedElement?.data() ?? {}\n return selectedAddress\n }, [selectedElement])\n\n const [mod] = useWeakModuleFromNode(selectedAddress)\n const newElements = useCytoscapeElements(mod)\n\n return newElements\n}\n","import { CollectionReturnValue, ElementDefinition } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts'\nimport { ColaLayout } from '../../../Cytoscape'\n\nexport const useRenderNewElements = (newElements: ElementDefinition[] = [], hideLabels?: boolean) => {\n const { cy } = useCytoscapeInstance(true)\n const [renderedElements, setRenderedElements] = useState<CollectionReturnValue>()\n\n useEffect(() => {\n if (newElements.length > 1) {\n const renderedElements = cy?.deref()?.add(newElements)\n setRenderedElements(renderedElements)\n cy?.deref()?.layout(ColaLayout).run()\n }\n }, [cy, hideLabels, newElements])\n\n return renderedElements\n}\n","import { NodeSingular } from 'cytoscape'\nimport { useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts'\n\nexport const useSelectedElement = () => {\n const [selectedElement, setSelectedElement] = useState<NodeSingular>()\n const { cy } = useCytoscapeInstance(true)\n\n const updateStyles = (element: NodeSingular) => {\n const nodes = cy?.deref()?.nodes()\n nodes?.toggleClass('activeNode', false)\n element.toggleClass('activeNode', true)\n }\n\n const toggleSelectedElement = (address?: string) => {\n const selectedNode = cy?.deref()?.nodes(`[id=\"${address}\"]`)?.[0]\n if (selectedNode) {\n setSelectedElement(selectedNode)\n updateStyles(selectedNode)\n }\n }\n\n return { selectedElement, toggleSelectedElement }\n}\n","import { useHoveredNode } from './useHoveredNode'\nimport { useNewElements } from './useNewElements'\nimport { useRenderNewElements } from './useRenderNewElements'\nimport { useSelectedElement } from './useSelectedElement'\n\nexport const useElements = (hideLabels: boolean) => {\n const { selectedElement, toggleSelectedElement } = useSelectedElement()\n const newElements = useNewElements(selectedElement)\n const renderedElements = useRenderNewElements(newElements, hideLabels)\n const [hoveredNode, setHoveredNode] = useHoveredNode(renderedElements)\n\n return { hoveredNode, setHoveredNode, toggleSelectedElement }\n}\n","import { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape'\nimport { useCytoscapeStyle } from './useCytoscapeStyle'\n\nexport const useCytoscapeOptions = (\n elements: CytoscapeOptions['elements'],\n style?: CytoscapeOptions['style'],\n layout?: CytoscapeOptions['layout'],\n) => {\n const defaultStyle = useCytoscapeStyle()\n\n const resolvedLayout = layout ?? ConcentricLayout\n const resolvedStyle = style ?? defaultStyle\n\n const options = useMemo<CytoscapeOptions | undefined>(() => {\n if (elements && resolvedLayout && resolvedStyle) {\n return {\n elements,\n layout: resolvedLayout,\n style: resolvedStyle,\n }\n }\n }, [elements, layout, style])\n\n return options\n}\n","import { useTheme } from '@mui/material'\nimport { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { EdgeStyled, Node, NodeAsRoot, NodeWithName } from '../../Cytoscape'\nimport { useIcons } from './useIcons'\n\nexport const useCytoscapeStyle = (hideLabels = false) => {\n const theme = useTheme()\n const icons = useIcons()\n\n const style: CytoscapeOptions['style'] = useMemo(\n () => [\n Node(icons, theme.palette.primary.main, hideLabels),\n NodeWithName(theme.palette.text.primary, theme.palette.getContrastText(theme.palette.text.primary)),\n NodeAsRoot(theme.palette.secondary.main),\n EdgeStyled(theme.palette.divider, theme.palette.divider),\n ],\n [icons, hideLabels, theme],\n )\n\n return style\n}\n","import { useTheme } from '@mui/material'\nimport { useMemo } from 'react'\n\nimport { CyIconSet, CyNodeModuleTypes, encodeSvg, generateIconMap } from '../../Cytoscape'\n\nexport const useIcons = () => {\n const theme = useTheme()\n const icons = useMemo(() => {\n const iconMap = generateIconMap()\n // eslint-disable-next-line unicorn/no-array-reduce\n return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {\n const icon = <IconComponent fontSize=\"small\" />\n acc[name as CyNodeModuleTypes] = encodeSvg(icon, theme.palette.getContrastText(theme.palette.text.primary))\n return acc\n }, iconMap)\n }, [theme.palette])\n\n return icons\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useEffect, useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../contexts'\n\nexport const useModuleDetails = (rootModule?: WeakRef<ModuleInstance> | null, onFoundModule?: () => void) => {\n const { cy } = useCytoscapeInstance()\n const [moduleAddress, setModuleAddress] = useState<string | null>()\n\n const [foundModule] = usePromise(async () => {\n if (moduleAddress === null) return null\n const rootModuleInstance = rootModule?.deref()\n if (moduleAddress && rootModuleInstance) {\n const foundModule = await rootModuleInstance.resolve(moduleAddress)\n return foundModule ?? null\n }\n }, [moduleAddress, rootModule])\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n if (moduleAddress === null) {\n // cytoscape tries to center prematurely without it :(\n setTimeout(() => {\n cy?.deref()?.center()\n }, 100)\n } else if (foundModule && cy) {\n const node = cy?.deref()?.nodes(`[id=\"${moduleAddress}\"]`)?.[0]\n // cy.pan(newPan)\n // cytoscape tries to center prematurely without it :(\n setTimeout(() => {\n cy?.deref()?.center(node)\n }, 100)\n }\n })\n\n const container = cy?.deref()?.container()\n if (container) {\n resizeObserver.observe(container)\n }\n\n return () => {\n if (container) resizeObserver.unobserve(container)\n }\n }, [cy, moduleAddress, foundModule, rootModule])\n\n useEffect(() => {\n if (foundModule) {\n onFoundModule?.()\n }\n }, [cy, moduleAddress, foundModule, onFoundModule])\n\n const onModuleDetails = (address?: string | null) => {\n const moduleNode = cy?.deref()?.nodes(`[id=\"${address}\"]`)\n const rootModuleNode = cy?.deref()?.nodes(`[id=\"${rootModule?.deref()?.address}\"]`)\n const foundModuleNode = cy?.deref()?.nodes(`[id=\"${foundModule?.address}\"]`)\n const notModuleNode = cy?.deref()?.nodes(`[id != \"${address}\"]`)\n\n if (address) {\n // address was passed so we set the node to active styles\n moduleNode?.toggleClass('activeNode', true)\n notModuleNode?.toggleClass('activeNode', false)\n } else {\n // no address was passes so we reset the state\n notModuleNode?.toggleClass('activeNode', false)\n const activeNode = foundModuleNode?.length ? foundModuleNode : rootModuleNode\n activeNode?.toggleClass('activeNode', true)\n }\n setModuleAddress(address)\n }\n\n return { mod: foundModule, onModuleDetails }\n}\n","import { ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape'\nimport { useCytoscapeElements } from './elements'\nimport { useCytoscapeOptions } from './useCytoscapeOptions'\nimport { useCytoscapeStyle } from './useCytoscapeStyle'\n\nexport const useRelationalGraphOptions = (mod?: WeakRef<ModuleInstance>) => {\n const [hideLabels, setHideLabels] = useState(true)\n\n const handleToggleLabels = () => {\n setHideLabels((oldValue) => !oldValue)\n }\n\n const elements = useCytoscapeElements(mod)\n const style = useCytoscapeStyle(hideLabels)\n const options = useCytoscapeOptions(elements, style, ConcentricLayout)\n\n return { handleToggleLabels, hideLabels, options }\n}\n","import cytoscape from 'cytoscape'\nimport cola from 'cytoscape-cola'\nimport coseBilkent from 'cytoscape-cose-bilkent'\nimport dagre from 'cytoscape-dagre'\nimport euler from 'cytoscape-euler'\nimport { PropsWithChildren, useEffect, useState } from 'react'\n\nexport const WithExtensions: React.FC<PropsWithChildren> = ({ children }) => {\n const [initialized, setInitialized] = useState(false)\n useEffect(() => {\n cytoscape.use(cola)\n cytoscape.use(dagre)\n cytoscape.use(coseBilkent)\n cytoscape.use(euler)\n setInitialized(true)\n }, [])\n\n return <>{initialized ? children : undefined}</>\n}\n","import { CancelRounded } from '@mui/icons-material'\nimport { Box, Button, ButtonGroup, Card, CardHeader, CardProps, IconButton, Paper, useTheme } from '@mui/material'\nimport { Address, asAddress } from '@xylabs/hex'\nimport { FlexCol, FlexGrowRow, FlexRow } from '@xylabs/react-flexbox'\nimport { Identicon } from '@xylabs/react-identicon'\nimport { useWeakModuleFromNode } from '@xyo-network/react-node'\nimport cytoscape, { Core, NodeSingular } from 'cytoscape'\nimport cola from 'cytoscape-cola'\nimport coseBilkentLayout from 'cytoscape-cose-bilkent'\nimport dagre from 'cytoscape-dagre'\nimport eulerLayout from 'cytoscape-euler'\nimport { forwardRef, useEffect, useRef, useState } from 'react'\n\nimport { NodeRelationalGraphProps } from '../../lib'\n\nconst applyLayout = (cy?: cytoscape.Core, name = 'cola', options?: object) => {\n cy?.layout({ name, ...options }).run()\n}\n\nconst loadLayout = (layout = 'cola') => {\n switch (layout) {\n case 'dagre': {\n cytoscape.use(dagre)\n break\n }\n case 'euler': {\n cytoscape.use(eulerLayout)\n break\n }\n case 'cose-bilkent': {\n cytoscape.use(coseBilkentLayout)\n break\n }\n case 'cola': {\n cytoscape.use(cola)\n break\n }\n }\n}\n\ntype ModuleHoverDetailsProps = CardProps & {\n address: Address\n name: string\n}\n\nconst ModuleHoverDetails: React.FC<ModuleHoverDetailsProps> = ({ name, address, ...props }) => {\n return (\n <Card elevation={3} {...props}>\n <CardHeader\n avatar={\n <Paper elevation={6} sx={{ bgcolor: '#fff', p: 1 }}>\n <Identicon value={address} size={24} />\n </Paper>\n }\n title={name}\n subheader={address}\n />\n </Card>\n )\n}\n\nexport const NodeRelationalGraphFlexBox = forwardRef<HTMLDivElement, NodeRelationalGraphProps>(\n ({ actions, children, node, layout, layoutOptions, showDetails, detail, options, onHover, ...props }, ref) => {\n const theme = useTheme()\n const [cy, setCy] = useState<Core>()\n const cytoscapeRef = useRef<HTMLDivElement>()\n const [hoverPosition, setHoverBoundingBox] = useState<{ x1: number; x2: number; y1: number; y2: number }>()\n const [hoverAddress, setHoverAddress] = useState<Address>()\n\n const [moduleInstance] = useWeakModuleFromNode(hoverAddress, { node })\n\n useEffect(() => {\n cy?.on('mouseover tap', ({ target }) => {\n const cyNode = target as NodeSingular\n const bb = cyNode?.renderedBoundingBox?.()\n console.log(bb)\n setHoverBoundingBox(bb)\n const id = cyNode.id?.()\n if (id) {\n if (id.includes('/')) {\n setHoverAddress(undefined)\n onHover?.()\n } else {\n setHoverAddress(asAddress(id))\n onHover?.(asAddress(id))\n }\n }\n })\n }, [onHover, cy])\n\n const handleReset = () => {\n cy?.reset()\n applyLayout(cy, layout ?? 'euler', layoutOptions)\n }\n\n useEffect(() => {\n let newCy: Core | undefined\n const container = cytoscapeRef.current\n if (container) {\n newCy = cytoscape({\n container,\n ...options,\n })\n setCy(newCy)\n }\n return () => {\n newCy?.destroy()\n setCy(undefined)\n }\n }, [options, cytoscapeRef, layoutOptions])\n\n useEffect(() => {\n if (cy) {\n loadLayout(layout)\n applyLayout(cy, layout ?? 'euler', layoutOptions)\n }\n }, [cy, layoutOptions, layout])\n\n return (\n <FlexCol id=\"relational-graph-wrapper\" ref={ref} {...props}>\n {hoverAddress && hoverPosition ?\n <Box position=\"absolute\" top={hoverPosition.y1} left={hoverPosition.x1} zIndex={100}>\n <ModuleHoverDetails address={hoverAddress} name={moduleInstance?.deref()?.id ?? 'Unknown'} />\n </Box>\n : null}\n <FlexRow justifyContent=\"start\" width=\"100%\">\n {actions === null ?\n null\n : actions ?\n <ButtonGroup>\n {actions}\n <Button size={'small'} variant={'contained'} onClick={handleReset}>\n Reset View\n </Button>\n </ButtonGroup>\n : <Button size={'small'} variant={'contained'} onClick={handleReset}>\n Reset\n </Button>\n }\n </FlexRow>\n <FlexGrowRow width=\"100%\" alignItems=\"start\">\n {showDetails ?\n <FlexCol height=\"100%\" width={'85%'}>\n {detail}\n </FlexCol>\n : null}\n <FlexCol\n justifyContent=\"start\"\n classes=\"cytoscape-wrap\"\n width={showDetails ? '15%' : '100%'}\n height={showDetails ? '50%' : '100%'}\n border={showDetails ? `1px solid ${theme.palette.divider}` : undefined}\n >\n {/* Cytoscape Element */}\n <FlexCol alignItems=\"stretch\" position=\"absolute\" width=\"100%\" height=\"100%\" ref={cytoscapeRef} />\n {children}\n </FlexCol>\n </FlexGrowRow>\n </FlexCol>\n )\n },\n)\n\nNodeRelationalGraphFlexBox.displayName = 'NodeRelationalGraph'\n\n/** @deprecated */\nexport const NodeRelationalGraph = NodeRelationalGraphFlexBox\n","import { AccountInstance } from '@xyo-network/account-model'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useWeakProvidedNode } from '@xyo-network/react-node'\n\nimport { useCytoscapeElements, useCytoscapeOptions } from '../../../hooks'\nimport { NodeRelationalGraphProps } from '../../lib'\nimport { NodeRelationalGraphFlexBox } from './Graph'\n\nexport interface ProvidedNodeRendererProps extends NodeRelationalGraphProps {\n account?: AccountInstance\n layout?: 'dagre' | 'euler' | 'cose-bilkent' | 'cola'\n layoutOptions?: object\n node?: WeakRef<NodeInstance>\n}\n\nexport const ProvidedNodeRenderer: React.FC<ProvidedNodeRendererProps> = ({ node, ...props }) => {\n const [providedNode] = useWeakProvidedNode()\n const elements = useCytoscapeElements(node ?? providedNode)\n const options = useCytoscapeOptions(elements)\n\n return <NodeRelationalGraphFlexBox alignItems=\"stretch\" flexGrow={1} height=\"100%\" options={options} {...props} />\n}\n","import { CancelRounded } from '@mui/icons-material'\nimport { IconButton } from '@mui/material'\nimport { FlexBoxProps, FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\n\nexport interface DetailsFlexboxProps extends FlexBoxProps {\n onClose?: () => void\n}\n\nexport const DetailsFlexbox: React.FC<DetailsFlexboxProps> = ({ children, onClose }) => {\n return (\n <FlexGrowCol alignItems=\"end\" justifyContent=\"start\" id=\"module-detail\" width=\"100%\" p={2} gap={2}>\n <FlexRow justifyContent=\"end\">\n <IconButton onClick={onClose} size={'small'}>\n <CancelRounded />\n </IconButton>\n </FlexRow>\n {children}\n </FlexGrowCol>\n )\n}\n","import { PopperProps, styled } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { NodeSingular } from 'cytoscape'\nimport { ReactElement } from 'react'\n\nimport { useNodeElement } from './hooks'\n\nexport interface ModuleHoverProps {\n children?: (anchorElement?: PopperProps['anchorEl'], container?: PopperProps['container']) => ReactElement\n node?: NodeSingular\n}\n\nexport const ModuleGraphNodeHover: React.FC<ModuleHoverProps> = ({ children, node }) => {\n const { boundingBox, ref, currentElement } = useNodeElement(node)\n\n return (\n <>\n <StyledNodeGhostElementFlexCol ref={ref} left={boundingBox?.x1} height={boundingBox?.h} top={boundingBox?.y1} width={boundingBox?.w} />\n {node ?\n <>{children?.(currentElement)}</>\n : null}\n </>\n )\n}\n\nconst StyledNodeGhostElementFlexCol = styled(FlexCol, { name: 'StyledNodeGhostElementFlexCol' })(() => ({\n // For easier debugging of the 'ghost' element that matches the hovered cytoscape node\n // backgroundColor: '#fff',\n // opacity: 0.25,\n\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix\n cursor: 'pointer',\n pointerEvents: 'none',\n position: 'absolute',\n}))\n","import { PopperProps } from '@mui/material'\nimport { NodeSingular } from 'cytoscape'\nimport { useEffect, useRef, useState } from 'react'\n\nexport const useNodeElement = (node?: NodeSingular) => {\n const ref = useRef<HTMLDivElement>(null)\n const [currentElement, setCurrentElement] = useState<PopperProps['anchorEl'] | null>(null)\n const [boundingBox, setBoundingBox] = useState(node?.renderedBoundingBox())\n\n // Ensure first render clears the previous element when node changes to avoid flicker\n useEffect(() => {\n setCurrentElement(null)\n }, [node])\n\n useEffect(() => {\n if (node) {\n setBoundingBox(node.renderedBoundingBox())\n }\n\n const listener = () => {\n setBoundingBox(node?.renderedBoundingBox())\n }\n\n node?.on('position', listener)\n\n return () => {\n node?.off('position', undefined, listener)\n }\n }, [node])\n\n // Once boundingBox state is set and applied to the layout, update the ref\n useEffect(() => {\n setCurrentElement(ref.current)\n }, [boundingBox])\n\n return { boundingBox, currentElement, ref }\n}\n","import { CancelRounded } from '@mui/icons-material'\nimport { Button, Card, CardActions, CardHeader, IconButton, Paper, Popper, PopperProps, styled } from '@mui/material'\nimport { Identicon } from '@xylabs/react-identicon'\nimport { NodeSingular } from 'cytoscape'\n\nexport interface ModuleHoverPopperProps extends PopperProps {\n node?: NodeSingular\n onClose?: () => void\n onModuleDetails?: (address?: string) => void\n onModuleExplore?: (address?: string) => void\n}\n\nexport const ModuleHoverPopper: React.FC<ModuleHoverPopperProps> = ({ anchorEl, onClose, onModuleDetails, onModuleExplore, node, ...props }) => {\n const { address, name } = node?.data() ?? {}\n return (\n <>\n {anchorEl ?\n <Popper anchorEl={anchorEl} {...props}>\n <Card elevation={3}>\n <CardHeader\n action={\n onClose ?\n <IconButton size=\"small\" onClick={onClose}>\n <CancelRounded />\n </IconButton>\n : null\n }\n avatar={\n <Paper elevation={6} sx={{ bgcolor: '#fff', p: 1 }}>\n <Identicon value={address} size={24} />\n </Paper>\n }\n title={name}\n subheader={address}\n />\n <StyledCardActions>\n {onModuleDetails ?\n <Button onClick={() => onModuleDetails?.(address)} size=\"small\" variant=\"contained\">\n Details\n </Button>\n : null}\n {onModuleExplore ?\n <Button onClick={() => onModuleExplore?.(address)} size=\"small\" variant=\"contained\">\n Explore\n </Button>\n : null}\n </StyledCardActions>\n </Card>\n </Popper>\n : null}\n </>\n )\n}\n\nexport const StyledModuleHoverPopper = styled(ModuleHoverPopper, { name: 'StyledComponents' })(() => ({\n zIndex: 2,\n}))\n\nexport const StyledCardActions = styled(CardActions, { name: 'StyledCardActions' })(() => ({\n display: 'flex',\n justifyContent: 'center',\n}))\n"],"mappings":"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","names":["Button","useRef","jsx","isNodeInstance","useEffect","useState","isArchivistInstance","isDivinerInstance","useState","useEffect","isNodeInstance","useEffect","useState","useState","useEffect","selectedAddress","useEffect","useState","useState","useEffect","renderedElements","useState","useState","useMemo","useTheme","useMemo","useMemo","jsx","useMemo","useTheme","useMemo","useMemo","useEffect","useState","useState","foundModule","useEffect","useState","useState","useEffect","useState","jsx","useTheme","useWeakModuleFromNode","cytoscape","cola","dagre","useEffect","useState","jsx","jsx","IconButton","FlexRow","jsx","jsxs","FlexCol","useEffect","useRef","useState","Fragment","jsx","jsxs","FlexCol","CancelRounded","Button","Card","CardHeader","IconButton","Paper","styled","Identicon","Fragment","jsx","jsxs","jsx","useRef","Button"]}