@jax-data-science/sci-image-visualizer 0.8.3 → 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 +358 -4218
  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 -34467
  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 -883
  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
@@ -0,0 +1,53 @@
1
+ /**
2
+ * One task of a {@link Supersede}: the check a load makes after each await, and the
3
+ * signal it hands to whatever it awaits so that work can stop too, not just its result.
4
+ *
5
+ * Callable for compatibility with the first version of this helper, whose `next()`
6
+ * returned the bare check: `task()` is `task.isCurrent()`.
7
+ */
8
+ export interface SupersedeTask {
9
+ (): boolean;
10
+ /** True until a newer task starts or the owner {@link Supersede.cancel cancels}. */
11
+ isCurrent(): boolean;
12
+ /**
13
+ * Aborted at the moment this task stops being current. Pass it to `fetch`, a worker
14
+ * call or `IDataRenderer.load()` so superseded work is dropped at the source.
15
+ */
16
+ readonly signal: AbortSignal;
17
+ }
18
+ /**
19
+ * "Latest wins" sequencing for one async concern.
20
+ *
21
+ * Every load that can be overtaken — a fetch the user changes their mind about before it
22
+ * lands — takes a task from {@link next} before its first await and checks it after each
23
+ * one. A newer task, or {@link cancel}, makes every older one stale and aborts its
24
+ * {@link SupersedeTask.signal}, so a slow response cannot paint over what the user has
25
+ * moved on to, and work that honours the signal stops instead of finishing for nobody.
26
+ *
27
+ * One instance per concern, never shared: two unrelated loads on one instance cancel each
28
+ * other, which is how a redraw used to drop a pending colour-source load. A dataset switch
29
+ * cancels all of them together.
30
+ */
31
+ export declare class Supersede {
32
+ private generation;
33
+ private controller;
34
+ /**
35
+ * Start a task, superseding (and aborting) every earlier one.
36
+ *
37
+ * @returns the new task; it stays current until a newer task starts or
38
+ * {@link cancel} runs.
39
+ */
40
+ next(): SupersedeTask;
41
+ /**
42
+ * The task of the current generation, WITHOUT starting a new one: a snapshot that goes
43
+ * stale (and aborts) on the next {@link next} or {@link cancel}. For work that belongs
44
+ * to whatever is current rather than competing with it — a cache fill that must not
45
+ * outlive the dataset it was started for, say.
46
+ */
47
+ current(): SupersedeTask;
48
+ /** Make every task started so far stale and abort its signal, without starting one. */
49
+ cancel(): void;
50
+ /** @deprecated Use {@link cancel}; kept for one release. */
51
+ invalidate(): void;
52
+ private advance;
53
+ }
@@ -1,49 +1,28 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./visualizer.component";
3
- import * as i2 from "./toolbar/toolbar.component";
4
- import * as i3 from "./region-editor/region-editor.component";
5
- import * as i4 from "./hex-color-picker/hex-color-picker.component";
6
- import * as i5 from "./channel-histogram/channel-histogram.component";
7
- import * as i6 from "./spatial-controls/spatial-controls.component";
8
- import * as i7 from "./spatial-controls/spatial-charts/spatial-charts.component";
9
- import * as i8 from "@angular/common";
10
- import * as i9 from "@angular/forms";
11
- import * as i10 from "primeng/toolbar";
12
- import * as i11 from "primeng/button";
13
- import * as i12 from "primeng/menu";
14
- import * as i13 from "primeng/dropdown";
15
- import * as i14 from "primeng/slider";
16
- import * as i15 from "primeng/treeselect";
17
- import * as i16 from "primeng/inputnumber";
18
- import * as i17 from "primeng/dialog";
19
- import * as i18 from "primeng/contextmenu";
20
- import * as i19 from "primeng/progressbar";
21
- import * as i20 from "primeng/toast";
22
- import * as i21 from "primeng/tooltip";
23
- import * as i22 from "primeng/ripple";
24
- import * as i23 from "primeng/table";
25
- import * as i24 from "primeng/paginator";
26
- import * as i25 from "primeng/overlaypanel";
27
- import * as i26 from "primeng/confirmdialog";
28
- import * as i27 from "primeng/inputtext";
29
- import * as i28 from "primeng/checkbox";
30
- import * as i29 from "primeng/multiselect";
31
- import * as i30 from "primeng/radiobutton";
32
- import * as i31 from "primeng/selectbutton";
33
- import * as i32 from "primeng/autocomplete";
3
+ import * as i2 from "./region-editor/region-editor.component";
4
+ import * as i3 from "./hex-color-picker/hex-color-picker.component";
5
+ import * as i4 from "./channel-histogram/channel-histogram.component";
6
+ import * as i5 from "./spatial-controls/spatial-controls.component";
7
+ import * as i6 from "./spatial-controls/spatial-charts/spatial-charts.component";
34
8
  /**
35
9
  * Self-contained plotting UI: the {@link VisualizerComponent} (plot surface
36
- * + render orchestration), its {@link ToolbarComponent}, and the
37
- * {@link RegionEditorComponent} (the Regions tab table/editor). Consumers embed
38
- * `<visualizer>` / `<region-editor>` and need know nothing about the toolbar,
39
- * the rendering backends, or region file I/O (supplied via the REGION_IO_PORT).
10
+ * + render orchestration, with its toolbar), the {@link RegionEditorComponent}
11
+ * (the Regions table/editor), {@link HexColorPickerComponent}
12
+ * (`<hex-color-picker>`, `[color]` in, `(colorChange)` out),
13
+ * {@link ChannelHistogramComponent}, {@link SpatialControlsComponent} and
14
+ * {@link SpatialChartsComponent}. Consumers embed `<visualizer>` /
15
+ * `<region-editor>` and need know nothing about the toolbar, the rendering
16
+ * backends, or region file I/O (supplied via the REGION_IO_PORT).
40
17
  *
41
- * Also exports {@link HexColorPickerComponent} (`<hex-color-picker>`) as a
42
- * standalone reusable picker (`[color]` in, `(colorChange)` out) so consuming
43
- * apps can use it on its own, the same way as the visualizer and region editor.
18
+ * @deprecated A re-export shim, kept for one minor release: every component is
19
+ * standalone now. Import the components themselves (`imports: [VisualizerComponent]`)
20
+ * and bind the backend chain with {@link provideVisualization} — in the application's
21
+ * providers for one app-wide viewer chain, or a component's for an isolated one —
22
+ * instead of the root bindings this module adds.
44
23
  */
45
24
  export declare class VisualizationModule {
46
25
  static ɵfac: i0.ɵɵFactoryDeclaration<VisualizationModule, never>;
47
- static ɵmod: i0.ɵɵNgModuleDeclaration<VisualizationModule, [typeof i1.VisualizerComponent, typeof i2.ToolbarComponent, typeof i3.RegionEditorComponent, typeof i4.HexColorPickerComponent, typeof i5.ChannelHistogramComponent, typeof i6.SpatialControlsComponent, typeof i7.SpatialChartsComponent], [typeof i8.CommonModule, typeof i9.FormsModule, typeof i10.ToolbarModule, typeof i11.ButtonModule, typeof i12.MenuModule, typeof i13.DropdownModule, typeof i14.SliderModule, typeof i15.TreeSelectModule, typeof i16.InputNumberModule, typeof i17.DialogModule, typeof i18.ContextMenuModule, typeof i19.ProgressBarModule, typeof i20.ToastModule, typeof i21.TooltipModule, typeof i22.RippleModule, typeof i23.TableModule, typeof i24.PaginatorModule, typeof i25.OverlayPanelModule, typeof i26.ConfirmDialogModule, typeof i27.InputTextModule, typeof i28.CheckboxModule, typeof i29.MultiSelectModule, typeof i30.RadioButtonModule, typeof i31.SelectButtonModule, typeof i32.AutoCompleteModule], [typeof i1.VisualizerComponent, typeof i3.RegionEditorComponent, typeof i4.HexColorPickerComponent, typeof i5.ChannelHistogramComponent, typeof i6.SpatialControlsComponent, typeof i7.SpatialChartsComponent]>;
26
+ static ɵmod: i0.ɵɵNgModuleDeclaration<VisualizationModule, never, [typeof i1.VisualizerComponent, typeof i2.RegionEditorComponent, typeof i3.HexColorPickerComponent, typeof i4.ChannelHistogramComponent, typeof i5.SpatialControlsComponent, typeof i6.SpatialChartsComponent], [typeof i1.VisualizerComponent, typeof i2.RegionEditorComponent, typeof i3.HexColorPickerComponent, typeof i4.ChannelHistogramComponent, typeof i5.SpatialControlsComponent, typeof i6.SpatialChartsComponent]>;
48
27
  static ɵinj: i0.ɵɵInjectorDeclaration<VisualizationModule>;
49
28
  }
@@ -0,0 +1,30 @@
1
+ import { EventEmitter, NgZone, OnDestroy } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /** A screen position, in CSS pixels. */
4
+ export interface FloatingPos {
5
+ x: number;
6
+ y: number;
7
+ }
8
+ /**
9
+ * Drag handle of a floating, `position: fixed` panel (the intensity inset header,
10
+ * the toolbar dock handle). On mousedown it asks {@link origin} where the panel is —
11
+ * the host may detach a docked panel right there — then emits the new position on
12
+ * every move until mouseup.
13
+ *
14
+ * The move/up listeners exist only while a drag is in progress and run outside the
15
+ * Angular zone, re-entering it per emitted position: a permanent window mousemove
16
+ * listener made every pointer move anywhere in the host app run change detection.
17
+ */
18
+ export declare class FloatingDragDirective implements OnDestroy {
19
+ private readonly zone;
20
+ /** Called on mousedown: the panel's position the drag starts from. */
21
+ origin: () => FloatingPos;
22
+ /** The panel's new position, per pointer move. */
23
+ readonly vizFloatingDragMove: EventEmitter<FloatingPos>;
24
+ private end;
25
+ constructor(zone: NgZone);
26
+ onMouseDown(e: MouseEvent): void;
27
+ ngOnDestroy(): void;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<FloatingDragDirective, never>;
29
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FloatingDragDirective, "[vizFloatingDrag]", never, { "origin": { "alias": "vizFloatingDrag"; "required": false; }; }, { "vizFloatingDragMove": "vizFloatingDragMove"; }, never, never, true, never>;
30
+ }
@@ -0,0 +1,54 @@
1
+ import { Observable } from 'rxjs';
2
+ import { Message } from 'primeng/api';
3
+ import { IRegionStore } from '../contracts/visualizer.contract';
4
+ import { Region } from '../models/region';
5
+ import { RegionOpsService } from '../region-ops.service';
6
+ /** The region-store members the set-operations read and write through. */
7
+ export type RegionActionsTarget = Pick<IRegionStore, 'getRegions' | 'setRegions' | 'setSelectedShapeIndices' | 'getSelectedShapeIndices$' | 'getCanUndo$' | 'getCanRedo$'>;
8
+ /**
9
+ * Region set-operations on the current selection (jit-ui#85) — select all, merge,
10
+ * ungroup, inverse, simplify — plus the store mirrors the toolbar and the context
11
+ * menu read synchronously: the selection and the undo/redo availability.
12
+ *
13
+ * Every operation commits through `setRegions`, so it is undo-tracked and the
14
+ * backend on screen re-renders; profile lines and unselected regions are kept.
15
+ */
16
+ export declare class RegionActions {
17
+ private readonly target;
18
+ private readonly ops;
19
+ /** `[width, height]` of the image, when known — the frame inverse and merge rasterize in. */
20
+ private readonly imageSize;
21
+ private readonly notify;
22
+ /** Current selection (array indices), mirrored from the store. */
23
+ selectedIndices: number[];
24
+ /** Whether a region action is available to undo / redo; drive the toolbar buttons. */
25
+ canUndo: boolean;
26
+ canRedo: boolean;
27
+ /** Custom-threshold Simplify dialog. */
28
+ displaySimplifyDialog: boolean;
29
+ simplifyThreshold: number;
30
+ constructor(target: RegionActionsTarget, ops: RegionOpsService,
31
+ /** `[width, height]` of the image, when known — the frame inverse and merge rasterize in. */
32
+ imageSize: () => number[] | undefined, notify: (message: Message) => void);
33
+ /** Mirror the store's selection and undo/redo depth until `until$` emits.
34
+ * `changed` runs after an undo/redo flip (the toolbar binds those). */
35
+ bind(until$: Observable<unknown>, changed: () => void): void;
36
+ /** The currently-selected regions (live store instances). */
37
+ get selected(): Region[];
38
+ /** Select every region on the image (excludes intensity-profile lines). */
39
+ selectAll(): void;
40
+ /** Merge the selected regions into a single (possibly multi-part) region. */
41
+ merge(): void;
42
+ /** Split each selected multi-part region into one region per part. */
43
+ ungroup(): void;
44
+ /** Replace the selection with its inverse inside the image rectangle. */
45
+ inverse(): void;
46
+ /** Douglas–Peucker simplify each selected region by `thresholdPx`, closing the dialog. */
47
+ simplify(thresholdPx: number): void;
48
+ openSimplifyDialog(): void;
49
+ /** Commit a set-op: drop `remove`, append `add`, and select the results. */
50
+ private replace;
51
+ /** Image pixel dimensions for the raster ops; falls back to the selection's extent
52
+ * when the image size isn't known (keeps clamping sane). */
53
+ private frame;
54
+ }
@@ -0,0 +1,27 @@
1
+ import { IImageInfo } from '../contracts/image.contract';
2
+ import { IRegionStore } from '../contracts/visualizer.contract';
3
+ /** The region-store members {@link applyImageRois} writes through. */
4
+ export type RegionLoadTarget = Pick<IRegionStore, 'importRegions' | 'enterStackMode' | 'setRegions' | 'resetUndoHistory'>;
5
+ /**
6
+ * Apply an image's saved ROIs once its render has landed, choosing the region
7
+ * layout from the image's shape:
8
+ *
9
+ * - **Folder stack** (`isStack && tiled === false`, see loadSeriesAsStack): a stack
10
+ * of self-contained per-slice files. Each slice-file may carry its own sibling
11
+ * `<stem>.geojson` (`roiJsonStrs[z]`), but a fresh folder with none yet leaves
12
+ * `roiJsonStrs` undefined — so this keys off `tiled === false`, NOT `roiJsonStrs`,
13
+ * and an unannotated folder stack still enters the per-slice-file layout (saving
14
+ * back one geojson per slice-file) rather than the combined one (jit-ui#93).
15
+ * - **Single-file z-stack**: one sibling geojson holding every slice's regions,
16
+ * indexed by QuPath's `geometry.plane.z`. Per-slice (combined) mode is entered when
17
+ * the geojson actually carries slice indices, or when there is nothing yet to
18
+ * author against. A legacy geojson whose regions are all on the default plane
19
+ * stays global (shown on every slice), so existing single-plane annotations are
20
+ * not confined to slice 0.
21
+ * - **Single plane** (or that legacy global stack): one region set for the image.
22
+ * Loading saved ROIs is not a user edit, so the undo history starts fresh and the
23
+ * first undo cannot wipe them (jit-ui#85).
24
+ *
25
+ * `z` is the slice shown now; entering stack mode makes it live and resets undo.
26
+ */
27
+ export declare function applyImageRois(info: IImageInfo, target: RegionLoadTarget, z: number): void;
@@ -0,0 +1,74 @@
1
+ import { Observable } from 'rxjs';
2
+ import { IImageInfo } from '../contracts/image.contract';
3
+ import { PlotType, PlotTypeId } from '../contracts/plot-type';
4
+ import { SpatialDataPort } from '../contracts/ports/spatial-data.port';
5
+ import { SpatialDataset } from '../contracts/spatial-dataset.contract';
6
+ import { SpatialGates } from '../plot-mode/plot-type-menu';
7
+ /** What a dataset switch asks of the viewer. */
8
+ export interface SpatialBinderHost {
9
+ /** The plot-type gates changed: recompute the selector. */
10
+ gatesChanged(): void;
11
+ /** The selector's current id, and the built-in type rendered for it. */
12
+ selectedId(): PlotTypeId;
13
+ basePlotType(): PlotType;
14
+ /** Whether an image is loaded. */
15
+ hasImage(): boolean;
16
+ selectPlotType(type: PlotType): void;
17
+ /** Re-plot the current mode. */
18
+ replot(): void;
19
+ /** Publish an image as the host's current one. */
20
+ publishImage(info: IImageInfo): void;
21
+ setImageLoading(loading: boolean): void;
22
+ /** The switch is handled: reconcile the selection with the new gates and re-render. */
23
+ settled(): void;
24
+ detectChanges(): void;
25
+ }
26
+ /**
27
+ * Binds the viewer to the spatial-omics dataset on `SPATIAL_DATA_PORT`: the gates it
28
+ * puts on the plot-type selector ({@link gates}), the mode an image-less dataset opens
29
+ * on, and publishing a dataset's registered volume AS the image.
30
+ *
31
+ * No-op when the host provides no port — the spatial types then stay hidden.
32
+ */
33
+ export declare class SpatialDatasetBinder implements SpatialGates {
34
+ private readonly port;
35
+ private readonly host;
36
+ /** The dataset on offer, for drawing one that brings no image. */
37
+ dataset: SpatialDataset | null;
38
+ /** A dataset is published — gates the spatial plot types; the toolbar binds it too. */
39
+ hasDataset: boolean;
40
+ /** Its observations carry a z, gating the 3D spatial mode. */
41
+ has3d: boolean;
42
+ /** It brings pixels of its own (see {@link SpatialGates.hasPixels}). */
43
+ hasPixels: boolean;
44
+ /** Dataset identity + capability shape the last emission was handled at, so a
45
+ * switch between two datasets of the same shape is not mistaken for a repeat. */
46
+ private key;
47
+ /** Dataset + geometry the published volume image was built from, so a re-emitted
48
+ * dataset doesn't re-fetch megabytes or reset the user's scrub. */
49
+ private volumeImageKey;
50
+ /** Blob URLs backing that image — ours to revoke. */
51
+ private volumeImageUrls;
52
+ constructor(port: SpatialDataPort | undefined, host: SpatialBinderHost);
53
+ /** Follow the port's dataset until `until$` emits. */
54
+ bind(until$: Observable<unknown>): void;
55
+ /** Revoke the published volume image's blob URLs (teardown). */
56
+ dispose(): void;
57
+ private onDataset;
58
+ /**
59
+ * Publish a dataset's reference volume AS the image, and open the 2D Image view on it:
60
+ * the slice bar scrubs z, and the contrast window, colormaps and region tools all work
61
+ * because the volume genuinely is the image now. The 3D cloud stays one pick away.
62
+ *
63
+ * Keyed by dataset + geometry: the dataset stream re-emits on things like a
64
+ * colour-column change, and rebuilding then would re-fetch the voxels and throw the
65
+ * user back to the middle slice.
66
+ */
67
+ private showVolumeAsImage;
68
+ /** Forget the published volume image so re-selecting the dataset rebuilds it. The
69
+ * URLs deliberately stay alive: the host may still be displaying that image, and
70
+ * revoking under it would break every later tile read. They are freed when the next
71
+ * volume replaces them, or on {@link dispose}. */
72
+ private dropVolumeImage;
73
+ private revokeVolumeImageUrls;
74
+ }
@@ -0,0 +1,49 @@
1
+ import { NgZone } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { PlotModeTools } from '../contracts/plot-type-contribution.contract';
4
+ import { IVisualizer } from '../contracts/visualizer.contract';
5
+ /** The backend members tool arming drives. */
6
+ export type ToolModesTarget = Pick<IVisualizer, 'getRegionOverlay' | 'setDragMode' | 'setActiveTool' | 'setWandOptions' | 'setBrushOptions' | 'setVertexEraserRadius'>;
7
+ /** Where the armed tool is recorded for everyone else (the shared session store). */
8
+ export interface ActiveToolRecord {
9
+ setActiveTool(id: string | null): void;
10
+ getActiveTool$(): Observable<string | null>;
11
+ }
12
+ /**
13
+ * The armed tool mode (one at a time across the region overlay, the viewport drag
14
+ * modes and the on-canvas tools) and the toolbar's tool settings it arms them with.
15
+ */
16
+ export declare class ToolModes {
17
+ private readonly target;
18
+ private readonly record;
19
+ /** Runs after every arm/disarm with the newly armed mode. */
20
+ private readonly armed;
21
+ /** The armed mode, or null. */
22
+ active: string | null;
23
+ /** Wand sensitivity — higher = stricter (smaller selection). Matches QuPath default. */
24
+ wandSensitivity: number;
25
+ /** Brush diameter in image-pixel coordinates (drives the painted disc size). */
26
+ brushSize: number;
27
+ /** Vertex eraser radius in image-pixel coordinates. */
28
+ vertexEraserRadius: number;
29
+ /** The toolbar tools a contributed plot mode may arm. Calls can come from outside
30
+ * Angular, hence the zone. */
31
+ readonly plotModeTools: PlotModeTools;
32
+ /** Class the brush paints while a plot mode armed it; null = plain brush. */
33
+ private brushClass;
34
+ constructor(target: ToolModesTarget, record: ActiveToolRecord, zone: NgZone,
35
+ /** Runs after every arm/disarm with the newly armed mode. */
36
+ armed: (mode: string | null) => void, markForCheck: () => void);
37
+ /** A tool picked by the user (always the plain tool, never a plot mode's brush class);
38
+ * re-picking the armed one disarms it. */
39
+ toggle(mode: string): void;
40
+ /** Arm `mode` (or nothing) across every tool. */
41
+ apply(mode: string | null): void;
42
+ /** Disarm whatever is armed and clear every tool mode (a plot-type switch). */
43
+ deactivate(): void;
44
+ setWandSensitivity(value: number | undefined): void;
45
+ setBrushSize(value: number | undefined): void;
46
+ setVertexEraserRadius(value: number | undefined): void;
47
+ /** The options a canvas tool is armed with, from the toolbar's settings. */
48
+ private options;
49
+ }
@@ -0,0 +1,71 @@
1
+ import { NgZone } from '@angular/core';
2
+ /** What the shortcuts drive: the viewer's actions and the state they gate on. */
3
+ export interface ShortcutHost {
4
+ /** Id of the plot div; the wheel and the context menu act only over it. */
5
+ readonly plotDivName: string;
6
+ /** The viewer's own element (toolbar + plot); its keys are scoped to it. Falls back
7
+ * to the plot div when absent. */
8
+ readonly hostElement?: HTMLElement | null;
9
+ /** The armed tool — SAM point mode takes Enter / Escape. */
10
+ activeDragMode(): string | null;
11
+ /** ←/→ step the slice: a loaded stack in the Image view. */
12
+ canStepSlice(): boolean;
13
+ /** The wheel steps the zoom: a 2D view whose renderer does not read the wheel itself. */
14
+ wheelZooms(): boolean;
15
+ stepSlice(delta: number): void;
16
+ /** SAM point mode: commit (Enter) or discard (Escape) the prompt. */
17
+ resolveSamPrompt(commit: boolean): void;
18
+ undo(): void;
19
+ redo(): void;
20
+ deleteRegion(): void;
21
+ zoomIn(): void;
22
+ zoomOut(): void;
23
+ toggleDragMode(mode: string): void;
24
+ openContextMenu(event: MouseEvent): void;
25
+ }
26
+ /**
27
+ * The viewer's keyboard, wheel and context-menu handling: one window listener each,
28
+ * registered OUTSIDE the Angular zone (zone-patched, every event anywhere in the host
29
+ * app ran app-wide change detection) and re-entering it only to act.
30
+ *
31
+ * Keys: ←/→ step the slice; Enter/Escape resolve a SAM point prompt; Ctrl/Cmd+Z undo,
32
+ * Ctrl/Cmd+Shift+Z or +Y redo; bare Delete/Backspace/d delete the selected region,
33
+ * +/= and -/_ zoom, and single letters toggle tools (`TOOL_KEYS`). Any other
34
+ * modified key is left to the browser (Cmd/Ctrl+D must not delete a region).
35
+ *
36
+ * Keys are per viewer: with two live viewers (a main view and a pipeline preview)
37
+ * one Delete must not delete in both. A key goes to the viewer that holds focus, or
38
+ * — focus elsewhere — to the viewer the pointer last moved over; any other viewer
39
+ * ignores it (review CORE-2).
40
+ */
41
+ export declare class ViewerShortcuts {
42
+ private readonly host;
43
+ private readonly zone;
44
+ /** Every attached instance, to find the one holding focus. */
45
+ private static readonly live;
46
+ /** The viewer the pointer last moved over. */
47
+ private static lastHovered;
48
+ private readonly listeners;
49
+ constructor(host: ShortcutHost, zone: NgZone);
50
+ /** Register the window listeners (outside the zone). */
51
+ attach(): void;
52
+ /** Remove every listener {@link attach} added. */
53
+ detach(): void;
54
+ private listen;
55
+ private contains;
56
+ /** Whether this viewer takes keys now: it holds focus, or nothing does and the
57
+ * pointer was last over it. */
58
+ private ownsKeys;
59
+ private overPlot;
60
+ private run;
61
+ private onContextMenu;
62
+ private onWheel;
63
+ private onKeydown;
64
+ /**
65
+ * ←/→ step the slice in the Image view, the same way the slider does — only for a
66
+ * loaded stack, and not while a form field or the slider itself has focus (it
67
+ * handles arrows natively; stepping here too would double-step). Up/Down are left
68
+ * to OpenSeadragon (panning).
69
+ */
70
+ private isSliceStepKey;
71
+ }
@@ -0,0 +1,55 @@
1
+ import { MenuItem } from 'primeng/api';
2
+ import { PlotType } from '../contracts/plot-type';
3
+ import { Region } from '../models/region';
4
+ /** What the right-click menu is built from: the view, the armed modes and the regions. */
5
+ export interface ContextMenuState {
6
+ /** 2D view (region tools, step zoom) vs a 3D scene (camera modes). */
7
+ isHeatmap: boolean;
8
+ /** The built-in type on screen; the Image view adds the vertex and Bézier items. */
9
+ basePlotType: PlotType;
10
+ activeDragMode: string | null;
11
+ activeSurface3dMode: string;
12
+ /** Every region on the image (intensity-profile lines included). */
13
+ regions: Region[];
14
+ /** The selection, as indices into {@link regions}. */
15
+ selectedIndices: number[];
16
+ /** Whether a region is a multi-part region that can be split back into parts. */
17
+ canUngroup(region: Region): boolean;
18
+ }
19
+ /** What the menu's items do (the viewer's own toolbar handlers). */
20
+ export interface ContextMenuActions {
21
+ autoscaleImage(): void;
22
+ zoomIn(): void;
23
+ zoomOut(): void;
24
+ toggleDragMode(mode: string): void;
25
+ toggleSurface3dMode(mode: string): void;
26
+ resetSurfaceCamera(): void;
27
+ selectAllRegions(): void;
28
+ mergeRegions(): void;
29
+ ungroupRegions(): void;
30
+ inverseRegions(): void;
31
+ simplifyRegions(thresholdPx: number): void;
32
+ openSimplifyDialog(): void;
33
+ toBezierRegion(): void;
34
+ toPolygonRegion(): void;
35
+ deleteRegion(): void;
36
+ }
37
+ /** The live regions at `indices` (stale indices dropped). */
38
+ export declare function regionsAt(regions: Region[], indices: number[]): Region[];
39
+ /** Regions eligible for set-ops: closed areas (rect / closed polygon / multi-polygon),
40
+ * excluding intensity-profile lines. */
41
+ export declare function opEligible(regions: Region[]): Region[];
42
+ /**
43
+ * The right-click menu: the selected-region actions lead (2D only), then the
44
+ * viewport and tool toggles for a 2D view, or the camera modes for a 3D scene. The
45
+ * armed mode is highlighted.
46
+ */
47
+ export declare function buildContextMenu(state: ContextMenuState, actions: ContextMenuActions): MenuItem[];
48
+ /**
49
+ * Immediate region actions on the current selection (jit-ui#85): merge, ungroup,
50
+ * inverse, simplify, the Bézier conversions, and delete — the one-shot geometry
51
+ * transforms, grouped apart from the tool/mode toggles and shown only when something
52
+ * is selected. Each item is gated on what the selection supports. "Select all" leads
53
+ * whenever the image has regions.
54
+ */
55
+ export declare function buildRegionActionItems(state: ContextMenuState, actions: ContextMenuActions): MenuItem[];