@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
@@ -1,5 +1,4 @@
1
- import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
- import { MenuItem } from 'primeng/api';
1
+ import { EventEmitter } from '@angular/core';
3
2
  import { IImageInfo } from '../contracts/image.contract';
4
3
  import { PlotType, PlotTypeId } from '../contracts/plot-type';
5
4
  import { ToolbarToolVisibility } from '../contracts/toolbar-config';
@@ -18,13 +17,13 @@ import * as i0 from "@angular/core";
18
17
  * diagram's right-click context menu and keyboard shortcuts, so keeping the
19
18
  * handlers in the host avoids duplicating that logic.
20
19
  */
21
- export declare class ToolbarComponent implements OnChanges {
20
+ export declare class ToolbarComponent {
22
21
  /** Current image (gates which control groups are shown). */
23
22
  imageInfo: IImageInfo | undefined;
24
23
  /** A spatial dataset is on offer: its plot modes are a choice even with no image loaded. */
25
24
  hasSpatialDataset: boolean;
26
25
  /** Whether the plot-type dropdown shows: for an image, or a spatial dataset with none. */
27
- get showPlotTypes(): boolean;
26
+ protected get showPlotTypes(): boolean;
28
27
  /** Plot types the active backend advertises, then any contributed modes. */
29
28
  plotTypeOptions: PlotTypeOption[];
30
29
  /** The selector's value: a built-in type or a contributed mode's id. */
@@ -40,7 +39,9 @@ export declare class ToolbarComponent implements OnChanges {
40
39
  /** Isosurface band as a 0–255 slider position (mapped onto the volume's real
41
40
  * intensity range by the renderer). Defaults to the full range. */
42
41
  isoRange: number[];
42
+ /** The last slice index of a stack. */
43
43
  maxIndex: number;
44
+ /** The current slice (0-based). */
44
45
  zIndex: number;
45
46
  /** True for any 2D (non Surface-3D) plot type. */
46
47
  isHeatmap: boolean;
@@ -51,20 +52,25 @@ export declare class ToolbarComponent implements OnChanges {
51
52
  * controls — flipping that would show 2D pan/zoom and hide the orbit controls.
52
53
  */
53
54
  is3dRegions: boolean;
55
+ /** A napari volume / isosurface view: the Region Editor (regions in 3D) without drawing tools. */
56
+ isVolumeView: boolean;
57
+ /** Whether the volume view is split with the slice editor (the slice, with every region tool). */
58
+ sliceEditor: boolean;
59
+ /** The armed tool's mode (zoom, pan, a drawing tool, `samPoint`, …), or null. */
54
60
  activeDragMode: string | null;
61
+ /** The 3D camera mode (`turntable` / `orbit` / …). */
55
62
  activeSurface3dMode: string;
56
63
  /** Whether the napari 3D axes/scale gizmo is currently shown (drives the toggle's look). */
57
64
  axesVisible: boolean;
65
+ /** The napari surface wireframe is on. */
58
66
  wireframeActive: boolean;
59
67
  /** Active napari 3D decimate factor (1 = Full … 8 = ⅛; default ½). */
60
68
  resolutionScale: number;
61
- /** Decimate-factor options for the Resolution dropdown. */
62
- readonly decimateOptions: {
63
- label: string;
64
- value: number;
65
- }[];
69
+ /** Magic-wand sensitivity. */
66
70
  wandSensitivity: number;
71
+ /** Brush diameter in image pixels. */
67
72
  brushSize: number;
73
+ /** Vertex-eraser radius in image pixels. */
68
74
  vertexEraserRadius: number;
69
75
  /** Whether a region action is available to undo (jit-ui#85). Greys out the
70
76
  * Undo button when false (nothing done yet, or all steps already undone). */
@@ -72,6 +78,7 @@ export declare class ToolbarComponent implements OnChanges {
72
78
  /** Whether an undone region action is available to redo (jit-ui#85). Greys
73
79
  * out the Redo button when false. */
74
80
  canRedo: boolean;
81
+ /** The single-image / stack choices of the Plotly stack toggle. */
75
82
  stackOptions: {
76
83
  name: string;
77
84
  val: string;
@@ -87,6 +94,7 @@ export declare class ToolbarComponent implements OnChanges {
87
94
  id: string;
88
95
  label: string;
89
96
  }[];
97
+ /** The selected SAM model id. */
90
98
  samModelId: string;
91
99
  /**
92
100
  * Tools contributed through {@link TOOLBAR_TOOLS}, already filtered to the
@@ -100,31 +108,48 @@ export declare class ToolbarComponent implements OnChanges {
100
108
  openDialogToolId: string | null;
101
109
  /** Active checkpoint per contributed tool, keyed by tool id. */
102
110
  toolModelIds: Record<string, string>;
111
+ /** A plot type or contributed mode was picked. */
103
112
  selectPlotType: EventEmitter<string>;
104
113
  /** Intensity (LINE) mode: add another colored line ROI + inset trace. */
105
114
  addProfileLine: EventEmitter<void>;
106
115
  /** Toggle image smoothing (bilinear) vs nearest-neighbour (crisp pixels). */
107
116
  toggleImageSmoothing: EventEmitter<void>;
117
+ /** The isosurface band slider moved: the new `[low, high]` pair. */
108
118
  isoRangeChange: EventEmitter<number[] | undefined>;
109
119
  /** Open the Channels & Histogram dialog (brightness/contrast, colormap, …). */
110
120
  openChannelHistogram: EventEmitter<void>;
111
121
  /** Open the spatial-omics controls (colour-by, legend, point display). */
112
122
  openSpatialControls: EventEmitter<void>;
123
+ /** Open the Region Editor dialog. */
113
124
  openRegionEditor: EventEmitter<void>;
125
+ /** Split the volume view with the slice editor, or close it. */
126
+ toggleSliceEditor: EventEmitter<void>;
127
+ /** A single-image / stack choice was picked. */
114
128
  selectStackOption: EventEmitter<{
115
129
  name: string;
116
130
  val: string;
117
131
  }>;
132
+ /** The live slice scrubber moved (fires while dragging). */
118
133
  zScrub: EventEmitter<number | undefined>;
134
+ /** The live slice scrubber was released on a slice. */
119
135
  zSlide: EventEmitter<number | undefined>;
136
+ /** A slice number was typed. */
120
137
  zIndexInput: EventEmitter<number>;
138
+ /** Re-plot at the typed slice. */
121
139
  reloadAndPlot: EventEmitter<void>;
140
+ /** Download the current view as PNG. */
122
141
  downloadImage: EventEmitter<void>;
142
+ /** Fit the image to the view. */
123
143
  autoscaleImage: EventEmitter<void>;
144
+ /** A zoom / pan / drawing tool button was clicked (its mode). */
124
145
  toggleDragMode: EventEmitter<string>;
146
+ /** Zoom in one step. */
125
147
  zoomIn: EventEmitter<void>;
148
+ /** Zoom out one step. */
126
149
  zoomOut: EventEmitter<void>;
150
+ /** A 3D camera mode button was clicked (its mode). */
127
151
  toggleSurface3dMode: EventEmitter<string>;
152
+ /** Reset the 3D camera. */
128
153
  resetSurfaceCamera: EventEmitter<void>;
129
154
  /** Toggle the napari 3D coordinate-axes / scale gizmo on/off. */
130
155
  toggleAxes: EventEmitter<void>;
@@ -132,6 +157,7 @@ export declare class ToolbarComponent implements OnChanges {
132
157
  toggleWireframe: EventEmitter<void>;
133
158
  /** Change the napari 3D decimate factor (reloads at the new resolution). */
134
159
  selectResolution: EventEmitter<number>;
160
+ /** Delete the selected region. */
135
161
  deleteRegion: EventEmitter<void>;
136
162
  /** Undo the last region action (jit-ui#85). */
137
163
  undoRegion: EventEmitter<void>;
@@ -154,105 +180,50 @@ export declare class ToolbarComponent implements OnChanges {
154
180
  openToolParams: EventEmitter<string>;
155
181
  /** SAM model picker (jit-ui#90 P1). */
156
182
  samModelChange: EventEmitter<string>;
183
+ /** The wand sensitivity slider moved. */
157
184
  wandSensitivityChange: EventEmitter<number | undefined>;
185
+ /** The brush size slider moved. */
158
186
  brushSizeChange: EventEmitter<number | undefined>;
187
+ /** The vertex-eraser radius slider moved. */
159
188
  vertexEraserRadiusChange: EventEmitter<number | undefined>;
160
- /** Sliders' bounds — toolbar UI constants (the values are host-owned). */
161
- readonly wandSensitivityMin = 0.5;
162
- readonly wandSensitivityMax = 10;
163
- readonly wandSensitivityStep = 0.1;
164
- readonly brushSizeMin = 5;
165
- readonly brushSizeMax = 300;
166
- readonly brushSizeStep = 5;
167
- readonly vertexEraserRadiusMin = 5;
168
- readonly vertexEraserRadiusMax = 300;
169
- readonly vertexEraserRadiusStep = 5;
170
- readonly isoValueMin = 0;
171
- readonly isoValueMax = 255;
172
- readonly isoValueStep = 1;
173
- displayHelpDialog: boolean;
174
- /** Model picker for the Segment button's dropdown menu. The active model
175
- * (`samModelId`) is marked with a check; selecting an item emits
176
- * `samModelChange` (jit-ui#90 P1).
177
- *
178
- * Held as a stable array (rebuilt only when `samModels`/`samModelId` change),
179
- * NOT a getter: a getter returns a fresh array with new `command` closures on
180
- * every change-detection tick, which makes the bound `p-menu` overlay rebuild
181
- * its DOM mid-interaction and swallow the click on a menu item.
182
- *
183
- * `tooltip` carries the model's description from {@link MODEL_INFO}; the
184
- * menus' shared item template turns it into the hover info icon. p-menu's own
185
- * rendering ignores the field (it reads `item.title`), so it is free to use. */
186
- samMenuItems: MenuItem[];
187
- /**
188
- * Model menus for the contributed tools, keyed by tool id. Same stable-array
189
- * reasoning as {@link samMenuItems} — and it is why this is a map rebuilt in
190
- * `ngOnChanges` rather than a method called from the template, which would
191
- * hand `p-menu` a new array every tick.
192
- *
193
- * A contributed tool supplies its own per-model description, so unlike the
194
- * SAM menu these do not consult {@link MODEL_INFO}: this library has no
195
- * copy for checkpoints it does not know about.
196
- */
197
- toolMenuItems: Record<string, MenuItem[]>;
198
- /** Rebuild the SAM model menu when the model list or active selection
199
- * changes (keeps the array reference stable across other CD ticks). */
200
- ngOnChanges(changes: SimpleChanges): void;
201
- /**
202
- * Strip markup from a model description so it can be read aloud.
203
- *
204
- * The copy in MODEL_INFO and in a contribution's `ToolModelOption.info` is
205
- * written for a visual tooltip rendered with `[escape]="false"`, so it carries
206
- * `<b>` and `<br>`. Passed to `aria-label` verbatim a screen reader announces
207
- * the tags, so they are removed and `<br>` becomes a sentence break. Entities
208
- * used in that copy (`&nbsp;`, `&times;`, `&amp;`) are decoded for the same
209
- * reason.
210
- */
211
- plainText(html: string): string;
212
- /** Contributed tool names for the help dialog's prompted/no-prompt contrast,
213
- * e.g. "YOLO, Retinal layers". Empty when nothing is registered, which is
214
- * why the sentence that uses it is itself conditional. */
215
- get contributedToolNames(): string;
216
- /** Keeps each contributed tool's `p-menu` overlay alive across CD ticks —
217
- * re-creating it mid-interaction swallows the click on a menu item. */
218
- trackToolById(_index: number, tool: {
189
+ protected displayHelpDialog: boolean;
190
+ /** trackBy for the dialog tools' buttons. */
191
+ protected trackToolById(_index: number, tool: {
219
192
  id: string;
220
193
  }): string;
221
194
  /** The built-in type whose tools and controls apply to the current selection. */
222
- get effectivePlotType(): PlotType;
195
+ protected get effectivePlotType(): PlotType;
223
196
  /** The Image plot type renders as a natively pan/zoom-able raster, so the
224
197
  * generic zoom/pan tools are hidden. */
225
- get isImageView(): boolean;
198
+ protected get isImageView(): boolean;
226
199
  /** Either spatial-omics mode is active, so its controls are worth offering.
227
200
  * The 3D cloud needs the panel MORE than the 2D view does, not less: colouring,
228
201
  * the legend and category show/hide are the only way to make sense of a
229
202
  * million overlapping points. */
230
- get isSpatialMode(): boolean;
231
- /** A plot-type icon is a PrimeNG font glyph (e.g. `pi pi-image`) rather than an
232
- * SVG asset path — drives which element the selector item template renders. */
233
- isPiIcon(icon: string | undefined): boolean;
203
+ protected get isSpatialMode(): boolean;
234
204
  /** Backends with a vertex-editing region overlay: OSD Image and napari-js WebGPU image
235
205
  * (jit-ui#102). Gates the polygon / add-vertex / delete-vertex / Bézier-convert tools. */
236
- get supportsRegionVertexTools(): boolean;
206
+ protected get supportsRegionVertexTools(): boolean;
237
207
  /** Plot types that scrub a z-stack live (the renderer swaps the slice in place): the OSD Image
238
208
  * view, the napari-js WebGPU image, the napari-js surface — which rebuilds the height field
239
209
  * from the picked slice (jit-ui#102) — and the 2D spatial-omics view, where a 3D dataset's
240
210
  * registered volume is the image and the slider picks the section whose observations are
241
- * drawn. Drives the per-slice slider. */
242
- get showsLiveSliceScrubber(): boolean;
211
+ * drawn. Also a split volume view, whose slice editor shows the slice picked. Drives the
212
+ * per-slice slider. */
213
+ protected get showsLiveSliceScrubber(): boolean;
243
214
  /** Any napari-js WebGPU plot type. The single-image/stack toggle + slice-number field are
244
215
  * Plotly-only stack controls, so they're hidden for napari (jit-ui#102). */
245
- get isNapariMode(): boolean;
216
+ protected get isNapariMode(): boolean;
246
217
  /** ISOSURFACE (Plotly or napari-js WebGPU, either resolution) shows the isovalue range slider. */
247
- get isIsosurfaceMode(): boolean;
218
+ protected get isIsosurfaceMode(): boolean;
248
219
  /** The napari-js WebGPU surface — shows the wireframe toggle. */
249
- get isNapariSurfaceMode(): boolean;
220
+ protected get isNapariSurfaceMode(): boolean;
250
221
  /** Any napari-js WebGPU 3D type (volume/isosurface/surface) — shows the Resolution control. */
251
- get isNapari3dMode(): boolean;
222
+ protected get isNapari3dMode(): boolean;
252
223
  /** Intensity profile lines are Region-based and available in the Heatmap and
253
224
  * Image plot types, which show the Intensity tool group. */
254
- get isIntensityCapable(): boolean;
255
- showHelp(): void;
225
+ protected get isIntensityCapable(): boolean;
226
+ protected showHelp(): void;
256
227
  static ɵfac: i0.ɵɵFactoryDeclaration<ToolbarComponent, never>;
257
- static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarComponent, "plotting-toolbar", never, { "imageInfo": { "alias": "imageInfo"; "required": false; }; "hasSpatialDataset": { "alias": "hasSpatialDataset"; "required": false; }; "plotTypeOptions": { "alias": "plotTypeOptions"; "required": false; }; "selectedPlotType": { "alias": "selectedPlotType"; "required": false; }; "basePlotType": { "alias": "basePlotType"; "required": false; }; "isoRange": { "alias": "isoRange"; "required": false; }; "maxIndex": { "alias": "maxIndex"; "required": false; }; "zIndex": { "alias": "zIndex"; "required": false; }; "isHeatmap": { "alias": "isHeatmap"; "required": false; }; "is3dRegions": { "alias": "is3dRegions"; "required": false; }; "activeDragMode": { "alias": "activeDragMode"; "required": false; }; "activeSurface3dMode": { "alias": "activeSurface3dMode"; "required": false; }; "axesVisible": { "alias": "axesVisible"; "required": false; }; "wireframeActive": { "alias": "wireframeActive"; "required": false; }; "resolutionScale": { "alias": "resolutionScale"; "required": false; }; "wandSensitivity": { "alias": "wandSensitivity"; "required": false; }; "brushSize": { "alias": "brushSize"; "required": false; }; "vertexEraserRadius": { "alias": "vertexEraserRadius"; "required": false; }; "canUndo": { "alias": "canUndo"; "required": false; }; "canRedo": { "alias": "canRedo"; "required": false; }; "stackOptions": { "alias": "stackOptions"; "required": false; }; "tools": { "alias": "tools"; "required": false; }; "imageSmoothingEnabled": { "alias": "imageSmoothingEnabled"; "required": false; }; "samModels": { "alias": "samModels"; "required": false; }; "samModelId": { "alias": "samModelId"; "required": false; }; "contributedTools": { "alias": "contributedTools"; "required": false; }; "dialogTools": { "alias": "dialogTools"; "required": false; }; "openDialogToolId": { "alias": "openDialogToolId"; "required": false; }; "toolModelIds": { "alias": "toolModelIds"; "required": false; }; }, { "selectPlotType": "selectPlotType"; "addProfileLine": "addProfileLine"; "toggleImageSmoothing": "toggleImageSmoothing"; "isoRangeChange": "isoRangeChange"; "openChannelHistogram": "openChannelHistogram"; "openSpatialControls": "openSpatialControls"; "openRegionEditor": "openRegionEditor"; "selectStackOption": "selectStackOption"; "zScrub": "zScrub"; "zSlide": "zSlide"; "zIndexInput": "zIndexInput"; "reloadAndPlot": "reloadAndPlot"; "downloadImage": "downloadImage"; "autoscaleImage": "autoscaleImage"; "toggleDragMode": "toggleDragMode"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "toggleSurface3dMode": "toggleSurface3dMode"; "resetSurfaceCamera": "resetSurfaceCamera"; "toggleAxes": "toggleAxes"; "toggleWireframe": "toggleWireframe"; "selectResolution": "selectResolution"; "deleteRegion": "deleteRegion"; "undoRegion": "undoRegion"; "redoRegion": "redoRegion"; "segmentRegions": "segmentRegions"; "segmentCellpose": "segmentCellpose"; "runTool": "runTool"; "toggleDialogTool": "toggleDialogTool"; "toolModelChange": "toolModelChange"; "openToolParams": "openToolParams"; "samModelChange": "samModelChange"; "wandSensitivityChange": "wandSensitivityChange"; "brushSizeChange": "brushSizeChange"; "vertexEraserRadiusChange": "vertexEraserRadiusChange"; }, never, ["*"], false, never>;
228
+ static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarComponent, "plotting-toolbar", never, { "imageInfo": { "alias": "imageInfo"; "required": false; }; "hasSpatialDataset": { "alias": "hasSpatialDataset"; "required": false; }; "plotTypeOptions": { "alias": "plotTypeOptions"; "required": false; }; "selectedPlotType": { "alias": "selectedPlotType"; "required": false; }; "basePlotType": { "alias": "basePlotType"; "required": false; }; "isoRange": { "alias": "isoRange"; "required": false; }; "maxIndex": { "alias": "maxIndex"; "required": false; }; "zIndex": { "alias": "zIndex"; "required": false; }; "isHeatmap": { "alias": "isHeatmap"; "required": false; }; "is3dRegions": { "alias": "is3dRegions"; "required": false; }; "isVolumeView": { "alias": "isVolumeView"; "required": false; }; "sliceEditor": { "alias": "sliceEditor"; "required": false; }; "activeDragMode": { "alias": "activeDragMode"; "required": false; }; "activeSurface3dMode": { "alias": "activeSurface3dMode"; "required": false; }; "axesVisible": { "alias": "axesVisible"; "required": false; }; "wireframeActive": { "alias": "wireframeActive"; "required": false; }; "resolutionScale": { "alias": "resolutionScale"; "required": false; }; "wandSensitivity": { "alias": "wandSensitivity"; "required": false; }; "brushSize": { "alias": "brushSize"; "required": false; }; "vertexEraserRadius": { "alias": "vertexEraserRadius"; "required": false; }; "canUndo": { "alias": "canUndo"; "required": false; }; "canRedo": { "alias": "canRedo"; "required": false; }; "stackOptions": { "alias": "stackOptions"; "required": false; }; "tools": { "alias": "tools"; "required": false; }; "imageSmoothingEnabled": { "alias": "imageSmoothingEnabled"; "required": false; }; "samModels": { "alias": "samModels"; "required": false; }; "samModelId": { "alias": "samModelId"; "required": false; }; "contributedTools": { "alias": "contributedTools"; "required": false; }; "dialogTools": { "alias": "dialogTools"; "required": false; }; "openDialogToolId": { "alias": "openDialogToolId"; "required": false; }; "toolModelIds": { "alias": "toolModelIds"; "required": false; }; }, { "selectPlotType": "selectPlotType"; "addProfileLine": "addProfileLine"; "toggleImageSmoothing": "toggleImageSmoothing"; "isoRangeChange": "isoRangeChange"; "openChannelHistogram": "openChannelHistogram"; "openSpatialControls": "openSpatialControls"; "openRegionEditor": "openRegionEditor"; "toggleSliceEditor": "toggleSliceEditor"; "selectStackOption": "selectStackOption"; "zScrub": "zScrub"; "zSlide": "zSlide"; "zIndexInput": "zIndexInput"; "reloadAndPlot": "reloadAndPlot"; "downloadImage": "downloadImage"; "autoscaleImage": "autoscaleImage"; "toggleDragMode": "toggleDragMode"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "toggleSurface3dMode": "toggleSurface3dMode"; "resetSurfaceCamera": "resetSurfaceCamera"; "toggleAxes": "toggleAxes"; "toggleWireframe": "toggleWireframe"; "selectResolution": "selectResolution"; "deleteRegion": "deleteRegion"; "undoRegion": "undoRegion"; "redoRegion": "redoRegion"; "segmentRegions": "segmentRegions"; "segmentCellpose": "segmentCellpose"; "runTool": "runTool"; "toggleDialogTool": "toggleDialogTool"; "toolModelChange": "toolModelChange"; "openToolParams": "openToolParams"; "samModelChange": "samModelChange"; "wandSensitivityChange": "wandSensitivityChange"; "brushSizeChange": "brushSizeChange"; "vertexEraserRadiusChange": "vertexEraserRadiusChange"; }, never, ["*"], true, never>;
258
229
  }
@@ -1,64 +1,57 @@
1
- import { WandService } from '../wand/wand.service';
2
- import { IViewportHost, IRegionDataHost } from '../../contracts/coordinate-transform.contract';
3
- import * as i0 from "@angular/core";
1
+ import { IVertexEraserOptions } from '../../contracts/display-types';
2
+ import { UndoGestureTarget } from '../tool-kit/undo-gesture';
3
+ import { CanvasToolHost, ICanvasTool } from '../tool-kit/canvas-tool';
4
4
  /**
5
- * Collaboration interface the vertex eraser needs from its host backend.
6
- *
7
- * Extends {@link IViewportHost} for coordinate conversion + overlay attachment,
8
- * so the eraser is backend-agnostic (Plotly and OpenSeadragon both satisfy it).
5
+ * @deprecated One host serves every canvas tool: use {@link CanvasToolHost}.
6
+ * The eraser converts with its readback's per-axis ratios
7
+ * (`getCachedImageData().ratios`, RT-14); `getCachedImageRatio()` is gone.
9
8
  */
10
- export interface VertexEraserToolHost extends IViewportHost, IRegionDataHost {
11
- /**
12
- * Drop the wand's in-progress stroke. Called after the eraser modifies
13
- * regions — the wand's accumulator may now reference stale vertices.
14
- */
15
- invalidateWandRegion(): void;
16
- /**
17
- * Data-coords-per-image-pixel ratio (== cachedImageRatios[0] || 1). Used to
18
- * convert between matrix coordinates (the eraser's native space) and the
19
- * backend's data coordinates.
20
- */
21
- getCachedImageRatio(): number;
22
- }
9
+ export type VertexEraserToolHost = CanvasToolHost;
23
10
  /**
24
11
  * Vertex eraser. A custom canvas overlay that, on click/drag, removes any
25
12
  * polygon vertex within `radius` matrix-pixels of the cursor from every
26
- * `type: 'path'` shape on the plot. Polygons that fall below 3 vertices
27
- * (or polylines below 2) are removed entirely.
13
+ * annotation polygon/polyline (never an intensity-profile line). The outline is
14
+ * rejoined where it crosses the eraser's edge, so erasing a corner of a sparse
15
+ * outline (a traced box is four vertices) trims that corner instead of cutting
16
+ * to the next corners; a Bezier region's anchors are dropped outright. Polygons
17
+ * that fall below 3 vertices (or polylines below 2) are removed entirely.
28
18
  *
29
19
  * The cursor is rendered as a dashed-red circle on the overlay so the user
30
20
  * can see the active radius while moving.
31
21
  */
32
- export declare class VertexEraserToolService {
33
- private wandService;
22
+ export declare class VertexEraserTool implements ICanvasTool<IVertexEraserOptions> {
23
+ readonly id = "eraseVertex";
34
24
  private host;
35
- private overlay;
25
+ private readonly overlay;
36
26
  private dragging;
37
27
  /** Eraser radius in image-pixel (matrix) coordinates. */
38
28
  private radius;
39
29
  private cursor;
40
- private readonly boundMouseDown;
41
- private readonly boundMouseMove;
42
- private readonly boundMouseUp;
43
- constructor(wandService: WandService);
44
- bindHost(host: VertexEraserToolHost): void;
45
- setMode(active: boolean): void;
30
+ /** Makes each drag one undo step, however long the user pauses (RT-12). */
31
+ private readonly gesture;
32
+ /** @param gestureTarget the region store, so each drag is one undo step. */
33
+ constructor(gestureTarget?: UndoGestureTarget | null);
34
+ /** Arm the eraser on `host`, optionally with a new radius. */
35
+ activate(host: CanvasToolHost, options?: IVertexEraserOptions): void;
36
+ /** Disarm: remove the overlay and its cursor. */
37
+ deactivate(): void;
38
+ setOptions(options: IVertexEraserOptions): void;
46
39
  /** Set eraser radius in matrix-pixel (image pixel) coordinates. */
47
40
  setRadius(radius: number): void;
48
41
  private createOverlay;
49
- private destroyOverlay;
50
- private onMouseDown;
51
- private onMouseMove;
52
- private onMouseUp;
42
+ private onPointerDown;
43
+ private onPointerMove;
44
+ private onPointerUp;
53
45
  private updateCursor;
54
46
  /** Draw the eraser radius circle at the current cursor position. */
55
47
  private drawCursor;
48
+ /** The data↔matrix frame of the host's readback (identity without one). */
49
+ private frame;
56
50
  /**
57
- * Drop every vertex of every path-shape that lies within the eraser's
58
- * radius of the cursor. Polygons reduced below 3 vertices (or polylines
59
- * below 2) are removed entirely.
51
+ * Drop every vertex of every annotation polygon/polyline that lies within the
52
+ * eraser's radius of the cursor, rejoining the outline at the eraser's edge
53
+ * (see {@link eraseRingWithinRadius}). Polygons reduced below 3 vertices (or
54
+ * polylines below 2) are removed entirely. Edited regions keep their metadata.
60
55
  */
61
56
  private applyAtClient;
62
- static ɵfac: i0.ɵɵFactoryDeclaration<VertexEraserToolService, never>;
63
- static ɵprov: i0.ɵɵInjectableDeclaration<VertexEraserToolService>;
64
57
  }
@@ -0,0 +1,54 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * The toolbar's view group: 2D zoom / pan tools, or for a 3D view the camera
5
+ * modes and reset, the napari axes and wireframe toggles and the 3D
6
+ * resolution. Presentational: the host owns every value.
7
+ */
8
+ export declare class ViewControlsComponent {
9
+ /** A 2D view (zoom tools) rather than a 3D one (camera controls). */
10
+ isHeatmap: boolean;
11
+ /** The host shows the zoom tools. */
12
+ zoomTools: boolean;
13
+ /** The OSD Image view (pans natively; no Plotly drag-zoom). */
14
+ isImageView: boolean;
15
+ /** The armed zoom/pan tool (`zoom`, `pan`, …), or null. */
16
+ activeDragMode: string | null;
17
+ /** The 3D camera mode (`turntable` / `orbit` / …). */
18
+ activeSurface3dMode: string;
19
+ /** A napari-js WebGPU view (axes toggle, napari camera). */
20
+ isNapariMode: boolean;
21
+ /** The napari-js surface (shows the wireframe toggle). */
22
+ isNapariSurfaceMode: boolean;
23
+ /** A napari-js 3D view (shows the Resolution dropdown). */
24
+ isNapari3dMode: boolean;
25
+ /** The napari 3D axes gizmo is shown. */
26
+ axesVisible: boolean;
27
+ /** The napari surface wireframe is on. */
28
+ wireframeActive: boolean;
29
+ /** Active napari 3D decimate factor (1 = Full … 8 = ⅛). */
30
+ resolutionScale: number;
31
+ /** A zoom/pan tool button was clicked (its mode). */
32
+ toggleDragMode: EventEmitter<string>;
33
+ /** Zoom in one step. */
34
+ zoomIn: EventEmitter<void>;
35
+ /** Zoom out one step. */
36
+ zoomOut: EventEmitter<void>;
37
+ /** A 3D camera mode button was clicked (its mode). */
38
+ toggleSurface3dMode: EventEmitter<string>;
39
+ /** Reset the 3D camera. */
40
+ resetSurfaceCamera: EventEmitter<void>;
41
+ /** Toggle the napari 3D axes gizmo. */
42
+ toggleAxes: EventEmitter<void>;
43
+ /** Toggle the napari surface wireframe. */
44
+ toggleWireframe: EventEmitter<void>;
45
+ /** A napari 3D decimate factor was picked. */
46
+ selectResolution: EventEmitter<number>;
47
+ /** Decimate-factor options for the Resolution dropdown. */
48
+ protected readonly decimateOptions: {
49
+ label: string;
50
+ value: number;
51
+ }[];
52
+ static ɵfac: i0.ɵɵFactoryDeclaration<ViewControlsComponent, never>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<ViewControlsComponent, "toolbar-view-controls", never, { "isHeatmap": { "alias": "isHeatmap"; "required": false; }; "zoomTools": { "alias": "zoomTools"; "required": false; }; "isImageView": { "alias": "isImageView"; "required": false; }; "activeDragMode": { "alias": "activeDragMode"; "required": false; }; "activeSurface3dMode": { "alias": "activeSurface3dMode"; "required": false; }; "isNapariMode": { "alias": "isNapariMode"; "required": false; }; "isNapariSurfaceMode": { "alias": "isNapariSurfaceMode"; "required": false; }; "isNapari3dMode": { "alias": "isNapari3dMode"; "required": false; }; "axesVisible": { "alias": "axesVisible"; "required": false; }; "wireframeActive": { "alias": "wireframeActive"; "required": false; }; "resolutionScale": { "alias": "resolutionScale"; "required": false; }; }, { "toggleDragMode": "toggleDragMode"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "toggleSurface3dMode": "toggleSurface3dMode"; "resetSurfaceCamera": "resetSurfaceCamera"; "toggleAxes": "toggleAxes"; "toggleWireframe": "toggleWireframe"; "selectResolution": "selectResolution"; }, never, never, true, never>;
54
+ }
@@ -0,0 +1,49 @@
1
+ import { Polygon } from '../../models/region';
2
+ import { IWandOptions, WandType } from '../../contracts/display-types';
3
+ import { CachedFrame } from '../tool-kit/frame-pixels';
4
+ /**
5
+ * Wand region-grow pipeline (pure, DOM- and DI-free), modelled after QuPath's
6
+ * WandToolEventHandler: extract a square patch around the click, optionally
7
+ * blur it, compute a local threshold (per channel, or a CIELAB distance map),
8
+ * run a fixed-range flood fill from the centre, close the mask, and (for
9
+ * {@link computeWandRegion}) trace it to a polygon in image coordinates.
10
+ *
11
+ * `WandService` delegates here; workers and new code should import these
12
+ * functions directly.
13
+ */
14
+ export type { WandType };
15
+ export type WandOptions = IWandOptions;
16
+ export interface WandImage {
17
+ /**
18
+ * Grayscale: number[][] where data[y][x] is intensity.
19
+ * RGB: [r,g,b][][] where data[y][x] is a 3-tuple.
20
+ * Or a packed RGBA readback, read as RGB (see `tool-kit/frame-pixels`).
21
+ */
22
+ data: CachedFrame;
23
+ width: number;
24
+ height: number;
25
+ isGrayscale: boolean;
26
+ }
27
+ /** A wand patch mask: `size`×`size` 0/1 cells in patch-local coordinates. */
28
+ export interface WandPatchMask {
29
+ mask: Uint8Array;
30
+ size: number;
31
+ }
32
+ /**
33
+ * Grow a region from a click and trace it.
34
+ *
35
+ * @param image full-image pixel matrix (already in memory).
36
+ * @param cx click x in image-pixel coordinates.
37
+ * @param cy click y in image-pixel coordinates.
38
+ * @param options wand parameters; missing fields fall back to defaults.
39
+ * @returns a Polygon in image-pixel coordinates, or null if no region grew.
40
+ */
41
+ export declare function computeWandRegion(image: WandImage, cx: number, cy: number, options?: WandOptions): Polygon | null;
42
+ /**
43
+ * The wand's per-click flood-fill mask in patch-local coordinates: the same
44
+ * pipeline as {@link computeWandRegion}, stopping before contour tracing (the
45
+ * tools accumulate per-tick masks across a brush-style stroke).
46
+ *
47
+ * @throws when `options.patchSize` is even.
48
+ */
49
+ export declare function computeWandPatchMask(image: WandImage, cx: number, cy: number, options?: WandOptions): WandPatchMask | null;