@openbraininstitute/morphoviewer 0.0.1 → 0.24.16

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 (373) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +35 -0
  3. package/lib/dist/abstract-canvas.d.ts +37 -0
  4. package/lib/dist/abstract-canvas.d.ts.map +1 -0
  5. package/lib/dist/abstract-canvas.js +131 -0
  6. package/lib/dist/colors.d.ts +34 -0
  7. package/lib/dist/colors.d.ts.map +1 -0
  8. package/lib/dist/colors.js +125 -0
  9. package/lib/dist/components/button-reset-camera/button-reset-camera.d.ts +10 -0
  10. package/lib/dist/components/button-reset-camera/button-reset-camera.d.ts.map +1 -0
  11. package/lib/dist/components/button-reset-camera/button-reset-camera.js +10 -0
  12. package/lib/dist/components/button-reset-camera/button-reset-camera.module.css +10 -0
  13. package/lib/dist/components/button-reset-camera/index.d.ts +2 -0
  14. package/lib/dist/components/button-reset-camera/index.d.ts.map +1 -0
  15. package/lib/dist/components/button-reset-camera/index.js +2 -0
  16. package/lib/dist/components/icons/3d.d.ts +8 -0
  17. package/lib/dist/components/icons/3d.d.ts.map +1 -0
  18. package/lib/dist/components/icons/3d.js +5 -0
  19. package/lib/dist/components/icons/center.d.ts +8 -0
  20. package/lib/dist/components/icons/center.d.ts.map +1 -0
  21. package/lib/dist/components/icons/center.js +5 -0
  22. package/lib/dist/components/icons/close.d.ts +8 -0
  23. package/lib/dist/components/icons/close.d.ts.map +1 -0
  24. package/lib/dist/components/icons/close.js +5 -0
  25. package/lib/dist/components/icons/copy.d.ts +2 -0
  26. package/lib/dist/components/icons/copy.d.ts.map +1 -0
  27. package/lib/dist/components/icons/copy.js +5 -0
  28. package/lib/dist/components/icons/dendrogram-circular.d.ts +2 -0
  29. package/lib/dist/components/icons/dendrogram-circular.d.ts.map +1 -0
  30. package/lib/dist/components/icons/dendrogram-circular.js +5 -0
  31. package/lib/dist/components/icons/dendrogram-straight.d.ts +2 -0
  32. package/lib/dist/components/icons/dendrogram-straight.d.ts.map +1 -0
  33. package/lib/dist/components/icons/dendrogram-straight.js +5 -0
  34. package/lib/dist/components/icons/fullscreen.d.ts +8 -0
  35. package/lib/dist/components/icons/fullscreen.d.ts.map +1 -0
  36. package/lib/dist/components/icons/fullscreen.js +5 -0
  37. package/lib/dist/components/icons/minimize.d.ts +8 -0
  38. package/lib/dist/components/icons/minimize.d.ts.map +1 -0
  39. package/lib/dist/components/icons/minimize.js +5 -0
  40. package/lib/dist/components/icons/pause.d.ts +8 -0
  41. package/lib/dist/components/icons/pause.d.ts.map +1 -0
  42. package/lib/dist/components/icons/pause.js +5 -0
  43. package/lib/dist/components/icons/play.d.ts +8 -0
  44. package/lib/dist/components/icons/play.d.ts.map +1 -0
  45. package/lib/dist/components/icons/play.js +5 -0
  46. package/lib/dist/components/icons/zoom-in.d.ts +8 -0
  47. package/lib/dist/components/icons/zoom-in.d.ts.map +1 -0
  48. package/lib/dist/components/icons/zoom-in.js +5 -0
  49. package/lib/dist/components/icons/zoom-out.d.ts +8 -0
  50. package/lib/dist/components/icons/zoom-out.d.ts.map +1 -0
  51. package/lib/dist/components/icons/zoom-out.js +5 -0
  52. package/lib/dist/components/morpho-viewer-octree/index.d.ts +4 -0
  53. package/lib/dist/components/morpho-viewer-octree/index.d.ts.map +1 -0
  54. package/lib/dist/components/morpho-viewer-octree/index.js +3 -0
  55. package/lib/dist/components/morpho-viewer-octree/morpho-viewer-octree.d.ts +3 -0
  56. package/lib/dist/components/morpho-viewer-octree/morpho-viewer-octree.d.ts.map +1 -0
  57. package/lib/dist/components/morpho-viewer-octree/morpho-viewer-octree.js +31 -0
  58. package/lib/dist/components/morpho-viewer-octree/morpho-viewer-octree.module.css +70 -0
  59. package/lib/dist/components/morpho-viewer-octree/painter/camera.d.ts +12 -0
  60. package/lib/dist/components/morpho-viewer-octree/painter/camera.d.ts.map +1 -0
  61. package/lib/dist/components/morpho-viewer-octree/painter/camera.js +23 -0
  62. package/lib/dist/components/morpho-viewer-octree/painter/manager.d.ts +23 -0
  63. package/lib/dist/components/morpho-viewer-octree/painter/manager.d.ts.map +1 -0
  64. package/lib/dist/components/morpho-viewer-octree/painter/manager.js +180 -0
  65. package/lib/dist/components/morpho-viewer-octree/tools.d.ts +2 -0
  66. package/lib/dist/components/morpho-viewer-octree/tools.d.ts.map +1 -0
  67. package/lib/dist/components/morpho-viewer-octree/tools.js +9 -0
  68. package/lib/dist/components/morpho-viewer-octree/types.d.ts +19 -0
  69. package/lib/dist/components/morpho-viewer-octree/types.d.ts.map +1 -0
  70. package/lib/dist/components/morpho-viewer-octree/types.js +2 -0
  71. package/lib/dist/components/morpho-viewer-simul/colors.d.ts +2 -0
  72. package/lib/dist/components/morpho-viewer-simul/colors.d.ts.map +1 -0
  73. package/lib/dist/components/morpho-viewer-simul/colors.js +24 -0
  74. package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.d.ts +7 -0
  75. package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.d.ts.map +1 -0
  76. package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.js +12 -0
  77. package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/ModeSelector.module.css +25 -0
  78. package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/index.d.ts +2 -0
  79. package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/index.d.ts.map +1 -0
  80. package/lib/dist/components/morpho-viewer-simul/components/ModeSelector/index.js +2 -0
  81. package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.d.ts +6 -0
  82. package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.d.ts.map +1 -0
  83. package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.js +50 -0
  84. package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/add-recording-dialog.module.css +115 -0
  85. package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/hooks.d.ts +2 -0
  86. package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/hooks.d.ts.map +1 -0
  87. package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/hooks.js +12 -0
  88. package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/index.d.ts +2 -0
  89. package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/index.d.ts.map +1 -0
  90. package/lib/dist/components/morpho-viewer-simul/components/add-recording-dialog/index.js +2 -0
  91. package/lib/dist/components/morpho-viewer-simul/components/hint/hint.d.ts +8 -0
  92. package/lib/dist/components/morpho-viewer-simul/components/hint/hint.d.ts.map +1 -0
  93. package/lib/dist/components/morpho-viewer-simul/components/hint/hint.js +57 -0
  94. package/lib/dist/components/morpho-viewer-simul/components/hint/hint.module.css +23 -0
  95. package/lib/dist/components/morpho-viewer-simul/components/hint/index.d.ts +2 -0
  96. package/lib/dist/components/morpho-viewer-simul/components/hint/index.d.ts.map +1 -0
  97. package/lib/dist/components/morpho-viewer-simul/components/hint/index.js +2 -0
  98. package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/index.d.ts +2 -0
  99. package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/index.d.ts.map +1 -0
  100. package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/index.js +2 -0
  101. package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.d.ts +5 -0
  102. package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.d.ts.map +1 -0
  103. package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.js +34 -0
  104. package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-overlay.module.css +5 -0
  105. package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-painter.d.ts +19 -0
  106. package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-painter.d.ts.map +1 -0
  107. package/lib/dist/components/morpho-viewer-simul/components/legend-overlay/legend-painter.js +209 -0
  108. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.d.ts +6 -0
  109. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.d.ts.map +1 -0
  110. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.js +21 -0
  111. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/current-time.module.css +20 -0
  112. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/index.d.ts +2 -0
  113. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/index.d.ts.map +1 -0
  114. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/current-time/index.js +2 -0
  115. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/index.d.ts +2 -0
  116. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/index.d.ts.map +1 -0
  117. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/index.js +2 -0
  118. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/index.d.ts +2 -0
  119. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/index.d.ts.map +1 -0
  120. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/index.js +2 -0
  121. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.d.ts +6 -0
  122. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.d.ts.map +1 -0
  123. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.js +12 -0
  124. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/play-button/play-button.module.css +21 -0
  125. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/index.d.ts +2 -0
  126. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/index.d.ts.map +1 -0
  127. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/index.js +2 -0
  128. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.d.ts +8 -0
  129. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.d.ts.map +1 -0
  130. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.js +19 -0
  131. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/simul-combo/simul-combo.module.css +52 -0
  132. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/index.d.ts +2 -0
  133. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/index.d.ts.map +1 -0
  134. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/index.js +2 -0
  135. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.d.ts +6 -0
  136. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.d.ts.map +1 -0
  137. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.js +20 -0
  138. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/speed-combo/speed-combo.module.css +69 -0
  139. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/spiking-controller.d.ts +6 -0
  140. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/spiking-controller.d.ts.map +1 -0
  141. package/lib/dist/components/morpho-viewer-simul/components/spiking-controller/spiking-controller.js +13 -0
  142. package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/index.d.ts +2 -0
  143. package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/index.d.ts.map +1 -0
  144. package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/index.js +2 -0
  145. package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.d.ts +7 -0
  146. package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.d.ts.map +1 -0
  147. package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.js +13 -0
  148. package/lib/dist/components/morpho-viewer-simul/components/zoom-slider/zoom-slider.module.css +60 -0
  149. package/lib/dist/components/morpho-viewer-simul/contants.d.ts +9 -0
  150. package/lib/dist/components/morpho-viewer-simul/contants.d.ts.map +1 -0
  151. package/lib/dist/components/morpho-viewer-simul/contants.js +9 -0
  152. package/lib/dist/components/morpho-viewer-simul/hooks.d.ts +9 -0
  153. package/lib/dist/components/morpho-viewer-simul/hooks.d.ts.map +1 -0
  154. package/lib/dist/components/morpho-viewer-simul/hooks.js +34 -0
  155. package/lib/dist/components/morpho-viewer-simul/index.d.ts +3 -0
  156. package/lib/dist/components/morpho-viewer-simul/index.d.ts.map +1 -0
  157. package/lib/dist/components/morpho-viewer-simul/index.js +3 -0
  158. package/lib/dist/components/morpho-viewer-simul/morpho-viewer-simul.d.ts +3 -0
  159. package/lib/dist/components/morpho-viewer-simul/morpho-viewer-simul.d.ts.map +1 -0
  160. package/lib/dist/components/morpho-viewer-simul/morpho-viewer-simul.js +42 -0
  161. package/lib/dist/components/morpho-viewer-simul/morpho-viewer-simul.module.css +94 -0
  162. package/lib/dist/components/morpho-viewer-simul/painter/camera.d.ts +18 -0
  163. package/lib/dist/components/morpho-viewer-simul/painter/camera.d.ts.map +1 -0
  164. package/lib/dist/components/morpho-viewer-simul/painter/camera.js +17 -0
  165. package/lib/dist/components/morpho-viewer-simul/painter/index.d.ts +2 -0
  166. package/lib/dist/components/morpho-viewer-simul/painter/index.d.ts.map +1 -0
  167. package/lib/dist/components/morpho-viewer-simul/painter/index.js +2 -0
  168. package/lib/dist/components/morpho-viewer-simul/painter/initializer.d.ts +14 -0
  169. package/lib/dist/components/morpho-viewer-simul/painter/initializer.d.ts.map +1 -0
  170. package/lib/dist/components/morpho-viewer-simul/painter/initializer.js +35 -0
  171. package/lib/dist/components/morpho-viewer-simul/painter/manager.d.ts +99 -0
  172. package/lib/dist/components/morpho-viewer-simul/painter/manager.d.ts.map +1 -0
  173. package/lib/dist/components/morpho-viewer-simul/painter/manager.js +566 -0
  174. package/lib/dist/components/morpho-viewer-simul/painter/math.d.ts +4 -0
  175. package/lib/dist/components/morpho-viewer-simul/painter/math.d.ts.map +1 -0
  176. package/lib/dist/components/morpho-viewer-simul/painter/math.js +33 -0
  177. package/lib/dist/components/morpho-viewer-simul/painter/morphology-data.d.ts +12 -0
  178. package/lib/dist/components/morpho-viewer-simul/painter/morphology-data.d.ts.map +1 -0
  179. package/lib/dist/components/morpho-viewer-simul/painter/morphology-data.js +40 -0
  180. package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/index.d.ts +2 -0
  181. package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/index.d.ts.map +1 -0
  182. package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/index.js +2 -0
  183. package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/material-index.d.ts +5 -0
  184. package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/material-index.d.ts.map +1 -0
  185. package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/material-index.js +14 -0
  186. package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.d.ts +23 -0
  187. package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.d.ts.map +1 -0
  188. package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.js +84 -0
  189. package/lib/dist/components/morpho-viewer-simul/painter/painters/contants.d.ts +2 -0
  190. package/lib/dist/components/morpho-viewer-simul/painter/painters/contants.d.ts.map +1 -0
  191. package/lib/dist/components/morpho-viewer-simul/painter/painters/contants.js +12 -0
  192. package/lib/dist/components/morpho-viewer-simul/painter/painters/highlight.d.ts +6 -0
  193. package/lib/dist/components/morpho-viewer-simul/painter/painters/highlight.d.ts.map +1 -0
  194. package/lib/dist/components/morpho-viewer-simul/painter/painters/highlight.js +29 -0
  195. package/lib/dist/components/morpho-viewer-simul/painter/painters/index.d.ts +2 -0
  196. package/lib/dist/components/morpho-viewer-simul/painter/painters/index.d.ts.map +1 -0
  197. package/lib/dist/components/morpho-viewer-simul/painter/painters/index.js +2 -0
  198. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/cursor.d.ts +12 -0
  199. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/cursor.d.ts.map +1 -0
  200. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/cursor.js +34 -0
  201. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/fill.d.ts +15 -0
  202. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/fill.d.ts.map +1 -0
  203. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/fill.js +85 -0
  204. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/index.d.ts +2 -0
  205. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/index.d.ts.map +1 -0
  206. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/index.js +2 -0
  207. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/texture.d.ts +3 -0
  208. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/texture.d.ts.map +1 -0
  209. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/cursor/texture.js +20 -0
  210. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/index.d.ts +2 -0
  211. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/index.d.ts.map +1 -0
  212. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/index.js +2 -0
  213. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/overlay.d.ts +20 -0
  214. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/overlay.d.ts.map +1 -0
  215. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/overlay.js +114 -0
  216. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/ticks.d.ts +24 -0
  217. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/ticks.d.ts.map +1 -0
  218. package/lib/dist/components/morpho-viewer-simul/painter/painters/overlay/ticks.js +127 -0
  219. package/lib/dist/components/morpho-viewer-simul/painter/painters/painter.d.ts +28 -0
  220. package/lib/dist/components/morpho-viewer-simul/painter/painters/painter.d.ts.map +1 -0
  221. package/lib/dist/components/morpho-viewer-simul/painter/painters/painter.js +136 -0
  222. package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/index.d.ts +2 -0
  223. package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/index.d.ts.map +1 -0
  224. package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/index.js +2 -0
  225. package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/spiking.d.ts +26 -0
  226. package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/spiking.d.ts.map +1 -0
  227. package/lib/dist/components/morpho-viewer-simul/painter/painters/spiking/spiking.js +116 -0
  228. package/lib/dist/components/morpho-viewer-simul/painter/painters/synapses.d.ts +12 -0
  229. package/lib/dist/components/morpho-viewer-simul/painter/painters/synapses.d.ts.map +1 -0
  230. package/lib/dist/components/morpho-viewer-simul/painter/painters/synapses.js +87 -0
  231. package/lib/dist/components/morpho-viewer-simul/painter/segments.d.ts +5 -0
  232. package/lib/dist/components/morpho-viewer-simul/painter/segments.d.ts.map +1 -0
  233. package/lib/dist/components/morpho-viewer-simul/painter/segments.js +58 -0
  234. package/lib/dist/components/morpho-viewer-simul/painter/soma.d.ts +9 -0
  235. package/lib/dist/components/morpho-viewer-simul/painter/soma.d.ts.map +1 -0
  236. package/lib/dist/components/morpho-viewer-simul/painter/soma.js +44 -0
  237. package/lib/dist/components/morpho-viewer-simul/painter/spiking-manager.d.ts +44 -0
  238. package/lib/dist/components/morpho-viewer-simul/painter/spiking-manager.d.ts.map +1 -0
  239. package/lib/dist/components/morpho-viewer-simul/painter/spiking-manager.js +164 -0
  240. package/lib/dist/components/morpho-viewer-simul/painter/structure.d.ts +59 -0
  241. package/lib/dist/components/morpho-viewer-simul/painter/structure.d.ts.map +1 -0
  242. package/lib/dist/components/morpho-viewer-simul/painter/structure.js +175 -0
  243. package/lib/dist/components/morpho-viewer-simul/painter/transition.d.ts +41 -0
  244. package/lib/dist/components/morpho-viewer-simul/painter/transition.d.ts.map +1 -0
  245. package/lib/dist/components/morpho-viewer-simul/painter/transition.js +152 -0
  246. package/lib/dist/components/morpho-viewer-simul/painter/tree.d.ts +7 -0
  247. package/lib/dist/components/morpho-viewer-simul/painter/tree.d.ts.map +1 -0
  248. package/lib/dist/components/morpho-viewer-simul/painter/tree.js +96 -0
  249. package/lib/dist/components/morpho-viewer-simul/types/private.d.ts +33 -0
  250. package/lib/dist/components/morpho-viewer-simul/types/private.d.ts.map +1 -0
  251. package/lib/dist/components/morpho-viewer-simul/types/private.js +2 -0
  252. package/lib/dist/components/morpho-viewer-simul/types/public.d.ts +91 -0
  253. package/lib/dist/components/morpho-viewer-simul/types/public.d.ts.map +1 -0
  254. package/lib/dist/components/morpho-viewer-simul/types/public.js +13 -0
  255. package/lib/dist/components/morpho-viewer-simul/utils.d.ts +4 -0
  256. package/lib/dist/components/morpho-viewer-simul/utils.d.ts.map +1 -0
  257. package/lib/dist/components/morpho-viewer-simul/utils.js +25 -0
  258. package/lib/dist/components/morpho-viewer-small-circuit/index.d.ts +3 -0
  259. package/lib/dist/components/morpho-viewer-small-circuit/index.d.ts.map +1 -0
  260. package/lib/dist/components/morpho-viewer-small-circuit/index.js +3 -0
  261. package/lib/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.d.ts +3 -0
  262. package/lib/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.d.ts.map +1 -0
  263. package/lib/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.js +32 -0
  264. package/lib/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.module.css +63 -0
  265. package/lib/dist/components/morpho-viewer-small-circuit/painter/camera.d.ts +13 -0
  266. package/lib/dist/components/morpho-viewer-small-circuit/painter/camera.d.ts.map +1 -0
  267. package/lib/dist/components/morpho-viewer-small-circuit/painter/camera.js +39 -0
  268. package/lib/dist/components/morpho-viewer-small-circuit/painter/index.d.ts +2 -0
  269. package/lib/dist/components/morpho-viewer-small-circuit/painter/index.d.ts.map +1 -0
  270. package/lib/dist/components/morpho-viewer-small-circuit/painter/index.js +2 -0
  271. package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +49 -0
  272. package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts.map +1 -0
  273. package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.js +347 -0
  274. package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/index.d.ts +2 -0
  275. package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/index.d.ts.map +1 -0
  276. package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/index.js +2 -0
  277. package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts +22 -0
  278. package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts.map +1 -0
  279. package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.js +61 -0
  280. package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.d.ts +4 -0
  281. package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.d.ts.map +1 -0
  282. package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.js +42 -0
  283. package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.d.ts +2 -0
  284. package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.d.ts.map +1 -0
  285. package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/index.js +2 -0
  286. package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts +19 -0
  287. package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts.map +1 -0
  288. package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +105 -0
  289. package/lib/dist/components/morpho-viewer-small-circuit/types.d.ts +23 -0
  290. package/lib/dist/components/morpho-viewer-small-circuit/types.d.ts.map +1 -0
  291. package/lib/dist/components/morpho-viewer-small-circuit/types.js +2 -0
  292. package/lib/dist/components/tooltip/index.d.ts +2 -0
  293. package/lib/dist/components/tooltip/index.d.ts.map +1 -0
  294. package/lib/dist/components/tooltip/index.js +2 -0
  295. package/lib/dist/components/tooltip/tooltip.d.ts +14 -0
  296. package/lib/dist/components/tooltip/tooltip.d.ts.map +1 -0
  297. package/lib/dist/components/tooltip/tooltip.js +10 -0
  298. package/lib/dist/components/tooltip/tooltip.module.css +74 -0
  299. package/lib/dist/gizmo/gizmo-canvas.d.ts +17 -0
  300. package/lib/dist/gizmo/gizmo-canvas.d.ts.map +1 -0
  301. package/lib/dist/gizmo/gizmo-canvas.js +98 -0
  302. package/lib/dist/gizmo/index.d.ts +2 -0
  303. package/lib/dist/gizmo/index.d.ts.map +1 -0
  304. package/lib/dist/gizmo/index.js +2 -0
  305. package/lib/dist/gizmo/painter/shader.frag.d.ts +2 -0
  306. package/lib/dist/gizmo/painter/shader.frag.d.ts.map +1 -0
  307. package/lib/dist/gizmo/painter/shader.frag.js +19 -0
  308. package/lib/dist/gizmo/painter/shader.vert.d.ts +2 -0
  309. package/lib/dist/gizmo/painter/shader.vert.d.ts.map +1 -0
  310. package/lib/dist/gizmo/painter/shader.vert.js +26 -0
  311. package/lib/dist/gizmo/painter/tips.d.ts +13 -0
  312. package/lib/dist/gizmo/painter/tips.d.ts.map +1 -0
  313. package/lib/dist/gizmo/painter/tips.js +85 -0
  314. package/lib/dist/index.d.ts +16 -0
  315. package/lib/dist/index.d.ts.map +1 -0
  316. package/lib/dist/index.js +14 -0
  317. package/lib/dist/morphology/morphology-canvas.d.ts +64 -0
  318. package/lib/dist/morphology/morphology-canvas.d.ts.map +1 -0
  319. package/lib/dist/morphology/morphology-canvas.js +275 -0
  320. package/lib/dist/morphology/painter/factory.d.ts +7 -0
  321. package/lib/dist/morphology/painter/factory.d.ts.map +1 -0
  322. package/lib/dist/morphology/painter/factory.js +22 -0
  323. package/lib/dist/morphology/painter/index.d.ts +2 -0
  324. package/lib/dist/morphology/painter/index.d.ts.map +1 -0
  325. package/lib/dist/morphology/painter/index.js +2 -0
  326. package/lib/dist/morphology/painter/nodes.d.ts +21 -0
  327. package/lib/dist/morphology/painter/nodes.d.ts.map +1 -0
  328. package/lib/dist/morphology/painter/nodes.js +134 -0
  329. package/lib/dist/morphology/painter/painter.d.ts +31 -0
  330. package/lib/dist/morphology/painter/painter.d.ts.map +1 -0
  331. package/lib/dist/morphology/painter/painter.js +104 -0
  332. package/lib/dist/morphology/painter/segments.d.ts +23 -0
  333. package/lib/dist/morphology/painter/segments.d.ts.map +1 -0
  334. package/lib/dist/morphology/painter/segments.js +96 -0
  335. package/lib/dist/morphology/painter/textures.d.ts +10 -0
  336. package/lib/dist/morphology/painter/textures.d.ts.map +1 -0
  337. package/lib/dist/morphology/painter/textures.js +53 -0
  338. package/lib/dist/nrrd/get-header-length.d.ts +2 -0
  339. package/lib/dist/nrrd/get-header-length.d.ts.map +1 -0
  340. package/lib/dist/nrrd/get-header-length.js +48 -0
  341. package/lib/dist/nrrd/header.d.ts +28 -0
  342. package/lib/dist/nrrd/header.d.ts.map +1 -0
  343. package/lib/dist/nrrd/header.js +122 -0
  344. package/lib/dist/nrrd/index.d.ts +3 -0
  345. package/lib/dist/nrrd/index.d.ts.map +1 -0
  346. package/lib/dist/nrrd/index.js +33 -0
  347. package/lib/dist/nrrd/volume.d.ts +29 -0
  348. package/lib/dist/nrrd/volume.d.ts.map +1 -0
  349. package/lib/dist/nrrd/volume.js +129 -0
  350. package/lib/dist/package.json +83 -0
  351. package/lib/dist/parser/for-each-line.d.ts +2 -0
  352. package/lib/dist/parser/for-each-line.d.ts.map +1 -0
  353. package/lib/dist/parser/for-each-line.js +14 -0
  354. package/lib/dist/parser/swc.d.ts +14 -0
  355. package/lib/dist/parser/swc.d.ts.map +1 -0
  356. package/lib/dist/parser/swc.js +49 -0
  357. package/lib/dist/scalebar.d.ts +11 -0
  358. package/lib/dist/scalebar.d.ts.map +1 -0
  359. package/lib/dist/scalebar.js +25 -0
  360. package/lib/dist/tools/cache-lru.d.ts +18 -0
  361. package/lib/dist/tools/cache-lru.d.ts.map +1 -0
  362. package/lib/dist/tools/cache-lru.js +53 -0
  363. package/lib/dist/tools/morphology-to-tree.d.ts +4 -0
  364. package/lib/dist/tools/morphology-to-tree.d.ts.map +1 -0
  365. package/lib/dist/tools/morphology-to-tree.js +89 -0
  366. package/lib/dist/types.d.ts +9 -0
  367. package/lib/dist/types.d.ts.map +1 -0
  368. package/lib/dist/types.js +9 -0
  369. package/lib/dist/utils.d.ts +16 -0
  370. package/lib/dist/utils.d.ts.map +1 -0
  371. package/lib/dist/utils.js +56 -0
  372. package/package.json +40 -15
  373. package/package.json~ +0 -16
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synapses.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-simul/painter/painters/synapses.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,UAAU,EACf,eAAe,EAOhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,qBAAa,eAAgB,SAAQ,eAAe;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;gBAE1C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc;IAsB1F,IAAI,GAAG,IAGM,MAAM,CADlB;IACD,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,EAElB;IAED,MAAM,IAAI,IAAI;CAIf"}
@@ -0,0 +1,87 @@
1
+ import { TgdPainterGroup, TgdPainterPointsCloudMorphing, TgdTexture2D, TgdVec3, tgdCalcMix, tgdCanvasCreateFill, } from "@tolokoban/tgd";
2
+ export class PainterSynapses extends TgdPainterGroup {
3
+ constructor(context, synapses, data) {
4
+ super({ name: "PainterSynapses" });
5
+ this.textures = [];
6
+ const texture = new TgdTexture2D(context).loadBitmap(tgdCanvasCreateFill(1, 1, synapses.color));
7
+ this.textures.push(texture);
8
+ const dataPoint3D = makeDataPoint(synapses.sections, data.structure, data.segments3D);
9
+ const dataPointDendrogram = makeDataPoint(synapses.sections, data.structure, data.segmentsDendrogram);
10
+ const cloud = new TgdPainterPointsCloudMorphing(context, {
11
+ name: `TgdPainterPointsCloud[${synapses.color}]`,
12
+ data: [[dataPoint3D, dataPointDendrogram]],
13
+ minSizeInPixels: 4,
14
+ radiusMultiplier: 0.5,
15
+ texture,
16
+ });
17
+ this.cloud = cloud;
18
+ this.add(cloud);
19
+ }
20
+ get mix() {
21
+ return this.cloud.mix;
22
+ }
23
+ set mix(mix) {
24
+ this.cloud.mix = mix;
25
+ }
26
+ delete() {
27
+ super.delete();
28
+ this.textures.forEach((texture) => texture.delete());
29
+ }
30
+ }
31
+ function makeDataPoint(sections, structure, segments) {
32
+ let counter = 0;
33
+ const dataPoint = [];
34
+ for (const [sectionName, offsets] of Object.entries(sections)) {
35
+ for (const offsetInSection of offsets) {
36
+ const item = structure.getSegmentOfSectionAtOffset(sectionName, offsetInSection);
37
+ if (!item)
38
+ continue;
39
+ const { segment, offset } = item;
40
+ const targetSegment = segments.get(segment.index);
41
+ if (!targetSegment)
42
+ continue;
43
+ const [x, y, z] = computePositionOnSegmentSurface(targetSegment.getXYZR0(0), targetSegment.getXYZR1(0), offset, counter++);
44
+ dataPoint.push(x, y, z, 1);
45
+ }
46
+ }
47
+ return { point: new Float32Array(dataPoint) };
48
+ }
49
+ function computePositionOnSegmentSurface(start, end, offset, randomSeed) {
50
+ const [x0, y0, z0, r0] = start;
51
+ const [x1, y1, z1, r1] = end;
52
+ const vecZ = new TgdVec3(x1, y1, z1).subtract([x0, y0, z0]);
53
+ const lengthZ = vecZ.size;
54
+ if (lengthZ < 1e-6) {
55
+ return computePositionOnSphereSurface(x0, y0, z0, r0, randomSeed);
56
+ }
57
+ const x = tgdCalcMix(x0, x1, offset);
58
+ const y = tgdCalcMix(y0, y1, offset);
59
+ const z = tgdCalcMix(z0, z1, offset);
60
+ const radius = tgdCalcMix(r0, r1, offset);
61
+ const angle = randomSeed;
62
+ vecZ.normalize();
63
+ const vecX = computeVecX(vecZ);
64
+ const vecY = vecZ.cross(vecX);
65
+ vecX.scale(radius * Math.cos(angle));
66
+ vecY.scale(radius * Math.sin(angle));
67
+ const [xx, yy, zz] = new TgdVec3(x, y, z).add(vecX).add(vecY);
68
+ return [xx, yy, zz];
69
+ }
70
+ function computePositionOnSphereSurface(x, y, z, r, randomSeed) {
71
+ const lat = randomSeed;
72
+ const lng = randomSeed * 7.4656519;
73
+ const Z = Math.sin(lat);
74
+ const R = Math.cos(lat);
75
+ const xx = r * R * Math.cos(lng);
76
+ const yy = r * R * Math.sin(lng);
77
+ const zz = r * Z;
78
+ const result = [x + xx, y + yy, z + zz];
79
+ return result;
80
+ }
81
+ function computeVecX(vecZ) {
82
+ const vecX = new TgdVec3(0, 1, 0).cross(vecZ);
83
+ if (vecX.dot(vecX) > 1e-9)
84
+ return vecX;
85
+ return new TgdVec3(1, 0, 0).cross(vecZ);
86
+ }
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYXBzZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNpbXVsL3BhaW50ZXIvcGFpbnRlcnMvc3luYXBzZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUlMLGVBQWUsRUFDZiw2QkFBNkIsRUFFN0IsWUFBWSxFQUNaLE9BQU8sRUFDUCxVQUFVLEVBQ1YsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtJQUlsRCxZQUFZLE9BQW1CLEVBQUUsUUFBbUMsRUFBRSxJQUFvQjtRQUN4RixLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBSnBCLGFBQVEsR0FBbUIsRUFBRSxDQUFDO1FBSzdDLE1BQU0sT0FBTyxHQUFHLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVCLE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RGLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUN2QyxRQUFRLENBQUMsUUFBUSxFQUNqQixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FDeEIsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksNkJBQTZCLENBQUMsT0FBTyxFQUFFO1lBQ3ZELElBQUksRUFBRSx5QkFBeUIsUUFBUSxDQUFDLEtBQUssR0FBRztZQUNoRCxJQUFJLEVBQUUsQ0FBQyxD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LE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQztJQUN6QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakIsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUQsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUVELFNBQVMsOEJBQThCLENBQ3JDLENBQVMsRUFDVCxDQUFTLEVBQ1QsQ0FBUyxFQUNULENBQVMsRUFDVCxVQUFrQjtJQUVsQixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUM7SUFDdkIsTUFBTSxHQUFHLEdBQUcsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUNuQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sTUFBTSxHQUFpQixDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDdEQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLElBQWE7SUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUk7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN2QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLENBQUMifQ==
@@ -0,0 +1,5 @@
1
+ import { TgdPainterSegmentsData } from "@tolokoban/tgd";
2
+ import type { Structure } from "./structure";
3
+ export declare function makeSegments3D(structure: Structure, map: Map<number, TgdPainterSegmentsData>): TgdPainterSegmentsData;
4
+ export declare function makeSegmentsDendrogram(structure: Structure, map: Map<number, TgdPainterSegmentsData>): TgdPainterSegmentsData;
5
+ //# sourceMappingURL=segments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segments.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/segments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAI9F,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,aAAa,CAAC;AAI5D,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,0BAO5F;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,0BAWzC"}
@@ -0,0 +1,58 @@
1
+ import { TgdPainterSegmentsData } from "@tolokoban/tgd";
2
+ import { MorphoViewerTreeItemType } from "../types/public.js";
3
+ const HIGHLIGHT_RADIUS_MULTIPLIER = 1.5;
4
+ export function makeSegments3D(structure, map) {
5
+ const segments = new TgdPainterSegmentsData();
6
+ structure.forEach((item) => {
7
+ const { start, end } = item;
8
+ processSegment(item, structure, segments, start, end, map);
9
+ });
10
+ return segments;
11
+ }
12
+ export function makeSegmentsDendrogram(structure, map) {
13
+ const width = Math.abs(structure.bboxDendrites.max[0] - structure.bboxDendrites.min[0]);
14
+ const height = Math.abs(structure.bboxDendrites.max[1] - structure.bboxDendrites.min[1]);
15
+ const segments = new TgdPainterSegmentsData();
16
+ structure.forEach((item) => {
17
+ const start = computeDendrogramStart(item, width, height);
18
+ const end = computeDendrogramEnd(item, width, height);
19
+ processSegment(item, structure, segments, start, end, map);
20
+ });
21
+ return segments;
22
+ }
23
+ function processSegment(item, structure, segments, start, end, map) {
24
+ const uv = [
25
+ (item.type + 0.5) / (MorphoViewerTreeItemType.Unknown + 1),
26
+ (item.index + 1.5) / (structure.length + 2),
27
+ ];
28
+ segments.add([...start, structure.useStraightCylinders ? item.radiusEnd : item.radiusStart], [...end, item.radiusEnd], uv, uv);
29
+ const singleton = new TgdPainterSegmentsData();
30
+ const radiusStart = item.radiusStart * HIGHLIGHT_RADIUS_MULTIPLIER;
31
+ const radiusEnd = item.radiusEnd * HIGHLIGHT_RADIUS_MULTIPLIER;
32
+ singleton.add([...start, radiusStart], [...end, radiusEnd], uv, uv);
33
+ if (item.type !== MorphoViewerTreeItemType.Liaison) {
34
+ map.set(item.index, singleton);
35
+ }
36
+ }
37
+ const DENDROGRAM_CENTER_Y = 0.4;
38
+ function computeDendrogramStart(item, width, height) {
39
+ var _a;
40
+ if (item.type === MorphoViewerTreeItemType.Liaison) {
41
+ return computeDendrogramEnd((_a = item.parent) !== null && _a !== void 0 ? _a : item, width, height);
42
+ }
43
+ const x = item.rank * width;
44
+ const y = item.distanceFromSoma - height * DENDROGRAM_CENTER_Y;
45
+ const z = 0;
46
+ return [x, y, z];
47
+ }
48
+ function computeDendrogramEnd(item, width, height) {
49
+ if (item.type === MorphoViewerTreeItemType.Liaison) {
50
+ const [child] = item.children;
51
+ return computeDendrogramStart(child !== null && child !== void 0 ? child : item, width, height);
52
+ }
53
+ const x = item.rank * width;
54
+ const y = item.distanceFromSoma + item.segmentLength - height * DENDROGRAM_CENTER_Y;
55
+ const z = 0;
56
+ return [x, y, z];
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNpbXVsL3BhaW50ZXIvc2VnbWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QyxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSTNELE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBRXhDLE1BQU0sVUFBVSxjQUFjLENBQUMsU0FBb0IsRUFBRSxHQUF3QztJQUMzRixNQUFNLFFBQVEsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7SUFDOUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3pCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzVCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsU0FBb0IsRUFDcEIsR0FBd0M7SUFFeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFD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
@@ -0,0 +1,9 @@
1
+ import { TgdVec3 } from "@tolokoban/tgd";
2
+ import { type MorphoViewerTree, type MorphoViewerTreeItem } from "../types/public";
3
+ export declare function findSoma(tree: MorphoViewerTree): {
4
+ somaTreeItem: MorphoViewerTreeItem | null;
5
+ somaCenter: TgdVec3;
6
+ somaCount: number;
7
+ };
8
+ export declare function parentOrphansToSoma(morphology: MorphoViewerTree, somaTreeItem: MorphoViewerTreeItem | null): MorphoViewerTreeItem | undefined;
9
+ //# sourceMappingURL=soma.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soma.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/soma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAE1B,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,QAAQ,CAAC,IAAI,EAAE,gBAAgB;;;;EAsB9C;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,gBAAgB,EAC5B,YAAY,EAAE,oBAAoB,GAAG,IAAI,oCAc1C"}
@@ -0,0 +1,44 @@
1
+ import { TgdVec3 } from "@tolokoban/tgd";
2
+ import { MorphoViewerTreeItemType, } from "../types/public.js";
3
+ export function findSoma(tree) {
4
+ let somaTreeItem = null;
5
+ const somaCenter = new TgdVec3(0, 0, 0);
6
+ let somaCount = 0;
7
+ const fringe = tree.roots.slice();
8
+ while (fringe.length > 0) {
9
+ const item = fringe.shift();
10
+ if (!item)
11
+ continue;
12
+ if (item === null || item === void 0 ? void 0 : item.children)
13
+ fringe.push(...item.children);
14
+ if (item.type === MorphoViewerTreeItemType.Soma) {
15
+ if (!somaTreeItem)
16
+ somaTreeItem = item;
17
+ somaCenter.add([item.x, item.y, item.z]);
18
+ somaCount++;
19
+ }
20
+ }
21
+ if (somaCount > 0)
22
+ somaCenter.scale(1 / somaCount);
23
+ return {
24
+ somaTreeItem,
25
+ somaCenter: new TgdVec3(),
26
+ somaCount,
27
+ };
28
+ }
29
+ export function parentOrphansToSoma(morphology, somaTreeItem) {
30
+ var _a;
31
+ const singleRoot = somaTreeItem !== null && somaTreeItem !== void 0 ? somaTreeItem : morphology.roots[0];
32
+ if (!singleRoot)
33
+ return;
34
+ const children = (_a = singleRoot.children) !== null && _a !== void 0 ? _a : [];
35
+ for (const root of morphology.roots) {
36
+ if (root !== singleRoot) {
37
+ children.push(root);
38
+ }
39
+ }
40
+ singleRoot.children = children;
41
+ morphology.roots = [singleRoot];
42
+ return singleRoot;
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29tYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc2ltdWwvcGFpbnRlci9zb21hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6QyxPQUFPLEVBR0wsd0JBQXdCLEdBQ3pCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFzQjtJQUM3QyxJQUFJLFlBQVksR0FBZ0MsSUFBSSxDQUFDO0lBQ3JELE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbEMsT0FBTyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSTtZQUFFLFNBQVM7UUFFcEIsSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsUUFBUTtZQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxZQUFZO2dCQUFFLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDdkMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxTQUFTLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxTQUFTLEdBQUcsQ0FBQztRQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELE9BQU87UUFDTCxZQUFZO1FBQ1osVUFBVSxFQUFFLElBQUksT0FBTyxFQUFFO1FBQ3pCLFNBQVM7S0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsVUFBNEIsRUFDNUIsWUFBeUM7O0lBRXpDLE1BQU0sVUFBVSxHQUFHLFlBQVksYUFBWixZQUFZLGNBQVosWUFBWSxHQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFPO0lBRXhCLE1BQU0sUUFBUSxHQUFHLE1BQUEsVUFBVSxDQUFDLFFBQVEsbUNBQUksRUFBRSxDQUFDO0lBQzNDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BDLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFDRCxVQUFVLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMvQixVQUFVLENBQUMsS0FBSyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyJ9
@@ -0,0 +1,44 @@
1
+ import { TgdContext, TgdEvent, TgdVec4 } from "@tolokoban/tgd";
2
+ import { MorphoViewerSpikeRecord } from "../types/public";
3
+ export declare class SpikingManager {
4
+ readonly context: TgdContext;
5
+ private static ID;
6
+ readonly name: string;
7
+ readonly eventProgressChange: TgdEvent<number>;
8
+ readonly eventSpikesChange: TgdEvent<MorphoViewerSpikeRecord[]>;
9
+ readonly eventSpikeChange: TgdEvent<MorphoViewerSpikeRecord | undefined>;
10
+ readonly eventSpikeIndexChange: TgdEvent<number>;
11
+ private readonly _color;
12
+ private _spikes;
13
+ private _spike;
14
+ private _spikeIndex;
15
+ private _spikingRadiusTime;
16
+ private _speed;
17
+ private readonly virtualTime;
18
+ constructor(context: TgdContext);
19
+ delete(): void;
20
+ get speed(): number;
21
+ set speed(speed: number);
22
+ get time(): number;
23
+ usePlaying(): [playing: boolean, setPlaying: (playing: boolean) => void];
24
+ get color(): {
25
+ R: number;
26
+ G: number;
27
+ B: number;
28
+ A: number;
29
+ toVec4: () => TgdVec4;
30
+ toString: () => string;
31
+ };
32
+ get progress(): number;
33
+ set progress(progress: number);
34
+ get playing(): boolean;
35
+ get intensity(): number;
36
+ get spikes(): MorphoViewerSpikeRecord[];
37
+ set spikes(spikes: MorphoViewerSpikeRecord[]);
38
+ get spike(): MorphoViewerSpikeRecord | undefined;
39
+ private set spike(value);
40
+ get spikeIndex(): number;
41
+ set spikeIndex(spikeIndex: number);
42
+ private readonly dispatchProgress;
43
+ }
44
+ //# sourceMappingURL=spiking-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spiking-manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/spiking-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,UAAU,EAAE,QAAQ,EAAW,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,qBAAa,cAAc;aAiBG,OAAO,EAAE,UAAU;IAhB/C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAK;IAEtB,SAAgB,IAAI,SAA2C;IAC/D,SAAgB,mBAAmB,mBAA0B;IAC7D,SAAgB,iBAAiB,sCAA6C;IAC9E,SAAgB,gBAAgB,gDAAuD;IACvF,SAAgB,qBAAqB,mBAA0B;IAE/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,MAAM,CAAkD;IAChE,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;gBAEV,OAAO,EAAE,UAAU;IAM/C,MAAM;IAIN,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAKtB;IAED,IAAI,IAAI,WAEP;IAED,UAAU,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAkBxE,IAAI,KAAK,IAAI;QACX,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,MAAM,EAAE,MAAM,OAAO,CAAC;QACtB,QAAQ,EAAE,MAAM,MAAM,CAAC;KACxB,CAEA;IAKD,IAAI,QAAQ,IAeW,MAAM,CAD5B;IACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAQ5B;IAED,IAAI,OAAO,YAEV;IAKD,IAAI,SAAS,IAAI,MAAM,CAkCtB;IAED,IAAI,MAAM,IAAI,uBAAuB,EAAE,CAEtC;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,uBAAuB,EAAE,EAM3C;IAED,IAAI,KAAK,IAAI,uBAAuB,GAAG,SAAS,CAE/C;IACD,OAAO,KAAK,KAAK,QAOhB;IAED,IAAI,UAAU,IAGa,MAAM,CADhC;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,EAWhC;IAED,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE/B;CACH"}
@@ -0,0 +1,164 @@
1
+ import { TgdColor, TgdEvent, TgdTime } from "@tolokoban/tgd";
2
+ import React from "react";
3
+ import { SPIKING_TIME_RADIUS } from "../contants.js";
4
+ export class SpikingManager {
5
+ constructor(context) {
6
+ this.context = context;
7
+ this.name = `SpikingManager#${SpikingManager.ID++}`;
8
+ this.eventProgressChange = new TgdEvent();
9
+ this.eventSpikesChange = new TgdEvent();
10
+ this.eventSpikeChange = new TgdEvent();
11
+ this.eventSpikeIndexChange = new TgdEvent();
12
+ this._color = new TgdColor(1, 1, 1, 1);
13
+ this._spikes = [];
14
+ this._spike = undefined;
15
+ this._spikeIndex = 0;
16
+ this._spikingRadiusTime = SPIKING_TIME_RADIUS;
17
+ this._speed = 0;
18
+ this.dispatchProgress = () => {
19
+ this.eventProgressChange.dispatch(this.progress);
20
+ };
21
+ this.virtualTime = new TgdTime({ context });
22
+ context.eventPaint.addListener(this.dispatchProgress);
23
+ this.speed = 0.1;
24
+ }
25
+ delete() {
26
+ this.context.eventPaint.removeListener(this.dispatchProgress);
27
+ }
28
+ get speed() {
29
+ return this._speed;
30
+ }
31
+ set speed(speed) {
32
+ if (this._speed === speed)
33
+ return;
34
+ this._speed = speed;
35
+ this.virtualTime.speed = speed;
36
+ }
37
+ get time() {
38
+ return this.virtualTime.seconds;
39
+ }
40
+ usePlaying() {
41
+ const { context } = this;
42
+ const [playing, setPlaying] = React.useState(false);
43
+ React.useEffect(() => {
44
+ const handler = () => setPlaying(context.playing);
45
+ context.eventPlayingChange.addListener(handler);
46
+ return () => context.eventPlayingChange.removeListener(handler);
47
+ }, []);
48
+ return [
49
+ playing,
50
+ (v) => {
51
+ if (v)
52
+ context.play();
53
+ else
54
+ context.pause();
55
+ },
56
+ ];
57
+ }
58
+ get color() {
59
+ return this._color;
60
+ }
61
+ get progress() {
62
+ var _a;
63
+ const { spike } = this;
64
+ if (!spike)
65
+ return 0;
66
+ const { time } = this;
67
+ const duration = spike.timeMaxInSeconds - spike.timeMinInSeconds;
68
+ const progress = time / duration;
69
+ if (progress > 1) {
70
+ this.virtualTime.reset();
71
+ (_a = this.context) === null || _a === void 0 ? void 0 : _a.pause();
72
+ return 0;
73
+ }
74
+ return Math.max(progress, 0);
75
+ }
76
+ set progress(progress) {
77
+ const { spike } = this;
78
+ if (!spike)
79
+ return;
80
+ const duration = spike.timeMaxInSeconds - spike.timeMinInSeconds;
81
+ const seconds = duration * progress;
82
+ this.virtualTime.seconds = seconds;
83
+ this.context.paint();
84
+ }
85
+ get playing() {
86
+ var _a, _b;
87
+ return (_b = (_a = this.context) === null || _a === void 0 ? void 0 : _a.playing) !== null && _b !== void 0 ? _b : false;
88
+ }
89
+ get intensity() {
90
+ const { spike } = this;
91
+ if (!spike)
92
+ return 0;
93
+ const { progress } = this;
94
+ if (progress <= 0)
95
+ return 0;
96
+ const t = progress * (spike.timeMaxInSeconds - spike.timeMinInSeconds) + spike.timeMinInSeconds;
97
+ let a = 0;
98
+ const data = spike.spikesInSeconds;
99
+ let b = data.length - 1;
100
+ let m = 0;
101
+ let loops = Math.ceil(Math.log2(data.length));
102
+ while (loops-- > 0) {
103
+ m = Math.floor((a + b) / 2);
104
+ const value = data[m];
105
+ if (value === t) {
106
+ a = m;
107
+ b = m;
108
+ break;
109
+ }
110
+ else if (value > t) {
111
+ b = m;
112
+ }
113
+ else {
114
+ a = m;
115
+ }
116
+ }
117
+ m = Math.floor((a + b) / 2);
118
+ const factor = 1 / (this.speed * this._spikingRadiusTime);
119
+ const computeIntensity = (index) => 1 - Math.min(Math.abs(data[index] - t) * factor, 1);
120
+ let intensity = computeIntensity(m);
121
+ if (m < data.length - 1) {
122
+ intensity += computeIntensity(m + 1);
123
+ }
124
+ return intensity;
125
+ }
126
+ get spikes() {
127
+ return this._spikes;
128
+ }
129
+ set spikes(spikes) {
130
+ if (this._spikes === spikes)
131
+ return;
132
+ this._spikes = spikes;
133
+ this.spikeIndex = spikes.length - 1;
134
+ this.eventSpikesChange.dispatch(spikes);
135
+ }
136
+ get spike() {
137
+ return this._spikes[this._spikeIndex];
138
+ }
139
+ set spike(spike) {
140
+ if (spike === this._spike)
141
+ return;
142
+ this._spike = spike;
143
+ spike === null || spike === void 0 ? void 0 : spike.spikesInSeconds.sort((a, b) => a - b);
144
+ this.virtualTime.reset();
145
+ this.eventSpikeChange.dispatch(spike);
146
+ }
147
+ get spikeIndex() {
148
+ return this._spikeIndex;
149
+ }
150
+ set spikeIndex(spikeIndex) {
151
+ if (spikeIndex === this._spikeIndex)
152
+ return;
153
+ this._spikeIndex = spikeIndex;
154
+ this.spike = this.spikes[spikeIndex];
155
+ const { spike } = this;
156
+ if (spike) {
157
+ this._color.parse(spike.color);
158
+ }
159
+ this.eventSpikeIndexChange.dispatch(spikeIndex);
160
+ this.eventSpikeChange.dispatch(this.spike);
161
+ }
162
+ }
163
+ SpikingManager.ID = 1;
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Bpa2luZy1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zaW11bC9wYWludGVyL3NwaWtpbmctbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFjLFFBQVEsRUFBRSxPQUFPLEVBQVcsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2xELE1BQU0sT0FBTyxjQUFjO0lBaUJ6QixZQUE0QixPQUFtQjtRQUFuQixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBZC9CLFNBQUksR0FBRyxrQkFBa0IsY0FBYyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDL0Msd0JBQW1CLEdBQUcsSUFBSSxRQUFRLEVBQVUsQ0FBQztRQUM3QyxzQkFBaUIsR0FBRyxJQUFJLFFBQVEsRUFBNkIsQ0FBQztRQUM5RCxxQkFBZ0IsR0FBRyxJQUFJLFFBQVEsRUFBdUMsQ0FBQztRQUN2RSwwQkFBcUIsR0FBRyxJQUFJLFFBQVEsRUFBVSxDQUFDO1FBRTlDLFdBQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQyxZQUFPLEdBQThCLEVBQUUsQ0FBQztRQUN4QyxXQUFNLEdBQXdDLFNBQVMsQ0FBQztRQUN4RCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQix1QkFBa0IsR0FBRyxtQkFBbUIsQ0FBQztRQUN6QyxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBc0tGLHFCQUFnQixHQUFHLEdBQUcsRUFBRTtZQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUM7UUFw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
@@ -0,0 +1,59 @@
1
+ import { type ArrayNumber3, TgdBoundingBox } from "@tolokoban/tgd";
2
+ import { type MorphoViewerTree, type MorphoViewerTreeItem, MorphoViewerTreeItemType } from "../types/public";
3
+ export interface StructureItem {
4
+ parent?: StructureItem;
5
+ children: StructureItem[];
6
+ index: number;
7
+ name: string;
8
+ sectionName: string;
9
+ sectionIndex: number;
10
+ segmentIndex: number;
11
+ segmentsCount: number;
12
+ start: ArrayNumber3;
13
+ end: ArrayNumber3;
14
+ radiusStart: number;
15
+ radiusEnd: number;
16
+ type: MorphoViewerTreeItemType;
17
+ segmentLength: number;
18
+ sectionLength: number;
19
+ distanceFromSoma: number;
20
+ leavesCount: number;
21
+ maxLength: number;
22
+ rank: number;
23
+ node: MorphoViewerTreeItem;
24
+ }
25
+ export interface StructureBoundingBox {
26
+ min: ArrayNumber3;
27
+ max: ArrayNumber3;
28
+ center: ArrayNumber3;
29
+ }
30
+ export declare class Structure {
31
+ readonly cellId: string;
32
+ readonly root: StructureItem;
33
+ readonly bboxDendrites: TgdBoundingBox;
34
+ readonly zoomMin: number;
35
+ readonly zoomMax: number;
36
+ readonly center: Readonly<ArrayNumber3>;
37
+ readonly useStraightCylinders: boolean;
38
+ private readonly bbox;
39
+ private readonly bboxSoma;
40
+ private readonly items;
41
+ private readonly segmentsPerSection;
42
+ private _hasApicalDendrites;
43
+ constructor(morphology: MorphoViewerTree);
44
+ private computeSectionsLengths;
45
+ private createAllSegments;
46
+ private computeDistancesFromSoma;
47
+ get hasApicalDendrites(): boolean;
48
+ private registerBranch;
49
+ getSegmentsOfSection(sectionName: string): StructureItem[];
50
+ getSegmentOfSectionAtOffset(sectionName: string, offset: number): {
51
+ segment: StructureItem;
52
+ offset: number;
53
+ } | null;
54
+ get length(): number;
55
+ get(index: number): StructureItem;
56
+ forEach(callback: (item: StructureItem, index: number) => void): void;
57
+ private createSegment;
58
+ }
59
+ //# sourceMappingURL=structure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structure.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-simul/painter/structure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,cAAc,EAAgB,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAKzB,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,EAAE,YAAY,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,wBAAwB,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAMlB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,EAAE,YAAY,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,qBAAa,SAAS;IACpB,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,EAAE,aAAa,CAAC;IAKpC,SAAgB,aAAa,iBAAwB;IACrD,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/C,SAAgB,oBAAoB,EAAE,OAAO,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAI7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsC;IACzE,OAAO,CAAC,mBAAmB,CAAkB;gBAEjC,UAAU,EAAE,gBAAgB;IAmBxC,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,wBAAwB;IAKhC,IAAI,kBAAkB,YAErB;IAED,OAAO,CAAC,cAAc;IAmCtB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,EAAE;IAI1D,2BAA2B,CACzB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA8BpD,IAAI,MAAM,WAET;IAED,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa;IAOjC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI;IAI9D,OAAO,CAAC,aAAa;CAgCtB"}