@xyo-network/react-node-renderer 2.64.1 → 2.64.4

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 (507) hide show
  1. package/dist/browser/Cytoscape/index.cjs.map +1 -1
  2. package/dist/browser/Cytoscape/index.js.map +1 -1
  3. package/dist/browser/Cytoscape/lib/index.cjs.map +1 -1
  4. package/dist/browser/Cytoscape/lib/index.js.map +1 -1
  5. package/dist/browser/Cytoscape/lib/layout/ConcentricLayout.cjs.map +1 -1
  6. package/dist/browser/Cytoscape/lib/layout/ConcentricLayout.d.cts +2 -2
  7. package/dist/browser/Cytoscape/lib/layout/ConcentricLayout.d.cts.map +1 -1
  8. package/dist/browser/Cytoscape/lib/layout/ConcentricLayout.d.mts +2 -2
  9. package/dist/browser/Cytoscape/lib/layout/ConcentricLayout.d.mts.map +1 -1
  10. package/dist/browser/Cytoscape/lib/layout/ConcentricLayout.d.ts +2 -2
  11. package/dist/browser/Cytoscape/lib/layout/ConcentricLayout.d.ts.map +1 -1
  12. package/dist/browser/Cytoscape/lib/layout/ConcentricLayout.js.map +1 -1
  13. package/dist/browser/Cytoscape/lib/layout/index.cjs.map +1 -1
  14. package/dist/browser/Cytoscape/lib/layout/index.js.map +1 -1
  15. package/dist/browser/components/ProvidedNodeRenderer.cjs +22 -17
  16. package/dist/browser/components/ProvidedNodeRenderer.cjs.map +1 -1
  17. package/dist/browser/components/ProvidedNodeRenderer.js +23 -18
  18. package/dist/browser/components/ProvidedNodeRenderer.js.map +1 -1
  19. package/dist/browser/components/RelationalGraph.cjs +5 -4
  20. package/dist/browser/components/RelationalGraph.cjs.map +1 -1
  21. package/dist/browser/components/RelationalGraph.d.cts.map +1 -1
  22. package/dist/browser/components/RelationalGraph.d.mts.map +1 -1
  23. package/dist/browser/components/RelationalGraph.d.ts.map +1 -1
  24. package/dist/browser/components/RelationalGraph.js +6 -5
  25. package/dist/browser/components/RelationalGraph.js.map +1 -1
  26. package/dist/browser/components/cytoscape-extensions/WithExtensions.cjs +0 -2
  27. package/dist/browser/components/cytoscape-extensions/WithExtensions.cjs.map +1 -1
  28. package/dist/browser/components/cytoscape-extensions/WithExtensions.d.cts.map +1 -1
  29. package/dist/browser/components/cytoscape-extensions/WithExtensions.d.mts.map +1 -1
  30. package/dist/browser/components/cytoscape-extensions/WithExtensions.d.ts.map +1 -1
  31. package/dist/browser/components/cytoscape-extensions/WithExtensions.js +0 -2
  32. package/dist/browser/components/cytoscape-extensions/WithExtensions.js.map +1 -1
  33. package/dist/browser/components/cytoscape-extensions/index.cjs +0 -2
  34. package/dist/browser/components/cytoscape-extensions/index.cjs.map +1 -1
  35. package/dist/browser/components/cytoscape-extensions/index.js +0 -2
  36. package/dist/browser/components/cytoscape-extensions/index.js.map +1 -1
  37. package/dist/browser/components/index.cjs +257 -37
  38. package/dist/browser/components/index.cjs.map +1 -1
  39. package/dist/browser/components/index.d.cts +1 -1
  40. package/dist/browser/components/index.d.cts.map +1 -1
  41. package/dist/browser/components/index.d.mts +1 -1
  42. package/dist/browser/components/index.d.mts.map +1 -1
  43. package/dist/browser/components/index.d.ts +1 -1
  44. package/dist/browser/components/index.d.ts.map +1 -1
  45. package/dist/browser/components/index.js +253 -33
  46. package/dist/browser/components/index.js.map +1 -1
  47. package/dist/browser/components/lib/RelationalGraphProps.cjs.map +1 -1
  48. package/dist/browser/components/lib/RelationalGraphProps.d.cts +2 -2
  49. package/dist/browser/components/lib/RelationalGraphProps.d.cts.map +1 -1
  50. package/dist/browser/components/lib/RelationalGraphProps.d.mts +2 -2
  51. package/dist/browser/components/lib/RelationalGraphProps.d.mts.map +1 -1
  52. package/dist/browser/components/lib/RelationalGraphProps.d.ts +2 -2
  53. package/dist/browser/components/lib/RelationalGraphProps.d.ts.map +1 -1
  54. package/dist/browser/components/{ModuleCardParser.cjs → module/CardParser.cjs} +7 -7
  55. package/dist/browser/components/module/CardParser.cjs.map +1 -0
  56. package/dist/browser/components/{ModuleCardParser.d.mts → module/CardParser.d.cts} +1 -1
  57. package/dist/browser/components/module/CardParser.d.cts.map +1 -0
  58. package/dist/browser/components/{ModuleCardParser.d.ts → module/CardParser.d.mts} +1 -1
  59. package/dist/browser/components/module/CardParser.d.mts.map +1 -0
  60. package/dist/browser/components/{ModuleCardParser.d.cts → module/CardParser.d.ts} +1 -1
  61. package/dist/browser/components/module/CardParser.d.ts.map +1 -0
  62. package/dist/browser/components/{ModuleCardParser.js → module/CardParser.js} +6 -6
  63. package/dist/browser/components/module/CardParser.js.map +1 -0
  64. package/dist/browser/components/{ModuleGraphFlexBox.cjs → module/graph/GraphFlexBox.cjs} +202 -122
  65. package/dist/browser/components/module/graph/GraphFlexBox.cjs.map +1 -0
  66. package/dist/browser/components/{ModuleGraphFlexBox.d.mts → module/graph/GraphFlexBox.d.cts} +2 -1
  67. package/dist/browser/components/module/graph/GraphFlexBox.d.cts.map +1 -0
  68. package/dist/browser/components/{ModuleGraphFlexBox.d.ts → module/graph/GraphFlexBox.d.mts} +2 -1
  69. package/dist/browser/components/module/graph/GraphFlexBox.d.mts.map +1 -0
  70. package/dist/{node/components/ModuleGraphFlexBox.d.cts → browser/components/module/graph/GraphFlexBox.d.ts} +2 -1
  71. package/dist/browser/components/module/graph/GraphFlexBox.d.ts.map +1 -0
  72. package/dist/browser/components/module/graph/GraphFlexBox.js +570 -0
  73. package/dist/browser/components/module/graph/GraphFlexBox.js.map +1 -0
  74. package/dist/browser/components/module/graph/NodeHover.cjs +91 -0
  75. package/dist/browser/components/module/graph/NodeHover.cjs.map +1 -0
  76. package/dist/browser/components/module/graph/NodeHover.d.cts +7 -0
  77. package/dist/browser/components/module/graph/NodeHover.d.cts.map +1 -0
  78. package/dist/browser/components/module/graph/NodeHover.d.mts +7 -0
  79. package/dist/browser/components/module/graph/NodeHover.d.mts.map +1 -0
  80. package/dist/browser/components/module/graph/NodeHover.d.ts +7 -0
  81. package/dist/browser/components/module/graph/NodeHover.d.ts.map +1 -0
  82. package/dist/browser/components/module/graph/NodeHover.js +70 -0
  83. package/dist/browser/components/module/graph/NodeHover.js.map +1 -0
  84. package/dist/browser/components/module/graph/Popper.cjs +39 -0
  85. package/dist/browser/components/module/graph/Popper.cjs.map +1 -0
  86. package/dist/browser/components/module/graph/Popper.d.cts +9 -0
  87. package/dist/browser/components/module/graph/Popper.d.cts.map +1 -0
  88. package/dist/browser/components/module/graph/Popper.d.mts +9 -0
  89. package/dist/browser/components/module/graph/Popper.d.mts.map +1 -0
  90. package/dist/browser/components/module/graph/Popper.d.ts +9 -0
  91. package/dist/browser/components/module/graph/Popper.d.ts.map +1 -0
  92. package/dist/browser/components/module/graph/Popper.js +18 -0
  93. package/dist/browser/components/module/graph/Popper.js.map +1 -0
  94. package/dist/browser/components/module/graph/index.cjs +595 -0
  95. package/dist/browser/components/module/graph/index.cjs.map +1 -0
  96. package/dist/browser/components/module/graph/index.d.cts +2 -0
  97. package/dist/browser/components/module/graph/index.d.cts.map +1 -0
  98. package/dist/browser/components/module/graph/index.d.mts +2 -0
  99. package/dist/browser/components/module/graph/index.d.mts.map +1 -0
  100. package/dist/browser/components/module/graph/index.d.ts +2 -0
  101. package/dist/browser/components/module/graph/index.d.ts.map +1 -0
  102. package/dist/browser/components/{ModuleGraphFlexBox.js → module/graph/index.js} +193 -113
  103. package/dist/browser/components/module/graph/index.js.map +1 -0
  104. package/dist/browser/components/module/index.cjs +613 -0
  105. package/dist/browser/components/module/index.cjs.map +1 -0
  106. package/dist/browser/components/module/index.d.cts +3 -0
  107. package/dist/browser/components/module/index.d.cts.map +1 -0
  108. package/dist/browser/components/module/index.d.mts +3 -0
  109. package/dist/browser/components/module/index.d.mts.map +1 -0
  110. package/dist/browser/components/module/index.d.ts +3 -0
  111. package/dist/browser/components/module/index.d.ts.map +1 -0
  112. package/dist/browser/components/module/index.js +588 -0
  113. package/dist/browser/components/module/index.js.map +1 -0
  114. package/dist/browser/hooks/cytoscape/index.cjs +102 -84
  115. package/dist/browser/hooks/cytoscape/index.cjs.map +1 -1
  116. package/dist/browser/hooks/cytoscape/index.d.cts +3 -2
  117. package/dist/browser/hooks/cytoscape/index.d.cts.map +1 -1
  118. package/dist/browser/hooks/cytoscape/index.d.mts +3 -2
  119. package/dist/browser/hooks/cytoscape/index.d.mts.map +1 -1
  120. package/dist/browser/hooks/cytoscape/index.d.ts +3 -2
  121. package/dist/browser/hooks/cytoscape/index.d.ts.map +1 -1
  122. package/dist/browser/hooks/cytoscape/index.js +93 -75
  123. package/dist/browser/hooks/cytoscape/index.js.map +1 -1
  124. package/dist/browser/hooks/cytoscape/useCytoscapeOptions.cjs +5 -3
  125. package/dist/browser/hooks/cytoscape/useCytoscapeOptions.cjs.map +1 -1
  126. package/dist/browser/hooks/cytoscape/useCytoscapeOptions.d.cts.map +1 -1
  127. package/dist/browser/hooks/cytoscape/useCytoscapeOptions.d.mts.map +1 -1
  128. package/dist/browser/hooks/cytoscape/useCytoscapeOptions.d.ts.map +1 -1
  129. package/dist/browser/hooks/cytoscape/useCytoscapeOptions.js +5 -3
  130. package/dist/browser/hooks/cytoscape/useCytoscapeOptions.js.map +1 -1
  131. package/dist/browser/hooks/cytoscape/useCytoscapeStyle.d.cts +1 -1
  132. package/dist/browser/hooks/cytoscape/useCytoscapeStyle.d.cts.map +1 -1
  133. package/dist/browser/hooks/cytoscape/useCytoscapeStyle.d.mts +1 -1
  134. package/dist/browser/hooks/cytoscape/useCytoscapeStyle.d.mts.map +1 -1
  135. package/dist/browser/hooks/cytoscape/useCytoscapeStyle.d.ts +1 -1
  136. package/dist/browser/hooks/cytoscape/useCytoscapeStyle.d.ts.map +1 -1
  137. package/dist/browser/hooks/cytoscape/useHoveredNode.cjs +60 -0
  138. package/dist/browser/hooks/cytoscape/useHoveredNode.cjs.map +1 -0
  139. package/dist/browser/hooks/cytoscape/useHoveredNode.d.cts +3 -0
  140. package/dist/browser/hooks/cytoscape/useHoveredNode.d.cts.map +1 -0
  141. package/dist/browser/hooks/cytoscape/useHoveredNode.d.mts +3 -0
  142. package/dist/browser/hooks/cytoscape/useHoveredNode.d.mts.map +1 -0
  143. package/dist/browser/hooks/cytoscape/useHoveredNode.d.ts +3 -0
  144. package/dist/browser/hooks/cytoscape/useHoveredNode.d.ts.map +1 -0
  145. package/dist/browser/hooks/cytoscape/useHoveredNode.js +39 -0
  146. package/dist/browser/hooks/cytoscape/useHoveredNode.js.map +1 -0
  147. package/dist/browser/hooks/cytoscape/useNewElements.cjs +2 -3
  148. package/dist/browser/hooks/cytoscape/useNewElements.cjs.map +1 -1
  149. package/dist/browser/hooks/cytoscape/useNewElements.d.cts +2 -6
  150. package/dist/browser/hooks/cytoscape/useNewElements.d.cts.map +1 -1
  151. package/dist/browser/hooks/cytoscape/useNewElements.d.mts +2 -6
  152. package/dist/browser/hooks/cytoscape/useNewElements.d.mts.map +1 -1
  153. package/dist/browser/hooks/cytoscape/useNewElements.d.ts +2 -6
  154. package/dist/browser/hooks/cytoscape/useNewElements.d.ts.map +1 -1
  155. package/dist/browser/hooks/cytoscape/useNewElements.js +3 -4
  156. package/dist/browser/hooks/cytoscape/useNewElements.js.map +1 -1
  157. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.cjs +7 -12
  158. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.cjs.map +1 -1
  159. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.d.cts +1 -1
  160. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.d.mts +1 -1
  161. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.d.ts +1 -1
  162. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.js +7 -12
  163. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.js.map +1 -1
  164. package/dist/browser/hooks/cytoscape/useRenderNewElements.cjs +56 -0
  165. package/dist/browser/hooks/cytoscape/useRenderNewElements.cjs.map +1 -0
  166. package/dist/browser/hooks/cytoscape/useRenderNewElements.d.cts +3 -0
  167. package/dist/browser/hooks/cytoscape/useRenderNewElements.d.cts.map +1 -0
  168. package/dist/browser/hooks/cytoscape/useRenderNewElements.d.mts +3 -0
  169. package/dist/browser/hooks/cytoscape/useRenderNewElements.d.mts.map +1 -0
  170. package/dist/browser/hooks/cytoscape/useRenderNewElements.d.ts +3 -0
  171. package/dist/browser/hooks/cytoscape/useRenderNewElements.d.ts.map +1 -0
  172. package/dist/browser/hooks/cytoscape/useRenderNewElements.js +35 -0
  173. package/dist/browser/hooks/cytoscape/useRenderNewElements.js.map +1 -0
  174. package/dist/browser/hooks/cytoscape/useSelectedElement.cjs +53 -0
  175. package/dist/browser/hooks/cytoscape/useSelectedElement.cjs.map +1 -0
  176. package/dist/browser/hooks/cytoscape/useSelectedElement.d.cts +3 -0
  177. package/dist/browser/hooks/cytoscape/useSelectedElement.d.cts.map +1 -0
  178. package/dist/browser/hooks/cytoscape/useSelectedElement.d.mts +3 -0
  179. package/dist/browser/hooks/cytoscape/useSelectedElement.d.mts.map +1 -0
  180. package/dist/browser/hooks/cytoscape/useSelectedElement.d.ts +3 -0
  181. package/dist/browser/hooks/cytoscape/useSelectedElement.d.ts.map +1 -0
  182. package/dist/browser/hooks/cytoscape/useSelectedElement.js +32 -0
  183. package/dist/browser/hooks/cytoscape/useSelectedElement.js.map +1 -0
  184. package/dist/browser/hooks/index.cjs +102 -84
  185. package/dist/browser/hooks/index.cjs.map +1 -1
  186. package/dist/browser/hooks/index.js +93 -75
  187. package/dist/browser/hooks/index.js.map +1 -1
  188. package/dist/browser/index.cjs +235 -98
  189. package/dist/browser/index.cjs.map +1 -1
  190. package/dist/browser/index.d.cts +1 -0
  191. package/dist/browser/index.d.cts.map +1 -1
  192. package/dist/browser/index.d.mts +1 -0
  193. package/dist/browser/index.d.mts.map +1 -1
  194. package/dist/browser/index.d.ts +1 -0
  195. package/dist/browser/index.d.ts.map +1 -1
  196. package/dist/browser/index.js +232 -95
  197. package/dist/browser/index.js.map +1 -1
  198. package/dist/docs.json +28977 -5166
  199. package/dist/node/Cytoscape/index.cjs.map +1 -1
  200. package/dist/node/Cytoscape/index.js.map +1 -1
  201. package/dist/node/Cytoscape/lib/index.cjs.map +1 -1
  202. package/dist/node/Cytoscape/lib/index.js.map +1 -1
  203. package/dist/node/Cytoscape/lib/layout/ConcentricLayout.cjs.map +1 -1
  204. package/dist/node/Cytoscape/lib/layout/ConcentricLayout.d.cts +2 -2
  205. package/dist/node/Cytoscape/lib/layout/ConcentricLayout.d.cts.map +1 -1
  206. package/dist/node/Cytoscape/lib/layout/ConcentricLayout.d.mts +2 -2
  207. package/dist/node/Cytoscape/lib/layout/ConcentricLayout.d.mts.map +1 -1
  208. package/dist/node/Cytoscape/lib/layout/ConcentricLayout.d.ts +2 -2
  209. package/dist/node/Cytoscape/lib/layout/ConcentricLayout.d.ts.map +1 -1
  210. package/dist/node/Cytoscape/lib/layout/ConcentricLayout.js.map +1 -1
  211. package/dist/node/Cytoscape/lib/layout/index.cjs.map +1 -1
  212. package/dist/node/Cytoscape/lib/layout/index.js.map +1 -1
  213. package/dist/node/components/ProvidedNodeRenderer.cjs +22 -17
  214. package/dist/node/components/ProvidedNodeRenderer.cjs.map +1 -1
  215. package/dist/node/components/ProvidedNodeRenderer.js +23 -18
  216. package/dist/node/components/ProvidedNodeRenderer.js.map +1 -1
  217. package/dist/node/components/RelationalGraph.cjs +5 -4
  218. package/dist/node/components/RelationalGraph.cjs.map +1 -1
  219. package/dist/node/components/RelationalGraph.d.cts.map +1 -1
  220. package/dist/node/components/RelationalGraph.d.mts.map +1 -1
  221. package/dist/node/components/RelationalGraph.d.ts.map +1 -1
  222. package/dist/node/components/RelationalGraph.js +6 -5
  223. package/dist/node/components/RelationalGraph.js.map +1 -1
  224. package/dist/node/components/cytoscape-extensions/WithExtensions.cjs +0 -2
  225. package/dist/node/components/cytoscape-extensions/WithExtensions.cjs.map +1 -1
  226. package/dist/node/components/cytoscape-extensions/WithExtensions.d.cts.map +1 -1
  227. package/dist/node/components/cytoscape-extensions/WithExtensions.d.mts.map +1 -1
  228. package/dist/node/components/cytoscape-extensions/WithExtensions.d.ts.map +1 -1
  229. package/dist/node/components/cytoscape-extensions/WithExtensions.js +0 -2
  230. package/dist/node/components/cytoscape-extensions/WithExtensions.js.map +1 -1
  231. package/dist/node/components/cytoscape-extensions/index.cjs +0 -2
  232. package/dist/node/components/cytoscape-extensions/index.cjs.map +1 -1
  233. package/dist/node/components/cytoscape-extensions/index.js +0 -2
  234. package/dist/node/components/cytoscape-extensions/index.js.map +1 -1
  235. package/dist/node/components/index.cjs +259 -37
  236. package/dist/node/components/index.cjs.map +1 -1
  237. package/dist/node/components/index.d.cts +1 -1
  238. package/dist/node/components/index.d.cts.map +1 -1
  239. package/dist/node/components/index.d.mts +1 -1
  240. package/dist/node/components/index.d.mts.map +1 -1
  241. package/dist/node/components/index.d.ts +1 -1
  242. package/dist/node/components/index.d.ts.map +1 -1
  243. package/dist/node/components/index.js +253 -33
  244. package/dist/node/components/index.js.map +1 -1
  245. package/dist/node/components/lib/RelationalGraphProps.cjs.map +1 -1
  246. package/dist/node/components/lib/RelationalGraphProps.d.cts +2 -2
  247. package/dist/node/components/lib/RelationalGraphProps.d.cts.map +1 -1
  248. package/dist/node/components/lib/RelationalGraphProps.d.mts +2 -2
  249. package/dist/node/components/lib/RelationalGraphProps.d.mts.map +1 -1
  250. package/dist/node/components/lib/RelationalGraphProps.d.ts +2 -2
  251. package/dist/node/components/lib/RelationalGraphProps.d.ts.map +1 -1
  252. package/dist/node/components/{ModuleCardParser.cjs → module/CardParser.cjs} +7 -7
  253. package/dist/node/components/module/CardParser.cjs.map +1 -0
  254. package/dist/node/components/{ModuleCardParser.d.cts → module/CardParser.d.cts} +1 -1
  255. package/dist/node/components/module/CardParser.d.cts.map +1 -0
  256. package/dist/node/components/module/CardParser.d.mts +7 -0
  257. package/dist/node/components/module/CardParser.d.mts.map +1 -0
  258. package/dist/node/components/module/CardParser.d.ts +7 -0
  259. package/dist/node/components/module/CardParser.d.ts.map +1 -0
  260. package/dist/node/components/{ModuleCardParser.js → module/CardParser.js} +6 -6
  261. package/dist/node/components/module/CardParser.js.map +1 -0
  262. package/dist/node/components/{ModuleGraphFlexBox.cjs → module/graph/GraphFlexBox.cjs} +204 -123
  263. package/dist/node/components/module/graph/GraphFlexBox.cjs.map +1 -0
  264. package/dist/{browser/components/ModuleGraphFlexBox.d.cts → node/components/module/graph/GraphFlexBox.d.cts} +2 -1
  265. package/dist/node/components/module/graph/GraphFlexBox.d.cts.map +1 -0
  266. package/dist/node/components/module/graph/GraphFlexBox.d.mts +9 -0
  267. package/dist/node/components/module/graph/GraphFlexBox.d.mts.map +1 -0
  268. package/dist/node/components/module/graph/GraphFlexBox.d.ts +9 -0
  269. package/dist/node/components/module/graph/GraphFlexBox.d.ts.map +1 -0
  270. package/dist/node/components/module/graph/GraphFlexBox.js +570 -0
  271. package/dist/node/components/module/graph/GraphFlexBox.js.map +1 -0
  272. package/dist/node/components/module/graph/NodeHover.cjs +95 -0
  273. package/dist/node/components/module/graph/NodeHover.cjs.map +1 -0
  274. package/dist/node/components/module/graph/NodeHover.d.cts +7 -0
  275. package/dist/node/components/module/graph/NodeHover.d.cts.map +1 -0
  276. package/dist/node/components/module/graph/NodeHover.d.mts +7 -0
  277. package/dist/node/components/module/graph/NodeHover.d.mts.map +1 -0
  278. package/dist/node/components/module/graph/NodeHover.d.ts +7 -0
  279. package/dist/node/components/module/graph/NodeHover.d.ts.map +1 -0
  280. package/dist/node/components/module/graph/NodeHover.js +70 -0
  281. package/dist/node/components/module/graph/NodeHover.js.map +1 -0
  282. package/dist/node/components/module/graph/Popper.cjs +43 -0
  283. package/dist/node/components/module/graph/Popper.cjs.map +1 -0
  284. package/dist/node/components/module/graph/Popper.d.cts +9 -0
  285. package/dist/node/components/module/graph/Popper.d.cts.map +1 -0
  286. package/dist/node/components/module/graph/Popper.d.mts +9 -0
  287. package/dist/node/components/module/graph/Popper.d.mts.map +1 -0
  288. package/dist/node/components/module/graph/Popper.d.ts +9 -0
  289. package/dist/node/components/module/graph/Popper.d.ts.map +1 -0
  290. package/dist/node/components/module/graph/Popper.js +18 -0
  291. package/dist/node/components/module/graph/Popper.js.map +1 -0
  292. package/dist/node/components/module/graph/index.cjs +600 -0
  293. package/dist/node/components/module/graph/index.cjs.map +1 -0
  294. package/dist/node/components/module/graph/index.d.cts +2 -0
  295. package/dist/node/components/module/graph/index.d.cts.map +1 -0
  296. package/dist/node/components/module/graph/index.d.mts +2 -0
  297. package/dist/node/components/module/graph/index.d.mts.map +1 -0
  298. package/dist/node/components/module/graph/index.d.ts +2 -0
  299. package/dist/node/components/module/graph/index.d.ts.map +1 -0
  300. package/dist/node/components/{ModuleGraphFlexBox.js → module/graph/index.js} +193 -113
  301. package/dist/node/components/module/graph/index.js.map +1 -0
  302. package/dist/node/components/module/index.cjs +619 -0
  303. package/dist/node/components/module/index.cjs.map +1 -0
  304. package/dist/node/components/module/index.d.cts +3 -0
  305. package/dist/node/components/module/index.d.cts.map +1 -0
  306. package/dist/node/components/module/index.d.mts +3 -0
  307. package/dist/node/components/module/index.d.mts.map +1 -0
  308. package/dist/node/components/module/index.d.ts +3 -0
  309. package/dist/node/components/module/index.d.ts.map +1 -0
  310. package/dist/node/components/module/index.js +588 -0
  311. package/dist/node/components/module/index.js.map +1 -0
  312. package/dist/node/hooks/cytoscape/index.cjs +106 -87
  313. package/dist/node/hooks/cytoscape/index.cjs.map +1 -1
  314. package/dist/node/hooks/cytoscape/index.d.cts +3 -2
  315. package/dist/node/hooks/cytoscape/index.d.cts.map +1 -1
  316. package/dist/node/hooks/cytoscape/index.d.mts +3 -2
  317. package/dist/node/hooks/cytoscape/index.d.mts.map +1 -1
  318. package/dist/node/hooks/cytoscape/index.d.ts +3 -2
  319. package/dist/node/hooks/cytoscape/index.d.ts.map +1 -1
  320. package/dist/node/hooks/cytoscape/index.js +93 -75
  321. package/dist/node/hooks/cytoscape/index.js.map +1 -1
  322. package/dist/node/hooks/cytoscape/useCytoscapeOptions.cjs +5 -3
  323. package/dist/node/hooks/cytoscape/useCytoscapeOptions.cjs.map +1 -1
  324. package/dist/node/hooks/cytoscape/useCytoscapeOptions.d.cts.map +1 -1
  325. package/dist/node/hooks/cytoscape/useCytoscapeOptions.d.mts.map +1 -1
  326. package/dist/node/hooks/cytoscape/useCytoscapeOptions.d.ts.map +1 -1
  327. package/dist/node/hooks/cytoscape/useCytoscapeOptions.js +5 -3
  328. package/dist/node/hooks/cytoscape/useCytoscapeOptions.js.map +1 -1
  329. package/dist/node/hooks/cytoscape/useCytoscapeStyle.d.cts +1 -1
  330. package/dist/node/hooks/cytoscape/useCytoscapeStyle.d.cts.map +1 -1
  331. package/dist/node/hooks/cytoscape/useCytoscapeStyle.d.mts +1 -1
  332. package/dist/node/hooks/cytoscape/useCytoscapeStyle.d.mts.map +1 -1
  333. package/dist/node/hooks/cytoscape/useCytoscapeStyle.d.ts +1 -1
  334. package/dist/node/hooks/cytoscape/useCytoscapeStyle.d.ts.map +1 -1
  335. package/dist/node/hooks/cytoscape/useHoveredNode.cjs +64 -0
  336. package/dist/node/hooks/cytoscape/useHoveredNode.cjs.map +1 -0
  337. package/dist/node/hooks/cytoscape/useHoveredNode.d.cts +3 -0
  338. package/dist/node/hooks/cytoscape/useHoveredNode.d.cts.map +1 -0
  339. package/dist/node/hooks/cytoscape/useHoveredNode.d.mts +3 -0
  340. package/dist/node/hooks/cytoscape/useHoveredNode.d.mts.map +1 -0
  341. package/dist/node/hooks/cytoscape/useHoveredNode.d.ts +3 -0
  342. package/dist/node/hooks/cytoscape/useHoveredNode.d.ts.map +1 -0
  343. package/dist/node/hooks/cytoscape/useHoveredNode.js +39 -0
  344. package/dist/node/hooks/cytoscape/useHoveredNode.js.map +1 -0
  345. package/dist/node/hooks/cytoscape/useNewElements.cjs +2 -3
  346. package/dist/node/hooks/cytoscape/useNewElements.cjs.map +1 -1
  347. package/dist/node/hooks/cytoscape/useNewElements.d.cts +2 -6
  348. package/dist/node/hooks/cytoscape/useNewElements.d.cts.map +1 -1
  349. package/dist/node/hooks/cytoscape/useNewElements.d.mts +2 -6
  350. package/dist/node/hooks/cytoscape/useNewElements.d.mts.map +1 -1
  351. package/dist/node/hooks/cytoscape/useNewElements.d.ts +2 -6
  352. package/dist/node/hooks/cytoscape/useNewElements.d.ts.map +1 -1
  353. package/dist/node/hooks/cytoscape/useNewElements.js +3 -4
  354. package/dist/node/hooks/cytoscape/useNewElements.js.map +1 -1
  355. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.cjs +7 -12
  356. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.cjs.map +1 -1
  357. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.d.cts +1 -1
  358. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.d.mts +1 -1
  359. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.d.ts +1 -1
  360. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.js +7 -12
  361. package/dist/node/hooks/cytoscape/useRelationalGraphOptions.js.map +1 -1
  362. package/dist/node/hooks/cytoscape/useRenderNewElements.cjs +60 -0
  363. package/dist/node/hooks/cytoscape/useRenderNewElements.cjs.map +1 -0
  364. package/dist/node/hooks/cytoscape/useRenderNewElements.d.cts +3 -0
  365. package/dist/node/hooks/cytoscape/useRenderNewElements.d.cts.map +1 -0
  366. package/dist/node/hooks/cytoscape/useRenderNewElements.d.mts +3 -0
  367. package/dist/node/hooks/cytoscape/useRenderNewElements.d.mts.map +1 -0
  368. package/dist/node/hooks/cytoscape/useRenderNewElements.d.ts +3 -0
  369. package/dist/node/hooks/cytoscape/useRenderNewElements.d.ts.map +1 -0
  370. package/dist/node/hooks/cytoscape/useRenderNewElements.js +35 -0
  371. package/dist/node/hooks/cytoscape/useRenderNewElements.js.map +1 -0
  372. package/dist/node/hooks/cytoscape/useSelectedElement.cjs +57 -0
  373. package/dist/node/hooks/cytoscape/useSelectedElement.cjs.map +1 -0
  374. package/dist/node/hooks/cytoscape/useSelectedElement.d.cts +3 -0
  375. package/dist/node/hooks/cytoscape/useSelectedElement.d.cts.map +1 -0
  376. package/dist/node/hooks/cytoscape/useSelectedElement.d.mts +3 -0
  377. package/dist/node/hooks/cytoscape/useSelectedElement.d.mts.map +1 -0
  378. package/dist/node/hooks/cytoscape/useSelectedElement.d.ts +3 -0
  379. package/dist/node/hooks/cytoscape/useSelectedElement.d.ts.map +1 -0
  380. package/dist/node/hooks/cytoscape/useSelectedElement.js +32 -0
  381. package/dist/node/hooks/cytoscape/useSelectedElement.js.map +1 -0
  382. package/dist/node/hooks/index.cjs +106 -87
  383. package/dist/node/hooks/index.cjs.map +1 -1
  384. package/dist/node/hooks/index.js +93 -75
  385. package/dist/node/hooks/index.js.map +1 -1
  386. package/dist/node/index.cjs +244 -101
  387. package/dist/node/index.cjs.map +1 -1
  388. package/dist/node/index.d.cts +1 -0
  389. package/dist/node/index.d.cts.map +1 -1
  390. package/dist/node/index.d.mts +1 -0
  391. package/dist/node/index.d.mts.map +1 -1
  392. package/dist/node/index.d.ts +1 -0
  393. package/dist/node/index.d.ts.map +1 -1
  394. package/dist/node/index.js +232 -95
  395. package/dist/node/index.js.map +1 -1
  396. package/package.json +12 -12
  397. package/src/Cytoscape/lib/layout/ConcentricLayout.ts +2 -2
  398. package/src/components/RelationalGraph.stories.tsx +4 -1
  399. package/src/components/RelationalGraph.tsx +16 -7
  400. package/src/components/cytoscape-extensions/WithExtensions.tsx +0 -2
  401. package/src/components/index.ts +1 -1
  402. package/src/components/lib/RelationalGraphProps.ts +2 -2
  403. package/src/components/{ModuleCardParser.stories.tsx → module/CardParser.stories.tsx} +1 -1
  404. package/src/components/{ModuleCardParser.tsx → module/CardParser.tsx} +4 -4
  405. package/src/components/{ModuleGraphFlexBox.stories.tsx → module/graph/GraphFlexBox.stories.tsx} +7 -10
  406. package/src/components/module/graph/GraphFlexBox.tsx +45 -0
  407. package/src/components/module/graph/NodeHover.tsx +68 -0
  408. package/src/components/module/graph/Popper.tsx +27 -0
  409. package/src/components/module/graph/index.ts +1 -0
  410. package/src/components/module/index.ts +2 -0
  411. package/src/hooks/cytoscape/index.ts +3 -2
  412. package/src/hooks/cytoscape/useCytoscapeOptions.ts +6 -3
  413. package/src/hooks/cytoscape/useHoveredNode.tsx +32 -0
  414. package/src/hooks/cytoscape/useNewElements.tsx +4 -5
  415. package/src/hooks/cytoscape/useRelationalGraphOptions.tsx +3 -3
  416. package/src/hooks/cytoscape/useRenderNewElements.tsx +20 -0
  417. package/src/hooks/cytoscape/useSelectedElement.tsx +23 -0
  418. package/src/index.ts +1 -0
  419. package/src/types/global.d.ts +0 -5
  420. package/dist/browser/components/ModuleCardParser.cjs.map +0 -1
  421. package/dist/browser/components/ModuleCardParser.d.cts.map +0 -1
  422. package/dist/browser/components/ModuleCardParser.d.mts.map +0 -1
  423. package/dist/browser/components/ModuleCardParser.d.ts.map +0 -1
  424. package/dist/browser/components/ModuleCardParser.js.map +0 -1
  425. package/dist/browser/components/ModuleGraphFlexBox.cjs.map +0 -1
  426. package/dist/browser/components/ModuleGraphFlexBox.d.cts.map +0 -1
  427. package/dist/browser/components/ModuleGraphFlexBox.d.mts.map +0 -1
  428. package/dist/browser/components/ModuleGraphFlexBox.d.ts.map +0 -1
  429. package/dist/browser/components/ModuleGraphFlexBox.js.map +0 -1
  430. package/dist/browser/components/WithCola.cjs +0 -48
  431. package/dist/browser/components/WithCola.cjs.map +0 -1
  432. package/dist/browser/components/WithCola.d.cts +0 -3
  433. package/dist/browser/components/WithCola.d.cts.map +0 -1
  434. package/dist/browser/components/WithCola.d.mts +0 -3
  435. package/dist/browser/components/WithCola.d.mts.map +0 -1
  436. package/dist/browser/components/WithCola.d.ts +0 -3
  437. package/dist/browser/components/WithCola.d.ts.map +0 -1
  438. package/dist/browser/components/WithCola.js +0 -17
  439. package/dist/browser/components/WithCola.js.map +0 -1
  440. package/dist/browser/hooks/cytoscape/useAddNewElements.cjs +0 -87
  441. package/dist/browser/hooks/cytoscape/useAddNewElements.cjs.map +0 -1
  442. package/dist/browser/hooks/cytoscape/useAddNewElements.d.cts +0 -3
  443. package/dist/browser/hooks/cytoscape/useAddNewElements.d.cts.map +0 -1
  444. package/dist/browser/hooks/cytoscape/useAddNewElements.d.mts +0 -3
  445. package/dist/browser/hooks/cytoscape/useAddNewElements.d.mts.map +0 -1
  446. package/dist/browser/hooks/cytoscape/useAddNewElements.d.ts +0 -3
  447. package/dist/browser/hooks/cytoscape/useAddNewElements.d.ts.map +0 -1
  448. package/dist/browser/hooks/cytoscape/useAddNewElements.js +0 -66
  449. package/dist/browser/hooks/cytoscape/useAddNewElements.js.map +0 -1
  450. package/dist/browser/hooks/cytoscape/usePopperListener.cjs +0 -56
  451. package/dist/browser/hooks/cytoscape/usePopperListener.cjs.map +0 -1
  452. package/dist/browser/hooks/cytoscape/usePopperListener.d.cts +0 -3
  453. package/dist/browser/hooks/cytoscape/usePopperListener.d.cts.map +0 -1
  454. package/dist/browser/hooks/cytoscape/usePopperListener.d.mts +0 -3
  455. package/dist/browser/hooks/cytoscape/usePopperListener.d.mts.map +0 -1
  456. package/dist/browser/hooks/cytoscape/usePopperListener.d.ts +0 -3
  457. package/dist/browser/hooks/cytoscape/usePopperListener.d.ts.map +0 -1
  458. package/dist/browser/hooks/cytoscape/usePopperListener.js +0 -35
  459. package/dist/browser/hooks/cytoscape/usePopperListener.js.map +0 -1
  460. package/dist/node/components/ModuleCardParser.cjs.map +0 -1
  461. package/dist/node/components/ModuleCardParser.d.cts.map +0 -1
  462. package/dist/node/components/ModuleCardParser.d.mts +0 -7
  463. package/dist/node/components/ModuleCardParser.d.mts.map +0 -1
  464. package/dist/node/components/ModuleCardParser.d.ts +0 -7
  465. package/dist/node/components/ModuleCardParser.d.ts.map +0 -1
  466. package/dist/node/components/ModuleCardParser.js.map +0 -1
  467. package/dist/node/components/ModuleGraphFlexBox.cjs.map +0 -1
  468. package/dist/node/components/ModuleGraphFlexBox.d.cts.map +0 -1
  469. package/dist/node/components/ModuleGraphFlexBox.d.mts +0 -8
  470. package/dist/node/components/ModuleGraphFlexBox.d.mts.map +0 -1
  471. package/dist/node/components/ModuleGraphFlexBox.d.ts +0 -8
  472. package/dist/node/components/ModuleGraphFlexBox.d.ts.map +0 -1
  473. package/dist/node/components/ModuleGraphFlexBox.js.map +0 -1
  474. package/dist/node/components/WithCola.cjs +0 -52
  475. package/dist/node/components/WithCola.cjs.map +0 -1
  476. package/dist/node/components/WithCola.d.cts +0 -3
  477. package/dist/node/components/WithCola.d.cts.map +0 -1
  478. package/dist/node/components/WithCola.d.mts +0 -3
  479. package/dist/node/components/WithCola.d.mts.map +0 -1
  480. package/dist/node/components/WithCola.d.ts +0 -3
  481. package/dist/node/components/WithCola.d.ts.map +0 -1
  482. package/dist/node/components/WithCola.js +0 -17
  483. package/dist/node/components/WithCola.js.map +0 -1
  484. package/dist/node/hooks/cytoscape/useAddNewElements.cjs +0 -91
  485. package/dist/node/hooks/cytoscape/useAddNewElements.cjs.map +0 -1
  486. package/dist/node/hooks/cytoscape/useAddNewElements.d.cts +0 -3
  487. package/dist/node/hooks/cytoscape/useAddNewElements.d.cts.map +0 -1
  488. package/dist/node/hooks/cytoscape/useAddNewElements.d.mts +0 -3
  489. package/dist/node/hooks/cytoscape/useAddNewElements.d.mts.map +0 -1
  490. package/dist/node/hooks/cytoscape/useAddNewElements.d.ts +0 -3
  491. package/dist/node/hooks/cytoscape/useAddNewElements.d.ts.map +0 -1
  492. package/dist/node/hooks/cytoscape/useAddNewElements.js +0 -66
  493. package/dist/node/hooks/cytoscape/useAddNewElements.js.map +0 -1
  494. package/dist/node/hooks/cytoscape/usePopperListener.cjs +0 -60
  495. package/dist/node/hooks/cytoscape/usePopperListener.cjs.map +0 -1
  496. package/dist/node/hooks/cytoscape/usePopperListener.d.cts +0 -3
  497. package/dist/node/hooks/cytoscape/usePopperListener.d.cts.map +0 -1
  498. package/dist/node/hooks/cytoscape/usePopperListener.d.mts +0 -3
  499. package/dist/node/hooks/cytoscape/usePopperListener.d.mts.map +0 -1
  500. package/dist/node/hooks/cytoscape/usePopperListener.d.ts +0 -3
  501. package/dist/node/hooks/cytoscape/usePopperListener.d.ts.map +0 -1
  502. package/dist/node/hooks/cytoscape/usePopperListener.js +0 -35
  503. package/dist/node/hooks/cytoscape/usePopperListener.js.map +0 -1
  504. package/src/components/ModuleGraphFlexBox.tsx +0 -56
  505. package/src/components/WithCola.tsx +0 -13
  506. package/src/hooks/cytoscape/useAddNewElements.tsx +0 -19
  507. package/src/hooks/cytoscape/usePopperListener.tsx +0 -40
@@ -20,25 +20,20 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/hooks/index.ts
21
21
  var hooks_exports = {};
22
22
  __export(hooks_exports, {
23
- useAddNewElements: () => useAddNewElements,
24
23
  useCytoscapeElements: () => useCytoscapeElements,
25
24
  useCytoscapeOptions: () => useCytoscapeOptions,
25
+ useHoveredNode: () => useHoveredNode,
26
26
  useNewElements: () => useNewElements,
27
- usePopperListener: () => usePopperListener,
28
- useRelationalGraphOptions: () => useRelationalGraphOptions
27
+ useRelationalGraphOptions: () => useRelationalGraphOptions,
28
+ useRenderNewElements: () => useRenderNewElements,
29
+ useSelectedElement: () => useSelectedElement
29
30
  });
30
31
  module.exports = __toCommonJS(hooks_exports);
31
32
 
32
- // src/hooks/cytoscape/useAddNewElements.tsx
33
- var import_react2 = require("react");
34
-
35
- // src/contexts/CytoscapeInstance/Context.ts
36
- var import_react_shared = require("@xyo-network/react-shared");
37
- var CytoscapeInstanceContext = (0, import_react_shared.createContextEx)();
38
-
39
- // src/contexts/CytoscapeInstance/use.ts
40
- var import_react_shared2 = require("@xyo-network/react-shared");
41
- var useCytoscapeInstance = (required = false) => (0, import_react_shared2.useContextEx)(CytoscapeInstanceContext, "CytoscapeInstance", required);
33
+ // src/hooks/cytoscape/useCytoscapeElements.ts
34
+ var import_react_async_effect = require("@xylabs/react-async-effect");
35
+ var import_node_model3 = require("@xyo-network/node-model");
36
+ var import_react = require("react");
42
37
 
43
38
  // src/Cytoscape/CytoscapeElements.ts
44
39
  var import_node_model2 = require("@xyo-network/node-model");
@@ -241,57 +236,9 @@ var EdgeStyled = (lineColor, targetArrowColor) => ({
241
236
  }
242
237
  });
243
238
 
244
- // src/hooks/cytoscape/usePopperListener.tsx
245
- var import_material = require("@mui/material");
246
- var import_react = require("react");
247
- var usePopperListener = () => {
248
- const theme = (0, import_material.useTheme)();
249
- const popperListener = (0, import_react.useCallback)(
250
- (node, hideLabels, cy) => {
251
- const div = document.createElement("div");
252
- const shadowColor = theme.palette.getContrastText(theme.palette.text.primary);
253
- const popper = node.popper({
254
- content: () => {
255
- div.innerHTML = node.data().name;
256
- div.style.opacity = "0";
257
- div.style.transition = "opacity .25s";
258
- div.style.textShadow = `0 0 3px ${shadowColor}`;
259
- document.body.appendChild(div);
260
- return div;
261
- }
262
- });
263
- const update = async () => {
264
- await popper.update();
265
- };
266
- node.on("position", update);
267
- node.on("mouseover", () => hideLabels ? div.style.opacity = "1" : void 0);
268
- node.on("mouseout", () => hideLabels ? div.style.opacity = "0" : void 0);
269
- cy == null ? void 0 : cy.on("pan zoom resize", update);
270
- },
271
- [theme]
272
- );
273
- return popperListener;
274
- };
275
-
276
- // src/hooks/cytoscape/useAddNewElements.tsx
277
- var useAddNewElements = (newElements = [], hideLabels) => {
278
- const { cy } = useCytoscapeInstance(true);
279
- const popperListener = usePopperListener();
280
- (0, import_react2.useEffect)(() => {
281
- if (newElements.length > 1) {
282
- const renderedElements = cy == null ? void 0 : cy.add(newElements);
283
- renderedElements == null ? void 0 : renderedElements.nodes().forEach((node) => popperListener(node, hideLabels, cy));
284
- cy == null ? void 0 : cy.layout(ColaLayout).run();
285
- }
286
- }, [cy, hideLabels, newElements, popperListener]);
287
- };
288
-
289
239
  // src/hooks/cytoscape/useCytoscapeElements.ts
290
- var import_react_async_effect = require("@xylabs/react-async-effect");
291
- var import_node_model3 = require("@xyo-network/node-model");
292
- var import_react3 = require("react");
293
240
  var useCytoscapeElements = (module2) => {
294
- const [elements, setElements] = (0, import_react3.useState)([]);
241
+ const [elements, setElements] = (0, import_react.useState)([]);
295
242
  (0, import_react_async_effect.useAsyncEffect)(
296
243
  // eslint-disable-next-line react-hooks/exhaustive-deps
297
244
  async () => {
@@ -302,7 +249,7 @@ var useCytoscapeElements = (module2) => {
302
249
  },
303
250
  [module2]
304
251
  );
305
- (0, import_react3.useEffect)(() => {
252
+ (0, import_react.useEffect)(() => {
306
253
  let attachedListener = void 0;
307
254
  let detachedListener = void 0;
308
255
  if (module2 && (0, import_node_model3.isNodeInstance)(module2)) {
@@ -324,19 +271,19 @@ var useCytoscapeElements = (module2) => {
324
271
  };
325
272
 
326
273
  // src/hooks/cytoscape/useCytoscapeOptions.ts
327
- var import_react6 = require("react");
274
+ var import_react4 = require("react");
328
275
 
329
276
  // src/hooks/cytoscape/useCytoscapeStyle.tsx
330
- var import_material3 = require("@mui/material");
331
- var import_react5 = require("react");
277
+ var import_material2 = require("@mui/material");
278
+ var import_react3 = require("react");
332
279
 
333
280
  // src/hooks/cytoscape/useIcons.tsx
334
- var import_material2 = require("@mui/material");
335
- var import_react4 = require("react");
281
+ var import_material = require("@mui/material");
282
+ var import_react2 = require("react");
336
283
  var import_jsx_runtime = require("react/jsx-runtime");
337
284
  var useIcons = () => {
338
- const theme = (0, import_material2.useTheme)();
339
- const icons = (0, import_react4.useMemo)(() => {
285
+ const theme = (0, import_material.useTheme)();
286
+ const icons = (0, import_react2.useMemo)(() => {
340
287
  const iconMap = generateIconMap();
341
288
  return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {
342
289
  const icon = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IconComponent, { fontSize: "small" });
@@ -349,9 +296,9 @@ var useIcons = () => {
349
296
 
350
297
  // src/hooks/cytoscape/useCytoscapeStyle.tsx
351
298
  var useCytoscapeStyle = (hideLabels = false) => {
352
- const theme = (0, import_material3.useTheme)();
299
+ const theme = (0, import_material2.useTheme)();
353
300
  const icons = useIcons();
354
- const style = (0, import_react5.useMemo)(
301
+ const style = (0, import_react3.useMemo)(
355
302
  () => [
356
303
  NodeIdStyles(theme.palette.text.primary, theme.palette.getContrastText(theme.palette.text.primary)),
357
304
  NodeStyled(icons, theme.palette.primary.main, hideLabels),
@@ -365,56 +312,128 @@ var useCytoscapeStyle = (hideLabels = false) => {
365
312
  // src/hooks/cytoscape/useCytoscapeOptions.ts
366
313
  var useCytoscapeOptions = (elements, style, layout) => {
367
314
  const defaultStyle = useCytoscapeStyle();
368
- const options = (0, import_react6.useMemo)(() => {
369
- if (elements && layout && style) {
315
+ const resolvedLayout = layout ?? ConcentricLayout;
316
+ const resolvedStyle = style ?? defaultStyle;
317
+ const options = (0, import_react4.useMemo)(() => {
318
+ if (elements && resolvedLayout && resolvedStyle) {
370
319
  return {
371
320
  elements,
372
- layout: layout ?? ConcentricLayout,
373
- style: style ?? defaultStyle
321
+ layout: resolvedLayout,
322
+ style: resolvedStyle
374
323
  };
375
324
  }
376
325
  }, [elements, layout, style]);
377
326
  return options;
378
327
  };
379
328
 
329
+ // src/hooks/cytoscape/useHoveredNode.tsx
330
+ var import_react5 = require("react");
331
+
332
+ // src/contexts/CytoscapeInstance/Context.ts
333
+ var import_react_shared = require("@xyo-network/react-shared");
334
+ var CytoscapeInstanceContext = (0, import_react_shared.createContextEx)();
335
+
336
+ // src/contexts/CytoscapeInstance/use.ts
337
+ var import_react_shared2 = require("@xyo-network/react-shared");
338
+ var useCytoscapeInstance = (required = false) => (0, import_react_shared2.useContextEx)(CytoscapeInstanceContext, "CytoscapeInstance", required);
339
+
340
+ // src/hooks/cytoscape/useHoveredNode.tsx
341
+ var useHoveredNode = (renderedElements) => {
342
+ const { cy } = useCytoscapeInstance(true);
343
+ const [hoveredNode, setHoveredNode] = (0, import_react5.useState)();
344
+ const nodeListener = (0, import_react5.useCallback)((node) => {
345
+ node.on("mouseover tap", () => {
346
+ setHoveredNode(node);
347
+ });
348
+ node.on("mouseout", () => {
349
+ setHoveredNode(void 0);
350
+ });
351
+ }, []);
352
+ (0, import_react5.useEffect)(() => {
353
+ if (renderedElements) {
354
+ renderedElements.nodes().forEach(nodeListener);
355
+ }
356
+ }, [nodeListener, renderedElements]);
357
+ (0, import_react5.useEffect)(() => {
358
+ cy == null ? void 0 : cy.ready(() => {
359
+ cy.nodes().forEach(nodeListener);
360
+ });
361
+ }, [cy, nodeListener]);
362
+ return hoveredNode;
363
+ };
364
+
380
365
  // src/hooks/cytoscape/useNewElements.tsx
381
366
  var import_react_node = require("@xyo-network/react-node");
382
- var import_react7 = require("react");
383
- var useNewElements = () => {
367
+ var import_react6 = require("react");
368
+ var useNewElements = (selectedElement) => {
384
369
  const { cy } = useCytoscapeInstance(true);
385
- const [selectedElement, setSelectedElement] = (0, import_react7.useState)();
386
370
  const { address: selectedAddress } = (selectedElement == null ? void 0 : selectedElement.data()) ?? {};
387
371
  const [module2] = (0, import_react_node.useModuleFromNode)(selectedAddress);
388
372
  const newElements = useCytoscapeElements(module2);
389
- (0, import_react7.useEffect)(() => {
373
+ (0, import_react6.useEffect)(() => {
390
374
  if (selectedAddress) {
391
375
  const element = cy == null ? void 0 : cy.$(`node[id="${selectedAddress}"]`);
392
376
  if (element == null ? void 0 : element.length)
393
377
  cy == null ? void 0 : cy.center(element);
394
378
  }
395
379
  }, [cy, selectedAddress]);
396
- return { newElements, setSelectedElement };
380
+ return newElements;
397
381
  };
398
382
 
399
383
  // src/hooks/cytoscape/useRelationalGraphOptions.tsx
400
- var import_react8 = require("react");
384
+ var import_react7 = require("react");
401
385
  var useRelationalGraphOptions = (module2) => {
402
- const [hideLabels, setHideLabels] = (0, import_react8.useState)(false);
386
+ const [hideLabels, setHideLabels] = (0, import_react7.useState)(true);
403
387
  const handleToggleLabels = () => {
404
388
  setHideLabels((oldValue) => !oldValue);
405
389
  };
406
390
  const elements = useCytoscapeElements(module2);
407
391
  const style = useCytoscapeStyle(hideLabels);
408
- const options = useCytoscapeOptions(elements, style, ColaLayout);
392
+ const options = useCytoscapeOptions(elements, style, ConcentricLayout);
409
393
  return { handleToggleLabels, hideLabels, options };
410
394
  };
395
+
396
+ // src/hooks/cytoscape/useRenderNewElements.tsx
397
+ var import_react8 = require("react");
398
+ var useRenderNewElements = (newElements = [], hideLabels) => {
399
+ const { cy } = useCytoscapeInstance(true);
400
+ const [renderedElements, setRenderedElements] = (0, import_react8.useState)();
401
+ (0, import_react8.useEffect)(() => {
402
+ if (newElements.length > 1) {
403
+ const renderedElements2 = cy == null ? void 0 : cy.add(newElements);
404
+ setRenderedElements(renderedElements2);
405
+ cy == null ? void 0 : cy.layout(ColaLayout).run();
406
+ }
407
+ }, [cy, hideLabels, newElements]);
408
+ return renderedElements;
409
+ };
410
+
411
+ // src/hooks/cytoscape/useSelectedElement.tsx
412
+ var import_react9 = require("react");
413
+ var useSelectedElement = () => {
414
+ const { cy } = useCytoscapeInstance(true);
415
+ const [selectedElement, setSelectedElement] = (0, import_react9.useState)();
416
+ (0, import_react9.useEffect)(() => {
417
+ const listener = (event) => {
418
+ const element = event.target[0];
419
+ if (element.isNode())
420
+ setSelectedElement(element);
421
+ };
422
+ cy == null ? void 0 : cy.on("select", listener);
423
+ return () => {
424
+ cy == null ? void 0 : cy.off("select", listener);
425
+ };
426
+ }, [cy, setSelectedElement]);
427
+ return selectedElement;
428
+ };
411
429
  // Annotate the CommonJS export names for ESM import in node:
412
430
  0 && (module.exports = {
413
- useAddNewElements,
414
431
  useCytoscapeElements,
415
432
  useCytoscapeOptions,
433
+ useHoveredNode,
416
434
  useNewElements,
417
- usePopperListener,
418
- useRelationalGraphOptions
435
+ useRelationalGraphOptions,
436
+ useRenderNewElements,
437
+ useSelectedElement
419
438
  });
420
439
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/index.ts","../../../src/hooks/cytoscape/useAddNewElements.tsx","../../../src/contexts/CytoscapeInstance/Context.ts","../../../src/contexts/CytoscapeInstance/use.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/usePopperListener.tsx","../../../src/hooks/cytoscape/useCytoscapeElements.ts","../../../src/hooks/cytoscape/useCytoscapeOptions.ts","../../../src/hooks/cytoscape/useCytoscapeStyle.tsx","../../../src/hooks/cytoscape/useIcons.tsx","../../../src/hooks/cytoscape/useNewElements.tsx","../../../src/hooks/cytoscape/useRelationalGraphOptions.tsx"],"sourcesContent":["export * from './cytoscape'\n","import { ElementDefinition } from 'cytoscape'\nimport { useEffect } from 'react'\n\nimport { useCytoscapeInstance } from '../../contexts'\nimport { ColaLayout } from '../../Cytoscape'\nimport { usePopperListener } from './usePopperListener'\n\nexport const useAddNewElements = (newElements: ElementDefinition[] = [], hideLabels?: boolean) => {\n const { cy } = useCytoscapeInstance(true)\n const popperListener = usePopperListener()\n\n useEffect(() => {\n if (newElements.length > 1) {\n const renderedElements = cy?.add(newElements)\n renderedElements?.nodes().forEach((node) => popperListener(node, hideLabels, cy))\n cy?.layout(ColaLayout).run()\n }\n }, [cy, hideLabels, newElements, popperListener])\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceState } from './State'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\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 { ModuleInstance } from '@xyo-network/module'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { ElementDefinition } from 'cytoscape'\n\nimport { parseModuleType } from './lib'\n\nexport class CytoscapeElements {\n static MaxNameLength = 20\n\n static buildEdge(rootNode: ElementDefinition, newNode: ElementDefinition) {\n return {\n data: {\n id: `${rootNode.data.id}/${newNode.data.id}`,\n source: rootNode.data.id,\n target: newNode.data.id,\n },\n }\n }\n\n static async buildElements(module: ModuleInstance): Promise<ElementDefinition[]> {\n const newRootNode = CytoscapeElements.buildRootNode(module)\n const newElements: ElementDefinition[] = [newRootNode]\n\n try {\n const childElements = await CytoscapeElements.recurseNodes(module)\n childElements?.forEach((module) => {\n const newNode = CytoscapeElements.buildNode(module, newRootNode.data.id)\n newElements.push(newNode)\n\n const newEdge = CytoscapeElements.buildEdge(newRootNode, newNode)\n newElements.push(newEdge)\n })\n\n return newElements\n } catch (e) {\n console.error('error resolving modules', e)\n return []\n }\n }\n\n static buildNode(module: ModuleInstance, rootNodeId?: string): ElementDefinition {\n const { address, config } = module\n const normalizedName = config.name ?? address.substring(0, 8)\n return {\n data: {\n address,\n id: address,\n name: normalizedName,\n rootNodeId,\n type: parseModuleType(module),\n },\n }\n }\n\n static buildRootNode = (module: ModuleInstance): ElementDefinition => {\n return CytoscapeElements.buildNode(module)\n }\n\n static normalizeName(name?: string) {\n if (!name) return\n if (name.length > this.MaxNameLength) return `${name.substring(0, 20)}...`\n return name\n }\n\n static async recurseNodes(module: ModuleInstance, maxTraversals = 1): Promise<ModuleInstance[]> {\n let localDepth = 0\n const childModules: ModuleInstance[] = []\n\n const traverse = async (nestedNode: ModuleInstance) => {\n if (localDepth < maxTraversals) {\n const modules = await nestedNode.resolve(undefined, { direction: 'down', maxDepth: 2 })\n await Promise.all(\n modules.map(async (child) => {\n if (child !== nestedNode && isNodeInstance(child)) {\n localDepth++\n await traverse(child)\n // don't re add the root module that was passed in\n } else if (child !== module) {\n childModules.push(child)\n }\n }),\n )\n }\n }\n\n await traverse(module)\n\n return childModules\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.getElementsByTagName('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 { CytoscapeOptions } from 'cytoscape'\n\nexport const ConcentricLayout: CytoscapeOptions['layout'] = {\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'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel'\nimport { isWitnessModule } from '@xyo-network/witness'\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'\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 NodeIdStyles = (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 NodeStyled = (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 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 { useTheme } from '@mui/material'\nimport { Core, NodeSingular } from 'cytoscape'\nimport { useCallback } from 'react'\n\nexport const usePopperListener = () => {\n const theme = useTheme()\n\n const popperListener = useCallback(\n (node: NodeSingular, hideLabels?: boolean, cy?: Core) => {\n const div = document.createElement('div')\n const shadowColor = theme.palette.getContrastText(theme.palette.text.primary)\n\n const popper = node.popper({\n content: () => {\n div.innerHTML = node.data().name\n div.style.opacity = '0'\n div.style.transition = 'opacity .25s'\n div.style.textShadow = `0 0 3px ${shadowColor}`\n\n document.body.appendChild(div)\n\n return div\n },\n })\n\n const update = async () => {\n await popper.update()\n }\n\n node.on('position', update)\n node.on('mouseover', () => (hideLabels ? (div.style.opacity = '1') : undefined))\n node.on('mouseout', () => (hideLabels ? (div.style.opacity = '0') : undefined))\n\n cy?.on('pan zoom resize', update)\n },\n [theme],\n )\n\n return popperListener\n}\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { EventUnsubscribeFunction, ModuleInstance } from '@xyo-network/module'\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?: ModuleInstance | null) => {\n const [elements, setElements] = useState<ElementDefinition[]>([])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n if (module) {\n const newElements = (await CytoscapeElements.buildElements(module)) ?? []\n setElements(newElements)\n }\n },\n [module],\n )\n\n useEffect(() => {\n let attachedListener: EventUnsubscribeFunction | undefined = undefined\n let detachedListener: EventUnsubscribeFunction | undefined = 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 { 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 options = useMemo<CytoscapeOptions | undefined>(() => {\n if (elements && layout && style) {\n return {\n elements,\n layout: layout ?? ConcentricLayout,\n style: style ?? defaultStyle,\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, NodeIdStyles, NodeStyled } 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 NodeIdStyles(theme.palette.text.primary, theme.palette.getContrastText(theme.palette.text.primary)),\n NodeStyled(icons, theme.palette.primary.main, hideLabels),\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 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 { useModuleFromNode } from '@xyo-network/react-node'\nimport { NodeDataDefinition } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../contexts'\nimport { useCytoscapeElements } from './useCytoscapeElements'\n\nexport const useNewElements = () => {\n const { cy } = useCytoscapeInstance(true)\n const [selectedElement, setSelectedElement] = useState<NodeDataDefinition>()\n const { address: selectedAddress } = selectedElement?.data() ?? {}\n const [module] = useModuleFromNode(selectedAddress)\n const newElements = useCytoscapeElements(module)\n\n useEffect(() => {\n if (selectedAddress) {\n const element = cy?.$(`node[id=\"${selectedAddress}\"]`)\n if (element?.length) cy?.center(element)\n }\n }, [cy, selectedAddress])\n\n return { newElements, setSelectedElement }\n}\n","import { ModuleInstance } from '@xyo-network/module'\nimport { useState } from 'react'\n\nimport { ColaLayout } from '../../Cytoscape'\nimport { useCytoscapeElements } from './useCytoscapeElements'\nimport { useCytoscapeOptions } from './useCytoscapeOptions'\nimport { useCytoscapeStyle } from './useCytoscapeStyle'\n\nexport const useRelationalGraphOptions = (module?: ModuleInstance) => {\n const [hideLabels, setHideLabels] = useState(false)\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, ColaLayout)\n\n return { handleToggleLabels, hideLabels, options }\n}\n"],"mappings":"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","names":["import_react","import_react_shared","import_node_model","module","module","Inventory2RoundedIcon","InsertLinkRoundedIcon","BubbleChartRoundedIcon","QuestionMarkRoundedIcon","HubIcon","TimerRoundedIcon","VisibilityRoundedIcon","import_node_model","import_react","module","import_react","import_material","import_react","import_material","import_react","import_react","module","import_react","module"]}
1
+ {"version":3,"sources":["../../../src/hooks/index.ts","../../../src/hooks/cytoscape/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/useCytoscapeOptions.ts","../../../src/hooks/cytoscape/useCytoscapeStyle.tsx","../../../src/hooks/cytoscape/useIcons.tsx","../../../src/hooks/cytoscape/useHoveredNode.tsx","../../../src/contexts/CytoscapeInstance/Context.ts","../../../src/contexts/CytoscapeInstance/use.ts","../../../src/hooks/cytoscape/useNewElements.tsx","../../../src/hooks/cytoscape/useRelationalGraphOptions.tsx","../../../src/hooks/cytoscape/useRenderNewElements.tsx","../../../src/hooks/cytoscape/useSelectedElement.tsx"],"sourcesContent":["export * from './cytoscape'\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { EventUnsubscribeFunction, ModuleInstance } from '@xyo-network/module'\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?: ModuleInstance | null) => {\n const [elements, setElements] = useState<ElementDefinition[]>([])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n if (module) {\n const newElements = (await CytoscapeElements.buildElements(module)) ?? []\n setElements(newElements)\n }\n },\n [module],\n )\n\n useEffect(() => {\n let attachedListener: EventUnsubscribeFunction | undefined = undefined\n let detachedListener: EventUnsubscribeFunction | undefined = 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 { ModuleInstance } from '@xyo-network/module'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { ElementDefinition } from 'cytoscape'\n\nimport { parseModuleType } from './lib'\n\nexport class CytoscapeElements {\n static MaxNameLength = 20\n\n static buildEdge(rootNode: ElementDefinition, newNode: ElementDefinition) {\n return {\n data: {\n id: `${rootNode.data.id}/${newNode.data.id}`,\n source: rootNode.data.id,\n target: newNode.data.id,\n },\n }\n }\n\n static async buildElements(module: ModuleInstance): Promise<ElementDefinition[]> {\n const newRootNode = CytoscapeElements.buildRootNode(module)\n const newElements: ElementDefinition[] = [newRootNode]\n\n try {\n const childElements = await CytoscapeElements.recurseNodes(module)\n childElements?.forEach((module) => {\n const newNode = CytoscapeElements.buildNode(module, newRootNode.data.id)\n newElements.push(newNode)\n\n const newEdge = CytoscapeElements.buildEdge(newRootNode, newNode)\n newElements.push(newEdge)\n })\n\n return newElements\n } catch (e) {\n console.error('error resolving modules', e)\n return []\n }\n }\n\n static buildNode(module: ModuleInstance, rootNodeId?: string): ElementDefinition {\n const { address, config } = module\n const normalizedName = config.name ?? address.substring(0, 8)\n return {\n data: {\n address,\n id: address,\n name: normalizedName,\n rootNodeId,\n type: parseModuleType(module),\n },\n }\n }\n\n static buildRootNode = (module: ModuleInstance): ElementDefinition => {\n return CytoscapeElements.buildNode(module)\n }\n\n static normalizeName(name?: string) {\n if (!name) return\n if (name.length > this.MaxNameLength) return `${name.substring(0, 20)}...`\n return name\n }\n\n static async recurseNodes(module: ModuleInstance, maxTraversals = 1): Promise<ModuleInstance[]> {\n let localDepth = 0\n const childModules: ModuleInstance[] = []\n\n const traverse = async (nestedNode: ModuleInstance) => {\n if (localDepth < maxTraversals) {\n const modules = await nestedNode.resolve(undefined, { direction: 'down', maxDepth: 2 })\n await Promise.all(\n modules.map(async (child) => {\n if (child !== nestedNode && isNodeInstance(child)) {\n localDepth++\n await traverse(child)\n // don't re add the root module that was passed in\n } else if (child !== module) {\n childModules.push(child)\n }\n }),\n )\n }\n }\n\n await traverse(module)\n\n return childModules\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.getElementsByTagName('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'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel'\nimport { isWitnessModule } from '@xyo-network/witness'\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'\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 NodeIdStyles = (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 NodeStyled = (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 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 { 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, NodeIdStyles, NodeStyled } 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 NodeIdStyles(theme.palette.text.primary, theme.palette.getContrastText(theme.palette.text.primary)),\n NodeStyled(icons, theme.palette.primary.main, hideLabels),\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 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 { NodeCollection, NodeSingular } from 'cytoscape'\nimport { useCallback, useEffect, useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../contexts'\n\nexport const useHoveredNode = (renderedElements?: NodeCollection) => {\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 node.on('mouseout', () => {\n setHoveredNode(undefined)\n })\n }, [])\n\n useEffect(() => {\n if (renderedElements) {\n renderedElements.nodes().forEach(nodeListener)\n }\n }, [nodeListener, renderedElements])\n\n useEffect(() => {\n cy?.ready(() => {\n cy.nodes().forEach(nodeListener)\n })\n }, [cy, nodeListener])\n\n return hoveredNode\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceState } from './State'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\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 { useModuleFromNode } from '@xyo-network/react-node'\nimport { NodeSingular } from 'cytoscape'\nimport { useEffect } from 'react'\n\nimport { useCytoscapeInstance } from '../../contexts'\nimport { useCytoscapeElements } from './useCytoscapeElements'\n\nexport const useNewElements = (selectedElement?: NodeSingular) => {\n const { cy } = useCytoscapeInstance(true)\n const { address: selectedAddress } = selectedElement?.data() ?? {}\n const [module] = useModuleFromNode(selectedAddress)\n const newElements = useCytoscapeElements(module)\n\n useEffect(() => {\n if (selectedAddress) {\n const element = cy?.$(`node[id=\"${selectedAddress}\"]`)\n if (element?.length) cy?.center(element)\n }\n }, [cy, selectedAddress])\n\n return newElements\n}\n","import { ModuleInstance } from '@xyo-network/module'\nimport { useState } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape'\nimport { useCytoscapeElements } from './useCytoscapeElements'\nimport { useCytoscapeOptions } from './useCytoscapeOptions'\nimport { useCytoscapeStyle } from './useCytoscapeStyle'\n\nexport const useRelationalGraphOptions = (module?: 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 { 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?.add(newElements)\n setRenderedElements(renderedElements)\n cy?.layout(ColaLayout).run()\n }\n }, [cy, hideLabels, newElements])\n\n return renderedElements\n}\n","import { EventObject, NodeSingular } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../contexts'\n\nexport const useSelectedElement = () => {\n const { cy } = useCytoscapeInstance(true)\n const [selectedElement, setSelectedElement] = useState<NodeSingular>()\n\n useEffect(() => {\n const listener = (event: EventObject) => {\n const element = event.target[0]\n if (element.isNode()) setSelectedElement(element)\n }\n cy?.on('select', listener)\n\n return () => {\n cy?.off('select', listener)\n }\n }, [cy, setSelectedElement])\n\n return selectedElement\n}\n"],"mappings":"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","names":["import_node_model","import_node_model","module","module","Inventory2RoundedIcon","InsertLinkRoundedIcon","BubbleChartRoundedIcon","QuestionMarkRoundedIcon","HubIcon","TimerRoundedIcon","VisibilityRoundedIcon","module","import_react","import_material","import_react","import_react","import_react","import_react_shared","import_react","module","import_react","module","import_react","renderedElements","import_react"]}
@@ -1,13 +1,7 @@
1
- // src/hooks/cytoscape/useAddNewElements.tsx
2
- import { useEffect } from "react";
3
-
4
- // src/contexts/CytoscapeInstance/Context.ts
5
- import { createContextEx } from "@xyo-network/react-shared";
6
- var CytoscapeInstanceContext = createContextEx();
7
-
8
- // src/contexts/CytoscapeInstance/use.ts
9
- import { useContextEx } from "@xyo-network/react-shared";
10
- var useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, "CytoscapeInstance", required);
1
+ // src/hooks/cytoscape/useCytoscapeElements.ts
2
+ import { useAsyncEffect } from "@xylabs/react-async-effect";
3
+ import { isNodeInstance as isNodeInstance3 } from "@xyo-network/node-model";
4
+ import { useEffect, useState } from "react";
11
5
 
12
6
  // src/Cytoscape/CytoscapeElements.ts
13
7
  import { isNodeInstance as isNodeInstance2 } from "@xyo-network/node-model";
@@ -218,55 +212,7 @@ var EdgeStyled = (lineColor, targetArrowColor) => ({
218
212
  }
219
213
  });
220
214
 
221
- // src/hooks/cytoscape/usePopperListener.tsx
222
- import { useTheme } from "@mui/material";
223
- import { useCallback } from "react";
224
- var usePopperListener = () => {
225
- const theme = useTheme();
226
- const popperListener = useCallback(
227
- (node, hideLabels, cy) => {
228
- const div = document.createElement("div");
229
- const shadowColor = theme.palette.getContrastText(theme.palette.text.primary);
230
- const popper = node.popper({
231
- content: () => {
232
- div.innerHTML = node.data().name;
233
- div.style.opacity = "0";
234
- div.style.transition = "opacity .25s";
235
- div.style.textShadow = `0 0 3px ${shadowColor}`;
236
- document.body.appendChild(div);
237
- return div;
238
- }
239
- });
240
- const update = async () => {
241
- await popper.update();
242
- };
243
- node.on("position", update);
244
- node.on("mouseover", () => hideLabels ? div.style.opacity = "1" : void 0);
245
- node.on("mouseout", () => hideLabels ? div.style.opacity = "0" : void 0);
246
- cy == null ? void 0 : cy.on("pan zoom resize", update);
247
- },
248
- [theme]
249
- );
250
- return popperListener;
251
- };
252
-
253
- // src/hooks/cytoscape/useAddNewElements.tsx
254
- var useAddNewElements = (newElements = [], hideLabels) => {
255
- const { cy } = useCytoscapeInstance(true);
256
- const popperListener = usePopperListener();
257
- useEffect(() => {
258
- if (newElements.length > 1) {
259
- const renderedElements = cy == null ? void 0 : cy.add(newElements);
260
- renderedElements == null ? void 0 : renderedElements.nodes().forEach((node) => popperListener(node, hideLabels, cy));
261
- cy == null ? void 0 : cy.layout(ColaLayout).run();
262
- }
263
- }, [cy, hideLabels, newElements, popperListener]);
264
- };
265
-
266
215
  // src/hooks/cytoscape/useCytoscapeElements.ts
267
- import { useAsyncEffect } from "@xylabs/react-async-effect";
268
- import { isNodeInstance as isNodeInstance3 } from "@xyo-network/node-model";
269
- import { useEffect as useEffect2, useState } from "react";
270
216
  var useCytoscapeElements = (module) => {
271
217
  const [elements, setElements] = useState([]);
272
218
  useAsyncEffect(
@@ -279,7 +225,7 @@ var useCytoscapeElements = (module) => {
279
225
  },
280
226
  [module]
281
227
  );
282
- useEffect2(() => {
228
+ useEffect(() => {
283
229
  let attachedListener = void 0;
284
230
  let detachedListener = void 0;
285
231
  if (module && isNodeInstance3(module)) {
@@ -304,15 +250,15 @@ var useCytoscapeElements = (module) => {
304
250
  import { useMemo as useMemo3 } from "react";
305
251
 
306
252
  // src/hooks/cytoscape/useCytoscapeStyle.tsx
307
- import { useTheme as useTheme3 } from "@mui/material";
253
+ import { useTheme as useTheme2 } from "@mui/material";
308
254
  import { useMemo as useMemo2 } from "react";
309
255
 
310
256
  // src/hooks/cytoscape/useIcons.tsx
311
- import { useTheme as useTheme2 } from "@mui/material";
257
+ import { useTheme } from "@mui/material";
312
258
  import { useMemo } from "react";
313
259
  import { jsx } from "react/jsx-runtime";
314
260
  var useIcons = () => {
315
- const theme = useTheme2();
261
+ const theme = useTheme();
316
262
  const icons = useMemo(() => {
317
263
  const iconMap = generateIconMap();
318
264
  return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {
@@ -326,7 +272,7 @@ var useIcons = () => {
326
272
 
327
273
  // src/hooks/cytoscape/useCytoscapeStyle.tsx
328
274
  var useCytoscapeStyle = (hideLabels = false) => {
329
- const theme = useTheme3();
275
+ const theme = useTheme2();
330
276
  const icons = useIcons();
331
277
  const style = useMemo2(
332
278
  () => [
@@ -342,24 +288,61 @@ var useCytoscapeStyle = (hideLabels = false) => {
342
288
  // src/hooks/cytoscape/useCytoscapeOptions.ts
343
289
  var useCytoscapeOptions = (elements, style, layout) => {
344
290
  const defaultStyle = useCytoscapeStyle();
291
+ const resolvedLayout = layout ?? ConcentricLayout;
292
+ const resolvedStyle = style ?? defaultStyle;
345
293
  const options = useMemo3(() => {
346
- if (elements && layout && style) {
294
+ if (elements && resolvedLayout && resolvedStyle) {
347
295
  return {
348
296
  elements,
349
- layout: layout ?? ConcentricLayout,
350
- style: style ?? defaultStyle
297
+ layout: resolvedLayout,
298
+ style: resolvedStyle
351
299
  };
352
300
  }
353
301
  }, [elements, layout, style]);
354
302
  return options;
355
303
  };
356
304
 
305
+ // src/hooks/cytoscape/useHoveredNode.tsx
306
+ import { useCallback, useEffect as useEffect2, useState as useState2 } from "react";
307
+
308
+ // src/contexts/CytoscapeInstance/Context.ts
309
+ import { createContextEx } from "@xyo-network/react-shared";
310
+ var CytoscapeInstanceContext = createContextEx();
311
+
312
+ // src/contexts/CytoscapeInstance/use.ts
313
+ import { useContextEx } from "@xyo-network/react-shared";
314
+ var useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, "CytoscapeInstance", required);
315
+
316
+ // src/hooks/cytoscape/useHoveredNode.tsx
317
+ var useHoveredNode = (renderedElements) => {
318
+ const { cy } = useCytoscapeInstance(true);
319
+ const [hoveredNode, setHoveredNode] = useState2();
320
+ const nodeListener = useCallback((node) => {
321
+ node.on("mouseover tap", () => {
322
+ setHoveredNode(node);
323
+ });
324
+ node.on("mouseout", () => {
325
+ setHoveredNode(void 0);
326
+ });
327
+ }, []);
328
+ useEffect2(() => {
329
+ if (renderedElements) {
330
+ renderedElements.nodes().forEach(nodeListener);
331
+ }
332
+ }, [nodeListener, renderedElements]);
333
+ useEffect2(() => {
334
+ cy == null ? void 0 : cy.ready(() => {
335
+ cy.nodes().forEach(nodeListener);
336
+ });
337
+ }, [cy, nodeListener]);
338
+ return hoveredNode;
339
+ };
340
+
357
341
  // src/hooks/cytoscape/useNewElements.tsx
358
342
  import { useModuleFromNode } from "@xyo-network/react-node";
359
- import { useEffect as useEffect3, useState as useState2 } from "react";
360
- var useNewElements = () => {
343
+ import { useEffect as useEffect3 } from "react";
344
+ var useNewElements = (selectedElement) => {
361
345
  const { cy } = useCytoscapeInstance(true);
362
- const [selectedElement, setSelectedElement] = useState2();
363
346
  const { address: selectedAddress } = (selectedElement == null ? void 0 : selectedElement.data()) ?? {};
364
347
  const [module] = useModuleFromNode(selectedAddress);
365
348
  const newElements = useCytoscapeElements(module);
@@ -370,27 +353,62 @@ var useNewElements = () => {
370
353
  cy == null ? void 0 : cy.center(element);
371
354
  }
372
355
  }, [cy, selectedAddress]);
373
- return { newElements, setSelectedElement };
356
+ return newElements;
374
357
  };
375
358
 
376
359
  // src/hooks/cytoscape/useRelationalGraphOptions.tsx
377
360
  import { useState as useState3 } from "react";
378
361
  var useRelationalGraphOptions = (module) => {
379
- const [hideLabels, setHideLabels] = useState3(false);
362
+ const [hideLabels, setHideLabels] = useState3(true);
380
363
  const handleToggleLabels = () => {
381
364
  setHideLabels((oldValue) => !oldValue);
382
365
  };
383
366
  const elements = useCytoscapeElements(module);
384
367
  const style = useCytoscapeStyle(hideLabels);
385
- const options = useCytoscapeOptions(elements, style, ColaLayout);
368
+ const options = useCytoscapeOptions(elements, style, ConcentricLayout);
386
369
  return { handleToggleLabels, hideLabels, options };
387
370
  };
371
+
372
+ // src/hooks/cytoscape/useRenderNewElements.tsx
373
+ import { useEffect as useEffect4, useState as useState4 } from "react";
374
+ var useRenderNewElements = (newElements = [], hideLabels) => {
375
+ const { cy } = useCytoscapeInstance(true);
376
+ const [renderedElements, setRenderedElements] = useState4();
377
+ useEffect4(() => {
378
+ if (newElements.length > 1) {
379
+ const renderedElements2 = cy == null ? void 0 : cy.add(newElements);
380
+ setRenderedElements(renderedElements2);
381
+ cy == null ? void 0 : cy.layout(ColaLayout).run();
382
+ }
383
+ }, [cy, hideLabels, newElements]);
384
+ return renderedElements;
385
+ };
386
+
387
+ // src/hooks/cytoscape/useSelectedElement.tsx
388
+ import { useEffect as useEffect5, useState as useState5 } from "react";
389
+ var useSelectedElement = () => {
390
+ const { cy } = useCytoscapeInstance(true);
391
+ const [selectedElement, setSelectedElement] = useState5();
392
+ useEffect5(() => {
393
+ const listener = (event) => {
394
+ const element = event.target[0];
395
+ if (element.isNode())
396
+ setSelectedElement(element);
397
+ };
398
+ cy == null ? void 0 : cy.on("select", listener);
399
+ return () => {
400
+ cy == null ? void 0 : cy.off("select", listener);
401
+ };
402
+ }, [cy, setSelectedElement]);
403
+ return selectedElement;
404
+ };
388
405
  export {
389
- useAddNewElements,
390
406
  useCytoscapeElements,
391
407
  useCytoscapeOptions,
408
+ useHoveredNode,
392
409
  useNewElements,
393
- usePopperListener,
394
- useRelationalGraphOptions
410
+ useRelationalGraphOptions,
411
+ useRenderNewElements,
412
+ useSelectedElement
395
413
  };
396
414
  //# sourceMappingURL=index.js.map