@jax-data-science/sci-image-visualizer 0.8.2 → 0.9.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 (525) hide show
  1. package/README.md +201 -460
  2. package/esm2022/index.mjs +28 -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/instance-segmenter.contract.mjs +1 -1
  12. package/esm2022/lib/contracts/intensity.mjs +48 -5
  13. package/esm2022/lib/contracts/plot-type-contribution.contract.mjs +1 -1
  14. package/esm2022/lib/contracts/plot-type.mjs +134 -17
  15. package/esm2022/lib/contracts/ports/image-state.port.mjs +4 -1
  16. package/esm2022/lib/contracts/ports/preferences.port.mjs +5 -1
  17. package/esm2022/lib/contracts/ports/region-io.port.mjs +2 -1
  18. package/esm2022/lib/contracts/ports/spatial-data.port.mjs +5 -1
  19. package/esm2022/lib/contracts/ports/tile-access.port.mjs +2 -1
  20. package/esm2022/lib/contracts/region-editor-api.contract.mjs +1 -1
  21. package/esm2022/lib/contracts/region-overlay.contract.mjs +1 -1
  22. package/esm2022/lib/contracts/sam.contract.mjs +1 -1
  23. package/esm2022/lib/contracts/semantic-segmenter.contract.mjs +1 -1
  24. package/esm2022/lib/contracts/spatial-dataset.contract.mjs +3 -1
  25. package/esm2022/lib/contracts/toolbar-tool.contract.mjs +6 -4
  26. package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
  27. package/esm2022/lib/contracts/viz-config.mjs +2 -1
  28. package/esm2022/lib/geometry/contour.mjs +63 -0
  29. package/esm2022/lib/geometry/raster.mjs +98 -0
  30. package/esm2022/lib/geometry/ring.mjs +201 -0
  31. package/esm2022/lib/hex-color-picker/hex-color-picker.component.mjs +202 -102
  32. package/esm2022/lib/implementations/base-store-visualizer.mjs +201 -48
  33. package/esm2022/lib/implementations/napari-js/napari-axes-gizmo.mjs +65 -0
  34. package/esm2022/lib/implementations/napari-js/napari-display-state.mjs +136 -0
  35. package/esm2022/lib/implementations/napari-js/napari-helpers.mjs +199 -0
  36. package/esm2022/lib/implementations/napari-js/napari-image-2d-scene.mjs +602 -0
  37. package/esm2022/lib/implementations/napari-js/napari-loading-badge.mjs +3 -4
  38. package/esm2022/lib/implementations/napari-js/napari-loading-state.mjs +66 -0
  39. package/esm2022/lib/implementations/napari-js/napari-region-overlay.mjs +157 -591
  40. package/esm2022/lib/implementations/napari-js/napari-scene.mjs +2 -0
  41. package/esm2022/lib/implementations/napari-js/napari-spatial-2d-scene.mjs +614 -0
  42. package/esm2022/lib/implementations/napari-js/napari-spatial-3d-scene.mjs +769 -0
  43. package/esm2022/lib/implementations/napari-js/napari-spatial-encoding.mjs +199 -0
  44. package/esm2022/lib/implementations/napari-js/napari-spatial-hover.mjs +263 -0
  45. package/esm2022/lib/implementations/napari-js/napari-spatial-scene.mjs +159 -0
  46. package/esm2022/lib/implementations/napari-js/napari-spatial-tiles.mjs +106 -1408
  47. package/esm2022/lib/implementations/napari-js/napari-spatial-tooltip.mjs +2 -2
  48. package/esm2022/lib/implementations/napari-js/napari-surface-scene.mjs +271 -0
  49. package/esm2022/lib/implementations/napari-js/napari-tile-client.mjs +562 -0
  50. package/esm2022/lib/implementations/napari-js/napari-tool-bridge.mjs +344 -0
  51. package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +361 -4184
  52. package/esm2022/lib/implementations/napari-js/napari-volume-scene.mjs +439 -0
  53. package/esm2022/lib/implementations/napari-js/napari-volume-z-handle.mjs +6 -6
  54. package/esm2022/lib/implementations/napari-js/region-overlay/overlay-projection.mjs +96 -0
  55. package/esm2022/lib/implementations/napari-js/region-overlay/region-edit.mjs +35 -0
  56. package/esm2022/lib/implementations/napari-js/region-overlay/region-svg-renderer.mjs +182 -0
  57. package/esm2022/lib/implementations/napari-js/spatial-tiles/categorical-lookup.mjs +30 -0
  58. package/esm2022/lib/implementations/napari-js/spatial-tiles/cell-layers.mjs +274 -0
  59. package/esm2022/lib/implementations/napari-js/spatial-tiles/density-layer.mjs +144 -0
  60. package/esm2022/lib/implementations/napari-js/spatial-tiles/layer-groups.mjs +165 -0
  61. package/esm2022/lib/implementations/napari-js/spatial-tiles/plan-context.mjs +78 -0
  62. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-hover.mjs +182 -0
  63. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-jobs.mjs +369 -0
  64. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-layers.mjs +306 -0
  65. package/esm2022/lib/implementations/osd/display-pipeline.mjs +102 -40
  66. package/esm2022/lib/implementations/osd/histogram-sampler.mjs +56 -31
  67. package/esm2022/lib/implementations/osd/openseadragon-viewer-options.mjs +128 -0
  68. package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +333 -1685
  69. package/esm2022/lib/implementations/osd/osd-coordinate-transform.mjs +1 -1
  70. package/esm2022/lib/implementations/osd/osd-coords.mjs +5 -6
  71. package/esm2022/lib/implementations/osd/osd-export.mjs +122 -0
  72. package/esm2022/lib/implementations/osd/osd-lib.mjs +15 -1
  73. package/esm2022/lib/implementations/osd/osd-navigator-chrome.mjs +205 -0
  74. package/esm2022/lib/implementations/osd/osd-pixel-readback.mjs +68 -0
  75. package/esm2022/lib/implementations/osd/osd-region-overlay-draw.mjs +153 -0
  76. package/esm2022/lib/implementations/osd/osd-region-overlay.mjs +185 -718
  77. package/esm2022/lib/implementations/osd/osd-scale-bar.mjs +52 -60
  78. package/esm2022/lib/implementations/osd/osd-tile-source.mjs +105 -0
  79. package/esm2022/lib/implementations/osd/osd-viewer-like.mjs +2 -0
  80. package/esm2022/lib/implementations/osd/osd-viewer-mount.mjs +44 -0
  81. package/esm2022/lib/implementations/osd/osd-viewport.mjs +184 -0
  82. package/esm2022/lib/implementations/osd/osd-zoom.mjs +7 -1
  83. package/esm2022/lib/implementations/osd/simple-source.mjs +395 -0
  84. package/esm2022/lib/implementations/osd/slice-cache.mjs +53 -48
  85. package/esm2022/lib/implementations/osd/tile-client.mjs +32 -11
  86. package/esm2022/lib/implementations/osd/tile-recolor.mjs +330 -0
  87. package/esm2022/lib/implementations/plotly/omics-trace-builders.mjs +161 -73
  88. package/esm2022/lib/implementations/plotly/plotly-coordinate-transform.mjs +1 -1
  89. package/esm2022/lib/implementations/plotly/plotly-image-loader.mjs +112 -0
  90. package/esm2022/lib/implementations/plotly/plotly-image-recolor.mjs +178 -0
  91. package/esm2022/lib/implementations/plotly/plotly-intensity-inset.mjs +33 -0
  92. package/esm2022/lib/implementations/plotly/plotly-isosurface-controls.mjs +83 -0
  93. package/esm2022/lib/implementations/plotly/plotly-layouts.mjs +121 -0
  94. package/esm2022/lib/implementations/plotly/plotly-readback.mjs +117 -0
  95. package/esm2022/lib/implementations/plotly/plotly-region-overlay.mjs +19 -10
  96. package/esm2022/lib/implementations/plotly/plotly-shape-projection.mjs +223 -0
  97. package/esm2022/lib/implementations/plotly/plotly-trace-builders.mjs +79 -19
  98. package/esm2022/lib/implementations/plotly/plotly-zoom-controller.mjs +223 -0
  99. package/esm2022/lib/implementations/plotly/plotly.service.mjs +439 -1655
  100. package/esm2022/lib/implementations/region-centroids.mjs +47 -0
  101. package/esm2022/lib/implementations/simple-slice-access.service.mjs +22 -12
  102. package/esm2022/lib/implementations/spatial-data-http/spatial-data-http.service.mjs +172 -92
  103. package/esm2022/lib/implementations/spatial-data-http/spatial-wire.mjs +103 -22
  104. package/esm2022/lib/implementations/tile-server/index.mjs +6 -0
  105. package/esm2022/lib/implementations/tile-server/native-histogram.mjs +30 -0
  106. package/esm2022/lib/implementations/tile-server/poll-descriptor.mjs +65 -0
  107. package/esm2022/lib/implementations/tile-server/tile-protocol.mjs +42 -0
  108. package/esm2022/lib/implementations/tile-server/transport.mjs +135 -0
  109. package/esm2022/lib/intensity/intensity-profile.mjs +107 -0
  110. package/esm2022/lib/intensity/intensity-profile.service.mjs +223 -0
  111. package/esm2022/lib/intensity-inset/intensity-inset.component.mjs +133 -0
  112. package/esm2022/lib/models/bezier.mjs +1 -11
  113. package/esm2022/lib/models/class-preset.mjs +41 -3
  114. package/esm2022/lib/models/geometry.mjs +27 -164
  115. package/esm2022/lib/models/polygon-edit.mjs +254 -0
  116. package/esm2022/lib/models/polygon-factory.mjs +118 -0
  117. package/esm2022/lib/models/region-clone.mjs +68 -0
  118. package/esm2022/lib/models/region-geojson.mjs +373 -0
  119. package/esm2022/lib/models/region.mjs +34 -33
  120. package/esm2022/lib/models/shape.mjs +18 -16
  121. package/esm2022/lib/plot-mode/contribution-host.mjs +297 -0
  122. package/esm2022/lib/plot-mode/plot-mode-controller.mjs +9 -6
  123. package/esm2022/lib/plot-mode/plot-type-menu.mjs +85 -0
  124. package/esm2022/lib/plot-mode/tool-params-model.mjs +87 -0
  125. package/esm2022/lib/plot.utilities.mjs +296 -473
  126. package/esm2022/lib/processing/image-crop.mjs +1 -1
  127. package/esm2022/lib/processing/processing-image.mjs +28 -15
  128. package/esm2022/lib/provide-visualization.mjs +40 -14
  129. package/esm2022/lib/region-editor/classes-panel/classes-panel.component.mjs +99 -0
  130. package/esm2022/lib/region-editor/file-stem.mjs +13 -0
  131. package/esm2022/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.mjs +118 -0
  132. package/esm2022/lib/region-editor/mask-export.service.mjs +98 -0
  133. package/esm2022/lib/region-editor/mask-raster.mjs +11 -5
  134. package/esm2022/lib/region-editor/region-color-dialog/region-color-dialog.component.mjs +56 -0
  135. package/esm2022/lib/region-editor/region-editor-help/region-editor-help.component.mjs +28 -0
  136. package/esm2022/lib/region-editor/region-editor.component.mjs +402 -651
  137. package/esm2022/lib/region-editor/region-metrics.mjs +68 -0
  138. package/esm2022/lib/region-editor/region-persistence.service.mjs +134 -0
  139. package/esm2022/lib/region-editor/region-table/region-table.component.mjs +153 -0
  140. package/esm2022/lib/region-editor/save-mask-dialog/save-mask-dialog.component.mjs +91 -0
  141. package/esm2022/lib/region-editor/save-regions-dialog/save-regions-dialog.component.mjs +92 -0
  142. package/esm2022/lib/region-ops.service.mjs +28 -70
  143. package/esm2022/lib/region-overlay/region-geometry.mjs +360 -0
  144. package/esm2022/lib/region-overlay/region-hit-test.mjs +103 -0
  145. package/esm2022/lib/region-overlay/svg-region-renderer.mjs +228 -0
  146. package/esm2022/lib/render-orchestrator.mjs +14 -11
  147. package/esm2022/lib/render-session.mjs +207 -0
  148. package/esm2022/lib/routing-visualizer.service.mjs +459 -411
  149. package/esm2022/lib/spatial/density-raster.mjs +14 -0
  150. package/esm2022/lib/spatial/embedding-compute-coordinator.mjs +239 -0
  151. package/esm2022/lib/spatial/embedding-compute.mjs +43 -10
  152. package/esm2022/lib/spatial/gene-search.mjs +1 -1
  153. package/esm2022/lib/spatial/glyphs.mjs +97 -0
  154. package/esm2022/lib/spatial/lod.mjs +187 -0
  155. package/esm2022/lib/spatial/spatial-controls.facade.mjs +200 -0
  156. package/esm2022/lib/spatial/spatial-density.mjs +25 -16
  157. package/esm2022/lib/spatial/spatial-encoding.mjs +26 -82
  158. package/esm2022/lib/spatial/spatial-expression.mjs +43 -42
  159. package/esm2022/lib/spatial/spatial-framing.mjs +1 -1
  160. package/esm2022/lib/spatial/spatial-heatmap.mjs +6 -3
  161. package/esm2022/lib/spatial/spatial-hover.mjs +5 -33
  162. package/esm2022/lib/spatial/spatial-panel-model.mjs +282 -0
  163. package/esm2022/lib/spatial/spatial-sections.mjs +1 -1
  164. package/esm2022/lib/spatial/spatial-selection.mjs +33 -46
  165. package/esm2022/lib/spatial/spatial-tile-merge.mjs +219 -0
  166. package/esm2022/lib/spatial/spatial-tiles.mjs +12 -648
  167. package/esm2022/lib/spatial/spatial-volume-image.mjs +2 -4
  168. package/esm2022/lib/spatial/stats.mjs +71 -0
  169. package/esm2022/lib/spatial/transcript-grouping.mjs +307 -0
  170. package/esm2022/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.mjs +150 -0
  171. package/esm2022/lib/spatial-controls/spatial-charts/chart-data-model.mjs +309 -0
  172. package/esm2022/lib/spatial-controls/spatial-charts/chart-help.mjs +145 -0
  173. package/esm2022/lib/spatial-controls/spatial-charts/plotly-chart-host.mjs +158 -0
  174. package/esm2022/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.mjs +47 -0
  175. package/esm2022/lib/spatial-controls/spatial-charts/spatial-charts.component.mjs +297 -802
  176. package/esm2022/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.mjs +89 -0
  177. package/esm2022/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.mjs +52 -0
  178. package/esm2022/lib/spatial-controls/spatial-controls.component.mjs +143 -1238
  179. package/esm2022/lib/spatial-controls/spatial-gene-picker.mjs +153 -0
  180. package/esm2022/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.mjs +241 -0
  181. package/esm2022/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.mjs +193 -0
  182. package/esm2022/lib/spatial-controls/spatial-key/spatial-key.component.mjs +132 -0
  183. package/esm2022/lib/spatial-controls/spatial-key/spatial-key.model.mjs +67 -0
  184. package/esm2022/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.mjs +147 -0
  185. package/esm2022/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.mjs +300 -0
  186. package/esm2022/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.mjs +370 -0
  187. package/esm2022/lib/store/class-color.util.mjs +46 -3
  188. package/esm2022/lib/store/region-history.mjs +146 -0
  189. package/esm2022/lib/store/region-scope-cache.mjs +140 -0
  190. package/esm2022/lib/store/region-selection.mjs +82 -0
  191. package/esm2022/lib/store/region-store.service.mjs +279 -675
  192. package/esm2022/lib/store/spatial-selection.service.mjs +2 -2
  193. package/esm2022/lib/store/visualizer-store.service.mjs +49 -71
  194. package/esm2022/lib/toast-outlets.mjs +5 -4
  195. package/esm2022/lib/toolbar/brush/brush-tool.service.mjs +92 -434
  196. package/esm2022/lib/toolbar/canvas-tools.mjs +20 -0
  197. package/esm2022/lib/toolbar/crop/slide-crop.mjs +26 -42
  198. package/esm2022/lib/toolbar/plot-type-selector/plot-type-selector.component.mjs +85 -0
  199. package/esm2022/lib/toolbar/region-tools/region-tool-buttons.mjs +74 -0
  200. package/esm2022/lib/toolbar/region-tools/region-tools.component.mjs +114 -0
  201. package/esm2022/lib/toolbar/segmentation/cell-segment-tool.service.mjs +74 -78
  202. package/esm2022/lib/toolbar/segmentation/cellpose-segmenter.service.mjs +50 -8
  203. package/esm2022/lib/toolbar/segmentation/onnx-sam-session.mjs +61 -42
  204. package/esm2022/lib/toolbar/segmentation/pending-calls.mjs +47 -0
  205. package/esm2022/lib/toolbar/segmentation/sam-model-registry.mjs +12 -4
  206. package/esm2022/lib/toolbar/segmentation/sam-onnx-core.mjs +70 -14
  207. package/esm2022/lib/toolbar/segmentation/sam-point-tool.service.mjs +135 -172
  208. package/esm2022/lib/toolbar/segmentation/sam-prompt.mjs +9 -90
  209. package/esm2022/lib/toolbar/segmentation/sam-session.service.mjs +183 -0
  210. package/esm2022/lib/toolbar/segmentation/sam-tool.service.mjs +95 -150
  211. package/esm2022/lib/toolbar/segmentation/segmentation-commit.mjs +12 -0
  212. package/esm2022/lib/toolbar/segmentation/segmentation-runner.mjs +108 -0
  213. package/esm2022/lib/toolbar/segmentation-tools/segmentation-tools.component.mjs +155 -0
  214. package/esm2022/lib/toolbar/stack-controls/stack-controls.component.mjs +81 -0
  215. package/esm2022/lib/toolbar/tool-kit/async-tool-status.mjs +37 -0
  216. package/esm2022/lib/toolbar/tool-kit/canvas-tool-manager.mjs +63 -0
  217. package/esm2022/lib/toolbar/tool-kit/canvas-tool.mjs +2 -0
  218. package/esm2022/lib/toolbar/tool-kit/frame-pixels.mjs +108 -0
  219. package/esm2022/lib/toolbar/tool-kit/mask-stroke-editor.mjs +306 -0
  220. package/esm2022/lib/toolbar/tool-kit/matrix-frame.mjs +61 -0
  221. package/esm2022/lib/toolbar/tool-kit/tool-overlay.mjs +140 -0
  222. package/esm2022/lib/toolbar/tool-kit/undo-gesture.mjs +24 -0
  223. package/esm2022/lib/toolbar/tool-slider/tool-slider.component.mjs +63 -0
  224. package/esm2022/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.mjs +50 -0
  225. package/esm2022/lib/toolbar/toolbar.component.mjs +68 -117
  226. package/esm2022/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.mjs +93 -115
  227. package/esm2022/lib/toolbar/view-controls/view-controls.component.mjs +107 -0
  228. package/esm2022/lib/toolbar/wand/wand-region-grow.mjs +321 -0
  229. package/esm2022/lib/toolbar/wand/wand-tool.service.mjs +121 -416
  230. package/esm2022/lib/toolbar/wand/wand.service.mjs +30 -894
  231. package/esm2022/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.mjs +48 -90
  232. package/esm2022/lib/util/mark-for-check.mjs +17 -0
  233. package/esm2022/lib/util/supersede.mjs +56 -0
  234. package/esm2022/lib/visualization.module.mjs +39 -141
  235. package/esm2022/lib/visualizer/floating-drag.directive.mjs +58 -0
  236. package/esm2022/lib/visualizer/region-actions.mjs +149 -0
  237. package/esm2022/lib/visualizer/region-load.mjs +60 -0
  238. package/esm2022/lib/visualizer/spatial-dataset-binder.mjs +163 -0
  239. package/esm2022/lib/visualizer/tool-modes.mjs +113 -0
  240. package/esm2022/lib/visualizer/viewer-shortcuts.mjs +167 -0
  241. package/esm2022/lib/visualizer/visualizer-context-menu.mjs +119 -0
  242. package/esm2022/lib/visualizer.component.mjs +480 -1902
  243. package/esm2022/lib/workers/spatial-math-ops.mjs +43 -0
  244. package/esm2022/lib/workers/spatial-math-worker.mjs +10 -0
  245. package/esm2022/lib/workers/spatial-math.mjs +190 -0
  246. package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-Csxlnq7I.mjs +41083 -0
  247. package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-Csxlnq7I.mjs.map +1 -0
  248. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-Bkujqg7m.mjs +238 -0
  249. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-Bkujqg7m.mjs.map +1 -0
  250. package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs +12 -0
  251. package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs.map +1 -0
  252. package/fesm2022/jax-data-science-sci-image-visualizer.mjs +41 -34430
  253. package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
  254. package/fesm2022/mask.worker.js +36 -917
  255. package/fesm2022/onnx-sam.worker.js +52 -16
  256. package/fesm2022/spatial-math.worker.js +471 -0
  257. package/fesm2022/tsne.worker.js +32 -15
  258. package/index.d.ts +13 -10
  259. package/lib/channel-histogram/channel-histogram.component.d.ts +53 -43
  260. package/lib/contracts/capabilities.contract.d.ts +4 -2
  261. package/lib/contracts/cell-segmenter.contract.d.ts +1 -0
  262. package/lib/contracts/channel-histogram-api.contract.d.ts +4 -0
  263. package/lib/contracts/color.d.ts +27 -0
  264. package/lib/contracts/colormap-lut.d.ts +19 -4
  265. package/lib/contracts/coordinate-transform.contract.d.ts +3 -3
  266. package/lib/contracts/display-types.d.ts +21 -0
  267. package/lib/contracts/instance-segmenter.contract.d.ts +5 -0
  268. package/lib/contracts/intensity.d.ts +13 -2
  269. package/lib/contracts/plot-type.d.ts +3 -1
  270. package/lib/contracts/ports/image-state.port.d.ts +6 -2
  271. package/lib/contracts/ports/preferences.port.d.ts +4 -0
  272. package/lib/contracts/ports/region-io.port.d.ts +1 -0
  273. package/lib/contracts/ports/spatial-data.port.d.ts +4 -10
  274. package/lib/contracts/ports/tile-access.port.d.ts +1 -0
  275. package/lib/contracts/region-editor-api.contract.d.ts +1 -1
  276. package/lib/contracts/region-overlay.contract.d.ts +5 -0
  277. package/lib/contracts/sam.contract.d.ts +7 -0
  278. package/lib/contracts/semantic-segmenter.contract.d.ts +6 -0
  279. package/lib/contracts/spatial-dataset.contract.d.ts +19 -6
  280. package/lib/contracts/toolbar-tool.contract.d.ts +1 -0
  281. package/lib/contracts/visualizer.contract.d.ts +221 -54
  282. package/lib/contracts/viz-config.d.ts +1 -0
  283. package/lib/geometry/contour.d.ts +24 -0
  284. package/lib/geometry/raster.d.ts +42 -0
  285. package/lib/geometry/ring.d.ts +67 -0
  286. package/lib/hex-color-picker/hex-color-picker.component.d.ts +61 -27
  287. package/lib/implementations/base-store-visualizer.d.ts +61 -15
  288. package/lib/implementations/napari-js/napari-axes-gizmo.d.ts +36 -0
  289. package/lib/implementations/napari-js/napari-display-state.d.ts +76 -0
  290. package/lib/implementations/napari-js/napari-helpers.d.ts +129 -0
  291. package/lib/implementations/napari-js/napari-image-2d-scene.d.ts +162 -0
  292. package/lib/implementations/napari-js/napari-loading-badge.d.ts +0 -1
  293. package/lib/implementations/napari-js/napari-loading-state.d.ts +30 -0
  294. package/lib/implementations/napari-js/napari-region-overlay.d.ts +62 -70
  295. package/lib/implementations/napari-js/napari-scene.d.ts +93 -0
  296. package/lib/implementations/napari-js/napari-spatial-2d-scene.d.ts +163 -0
  297. package/lib/implementations/napari-js/napari-spatial-3d-scene.d.ts +212 -0
  298. package/lib/implementations/napari-js/napari-spatial-encoding.d.ts +114 -0
  299. package/lib/implementations/napari-js/napari-spatial-hover.d.ts +89 -0
  300. package/lib/implementations/napari-js/napari-spatial-scene.d.ts +118 -0
  301. package/lib/implementations/napari-js/napari-spatial-tiles.d.ts +56 -263
  302. package/lib/implementations/napari-js/napari-spatial-tooltip.d.ts +1 -1
  303. package/lib/implementations/napari-js/napari-surface-scene.d.ts +76 -0
  304. package/lib/implementations/napari-js/napari-tile-client.d.ts +214 -0
  305. package/lib/implementations/napari-js/napari-tool-bridge.d.ts +179 -0
  306. package/lib/implementations/napari-js/napari-visualizer.service.d.ts +121 -878
  307. package/lib/implementations/napari-js/napari-volume-scene.d.ts +104 -0
  308. package/lib/implementations/napari-js/napari-volume-z-handle.d.ts +8 -12
  309. package/lib/implementations/napari-js/region-overlay/overlay-projection.d.ts +59 -0
  310. package/lib/implementations/napari-js/region-overlay/region-edit.d.ts +15 -0
  311. package/lib/implementations/napari-js/region-overlay/region-svg-renderer.d.ts +54 -0
  312. package/lib/implementations/napari-js/spatial-tiles/categorical-lookup.d.ts +26 -0
  313. package/lib/implementations/napari-js/spatial-tiles/cell-layers.d.ts +70 -0
  314. package/lib/implementations/napari-js/spatial-tiles/density-layer.d.ts +61 -0
  315. package/lib/implementations/napari-js/spatial-tiles/layer-groups.d.ts +67 -0
  316. package/lib/implementations/napari-js/spatial-tiles/plan-context.d.ts +38 -0
  317. package/lib/implementations/napari-js/spatial-tiles/transcript-hover.d.ts +71 -0
  318. package/lib/implementations/napari-js/spatial-tiles/transcript-jobs.d.ts +105 -0
  319. package/lib/implementations/napari-js/spatial-tiles/transcript-layers.d.ts +56 -0
  320. package/lib/implementations/osd/display-pipeline.d.ts +38 -9
  321. package/lib/implementations/osd/histogram-sampler.d.ts +22 -12
  322. package/lib/implementations/osd/openseadragon-viewer-options.d.ts +35 -0
  323. package/lib/implementations/osd/openseadragon-visualizer.service.d.ts +78 -354
  324. package/lib/implementations/osd/osd-coordinate-transform.d.ts +2 -1
  325. package/lib/implementations/osd/osd-coords.d.ts +6 -4
  326. package/lib/implementations/osd/osd-export.d.ts +36 -0
  327. package/lib/implementations/osd/osd-lib.d.ts +7 -0
  328. package/lib/implementations/osd/osd-navigator-chrome.d.ts +69 -0
  329. package/lib/implementations/osd/osd-pixel-readback.d.ts +22 -0
  330. package/lib/implementations/osd/osd-region-overlay-draw.d.ts +37 -0
  331. package/lib/implementations/osd/osd-region-overlay.d.ts +36 -48
  332. package/lib/implementations/osd/osd-scale-bar.d.ts +8 -6
  333. package/lib/implementations/osd/osd-tile-source.d.ts +49 -0
  334. package/lib/implementations/osd/osd-viewer-like.d.ts +100 -0
  335. package/lib/implementations/osd/osd-viewer-mount.d.ts +14 -0
  336. package/lib/implementations/osd/osd-viewport.d.ts +77 -0
  337. package/lib/implementations/osd/osd-zoom.d.ts +6 -0
  338. package/lib/implementations/osd/simple-source.d.ts +161 -0
  339. package/lib/implementations/osd/slice-cache.d.ts +12 -3
  340. package/lib/implementations/osd/tile-client.d.ts +11 -14
  341. package/lib/implementations/osd/tile-recolor.d.ts +141 -0
  342. package/lib/implementations/plotly/omics-trace-builders.d.ts +32 -20
  343. package/lib/implementations/plotly/plotly-image-loader.d.ts +49 -0
  344. package/lib/implementations/plotly/plotly-image-recolor.d.ts +75 -0
  345. package/lib/implementations/plotly/plotly-intensity-inset.d.ts +8 -0
  346. package/lib/implementations/plotly/plotly-isosurface-controls.d.ts +38 -0
  347. package/lib/implementations/plotly/plotly-layouts.d.ts +188 -0
  348. package/lib/implementations/plotly/plotly-readback.d.ts +41 -0
  349. package/lib/implementations/plotly/plotly-region-overlay.d.ts +2 -2
  350. package/lib/implementations/plotly/plotly-shape-projection.d.ts +92 -0
  351. package/lib/implementations/plotly/plotly-trace-builders.d.ts +23 -12
  352. package/lib/implementations/plotly/plotly-zoom-controller.d.ts +86 -0
  353. package/lib/implementations/plotly/plotly.service.d.ts +136 -401
  354. package/lib/implementations/region-centroids.d.ts +14 -0
  355. package/lib/implementations/simple-slice-access.service.d.ts +7 -4
  356. package/lib/implementations/spatial-data-http/spatial-data-http.service.d.ts +42 -18
  357. package/lib/implementations/spatial-data-http/spatial-wire.d.ts +34 -9
  358. package/lib/implementations/tile-server/index.d.ts +5 -0
  359. package/lib/implementations/tile-server/native-histogram.d.ts +25 -0
  360. package/lib/implementations/tile-server/poll-descriptor.d.ts +39 -0
  361. package/lib/implementations/tile-server/tile-protocol.d.ts +80 -0
  362. package/lib/implementations/tile-server/transport.d.ts +62 -0
  363. package/lib/intensity/intensity-profile.d.ts +66 -0
  364. package/lib/intensity/intensity-profile.service.d.ts +108 -0
  365. package/lib/intensity-inset/intensity-inset.component.d.ts +58 -0
  366. package/lib/models/bezier.d.ts +0 -5
  367. package/lib/models/class-preset.d.ts +18 -0
  368. package/lib/models/geometry.d.ts +14 -48
  369. package/lib/models/polygon-edit.d.ts +72 -0
  370. package/lib/models/polygon-factory.d.ts +40 -0
  371. package/lib/models/region-clone.d.ts +20 -0
  372. package/lib/models/region-geojson.d.ts +17 -0
  373. package/lib/models/region.d.ts +40 -4
  374. package/lib/models/shape.d.ts +8 -0
  375. package/lib/plot-mode/contribution-host.d.ts +125 -0
  376. package/lib/plot-mode/plot-type-menu.d.ts +60 -0
  377. package/lib/plot-mode/tool-params-model.d.ts +49 -0
  378. package/lib/plot.utilities.d.ts +19 -30
  379. package/lib/processing/processing-image.d.ts +5 -2
  380. package/lib/provide-visualization.d.ts +19 -2
  381. package/lib/region-editor/classes-panel/classes-panel.component.d.ts +56 -0
  382. package/lib/region-editor/file-stem.d.ts +7 -0
  383. package/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.d.ts +45 -0
  384. package/lib/region-editor/mask-export.service.d.ts +54 -0
  385. package/lib/region-editor/mask-raster.d.ts +2 -8
  386. package/lib/region-editor/region-color-dialog/region-color-dialog.component.d.ts +29 -0
  387. package/lib/region-editor/region-editor-help/region-editor-help.component.d.ts +11 -0
  388. package/lib/region-editor/region-editor.component.d.ts +166 -199
  389. package/lib/region-editor/region-metrics.d.ts +26 -0
  390. package/lib/region-editor/region-persistence.service.d.ts +69 -0
  391. package/lib/region-editor/region-table/region-table.component.d.ts +83 -0
  392. package/lib/region-editor/save-mask-dialog/save-mask-dialog.component.d.ts +36 -0
  393. package/lib/region-editor/save-regions-dialog/save-regions-dialog.component.d.ts +37 -0
  394. package/lib/region-ops.service.d.ts +1 -7
  395. package/lib/region-overlay/region-geometry.d.ts +157 -0
  396. package/lib/region-overlay/region-hit-test.d.ts +38 -0
  397. package/lib/region-overlay/svg-region-renderer.d.ts +110 -0
  398. package/lib/render-orchestrator.d.ts +6 -2
  399. package/lib/render-session.d.ts +75 -0
  400. package/lib/routing-visualizer.service.d.ts +110 -58
  401. package/lib/spatial/density-raster.d.ts +6 -0
  402. package/lib/spatial/embedding-compute-coordinator.d.ts +123 -0
  403. package/lib/spatial/embedding-compute.d.ts +21 -2
  404. package/lib/spatial/glyphs.d.ts +16 -0
  405. package/lib/spatial/lod.d.ts +94 -0
  406. package/lib/spatial/spatial-controls.facade.d.ts +64 -0
  407. package/lib/spatial/spatial-density.d.ts +15 -5
  408. package/lib/spatial/spatial-encoding.d.ts +11 -44
  409. package/lib/spatial/spatial-expression.d.ts +40 -22
  410. package/lib/spatial/spatial-framing.d.ts +1 -0
  411. package/lib/spatial/spatial-heatmap.d.ts +2 -0
  412. package/lib/spatial/spatial-hover.d.ts +4 -16
  413. package/lib/spatial/spatial-panel-model.d.ts +135 -0
  414. package/lib/spatial/spatial-selection.d.ts +21 -26
  415. package/lib/spatial/spatial-tile-merge.d.ts +41 -0
  416. package/lib/spatial/spatial-tiles.d.ts +9 -256
  417. package/lib/spatial/stats.d.ts +38 -0
  418. package/lib/spatial/transcript-grouping.d.ts +119 -0
  419. package/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.d.ts +64 -0
  420. package/lib/spatial-controls/spatial-charts/chart-data-model.d.ts +153 -0
  421. package/lib/spatial-controls/spatial-charts/chart-help.d.ts +69 -0
  422. package/lib/spatial-controls/spatial-charts/plotly-chart-host.d.ts +98 -0
  423. package/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.d.ts +26 -0
  424. package/lib/spatial-controls/spatial-charts/spatial-charts.component.d.ts +101 -260
  425. package/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.d.ts +43 -0
  426. package/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.d.ts +27 -0
  427. package/lib/spatial-controls/spatial-controls.component.d.ts +68 -448
  428. package/lib/spatial-controls/spatial-gene-picker.d.ts +86 -0
  429. package/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.d.ts +102 -0
  430. package/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.d.ts +72 -0
  431. package/lib/spatial-controls/spatial-key/spatial-key.component.d.ts +66 -0
  432. package/lib/spatial-controls/spatial-key/spatial-key.model.d.ts +33 -0
  433. package/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.d.ts +64 -0
  434. package/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.d.ts +117 -0
  435. package/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.d.ts +142 -0
  436. package/lib/store/class-color.util.d.ts +35 -1
  437. package/lib/store/region-history.d.ts +66 -0
  438. package/lib/store/region-scope-cache.d.ts +63 -0
  439. package/lib/store/region-selection.d.ts +36 -0
  440. package/lib/store/region-store.service.d.ts +104 -112
  441. package/lib/store/visualizer-store.service.d.ts +22 -33
  442. package/lib/toast-outlets.d.ts +4 -3
  443. package/lib/toolbar/brush/brush-tool.service.d.ts +31 -98
  444. package/lib/toolbar/canvas-tools.d.ts +20 -0
  445. package/lib/toolbar/crop/slide-crop.d.ts +10 -4
  446. package/lib/toolbar/plot-type-selector/plot-type-selector.component.d.ts +38 -0
  447. package/lib/toolbar/region-tools/region-tool-buttons.d.ts +21 -0
  448. package/lib/toolbar/region-tools/region-tools.component.d.ts +60 -0
  449. package/lib/toolbar/segmentation/cell-segment-tool.service.d.ts +10 -14
  450. package/lib/toolbar/segmentation/cellpose-segmenter.service.d.ts +12 -2
  451. package/lib/toolbar/segmentation/onnx-sam-session.d.ts +22 -3
  452. package/lib/toolbar/segmentation/pending-calls.d.ts +31 -0
  453. package/lib/toolbar/segmentation/sam-model-registry.d.ts +9 -3
  454. package/lib/toolbar/segmentation/sam-onnx-core.d.ts +18 -5
  455. package/lib/toolbar/segmentation/sam-point-tool.service.d.ts +46 -32
  456. package/lib/toolbar/segmentation/sam-prompt.d.ts +7 -31
  457. package/lib/toolbar/segmentation/sam-session.service.d.ts +74 -0
  458. package/lib/toolbar/segmentation/sam-tool.service.d.ts +23 -30
  459. package/lib/toolbar/segmentation/segmentation-commit.d.ts +8 -0
  460. package/lib/toolbar/segmentation/segmentation-runner.d.ts +52 -0
  461. package/lib/toolbar/segmentation-tools/segmentation-tools.component.d.ts +87 -0
  462. package/lib/toolbar/stack-controls/stack-controls.component.d.ts +40 -0
  463. package/lib/toolbar/tool-kit/async-tool-status.d.ts +21 -0
  464. package/lib/toolbar/tool-kit/canvas-tool-manager.d.ts +36 -0
  465. package/lib/toolbar/tool-kit/canvas-tool.d.ts +86 -0
  466. package/lib/toolbar/tool-kit/frame-pixels.d.ts +45 -0
  467. package/lib/toolbar/tool-kit/mask-stroke-editor.d.ts +125 -0
  468. package/lib/toolbar/tool-kit/matrix-frame.d.ts +40 -0
  469. package/lib/toolbar/tool-kit/tool-overlay.d.ts +60 -0
  470. package/lib/toolbar/tool-kit/undo-gesture.d.ts +17 -0
  471. package/lib/toolbar/tool-slider/tool-slider.component.d.ts +33 -0
  472. package/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.d.ts +24 -0
  473. package/lib/toolbar/toolbar.component.d.ts +47 -83
  474. package/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.d.ts +33 -40
  475. package/lib/toolbar/view-controls/view-controls.component.d.ts +54 -0
  476. package/lib/toolbar/wand/wand-region-grow.d.ts +49 -0
  477. package/lib/toolbar/wand/wand-tool.service.d.ts +39 -124
  478. package/lib/toolbar/wand/wand.service.d.ts +22 -116
  479. package/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.d.ts +17 -37
  480. package/lib/util/mark-for-check.d.ts +11 -0
  481. package/lib/util/supersede.d.ts +53 -0
  482. package/lib/visualization.module.d.ts +18 -39
  483. package/lib/visualizer/floating-drag.directive.d.ts +30 -0
  484. package/lib/visualizer/region-actions.d.ts +54 -0
  485. package/lib/visualizer/region-load.d.ts +27 -0
  486. package/lib/visualizer/spatial-dataset-binder.d.ts +74 -0
  487. package/lib/visualizer/tool-modes.d.ts +49 -0
  488. package/lib/visualizer/viewer-shortcuts.d.ts +71 -0
  489. package/lib/visualizer/visualizer-context-menu.d.ts +55 -0
  490. package/lib/visualizer.component.d.ts +201 -447
  491. package/lib/workers/spatial-math-ops.d.ts +65 -0
  492. package/lib/workers/spatial-math-worker.d.ts +7 -0
  493. package/lib/workers/spatial-math.d.ts +74 -0
  494. package/package.json +12 -3
  495. package/src/lib/styles/_viz-icons-rules.scss +73 -0
  496. package/src/lib/styles/viz-icons.scss +14 -0
  497. package/esm2022/lib/implementations/napari-js/napari-axes-labels.mjs +0 -97
  498. package/esm2022/lib/implementations/napari-js/napari-navigator.mjs +0 -195
  499. package/esm2022/lib/implementations/napari-js/napari-scale-bar.mjs +0 -92
  500. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs +0 -329
  501. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs.map +0 -1
  502. package/lib/implementations/napari-js/napari-axes-labels.d.ts +0 -49
  503. package/lib/implementations/napari-js/napari-navigator.d.ts +0 -72
  504. package/lib/implementations/napari-js/napari-scale-bar.d.ts +0 -35
  505. package/src/lib/assets/cell-detection.svg +0 -37
  506. package/src/lib/assets/click.svg +0 -1
  507. package/src/lib/assets/colormap-luts.json +0 -1
  508. package/src/lib/assets/edit-selection-white.svg +0 -47
  509. package/src/lib/assets/icons/colormap-earth.png +0 -0
  510. package/src/lib/assets/icons/colormap-placeholder.png +0 -0
  511. package/src/lib/assets/icons/colormap-pubu.png +0 -0
  512. package/src/lib/assets/interactive-segmentation-cursor.svg +0 -1
  513. package/src/lib/assets/picture-segmentation.svg +0 -43
  514. package/src/lib/assets/test/download-379.svg +0 -1
  515. package/src/lib/assets/test/download-98.svg +0 -1
  516. package/src/lib/assets/test/json-1.svg +0 -1
  517. package/src/lib/assets/test/load-53.svg +0 -1
  518. package/src/lib/assets/test/mask-44.svg +0 -1
  519. package/src/lib/assets/test/mask-download-44.svg +0 -15
  520. package/src/lib/assets/test/mask-save-44.svg +0 -11
  521. package/src/lib/assets/test/overlay-1.svg +0 -1
  522. package/src/lib/assets/test/overlay-4.svg +0 -1
  523. package/src/lib/assets/test/region-26.svg +0 -1
  524. package/src/lib/assets/test/save-56.svg +0 -1
  525. package/src/lib/assets/test/upload-43.svg +0 -1
package/index.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  /**
2
- * Public API of the jax-image-visualization library. External consumers import
3
- * ONLY from here (`@jax-data-science/sci-image-visualizer`); everything else under `lib/` is
4
- * internal. The surface is contracts + tokens + neutral models + the Angular
5
- * module, plus the routing service the host's composition root binds the tokens
6
- * to (`useExisting`).
2
+ * Public API of `@jax-data-science/sci-image-visualizer`. External consumers import
3
+ * ONLY from here; everything else under `lib/` is internal. The surface is
4
+ * contracts + tokens + neutral models + the Angular module and components, plus
5
+ * `provideVisualization()` for an isolated, component-scoped viewer. The library
6
+ * binds the tokens itself (VisualizationModule / provideVisualization), so a host
7
+ * injects `VISUALIZER`, `REGION_EDITOR_API` and `CHANNEL_HISTOGRAM_API` and supplies
8
+ * only the ports and `VIZ_CONFIG`.
7
9
  */
8
10
  export * from './lib/contracts/visualizer.contract';
9
11
  export * from './lib/contracts/region-editor-api.contract';
@@ -26,13 +28,12 @@ export * from './lib/contracts/display-types';
26
28
  export * from './lib/contracts/sam.contract';
27
29
  export * from './lib/contracts/cell-segmenter.contract';
28
30
  export { CellposeSegmenterService } from './lib/toolbar/segmentation/cellpose-segmenter.service';
29
- export { SpatialDataHttpService, SupersededError } from './lib/implementations/spatial-data-http/spatial-data-http.service';
31
+ export { SpatialDataHttpService, SupersededError, } from './lib/implementations/spatial-data-http/spatial-data-http.service';
30
32
  export { SPATIAL_WIRE_VERSION, isLittleEndian, assertManifestVersion, datasetFromManifest, decodeCoords, decodeRadius, decodeColumn, decodeFeatureVector, decodePolygons, } from './lib/implementations/spatial-data-http/spatial-wire';
31
33
  export type { SpatialManifest, SpatialDatasetSummary, SpatialRadiusSpec, } from './lib/implementations/spatial-data-http/spatial-wire';
32
- export { encodeCategorical, encodeContinuous, resolveCategoryColors, contrastWindow, markerDiameters, toRgbaTuples, lutFor, DEFAULT_CATEGORICAL_PALETTE, DEFAULT_MUTED_OPACITY, MISSING_COLOR, } from './lib/spatial/spatial-encoding';
33
- export type { RGBA, CategoricalEncodingOptions, ContinuousEncodingOptions, } from './lib/spatial/spatial-encoding';
34
+ export { encodeCategorical, encodeContinuous, resolveCategoryColors, contrastWindow, markerDiameters, lutFor, DEFAULT_CATEGORICAL_PALETTE, DEFAULT_MUTED_OPACITY, MISSING_COLOR, } from './lib/spatial/spatial-encoding';
35
+ export type { RGBA, CategoricalEncodingOptions, ContinuousEncodingOptions } from './lib/spatial/spatial-encoding';
34
36
  export { selectInRegions, selectByCategory, mutedFromSelection, pointInRing, emptySelection, countMask, maskToIndices, } from './lib/spatial/spatial-selection';
35
- export type { SpatialSelectionMask } from './lib/spatial/spatial-selection';
36
37
  export { SpatialSelectionStore } from './lib/store/spatial-selection.service';
37
38
  export * from './lib/contracts/instance-segmenter.contract';
38
39
  export * from './lib/contracts/semantic-segmenter.contract';
@@ -41,17 +42,19 @@ export { cropImage, CropImageOptions } from './lib/processing/image-crop';
41
42
  export { ImageConverterService } from './lib/processing/image-converter.service';
42
43
  export { SAM_MODELS, DEFAULT_SAM_MODEL_ID, getSamModel, isSamModelReady, setSamModelUrls, setDefaultSamModel, getDefaultSamModelId, } from './lib/toolbar/segmentation/sam-model-registry';
43
44
  export { setOrtWasmBase, getOrtWasmBase } from './lib/toolbar/segmentation/ort-runtime-config';
45
+ export { clearSamModelCache } from './lib/toolbar/segmentation/sam-onnx-core';
44
46
  export * from './lib/models/region';
45
47
  export * from './lib/models/class-preset';
46
48
  export { ShapeSelection } from './lib/models/shape';
47
49
  export { VisualizationModule } from './lib/visualization.module';
48
50
  export { RoutingVisualizerService } from './lib/routing-visualizer.service';
49
51
  export { provideVisualization } from './lib/provide-visualization';
52
+ export { VIZ_TOAST_KEY, VIZ_ALERT_TOAST_KEY } from './lib/toast-outlets';
50
53
  export { VisualizerComponent } from './lib/visualizer.component';
51
54
  export { RegionEditorComponent } from './lib/region-editor/region-editor.component';
52
55
  export { HexColorPickerComponent } from './lib/hex-color-picker/hex-color-picker.component';
53
56
  export { ChannelHistogramComponent } from './lib/channel-histogram/channel-histogram.component';
54
- export { SpatialControlsComponent, } from './lib/spatial-controls/spatial-controls.component';
57
+ export { SpatialControlsComponent } from './lib/spatial-controls/spatial-controls.component';
55
58
  export type { SpatialLegendEntry } from './lib/spatial-controls/spatial-controls.component';
56
59
  export { SpatialChartsComponent } from './lib/spatial-controls/spatial-charts/spatial-charts.component';
57
60
  export { buildOmicsTraces, omicsLayout, benefitsFromGrouping, } from './lib/implementations/plotly/omics-trace-builders';
@@ -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;
@@ -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>;
@@ -30,7 +30,7 @@ export interface IRegionEditorApi {
30
30
  * preserved (the editor must not be able to drop them). */
31
31
  setAnnotationRegions(regions: Region[], showRegionLabel?: boolean, isRegionSaveOn?: boolean, fillColor?: string): void;
32
32
  /** Change signal — fires whenever regions change on any backend. */
33
- getRegionUpdateEvent(): Observable<any[]>;
33
+ getRegionUpdateEvent(): Observable<Region[]>;
34
34
  /** The currently-selected annotation regions (profile lines never appear). */
35
35
  getSelectedRegions$(): Observable<Region[]>;
36
36
  /** Set the selection to these regions. */
@@ -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;
@@ -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). */
@@ -25,6 +25,10 @@ export interface SemanticRegion {
25
25
  /** Area in pixels, holes already subtracted. */
26
26
  area: number;
27
27
  }
28
+ /**
29
+ * The result of one {@link ISemanticSegmenter} run: the class layers found, in the pixel
30
+ * frame of the `width × height` image that was segmented.
31
+ */
28
32
  export interface SemanticSegmentation {
29
33
  regions: SemanticRegion[];
30
34
  /** Total pixels assigned to each class, indexed by class id. */
@@ -43,6 +47,7 @@ export interface SemanticSegmentation {
43
47
  */
44
48
  unassignedFraction: number;
45
49
  }
50
+ /** Options for one {@link ISemanticSegmenter} run. */
46
51
  export interface SemanticSegmentOptions {
47
52
  /** Which registered model to run. Defaults to the registry's default. */
48
53
  modelId?: string;
@@ -90,6 +95,7 @@ export interface SemanticSegmentProgress {
90
95
  /** Human-readable phase, e.g. 'Segmenting patch 3/8…'. */
91
96
  onStatus?: (status: string) => void;
92
97
  }
98
+ /** A segmenter that assigns every pixel a class and returns the class regions. */
93
99
  export interface ISemanticSegmenter {
94
100
  /** Assign every pixel a class and return the resulting regions. */
95
101
  segmentSemantic(image: {
@@ -99,6 +99,7 @@ export interface ContinuousColumnMeta extends SpatialColumnMetaBase {
99
99
  min?: number;
100
100
  max?: number;
101
101
  }
102
+ /** Descriptor of one per-observation column, discriminated by `kind`. */
102
103
  export type SpatialColumnMeta = CategoricalColumnMeta | ContinuousColumnMeta;
103
104
  /**
104
105
  * Code meaning "this observation has no category" (unassigned / filtered out /
@@ -120,8 +121,11 @@ export interface ContinuousColumn {
120
121
  /** Length = {@link SpatialObservations.count}. */
121
122
  values: Float32Array;
122
123
  }
124
+ /** A loaded column with its values, discriminated by `meta.kind`. */
123
125
  export type SpatialColumn = CategoricalColumn | ContinuousColumn;
126
+ /** Narrow a loaded column to a categorical one. */
124
127
  export declare function isCategoricalColumn(c: SpatialColumn): c is CategoricalColumn;
128
+ /** Narrow a loaded column to a continuous one. */
125
129
  export declare function isContinuousColumn(c: SpatialColumn): c is ContinuousColumn;
126
130
  /**
127
131
  * The feature (gene) matrix, described but never delivered whole. Vectors come
@@ -182,11 +186,6 @@ export interface SpatialImageRef {
182
186
  mppX?: number;
183
187
  mppY?: number;
184
188
  }
185
- /**
186
- * A spatial-omics dataset: everything cheap enough to hold resident. Column and
187
- * feature *values*, and polygon *geometry*, are fetched through
188
- * {@link SpatialDataPort} as they are displayed.
189
- */
190
189
  /**
191
190
  * A precomputed low-dimensional embedding over the SAME observations — UMAP, t-SNE, PCA.
192
191
  *
@@ -370,7 +369,6 @@ export interface SpatialTranscriptTile {
370
369
  /** Index into the `genes` list the tile was requested with. */
371
370
  gene: Uint16Array;
372
371
  }
373
- /** Transcript totals for an estimate of how many markers a selection would draw. */
374
372
  /** The per-gene levels: each level's bin and tile size, on the all-gene pyramid's grid. */
375
373
  export interface SpatialTranscriptGeneBinsMeta {
376
374
  origin: [number, number];
@@ -399,6 +397,7 @@ export interface SpatialMarkerGenes {
399
397
  }[];
400
398
  }[];
401
399
  }
400
+ /** Transcript totals for an estimate of how many markers a selection would draw. */
402
401
  export interface SpatialTranscriptCounts {
403
402
  /** Total transcripts per requested gene, over the whole dataset. */
404
403
  counts: Record<string, number>;
@@ -413,6 +412,11 @@ export interface SpatialDensityRaster {
413
412
  genes: string[];
414
413
  values: Float32Array;
415
414
  }
415
+ /**
416
+ * A spatial-omics dataset: everything cheap enough to hold resident. Column and
417
+ * feature *values*, and polygon *geometry*, are fetched through
418
+ * {@link SpatialDataPort} as they are displayed.
419
+ */
416
420
  export interface SpatialDataset {
417
421
  /** Stable id — the key the port's lazy accessors are scoped to. */
418
422
  id: string;
@@ -473,6 +477,15 @@ export interface SpatialVolumeMeta {
473
477
  /** World size of one voxel per axis, in the observations' units. */
474
478
  voxelSize: [number, number, number];
475
479
  }
480
+ /**
481
+ * A selection over a dataset's N observations: `mask[i] === 1` when observation `i` is
482
+ * selected, and `count` the number selected. Pure data, so it lives with the dataset
483
+ * contract; the selection logic that builds one is in `spatial/spatial-selection.ts`.
484
+ */
485
+ export interface SpatialSelectionMask {
486
+ mask: Uint8Array;
487
+ count: number;
488
+ }
476
489
  /** Look a column's descriptor up by name. */
477
490
  export declare function findColumnMeta(dataset: SpatialDataset, name: string): SpatialColumnMeta | undefined;
478
491
  export {};