@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
@@ -10,94 +10,104 @@ import * as i0 from "@angular/core";
10
10
  * {@link CHANNEL_HISTOGRAM_API} into the shared store, and both rendering
11
11
  * backends recolor the displayed image live. The pane depends only on the
12
12
  * contract, never the concrete visualizer.
13
+ *
14
+ * OnPush: the API's channel / colormap / invert / image streams, the async
15
+ * histogram and the slider-activity timer mark it for check.
13
16
  */
14
17
  export declare class ChannelHistogramComponent implements OnInit, OnDestroy {
15
18
  private api;
16
19
  /** Dialog visibility, two-way bound so the host (toolbar button) can open it. */
17
20
  visible: boolean;
21
+ /** The dialog was opened or closed; two-way with {@link visible}. */
18
22
  visibleChange: EventEmitter<boolean>;
19
- readonly histogramDiv = "channel-histogram-plot";
20
- readonly lutColors: readonly {
23
+ /** DOM id of the Plotly histogram element — per instance, so two panes don't collide. */
24
+ protected readonly histogramDiv: string;
25
+ protected readonly lutColors: readonly {
21
26
  name: string;
22
27
  color: string;
23
28
  }[];
24
- channels: IChannelState[];
25
- selected: IChannelState | null;
26
- invert: boolean;
27
- logScale: boolean;
29
+ protected channels: IChannelState[];
30
+ protected selected: IChannelState | null;
31
+ protected invert: boolean;
32
+ protected logScale: boolean;
28
33
  /** Bounded retries while the (async) histogram sampling resolves. */
29
34
  private histRetries;
35
+ private histRetryTimer?;
30
36
  /** The selected channel's current histogram. Native bit depth (with
31
37
  * observed/range fields) for >8-bit images, else the 8-bit client histogram.
32
38
  * Drives the plot, the native window labels, and the export-button gate. */
33
- hist: IHistogram | null;
39
+ protected get hist(): IHistogram | null;
40
+ protected set hist(h: IHistogram | null);
41
+ private _hist;
42
+ /** {@link nativeRange} of {@link hist}, kept with it so the template's window
43
+ * getters read it instead of re-deriving (and allocating) it per check. */
44
+ private range;
34
45
  private histSub?;
35
46
  /** Which window control is being adjusted right now — drives a small
36
47
  * non-blocking activity spinner next to that slider, since the image recolor
37
48
  * isn't instant on large stacks. Cleared a short moment after movement stops
38
49
  * (the recolor isn't directly observable, so this is a trailing heuristic). */
39
- activeAdjust: 'min' | 'max' | 'gamma' | null;
50
+ protected activeAdjust: 'min' | 'max' | 'gamma' | null;
40
51
  private adjustTimer?;
41
- colormapOptions: any;
42
- selectedColormap: any;
43
- private subs;
52
+ protected colormapOptions: any;
53
+ protected selectedColormap: any;
54
+ private readonly destroyRef;
55
+ private readonly cdr;
56
+ private readonly zone;
57
+ /** Re-render this OnPush view, re-entering the zone when the change came from outside it. */
58
+ private changed;
44
59
  /** Keeps the Plotly histogram sized to the (resizable) dialog body. */
45
60
  private resizeObserver?;
46
61
  constructor(api: IChannelHistogramApi);
47
62
  /** Per-channel pseudo-colour only applies when there's more than one channel
48
63
  * (RGB / fluorescence). A single grayscale channel uses the colormap instead. */
49
- get multichannel(): boolean;
64
+ protected get multichannel(): boolean;
50
65
  ngOnInit(): void;
66
+ /** Stops the pending histogram load / retry and activity timer, the resize
67
+ * observer and the Plotly plot; the API streams end through `takeUntilDestroyed`. */
51
68
  ngOnDestroy(): void;
52
- onVisibleChange(v: boolean): void;
69
+ protected onVisibleChange(v: boolean): void;
53
70
  /** p-dialog (onShow): the plot div now exists, so draw the histogram and keep
54
71
  * it sized to the dialog (which is resizable) via a ResizeObserver. */
55
- onShow(): void;
72
+ protected onShow(): void;
56
73
  private teardownResize;
57
- selectChannel(ch: IChannelState): void;
58
- onMinChange(value: any): void;
59
- onMaxChange(value: any): void;
60
- onGammaChange(value: any): void;
74
+ protected selectChannel(ch: IChannelState): void;
75
+ protected onMinChange(value: number | string | null | undefined): void;
76
+ protected onMaxChange(value: number | string | null | undefined): void;
77
+ protected onGammaChange(value: number | string | null | undefined): void;
61
78
  /** Flag a control as actively adjusting so its spinner shows; auto-clears a
62
79
  * short moment after the last change (kept alive while the user keeps
63
80
  * dragging, since each change resets the timer). */
64
81
  private markBusy;
65
- onVisibleToggle(ch: IChannelState, value: boolean): void;
66
- onColorChange(ch: IChannelState, color: string): void;
67
- onColormap(node: TreeNode): void;
68
- onInvert(value: boolean): void;
69
- toggleLog(value: boolean): void;
82
+ protected onVisibleToggle(ch: IChannelState, value: boolean): void;
83
+ protected onColorChange(ch: IChannelState, color: string): void;
84
+ protected onColormap(node: TreeNode): void;
85
+ protected onInvert(value: boolean): void;
86
+ protected toggleLog(value: boolean): void;
70
87
  /** Quick-assign a preset LUT colour to a channel (Fiji palette). */
71
- setPreset(ch: IChannelState, color: string): void;
88
+ protected setPreset(ch: IChannelState, color: string): void;
72
89
  /** Export the displayed composite as a publication-ready PNG (8-bit figure). */
73
- exportComposite(): void;
90
+ protected exportComposite(): void;
74
91
  /** Export the underlying data as a true-16-bit multi-band TIFF (server-side). */
75
- exportData(): void;
92
+ protected exportData(): void;
76
93
  /** True when the current channel histogram is native >8-bit (16-bit etc.):
77
94
  * gates the native slider labelling and the 16-bit TIFF export button. */
78
- get is16bit(): boolean;
79
- /** The native value range the 8-bit display window maps onto — the observed
80
- * pixel extremes for a native histogram, else plain 0..255 (so 8-bit images
81
- * pass through unchanged). The 8-bit tile is server-stretched across this
82
- * range, so it's the best client-side native↔display mapping. */
95
+ protected get is16bit(): boolean;
96
+ /** {@link nativeRange} of the current histogram. */
83
97
  private obsRange;
84
98
  /** 8-bit display value (0..255) → native units. */
85
99
  private toNative;
86
100
  /** Native units → clamped 8-bit display value (0..255). */
87
101
  private toDisp;
88
102
  /** Selected channel window endpoints in native units (for the sliders). */
89
- get minNative(): number;
90
- get maxNative(): number;
103
+ protected get minNative(): number;
104
+ protected get maxNative(): number;
91
105
  /** Native slider bounds + step (256 display steps across the native range). */
92
- get sliderMin(): number;
93
- get sliderMax(): number;
94
- get sliderStep(): number;
95
- auto(): void;
96
- reset(): void;
97
- /** Saturation-based auto-window over a (native or 8-bit) histogram: pick
98
- * [min,max] so ~`saturation` of pixels clip at each end, dropping a dominant
99
- * first/last bin (background/padding). Returns native bin values. */
100
- private autoWindow;
106
+ protected get sliderMin(): number;
107
+ protected get sliderMax(): number;
108
+ protected get sliderStep(): number;
109
+ protected auto(): void;
110
+ protected reset(): void;
101
111
  /** Fetch the selected channel's histogram (native for 16-bit, else 8-bit) and
102
112
  * (re)draw it. Async — the native path hits the server; the 8-bit path may be
103
113
  * null until tile sampling resolves, so we retry a few times. */
@@ -108,5 +118,5 @@ export declare class ChannelHistogramComponent implements OnInit, OnDestroy {
108
118
  private markerShapes;
109
119
  private histogramLayout;
110
120
  static ɵfac: i0.ɵɵFactoryDeclaration<ChannelHistogramComponent, never>;
111
- static ɵcmp: i0.ɵɵComponentDeclaration<ChannelHistogramComponent, "channel-histogram", never, { "visible": { "alias": "visible"; "required": false; }; }, { "visibleChange": "visibleChange"; }, never, never, false, never>;
121
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChannelHistogramComponent, "channel-histogram", never, { "visible": { "alias": "visible"; "required": false; }; }, { "visibleChange": "visibleChange"; }, never, never, true, never>;
112
122
  }
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * Optional features a viewer backend may or may not support. Consumers query
3
- * `IImageViewer.capabilities` and degrade gracefully (hide a toolbar item,
3
+ * `IVisualizer.capabilities` and degrade gracefully (hide a toolbar item,
4
4
  * skip a render path) rather than calling a method that no-ops.
5
5
  *
6
6
  * The Plotly backend supports the scientific/data features; the OpenSeadragon
7
7
  * backend supports `ImageDisplay` (large zoomable image) but not the
8
- * scalar-data features. The eventual router picks a backend per plot type.
8
+ * scalar-data features. `RoutingVisualizerService` picks a backend per plot type
9
+ * and reports Plotly's capabilities, so the UI keeps offering every type.
9
10
  */
10
11
  export declare enum ViewerFeature {
11
12
  /** Display a raster/tiled image (HEATMAP/RGB image, OSD's strength). */
@@ -23,6 +24,7 @@ export declare enum ViewerFeature {
23
24
  /** Live isosurface intensity bounds (isomin/isomax) — see IIsosurfaceControls. */
24
25
  Isosurface = "isosurface"
25
26
  }
27
+ /** The feature set a backend advertises (see {@link ViewerFeature}). */
26
28
  export interface ViewerCapabilities {
27
29
  has(feature: ViewerFeature): boolean;
28
30
  }
@@ -24,6 +24,7 @@ export interface CellSegmentProgress {
24
24
  /** Human-readable phase, e.g. 'Running inference (tile 3/8)…'. */
25
25
  onStatus?: (status: string) => void;
26
26
  }
27
+ /** A segmenter that labels every cell of an image (one exclusive label per pixel). */
27
28
  export interface ICellSegmenter {
28
29
  /** Segment all cells in an RGBA image into an instance label map. */
29
30
  segmentCells(image: {
@@ -97,4 +97,8 @@ export interface IChannelHistogramApi {
97
97
  * meaningful for >8-bit images; a no-op on backends that can't provide it. */
98
98
  exportData(): void;
99
99
  }
100
+ /**
101
+ * DI token for the Channels & Histogram pane's API. The library binds it to its router
102
+ * (VisualizationModule / provideVisualization); hosts inject it, they do not provide it.
103
+ */
100
104
  export declare const CHANNEL_HISTOGRAM_API: InjectionToken<IChannelHistogramApi>;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The one CSS colour parser (review NAPARI-BOUNDARY-29, CORE-25, RT-28).
3
+ *
4
+ * Seven call sites used to parse colours by hand, each accepting a different
5
+ * subset (`#rgb` here, `#rrggbb` only there, `rgb()` in one place) and each
6
+ * falling back to a different colour on bad input. They now all call
7
+ * {@link parseCssColor}, which returns null for anything it does not
8
+ * understand, and keep their own fallback at the call site
9
+ * (`parseCssColor(s) ?? MISSING_COLOR`).
10
+ *
11
+ * Pure: no DOM, no Angular. Channels are 0–255 integers.
12
+ */
13
+ /** An RGB colour, each channel 0–255. */
14
+ export type Rgb = [number, number, number];
15
+ /**
16
+ * Parse a CSS colour to RGB, or null when it is not one this parser accepts.
17
+ *
18
+ * Accepts `#rgb`, `#rrggbb` and `#rrggbbaa` (the `#` may be omitted, and the
19
+ * alpha is ignored), and `rgb(r, g, b)` / `rgba(r, g, b, a)` with comma- or
20
+ * space-separated channels (rounded and clamped to 0–255). Named colours
21
+ * (`red`) are not accepted.
22
+ */
23
+ export declare function parseCssColor(s: string | null | undefined): Rgb | null;
24
+ /** `#rrggbb` (lower-case) for an RGB colour; channels are rounded and clamped to 0–255. */
25
+ export declare function rgbToHex(rgb: Readonly<Rgb>): string;
26
+ /** {@link parseCssColor} for hex input: `#rgb` / `#rrggbb` / `#rrggbbaa` (with or without `#`), or null. */
27
+ export declare function hexToRgb(hex: string | null | undefined): Rgb | null;
@@ -7,15 +7,30 @@
7
7
  * to Plotly's `colorscale` — so the two surfaces stay in lock-step.
8
8
  *
9
9
  * A colormap value is either:
10
- * - an array of `[stop, color]` pairs (the matplotlib `*_LUT` constants), or
11
- * - a Plotly built-in scale *name* string (e.g. 'Viridis', 'Reds').
10
+ * - an array of `[stop, color]` pairs (the matplotlib tables, see {@link lutScale}), or
11
+ * - a Plotly built-in scale *name* string (e.g. 'Viridis', 'Reds'), or
12
+ * - a 256-entry RGB table itself (a `napari-js/colormaps` `*_LUT`), used as is.
12
13
  * `color` may be `'rgb(r, g, b)'` or `'#rrggbb'`/`'#rgb'`.
13
14
  */
14
- export type Rgb = [number, number, number];
15
+ import { Rgb } from './color';
16
+ export type { Rgb };
17
+ type Stop = [number, string];
18
+ /**
19
+ * A 256-entry RGB table (a `napari-js/colormaps` `*_LUT`, `Uint8Array(768)`) as an inline
20
+ * Plotly colorscale: one `[i / 255, 'rgb(r, g, b)']` stop per entry, the shape the colormap
21
+ * tree hands to Plotly's `colorscale` and to {@link buildColormapLut}. Stops are rounded to
22
+ * six decimals, as the colormap asset this replaces carried them.
23
+ */
24
+ export declare function lutScale(lut: ArrayLike<number>): Stop[];
15
25
  /**
16
26
  * Build a 256-entry RGB lookup table from a `COLORMAP_OPTIONS` value, indexed by
17
27
  * grayscale value 0–255. Returns null if the value can't be resolved to a scale.
18
- * @param value array of `[stop, color]` pairs, or a Plotly built-in name string
28
+ *
29
+ * The Plotly side (the value's forms, the colour strings, the built-in names) is
30
+ * parsed here; the interpolation is napari-js's own `Colormap` sampled by `buildLut`,
31
+ * so both backends ramp a scale the same way.
32
+ * @param value array of `[stop, color]` pairs, a Plotly built-in name string, or a
33
+ * 256-entry RGB `Uint8Array(768)`
19
34
  * @param reverse mirror the scale (matches Plotly's `reversescale`)
20
35
  */
21
36
  export declare function buildColormapLut(value: unknown, reverse?: boolean): Rgb[] | null;
@@ -7,9 +7,9 @@ import { Region } from '../models/region';
7
7
  *
8
8
  * "Data coordinates" are the backend's shape coordinate space: Plotly data
9
9
  * coords for Plotly, image-pixel coords for OpenSeadragon. The tools convert
10
- * data -> image-matrix using the per-image ratio they already get from the host
11
- * (`getCachedImageData().ratios` / `getCachedImageRatio()`), so that division
12
- * stays in the tool and the transform stays purely screen<->data.
10
+ * data -> image-matrix using the per-axis ratios they already get from the host
11
+ * (`getCachedImageData().ratios`, see `MatrixFrame`), so that division stays in
12
+ * the tool and the transform stays purely screen<->data.
13
13
  */
14
14
  export interface ICoordinateTransform {
15
15
  /** Client (mouse event) pixel -> data coordinates. */
@@ -49,6 +49,23 @@ export interface IBrushOptions {
49
49
  /** Colour for the painted regions instead of the shape colour. Kept against preset re-apply. */
50
50
  color?: string;
51
51
  }
52
+ /** Options for the vertex eraser. */
53
+ export interface IVertexEraserOptions {
54
+ /** Eraser radius in matrix (image) pixels. */
55
+ radius?: number;
56
+ }
57
+ /**
58
+ * The on-canvas tools `IToolController.setActiveTool` arms: magic wand, brush,
59
+ * vertex eraser, box zoom and SAM point prompts. Any other id (a region draw
60
+ * mode such as `'drawrect'`, `'pan'`) arms none of them.
61
+ */
62
+ export type CanvasToolId = 'wand' | 'brush' | 'eraseVertex' | 'zoomToBox' | 'samPoint';
63
+ /** Every {@link CanvasToolId}. */
64
+ export declare const CANVAS_TOOL_IDS: readonly CanvasToolId[];
65
+ /** Whether `id` names an on-canvas tool. */
66
+ export declare function isCanvasToolId(id: string | null | undefined): id is CanvasToolId;
67
+ /** Options for {@link CanvasToolId} tools: the wand's, the brush's or the eraser's. */
68
+ export type CanvasToolOptions = IWandOptions | IBrushOptions | IVertexEraserOptions;
52
69
  /** What drives point colour in the spatial-omics mode: an annotation column
53
70
  * from the dataset, or one feature (gene) vector fetched on demand. */
54
71
  export interface SpatialColorBy {
@@ -274,4 +291,8 @@ export interface SpatialViewState {
274
291
  }
275
292
  /** Transcript glyph names — see `TRANSCRIPT_GLYPHS` in `spatial/spatial-tiles.ts`. */
276
293
  export type TranscriptGlyphName = 'circle' | 'star' | 'triangle' | 'square' | 'diamond' | 'cross' | 'hexagon' | 'triangle-down' | 'pentagon' | 'x';
294
+ /**
295
+ * The spatial view a dataset opens with: no colour source, points and volume shown, the
296
+ * optional layers off. A complete state to spread partial view-state patches over.
297
+ */
277
298
  export declare const DEFAULT_SPATIAL_VIEW: SpatialViewState;
@@ -61,6 +61,10 @@ export interface IImageInfo {
61
61
  * opposed to the scalar `roiJsonStr`, which is one ROI set for the whole
62
62
  * image (a single file or a server z-stack). (jit-ui#93) */
63
63
  roiJsonStrs?: (string | null)[];
64
+ /** Base URL of a server-side region source for this image (see `openHttpRegionSource`):
65
+ * its regions are drawn from the server's level-of-detail tiles instead of being loaded
66
+ * from `roiJsonStr`. On a stack, slice z shows the source's plane z. */
67
+ regionSourceUrl?: string;
64
68
  /** Per-slice, per-channel plane URLs for a SERVERLESS multichannel image
65
69
  * (`tiled: false` + `imageMeta[0].channelCount > 1`). `channelUrls[z][c]`
66
70
  * is a complete single-band image of channel c at slice z. The OSD simple
@@ -34,6 +34,10 @@ export interface InstanceDetection {
34
34
  classId: number;
35
35
  className: string;
36
36
  }
37
+ /**
38
+ * The result of one {@link IInstanceSegmenter} run: every detection, in the pixel frame of
39
+ * the `width × height` image that was segmented.
40
+ */
37
41
  export interface InstanceSegmentation {
38
42
  detections: InstanceDetection[];
39
43
  width: number;
@@ -119,6 +123,7 @@ export interface InstanceSegmentProgress {
119
123
  /** Human-readable phase, e.g. 'Running inference (tile 3/8)…'. */
120
124
  onStatus?: (status: string) => void;
121
125
  }
126
+ /** A segmenter that returns discrete, classified, possibly overlapping instances. */
122
127
  export interface IInstanceSegmenter {
123
128
  /** Detect and outline all instances in an RGBA image. */
124
129
  segmentInstances(image: {
@@ -8,11 +8,22 @@ import { IHistogram } from './channel-histogram-api.contract';
8
8
  * tiles encode gray as r=g=b, so max is exact; it also tolerates tinted
9
9
  * pixels).
10
10
  */
11
- /** ITU-R BT.601 luminance for an RGB pixel (Plotly's scalar projection). */
12
- export declare function bt601Luminance(r: number, g: number, b: number): number;
11
+ /** ITU-R BT.601 luminance for an RGB pixel (Plotly's scalar projection): napari-js's
12
+ * `luminance8`, under the name SIV's callers use, so there is one copy of the weights. */
13
+ export { luminance8 as bt601Luminance } from 'napari-js';
13
14
  /** Max of the three channels (the OSD tile path's scalar projection).
14
15
  * NOTE: the per-pixel recolor loop in `osd/display-pipeline.ts` keeps this
15
16
  * inlined on purpose — it runs ~262k times per tile. */
16
17
  export declare function maxRgb(r: number, g: number, b: number): number;
17
18
  /** Wrap 256 raw bin counts as an IHistogram (0..255 left edges + max). */
18
19
  export declare function histogram256(counts: number[]): IHistogram;
20
+ /**
21
+ * Saturation-based auto-window: pick `[min, max]` so about `saturation` (0..0.5) of the
22
+ * pixels clip at each end of the histogram. A dominant first or last bin (unscanned
23
+ * padding, clipped background) is dropped first so it does not skew the range.
24
+ *
25
+ * Returns values from `h.bins` (native units for a native histogram), or `fallback` when
26
+ * the histogram is empty or holds no counts — each caller keeps its own: the 8-bit store
27
+ * falls back to the full byte range, the channel histogram to its slider bounds.
28
+ */
29
+ export declare function autoWindowFromHistogram(h: IHistogram, saturation: number, fallback: readonly [number, number]): [number, number];
@@ -79,7 +79,7 @@ export interface PlotTypeDescriptor {
79
79
  * mode owns each name — so it drops the backend suffix (e.g. just "Surface").
80
80
  * A type WITHOUT a `productionLabel` is **test-only**: hidden from the default
81
81
  * selector and shown only when the host enables test mode. This is the single
82
- * knob that curates the default plot-mode list (jax-image-visualization).
82
+ * knob that curates the default plot-mode list.
83
83
  */
84
84
  productionLabel?: string;
85
85
  /**
@@ -116,7 +116,9 @@ export interface PlotTypeDescriptor {
116
116
  * for future use). Hence the `Partial` record.
117
117
  */
118
118
  export declare const PLOT_TYPE_DESCRIPTORS: Partial<Record<PlotType, PlotTypeDescriptor>>;
119
+ /** The built-in descriptor (label, icon, dimensions, data source) of a plot type, if any. */
119
120
  export declare function getPlotTypeDescriptor(type: PlotType): PlotTypeDescriptor | undefined;
121
+ /** Whether a built-in plot type renders in 3D (its descriptor says `dimensions: '3d'`). */
120
122
  export declare function isThreeDimensional(type: PlotType): boolean;
121
123
  /** napari-js volume. */
122
124
  export declare function isNapariVolume(type: PlotType): boolean;
@@ -1,6 +1,7 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import { IImageInfo } from '../image.contract';
4
+ import type { VisualizerHandle } from '../visualizer.contract';
4
5
  /**
5
6
  * Host image/loading/zoom state, inverted as a port so the visualization library
6
7
  * doesn't import the app's `MainState`/`MainFacade`. The host supplies an adapter
@@ -23,7 +24,10 @@ export interface ImageStatePort {
23
24
  setZoom(zoom: boolean): void;
24
25
  setImageCached(cached: boolean): void;
25
26
  setLoadingError(error: boolean): void;
26
- /** Register the active diagram/visualization component with the host. */
27
- setDiagram(diagram: unknown): void;
27
+ /** Register the mounted visualizer with the host, or `null` once it is destroyed. */
28
+ setDiagram(diagram: VisualizerHandle | null): void;
28
29
  }
30
+ /**
31
+ * DI token for the host's {@link ImageStatePort}. Required: the visualizer component injects it.
32
+ */
29
33
  export declare const IMAGE_STATE_PORT: InjectionToken<ImageStatePort>;
@@ -16,4 +16,8 @@ export interface PreferencesPort {
16
16
  /** Persist (upsert) the current user's preset set. */
17
17
  savePresetSet(set: PresetSet): Observable<void>;
18
18
  }
19
+ /**
20
+ * DI token for the host's {@link PreferencesPort}. Optional: without it, the annotation-class
21
+ * preset set is not persisted.
22
+ */
19
23
  export declare const PREFERENCES_PORT: InjectionToken<PreferencesPort>;
@@ -26,4 +26,5 @@ export interface RegionIoPort {
26
26
  geoJsonStr: string;
27
27
  }[]): Observable<void>;
28
28
  }
29
+ /** DI token for the host's {@link RegionIoPort}. Required by the region editor. */
29
30
  export declare const REGION_IO_PORT: InjectionToken<RegionIoPort>;
@@ -145,15 +145,9 @@ export interface SpatialDataPort {
145
145
  * mode should never pay for it.
146
146
  */
147
147
  getVolume?(): Promise<Uint8Array>;
148
- /**
149
- * Server-side "which observations fall inside this polygon", for datasets
150
- * too large to hit-test client-side. Optional: without it the library
151
- * point-in-polygons the resident coordinates itself, which is fine into the
152
- * 10^5 range. Coordinates are in the same space as the observations.
153
- */
154
- queryRoi?(polygon: {
155
- x: number[];
156
- y: number[];
157
- }): Promise<Uint32Array>;
158
148
  }
149
+ /**
150
+ * DI token for the host's {@link SpatialDataPort}. Optional: a host that serves no
151
+ * spatial-omics data binds nothing, and the spatial plot types stay hidden.
152
+ */
159
153
  export declare const SPATIAL_DATA_PORT: InjectionToken<SpatialDataPort>;
@@ -24,4 +24,5 @@ export interface TileAccessPort {
24
24
  * host supplies them). Hides the app's Auth0 dependency from the library. */
25
25
  getAuthHeaders(): Promise<Record<string, string>>;
26
26
  }
27
+ /** DI token for the host's {@link TileAccessPort}. Required by the OpenSeadragon backend. */
27
28
  export declare const TILE_ACCESS_PORT: InjectionToken<TileAccessPort>;
@@ -3,6 +3,9 @@ import { Observable } from 'rxjs';
3
3
  import { Region } from '../models/region';
4
4
  import { ClassPreset, PresetSet } from '../models/class-preset';
5
5
  import { IImageMetadata } from './image.contract';
6
+ import type { RegionSourceView } from '../region-source/region-source';
7
+ import type { RegionIndexPage, RegionIndexQuery } from '../region-source/region-tiles';
8
+ import type { RegionStyle } from '../region-overlay/region-style';
6
9
  /**
7
10
  * Public, implementation-agnostic surface that the Region Editor (an *external*
8
11
  * consumer of the visualization package) depends on. It deals only in
@@ -30,7 +33,7 @@ export interface IRegionEditorApi {
30
33
  * preserved (the editor must not be able to drop them). */
31
34
  setAnnotationRegions(regions: Region[], showRegionLabel?: boolean, isRegionSaveOn?: boolean, fillColor?: string): void;
32
35
  /** Change signal — fires whenever regions change on any backend. */
33
- getRegionUpdateEvent(): Observable<any[]>;
36
+ getRegionUpdateEvent(): Observable<Region[]>;
34
37
  /** The currently-selected annotation regions (profile lines never appear). */
35
38
  getSelectedRegions$(): Observable<Region[]>;
36
39
  /** Set the selection to these regions. */
@@ -78,6 +81,87 @@ export interface IRegionEditorApi {
78
81
  width: number;
79
82
  height: number;
80
83
  } | null;
84
+ /**
85
+ * Load `geoJsonStr` as the slice's region source when it is large enough
86
+ * (`VizConfig.regionSourceMinChars`): resolves true once it is open, false when it is small
87
+ * and should be imported as regions; rejects when it is not a GeoJSON FeatureCollection.
88
+ */
89
+ importRegionSource?(geoJsonStr: string): Promise<boolean>;
90
+ /**
91
+ * Drop the slice's region source, for regions imported in its place (a small file replacing a
92
+ * large one). The other slices keep theirs.
93
+ */
94
+ dropRegionSource?(): Promise<void>;
95
+ /** The slice's region source (null without one) and every change of it. */
96
+ getRegionSourceView$?(): Observable<RegionSourceView | null>;
97
+ /** A page of the slice source's features that were not taken from it. */
98
+ getRegionSourceIndex?(query: Omit<RegionIndexQuery, 'exclude'>): Promise<RegionIndexPage>;
99
+ /** Take source features into the regions and select them (added with `additive`). */
100
+ selectSourceFeatures?(ids: readonly string[], additive?: boolean): Promise<number[]>;
101
+ /** Delete source features without taking them (one undo step). */
102
+ deleteSourceFeatures?(ids: readonly string[]): void;
103
+ /**
104
+ * Features per class still in the slice's region source (not taken); with `stack`, a z-stack's
105
+ * over every slice.
106
+ */
107
+ getRegionSourceClassCounts?(stack?: boolean): Promise<Record<string, number>>;
108
+ /** The region look (outlines, or filled with labels inside) and every change of it. */
109
+ getRegionStyle$?(): Observable<RegionStyle>;
110
+ /** Choose the region look, field by field (overrides a region source's hint). */
111
+ setRegionStyle?(patch: Partial<RegionStyle>): void;
112
+ /** Whether a volume view is on screen (regions can then be shown in 3D). */
113
+ getVolumeView$?(): Observable<boolean>;
114
+ /**
115
+ * Whether the volume view's slice pane is wanted (one slice edited beside the 3D view). A volume
116
+ * view without it lists every slice's classes; with it, the slice's.
117
+ */
118
+ getSliceEditor$?(): Observable<boolean>;
119
+ /** Whether the volume view draws the region reconstructions through the volume, and changes. */
120
+ getRegionsThroughVolume$?(): Observable<boolean>;
121
+ /**
122
+ * Draw the region reconstructions through the volume (it hides none: surfaces traced inside its
123
+ * bright structures) or hidden behind what it shows in front of them (the default).
124
+ */
125
+ setRegionsThroughVolume?(through: boolean): void;
126
+ /**
127
+ * Show these groups of classes in the volume view as 3D reconstructions (one surface per group,
128
+ * in its colour), and only these; [] hides them.
129
+ */
130
+ showRegionClasses3d?(groups: ReadonlyArray<{
131
+ key: string;
132
+ classes: readonly string[];
133
+ color: string;
134
+ label?: string;
135
+ }>): Promise<void>;
136
+ /**
137
+ * Each class's volume over the whole stack, in px² × slices: its outlines' area on every slice,
138
+ * one slice thick. Times the pixel size and the slice spacing, µm³.
139
+ */
140
+ getClassVolumes?(classes: readonly string[]): Promise<Record<string, number>>;
141
+ /** Highlight the surfaces of these group keys in the volume view (none: all as usual). */
142
+ highlightRegionClasses3d?(keys: readonly string[]): void;
143
+ /** A surface clicked in the volume view with the selection tool (its group key), or none (null). */
144
+ getRegionPicked3d$?(): Observable<{
145
+ key: string | null;
146
+ additive: boolean;
147
+ }>;
148
+ /** The class groups shown in 3D on the image on screen; emits [] when another image is plotted. */
149
+ getRegionClasses3d$?(): Observable<ReadonlyArray<{
150
+ key: string;
151
+ classes: readonly string[];
152
+ }>>;
153
+ /** The classes hidden from view, and every change of them. */
154
+ getHiddenClasses$?(): Observable<ReadonlySet<string>>;
155
+ /**
156
+ * Hide (or show again) these classes: their regions and the region source's features are not
157
+ * drawn or picked, and their surfaces in the volume view are hidden.
158
+ */
159
+ setClassesHidden?(classes: readonly string[], hidden: boolean): void;
160
+ /** Select every region of these classes on the slice, the source's included (taken). */
161
+ selectRegionClasses?(classes: readonly string[], additive?: boolean): Promise<void>;
162
+ /** {@link getGeoJsonString} merged with the region source behind the regions (see
163
+ * `RegionStore.getGeoJsonWithSource`); `slice` names a folder stack's slice. */
164
+ getGeoJsonStringWithSource?(regions: Region[], slice?: number): Promise<string>;
81
165
  }
82
166
  /** DI token the Region Editor injects instead of the concrete service. */
83
167
  export declare const REGION_EDITOR_API: InjectionToken<IRegionEditorApi>;
@@ -31,6 +31,11 @@
31
31
  * - `move` — drag the selected region body to translate it.
32
32
  */
33
33
  export type RegionToolMode = 'none' | 'select' | 'drawrect' | 'drawclosedpath' | 'drawopenpath' | 'drawpolygon' | 'addpoint' | 'deletepoint' | 'move';
34
+ /**
35
+ * A backend's on-canvas region layer: draws the shared `RegionStore`'s regions
36
+ * over the image and runs the draw / select / vertex-edit interactions. Obtained
37
+ * from `IVisualizer.getRegionOverlay()`.
38
+ */
34
39
  export interface IRegionOverlay {
35
40
  /** Set the active draw/select interaction (or 'none' to just display). */
36
41
  setMode(mode: RegionToolMode): void;
@@ -1,5 +1,8 @@
1
1
  import { Rectangle, Polygon, MultiPolygon } from '../models/region';
2
2
  import { Region } from '../models/region';
3
+ import type { Observable } from 'rxjs';
4
+ import type { RegionSourceView } from '../region-source/region-source';
5
+ import type { RegionStyle } from '../region-overlay/region-style';
3
6
  /**
4
7
  * Region-native editing surface — typed geometry operations on the neutral
5
8
  * {@link Region} model. The OpenSeadragon overlay (and any future editing UI)
@@ -72,3 +75,22 @@ export interface IRegionEditApi {
72
75
  beginBatch(): void;
73
76
  endBatch(): void;
74
77
  }
78
+ /**
79
+ * The region-source side of the store, as the overlays use it: a large region set held as a
80
+ * tiled source (see `RegionStore.attachRegionSource`) that the overlays draw at the zoom's level
81
+ * of detail and pick from. Optional on the overlays' store: a store without it simply has no
82
+ * source to draw.
83
+ */
84
+ export interface IRegionSourceApi {
85
+ /** The current slice's source as a layer draws it, and every change of it; null without one. */
86
+ getRegionSourceView$(): Observable<RegionSourceView | null>;
87
+ /** Take source features into the working set as regions and select them (added to the
88
+ * selection with `additive`). Resolves the region ids. */
89
+ selectSourceFeatures(ids: readonly string[], additive?: boolean): Promise<number[]>;
90
+ /** The region look (outlines, or filled with inside labels). */
91
+ getRegionStyle(): RegionStyle;
92
+ /** Whether a class's label is left out because a subclass of it is drawn too. */
93
+ isLabelCovered(label: string | undefined): boolean;
94
+ /** Whether regions labelled `label` are hidden: not drawn, not picked. */
95
+ isClassHidden(label: string | null | undefined): boolean;
96
+ }
@@ -18,6 +18,13 @@ export interface SamModelDef {
18
18
  encoderUrl: string;
19
19
  /** Decoder ONNX URL (embedding + prompts → mask). Empty until hosted. */
20
20
  decoderUrl: string;
21
+ /**
22
+ * Revision of the hosted ONNX files. Downloaded models are cached by URL AND revision,
23
+ * and hosted URLs are typically mutable (`.../resolve/main/...`), so bump this when the
24
+ * files are re-exported under the same URLs: browsers then fetch the new files once and
25
+ * drop their older copies. Absent means the URL alone is the cache key.
26
+ */
27
+ revision?: string;
21
28
  /** Decoder I/O family — SAM v1 vs v2/v3 differ in mask output size + names. */
22
29
  variant: 'sam1' | 'sam2' | 'sam3';
23
30
  /** Encoder input side length (1024 for SAM v1). */