@jax-data-science/sci-image-visualizer 0.8.3 → 0.10.0

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 (579) hide show
  1. package/README.md +201 -460
  2. package/esm2022/index.mjs +34 -15
  3. package/esm2022/lib/channel-histogram/channel-histogram.component.mjs +163 -91
  4. package/esm2022/lib/contracts/capabilities.contract.mjs +4 -3
  5. package/esm2022/lib/contracts/cell-segmenter.contract.mjs +1 -1
  6. package/esm2022/lib/contracts/channel-histogram-api.contract.mjs +5 -1
  7. package/esm2022/lib/contracts/color.mjs +60 -0
  8. package/esm2022/lib/contracts/colormap-lut.mjs +213 -57
  9. package/esm2022/lib/contracts/coordinate-transform.contract.mjs +1 -1
  10. package/esm2022/lib/contracts/display-types.mjs +11 -1
  11. package/esm2022/lib/contracts/image.contract.mjs +1 -1
  12. package/esm2022/lib/contracts/instance-segmenter.contract.mjs +1 -1
  13. package/esm2022/lib/contracts/intensity.mjs +48 -5
  14. package/esm2022/lib/contracts/plot-type-contribution.contract.mjs +1 -1
  15. package/esm2022/lib/contracts/plot-type.mjs +134 -17
  16. package/esm2022/lib/contracts/ports/image-state.port.mjs +4 -1
  17. package/esm2022/lib/contracts/ports/preferences.port.mjs +5 -1
  18. package/esm2022/lib/contracts/ports/region-io.port.mjs +2 -1
  19. package/esm2022/lib/contracts/ports/spatial-data.port.mjs +5 -1
  20. package/esm2022/lib/contracts/ports/tile-access.port.mjs +2 -1
  21. package/esm2022/lib/contracts/region-editor-api.contract.mjs +1 -1
  22. package/esm2022/lib/contracts/region-overlay.contract.mjs +1 -1
  23. package/esm2022/lib/contracts/region-store.contract.mjs +1 -1
  24. package/esm2022/lib/contracts/sam.contract.mjs +1 -1
  25. package/esm2022/lib/contracts/section-view.contract.mjs +2 -0
  26. package/esm2022/lib/contracts/semantic-segmenter.contract.mjs +1 -1
  27. package/esm2022/lib/contracts/spatial-dataset.contract.mjs +3 -1
  28. package/esm2022/lib/contracts/toolbar-tool.contract.mjs +6 -4
  29. package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
  30. package/esm2022/lib/contracts/viz-config.mjs +2 -1
  31. package/esm2022/lib/geometry/contour.mjs +63 -0
  32. package/esm2022/lib/geometry/loft.mjs +128 -0
  33. package/esm2022/lib/geometry/polylabel.mjs +156 -0
  34. package/esm2022/lib/geometry/raster.mjs +98 -0
  35. package/esm2022/lib/geometry/reconstruct.mjs +315 -0
  36. package/esm2022/lib/geometry/reslice-image.mjs +57 -0
  37. package/esm2022/lib/geometry/ring.mjs +201 -0
  38. package/esm2022/lib/geometry/section.mjs +215 -0
  39. package/esm2022/lib/hex-color-picker/hex-color-picker.component.mjs +202 -102
  40. package/esm2022/lib/implementations/base-store-visualizer.mjs +201 -48
  41. package/esm2022/lib/implementations/napari-js/napari-axes-gizmo.mjs +65 -0
  42. package/esm2022/lib/implementations/napari-js/napari-display-state.mjs +136 -0
  43. package/esm2022/lib/implementations/napari-js/napari-helpers.mjs +199 -0
  44. package/esm2022/lib/implementations/napari-js/napari-image-2d-scene.mjs +602 -0
  45. package/esm2022/lib/implementations/napari-js/napari-loading-badge.mjs +12 -9
  46. package/esm2022/lib/implementations/napari-js/napari-loading-state.mjs +83 -0
  47. package/esm2022/lib/implementations/napari-js/napari-region-mesh-pointer.mjs +100 -0
  48. package/esm2022/lib/implementations/napari-js/napari-region-overlay.mjs +180 -591
  49. package/esm2022/lib/implementations/napari-js/napari-scene.mjs +2 -0
  50. package/esm2022/lib/implementations/napari-js/napari-spatial-2d-scene.mjs +614 -0
  51. package/esm2022/lib/implementations/napari-js/napari-spatial-3d-scene.mjs +769 -0
  52. package/esm2022/lib/implementations/napari-js/napari-spatial-encoding.mjs +199 -0
  53. package/esm2022/lib/implementations/napari-js/napari-spatial-hover.mjs +270 -0
  54. package/esm2022/lib/implementations/napari-js/napari-spatial-scene.mjs +159 -0
  55. package/esm2022/lib/implementations/napari-js/napari-spatial-tiles.mjs +106 -1408
  56. package/esm2022/lib/implementations/napari-js/napari-spatial-tooltip.mjs +2 -2
  57. package/esm2022/lib/implementations/napari-js/napari-surface-scene.mjs +271 -0
  58. package/esm2022/lib/implementations/napari-js/napari-tile-client.mjs +562 -0
  59. package/esm2022/lib/implementations/napari-js/napari-tool-bridge.mjs +347 -0
  60. package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +427 -4207
  61. package/esm2022/lib/implementations/napari-js/napari-volume-region-meshes.mjs +129 -0
  62. package/esm2022/lib/implementations/napari-js/napari-volume-scene.mjs +550 -0
  63. package/esm2022/lib/implementations/napari-js/napari-volume-slice-planes.mjs +103 -0
  64. package/esm2022/lib/implementations/napari-js/napari-volume-z-handle.mjs +6 -6
  65. package/esm2022/lib/implementations/napari-js/region-overlay/overlay-projection.mjs +96 -0
  66. package/esm2022/lib/implementations/napari-js/region-overlay/region-edit.mjs +35 -0
  67. package/esm2022/lib/implementations/napari-js/region-overlay/region-svg-renderer.mjs +194 -0
  68. package/esm2022/lib/implementations/napari-js/spatial-tiles/categorical-lookup.mjs +30 -0
  69. package/esm2022/lib/implementations/napari-js/spatial-tiles/cell-layers.mjs +274 -0
  70. package/esm2022/lib/implementations/napari-js/spatial-tiles/density-layer.mjs +144 -0
  71. package/esm2022/lib/implementations/napari-js/spatial-tiles/layer-groups.mjs +165 -0
  72. package/esm2022/lib/implementations/napari-js/spatial-tiles/plan-context.mjs +78 -0
  73. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-hover.mjs +182 -0
  74. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-jobs.mjs +369 -0
  75. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-layers.mjs +306 -0
  76. package/esm2022/lib/implementations/osd/display-pipeline.mjs +102 -40
  77. package/esm2022/lib/implementations/osd/histogram-sampler.mjs +56 -31
  78. package/esm2022/lib/implementations/osd/openseadragon-viewer-options.mjs +128 -0
  79. package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +333 -1685
  80. package/esm2022/lib/implementations/osd/osd-coordinate-transform.mjs +1 -1
  81. package/esm2022/lib/implementations/osd/osd-coords.mjs +5 -6
  82. package/esm2022/lib/implementations/osd/osd-export.mjs +122 -0
  83. package/esm2022/lib/implementations/osd/osd-lib.mjs +15 -1
  84. package/esm2022/lib/implementations/osd/osd-navigator-chrome.mjs +205 -0
  85. package/esm2022/lib/implementations/osd/osd-pixel-readback.mjs +68 -0
  86. package/esm2022/lib/implementations/osd/osd-region-overlay-draw.mjs +164 -0
  87. package/esm2022/lib/implementations/osd/osd-region-overlay.mjs +213 -716
  88. package/esm2022/lib/implementations/osd/osd-scale-bar.mjs +52 -60
  89. package/esm2022/lib/implementations/osd/osd-tile-source.mjs +105 -0
  90. package/esm2022/lib/implementations/osd/osd-viewer-like.mjs +2 -0
  91. package/esm2022/lib/implementations/osd/osd-viewer-mount.mjs +44 -0
  92. package/esm2022/lib/implementations/osd/osd-viewport.mjs +184 -0
  93. package/esm2022/lib/implementations/osd/osd-zoom.mjs +7 -1
  94. package/esm2022/lib/implementations/osd/simple-source.mjs +395 -0
  95. package/esm2022/lib/implementations/osd/slice-cache.mjs +53 -48
  96. package/esm2022/lib/implementations/osd/tile-client.mjs +32 -11
  97. package/esm2022/lib/implementations/osd/tile-recolor.mjs +330 -0
  98. package/esm2022/lib/implementations/plotly/omics-trace-builders.mjs +161 -73
  99. package/esm2022/lib/implementations/plotly/plotly-coordinate-transform.mjs +1 -1
  100. package/esm2022/lib/implementations/plotly/plotly-image-loader.mjs +112 -0
  101. package/esm2022/lib/implementations/plotly/plotly-image-recolor.mjs +178 -0
  102. package/esm2022/lib/implementations/plotly/plotly-intensity-inset.mjs +33 -0
  103. package/esm2022/lib/implementations/plotly/plotly-isosurface-controls.mjs +83 -0
  104. package/esm2022/lib/implementations/plotly/plotly-layouts.mjs +121 -0
  105. package/esm2022/lib/implementations/plotly/plotly-readback.mjs +117 -0
  106. package/esm2022/lib/implementations/plotly/plotly-region-overlay.mjs +19 -10
  107. package/esm2022/lib/implementations/plotly/plotly-shape-projection.mjs +223 -0
  108. package/esm2022/lib/implementations/plotly/plotly-trace-builders.mjs +79 -19
  109. package/esm2022/lib/implementations/plotly/plotly-zoom-controller.mjs +223 -0
  110. package/esm2022/lib/implementations/plotly/plotly.service.mjs +439 -1655
  111. package/esm2022/lib/implementations/region-centroids.mjs +47 -0
  112. package/esm2022/lib/implementations/simple-slice-access.service.mjs +22 -12
  113. package/esm2022/lib/implementations/spatial-data-http/spatial-data-http.service.mjs +172 -92
  114. package/esm2022/lib/implementations/spatial-data-http/spatial-wire.mjs +103 -22
  115. package/esm2022/lib/implementations/tile-server/index.mjs +6 -0
  116. package/esm2022/lib/implementations/tile-server/native-histogram.mjs +30 -0
  117. package/esm2022/lib/implementations/tile-server/poll-descriptor.mjs +65 -0
  118. package/esm2022/lib/implementations/tile-server/tile-protocol.mjs +42 -0
  119. package/esm2022/lib/implementations/tile-server/transport.mjs +135 -0
  120. package/esm2022/lib/intensity/intensity-profile.mjs +107 -0
  121. package/esm2022/lib/intensity/intensity-profile.service.mjs +223 -0
  122. package/esm2022/lib/intensity-inset/intensity-inset.component.mjs +133 -0
  123. package/esm2022/lib/models/bezier.mjs +1 -11
  124. package/esm2022/lib/models/class-preset.mjs +41 -3
  125. package/esm2022/lib/models/geometry.mjs +27 -164
  126. package/esm2022/lib/models/polygon-edit.mjs +254 -0
  127. package/esm2022/lib/models/polygon-factory.mjs +134 -0
  128. package/esm2022/lib/models/region-clone.mjs +68 -0
  129. package/esm2022/lib/models/region-geojson.mjs +411 -0
  130. package/esm2022/lib/models/region.mjs +34 -33
  131. package/esm2022/lib/models/shape.mjs +18 -16
  132. package/esm2022/lib/plot-mode/contribution-host.mjs +297 -0
  133. package/esm2022/lib/plot-mode/plot-mode-controller.mjs +9 -6
  134. package/esm2022/lib/plot-mode/plot-type-menu.mjs +85 -0
  135. package/esm2022/lib/plot-mode/tool-params-model.mjs +87 -0
  136. package/esm2022/lib/plot.utilities.mjs +296 -473
  137. package/esm2022/lib/processing/image-crop.mjs +1 -1
  138. package/esm2022/lib/processing/processing-image.mjs +28 -15
  139. package/esm2022/lib/provide-visualization.mjs +40 -14
  140. package/esm2022/lib/region-editor/class-tree/class-tree.component.mjs +156 -0
  141. package/esm2022/lib/region-editor/class-tree/class-tree.mjs +108 -0
  142. package/esm2022/lib/region-editor/classes-panel/classes-panel.component.mjs +163 -0
  143. package/esm2022/lib/region-editor/file-stem.mjs +13 -0
  144. package/esm2022/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.mjs +118 -0
  145. package/esm2022/lib/region-editor/mask-export.service.mjs +98 -0
  146. package/esm2022/lib/region-editor/mask-raster.mjs +11 -5
  147. package/esm2022/lib/region-editor/region-color-dialog/region-color-dialog.component.mjs +56 -0
  148. package/esm2022/lib/region-editor/region-editor-help/region-editor-help.component.mjs +28 -0
  149. package/esm2022/lib/region-editor/region-editor.component.mjs +896 -660
  150. package/esm2022/lib/region-editor/region-metrics.mjs +86 -0
  151. package/esm2022/lib/region-editor/region-persistence.service.mjs +160 -0
  152. package/esm2022/lib/region-editor/region-table/region-table.component.mjs +169 -0
  153. package/esm2022/lib/region-editor/save-mask-dialog/save-mask-dialog.component.mjs +91 -0
  154. package/esm2022/lib/region-editor/save-regions-dialog/save-regions-dialog.component.mjs +92 -0
  155. package/esm2022/lib/region-ops.service.mjs +28 -70
  156. package/esm2022/lib/region-overlay/region-geometry.mjs +360 -0
  157. package/esm2022/lib/region-overlay/region-hit-test.mjs +103 -0
  158. package/esm2022/lib/region-overlay/region-source-layer.mjs +378 -0
  159. package/esm2022/lib/region-overlay/region-style.mjs +97 -0
  160. package/esm2022/lib/region-overlay/svg-region-renderer.mjs +228 -0
  161. package/esm2022/lib/region-source/http-region-source.mjs +104 -0
  162. package/esm2022/lib/region-source/region-source-ops.mjs +53 -0
  163. package/esm2022/lib/region-source/region-source-worker.mjs +10 -0
  164. package/esm2022/lib/region-source/region-source.mjs +67 -0
  165. package/esm2022/lib/region-source/region-tiles.mjs +708 -0
  166. package/esm2022/lib/region-source/worker-region-source.mjs +229 -0
  167. package/esm2022/lib/render-orchestrator.mjs +14 -11
  168. package/esm2022/lib/render-session.mjs +207 -0
  169. package/esm2022/lib/routing-visualizer.service.mjs +858 -414
  170. package/esm2022/lib/section-pane/section-pane.component.mjs +299 -0
  171. package/esm2022/lib/spatial/density-raster.mjs +14 -0
  172. package/esm2022/lib/spatial/embedding-compute-coordinator.mjs +239 -0
  173. package/esm2022/lib/spatial/embedding-compute.mjs +43 -10
  174. package/esm2022/lib/spatial/gene-search.mjs +1 -1
  175. package/esm2022/lib/spatial/glyphs.mjs +97 -0
  176. package/esm2022/lib/spatial/lod.mjs +187 -0
  177. package/esm2022/lib/spatial/spatial-controls.facade.mjs +200 -0
  178. package/esm2022/lib/spatial/spatial-density.mjs +25 -16
  179. package/esm2022/lib/spatial/spatial-encoding.mjs +26 -82
  180. package/esm2022/lib/spatial/spatial-expression.mjs +43 -42
  181. package/esm2022/lib/spatial/spatial-framing.mjs +1 -1
  182. package/esm2022/lib/spatial/spatial-heatmap.mjs +6 -3
  183. package/esm2022/lib/spatial/spatial-hover.mjs +5 -33
  184. package/esm2022/lib/spatial/spatial-panel-model.mjs +282 -0
  185. package/esm2022/lib/spatial/spatial-sections.mjs +1 -1
  186. package/esm2022/lib/spatial/spatial-selection.mjs +33 -46
  187. package/esm2022/lib/spatial/spatial-tile-merge.mjs +219 -0
  188. package/esm2022/lib/spatial/spatial-tiles.mjs +12 -648
  189. package/esm2022/lib/spatial/spatial-volume-image.mjs +2 -4
  190. package/esm2022/lib/spatial/stats.mjs +71 -0
  191. package/esm2022/lib/spatial/transcript-grouping.mjs +307 -0
  192. package/esm2022/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.mjs +150 -0
  193. package/esm2022/lib/spatial-controls/spatial-charts/chart-data-model.mjs +309 -0
  194. package/esm2022/lib/spatial-controls/spatial-charts/chart-help.mjs +145 -0
  195. package/esm2022/lib/spatial-controls/spatial-charts/plotly-chart-host.mjs +158 -0
  196. package/esm2022/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.mjs +47 -0
  197. package/esm2022/lib/spatial-controls/spatial-charts/spatial-charts.component.mjs +297 -802
  198. package/esm2022/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.mjs +89 -0
  199. package/esm2022/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.mjs +52 -0
  200. package/esm2022/lib/spatial-controls/spatial-controls.component.mjs +143 -1238
  201. package/esm2022/lib/spatial-controls/spatial-gene-picker.mjs +153 -0
  202. package/esm2022/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.mjs +241 -0
  203. package/esm2022/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.mjs +193 -0
  204. package/esm2022/lib/spatial-controls/spatial-key/spatial-key.component.mjs +132 -0
  205. package/esm2022/lib/spatial-controls/spatial-key/spatial-key.model.mjs +67 -0
  206. package/esm2022/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.mjs +147 -0
  207. package/esm2022/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.mjs +300 -0
  208. package/esm2022/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.mjs +370 -0
  209. package/esm2022/lib/store/class-color.util.mjs +53 -5
  210. package/esm2022/lib/store/class-signatures.mjs +63 -0
  211. package/esm2022/lib/store/region-history.mjs +146 -0
  212. package/esm2022/lib/store/region-scope-cache.mjs +144 -0
  213. package/esm2022/lib/store/region-selection.mjs +82 -0
  214. package/esm2022/lib/store/region-source-scope.mjs +171 -0
  215. package/esm2022/lib/store/region-store.service.mjs +986 -670
  216. package/esm2022/lib/store/spatial-selection.service.mjs +2 -2
  217. package/esm2022/lib/store/visualizer-store.service.mjs +81 -76
  218. package/esm2022/lib/toast-outlets.mjs +5 -4
  219. package/esm2022/lib/toolbar/brush/brush-tool.service.mjs +92 -434
  220. package/esm2022/lib/toolbar/canvas-tools.mjs +20 -0
  221. package/esm2022/lib/toolbar/crop/slide-crop.mjs +26 -42
  222. package/esm2022/lib/toolbar/plot-type-selector/plot-type-selector.component.mjs +85 -0
  223. package/esm2022/lib/toolbar/region-tools/region-tool-buttons.mjs +74 -0
  224. package/esm2022/lib/toolbar/region-tools/region-tools.component.mjs +120 -0
  225. package/esm2022/lib/toolbar/segmentation/cell-segment-tool.service.mjs +74 -78
  226. package/esm2022/lib/toolbar/segmentation/cellpose-segmenter.service.mjs +50 -8
  227. package/esm2022/lib/toolbar/segmentation/onnx-sam-session.mjs +61 -42
  228. package/esm2022/lib/toolbar/segmentation/pending-calls.mjs +47 -0
  229. package/esm2022/lib/toolbar/segmentation/sam-model-registry.mjs +12 -4
  230. package/esm2022/lib/toolbar/segmentation/sam-onnx-core.mjs +70 -14
  231. package/esm2022/lib/toolbar/segmentation/sam-point-tool.service.mjs +135 -172
  232. package/esm2022/lib/toolbar/segmentation/sam-prompt.mjs +9 -90
  233. package/esm2022/lib/toolbar/segmentation/sam-session.service.mjs +183 -0
  234. package/esm2022/lib/toolbar/segmentation/sam-tool.service.mjs +95 -150
  235. package/esm2022/lib/toolbar/segmentation/segmentation-commit.mjs +12 -0
  236. package/esm2022/lib/toolbar/segmentation/segmentation-runner.mjs +108 -0
  237. package/esm2022/lib/toolbar/segmentation-tools/segmentation-tools.component.mjs +155 -0
  238. package/esm2022/lib/toolbar/stack-controls/stack-controls.component.mjs +121 -0
  239. package/esm2022/lib/toolbar/tool-kit/async-tool-status.mjs +37 -0
  240. package/esm2022/lib/toolbar/tool-kit/canvas-tool-manager.mjs +63 -0
  241. package/esm2022/lib/toolbar/tool-kit/canvas-tool.mjs +2 -0
  242. package/esm2022/lib/toolbar/tool-kit/frame-pixels.mjs +108 -0
  243. package/esm2022/lib/toolbar/tool-kit/mask-stroke-editor.mjs +306 -0
  244. package/esm2022/lib/toolbar/tool-kit/matrix-frame.mjs +61 -0
  245. package/esm2022/lib/toolbar/tool-kit/tool-overlay.mjs +140 -0
  246. package/esm2022/lib/toolbar/tool-kit/undo-gesture.mjs +24 -0
  247. package/esm2022/lib/toolbar/tool-slider/tool-slider.component.mjs +63 -0
  248. package/esm2022/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.mjs +50 -0
  249. package/esm2022/lib/toolbar/toolbar.component.mjs +84 -119
  250. package/esm2022/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.mjs +93 -115
  251. package/esm2022/lib/toolbar/view-controls/view-controls.component.mjs +107 -0
  252. package/esm2022/lib/toolbar/wand/wand-region-grow.mjs +321 -0
  253. package/esm2022/lib/toolbar/wand/wand-tool.service.mjs +121 -416
  254. package/esm2022/lib/toolbar/wand/wand.service.mjs +30 -894
  255. package/esm2022/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.mjs +48 -90
  256. package/esm2022/lib/util/mark-for-check.mjs +17 -0
  257. package/esm2022/lib/util/supersede.mjs +56 -0
  258. package/esm2022/lib/visualization.module.mjs +39 -141
  259. package/esm2022/lib/visualizer/floating-drag.directive.mjs +58 -0
  260. package/esm2022/lib/visualizer/region-actions.mjs +149 -0
  261. package/esm2022/lib/visualizer/region-load.mjs +123 -0
  262. package/esm2022/lib/visualizer/spatial-dataset-binder.mjs +163 -0
  263. package/esm2022/lib/visualizer/tool-modes.mjs +113 -0
  264. package/esm2022/lib/visualizer/viewer-shortcuts.mjs +167 -0
  265. package/esm2022/lib/visualizer/visualizer-context-menu.mjs +119 -0
  266. package/esm2022/lib/visualizer/volume-sections.mjs +175 -0
  267. package/esm2022/lib/visualizer.component.mjs +602 -1902
  268. package/esm2022/lib/workers/spatial-math-ops.mjs +43 -0
  269. package/esm2022/lib/workers/spatial-math-worker.mjs +10 -0
  270. package/esm2022/lib/workers/spatial-math.mjs +190 -0
  271. package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs +47169 -0
  272. package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs.map +1 -0
  273. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs +238 -0
  274. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs.map +1 -0
  275. package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.mjs +12 -0
  276. package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.mjs.map +1 -0
  277. package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs +12 -0
  278. package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs.map +1 -0
  279. package/fesm2022/jax-data-science-sci-image-visualizer.mjs +41 -34467
  280. package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
  281. package/fesm2022/mask.worker.js +36 -917
  282. package/fesm2022/onnx-sam.worker.js +52 -16
  283. package/fesm2022/region-source.worker.js +1067 -0
  284. package/fesm2022/spatial-math.worker.js +471 -0
  285. package/fesm2022/tsne.worker.js +32 -15
  286. package/index.d.ts +19 -10
  287. package/lib/channel-histogram/channel-histogram.component.d.ts +53 -43
  288. package/lib/contracts/capabilities.contract.d.ts +4 -2
  289. package/lib/contracts/cell-segmenter.contract.d.ts +1 -0
  290. package/lib/contracts/channel-histogram-api.contract.d.ts +4 -0
  291. package/lib/contracts/color.d.ts +27 -0
  292. package/lib/contracts/colormap-lut.d.ts +19 -4
  293. package/lib/contracts/coordinate-transform.contract.d.ts +3 -3
  294. package/lib/contracts/display-types.d.ts +21 -0
  295. package/lib/contracts/image.contract.d.ts +4 -0
  296. package/lib/contracts/instance-segmenter.contract.d.ts +5 -0
  297. package/lib/contracts/intensity.d.ts +13 -2
  298. package/lib/contracts/plot-type.d.ts +3 -1
  299. package/lib/contracts/ports/image-state.port.d.ts +6 -2
  300. package/lib/contracts/ports/preferences.port.d.ts +4 -0
  301. package/lib/contracts/ports/region-io.port.d.ts +1 -0
  302. package/lib/contracts/ports/spatial-data.port.d.ts +4 -10
  303. package/lib/contracts/ports/tile-access.port.d.ts +1 -0
  304. package/lib/contracts/region-editor-api.contract.d.ts +85 -1
  305. package/lib/contracts/region-overlay.contract.d.ts +5 -0
  306. package/lib/contracts/region-store.contract.d.ts +22 -0
  307. package/lib/contracts/sam.contract.d.ts +7 -0
  308. package/lib/contracts/section-view.contract.d.ts +44 -0
  309. package/lib/contracts/semantic-segmenter.contract.d.ts +6 -0
  310. package/lib/contracts/spatial-dataset.contract.d.ts +19 -6
  311. package/lib/contracts/toolbar-tool.contract.d.ts +1 -0
  312. package/lib/contracts/visualizer.contract.d.ts +231 -54
  313. package/lib/contracts/viz-config.d.ts +9 -0
  314. package/lib/geometry/contour.d.ts +24 -0
  315. package/lib/geometry/loft.d.ts +22 -0
  316. package/lib/geometry/polylabel.d.ts +23 -0
  317. package/lib/geometry/raster.d.ts +42 -0
  318. package/lib/geometry/reconstruct.d.ts +54 -0
  319. package/lib/geometry/reslice-image.d.ts +33 -0
  320. package/lib/geometry/ring.d.ts +67 -0
  321. package/lib/geometry/section.d.ts +52 -0
  322. package/lib/hex-color-picker/hex-color-picker.component.d.ts +61 -27
  323. package/lib/implementations/base-store-visualizer.d.ts +61 -15
  324. package/lib/implementations/napari-js/napari-axes-gizmo.d.ts +36 -0
  325. package/lib/implementations/napari-js/napari-display-state.d.ts +76 -0
  326. package/lib/implementations/napari-js/napari-helpers.d.ts +129 -0
  327. package/lib/implementations/napari-js/napari-image-2d-scene.d.ts +162 -0
  328. package/lib/implementations/napari-js/napari-loading-badge.d.ts +4 -3
  329. package/lib/implementations/napari-js/napari-loading-state.d.ts +37 -0
  330. package/lib/implementations/napari-js/napari-region-mesh-pointer.d.ts +32 -0
  331. package/lib/implementations/napari-js/napari-region-overlay.d.ts +68 -71
  332. package/lib/implementations/napari-js/napari-scene.d.ts +126 -0
  333. package/lib/implementations/napari-js/napari-spatial-2d-scene.d.ts +163 -0
  334. package/lib/implementations/napari-js/napari-spatial-3d-scene.d.ts +212 -0
  335. package/lib/implementations/napari-js/napari-spatial-encoding.d.ts +114 -0
  336. package/lib/implementations/napari-js/napari-spatial-hover.d.ts +91 -0
  337. package/lib/implementations/napari-js/napari-spatial-scene.d.ts +118 -0
  338. package/lib/implementations/napari-js/napari-spatial-tiles.d.ts +56 -263
  339. package/lib/implementations/napari-js/napari-spatial-tooltip.d.ts +1 -1
  340. package/lib/implementations/napari-js/napari-surface-scene.d.ts +76 -0
  341. package/lib/implementations/napari-js/napari-tile-client.d.ts +214 -0
  342. package/lib/implementations/napari-js/napari-tool-bridge.d.ts +179 -0
  343. package/lib/implementations/napari-js/napari-visualizer.service.d.ts +169 -883
  344. package/lib/implementations/napari-js/napari-volume-region-meshes.d.ts +66 -0
  345. package/lib/implementations/napari-js/napari-volume-scene.d.ts +148 -0
  346. package/lib/implementations/napari-js/napari-volume-slice-planes.d.ts +43 -0
  347. package/lib/implementations/napari-js/napari-volume-z-handle.d.ts +8 -12
  348. package/lib/implementations/napari-js/region-overlay/overlay-projection.d.ts +59 -0
  349. package/lib/implementations/napari-js/region-overlay/region-edit.d.ts +15 -0
  350. package/lib/implementations/napari-js/region-overlay/region-svg-renderer.d.ts +54 -0
  351. package/lib/implementations/napari-js/spatial-tiles/categorical-lookup.d.ts +26 -0
  352. package/lib/implementations/napari-js/spatial-tiles/cell-layers.d.ts +70 -0
  353. package/lib/implementations/napari-js/spatial-tiles/density-layer.d.ts +61 -0
  354. package/lib/implementations/napari-js/spatial-tiles/layer-groups.d.ts +67 -0
  355. package/lib/implementations/napari-js/spatial-tiles/plan-context.d.ts +38 -0
  356. package/lib/implementations/napari-js/spatial-tiles/transcript-hover.d.ts +71 -0
  357. package/lib/implementations/napari-js/spatial-tiles/transcript-jobs.d.ts +105 -0
  358. package/lib/implementations/napari-js/spatial-tiles/transcript-layers.d.ts +56 -0
  359. package/lib/implementations/osd/display-pipeline.d.ts +38 -9
  360. package/lib/implementations/osd/histogram-sampler.d.ts +22 -12
  361. package/lib/implementations/osd/openseadragon-viewer-options.d.ts +35 -0
  362. package/lib/implementations/osd/openseadragon-visualizer.service.d.ts +78 -354
  363. package/lib/implementations/osd/osd-coordinate-transform.d.ts +2 -1
  364. package/lib/implementations/osd/osd-coords.d.ts +6 -4
  365. package/lib/implementations/osd/osd-export.d.ts +36 -0
  366. package/lib/implementations/osd/osd-lib.d.ts +7 -0
  367. package/lib/implementations/osd/osd-navigator-chrome.d.ts +69 -0
  368. package/lib/implementations/osd/osd-pixel-readback.d.ts +22 -0
  369. package/lib/implementations/osd/osd-region-overlay-draw.d.ts +38 -0
  370. package/lib/implementations/osd/osd-region-overlay.d.ts +46 -51
  371. package/lib/implementations/osd/osd-scale-bar.d.ts +8 -6
  372. package/lib/implementations/osd/osd-tile-source.d.ts +49 -0
  373. package/lib/implementations/osd/osd-viewer-like.d.ts +100 -0
  374. package/lib/implementations/osd/osd-viewer-mount.d.ts +14 -0
  375. package/lib/implementations/osd/osd-viewport.d.ts +77 -0
  376. package/lib/implementations/osd/osd-zoom.d.ts +6 -0
  377. package/lib/implementations/osd/simple-source.d.ts +161 -0
  378. package/lib/implementations/osd/slice-cache.d.ts +12 -3
  379. package/lib/implementations/osd/tile-client.d.ts +11 -14
  380. package/lib/implementations/osd/tile-recolor.d.ts +141 -0
  381. package/lib/implementations/plotly/omics-trace-builders.d.ts +32 -20
  382. package/lib/implementations/plotly/plotly-image-loader.d.ts +49 -0
  383. package/lib/implementations/plotly/plotly-image-recolor.d.ts +75 -0
  384. package/lib/implementations/plotly/plotly-intensity-inset.d.ts +8 -0
  385. package/lib/implementations/plotly/plotly-isosurface-controls.d.ts +38 -0
  386. package/lib/implementations/plotly/plotly-layouts.d.ts +188 -0
  387. package/lib/implementations/plotly/plotly-readback.d.ts +41 -0
  388. package/lib/implementations/plotly/plotly-region-overlay.d.ts +2 -2
  389. package/lib/implementations/plotly/plotly-shape-projection.d.ts +92 -0
  390. package/lib/implementations/plotly/plotly-trace-builders.d.ts +23 -12
  391. package/lib/implementations/plotly/plotly-zoom-controller.d.ts +86 -0
  392. package/lib/implementations/plotly/plotly.service.d.ts +136 -401
  393. package/lib/implementations/region-centroids.d.ts +14 -0
  394. package/lib/implementations/simple-slice-access.service.d.ts +7 -4
  395. package/lib/implementations/spatial-data-http/spatial-data-http.service.d.ts +42 -18
  396. package/lib/implementations/spatial-data-http/spatial-wire.d.ts +34 -9
  397. package/lib/implementations/tile-server/index.d.ts +5 -0
  398. package/lib/implementations/tile-server/native-histogram.d.ts +25 -0
  399. package/lib/implementations/tile-server/poll-descriptor.d.ts +39 -0
  400. package/lib/implementations/tile-server/tile-protocol.d.ts +83 -0
  401. package/lib/implementations/tile-server/transport.d.ts +62 -0
  402. package/lib/intensity/intensity-profile.d.ts +66 -0
  403. package/lib/intensity/intensity-profile.service.d.ts +108 -0
  404. package/lib/intensity-inset/intensity-inset.component.d.ts +58 -0
  405. package/lib/models/bezier.d.ts +0 -5
  406. package/lib/models/class-preset.d.ts +25 -0
  407. package/lib/models/geometry.d.ts +14 -48
  408. package/lib/models/polygon-edit.d.ts +72 -0
  409. package/lib/models/polygon-factory.d.ts +45 -0
  410. package/lib/models/region-clone.d.ts +20 -0
  411. package/lib/models/region-geojson.d.ts +57 -0
  412. package/lib/models/region.d.ts +59 -4
  413. package/lib/models/shape.d.ts +8 -0
  414. package/lib/plot-mode/contribution-host.d.ts +125 -0
  415. package/lib/plot-mode/plot-type-menu.d.ts +60 -0
  416. package/lib/plot-mode/tool-params-model.d.ts +49 -0
  417. package/lib/plot.utilities.d.ts +19 -30
  418. package/lib/processing/processing-image.d.ts +5 -2
  419. package/lib/provide-visualization.d.ts +19 -2
  420. package/lib/region-editor/class-tree/class-tree.component.d.ts +78 -0
  421. package/lib/region-editor/class-tree/class-tree.d.ts +31 -0
  422. package/lib/region-editor/classes-panel/classes-panel.component.d.ts +86 -0
  423. package/lib/region-editor/file-stem.d.ts +7 -0
  424. package/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.d.ts +45 -0
  425. package/lib/region-editor/mask-export.service.d.ts +54 -0
  426. package/lib/region-editor/mask-raster.d.ts +2 -8
  427. package/lib/region-editor/region-color-dialog/region-color-dialog.component.d.ts +29 -0
  428. package/lib/region-editor/region-editor-help/region-editor-help.component.d.ts +11 -0
  429. package/lib/region-editor/region-editor.component.d.ts +283 -200
  430. package/lib/region-editor/region-metrics.d.ts +34 -0
  431. package/lib/region-editor/region-persistence.service.d.ts +77 -0
  432. package/lib/region-editor/region-table/region-table.component.d.ts +89 -0
  433. package/lib/region-editor/save-mask-dialog/save-mask-dialog.component.d.ts +36 -0
  434. package/lib/region-editor/save-regions-dialog/save-regions-dialog.component.d.ts +37 -0
  435. package/lib/region-ops.service.d.ts +1 -7
  436. package/lib/region-overlay/region-geometry.d.ts +158 -0
  437. package/lib/region-overlay/region-hit-test.d.ts +38 -0
  438. package/lib/region-overlay/region-source-layer.d.ts +96 -0
  439. package/lib/region-overlay/region-style.d.ts +52 -0
  440. package/lib/region-overlay/svg-region-renderer.d.ts +110 -0
  441. package/lib/region-source/http-region-source.d.ts +45 -0
  442. package/lib/region-source/region-source-ops.d.ts +89 -0
  443. package/lib/region-source/region-source-worker.d.ts +7 -0
  444. package/lib/region-source/region-source.d.ts +82 -0
  445. package/lib/region-source/region-tiles.d.ts +289 -0
  446. package/lib/region-source/worker-region-source.d.ts +65 -0
  447. package/lib/render-orchestrator.d.ts +6 -2
  448. package/lib/render-session.d.ts +75 -0
  449. package/lib/routing-visualizer.service.d.ts +248 -59
  450. package/lib/section-pane/section-pane.component.d.ts +47 -0
  451. package/lib/spatial/density-raster.d.ts +6 -0
  452. package/lib/spatial/embedding-compute-coordinator.d.ts +123 -0
  453. package/lib/spatial/embedding-compute.d.ts +21 -2
  454. package/lib/spatial/glyphs.d.ts +16 -0
  455. package/lib/spatial/lod.d.ts +94 -0
  456. package/lib/spatial/spatial-controls.facade.d.ts +64 -0
  457. package/lib/spatial/spatial-density.d.ts +15 -5
  458. package/lib/spatial/spatial-encoding.d.ts +11 -44
  459. package/lib/spatial/spatial-expression.d.ts +40 -22
  460. package/lib/spatial/spatial-framing.d.ts +1 -0
  461. package/lib/spatial/spatial-heatmap.d.ts +2 -0
  462. package/lib/spatial/spatial-hover.d.ts +4 -16
  463. package/lib/spatial/spatial-panel-model.d.ts +135 -0
  464. package/lib/spatial/spatial-selection.d.ts +21 -26
  465. package/lib/spatial/spatial-tile-merge.d.ts +41 -0
  466. package/lib/spatial/spatial-tiles.d.ts +9 -256
  467. package/lib/spatial/stats.d.ts +38 -0
  468. package/lib/spatial/transcript-grouping.d.ts +119 -0
  469. package/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.d.ts +64 -0
  470. package/lib/spatial-controls/spatial-charts/chart-data-model.d.ts +153 -0
  471. package/lib/spatial-controls/spatial-charts/chart-help.d.ts +69 -0
  472. package/lib/spatial-controls/spatial-charts/plotly-chart-host.d.ts +98 -0
  473. package/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.d.ts +26 -0
  474. package/lib/spatial-controls/spatial-charts/spatial-charts.component.d.ts +101 -260
  475. package/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.d.ts +43 -0
  476. package/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.d.ts +27 -0
  477. package/lib/spatial-controls/spatial-controls.component.d.ts +68 -448
  478. package/lib/spatial-controls/spatial-gene-picker.d.ts +86 -0
  479. package/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.d.ts +102 -0
  480. package/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.d.ts +72 -0
  481. package/lib/spatial-controls/spatial-key/spatial-key.component.d.ts +66 -0
  482. package/lib/spatial-controls/spatial-key/spatial-key.model.d.ts +33 -0
  483. package/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.d.ts +64 -0
  484. package/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.d.ts +117 -0
  485. package/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.d.ts +142 -0
  486. package/lib/store/class-color.util.d.ts +39 -2
  487. package/lib/store/class-signatures.d.ts +11 -0
  488. package/lib/store/region-history.d.ts +66 -0
  489. package/lib/store/region-scope-cache.d.ts +65 -0
  490. package/lib/store/region-selection.d.ts +36 -0
  491. package/lib/store/region-source-scope.d.ts +68 -0
  492. package/lib/store/region-store.service.d.ts +312 -116
  493. package/lib/store/visualizer-store.service.d.ts +32 -33
  494. package/lib/toast-outlets.d.ts +4 -3
  495. package/lib/toolbar/brush/brush-tool.service.d.ts +31 -98
  496. package/lib/toolbar/canvas-tools.d.ts +20 -0
  497. package/lib/toolbar/crop/slide-crop.d.ts +10 -4
  498. package/lib/toolbar/plot-type-selector/plot-type-selector.component.d.ts +38 -0
  499. package/lib/toolbar/region-tools/region-tool-buttons.d.ts +21 -0
  500. package/lib/toolbar/region-tools/region-tools.component.d.ts +62 -0
  501. package/lib/toolbar/segmentation/cell-segment-tool.service.d.ts +10 -14
  502. package/lib/toolbar/segmentation/cellpose-segmenter.service.d.ts +12 -2
  503. package/lib/toolbar/segmentation/onnx-sam-session.d.ts +22 -3
  504. package/lib/toolbar/segmentation/pending-calls.d.ts +31 -0
  505. package/lib/toolbar/segmentation/sam-model-registry.d.ts +9 -3
  506. package/lib/toolbar/segmentation/sam-onnx-core.d.ts +18 -5
  507. package/lib/toolbar/segmentation/sam-point-tool.service.d.ts +46 -32
  508. package/lib/toolbar/segmentation/sam-prompt.d.ts +7 -31
  509. package/lib/toolbar/segmentation/sam-session.service.d.ts +74 -0
  510. package/lib/toolbar/segmentation/sam-tool.service.d.ts +23 -30
  511. package/lib/toolbar/segmentation/segmentation-commit.d.ts +8 -0
  512. package/lib/toolbar/segmentation/segmentation-runner.d.ts +52 -0
  513. package/lib/toolbar/segmentation-tools/segmentation-tools.component.d.ts +87 -0
  514. package/lib/toolbar/stack-controls/stack-controls.component.d.ts +51 -0
  515. package/lib/toolbar/tool-kit/async-tool-status.d.ts +21 -0
  516. package/lib/toolbar/tool-kit/canvas-tool-manager.d.ts +36 -0
  517. package/lib/toolbar/tool-kit/canvas-tool.d.ts +86 -0
  518. package/lib/toolbar/tool-kit/frame-pixels.d.ts +45 -0
  519. package/lib/toolbar/tool-kit/mask-stroke-editor.d.ts +125 -0
  520. package/lib/toolbar/tool-kit/matrix-frame.d.ts +40 -0
  521. package/lib/toolbar/tool-kit/tool-overlay.d.ts +60 -0
  522. package/lib/toolbar/tool-kit/undo-gesture.d.ts +17 -0
  523. package/lib/toolbar/tool-slider/tool-slider.component.d.ts +33 -0
  524. package/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.d.ts +24 -0
  525. package/lib/toolbar/toolbar.component.d.ts +55 -84
  526. package/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.d.ts +33 -40
  527. package/lib/toolbar/view-controls/view-controls.component.d.ts +54 -0
  528. package/lib/toolbar/wand/wand-region-grow.d.ts +49 -0
  529. package/lib/toolbar/wand/wand-tool.service.d.ts +39 -124
  530. package/lib/toolbar/wand/wand.service.d.ts +22 -116
  531. package/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.d.ts +17 -37
  532. package/lib/util/mark-for-check.d.ts +11 -0
  533. package/lib/util/supersede.d.ts +53 -0
  534. package/lib/visualization.module.d.ts +18 -39
  535. package/lib/visualizer/floating-drag.directive.d.ts +30 -0
  536. package/lib/visualizer/region-actions.d.ts +54 -0
  537. package/lib/visualizer/region-load.d.ts +46 -0
  538. package/lib/visualizer/spatial-dataset-binder.d.ts +74 -0
  539. package/lib/visualizer/tool-modes.d.ts +49 -0
  540. package/lib/visualizer/viewer-shortcuts.d.ts +71 -0
  541. package/lib/visualizer/visualizer-context-menu.d.ts +55 -0
  542. package/lib/visualizer/volume-sections.d.ts +64 -0
  543. package/lib/visualizer.component.d.ts +232 -447
  544. package/lib/workers/spatial-math-ops.d.ts +65 -0
  545. package/lib/workers/spatial-math-worker.d.ts +7 -0
  546. package/lib/workers/spatial-math.d.ts +74 -0
  547. package/package.json +12 -3
  548. package/src/lib/assets/slice.svg +23 -0
  549. package/src/lib/styles/_viz-icons-rules.scss +73 -0
  550. package/src/lib/styles/viz-icons.scss +14 -0
  551. package/esm2022/lib/implementations/napari-js/napari-axes-labels.mjs +0 -97
  552. package/esm2022/lib/implementations/napari-js/napari-navigator.mjs +0 -195
  553. package/esm2022/lib/implementations/napari-js/napari-scale-bar.mjs +0 -92
  554. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs +0 -329
  555. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs.map +0 -1
  556. package/lib/implementations/napari-js/napari-axes-labels.d.ts +0 -49
  557. package/lib/implementations/napari-js/napari-navigator.d.ts +0 -72
  558. package/lib/implementations/napari-js/napari-scale-bar.d.ts +0 -35
  559. package/src/lib/assets/cell-detection.svg +0 -37
  560. package/src/lib/assets/click.svg +0 -1
  561. package/src/lib/assets/colormap-luts.json +0 -1
  562. package/src/lib/assets/edit-selection-white.svg +0 -47
  563. package/src/lib/assets/icons/colormap-earth.png +0 -0
  564. package/src/lib/assets/icons/colormap-placeholder.png +0 -0
  565. package/src/lib/assets/icons/colormap-pubu.png +0 -0
  566. package/src/lib/assets/interactive-segmentation-cursor.svg +0 -1
  567. package/src/lib/assets/picture-segmentation.svg +0 -43
  568. package/src/lib/assets/test/download-379.svg +0 -1
  569. package/src/lib/assets/test/download-98.svg +0 -1
  570. package/src/lib/assets/test/json-1.svg +0 -1
  571. package/src/lib/assets/test/load-53.svg +0 -1
  572. package/src/lib/assets/test/mask-44.svg +0 -1
  573. package/src/lib/assets/test/mask-download-44.svg +0 -15
  574. package/src/lib/assets/test/mask-save-44.svg +0 -11
  575. package/src/lib/assets/test/overlay-1.svg +0 -1
  576. package/src/lib/assets/test/overlay-4.svg +0 -1
  577. package/src/lib/assets/test/region-26.svg +0 -1
  578. package/src/lib/assets/test/save-56.svg +0 -1
  579. package/src/lib/assets/test/upload-43.svg +0 -1
@@ -0,0 +1,125 @@
1
+ import { Injector, NgZone, Type } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { Message } from 'primeng/api';
4
+ import { IImageInfo } from '../contracts/image.contract';
5
+ import { PlotType, PlotTypeId } from '../contracts/plot-type';
6
+ import { PlotModeTools, PlotTypeContribution } from '../contracts/plot-type-contribution.contract';
7
+ import { ToolbarContribution, ToolbarDialogToolContribution } from '../contracts/toolbar-tool.contract';
8
+ import { IVisualizer } from '../contracts/visualizer.contract';
9
+ import { PlotModeController } from './plot-mode-controller';
10
+ /** The live contributed mode's side panel, as the template renders it. */
11
+ export interface PlotModePanelView {
12
+ title: string;
13
+ /** An Angular component panel, with its own injector… */
14
+ component: Type<unknown> | null;
15
+ injector: Injector | null;
16
+ /** …or a plain host element a `mount` panel rendered into. */
17
+ host: HTMLElement | null;
18
+ }
19
+ /** The open dialog tool's dialog, as the template renders it. */
20
+ export interface ToolDialogView {
21
+ title: string;
22
+ width: string;
23
+ host: HTMLElement;
24
+ }
25
+ /** What the contributions need from the viewer that hosts them. */
26
+ export interface ContributionViewer {
27
+ readonly visualizer: IVisualizer;
28
+ readonly zone: NgZone;
29
+ /** The toolbar tools a contribution may arm (`PlotModeContext.tools`). */
30
+ readonly tools: PlotModeTools;
31
+ /** Parent of a component panel's injector. */
32
+ readonly injector?: Injector;
33
+ imageInfo$(): Observable<IImageInfo | null>;
34
+ /** The selector's id (a built-in type or a contributed mode). */
35
+ selectedId(): PlotTypeId;
36
+ /** The built-in type being rendered. */
37
+ renderedType(): PlotType;
38
+ /** A contributed mode could not start: select its base type, already on screen. */
39
+ selectBase(type: PlotType): void;
40
+ notify(message: Message): void;
41
+ detectChanges(): void;
42
+ }
43
+ /**
44
+ * Hosts the library's two kinds of contributed sessions over the viewer:
45
+ * - **plot modes** (`PLOT_TYPE_CONTRIBUTIONS`): a selector entry riding on a built-in
46
+ * base type, with an optional side panel;
47
+ * - **dialog tools** (`TOOLBAR_TOOLS`, `kind: 'dialog'`): a floating dialog over the
48
+ * Image view, whose body the tool mounts once the dialog is in the document.
49
+ *
50
+ * Both run through a {@link PlotModeController} (one live session each, isolated from
51
+ * a failing contribution). A session is bound to the base view it drew over, so it
52
+ * ends before anything else draws ({@link endSessions}) and restarts once the next
53
+ * render has landed ({@link activate}).
54
+ */
55
+ export declare class ContributionHost {
56
+ private readonly viewer;
57
+ readonly plotModes: PlotModeController;
58
+ readonly toolDialogs: PlotModeController;
59
+ /** Dialog tools, sorted; their buttons show in the Image view only. */
60
+ readonly dialogTools: ToolbarDialogToolContribution[];
61
+ /** The live mode's panel; null while no contributed session is live. */
62
+ plotModePanel: PlotModePanelView | null;
63
+ /** The open dialog tool's live dialog. */
64
+ toolDialog: ToolDialogView | null;
65
+ /** The dialog tool the user has open (its session may be between renders). */
66
+ openDialogToolId: string | null;
67
+ private destroying;
68
+ /** The live dialog body's teardown, and a pending wait for its host to connect. */
69
+ private toolDialogTeardown;
70
+ private toolDialogFrame;
71
+ constructor(plotTypeContributions: readonly PlotTypeContribution[] | null | undefined, toolContributions: readonly ToolbarContribution[] | null | undefined, viewer: ContributionViewer);
72
+ /** End both sessions: the view they drew over is about to go. An open dialog tool
73
+ * stays open and restarts on the next {@link activate}. */
74
+ endSessions(): void;
75
+ /** A render landed: start the selected mode's session and the open dialog tool's. */
76
+ activate(): void;
77
+ /** The viewer is being destroyed: end both sessions without touching its view. */
78
+ destroy(): void;
79
+ /** The toolbar button: open the tool's dialog, or close it if it is open. */
80
+ toggleDialogTool(id: string): void;
81
+ /** Close the open dialog tool: its body is torn down, then its session ends. */
82
+ closeDialogTool(): void;
83
+ /** Attach a `mount` panel's host element once the panel dialog renders its slot. */
84
+ attachPanelSlot(slot: HTMLElement | undefined): void;
85
+ /** Attach the open dialog tool's host element once its dialog renders its slot. */
86
+ attachToolDialogSlot(slot: HTMLElement | undefined): void;
87
+ /**
88
+ * Start the selected contributed mode's session, once its base view has plotted.
89
+ * No-op for a built-in type, or when the base on screen is not the one the mode
90
+ * rides on. A backend that cannot provide a viewport for it (e.g. OSD fell back to
91
+ * Plotly) counts as a failed activation.
92
+ */
93
+ private activateSelectedPlotMode;
94
+ /** Start (or restart, after a re-render) the open dialog tool's session. */
95
+ private activateOpenDialogTool;
96
+ /** A session's context over the backend on screen, or null when it has no viewport. */
97
+ private context;
98
+ /** Render the live mode's panel. Activation can resolve outside Angular (an OSD
99
+ * callback, a contribution's own promise), hence the zone re-entry. */
100
+ private showPlotModePanel;
101
+ /** Drop the panel (destroying a component panel) before the session ends. */
102
+ private hidePlotModePanel;
103
+ /** A contributed mode could not start. Its base type is already on screen — the base
104
+ * plotted first — so just select it: nothing needs to re-plot. */
105
+ private fallBackFromPlotMode;
106
+ /**
107
+ * The dialog-tool session is live: render the dialog, then mount the tool's body
108
+ * once the host element is in the document, so `mount()` can measure it and start
109
+ * widgets that need a connected element.
110
+ */
111
+ private showToolDialog;
112
+ /**
113
+ * Mount `tool`'s body into `host` once it is connected (the dialog may attach it a
114
+ * frame later, when it moves itself to `<body>`). If it never connects within
115
+ * {@link TOOL_DIALOG_ATTACH_FRAMES} it is mounted anyway, with a warning, rather than
116
+ * leaving an empty dialog. A throwing `mount()` fails the session like a failed start.
117
+ */
118
+ private mountToolDialogBody;
119
+ /** The dialog-tool session is about to end: tear the body down first, then drop the dialog. */
120
+ private hideToolDialog;
121
+ /** A dialog tool could not start: close it and say so. */
122
+ private dialogToolFailed;
123
+ /** Run change detection; returns what it threw (logged), or null. */
124
+ private detectChangesSafely;
125
+ }
@@ -0,0 +1,60 @@
1
+ import { ViewerCapabilities } from '../contracts/capabilities.contract';
2
+ import { IImageInfo } from '../contracts/image.contract';
3
+ import { PlotTypeDescriptor, PlotTypeId } from '../contracts/plot-type';
4
+ import { ContributedPlotTypeDescriptor, PlotTypeOption } from '../contracts/plot-type-contribution.contract';
5
+ /** What a spatial-omics dataset on offer contributes to the plot-type gates. */
6
+ export interface SpatialGates {
7
+ /** A dataset is published on `SPATIAL_DATA_PORT`. */
8
+ hasDataset: boolean;
9
+ /** Its observations carry a z, so it can be drawn as a 3D cloud. */
10
+ has3d: boolean;
11
+ /** It brings pixels of its own: a tissue image it registers onto, or a volume
12
+ * published as a z-stack image. */
13
+ hasPixels: boolean;
14
+ }
15
+ /** Everything {@link computePlotTypeMenu} gates on. */
16
+ export interface PlotTypeMenuInput {
17
+ /** The built-in types the backend advertises. */
18
+ descriptors: PlotTypeDescriptor[];
19
+ /** Contributed plot modes (`PLOT_TYPE_CONTRIBUTIONS`). */
20
+ contributions: ContributedPlotTypeDescriptor[];
21
+ caps: ViewerCapabilities;
22
+ imageInfo: IImageInfo | undefined;
23
+ spatial: SpatialGates;
24
+ /** Offer every backend's type under its full label, not just the curated set. */
25
+ testMode: boolean;
26
+ }
27
+ /** The selector's entries: {@link builtIn} then the contributed modes. */
28
+ export interface PlotTypeMenu {
29
+ builtIn: PlotTypeDescriptor[];
30
+ menu: PlotTypeOption[];
31
+ }
32
+ /**
33
+ * Plot types offered in the selector for the current image:
34
+ * - Outside **test mode**, only the curated default set (descriptors with a
35
+ * `productionLabel`) is offered, shown under suffix-free names — Image,
36
+ * Heatmap, Contour and the napari Surface / Volume / Isosurface. Test mode
37
+ * exposes every backend's type under its full (backend-suffixed) label.
38
+ * - 3D types hidden when the backend can't render a 3D scene.
39
+ * - stack-only types (volume, isosurface) hidden unless the file is a stack —
40
+ * a volume needs multiple z-slices.
41
+ * - scalar-intensity types (contour, surface, isosurface) hidden for RGB
42
+ * images — they map a single intensity per pixel. Image and Heatmap render
43
+ * any image. A multichannel image's bands are each scalar, so it passes.
44
+ * - spatial-omics types hidden until a `SpatialDataset` is published on
45
+ * `SPATIAL_DATA_PORT` — the mode has nothing to draw without observations,
46
+ * exactly as a volume has nothing to draw without a stack.
47
+ * - image-sourced types hidden while a dataset that brings no pixels is up.
48
+ *
49
+ * Contributed modes come after every built-in one, under the same label rule and
50
+ * their own stack/grayscale/spatial gates; a mode also needs whatever its base view
51
+ * needs, so the base type's gates apply too.
52
+ */
53
+ export declare function computePlotTypeMenu(input: PlotTypeMenuInput): PlotTypeMenu;
54
+ /**
55
+ * The type to fall back to when `selected` is no longer offered — Image when it is
56
+ * on offer, else the first type still offered — or null when `selected` is still
57
+ * offered (or nothing is). With no image loaded the pixel modes are gone, and falling
58
+ * back to Image would select a mode the selector does not list and nothing can draw.
59
+ */
60
+ export declare function reconcilePlotType(menu: PlotTypeOption[], selected: PlotTypeId): PlotTypeId | null;
@@ -0,0 +1,49 @@
1
+ import { NumberParamSpec, SelectParamSpec, ToolParamSpec, ToolbarToolContribution } from '../contracts/toolbar-tool.contract';
2
+ /** The open parameter dialog, as its template binds it. */
3
+ export interface OpenToolParams {
4
+ tool: ToolbarToolContribution;
5
+ /** The tool's live values; the dialog edits them in place. */
6
+ values: Record<string, unknown>;
7
+ /** Each field's spec, already narrowed for the template (an `*ngSwitchCase` does not
8
+ * narrow a union in the template type checker). */
9
+ fields: {
10
+ spec: ToolParamSpec;
11
+ number: NumberParamSpec | null;
12
+ select: SelectParamSpec | null;
13
+ }[];
14
+ }
15
+ /**
16
+ * Checkpoint choice and parameter values of the contributed no-prompt tools
17
+ * (`TOOLBAR_TOOLS`), and the generic parameter dialog over them.
18
+ *
19
+ * Values are seeded from the tool's defaults with the active checkpoint's own
20
+ * `ToolModelOption.defaults` on top — they encode the scale and crowding the
21
+ * checkpoint was trained for — lazily, on first use, and re-seeded when the
22
+ * checkpoint changes or the user resets.
23
+ */
24
+ export declare class ToolParamsModel {
25
+ readonly tools: ToolbarToolContribution[];
26
+ /** Active checkpoint per tool; replaced (not mutated) so the toolbar sees a new reference. */
27
+ toolModelIds: Record<string, string>;
28
+ /** Parameter values per tool. */
29
+ toolParams: Record<string, Record<string, unknown>>;
30
+ /** The open dialog, built once on open so change detection only reads properties. Null while closed. */
31
+ openParams: OpenToolParams | null;
32
+ constructor(tools: ToolbarToolContribution[]);
33
+ /** A tool's current values, seeded on first use. */
34
+ paramsFor(toolId: string): Record<string, unknown>;
35
+ /** Active checkpoint for a tool, falling back to the tool's own default. */
36
+ modelIdFor(tool: ToolbarToolContribution): string;
37
+ /** Switching checkpoint re-seeds the parameters: the defaults belong to the model. */
38
+ setModel(toolId: string, modelId: string): void;
39
+ reset(toolId: string): void;
40
+ open(toolId: string): void;
41
+ close(): void;
42
+ /** The values to run a tool with: its parameters plus the active checkpoint. */
43
+ runParams(tool: ToolbarToolContribution): Record<string, unknown>;
44
+ find(toolId: string): ToolbarToolContribution | undefined;
45
+ /** A tool's defaults for a checkpoint, with that checkpoint's own overrides on top. */
46
+ private seed;
47
+ /** A tool's values object was replaced: point an open dialog for it at the new one. */
48
+ private rebind;
49
+ }
@@ -3,13 +3,19 @@ import { ShapeSelection } from './models/shape';
3
3
  export declare const COLORMAP_OPTIONS: {
4
4
  label: string;
5
5
  data: null;
6
- children: {
6
+ children: ({
7
+ label: string;
8
+ data: {
9
+ value: [number, string][];
10
+ src: string;
11
+ };
12
+ } | {
7
13
  label: string;
8
14
  data: {
9
15
  value: string;
10
16
  src: string;
11
17
  };
12
- }[];
18
+ })[];
13
19
  }[];
14
20
  export declare const CONFIG: {
15
21
  displaylogo: boolean;
@@ -45,7 +51,9 @@ export declare class PlotUtilities {
45
51
  */
46
52
  getRectangle(coordinates: number[], trueImageSize: number[]): Rectangle;
47
53
  /**
48
- * given a dom object (found by id), return a Rectangle of the bounding element.
54
+ * The on-screen box a plot div is laid out in: the bounding rectangle of the
55
+ * element with id `div`'s parent (callers pass the plot div's own id). An
56
+ * empty Rectangle when there is no such element or it has no parent.
49
57
  * @param div
50
58
  */
51
59
  getDomRectangle(div: string): Rectangle;
@@ -61,47 +69,28 @@ export declare class PlotUtilities {
61
69
  */
62
70
  getPolygon(fig: any): any;
63
71
  /**
64
- * TESTED
65
72
  * Rounds a list of numbers
66
73
  * @param a
67
74
  */
68
75
  round(a: number[]): number[];
69
76
  /**
70
- * TESTED
71
- * Returns true of zoom is the same as image size
77
+ * Returns true if the zoom is the same as the image size
72
78
  * @param rect Rectangle area
73
79
  * @param trueImgSize
74
80
  * @return true if rect is out of image size boundary
75
81
  */
76
82
  isZoomSameAsImgSize(rect: Rectangle, trueImgSize: number[]): boolean;
77
83
  /**
78
- * Save the json string to a file
79
- * @param jsonString
80
- */
81
- saveToFile(jsonString: any, baseName?: string): void;
82
- /**
83
- * Function that imports ROIs from a geojson object
84
- * @param geoJsonStr
85
- * @return Region[]
84
+ * Download a GeoJSON string as `<baseName without extension>.geojson`
85
+ * (`rois.geojson` without a base name).
86
86
  */
87
+ saveToFile(jsonString: string, baseName?: string): void;
88
+ /** Parse GeoJSON into regions; see {@link regionsFromGeoJson} in `models/region-geojson`. */
87
89
  importROIsFromGeoJson(geoJsonStr: string): Region[];
88
- /**
89
- * Function that returns a geojson object from a Plotly ROI
90
- * @param rois
91
- * @return FeatureCollection<Geometry, GeoJsonProperties>
92
- */
90
+ /** Serialise regions as GeoJSON; see {@link regionsToGeoJson} in `models/region-geojson`. */
93
91
  exportROIsToGeoJson(rois: Region[]): string;
94
- /**
95
- * Convert GeoJSON interior rings into the neutral hole representation
96
- * (`number[][]` per ring, no repeated closing point). Degenerate rings (< 3
97
- * distinct points) are dropped. jit-ui#85.
98
- */
99
- /**
100
- * Build a closed {@link Polygon} from a GeoJSON ring set: `rings[0]` is the
101
- * exterior (closing point dropped), `rings[1..]` are interior holes. jit-ui#85.
102
- */
103
- private polygonFromRings;
104
- private ringsToHoles;
92
+ /** `#rrggbb` for an RGB triple; see {@link rgbToHex} in `contracts/color`. */
105
93
  rgbToHex(r: number, g: number, b: number): string;
94
+ /** RGB for a hex colour (`#rgb` / `#rrggbb`); black when missing or unparseable. */
106
95
  hexToRgb(hex: string | undefined): number[];
107
96
  }
@@ -10,8 +10,11 @@ export declare class ProcessingImage {
10
10
  /** Create from browser ImageData. */
11
11
  static fromImageData(imageData: ImageData): ProcessingImage;
12
12
  constructor(width: number, height: number, channels: number, data: Uint8ClampedArray);
13
- /** Convert to browser-native ImageData (RGBA). */
13
+ /**
14
+ * Convert to browser-native ImageData (RGBA). Gray (1), gray+alpha (2) and
15
+ * RGB (3) are expanded; other channel counts throw.
16
+ */
14
17
  toImageData(): ImageData;
15
- /** Convert to Blob for saving/downloading. */
18
+ /** Convert to Blob for saving/downloading. Rejects when the browser can't encode it. */
16
19
  toBlob(mime?: string): Promise<Blob>;
17
20
  }
@@ -1,4 +1,11 @@
1
1
  import { Provider } from '@angular/core';
2
+ /**
3
+ * The three host-facing contracts, all served by the router. Shared by
4
+ * {@link provideVisualization} (component scope) and `VisualizationModule` (root),
5
+ * so both bind them the same way; at each scope they resolve to that scope's router.
6
+ * Package-internal (not exported from the public API).
7
+ */
8
+ export declare const VISUALIZER_TOKEN_BINDINGS: Provider[];
2
9
  /**
3
10
  * A self-contained, isolated visualization backend chain for a component subtree.
4
11
  *
@@ -26,9 +33,19 @@ import { Provider } from '@angular/core';
26
33
  * embedded viewer gets its own router/Plotly/OSD/stores/tools while the rest of the
27
34
  * app keeps the default root instance.
28
35
  *
36
+ * In an application's own providers (`bootstrapApplication(App, { providers: [
37
+ * provideVisualization(), …] })`) it binds the one app-wide chain instead — the
38
+ * standalone counterpart of importing the deprecated `VisualizationModule`.
39
+ *
29
40
  * Lists EVERY stateful service in the chain. Stateless collaborators (HttpClient,
30
41
  * MessageService, WandService) deliberately resolve to root — they hold no
31
- * per-viewer state, so sharing them is correct and keeps this list minimal. When a
32
- * new stateful service joins the rendering chain, add it here too.
42
+ * per-viewer state, so sharing them is correct and keeps this list minimal. The
43
+ * SAM model session (`SamSessionService`) is also root on purpose: every viewer's
44
+ * SAM tools share one model download and Worker/GPU session (see its doc; a host
45
+ * can provide it at a viewer component to get a per-viewer session that is
46
+ * disposed with the viewer). When a
47
+ * new stateful service joins the rendering chain, add it here too —
48
+ * `provide-visualization.spec.ts` fails until it is listed (or allow-listed there as
49
+ * deliberately shared).
33
50
  */
34
51
  export declare function provideVisualization(): Provider[];
@@ -0,0 +1,78 @@
1
+ import { ElementRef, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
+ import type { RegionClassNode } from '../../region-source/region-tiles';
3
+ import { ClassTree, ClassTreeRow } from './class-tree';
4
+ import * as i0 from "@angular/core";
5
+ /** A pick in the tree: the class, and it with every class under it. */
6
+ export interface ClassTreePick {
7
+ name: string;
8
+ classes: string[];
9
+ additive: boolean;
10
+ }
11
+ /** Whether a class is shown: it and its subclasses all, none ('hidden'), or only some ('partial'). */
12
+ export type ClassVisibility = 'shown' | 'hidden' | 'partial';
13
+ /**
14
+ * The Region Editor's classes as a hierarchy (a brain atlas's ontology), as the Allen atlas viewer
15
+ * shows it: collapsible, each class with its colour, name and long name, and the regions it and
16
+ * its subclasses have on this slice; a class with none is greyed. Picking a class selects all its
17
+ * regions and its subclasses' (the editor does the selecting). Search by name or long name. A
18
+ * class's swatch recolours it, as the class list's does; its eye hides it and its subclasses.
19
+ */
20
+ export declare class ClassTreeComponent implements OnChanges {
21
+ private readonly el;
22
+ /** The hierarchy. */
23
+ nodes: readonly RegionClassNode[];
24
+ /** Regions per class on this slice (the regions and the region source's). */
25
+ counts: ReadonlyMap<string, number>;
26
+ /** A class's colour (a new function when the colours change, so the rows repaint). */
27
+ colorOf: (name: string) => string;
28
+ /** The class picked last (highlighted, its path expanded, scrolled into view). */
29
+ picked: string | null;
30
+ /** Classes with a selected region (marked). */
31
+ marked: ReadonlySet<string>;
32
+ /** Whether a volume view is on screen: each class can then be shown in 3D. */
33
+ volume: boolean;
34
+ /** The classes shown in 3D. */
35
+ shown3d: ReadonlySet<string>;
36
+ /** The classes hidden from view. */
37
+ hidden: ReadonlySet<string>;
38
+ pick: EventEmitter<ClassTreePick>;
39
+ /** A class's swatch picked a new colour. */
40
+ recolor: EventEmitter<{
41
+ name: string;
42
+ color: string;
43
+ }>;
44
+ /** A class's 3D toggle: it with every class under it. */
45
+ toggle3d: EventEmitter<{
46
+ name: string;
47
+ classes: string[];
48
+ }>;
49
+ /** A class's eye: hide (or show) it with every class under it. */
50
+ toggleHidden: EventEmitter<{
51
+ classes: string[];
52
+ hidden: boolean;
53
+ }>;
54
+ protected tree: ClassTree;
55
+ protected rows: ClassTreeRow[];
56
+ /** Each row's visibility (a row absent: shown). */
57
+ protected visibility: Map<string, ClassVisibility>;
58
+ protected query: string;
59
+ private expanded;
60
+ constructor(el: ElementRef<HTMLElement>);
61
+ ngOnChanges(changes: SimpleChanges): void;
62
+ protected node(name: string): RegionClassNode | undefined;
63
+ protected total(name: string): number;
64
+ protected toggle(row: ClassTreeRow, event: Event): void;
65
+ protected choose(name: string, event: Event): void;
66
+ /** The eye: a class hidden (wholly) is shown again with its subclasses; otherwise they are hidden. */
67
+ protected flipHidden(name: string, event: Event): void;
68
+ protected flip3d(name: string, event: Event): void;
69
+ protected onQuery(value: string): void;
70
+ /** Enter in the search box picks the first match. */
71
+ protected pickFirstMatch(event: Event): void;
72
+ protected readonly trackRow: (_: number, r: ClassTreeRow) => string;
73
+ private refresh;
74
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClassTreeComponent, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<ClassTreeComponent, "region-class-tree", never, { "nodes": { "alias": "nodes"; "required": false; }; "counts": { "alias": "counts"; "required": false; }; "colorOf": { "alias": "colorOf"; "required": false; }; "picked": { "alias": "picked"; "required": false; }; "marked": { "alias": "marked"; "required": false; }; "volume": { "alias": "volume"; "required": false; }; "shown3d": { "alias": "shown3d"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; }, { "pick": "pick"; "recolor": "recolor"; "toggle3d": "toggle3d"; "toggleHidden": "toggleHidden"; }, never, never, true, never>;
76
+ }
77
+ /** Scroll the row matching `selector` inside `host` into view, if it is out of it. */
78
+ export declare function scrollToPicked(host: HTMLElement, selector: string): void;
@@ -0,0 +1,31 @@
1
+ import type { RegionClassNode } from '../../region-source/region-tiles';
2
+ /** A class hierarchy as a tree: children in order, subtree counts, depths. Pure. */
3
+ export interface ClassTree {
4
+ roots: string[];
5
+ node: Map<string, RegionClassNode>;
6
+ children: Map<string, string[]>;
7
+ parent: Map<string, string | null>;
8
+ /** Regions of the class and every class under it. */
9
+ total: Map<string, number>;
10
+ }
11
+ /**
12
+ * Build the tree of `nodes`, counting `counts` (regions per class) up through it. A node whose
13
+ * parent is not in the hierarchy is a root; siblings sort by `order`, then as listed.
14
+ */
15
+ export declare function buildClassTree(nodes: readonly RegionClassNode[], counts: ReadonlyMap<string, number>): ClassTree;
16
+ /** `name` and every class under it. */
17
+ export declare function subtree(tree: ClassTree, name: string): string[];
18
+ /** The classes from the root down to `name`'s parent. */
19
+ export declare function ancestors(tree: ClassTree, name: string): string[];
20
+ /** One visible row of the tree. */
21
+ export interface ClassTreeRow {
22
+ name: string;
23
+ depth: number;
24
+ hasChildren: boolean;
25
+ expanded: boolean;
26
+ }
27
+ /**
28
+ * The rows to draw: depth-first through the expanded nodes. With a `query`, only the nodes whose
29
+ * name or title contains it and their ancestors, all expanded.
30
+ */
31
+ export declare function visibleRows(tree: ClassTree, expanded: ReadonlySet<string>, query?: string): ClassTreeRow[];
@@ -0,0 +1,86 @@
1
+ import { ElementRef, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
+ import { ClassPreset, MatchMode } from '../../models/class-preset';
3
+ import * as i0 from "@angular/core";
4
+ /** One class row as the template draws it, derived once per input change. */
5
+ interface ClassRow {
6
+ name: string;
7
+ color: string;
8
+ count: number;
9
+ canRemove: boolean;
10
+ rowTooltip: string;
11
+ removeTooltip: string;
12
+ }
13
+ /**
14
+ * The Region Editor's docked "Classes" panel (jit-ui#70): every annotation
15
+ * class with its colour swatch and region count. A row click picks the active
16
+ * class (and re-classifies a selection), the swatch recolours the class, the
17
+ * trash removes it, Manage opens the full editor; the search box filters the
18
+ * rows by name; the eye hides a class's regions. For a class hierarchy the editor projects a class tree in,
19
+ * shown in place of the list while {@link treeView} is on. Presentational: the
20
+ * editor applies every action.
21
+ */
22
+ export declare class ClassesPanelComponent implements OnChanges {
23
+ private readonly el;
24
+ /** The classes in display order. */
25
+ classes: ClassPreset[];
26
+ /** Region count per class, keyed by {@link presetKey} under `matchMode`. */
27
+ counts: Map<string, number>;
28
+ /** How labels are matched to classes (keys {@link counts}). */
29
+ matchMode: MatchMode;
30
+ /** The active class (highlighted), or null. */
31
+ activeClass: string | null;
32
+ /** The class picked last (in the class tree, or a surface in 3D): highlighted, scrolled into view. */
33
+ picked: string | null;
34
+ /** Classes with a selected region (marked). */
35
+ marked: ReadonlySet<string>;
36
+ /** Number of selected regions (changes what a row click does). */
37
+ selectedCount: number;
38
+ /** The class regions revert to; it can't be removed while in use. */
39
+ defaultClassName: string;
40
+ /** Whether a volume view is on screen: each class can then be shown in 3D. */
41
+ volume: boolean;
42
+ /** The classes shown in 3D. */
43
+ shown3d: ReadonlySet<string>;
44
+ /** The classes hidden from view. */
45
+ hidden: ReadonlySet<string>;
46
+ /** A class's eye (its name): hide it, or show it again. */
47
+ toggleHidden: EventEmitter<string>;
48
+ /** A class's 3D toggle (its name). */
49
+ toggle3d: EventEmitter<string>;
50
+ /** Whether the projected class tree is shown instead of the list; null: there is no tree. */
51
+ treeView: boolean | null;
52
+ /** The list / tree switch. */
53
+ treeViewChange: EventEmitter<boolean>;
54
+ /** A row was clicked: make the class active / apply it to the selection. */
55
+ pick: EventEmitter<string>;
56
+ /** A class's swatch picked a new colour. */
57
+ recolor: EventEmitter<{
58
+ name: string;
59
+ color: string;
60
+ }>;
61
+ /** A class's trash button (its name). */
62
+ remove: EventEmitter<string>;
63
+ /** Manage clicked. */
64
+ manage: EventEmitter<void>;
65
+ /** trackBy for the class rows so re-sorting doesn't re-create the pickers. */
66
+ protected readonly trackByName: (_: number, c: ClassRow) => string;
67
+ /** Every class's row, rebuilt when an input changes rather than per check. */
68
+ protected rows: ClassRow[];
69
+ /** The rows matching {@link query}. */
70
+ protected shownRows: ClassRow[];
71
+ /** The search box's text. */
72
+ protected query: string;
73
+ constructor(el: ElementRef<HTMLElement>);
74
+ ngOnChanges(changes?: SimpleChanges): void;
75
+ protected onQuery(value: string): void;
76
+ /** Enter in the search box picks the first match. */
77
+ protected pickFirstMatch(): void;
78
+ private filter;
79
+ private count;
80
+ private canRemove;
81
+ protected rowTooltip(name: string): string;
82
+ protected removeTooltip(name: string): string;
83
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClassesPanelComponent, never>;
84
+ static ɵcmp: i0.ɵɵComponentDeclaration<ClassesPanelComponent, "region-classes-panel", never, { "classes": { "alias": "classes"; "required": false; }; "counts": { "alias": "counts"; "required": false; }; "matchMode": { "alias": "matchMode"; "required": false; }; "activeClass": { "alias": "activeClass"; "required": false; }; "picked": { "alias": "picked"; "required": false; }; "marked": { "alias": "marked"; "required": false; }; "selectedCount": { "alias": "selectedCount"; "required": false; }; "defaultClassName": { "alias": "defaultClassName"; "required": false; }; "volume": { "alias": "volume"; "required": false; }; "shown3d": { "alias": "shown3d"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; "treeView": { "alias": "treeView"; "required": false; }; }, { "toggleHidden": "toggleHidden"; "toggle3d": "toggle3d"; "treeViewChange": "treeViewChange"; "pick": "pick"; "recolor": "recolor"; "remove": "remove"; "manage": "manage"; }, never, ["*"], true, never>;
85
+ }
86
+ export {};
@@ -0,0 +1,7 @@
1
+ /**
2
+ * A file name without its extension: `slide.ome.tif` → `slide.ome`. A name with
3
+ * no extension — or only a leading dot, like `.hidden` — is returned whole, so
4
+ * a derived name is never a bare `.geojson`. `fallback` stands in for a missing
5
+ * name.
6
+ */
7
+ export declare function fileStem(name: string | null | undefined, fallback: string): string;
@@ -0,0 +1,45 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { ClassPreset, MatchMode, PresetSet } from '../../models/class-preset';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * "Manage annotation classes" (jit-ui#70): edit the classes, the fallback
6
+ * palette, auto-add and label matching of a working copy of the preset set,
7
+ * plus reset / import / export. The editor owns the draft (`[(draft)]`); every
8
+ * edit here emits a new draft object (nothing is changed in place), and Apply
9
+ * asks the editor to persist it.
10
+ */
11
+ export declare class ManageClassesDialogComponent {
12
+ /** The dialog is open. */
13
+ visible: boolean;
14
+ /** The dialog was closed (`false`); two-way with {@link visible}. */
15
+ visibleChange: EventEmitter<boolean>;
16
+ /** The working copy being edited (null until the dialog is opened). */
17
+ draft: PresetSet | null;
18
+ /** Every edit: the new draft object; two-way with {@link draft}. */
19
+ draftChange: EventEmitter<PresetSet>;
20
+ /** Apply clicked: persist the draft and close. */
21
+ apply: EventEmitter<void>;
22
+ /** Reset clicked: restore the default classes. */
23
+ resetDefaults: EventEmitter<void>;
24
+ /** A preset JSON file was chosen (the input's change event). */
25
+ importFile: EventEmitter<Event>;
26
+ /** Export clicked. */
27
+ export: EventEmitter<void>;
28
+ protected readonly matchModeOptions: {
29
+ label: string;
30
+ value: string;
31
+ }[];
32
+ /** Rows keep their DOM (and input focus) while their class object is replaced. */
33
+ protected readonly trackByIndex: (i: number) => number;
34
+ protected addClass(): void;
35
+ protected removeClass(i: number): void;
36
+ protected patchClass(i: number, patch: Partial<ClassPreset>): void;
37
+ protected addFallbackColor(): void;
38
+ protected removeFallbackColor(i: number): void;
39
+ protected setFallbackColor(i: number, color: string): void;
40
+ protected setAutoPromote(autoPromote: boolean): void;
41
+ protected setMatchMode(matchMode: MatchMode): void;
42
+ private update;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<ManageClassesDialogComponent, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<ManageClassesDialogComponent, "region-manage-classes-dialog", never, { "visible": { "alias": "visible"; "required": false; }; "draft": { "alias": "draft"; "required": false; }; }, { "visibleChange": "visibleChange"; "draftChange": "draftChange"; "apply": "apply"; "resetDefaults": "resetDefaults"; "importFile": "importFile"; "export": "export"; }, never, never, true, never>;
45
+ }