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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (579) hide show
  1. package/README.md +201 -460
  2. package/esm2022/index.mjs +34 -15
  3. package/esm2022/lib/channel-histogram/channel-histogram.component.mjs +163 -91
  4. package/esm2022/lib/contracts/capabilities.contract.mjs +4 -3
  5. package/esm2022/lib/contracts/cell-segmenter.contract.mjs +1 -1
  6. package/esm2022/lib/contracts/channel-histogram-api.contract.mjs +5 -1
  7. package/esm2022/lib/contracts/color.mjs +60 -0
  8. package/esm2022/lib/contracts/colormap-lut.mjs +213 -57
  9. package/esm2022/lib/contracts/coordinate-transform.contract.mjs +1 -1
  10. package/esm2022/lib/contracts/display-types.mjs +11 -1
  11. package/esm2022/lib/contracts/image.contract.mjs +1 -1
  12. package/esm2022/lib/contracts/instance-segmenter.contract.mjs +1 -1
  13. package/esm2022/lib/contracts/intensity.mjs +48 -5
  14. package/esm2022/lib/contracts/plot-type-contribution.contract.mjs +1 -1
  15. package/esm2022/lib/contracts/plot-type.mjs +134 -17
  16. package/esm2022/lib/contracts/ports/image-state.port.mjs +4 -1
  17. package/esm2022/lib/contracts/ports/preferences.port.mjs +5 -1
  18. package/esm2022/lib/contracts/ports/region-io.port.mjs +2 -1
  19. package/esm2022/lib/contracts/ports/spatial-data.port.mjs +5 -1
  20. package/esm2022/lib/contracts/ports/tile-access.port.mjs +2 -1
  21. package/esm2022/lib/contracts/region-editor-api.contract.mjs +1 -1
  22. package/esm2022/lib/contracts/region-overlay.contract.mjs +1 -1
  23. package/esm2022/lib/contracts/region-store.contract.mjs +1 -1
  24. package/esm2022/lib/contracts/sam.contract.mjs +1 -1
  25. package/esm2022/lib/contracts/section-view.contract.mjs +2 -0
  26. package/esm2022/lib/contracts/semantic-segmenter.contract.mjs +1 -1
  27. package/esm2022/lib/contracts/spatial-dataset.contract.mjs +3 -1
  28. package/esm2022/lib/contracts/toolbar-tool.contract.mjs +6 -4
  29. package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
  30. package/esm2022/lib/contracts/viz-config.mjs +2 -1
  31. package/esm2022/lib/geometry/contour.mjs +63 -0
  32. package/esm2022/lib/geometry/loft.mjs +128 -0
  33. package/esm2022/lib/geometry/polylabel.mjs +156 -0
  34. package/esm2022/lib/geometry/raster.mjs +98 -0
  35. package/esm2022/lib/geometry/reconstruct.mjs +315 -0
  36. package/esm2022/lib/geometry/reslice-image.mjs +57 -0
  37. package/esm2022/lib/geometry/ring.mjs +201 -0
  38. package/esm2022/lib/geometry/section.mjs +215 -0
  39. package/esm2022/lib/hex-color-picker/hex-color-picker.component.mjs +202 -102
  40. package/esm2022/lib/implementations/base-store-visualizer.mjs +201 -48
  41. package/esm2022/lib/implementations/napari-js/napari-axes-gizmo.mjs +65 -0
  42. package/esm2022/lib/implementations/napari-js/napari-display-state.mjs +136 -0
  43. package/esm2022/lib/implementations/napari-js/napari-helpers.mjs +199 -0
  44. package/esm2022/lib/implementations/napari-js/napari-image-2d-scene.mjs +602 -0
  45. package/esm2022/lib/implementations/napari-js/napari-loading-badge.mjs +12 -9
  46. package/esm2022/lib/implementations/napari-js/napari-loading-state.mjs +83 -0
  47. package/esm2022/lib/implementations/napari-js/napari-region-mesh-pointer.mjs +100 -0
  48. package/esm2022/lib/implementations/napari-js/napari-region-overlay.mjs +180 -591
  49. package/esm2022/lib/implementations/napari-js/napari-scene.mjs +2 -0
  50. package/esm2022/lib/implementations/napari-js/napari-spatial-2d-scene.mjs +614 -0
  51. package/esm2022/lib/implementations/napari-js/napari-spatial-3d-scene.mjs +769 -0
  52. package/esm2022/lib/implementations/napari-js/napari-spatial-encoding.mjs +199 -0
  53. package/esm2022/lib/implementations/napari-js/napari-spatial-hover.mjs +270 -0
  54. package/esm2022/lib/implementations/napari-js/napari-spatial-scene.mjs +159 -0
  55. package/esm2022/lib/implementations/napari-js/napari-spatial-tiles.mjs +106 -1408
  56. package/esm2022/lib/implementations/napari-js/napari-spatial-tooltip.mjs +2 -2
  57. package/esm2022/lib/implementations/napari-js/napari-surface-scene.mjs +271 -0
  58. package/esm2022/lib/implementations/napari-js/napari-tile-client.mjs +562 -0
  59. package/esm2022/lib/implementations/napari-js/napari-tool-bridge.mjs +347 -0
  60. package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +427 -4207
  61. package/esm2022/lib/implementations/napari-js/napari-volume-region-meshes.mjs +129 -0
  62. package/esm2022/lib/implementations/napari-js/napari-volume-scene.mjs +550 -0
  63. package/esm2022/lib/implementations/napari-js/napari-volume-slice-planes.mjs +103 -0
  64. package/esm2022/lib/implementations/napari-js/napari-volume-z-handle.mjs +6 -6
  65. package/esm2022/lib/implementations/napari-js/region-overlay/overlay-projection.mjs +96 -0
  66. package/esm2022/lib/implementations/napari-js/region-overlay/region-edit.mjs +35 -0
  67. package/esm2022/lib/implementations/napari-js/region-overlay/region-svg-renderer.mjs +194 -0
  68. package/esm2022/lib/implementations/napari-js/spatial-tiles/categorical-lookup.mjs +30 -0
  69. package/esm2022/lib/implementations/napari-js/spatial-tiles/cell-layers.mjs +274 -0
  70. package/esm2022/lib/implementations/napari-js/spatial-tiles/density-layer.mjs +144 -0
  71. package/esm2022/lib/implementations/napari-js/spatial-tiles/layer-groups.mjs +165 -0
  72. package/esm2022/lib/implementations/napari-js/spatial-tiles/plan-context.mjs +78 -0
  73. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-hover.mjs +182 -0
  74. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-jobs.mjs +369 -0
  75. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-layers.mjs +306 -0
  76. package/esm2022/lib/implementations/osd/display-pipeline.mjs +102 -40
  77. package/esm2022/lib/implementations/osd/histogram-sampler.mjs +56 -31
  78. package/esm2022/lib/implementations/osd/openseadragon-viewer-options.mjs +128 -0
  79. package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +333 -1685
  80. package/esm2022/lib/implementations/osd/osd-coordinate-transform.mjs +1 -1
  81. package/esm2022/lib/implementations/osd/osd-coords.mjs +5 -6
  82. package/esm2022/lib/implementations/osd/osd-export.mjs +122 -0
  83. package/esm2022/lib/implementations/osd/osd-lib.mjs +15 -1
  84. package/esm2022/lib/implementations/osd/osd-navigator-chrome.mjs +205 -0
  85. package/esm2022/lib/implementations/osd/osd-pixel-readback.mjs +68 -0
  86. package/esm2022/lib/implementations/osd/osd-region-overlay-draw.mjs +164 -0
  87. package/esm2022/lib/implementations/osd/osd-region-overlay.mjs +213 -716
  88. package/esm2022/lib/implementations/osd/osd-scale-bar.mjs +52 -60
  89. package/esm2022/lib/implementations/osd/osd-tile-source.mjs +105 -0
  90. package/esm2022/lib/implementations/osd/osd-viewer-like.mjs +2 -0
  91. package/esm2022/lib/implementations/osd/osd-viewer-mount.mjs +44 -0
  92. package/esm2022/lib/implementations/osd/osd-viewport.mjs +184 -0
  93. package/esm2022/lib/implementations/osd/osd-zoom.mjs +7 -1
  94. package/esm2022/lib/implementations/osd/simple-source.mjs +395 -0
  95. package/esm2022/lib/implementations/osd/slice-cache.mjs +53 -48
  96. package/esm2022/lib/implementations/osd/tile-client.mjs +32 -11
  97. package/esm2022/lib/implementations/osd/tile-recolor.mjs +330 -0
  98. package/esm2022/lib/implementations/plotly/omics-trace-builders.mjs +161 -73
  99. package/esm2022/lib/implementations/plotly/plotly-coordinate-transform.mjs +1 -1
  100. package/esm2022/lib/implementations/plotly/plotly-image-loader.mjs +112 -0
  101. package/esm2022/lib/implementations/plotly/plotly-image-recolor.mjs +178 -0
  102. package/esm2022/lib/implementations/plotly/plotly-intensity-inset.mjs +33 -0
  103. package/esm2022/lib/implementations/plotly/plotly-isosurface-controls.mjs +83 -0
  104. package/esm2022/lib/implementations/plotly/plotly-layouts.mjs +121 -0
  105. package/esm2022/lib/implementations/plotly/plotly-readback.mjs +117 -0
  106. package/esm2022/lib/implementations/plotly/plotly-region-overlay.mjs +19 -10
  107. package/esm2022/lib/implementations/plotly/plotly-shape-projection.mjs +223 -0
  108. package/esm2022/lib/implementations/plotly/plotly-trace-builders.mjs +79 -19
  109. package/esm2022/lib/implementations/plotly/plotly-zoom-controller.mjs +223 -0
  110. package/esm2022/lib/implementations/plotly/plotly.service.mjs +439 -1655
  111. package/esm2022/lib/implementations/region-centroids.mjs +47 -0
  112. package/esm2022/lib/implementations/simple-slice-access.service.mjs +22 -12
  113. package/esm2022/lib/implementations/spatial-data-http/spatial-data-http.service.mjs +172 -92
  114. package/esm2022/lib/implementations/spatial-data-http/spatial-wire.mjs +103 -22
  115. package/esm2022/lib/implementations/tile-server/index.mjs +6 -0
  116. package/esm2022/lib/implementations/tile-server/native-histogram.mjs +30 -0
  117. package/esm2022/lib/implementations/tile-server/poll-descriptor.mjs +65 -0
  118. package/esm2022/lib/implementations/tile-server/tile-protocol.mjs +42 -0
  119. package/esm2022/lib/implementations/tile-server/transport.mjs +135 -0
  120. package/esm2022/lib/intensity/intensity-profile.mjs +107 -0
  121. package/esm2022/lib/intensity/intensity-profile.service.mjs +223 -0
  122. package/esm2022/lib/intensity-inset/intensity-inset.component.mjs +133 -0
  123. package/esm2022/lib/models/bezier.mjs +1 -11
  124. package/esm2022/lib/models/class-preset.mjs +41 -3
  125. package/esm2022/lib/models/geometry.mjs +27 -164
  126. package/esm2022/lib/models/polygon-edit.mjs +254 -0
  127. package/esm2022/lib/models/polygon-factory.mjs +134 -0
  128. package/esm2022/lib/models/region-clone.mjs +68 -0
  129. package/esm2022/lib/models/region-geojson.mjs +411 -0
  130. package/esm2022/lib/models/region.mjs +34 -33
  131. package/esm2022/lib/models/shape.mjs +18 -16
  132. package/esm2022/lib/plot-mode/contribution-host.mjs +297 -0
  133. package/esm2022/lib/plot-mode/plot-mode-controller.mjs +9 -6
  134. package/esm2022/lib/plot-mode/plot-type-menu.mjs +85 -0
  135. package/esm2022/lib/plot-mode/tool-params-model.mjs +87 -0
  136. package/esm2022/lib/plot.utilities.mjs +296 -473
  137. package/esm2022/lib/processing/image-crop.mjs +1 -1
  138. package/esm2022/lib/processing/processing-image.mjs +28 -15
  139. package/esm2022/lib/provide-visualization.mjs +40 -14
  140. package/esm2022/lib/region-editor/class-tree/class-tree.component.mjs +156 -0
  141. package/esm2022/lib/region-editor/class-tree/class-tree.mjs +108 -0
  142. package/esm2022/lib/region-editor/classes-panel/classes-panel.component.mjs +163 -0
  143. package/esm2022/lib/region-editor/file-stem.mjs +13 -0
  144. package/esm2022/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.mjs +118 -0
  145. package/esm2022/lib/region-editor/mask-export.service.mjs +98 -0
  146. package/esm2022/lib/region-editor/mask-raster.mjs +11 -5
  147. package/esm2022/lib/region-editor/region-color-dialog/region-color-dialog.component.mjs +56 -0
  148. package/esm2022/lib/region-editor/region-editor-help/region-editor-help.component.mjs +28 -0
  149. package/esm2022/lib/region-editor/region-editor.component.mjs +896 -660
  150. package/esm2022/lib/region-editor/region-metrics.mjs +86 -0
  151. package/esm2022/lib/region-editor/region-persistence.service.mjs +160 -0
  152. package/esm2022/lib/region-editor/region-table/region-table.component.mjs +169 -0
  153. package/esm2022/lib/region-editor/save-mask-dialog/save-mask-dialog.component.mjs +91 -0
  154. package/esm2022/lib/region-editor/save-regions-dialog/save-regions-dialog.component.mjs +92 -0
  155. package/esm2022/lib/region-ops.service.mjs +28 -70
  156. package/esm2022/lib/region-overlay/region-geometry.mjs +360 -0
  157. package/esm2022/lib/region-overlay/region-hit-test.mjs +103 -0
  158. package/esm2022/lib/region-overlay/region-source-layer.mjs +378 -0
  159. package/esm2022/lib/region-overlay/region-style.mjs +97 -0
  160. package/esm2022/lib/region-overlay/svg-region-renderer.mjs +228 -0
  161. package/esm2022/lib/region-source/http-region-source.mjs +104 -0
  162. package/esm2022/lib/region-source/region-source-ops.mjs +53 -0
  163. package/esm2022/lib/region-source/region-source-worker.mjs +10 -0
  164. package/esm2022/lib/region-source/region-source.mjs +67 -0
  165. package/esm2022/lib/region-source/region-tiles.mjs +708 -0
  166. package/esm2022/lib/region-source/worker-region-source.mjs +229 -0
  167. package/esm2022/lib/render-orchestrator.mjs +14 -11
  168. package/esm2022/lib/render-session.mjs +207 -0
  169. package/esm2022/lib/routing-visualizer.service.mjs +858 -414
  170. package/esm2022/lib/section-pane/section-pane.component.mjs +299 -0
  171. package/esm2022/lib/spatial/density-raster.mjs +14 -0
  172. package/esm2022/lib/spatial/embedding-compute-coordinator.mjs +239 -0
  173. package/esm2022/lib/spatial/embedding-compute.mjs +43 -10
  174. package/esm2022/lib/spatial/gene-search.mjs +1 -1
  175. package/esm2022/lib/spatial/glyphs.mjs +97 -0
  176. package/esm2022/lib/spatial/lod.mjs +187 -0
  177. package/esm2022/lib/spatial/spatial-controls.facade.mjs +200 -0
  178. package/esm2022/lib/spatial/spatial-density.mjs +25 -16
  179. package/esm2022/lib/spatial/spatial-encoding.mjs +26 -82
  180. package/esm2022/lib/spatial/spatial-expression.mjs +43 -42
  181. package/esm2022/lib/spatial/spatial-framing.mjs +1 -1
  182. package/esm2022/lib/spatial/spatial-heatmap.mjs +6 -3
  183. package/esm2022/lib/spatial/spatial-hover.mjs +5 -33
  184. package/esm2022/lib/spatial/spatial-panel-model.mjs +282 -0
  185. package/esm2022/lib/spatial/spatial-sections.mjs +1 -1
  186. package/esm2022/lib/spatial/spatial-selection.mjs +33 -46
  187. package/esm2022/lib/spatial/spatial-tile-merge.mjs +219 -0
  188. package/esm2022/lib/spatial/spatial-tiles.mjs +12 -648
  189. package/esm2022/lib/spatial/spatial-volume-image.mjs +2 -4
  190. package/esm2022/lib/spatial/stats.mjs +71 -0
  191. package/esm2022/lib/spatial/transcript-grouping.mjs +307 -0
  192. package/esm2022/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.mjs +150 -0
  193. package/esm2022/lib/spatial-controls/spatial-charts/chart-data-model.mjs +309 -0
  194. package/esm2022/lib/spatial-controls/spatial-charts/chart-help.mjs +145 -0
  195. package/esm2022/lib/spatial-controls/spatial-charts/plotly-chart-host.mjs +158 -0
  196. package/esm2022/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.mjs +47 -0
  197. package/esm2022/lib/spatial-controls/spatial-charts/spatial-charts.component.mjs +297 -802
  198. package/esm2022/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.mjs +89 -0
  199. package/esm2022/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.mjs +52 -0
  200. package/esm2022/lib/spatial-controls/spatial-controls.component.mjs +143 -1238
  201. package/esm2022/lib/spatial-controls/spatial-gene-picker.mjs +153 -0
  202. package/esm2022/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.mjs +241 -0
  203. package/esm2022/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.mjs +193 -0
  204. package/esm2022/lib/spatial-controls/spatial-key/spatial-key.component.mjs +132 -0
  205. package/esm2022/lib/spatial-controls/spatial-key/spatial-key.model.mjs +67 -0
  206. package/esm2022/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.mjs +147 -0
  207. package/esm2022/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.mjs +300 -0
  208. package/esm2022/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.mjs +370 -0
  209. package/esm2022/lib/store/class-color.util.mjs +53 -5
  210. package/esm2022/lib/store/class-signatures.mjs +63 -0
  211. package/esm2022/lib/store/region-history.mjs +146 -0
  212. package/esm2022/lib/store/region-scope-cache.mjs +144 -0
  213. package/esm2022/lib/store/region-selection.mjs +82 -0
  214. package/esm2022/lib/store/region-source-scope.mjs +171 -0
  215. package/esm2022/lib/store/region-store.service.mjs +986 -670
  216. package/esm2022/lib/store/spatial-selection.service.mjs +2 -2
  217. package/esm2022/lib/store/visualizer-store.service.mjs +81 -76
  218. package/esm2022/lib/toast-outlets.mjs +5 -4
  219. package/esm2022/lib/toolbar/brush/brush-tool.service.mjs +92 -434
  220. package/esm2022/lib/toolbar/canvas-tools.mjs +20 -0
  221. package/esm2022/lib/toolbar/crop/slide-crop.mjs +26 -42
  222. package/esm2022/lib/toolbar/plot-type-selector/plot-type-selector.component.mjs +85 -0
  223. package/esm2022/lib/toolbar/region-tools/region-tool-buttons.mjs +74 -0
  224. package/esm2022/lib/toolbar/region-tools/region-tools.component.mjs +120 -0
  225. package/esm2022/lib/toolbar/segmentation/cell-segment-tool.service.mjs +74 -78
  226. package/esm2022/lib/toolbar/segmentation/cellpose-segmenter.service.mjs +50 -8
  227. package/esm2022/lib/toolbar/segmentation/onnx-sam-session.mjs +61 -42
  228. package/esm2022/lib/toolbar/segmentation/pending-calls.mjs +47 -0
  229. package/esm2022/lib/toolbar/segmentation/sam-model-registry.mjs +12 -4
  230. package/esm2022/lib/toolbar/segmentation/sam-onnx-core.mjs +70 -14
  231. package/esm2022/lib/toolbar/segmentation/sam-point-tool.service.mjs +135 -172
  232. package/esm2022/lib/toolbar/segmentation/sam-prompt.mjs +9 -90
  233. package/esm2022/lib/toolbar/segmentation/sam-session.service.mjs +183 -0
  234. package/esm2022/lib/toolbar/segmentation/sam-tool.service.mjs +95 -150
  235. package/esm2022/lib/toolbar/segmentation/segmentation-commit.mjs +12 -0
  236. package/esm2022/lib/toolbar/segmentation/segmentation-runner.mjs +108 -0
  237. package/esm2022/lib/toolbar/segmentation-tools/segmentation-tools.component.mjs +155 -0
  238. package/esm2022/lib/toolbar/stack-controls/stack-controls.component.mjs +121 -0
  239. package/esm2022/lib/toolbar/tool-kit/async-tool-status.mjs +37 -0
  240. package/esm2022/lib/toolbar/tool-kit/canvas-tool-manager.mjs +63 -0
  241. package/esm2022/lib/toolbar/tool-kit/canvas-tool.mjs +2 -0
  242. package/esm2022/lib/toolbar/tool-kit/frame-pixels.mjs +108 -0
  243. package/esm2022/lib/toolbar/tool-kit/mask-stroke-editor.mjs +306 -0
  244. package/esm2022/lib/toolbar/tool-kit/matrix-frame.mjs +61 -0
  245. package/esm2022/lib/toolbar/tool-kit/tool-overlay.mjs +140 -0
  246. package/esm2022/lib/toolbar/tool-kit/undo-gesture.mjs +24 -0
  247. package/esm2022/lib/toolbar/tool-slider/tool-slider.component.mjs +63 -0
  248. package/esm2022/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.mjs +50 -0
  249. package/esm2022/lib/toolbar/toolbar.component.mjs +84 -119
  250. package/esm2022/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.mjs +93 -115
  251. package/esm2022/lib/toolbar/view-controls/view-controls.component.mjs +107 -0
  252. package/esm2022/lib/toolbar/wand/wand-region-grow.mjs +321 -0
  253. package/esm2022/lib/toolbar/wand/wand-tool.service.mjs +121 -416
  254. package/esm2022/lib/toolbar/wand/wand.service.mjs +30 -894
  255. package/esm2022/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.mjs +48 -90
  256. package/esm2022/lib/util/mark-for-check.mjs +17 -0
  257. package/esm2022/lib/util/supersede.mjs +56 -0
  258. package/esm2022/lib/visualization.module.mjs +39 -141
  259. package/esm2022/lib/visualizer/floating-drag.directive.mjs +58 -0
  260. package/esm2022/lib/visualizer/region-actions.mjs +149 -0
  261. package/esm2022/lib/visualizer/region-load.mjs +123 -0
  262. package/esm2022/lib/visualizer/spatial-dataset-binder.mjs +163 -0
  263. package/esm2022/lib/visualizer/tool-modes.mjs +113 -0
  264. package/esm2022/lib/visualizer/viewer-shortcuts.mjs +167 -0
  265. package/esm2022/lib/visualizer/visualizer-context-menu.mjs +119 -0
  266. package/esm2022/lib/visualizer/volume-sections.mjs +175 -0
  267. package/esm2022/lib/visualizer.component.mjs +602 -1902
  268. package/esm2022/lib/workers/spatial-math-ops.mjs +43 -0
  269. package/esm2022/lib/workers/spatial-math-worker.mjs +10 -0
  270. package/esm2022/lib/workers/spatial-math.mjs +190 -0
  271. package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs +47169 -0
  272. package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs.map +1 -0
  273. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs +238 -0
  274. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs.map +1 -0
  275. package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.mjs +12 -0
  276. package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.mjs.map +1 -0
  277. package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs +12 -0
  278. package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs.map +1 -0
  279. package/fesm2022/jax-data-science-sci-image-visualizer.mjs +41 -34467
  280. package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
  281. package/fesm2022/mask.worker.js +36 -917
  282. package/fesm2022/onnx-sam.worker.js +52 -16
  283. package/fesm2022/region-source.worker.js +1067 -0
  284. package/fesm2022/spatial-math.worker.js +471 -0
  285. package/fesm2022/tsne.worker.js +32 -15
  286. package/index.d.ts +19 -10
  287. package/lib/channel-histogram/channel-histogram.component.d.ts +53 -43
  288. package/lib/contracts/capabilities.contract.d.ts +4 -2
  289. package/lib/contracts/cell-segmenter.contract.d.ts +1 -0
  290. package/lib/contracts/channel-histogram-api.contract.d.ts +4 -0
  291. package/lib/contracts/color.d.ts +27 -0
  292. package/lib/contracts/colormap-lut.d.ts +19 -4
  293. package/lib/contracts/coordinate-transform.contract.d.ts +3 -3
  294. package/lib/contracts/display-types.d.ts +21 -0
  295. package/lib/contracts/image.contract.d.ts +4 -0
  296. package/lib/contracts/instance-segmenter.contract.d.ts +5 -0
  297. package/lib/contracts/intensity.d.ts +13 -2
  298. package/lib/contracts/plot-type.d.ts +3 -1
  299. package/lib/contracts/ports/image-state.port.d.ts +6 -2
  300. package/lib/contracts/ports/preferences.port.d.ts +4 -0
  301. package/lib/contracts/ports/region-io.port.d.ts +1 -0
  302. package/lib/contracts/ports/spatial-data.port.d.ts +4 -10
  303. package/lib/contracts/ports/tile-access.port.d.ts +1 -0
  304. package/lib/contracts/region-editor-api.contract.d.ts +85 -1
  305. package/lib/contracts/region-overlay.contract.d.ts +5 -0
  306. package/lib/contracts/region-store.contract.d.ts +22 -0
  307. package/lib/contracts/sam.contract.d.ts +7 -0
  308. package/lib/contracts/section-view.contract.d.ts +44 -0
  309. package/lib/contracts/semantic-segmenter.contract.d.ts +6 -0
  310. package/lib/contracts/spatial-dataset.contract.d.ts +19 -6
  311. package/lib/contracts/toolbar-tool.contract.d.ts +1 -0
  312. package/lib/contracts/visualizer.contract.d.ts +231 -54
  313. package/lib/contracts/viz-config.d.ts +9 -0
  314. package/lib/geometry/contour.d.ts +24 -0
  315. package/lib/geometry/loft.d.ts +22 -0
  316. package/lib/geometry/polylabel.d.ts +23 -0
  317. package/lib/geometry/raster.d.ts +42 -0
  318. package/lib/geometry/reconstruct.d.ts +54 -0
  319. package/lib/geometry/reslice-image.d.ts +33 -0
  320. package/lib/geometry/ring.d.ts +67 -0
  321. package/lib/geometry/section.d.ts +52 -0
  322. package/lib/hex-color-picker/hex-color-picker.component.d.ts +61 -27
  323. package/lib/implementations/base-store-visualizer.d.ts +61 -15
  324. package/lib/implementations/napari-js/napari-axes-gizmo.d.ts +36 -0
  325. package/lib/implementations/napari-js/napari-display-state.d.ts +76 -0
  326. package/lib/implementations/napari-js/napari-helpers.d.ts +129 -0
  327. package/lib/implementations/napari-js/napari-image-2d-scene.d.ts +162 -0
  328. package/lib/implementations/napari-js/napari-loading-badge.d.ts +4 -3
  329. package/lib/implementations/napari-js/napari-loading-state.d.ts +37 -0
  330. package/lib/implementations/napari-js/napari-region-mesh-pointer.d.ts +32 -0
  331. package/lib/implementations/napari-js/napari-region-overlay.d.ts +68 -71
  332. package/lib/implementations/napari-js/napari-scene.d.ts +126 -0
  333. package/lib/implementations/napari-js/napari-spatial-2d-scene.d.ts +163 -0
  334. package/lib/implementations/napari-js/napari-spatial-3d-scene.d.ts +212 -0
  335. package/lib/implementations/napari-js/napari-spatial-encoding.d.ts +114 -0
  336. package/lib/implementations/napari-js/napari-spatial-hover.d.ts +91 -0
  337. package/lib/implementations/napari-js/napari-spatial-scene.d.ts +118 -0
  338. package/lib/implementations/napari-js/napari-spatial-tiles.d.ts +56 -263
  339. package/lib/implementations/napari-js/napari-spatial-tooltip.d.ts +1 -1
  340. package/lib/implementations/napari-js/napari-surface-scene.d.ts +76 -0
  341. package/lib/implementations/napari-js/napari-tile-client.d.ts +214 -0
  342. package/lib/implementations/napari-js/napari-tool-bridge.d.ts +179 -0
  343. package/lib/implementations/napari-js/napari-visualizer.service.d.ts +169 -883
  344. package/lib/implementations/napari-js/napari-volume-region-meshes.d.ts +66 -0
  345. package/lib/implementations/napari-js/napari-volume-scene.d.ts +148 -0
  346. package/lib/implementations/napari-js/napari-volume-slice-planes.d.ts +43 -0
  347. package/lib/implementations/napari-js/napari-volume-z-handle.d.ts +8 -12
  348. package/lib/implementations/napari-js/region-overlay/overlay-projection.d.ts +59 -0
  349. package/lib/implementations/napari-js/region-overlay/region-edit.d.ts +15 -0
  350. package/lib/implementations/napari-js/region-overlay/region-svg-renderer.d.ts +54 -0
  351. package/lib/implementations/napari-js/spatial-tiles/categorical-lookup.d.ts +26 -0
  352. package/lib/implementations/napari-js/spatial-tiles/cell-layers.d.ts +70 -0
  353. package/lib/implementations/napari-js/spatial-tiles/density-layer.d.ts +61 -0
  354. package/lib/implementations/napari-js/spatial-tiles/layer-groups.d.ts +67 -0
  355. package/lib/implementations/napari-js/spatial-tiles/plan-context.d.ts +38 -0
  356. package/lib/implementations/napari-js/spatial-tiles/transcript-hover.d.ts +71 -0
  357. package/lib/implementations/napari-js/spatial-tiles/transcript-jobs.d.ts +105 -0
  358. package/lib/implementations/napari-js/spatial-tiles/transcript-layers.d.ts +56 -0
  359. package/lib/implementations/osd/display-pipeline.d.ts +38 -9
  360. package/lib/implementations/osd/histogram-sampler.d.ts +22 -12
  361. package/lib/implementations/osd/openseadragon-viewer-options.d.ts +35 -0
  362. package/lib/implementations/osd/openseadragon-visualizer.service.d.ts +78 -354
  363. package/lib/implementations/osd/osd-coordinate-transform.d.ts +2 -1
  364. package/lib/implementations/osd/osd-coords.d.ts +6 -4
  365. package/lib/implementations/osd/osd-export.d.ts +36 -0
  366. package/lib/implementations/osd/osd-lib.d.ts +7 -0
  367. package/lib/implementations/osd/osd-navigator-chrome.d.ts +69 -0
  368. package/lib/implementations/osd/osd-pixel-readback.d.ts +22 -0
  369. package/lib/implementations/osd/osd-region-overlay-draw.d.ts +38 -0
  370. package/lib/implementations/osd/osd-region-overlay.d.ts +46 -51
  371. package/lib/implementations/osd/osd-scale-bar.d.ts +8 -6
  372. package/lib/implementations/osd/osd-tile-source.d.ts +49 -0
  373. package/lib/implementations/osd/osd-viewer-like.d.ts +100 -0
  374. package/lib/implementations/osd/osd-viewer-mount.d.ts +14 -0
  375. package/lib/implementations/osd/osd-viewport.d.ts +77 -0
  376. package/lib/implementations/osd/osd-zoom.d.ts +6 -0
  377. package/lib/implementations/osd/simple-source.d.ts +161 -0
  378. package/lib/implementations/osd/slice-cache.d.ts +12 -3
  379. package/lib/implementations/osd/tile-client.d.ts +11 -14
  380. package/lib/implementations/osd/tile-recolor.d.ts +141 -0
  381. package/lib/implementations/plotly/omics-trace-builders.d.ts +32 -20
  382. package/lib/implementations/plotly/plotly-image-loader.d.ts +49 -0
  383. package/lib/implementations/plotly/plotly-image-recolor.d.ts +75 -0
  384. package/lib/implementations/plotly/plotly-intensity-inset.d.ts +8 -0
  385. package/lib/implementations/plotly/plotly-isosurface-controls.d.ts +38 -0
  386. package/lib/implementations/plotly/plotly-layouts.d.ts +188 -0
  387. package/lib/implementations/plotly/plotly-readback.d.ts +41 -0
  388. package/lib/implementations/plotly/plotly-region-overlay.d.ts +2 -2
  389. package/lib/implementations/plotly/plotly-shape-projection.d.ts +92 -0
  390. package/lib/implementations/plotly/plotly-trace-builders.d.ts +23 -12
  391. package/lib/implementations/plotly/plotly-zoom-controller.d.ts +86 -0
  392. package/lib/implementations/plotly/plotly.service.d.ts +136 -401
  393. package/lib/implementations/region-centroids.d.ts +14 -0
  394. package/lib/implementations/simple-slice-access.service.d.ts +7 -4
  395. package/lib/implementations/spatial-data-http/spatial-data-http.service.d.ts +42 -18
  396. package/lib/implementations/spatial-data-http/spatial-wire.d.ts +34 -9
  397. package/lib/implementations/tile-server/index.d.ts +5 -0
  398. package/lib/implementations/tile-server/native-histogram.d.ts +25 -0
  399. package/lib/implementations/tile-server/poll-descriptor.d.ts +39 -0
  400. package/lib/implementations/tile-server/tile-protocol.d.ts +83 -0
  401. package/lib/implementations/tile-server/transport.d.ts +62 -0
  402. package/lib/intensity/intensity-profile.d.ts +66 -0
  403. package/lib/intensity/intensity-profile.service.d.ts +108 -0
  404. package/lib/intensity-inset/intensity-inset.component.d.ts +58 -0
  405. package/lib/models/bezier.d.ts +0 -5
  406. package/lib/models/class-preset.d.ts +25 -0
  407. package/lib/models/geometry.d.ts +14 -48
  408. package/lib/models/polygon-edit.d.ts +72 -0
  409. package/lib/models/polygon-factory.d.ts +45 -0
  410. package/lib/models/region-clone.d.ts +20 -0
  411. package/lib/models/region-geojson.d.ts +57 -0
  412. package/lib/models/region.d.ts +59 -4
  413. package/lib/models/shape.d.ts +8 -0
  414. package/lib/plot-mode/contribution-host.d.ts +125 -0
  415. package/lib/plot-mode/plot-type-menu.d.ts +60 -0
  416. package/lib/plot-mode/tool-params-model.d.ts +49 -0
  417. package/lib/plot.utilities.d.ts +19 -30
  418. package/lib/processing/processing-image.d.ts +5 -2
  419. package/lib/provide-visualization.d.ts +19 -2
  420. package/lib/region-editor/class-tree/class-tree.component.d.ts +78 -0
  421. package/lib/region-editor/class-tree/class-tree.d.ts +31 -0
  422. package/lib/region-editor/classes-panel/classes-panel.component.d.ts +86 -0
  423. package/lib/region-editor/file-stem.d.ts +7 -0
  424. package/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.d.ts +45 -0
  425. package/lib/region-editor/mask-export.service.d.ts +54 -0
  426. package/lib/region-editor/mask-raster.d.ts +2 -8
  427. package/lib/region-editor/region-color-dialog/region-color-dialog.component.d.ts +29 -0
  428. package/lib/region-editor/region-editor-help/region-editor-help.component.d.ts +11 -0
  429. package/lib/region-editor/region-editor.component.d.ts +283 -200
  430. package/lib/region-editor/region-metrics.d.ts +34 -0
  431. package/lib/region-editor/region-persistence.service.d.ts +77 -0
  432. package/lib/region-editor/region-table/region-table.component.d.ts +89 -0
  433. package/lib/region-editor/save-mask-dialog/save-mask-dialog.component.d.ts +36 -0
  434. package/lib/region-editor/save-regions-dialog/save-regions-dialog.component.d.ts +37 -0
  435. package/lib/region-ops.service.d.ts +1 -7
  436. package/lib/region-overlay/region-geometry.d.ts +158 -0
  437. package/lib/region-overlay/region-hit-test.d.ts +38 -0
  438. package/lib/region-overlay/region-source-layer.d.ts +96 -0
  439. package/lib/region-overlay/region-style.d.ts +52 -0
  440. package/lib/region-overlay/svg-region-renderer.d.ts +110 -0
  441. package/lib/region-source/http-region-source.d.ts +45 -0
  442. package/lib/region-source/region-source-ops.d.ts +89 -0
  443. package/lib/region-source/region-source-worker.d.ts +7 -0
  444. package/lib/region-source/region-source.d.ts +82 -0
  445. package/lib/region-source/region-tiles.d.ts +289 -0
  446. package/lib/region-source/worker-region-source.d.ts +65 -0
  447. package/lib/render-orchestrator.d.ts +6 -2
  448. package/lib/render-session.d.ts +75 -0
  449. package/lib/routing-visualizer.service.d.ts +248 -59
  450. package/lib/section-pane/section-pane.component.d.ts +47 -0
  451. package/lib/spatial/density-raster.d.ts +6 -0
  452. package/lib/spatial/embedding-compute-coordinator.d.ts +123 -0
  453. package/lib/spatial/embedding-compute.d.ts +21 -2
  454. package/lib/spatial/glyphs.d.ts +16 -0
  455. package/lib/spatial/lod.d.ts +94 -0
  456. package/lib/spatial/spatial-controls.facade.d.ts +64 -0
  457. package/lib/spatial/spatial-density.d.ts +15 -5
  458. package/lib/spatial/spatial-encoding.d.ts +11 -44
  459. package/lib/spatial/spatial-expression.d.ts +40 -22
  460. package/lib/spatial/spatial-framing.d.ts +1 -0
  461. package/lib/spatial/spatial-heatmap.d.ts +2 -0
  462. package/lib/spatial/spatial-hover.d.ts +4 -16
  463. package/lib/spatial/spatial-panel-model.d.ts +135 -0
  464. package/lib/spatial/spatial-selection.d.ts +21 -26
  465. package/lib/spatial/spatial-tile-merge.d.ts +41 -0
  466. package/lib/spatial/spatial-tiles.d.ts +9 -256
  467. package/lib/spatial/stats.d.ts +38 -0
  468. package/lib/spatial/transcript-grouping.d.ts +119 -0
  469. package/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.d.ts +64 -0
  470. package/lib/spatial-controls/spatial-charts/chart-data-model.d.ts +153 -0
  471. package/lib/spatial-controls/spatial-charts/chart-help.d.ts +69 -0
  472. package/lib/spatial-controls/spatial-charts/plotly-chart-host.d.ts +98 -0
  473. package/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.d.ts +26 -0
  474. package/lib/spatial-controls/spatial-charts/spatial-charts.component.d.ts +101 -260
  475. package/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.d.ts +43 -0
  476. package/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.d.ts +27 -0
  477. package/lib/spatial-controls/spatial-controls.component.d.ts +68 -448
  478. package/lib/spatial-controls/spatial-gene-picker.d.ts +86 -0
  479. package/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.d.ts +102 -0
  480. package/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.d.ts +72 -0
  481. package/lib/spatial-controls/spatial-key/spatial-key.component.d.ts +66 -0
  482. package/lib/spatial-controls/spatial-key/spatial-key.model.d.ts +33 -0
  483. package/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.d.ts +64 -0
  484. package/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.d.ts +117 -0
  485. package/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.d.ts +142 -0
  486. package/lib/store/class-color.util.d.ts +39 -2
  487. package/lib/store/class-signatures.d.ts +11 -0
  488. package/lib/store/region-history.d.ts +66 -0
  489. package/lib/store/region-scope-cache.d.ts +65 -0
  490. package/lib/store/region-selection.d.ts +36 -0
  491. package/lib/store/region-source-scope.d.ts +68 -0
  492. package/lib/store/region-store.service.d.ts +312 -116
  493. package/lib/store/visualizer-store.service.d.ts +32 -33
  494. package/lib/toast-outlets.d.ts +4 -3
  495. package/lib/toolbar/brush/brush-tool.service.d.ts +31 -98
  496. package/lib/toolbar/canvas-tools.d.ts +20 -0
  497. package/lib/toolbar/crop/slide-crop.d.ts +10 -4
  498. package/lib/toolbar/plot-type-selector/plot-type-selector.component.d.ts +38 -0
  499. package/lib/toolbar/region-tools/region-tool-buttons.d.ts +21 -0
  500. package/lib/toolbar/region-tools/region-tools.component.d.ts +62 -0
  501. package/lib/toolbar/segmentation/cell-segment-tool.service.d.ts +10 -14
  502. package/lib/toolbar/segmentation/cellpose-segmenter.service.d.ts +12 -2
  503. package/lib/toolbar/segmentation/onnx-sam-session.d.ts +22 -3
  504. package/lib/toolbar/segmentation/pending-calls.d.ts +31 -0
  505. package/lib/toolbar/segmentation/sam-model-registry.d.ts +9 -3
  506. package/lib/toolbar/segmentation/sam-onnx-core.d.ts +18 -5
  507. package/lib/toolbar/segmentation/sam-point-tool.service.d.ts +46 -32
  508. package/lib/toolbar/segmentation/sam-prompt.d.ts +7 -31
  509. package/lib/toolbar/segmentation/sam-session.service.d.ts +74 -0
  510. package/lib/toolbar/segmentation/sam-tool.service.d.ts +23 -30
  511. package/lib/toolbar/segmentation/segmentation-commit.d.ts +8 -0
  512. package/lib/toolbar/segmentation/segmentation-runner.d.ts +52 -0
  513. package/lib/toolbar/segmentation-tools/segmentation-tools.component.d.ts +87 -0
  514. package/lib/toolbar/stack-controls/stack-controls.component.d.ts +51 -0
  515. package/lib/toolbar/tool-kit/async-tool-status.d.ts +21 -0
  516. package/lib/toolbar/tool-kit/canvas-tool-manager.d.ts +36 -0
  517. package/lib/toolbar/tool-kit/canvas-tool.d.ts +86 -0
  518. package/lib/toolbar/tool-kit/frame-pixels.d.ts +45 -0
  519. package/lib/toolbar/tool-kit/mask-stroke-editor.d.ts +125 -0
  520. package/lib/toolbar/tool-kit/matrix-frame.d.ts +40 -0
  521. package/lib/toolbar/tool-kit/tool-overlay.d.ts +60 -0
  522. package/lib/toolbar/tool-kit/undo-gesture.d.ts +17 -0
  523. package/lib/toolbar/tool-slider/tool-slider.component.d.ts +33 -0
  524. package/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.d.ts +24 -0
  525. package/lib/toolbar/toolbar.component.d.ts +55 -84
  526. package/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.d.ts +33 -40
  527. package/lib/toolbar/view-controls/view-controls.component.d.ts +54 -0
  528. package/lib/toolbar/wand/wand-region-grow.d.ts +49 -0
  529. package/lib/toolbar/wand/wand-tool.service.d.ts +39 -124
  530. package/lib/toolbar/wand/wand.service.d.ts +22 -116
  531. package/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.d.ts +17 -37
  532. package/lib/util/mark-for-check.d.ts +11 -0
  533. package/lib/util/supersede.d.ts +53 -0
  534. package/lib/visualization.module.d.ts +18 -39
  535. package/lib/visualizer/floating-drag.directive.d.ts +30 -0
  536. package/lib/visualizer/region-actions.d.ts +54 -0
  537. package/lib/visualizer/region-load.d.ts +46 -0
  538. package/lib/visualizer/spatial-dataset-binder.d.ts +74 -0
  539. package/lib/visualizer/tool-modes.d.ts +49 -0
  540. package/lib/visualizer/viewer-shortcuts.d.ts +71 -0
  541. package/lib/visualizer/visualizer-context-menu.d.ts +55 -0
  542. package/lib/visualizer/volume-sections.d.ts +64 -0
  543. package/lib/visualizer.component.d.ts +232 -447
  544. package/lib/workers/spatial-math-ops.d.ts +65 -0
  545. package/lib/workers/spatial-math-worker.d.ts +7 -0
  546. package/lib/workers/spatial-math.d.ts +74 -0
  547. package/package.json +12 -3
  548. package/src/lib/assets/slice.svg +23 -0
  549. package/src/lib/styles/_viz-icons-rules.scss +73 -0
  550. package/src/lib/styles/viz-icons.scss +14 -0
  551. package/esm2022/lib/implementations/napari-js/napari-axes-labels.mjs +0 -97
  552. package/esm2022/lib/implementations/napari-js/napari-navigator.mjs +0 -195
  553. package/esm2022/lib/implementations/napari-js/napari-scale-bar.mjs +0 -92
  554. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs +0 -329
  555. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs.map +0 -1
  556. package/lib/implementations/napari-js/napari-axes-labels.d.ts +0 -49
  557. package/lib/implementations/napari-js/napari-navigator.d.ts +0 -72
  558. package/lib/implementations/napari-js/napari-scale-bar.d.ts +0 -35
  559. package/src/lib/assets/cell-detection.svg +0 -37
  560. package/src/lib/assets/click.svg +0 -1
  561. package/src/lib/assets/colormap-luts.json +0 -1
  562. package/src/lib/assets/edit-selection-white.svg +0 -47
  563. package/src/lib/assets/icons/colormap-earth.png +0 -0
  564. package/src/lib/assets/icons/colormap-placeholder.png +0 -0
  565. package/src/lib/assets/icons/colormap-pubu.png +0 -0
  566. package/src/lib/assets/interactive-segmentation-cursor.svg +0 -1
  567. package/src/lib/assets/picture-segmentation.svg +0 -43
  568. package/src/lib/assets/test/download-379.svg +0 -1
  569. package/src/lib/assets/test/download-98.svg +0 -1
  570. package/src/lib/assets/test/json-1.svg +0 -1
  571. package/src/lib/assets/test/load-53.svg +0 -1
  572. package/src/lib/assets/test/mask-44.svg +0 -1
  573. package/src/lib/assets/test/mask-download-44.svg +0 -15
  574. package/src/lib/assets/test/mask-save-44.svg +0 -11
  575. package/src/lib/assets/test/overlay-1.svg +0 -1
  576. package/src/lib/assets/test/overlay-4.svg +0 -1
  577. package/src/lib/assets/test/region-26.svg +0 -1
  578. package/src/lib/assets/test/save-56.svg +0 -1
  579. package/src/lib/assets/test/upload-43.svg +0 -1
@@ -0,0 +1,214 @@
1
+ import { Observable } from 'rxjs';
2
+ import type { TiledSource } from 'napari-js';
3
+ import { IImageInfo } from '../../contracts/image.contract';
4
+ import { IChannelState, IHistogram } from '../../contracts/channel-histogram-api.contract';
5
+ import { TileAccessPort } from '../../contracts/ports/tile-access.port';
6
+ import { SimpleSliceAccessService } from '../simple-slice-access.service';
7
+ import { TileDescriptor } from '../tile-server';
8
+ import { LumaPlane } from './napari-helpers';
9
+ /** What the navigator draws: a whole-slice picture (a canvas read from the pyramid, or a bitmap). */
10
+ export type OverviewImage = ImageBitmap | HTMLCanvasElement | OffscreenCanvas;
11
+ /** An assembled uint8 (luminance) volume, x-fastest then y then z. */
12
+ export interface AssembledVolume {
13
+ data: Uint8Array;
14
+ width: number;
15
+ height: number;
16
+ depth: number;
17
+ }
18
+ /** Decode an `ImageBitmap` to a single-channel uint8 luminance plane with napari-js's
19
+ * `bitmapToScalar` (server bands are grey, R=G=B, and decode exactly; a colour composite
20
+ * becomes its BT.601 luminance). `maxSide` caps the longest side (downscaling on the canvas
21
+ * draw) — used to keep pre-loaded surface slice planes small. Closes the bitmap. */
22
+ export declare function bitmapToLuminance(bmp: ImageBitmap, maxSide?: number): LumaPlane;
23
+ /**
24
+ * The napari-js backend's client of the jit-service tile server (review Appendix B, step 2), on
25
+ * the shared `tile-server/` protocol: the `/tiles/info` descriptor (polled, cached per source,
26
+ * shared between concurrent callers), whole-slice reads from the pyramid (napari-js `readLevel`), the pyramidal
27
+ * {@link TiledSource}s the 2D image draws, volume assembly, surface planes, the native `/histogram`
28
+ * and the `/export/tiff` download.
29
+ *
30
+ * The image is always passed in — the client never reads which image the service has loaded —
31
+ * so a descriptor can only ever describe the image a caller asked about (NAPARI-SVC-2).
32
+ *
33
+ * Scene-scoped state (the poll in flight, the sources that answered "no", the native histograms)
34
+ * lives until {@link startScene}; the descriptor cache itself survives scenes, keyed by source.
35
+ */
36
+ export declare class NapariTileClient {
37
+ private readonly tiles;
38
+ private readonly simpleStack;
39
+ private readonly api;
40
+ /** Cached `/tiles/info` pyramid descriptor + the infoB64 it was fetched for. */
41
+ private descriptor;
42
+ private descriptorKey;
43
+ /** The poll in flight, shared by every caller asking for the same `infoB64`. */
44
+ private descriptorPoll;
45
+ /** `infoB64`s this scene's poll got no descriptor for (non-202 status, empty body, timeout).
46
+ * Scene-scoped, so a re-plot retries a slow or flaky server once. */
47
+ private readonly descriptorMisses;
48
+ /** Native-bit-depth histograms from `/histogram`, keyed `${z}|${channel}` (>8-bit images). */
49
+ private readonly nativeHistograms;
50
+ /** The current scene's lifetime: a poll started under it ends when it is aborted. */
51
+ private scene;
52
+ constructor(tiles: TileAccessPort, simpleStack: SimpleSliceAccessService, api: string);
53
+ /** Whether `info` is a self-contained stack (`tiled:false`: each slice its own file, no
54
+ * server pyramid). */
55
+ isSimple(info: IImageInfo | undefined): boolean;
56
+ /** A new scene: forget the scene-scoped state and poll under `signal` from now on. */
57
+ startScene(signal: AbortSignal): void;
58
+ /**
59
+ * Fetch + cache the server pyramid descriptor (`GET /tiles/info`): the REAL per-level tile grid,
60
+ * tile size, channel metadata and physical pixel size. The backend returns 202 while the source
61
+ * is still caching, so we poll ({@link pollDescriptor}). Cached per `infoB64`; returns null if it
62
+ * never becomes ready, or the server will not describe the source (callers fall back to a
63
+ * single-tile fetch). Read it back through {@link currentDescriptor}. This is the authoritative
64
+ * grid — guessing level dims from `trueImageSize` overshoots the real grid and the server 400s
65
+ * out-of-range tiles.
66
+ */
67
+ ensureDescriptor(info: IImageInfo | undefined): Promise<TileDescriptor | null>;
68
+ /**
69
+ * The `/tiles/info` loop behind {@link ensureDescriptor}: the shared jit-service poll
70
+ * (`tile-server/pollDescriptor`). Re-polls only on 202 (the server is still caching the source);
71
+ * any other status means this server will not describe it, so the answer is null at once. Each
72
+ * request gives up after its own timeout — a hung request would otherwise never reach the
73
+ * deadline check — and the whole poll ends (null) as soon as `scene` is aborted.
74
+ */
75
+ private pollDescriptor;
76
+ /**
77
+ * The pyramid descriptor of `info`, or null when it has none.
78
+ *
79
+ * The cache is keyed by `infoB64` and survives image switches and failed polls, so reading it
80
+ * directly would hand a `tiled:false` stack (or an image whose poll never answered) the
81
+ * PREVIOUS image's size, µm/pixel, tile size and bit depth. Every read site goes through here.
82
+ */
83
+ currentDescriptor(info: IImageInfo | undefined): TileDescriptor | null;
84
+ /** µm per pixel along x for `info`: the descriptor's, else the image metadata's; 0 when
85
+ * neither declares it. */
86
+ mppX(info: IImageInfo | undefined): number;
87
+ /**
88
+ * Slice `z` as ONE image, for a source with no pyramid to read: a `tiled:false` stack's own
89
+ * file for `z`, else (no descriptor) the server's single top-left tile — correct for
90
+ * small/simple images.
91
+ *
92
+ * A self-contained multi-slice stack's `z` indexes a completely different file's own preview
93
+ * URL, not an internal slice of one server-tiled file, so it is resolved and fetched via
94
+ * SimpleSliceAccessService (shared with OSD; see its docs for why this can't be a bare fetch())
95
+ * rather than as a /tile?info=...&z= request against whichever single file
96
+ * getSelectedInfoB64() points at (which would 400/mismatch for any z beyond that one file's own
97
+ * extent). `channel` selects a band: a serverless multichannel stack's own plane
98
+ * (`channelUrls[z][channel]`, the client-side analog of the server's per-channel
99
+ * `/tile?channel=c`), else the server's.
100
+ */
101
+ fetchImage(info: IImageInfo | undefined, z: number, channel?: number): Promise<ImageBitmap>;
102
+ /**
103
+ * Slice `z` as a single-channel uint8 luminance plane. With a pyramid, napari-js's `readLevel`
104
+ * reads it from the same {@link tiledSource} the 2D view draws: the finest level whose tile grid
105
+ * fits `maxTiles` and whose longest side fits the GPU texture limit (no finer than `maxSide`
106
+ * needs, when given), stitched with bounded concurrency and area-averaged down to `maxSide`.
107
+ * Without one, the single image of {@link fetchImage}. `channel` selects a band (real levels
108
+ * only); omit it for the composite, whose overview levels let a large image read a small level.
109
+ * `compositeFallback`: see {@link planeSource}. `signal` cancels the read (it rejects).
110
+ */
111
+ readPlane(info: IImageInfo | undefined, z: number, channel: number | undefined, opts: {
112
+ maxTiles: number;
113
+ maxSide?: number;
114
+ compositeFallback?: boolean;
115
+ signal?: AbortSignal;
116
+ }): Promise<LumaPlane>;
117
+ /**
118
+ * The scalar source for one decimated plane of band `channel`. A band has tiles only at the
119
+ * (few, large) real Bio-Formats levels; when none of them fits the budget — e.g. the coarsest
120
+ * real level is still 14982×18670, ~1100 full-res tiles — stitching it per slice floods the
121
+ * server (504s) and stalls the load. The composite pyramid has small overview levels, so the
122
+ * plane is read from the composite instead (its luminance). Only for a caller that wants one
123
+ * decimated plane (the surface height): for a multichannel VOLUME every channel would then read
124
+ * the same composite and the channels would collapse into one, so volumes keep each band.
125
+ */
126
+ private planeSource;
127
+ /**
128
+ * A small picture of the whole slice for the navigator: the composite (or band `channel`) at the
129
+ * finest level a single tile holds, else the coarsest level, as an RGBA canvas. Without a
130
+ * pyramid, the single image of {@link fetchImage}.
131
+ */
132
+ overviewImage(info: IImageInfo | undefined, z: number, channel?: number): Promise<OverviewImage>;
133
+ /**
134
+ * Slice `z`'s R, G and B bands, as three uint8 planes: the composite read as RGBA at the
135
+ * finest level within `maxTiles` (as {@link readPlane} picks it; 1 for a cheap overview
136
+ * sample), else the single image of {@link fetchImage}. The raw bands of an RGB image, for the
137
+ * per-band layers and their histograms.
138
+ */
139
+ readRgbBands(info: IImageInfo | undefined, z: number, maxTiles?: number): Promise<LumaPlane[]>;
140
+ /** Fetch slice `z` and read it back as a single-channel uint8 plane (see {@link readPlane}),
141
+ * within `budgetTiles`: the 2D stitch fallback reads at the full budget, the histogram samples
142
+ * at 1 for a cheap overview tile. */
143
+ fetchChannelData(info: IImageInfo | undefined, z: number, channel?: number, budgetTiles?: number): Promise<LumaPlane>;
144
+ /** Tile budget to stitch a whole slice at ~`targetPx` resolution from the pyramid. Shared by the
145
+ * surface plane fetch and the volume assembly, so both cap their reads by the decimate factor. */
146
+ tileBudgetFor(info: IImageInfo | undefined, targetPx: number): number;
147
+ /**
148
+ * Build a pyramidal TiledSource backed by the server `/tile` endpoint. `channel` selects a band
149
+ * (grayscale luminance, real levels only); omit it for the composite (RGBA, all levels).
150
+ *
151
+ * For the 2D view, `scene` is the signal of the render that asked for it, taken before that
152
+ * render's awaits, and `onTile` is told of each tile request and handed back the tile's end. A
153
+ * request issued once `scene` is aborted (a disposed source still fetching after a reset) is not
154
+ * reported, and one that settles after it does not end, so it can never count toward the next
155
+ * scene. A tile request's own `signal` (napari-js aborts a read it no longer needs) aborts the
156
+ * HTTP request.
157
+ */
158
+ tiledSource(desc: TileDescriptor, channel: number | undefined, channels: 1 | 4, scene?: AbortSignal, onTile?: () => () => void): TiledSource;
159
+ /**
160
+ * The composite pyramid's R, G and B bands as three scalar {@link TiledSource}s — one per
161
+ * additive layer, so each band takes its own window, gamma, invert, tint and visibility — that
162
+ * share ONE `/tile` request per tile. The three layers ask for a tile in the same frame: the
163
+ * first fetches the RGBA tile and splits it, the other two take their band from the same
164
+ * promise, and the split tile is dropped once all three have it. A band that asks later (one
165
+ * shown again after being hidden) finds it in a small LRU, else fetches it again. `scene` and
166
+ * `onTile` as {@link tiledSource}: the loading badge counts the one request.
167
+ */
168
+ rgbBandSources(desc: TileDescriptor, scene?: AbortSignal, onTile?: () => () => void): TiledSource[];
169
+ /**
170
+ * Assemble a downsampled uint8 volume (luminance) of `info`'s stack with napari-js's
171
+ * `assembleVolume`: every `sliceStep`th slice, read from the band's (or composite's) pyramid at
172
+ * the level that `maxSlice` needs, within its tile budget, and area-averaged to `maxSlice` on
173
+ * the longest side. Slices are read with bounded concurrency (the connection pool stays full
174
+ * without flooding it on a deep stack), each reporting `progress` (0–100) as it lands so the host
175
+ * shows a determinate progress bar. Null when `signal` aborts (a Cancel or a new plot), which
176
+ * also aborts the tile requests in flight — a partial volume is never returned.
177
+ */
178
+ assembleVolume(info: IImageInfo | undefined, opts: {
179
+ maxSlice?: number;
180
+ sliceStep?: number;
181
+ }, channel: number | undefined, hooks: {
182
+ signal: AbortSignal;
183
+ progress(percent: number): void;
184
+ }): Promise<AssembledVolume | null>;
185
+ /**
186
+ * The scalar source a volume reads: the band's (or composite's) pyramid; without one, one whole
187
+ * image per slice ({@link fetchImage}) as a single-tile level sized by the first slice, which is
188
+ * fetched here and served again as that slice's tile.
189
+ */
190
+ private volumeSource;
191
+ /**
192
+ * Slice `z` as a single WHOLE-image luminance plane (decimated to `maxGrid`), for the surface.
193
+ * Prefers the server pyramid, read at the level the grid needs ({@link readPlane}, which may
194
+ * drop a band to the composite overview); without a descriptor, the app's complete per-slice
195
+ * image (`urls`/`smallUrls`, as the Plotly surface) — never a lone top-left tile, which would be
196
+ * a corner of the slice — and only as a last resort the single-tile fetch.
197
+ */
198
+ fetchPlane(info: IImageInfo | undefined, z: number, channel: number | undefined, maxGrid: number): Promise<LumaPlane>;
199
+ /**
200
+ * Channel `channel`'s native-bit-depth histogram at slice `z` when `info` is a >8-bit image —
201
+ * the displayed pixels are 8-bit, so a client histogram would be clipped — cached per
202
+ * `(z, channel)`; null for an 8-bit channel, which the caller bins from the client data.
203
+ */
204
+ nativeHistogram$(info: IImageInfo | undefined, z: number, channel: number, bins: number): Observable<IHistogram | null> | null;
205
+ /** Fetch + cache one channel's native-bit-depth histogram from `GET /histogram` (>8-bit),
206
+ * through the shared jit-service client — whose URL carries the per-app-load cache-buster
207
+ * this backend used to omit, so a reload showed the server's 24 h-cached histogram. */
208
+ fetchNativeHistogram(channel: number, bins: number, z: number, key: string): Promise<IHistogram | null>;
209
+ /** Native-bit-depth (16/32-bit) multi-band TIFF export of slice `z` via the server
210
+ * `/export/tiff` endpoint — the displayed PNG is an 8-bit figure, this preserves the true pixel
211
+ * values. Visible channels only (omitted when all are visible → server default). Mirrors the
212
+ * OSD backend. */
213
+ exportTiff(z: number, states: IChannelState[], fileName: string | undefined): Promise<void>;
214
+ }
@@ -0,0 +1,179 @@
1
+ import type { Viewer } from 'napari-js';
2
+ import { CanvasToolId } from '../../contracts/display-types';
3
+ import { ICoordinateTransform } from '../../contracts/coordinate-transform.contract';
4
+ import { PixelData } from '../../contracts/visualizer.contract';
5
+ import { ICellSegmenter } from '../../contracts/cell-segmenter.contract';
6
+ import { RegionStore } from '../../store/region-store.service';
7
+ import { CachedImageData, CanvasToolHost } from '../../toolbar/tool-kit/canvas-tool';
8
+ import { CanvasToolManager } from '../../toolbar/tool-kit/canvas-tool-manager';
9
+ import { WandService } from '../../toolbar/wand/wand.service';
10
+ import { SamToolService } from '../../toolbar/segmentation/sam-tool.service';
11
+ import { SamPointToolService } from '../../toolbar/segmentation/sam-point-tool.service';
12
+ import { CellSegmentToolService } from '../../toolbar/segmentation/cell-segment-tool.service';
13
+ import { NapariRegionOverlay, OverlayViewer } from './napari-region-overlay';
14
+ /** A world-space rectangle (x, y = top-left). */
15
+ export interface WorldRect {
16
+ x: number;
17
+ y: number;
18
+ width: number;
19
+ height: number;
20
+ }
21
+ /** ICoordinateTransform over the napari camera: pointer client coords ↔ image/world coords. */
22
+ export declare class NapariCoordinateTransform implements ICoordinateTransform {
23
+ private readonly viewer;
24
+ private readonly ready;
25
+ constructor(viewer: {
26
+ canvasToWorld(clientX: number, clientY: number): [number, number];
27
+ readonly camera: {
28
+ zoom: number;
29
+ };
30
+ }, ready: () => boolean);
31
+ clientToData(clientX: number, clientY: number): {
32
+ x: number;
33
+ y: number;
34
+ };
35
+ dataLengthToScreen(dataLength: number): number;
36
+ isReady(): boolean;
37
+ }
38
+ /** What the bridge reads from the service: the live viewer and its DOM, the image on screen, and
39
+ * where the viewport and zone-crossing output go. */
40
+ export interface ToolBridgeHost {
41
+ viewer(): Viewer | null;
42
+ host(): HTMLElement | null;
43
+ canvas(): HTMLCanvasElement | null;
44
+ /** The image's full-resolution size, or null before one is drawn. */
45
+ imageSize(): {
46
+ width: number;
47
+ height: number;
48
+ } | null;
49
+ frameIndex(): number;
50
+ fileName(): string | undefined;
51
+ /** The visible region changed (clamped to the image); called outside the Angular zone. */
52
+ viewportChanged(rect: WorldRect): void;
53
+ /** Run `fn` outside / inside the Angular zone. */
54
+ outsideZone<T>(fn: () => T): T;
55
+ inZone<T>(fn: () => T): T;
56
+ }
57
+ /** The services the pixel tools and segmentation runs need. */
58
+ export interface ToolBridgeDeps {
59
+ regionStore: RegionStore;
60
+ wandService: WandService;
61
+ samTool: SamToolService;
62
+ samPointTool: SamPointToolService;
63
+ cellSegmentTool: CellSegmentToolService;
64
+ cellSegmenter: ICellSegmenter | null;
65
+ }
66
+ /**
67
+ * The napari backend's side of the shared canvas tools (review Appendix B, step 4): the region
68
+ * overlay, the {@link CanvasToolManager} and its host, the coordinate transform, and the
69
+ * displayed-pixel readback the wand, brush, eraser and SAM/cellpose read — kept current as the
70
+ * camera moves, but only paid for while a pixel tool needs it (NAPARI-SVC-26).
71
+ *
72
+ * One per service; {@link teardown} ends a scene's interaction (overlay, camera hook, timers,
73
+ * pixels) and an `install…Interaction` starts the next one's.
74
+ */
75
+ export declare class NapariToolBridge {
76
+ private readonly host;
77
+ private readonly deps;
78
+ /** What this backend's canvas tools read and write (one host for every tool). */
79
+ readonly toolHost: CanvasToolHost;
80
+ /** This backend's own wand, brush, eraser, zoom-to-box and SAM point tools. */
81
+ readonly canvasTools: CanvasToolManager;
82
+ /** SVG region-drawing overlay (null until a 2D/3D interaction is installed). */
83
+ regionOverlay: NapariRegionOverlay | null;
84
+ /** The pixel tools' pointer ↔ world transform for the current viewer. */
85
+ coordTransform: ICoordinateTransform | null;
86
+ /** The last readback of the displayed composite (the pixel tools' source). */
87
+ lastPixels: PixelData | null;
88
+ /** Visible world rect captured AT the last readback — must pair with `lastPixels` so the pixel
89
+ * tools' ratios/origin match the matrix's camera (using the live rect after a pan/zoom would
90
+ * mis-scale the region). */
91
+ lastPixelsRect: WorldRect | null;
92
+ /** Active tools that read the displayed pixels; a pan/zoom re-reads them only while non-empty. */
93
+ readonly pixelTools: Set<CanvasToolId>;
94
+ /** The camera moved since {@link lastPixels} was read. */
95
+ pixelsStale: boolean;
96
+ /** Cached CachedImageData built from the last readback (rebuilt when lastPixels changes). */
97
+ private cachedImage;
98
+ private cachedImageSource;
99
+ /** Debounced readback timer + camera-change unsubscribe (keep lastPixels current for tools). */
100
+ private readbackTimer;
101
+ /** Debounced viewport emission for a camera change that needs no pixels. */
102
+ private viewportTimer;
103
+ private cameraOff;
104
+ constructor(host: ToolBridgeHost, deps: ToolBridgeDeps);
105
+ /**
106
+ * The interaction stack every 2D mode needs: the region overlay (draw/select/edit), the pixel
107
+ * tools that read back displayed pixels (wand, brush, vertex eraser, zoom-to-box, SAM/cellpose),
108
+ * and a camera hook that keeps that readback current as the view pans/zooms and tiled levels
109
+ * load.
110
+ *
111
+ * One call for all of it because forgetting it is invisible: the toolbar gates its region buttons
112
+ * on 2D-vs-3D rather than on plot type, so a 2D mode that skips this shows every tool and silently
113
+ * does nothing. That is exactly what happened to the spatial and region-centroid scatter modes.
114
+ */
115
+ install2dInteraction(viewer: Viewer, host: HTMLElement): void;
116
+ /**
117
+ * Region drawing for the 3D cloud.
118
+ *
119
+ * Reuses {@link NapariRegionOverlay} verbatim by handing it a SCREEN-SPACE viewer: the drawn
120
+ * shape is a lasso in canvas pixels, so "world" is the canvas and both transforms are identity
121
+ * (bar the client→canvas offset). Every existing tool — rectangle, polygon, freehand — therefore
122
+ * works in 3D with no new drawing code.
123
+ *
124
+ * A screen-space shape stops meaning anything the moment the camera moves, so an orbit clears
125
+ * the regions drawn in this view (and only those). The SELECTION they produced is kept: that is
126
+ * the durable artefact, and the highlighted points stay highlighted from every angle.
127
+ */
128
+ install3dInteraction(viewer: Viewer, host: HTMLElement): void;
129
+ /**
130
+ * The {@link OverlayViewer} the 3D region overlay draws through: "world" is the canvas, in
131
+ * canvas-local CSS pixels. A pointer arrives in CLIENT pixels, so `canvasToWorld` subtracts the
132
+ * canvas's client offset (without it the lasso was drawn offset from the cursor whenever the
133
+ * canvas was not at the page origin); drawing is then the identity, with no layout read.
134
+ */
135
+ screenSpaceViewer(viewer: Viewer): OverlayViewer;
136
+ /** End the scene's interaction: the overlay, the camera hook, the pending timers and the
137
+ * pixels read from the old canvas. The armed tool and the pixel-tool set persist. */
138
+ teardown(): void;
139
+ /** Read the displayed composite into `lastPixels` (the pixel-tools' source) + emit the clamped
140
+ * visible region. A fresh PixelData object means cachedImageData() rebuilds automatically. */
141
+ runReadback(): Promise<void>;
142
+ /** A readback on the next frame — after a plot or a scene change drew something new. */
143
+ scheduleReadback(): void;
144
+ /** Debounced readback — armed on camera changes while a pixel tool is active, so `lastPixels`
145
+ * tracks the current view after a pan/zoom settles, which the on-canvas pixel tools
146
+ * (wand/brush/SAM) read synchronously. Coalesces rapid changes. */
147
+ armReadback(delayMs?: number): void;
148
+ /** Emit the visible region, clamped to the image. */
149
+ private emitViewport;
150
+ /**
151
+ * A 2D pan/zoom. The full-canvas GPU readback is paid for only while a pixel tool reads it
152
+ * ({@link pixelTools}); otherwise only the viewport rect is emitted (debounced), and the pixels
153
+ * are marked stale for whoever next needs them (a tool arms a fresh readback as it activates).
154
+ */
155
+ private onViewChanged;
156
+ /** Build the pixel tools' coordinate transform for the current viewer. */
157
+ private buildCoordinateTransform;
158
+ /** Zoom/pan the camera to fit a data-space rectangle `[xMin, xMax, yMax, yMin]`. */
159
+ private applyZoomToBox;
160
+ /** Build CachedImageData from the most recent readback — its RGBA device pixels are the frame
161
+ * as-is (packed, no per-pixel arrays: NAPARI-SVC-23) — with ratios/origin mapping image coords
162
+ * ↔ readback pixels. Cached until the readback changes. */
163
+ cachedImageData(): CachedImageData | null;
164
+ /**
165
+ * The service's `beforeToolChange`: track the pixel-reading tool (see {@link onViewChanged}),
166
+ * gate the camera, and arm a fresh readback for a pixel tool. Nothing is armed without a
167
+ * viewer, nor a pixel tool before a plot built its coordinate transform.
168
+ *
169
+ * Control gating: a tool that ACTIVATES disables the camera controls; deactivation is a no-op
170
+ * because the host always calls the region overlay's setMode FIRST in each toggle (which sets
171
+ * the baseline enabled/disabled), so re-enabling here would fight a freshly-activated draw mode.
172
+ */
173
+ beforeToolChange(next: CanvasToolId | null): boolean;
174
+ /** SAM over the drawn rectangles — a server round-trip that reads the rectangles from the
175
+ * RegionStore and the image from a fresh readback. Returns the regions added. */
176
+ segmentRectangles(): Promise<number>;
177
+ /** Cellpose over the drawn rectangles (see {@link segmentRectangles}). */
178
+ segmentRectanglesCellpose(): Promise<number>;
179
+ }