@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.
- package/README.md +201 -460
- package/esm2022/index.mjs +28 -15
- package/esm2022/lib/channel-histogram/channel-histogram.component.mjs +163 -91
- package/esm2022/lib/contracts/capabilities.contract.mjs +4 -3
- package/esm2022/lib/contracts/cell-segmenter.contract.mjs +1 -1
- package/esm2022/lib/contracts/channel-histogram-api.contract.mjs +5 -1
- package/esm2022/lib/contracts/color.mjs +60 -0
- package/esm2022/lib/contracts/colormap-lut.mjs +213 -57
- package/esm2022/lib/contracts/coordinate-transform.contract.mjs +1 -1
- package/esm2022/lib/contracts/display-types.mjs +11 -1
- package/esm2022/lib/contracts/instance-segmenter.contract.mjs +1 -1
- package/esm2022/lib/contracts/intensity.mjs +48 -5
- package/esm2022/lib/contracts/plot-type-contribution.contract.mjs +1 -1
- package/esm2022/lib/contracts/plot-type.mjs +134 -17
- package/esm2022/lib/contracts/ports/image-state.port.mjs +4 -1
- package/esm2022/lib/contracts/ports/preferences.port.mjs +5 -1
- package/esm2022/lib/contracts/ports/region-io.port.mjs +2 -1
- package/esm2022/lib/contracts/ports/spatial-data.port.mjs +5 -1
- package/esm2022/lib/contracts/ports/tile-access.port.mjs +2 -1
- package/esm2022/lib/contracts/region-editor-api.contract.mjs +1 -1
- package/esm2022/lib/contracts/region-overlay.contract.mjs +1 -1
- package/esm2022/lib/contracts/sam.contract.mjs +1 -1
- package/esm2022/lib/contracts/semantic-segmenter.contract.mjs +1 -1
- package/esm2022/lib/contracts/spatial-dataset.contract.mjs +3 -1
- package/esm2022/lib/contracts/toolbar-tool.contract.mjs +6 -4
- package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
- package/esm2022/lib/contracts/viz-config.mjs +2 -1
- package/esm2022/lib/geometry/contour.mjs +63 -0
- package/esm2022/lib/geometry/raster.mjs +98 -0
- package/esm2022/lib/geometry/ring.mjs +201 -0
- package/esm2022/lib/hex-color-picker/hex-color-picker.component.mjs +202 -102
- package/esm2022/lib/implementations/base-store-visualizer.mjs +201 -48
- package/esm2022/lib/implementations/napari-js/napari-axes-gizmo.mjs +65 -0
- package/esm2022/lib/implementations/napari-js/napari-display-state.mjs +136 -0
- package/esm2022/lib/implementations/napari-js/napari-helpers.mjs +199 -0
- package/esm2022/lib/implementations/napari-js/napari-image-2d-scene.mjs +602 -0
- package/esm2022/lib/implementations/napari-js/napari-loading-badge.mjs +3 -4
- package/esm2022/lib/implementations/napari-js/napari-loading-state.mjs +66 -0
- package/esm2022/lib/implementations/napari-js/napari-region-overlay.mjs +157 -591
- package/esm2022/lib/implementations/napari-js/napari-scene.mjs +2 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-2d-scene.mjs +614 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-3d-scene.mjs +769 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-encoding.mjs +199 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-hover.mjs +263 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-scene.mjs +159 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-tiles.mjs +106 -1408
- package/esm2022/lib/implementations/napari-js/napari-spatial-tooltip.mjs +2 -2
- package/esm2022/lib/implementations/napari-js/napari-surface-scene.mjs +271 -0
- package/esm2022/lib/implementations/napari-js/napari-tile-client.mjs +562 -0
- package/esm2022/lib/implementations/napari-js/napari-tool-bridge.mjs +344 -0
- package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +358 -4218
- package/esm2022/lib/implementations/napari-js/napari-volume-scene.mjs +439 -0
- package/esm2022/lib/implementations/napari-js/napari-volume-z-handle.mjs +6 -6
- package/esm2022/lib/implementations/napari-js/region-overlay/overlay-projection.mjs +96 -0
- package/esm2022/lib/implementations/napari-js/region-overlay/region-edit.mjs +35 -0
- package/esm2022/lib/implementations/napari-js/region-overlay/region-svg-renderer.mjs +182 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/categorical-lookup.mjs +30 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/cell-layers.mjs +274 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/density-layer.mjs +144 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/layer-groups.mjs +165 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/plan-context.mjs +78 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-hover.mjs +182 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-jobs.mjs +369 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-layers.mjs +306 -0
- package/esm2022/lib/implementations/osd/display-pipeline.mjs +102 -40
- package/esm2022/lib/implementations/osd/histogram-sampler.mjs +56 -31
- package/esm2022/lib/implementations/osd/openseadragon-viewer-options.mjs +128 -0
- package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +333 -1685
- package/esm2022/lib/implementations/osd/osd-coordinate-transform.mjs +1 -1
- package/esm2022/lib/implementations/osd/osd-coords.mjs +5 -6
- package/esm2022/lib/implementations/osd/osd-export.mjs +122 -0
- package/esm2022/lib/implementations/osd/osd-lib.mjs +15 -1
- package/esm2022/lib/implementations/osd/osd-navigator-chrome.mjs +205 -0
- package/esm2022/lib/implementations/osd/osd-pixel-readback.mjs +68 -0
- package/esm2022/lib/implementations/osd/osd-region-overlay-draw.mjs +153 -0
- package/esm2022/lib/implementations/osd/osd-region-overlay.mjs +185 -718
- package/esm2022/lib/implementations/osd/osd-scale-bar.mjs +52 -60
- package/esm2022/lib/implementations/osd/osd-tile-source.mjs +105 -0
- package/esm2022/lib/implementations/osd/osd-viewer-like.mjs +2 -0
- package/esm2022/lib/implementations/osd/osd-viewer-mount.mjs +44 -0
- package/esm2022/lib/implementations/osd/osd-viewport.mjs +184 -0
- package/esm2022/lib/implementations/osd/osd-zoom.mjs +7 -1
- package/esm2022/lib/implementations/osd/simple-source.mjs +395 -0
- package/esm2022/lib/implementations/osd/slice-cache.mjs +53 -48
- package/esm2022/lib/implementations/osd/tile-client.mjs +32 -11
- package/esm2022/lib/implementations/osd/tile-recolor.mjs +330 -0
- package/esm2022/lib/implementations/plotly/omics-trace-builders.mjs +161 -73
- package/esm2022/lib/implementations/plotly/plotly-coordinate-transform.mjs +1 -1
- package/esm2022/lib/implementations/plotly/plotly-image-loader.mjs +112 -0
- package/esm2022/lib/implementations/plotly/plotly-image-recolor.mjs +178 -0
- package/esm2022/lib/implementations/plotly/plotly-intensity-inset.mjs +33 -0
- package/esm2022/lib/implementations/plotly/plotly-isosurface-controls.mjs +83 -0
- package/esm2022/lib/implementations/plotly/plotly-layouts.mjs +121 -0
- package/esm2022/lib/implementations/plotly/plotly-readback.mjs +117 -0
- package/esm2022/lib/implementations/plotly/plotly-region-overlay.mjs +19 -10
- package/esm2022/lib/implementations/plotly/plotly-shape-projection.mjs +223 -0
- package/esm2022/lib/implementations/plotly/plotly-trace-builders.mjs +79 -19
- package/esm2022/lib/implementations/plotly/plotly-zoom-controller.mjs +223 -0
- package/esm2022/lib/implementations/plotly/plotly.service.mjs +439 -1655
- package/esm2022/lib/implementations/region-centroids.mjs +47 -0
- package/esm2022/lib/implementations/simple-slice-access.service.mjs +22 -12
- package/esm2022/lib/implementations/spatial-data-http/spatial-data-http.service.mjs +172 -92
- package/esm2022/lib/implementations/spatial-data-http/spatial-wire.mjs +103 -22
- package/esm2022/lib/implementations/tile-server/index.mjs +6 -0
- package/esm2022/lib/implementations/tile-server/native-histogram.mjs +30 -0
- package/esm2022/lib/implementations/tile-server/poll-descriptor.mjs +65 -0
- package/esm2022/lib/implementations/tile-server/tile-protocol.mjs +42 -0
- package/esm2022/lib/implementations/tile-server/transport.mjs +135 -0
- package/esm2022/lib/intensity/intensity-profile.mjs +107 -0
- package/esm2022/lib/intensity/intensity-profile.service.mjs +223 -0
- package/esm2022/lib/intensity-inset/intensity-inset.component.mjs +133 -0
- package/esm2022/lib/models/bezier.mjs +1 -11
- package/esm2022/lib/models/class-preset.mjs +41 -3
- package/esm2022/lib/models/geometry.mjs +27 -164
- package/esm2022/lib/models/polygon-edit.mjs +254 -0
- package/esm2022/lib/models/polygon-factory.mjs +118 -0
- package/esm2022/lib/models/region-clone.mjs +68 -0
- package/esm2022/lib/models/region-geojson.mjs +373 -0
- package/esm2022/lib/models/region.mjs +34 -33
- package/esm2022/lib/models/shape.mjs +18 -16
- package/esm2022/lib/plot-mode/contribution-host.mjs +297 -0
- package/esm2022/lib/plot-mode/plot-mode-controller.mjs +9 -6
- package/esm2022/lib/plot-mode/plot-type-menu.mjs +85 -0
- package/esm2022/lib/plot-mode/tool-params-model.mjs +87 -0
- package/esm2022/lib/plot.utilities.mjs +296 -473
- package/esm2022/lib/processing/image-crop.mjs +1 -1
- package/esm2022/lib/processing/processing-image.mjs +28 -15
- package/esm2022/lib/provide-visualization.mjs +40 -14
- package/esm2022/lib/region-editor/classes-panel/classes-panel.component.mjs +99 -0
- package/esm2022/lib/region-editor/file-stem.mjs +13 -0
- package/esm2022/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.mjs +118 -0
- package/esm2022/lib/region-editor/mask-export.service.mjs +98 -0
- package/esm2022/lib/region-editor/mask-raster.mjs +11 -5
- package/esm2022/lib/region-editor/region-color-dialog/region-color-dialog.component.mjs +56 -0
- package/esm2022/lib/region-editor/region-editor-help/region-editor-help.component.mjs +28 -0
- package/esm2022/lib/region-editor/region-editor.component.mjs +402 -651
- package/esm2022/lib/region-editor/region-metrics.mjs +68 -0
- package/esm2022/lib/region-editor/region-persistence.service.mjs +134 -0
- package/esm2022/lib/region-editor/region-table/region-table.component.mjs +153 -0
- package/esm2022/lib/region-editor/save-mask-dialog/save-mask-dialog.component.mjs +91 -0
- package/esm2022/lib/region-editor/save-regions-dialog/save-regions-dialog.component.mjs +92 -0
- package/esm2022/lib/region-ops.service.mjs +28 -70
- package/esm2022/lib/region-overlay/region-geometry.mjs +360 -0
- package/esm2022/lib/region-overlay/region-hit-test.mjs +103 -0
- package/esm2022/lib/region-overlay/svg-region-renderer.mjs +228 -0
- package/esm2022/lib/render-orchestrator.mjs +14 -11
- package/esm2022/lib/render-session.mjs +207 -0
- package/esm2022/lib/routing-visualizer.service.mjs +459 -411
- package/esm2022/lib/spatial/density-raster.mjs +14 -0
- package/esm2022/lib/spatial/embedding-compute-coordinator.mjs +239 -0
- package/esm2022/lib/spatial/embedding-compute.mjs +43 -10
- package/esm2022/lib/spatial/gene-search.mjs +1 -1
- package/esm2022/lib/spatial/glyphs.mjs +97 -0
- package/esm2022/lib/spatial/lod.mjs +187 -0
- package/esm2022/lib/spatial/spatial-controls.facade.mjs +200 -0
- package/esm2022/lib/spatial/spatial-density.mjs +25 -16
- package/esm2022/lib/spatial/spatial-encoding.mjs +26 -82
- package/esm2022/lib/spatial/spatial-expression.mjs +43 -42
- package/esm2022/lib/spatial/spatial-framing.mjs +1 -1
- package/esm2022/lib/spatial/spatial-heatmap.mjs +6 -3
- package/esm2022/lib/spatial/spatial-hover.mjs +5 -33
- package/esm2022/lib/spatial/spatial-panel-model.mjs +282 -0
- package/esm2022/lib/spatial/spatial-sections.mjs +1 -1
- package/esm2022/lib/spatial/spatial-selection.mjs +33 -46
- package/esm2022/lib/spatial/spatial-tile-merge.mjs +219 -0
- package/esm2022/lib/spatial/spatial-tiles.mjs +12 -648
- package/esm2022/lib/spatial/spatial-volume-image.mjs +2 -4
- package/esm2022/lib/spatial/stats.mjs +71 -0
- package/esm2022/lib/spatial/transcript-grouping.mjs +307 -0
- package/esm2022/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.mjs +150 -0
- package/esm2022/lib/spatial-controls/spatial-charts/chart-data-model.mjs +309 -0
- package/esm2022/lib/spatial-controls/spatial-charts/chart-help.mjs +145 -0
- package/esm2022/lib/spatial-controls/spatial-charts/plotly-chart-host.mjs +158 -0
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.mjs +47 -0
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-charts.component.mjs +297 -802
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.mjs +89 -0
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.mjs +52 -0
- package/esm2022/lib/spatial-controls/spatial-controls.component.mjs +143 -1238
- package/esm2022/lib/spatial-controls/spatial-gene-picker.mjs +153 -0
- package/esm2022/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.mjs +241 -0
- package/esm2022/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.mjs +193 -0
- package/esm2022/lib/spatial-controls/spatial-key/spatial-key.component.mjs +132 -0
- package/esm2022/lib/spatial-controls/spatial-key/spatial-key.model.mjs +67 -0
- package/esm2022/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.mjs +147 -0
- package/esm2022/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.mjs +300 -0
- package/esm2022/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.mjs +370 -0
- package/esm2022/lib/store/class-color.util.mjs +46 -3
- package/esm2022/lib/store/region-history.mjs +146 -0
- package/esm2022/lib/store/region-scope-cache.mjs +140 -0
- package/esm2022/lib/store/region-selection.mjs +82 -0
- package/esm2022/lib/store/region-store.service.mjs +279 -675
- package/esm2022/lib/store/spatial-selection.service.mjs +2 -2
- package/esm2022/lib/store/visualizer-store.service.mjs +49 -71
- package/esm2022/lib/toast-outlets.mjs +5 -4
- package/esm2022/lib/toolbar/brush/brush-tool.service.mjs +92 -434
- package/esm2022/lib/toolbar/canvas-tools.mjs +20 -0
- package/esm2022/lib/toolbar/crop/slide-crop.mjs +26 -42
- package/esm2022/lib/toolbar/plot-type-selector/plot-type-selector.component.mjs +85 -0
- package/esm2022/lib/toolbar/region-tools/region-tool-buttons.mjs +74 -0
- package/esm2022/lib/toolbar/region-tools/region-tools.component.mjs +114 -0
- package/esm2022/lib/toolbar/segmentation/cell-segment-tool.service.mjs +74 -78
- package/esm2022/lib/toolbar/segmentation/cellpose-segmenter.service.mjs +50 -8
- package/esm2022/lib/toolbar/segmentation/onnx-sam-session.mjs +61 -42
- package/esm2022/lib/toolbar/segmentation/pending-calls.mjs +47 -0
- package/esm2022/lib/toolbar/segmentation/sam-model-registry.mjs +12 -4
- package/esm2022/lib/toolbar/segmentation/sam-onnx-core.mjs +70 -14
- package/esm2022/lib/toolbar/segmentation/sam-point-tool.service.mjs +135 -172
- package/esm2022/lib/toolbar/segmentation/sam-prompt.mjs +9 -90
- package/esm2022/lib/toolbar/segmentation/sam-session.service.mjs +183 -0
- package/esm2022/lib/toolbar/segmentation/sam-tool.service.mjs +95 -150
- package/esm2022/lib/toolbar/segmentation/segmentation-commit.mjs +12 -0
- package/esm2022/lib/toolbar/segmentation/segmentation-runner.mjs +108 -0
- package/esm2022/lib/toolbar/segmentation-tools/segmentation-tools.component.mjs +155 -0
- package/esm2022/lib/toolbar/stack-controls/stack-controls.component.mjs +81 -0
- package/esm2022/lib/toolbar/tool-kit/async-tool-status.mjs +37 -0
- package/esm2022/lib/toolbar/tool-kit/canvas-tool-manager.mjs +63 -0
- package/esm2022/lib/toolbar/tool-kit/canvas-tool.mjs +2 -0
- package/esm2022/lib/toolbar/tool-kit/frame-pixels.mjs +108 -0
- package/esm2022/lib/toolbar/tool-kit/mask-stroke-editor.mjs +306 -0
- package/esm2022/lib/toolbar/tool-kit/matrix-frame.mjs +61 -0
- package/esm2022/lib/toolbar/tool-kit/tool-overlay.mjs +140 -0
- package/esm2022/lib/toolbar/tool-kit/undo-gesture.mjs +24 -0
- package/esm2022/lib/toolbar/tool-slider/tool-slider.component.mjs +63 -0
- package/esm2022/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.mjs +50 -0
- package/esm2022/lib/toolbar/toolbar.component.mjs +68 -117
- package/esm2022/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.mjs +93 -115
- package/esm2022/lib/toolbar/view-controls/view-controls.component.mjs +107 -0
- package/esm2022/lib/toolbar/wand/wand-region-grow.mjs +321 -0
- package/esm2022/lib/toolbar/wand/wand-tool.service.mjs +121 -416
- package/esm2022/lib/toolbar/wand/wand.service.mjs +30 -894
- package/esm2022/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.mjs +48 -90
- package/esm2022/lib/util/mark-for-check.mjs +17 -0
- package/esm2022/lib/util/supersede.mjs +56 -0
- package/esm2022/lib/visualization.module.mjs +39 -141
- package/esm2022/lib/visualizer/floating-drag.directive.mjs +58 -0
- package/esm2022/lib/visualizer/region-actions.mjs +149 -0
- package/esm2022/lib/visualizer/region-load.mjs +60 -0
- package/esm2022/lib/visualizer/spatial-dataset-binder.mjs +163 -0
- package/esm2022/lib/visualizer/tool-modes.mjs +113 -0
- package/esm2022/lib/visualizer/viewer-shortcuts.mjs +167 -0
- package/esm2022/lib/visualizer/visualizer-context-menu.mjs +119 -0
- package/esm2022/lib/visualizer.component.mjs +480 -1902
- package/esm2022/lib/workers/spatial-math-ops.mjs +43 -0
- package/esm2022/lib/workers/spatial-math-worker.mjs +10 -0
- package/esm2022/lib/workers/spatial-math.mjs +190 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-Csxlnq7I.mjs +41083 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-Csxlnq7I.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-Bkujqg7m.mjs +238 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-Bkujqg7m.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs +12 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs +41 -34467
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
- package/fesm2022/mask.worker.js +36 -917
- package/fesm2022/onnx-sam.worker.js +52 -16
- package/fesm2022/spatial-math.worker.js +471 -0
- package/fesm2022/tsne.worker.js +32 -15
- package/index.d.ts +13 -10
- package/lib/channel-histogram/channel-histogram.component.d.ts +53 -43
- package/lib/contracts/capabilities.contract.d.ts +4 -2
- package/lib/contracts/cell-segmenter.contract.d.ts +1 -0
- package/lib/contracts/channel-histogram-api.contract.d.ts +4 -0
- package/lib/contracts/color.d.ts +27 -0
- package/lib/contracts/colormap-lut.d.ts +19 -4
- package/lib/contracts/coordinate-transform.contract.d.ts +3 -3
- package/lib/contracts/display-types.d.ts +21 -0
- package/lib/contracts/instance-segmenter.contract.d.ts +5 -0
- package/lib/contracts/intensity.d.ts +13 -2
- package/lib/contracts/plot-type.d.ts +3 -1
- package/lib/contracts/ports/image-state.port.d.ts +6 -2
- package/lib/contracts/ports/preferences.port.d.ts +4 -0
- package/lib/contracts/ports/region-io.port.d.ts +1 -0
- package/lib/contracts/ports/spatial-data.port.d.ts +4 -10
- package/lib/contracts/ports/tile-access.port.d.ts +1 -0
- package/lib/contracts/region-editor-api.contract.d.ts +1 -1
- package/lib/contracts/region-overlay.contract.d.ts +5 -0
- package/lib/contracts/sam.contract.d.ts +7 -0
- package/lib/contracts/semantic-segmenter.contract.d.ts +6 -0
- package/lib/contracts/spatial-dataset.contract.d.ts +19 -6
- package/lib/contracts/toolbar-tool.contract.d.ts +1 -0
- package/lib/contracts/visualizer.contract.d.ts +221 -54
- package/lib/contracts/viz-config.d.ts +1 -0
- package/lib/geometry/contour.d.ts +24 -0
- package/lib/geometry/raster.d.ts +42 -0
- package/lib/geometry/ring.d.ts +67 -0
- package/lib/hex-color-picker/hex-color-picker.component.d.ts +61 -27
- package/lib/implementations/base-store-visualizer.d.ts +61 -15
- package/lib/implementations/napari-js/napari-axes-gizmo.d.ts +36 -0
- package/lib/implementations/napari-js/napari-display-state.d.ts +76 -0
- package/lib/implementations/napari-js/napari-helpers.d.ts +129 -0
- package/lib/implementations/napari-js/napari-image-2d-scene.d.ts +162 -0
- package/lib/implementations/napari-js/napari-loading-badge.d.ts +0 -1
- package/lib/implementations/napari-js/napari-loading-state.d.ts +30 -0
- package/lib/implementations/napari-js/napari-region-overlay.d.ts +62 -70
- package/lib/implementations/napari-js/napari-scene.d.ts +93 -0
- package/lib/implementations/napari-js/napari-spatial-2d-scene.d.ts +163 -0
- package/lib/implementations/napari-js/napari-spatial-3d-scene.d.ts +212 -0
- package/lib/implementations/napari-js/napari-spatial-encoding.d.ts +114 -0
- package/lib/implementations/napari-js/napari-spatial-hover.d.ts +89 -0
- package/lib/implementations/napari-js/napari-spatial-scene.d.ts +118 -0
- package/lib/implementations/napari-js/napari-spatial-tiles.d.ts +56 -263
- package/lib/implementations/napari-js/napari-spatial-tooltip.d.ts +1 -1
- package/lib/implementations/napari-js/napari-surface-scene.d.ts +76 -0
- package/lib/implementations/napari-js/napari-tile-client.d.ts +214 -0
- package/lib/implementations/napari-js/napari-tool-bridge.d.ts +179 -0
- package/lib/implementations/napari-js/napari-visualizer.service.d.ts +121 -883
- package/lib/implementations/napari-js/napari-volume-scene.d.ts +104 -0
- package/lib/implementations/napari-js/napari-volume-z-handle.d.ts +8 -12
- package/lib/implementations/napari-js/region-overlay/overlay-projection.d.ts +59 -0
- package/lib/implementations/napari-js/region-overlay/region-edit.d.ts +15 -0
- package/lib/implementations/napari-js/region-overlay/region-svg-renderer.d.ts +54 -0
- package/lib/implementations/napari-js/spatial-tiles/categorical-lookup.d.ts +26 -0
- package/lib/implementations/napari-js/spatial-tiles/cell-layers.d.ts +70 -0
- package/lib/implementations/napari-js/spatial-tiles/density-layer.d.ts +61 -0
- package/lib/implementations/napari-js/spatial-tiles/layer-groups.d.ts +67 -0
- package/lib/implementations/napari-js/spatial-tiles/plan-context.d.ts +38 -0
- package/lib/implementations/napari-js/spatial-tiles/transcript-hover.d.ts +71 -0
- package/lib/implementations/napari-js/spatial-tiles/transcript-jobs.d.ts +105 -0
- package/lib/implementations/napari-js/spatial-tiles/transcript-layers.d.ts +56 -0
- package/lib/implementations/osd/display-pipeline.d.ts +38 -9
- package/lib/implementations/osd/histogram-sampler.d.ts +22 -12
- package/lib/implementations/osd/openseadragon-viewer-options.d.ts +35 -0
- package/lib/implementations/osd/openseadragon-visualizer.service.d.ts +78 -354
- package/lib/implementations/osd/osd-coordinate-transform.d.ts +2 -1
- package/lib/implementations/osd/osd-coords.d.ts +6 -4
- package/lib/implementations/osd/osd-export.d.ts +36 -0
- package/lib/implementations/osd/osd-lib.d.ts +7 -0
- package/lib/implementations/osd/osd-navigator-chrome.d.ts +69 -0
- package/lib/implementations/osd/osd-pixel-readback.d.ts +22 -0
- package/lib/implementations/osd/osd-region-overlay-draw.d.ts +37 -0
- package/lib/implementations/osd/osd-region-overlay.d.ts +36 -48
- package/lib/implementations/osd/osd-scale-bar.d.ts +8 -6
- package/lib/implementations/osd/osd-tile-source.d.ts +49 -0
- package/lib/implementations/osd/osd-viewer-like.d.ts +100 -0
- package/lib/implementations/osd/osd-viewer-mount.d.ts +14 -0
- package/lib/implementations/osd/osd-viewport.d.ts +77 -0
- package/lib/implementations/osd/osd-zoom.d.ts +6 -0
- package/lib/implementations/osd/simple-source.d.ts +161 -0
- package/lib/implementations/osd/slice-cache.d.ts +12 -3
- package/lib/implementations/osd/tile-client.d.ts +11 -14
- package/lib/implementations/osd/tile-recolor.d.ts +141 -0
- package/lib/implementations/plotly/omics-trace-builders.d.ts +32 -20
- package/lib/implementations/plotly/plotly-image-loader.d.ts +49 -0
- package/lib/implementations/plotly/plotly-image-recolor.d.ts +75 -0
- package/lib/implementations/plotly/plotly-intensity-inset.d.ts +8 -0
- package/lib/implementations/plotly/plotly-isosurface-controls.d.ts +38 -0
- package/lib/implementations/plotly/plotly-layouts.d.ts +188 -0
- package/lib/implementations/plotly/plotly-readback.d.ts +41 -0
- package/lib/implementations/plotly/plotly-region-overlay.d.ts +2 -2
- package/lib/implementations/plotly/plotly-shape-projection.d.ts +92 -0
- package/lib/implementations/plotly/plotly-trace-builders.d.ts +23 -12
- package/lib/implementations/plotly/plotly-zoom-controller.d.ts +86 -0
- package/lib/implementations/plotly/plotly.service.d.ts +136 -401
- package/lib/implementations/region-centroids.d.ts +14 -0
- package/lib/implementations/simple-slice-access.service.d.ts +7 -4
- package/lib/implementations/spatial-data-http/spatial-data-http.service.d.ts +42 -18
- package/lib/implementations/spatial-data-http/spatial-wire.d.ts +34 -9
- package/lib/implementations/tile-server/index.d.ts +5 -0
- package/lib/implementations/tile-server/native-histogram.d.ts +25 -0
- package/lib/implementations/tile-server/poll-descriptor.d.ts +39 -0
- package/lib/implementations/tile-server/tile-protocol.d.ts +80 -0
- package/lib/implementations/tile-server/transport.d.ts +62 -0
- package/lib/intensity/intensity-profile.d.ts +66 -0
- package/lib/intensity/intensity-profile.service.d.ts +108 -0
- package/lib/intensity-inset/intensity-inset.component.d.ts +58 -0
- package/lib/models/bezier.d.ts +0 -5
- package/lib/models/class-preset.d.ts +18 -0
- package/lib/models/geometry.d.ts +14 -48
- package/lib/models/polygon-edit.d.ts +72 -0
- package/lib/models/polygon-factory.d.ts +40 -0
- package/lib/models/region-clone.d.ts +20 -0
- package/lib/models/region-geojson.d.ts +17 -0
- package/lib/models/region.d.ts +40 -4
- package/lib/models/shape.d.ts +8 -0
- package/lib/plot-mode/contribution-host.d.ts +125 -0
- package/lib/plot-mode/plot-type-menu.d.ts +60 -0
- package/lib/plot-mode/tool-params-model.d.ts +49 -0
- package/lib/plot.utilities.d.ts +19 -30
- package/lib/processing/processing-image.d.ts +5 -2
- package/lib/provide-visualization.d.ts +19 -2
- package/lib/region-editor/classes-panel/classes-panel.component.d.ts +56 -0
- package/lib/region-editor/file-stem.d.ts +7 -0
- package/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.d.ts +45 -0
- package/lib/region-editor/mask-export.service.d.ts +54 -0
- package/lib/region-editor/mask-raster.d.ts +2 -8
- package/lib/region-editor/region-color-dialog/region-color-dialog.component.d.ts +29 -0
- package/lib/region-editor/region-editor-help/region-editor-help.component.d.ts +11 -0
- package/lib/region-editor/region-editor.component.d.ts +166 -199
- package/lib/region-editor/region-metrics.d.ts +26 -0
- package/lib/region-editor/region-persistence.service.d.ts +69 -0
- package/lib/region-editor/region-table/region-table.component.d.ts +83 -0
- package/lib/region-editor/save-mask-dialog/save-mask-dialog.component.d.ts +36 -0
- package/lib/region-editor/save-regions-dialog/save-regions-dialog.component.d.ts +37 -0
- package/lib/region-ops.service.d.ts +1 -7
- package/lib/region-overlay/region-geometry.d.ts +157 -0
- package/lib/region-overlay/region-hit-test.d.ts +38 -0
- package/lib/region-overlay/svg-region-renderer.d.ts +110 -0
- package/lib/render-orchestrator.d.ts +6 -2
- package/lib/render-session.d.ts +75 -0
- package/lib/routing-visualizer.service.d.ts +110 -58
- package/lib/spatial/density-raster.d.ts +6 -0
- package/lib/spatial/embedding-compute-coordinator.d.ts +123 -0
- package/lib/spatial/embedding-compute.d.ts +21 -2
- package/lib/spatial/glyphs.d.ts +16 -0
- package/lib/spatial/lod.d.ts +94 -0
- package/lib/spatial/spatial-controls.facade.d.ts +64 -0
- package/lib/spatial/spatial-density.d.ts +15 -5
- package/lib/spatial/spatial-encoding.d.ts +11 -44
- package/lib/spatial/spatial-expression.d.ts +40 -22
- package/lib/spatial/spatial-framing.d.ts +1 -0
- package/lib/spatial/spatial-heatmap.d.ts +2 -0
- package/lib/spatial/spatial-hover.d.ts +4 -16
- package/lib/spatial/spatial-panel-model.d.ts +135 -0
- package/lib/spatial/spatial-selection.d.ts +21 -26
- package/lib/spatial/spatial-tile-merge.d.ts +41 -0
- package/lib/spatial/spatial-tiles.d.ts +9 -256
- package/lib/spatial/stats.d.ts +38 -0
- package/lib/spatial/transcript-grouping.d.ts +119 -0
- package/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.d.ts +64 -0
- package/lib/spatial-controls/spatial-charts/chart-data-model.d.ts +153 -0
- package/lib/spatial-controls/spatial-charts/chart-help.d.ts +69 -0
- package/lib/spatial-controls/spatial-charts/plotly-chart-host.d.ts +98 -0
- package/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.d.ts +26 -0
- package/lib/spatial-controls/spatial-charts/spatial-charts.component.d.ts +101 -260
- package/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.d.ts +43 -0
- package/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.d.ts +27 -0
- package/lib/spatial-controls/spatial-controls.component.d.ts +68 -448
- package/lib/spatial-controls/spatial-gene-picker.d.ts +86 -0
- package/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.d.ts +102 -0
- package/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.d.ts +72 -0
- package/lib/spatial-controls/spatial-key/spatial-key.component.d.ts +66 -0
- package/lib/spatial-controls/spatial-key/spatial-key.model.d.ts +33 -0
- package/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.d.ts +64 -0
- package/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.d.ts +117 -0
- package/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.d.ts +142 -0
- package/lib/store/class-color.util.d.ts +35 -1
- package/lib/store/region-history.d.ts +66 -0
- package/lib/store/region-scope-cache.d.ts +63 -0
- package/lib/store/region-selection.d.ts +36 -0
- package/lib/store/region-store.service.d.ts +104 -112
- package/lib/store/visualizer-store.service.d.ts +22 -33
- package/lib/toast-outlets.d.ts +4 -3
- package/lib/toolbar/brush/brush-tool.service.d.ts +31 -98
- package/lib/toolbar/canvas-tools.d.ts +20 -0
- package/lib/toolbar/crop/slide-crop.d.ts +10 -4
- package/lib/toolbar/plot-type-selector/plot-type-selector.component.d.ts +38 -0
- package/lib/toolbar/region-tools/region-tool-buttons.d.ts +21 -0
- package/lib/toolbar/region-tools/region-tools.component.d.ts +60 -0
- package/lib/toolbar/segmentation/cell-segment-tool.service.d.ts +10 -14
- package/lib/toolbar/segmentation/cellpose-segmenter.service.d.ts +12 -2
- package/lib/toolbar/segmentation/onnx-sam-session.d.ts +22 -3
- package/lib/toolbar/segmentation/pending-calls.d.ts +31 -0
- package/lib/toolbar/segmentation/sam-model-registry.d.ts +9 -3
- package/lib/toolbar/segmentation/sam-onnx-core.d.ts +18 -5
- package/lib/toolbar/segmentation/sam-point-tool.service.d.ts +46 -32
- package/lib/toolbar/segmentation/sam-prompt.d.ts +7 -31
- package/lib/toolbar/segmentation/sam-session.service.d.ts +74 -0
- package/lib/toolbar/segmentation/sam-tool.service.d.ts +23 -30
- package/lib/toolbar/segmentation/segmentation-commit.d.ts +8 -0
- package/lib/toolbar/segmentation/segmentation-runner.d.ts +52 -0
- package/lib/toolbar/segmentation-tools/segmentation-tools.component.d.ts +87 -0
- package/lib/toolbar/stack-controls/stack-controls.component.d.ts +40 -0
- package/lib/toolbar/tool-kit/async-tool-status.d.ts +21 -0
- package/lib/toolbar/tool-kit/canvas-tool-manager.d.ts +36 -0
- package/lib/toolbar/tool-kit/canvas-tool.d.ts +86 -0
- package/lib/toolbar/tool-kit/frame-pixels.d.ts +45 -0
- package/lib/toolbar/tool-kit/mask-stroke-editor.d.ts +125 -0
- package/lib/toolbar/tool-kit/matrix-frame.d.ts +40 -0
- package/lib/toolbar/tool-kit/tool-overlay.d.ts +60 -0
- package/lib/toolbar/tool-kit/undo-gesture.d.ts +17 -0
- package/lib/toolbar/tool-slider/tool-slider.component.d.ts +33 -0
- package/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.d.ts +24 -0
- package/lib/toolbar/toolbar.component.d.ts +47 -83
- package/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.d.ts +33 -40
- package/lib/toolbar/view-controls/view-controls.component.d.ts +54 -0
- package/lib/toolbar/wand/wand-region-grow.d.ts +49 -0
- package/lib/toolbar/wand/wand-tool.service.d.ts +39 -124
- package/lib/toolbar/wand/wand.service.d.ts +22 -116
- package/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.d.ts +17 -37
- package/lib/util/mark-for-check.d.ts +11 -0
- package/lib/util/supersede.d.ts +53 -0
- package/lib/visualization.module.d.ts +18 -39
- package/lib/visualizer/floating-drag.directive.d.ts +30 -0
- package/lib/visualizer/region-actions.d.ts +54 -0
- package/lib/visualizer/region-load.d.ts +27 -0
- package/lib/visualizer/spatial-dataset-binder.d.ts +74 -0
- package/lib/visualizer/tool-modes.d.ts +49 -0
- package/lib/visualizer/viewer-shortcuts.d.ts +71 -0
- package/lib/visualizer/visualizer-context-menu.d.ts +55 -0
- package/lib/visualizer.component.d.ts +201 -447
- package/lib/workers/spatial-math-ops.d.ts +65 -0
- package/lib/workers/spatial-math-worker.d.ts +7 -0
- package/lib/workers/spatial-math.d.ts +74 -0
- package/package.json +12 -3
- package/src/lib/styles/_viz-icons-rules.scss +73 -0
- package/src/lib/styles/viz-icons.scss +14 -0
- package/esm2022/lib/implementations/napari-js/napari-axes-labels.mjs +0 -97
- package/esm2022/lib/implementations/napari-js/napari-navigator.mjs +0 -195
- package/esm2022/lib/implementations/napari-js/napari-scale-bar.mjs +0 -92
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs +0 -329
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs.map +0 -1
- package/lib/implementations/napari-js/napari-axes-labels.d.ts +0 -49
- package/lib/implementations/napari-js/napari-navigator.d.ts +0 -72
- package/lib/implementations/napari-js/napari-scale-bar.d.ts +0 -35
- package/src/lib/assets/cell-detection.svg +0 -37
- package/src/lib/assets/click.svg +0 -1
- package/src/lib/assets/colormap-luts.json +0 -1
- package/src/lib/assets/edit-selection-white.svg +0 -47
- package/src/lib/assets/icons/colormap-earth.png +0 -0
- package/src/lib/assets/icons/colormap-placeholder.png +0 -0
- package/src/lib/assets/icons/colormap-pubu.png +0 -0
- package/src/lib/assets/interactive-segmentation-cursor.svg +0 -1
- package/src/lib/assets/picture-segmentation.svg +0 -43
- package/src/lib/assets/test/download-379.svg +0 -1
- package/src/lib/assets/test/download-98.svg +0 -1
- package/src/lib/assets/test/json-1.svg +0 -1
- package/src/lib/assets/test/load-53.svg +0 -1
- package/src/lib/assets/test/mask-44.svg +0 -1
- package/src/lib/assets/test/mask-download-44.svg +0 -15
- package/src/lib/assets/test/mask-save-44.svg +0 -11
- package/src/lib/assets/test/overlay-1.svg +0 -1
- package/src/lib/assets/test/overlay-4.svg +0 -1
- package/src/lib/assets/test/region-26.svg +0 -1
- package/src/lib/assets/test/save-56.svg +0 -1
- package/src/lib/assets/test/upload-43.svg +0 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pixel frames a backend hands the canvas tools (`CachedImageData.frames`),
|
|
3
|
+
* and the one accessor every tool reads them through (wand patch extraction,
|
|
4
|
+
* SAM encoder input, Cellpose crop).
|
|
5
|
+
*
|
|
6
|
+
* A frame is either
|
|
7
|
+
* - **nested** — `[y][x]` rows of grayscale values or `[r, g, b]` tuples, which
|
|
8
|
+
* is what the Plotly backend caches (its frames double as the heatmap data and
|
|
9
|
+
* may hold raw, non-8-bit intensities), or
|
|
10
|
+
* - **packed** — a row-major RGBA `Uint8ClampedArray`, which is what a canvas or
|
|
11
|
+
* GPU readback already is. OpenSeadragon and napari-js hand theirs over as-is
|
|
12
|
+
* instead of building one JS array per pixel (RT-17, OSD-PLOTLY-12,
|
|
13
|
+
* NAPARI-SVC-23).
|
|
14
|
+
*/
|
|
15
|
+
/** A row-major RGBA readback (alpha is ignored). */
|
|
16
|
+
export interface PackedFrame {
|
|
17
|
+
readonly data: Uint8ClampedArray;
|
|
18
|
+
readonly width: number;
|
|
19
|
+
readonly height: number;
|
|
20
|
+
readonly channels: 4;
|
|
21
|
+
}
|
|
22
|
+
/** `[y][x]` grayscale values, or `[y][x]` `[r, g, b]` tuples. */
|
|
23
|
+
export type NestedFrame = number[][] | number[][][];
|
|
24
|
+
/** One frame of `CachedImageData.frames`. */
|
|
25
|
+
export type CachedFrame = NestedFrame | PackedFrame;
|
|
26
|
+
/** Whether `frame` is the packed RGBA form. */
|
|
27
|
+
export declare function isPackedFrame(frame: unknown): frame is PackedFrame;
|
|
28
|
+
/** Wrap a row-major RGBA readback as a frame, without copying it. */
|
|
29
|
+
export declare function packedFrame(data: Uint8ClampedArray, width: number, height: number): PackedFrame;
|
|
30
|
+
/** Reads one frame's pixels whatever its form. */
|
|
31
|
+
export interface FramePixels {
|
|
32
|
+
/**
|
|
33
|
+
* Pixel (x, y) as RGB in `out[0..2]` (a grayscale value is replicated, and
|
|
34
|
+
* kept unclamped). False — `out` untouched — outside the frame or for a
|
|
35
|
+
* missing pixel. A packed frame always reads as RGB.
|
|
36
|
+
*/
|
|
37
|
+
rgb(x: number, y: number, out: number[]): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* `w` pixels of row `y` from column `x0`, as opaque RGBA into `dst` from
|
|
40
|
+
* offset `o`. Missing pixels become opaque black.
|
|
41
|
+
*/
|
|
42
|
+
rgbaRow(y: number, x0: number, w: number, dst: Uint8ClampedArray, o: number): void;
|
|
43
|
+
}
|
|
44
|
+
/** The accessor for `frame`; `isGrayscale` describes a nested frame's cells. */
|
|
45
|
+
export declare function framePixels(frame: CachedFrame | undefined, isGrayscale: boolean): FramePixels;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { BBoxMask } from '../../geometry/raster';
|
|
2
|
+
import { IRegionDataHost } from '../../contracts/coordinate-transform.contract';
|
|
3
|
+
import { Polygon, Region } from '../../models/region';
|
|
4
|
+
import { MatrixFrame } from './matrix-frame';
|
|
5
|
+
import type { CachedImageData, CanvasToolHost } from './canvas-tool';
|
|
6
|
+
/** The readback size the stroke is painted against (the rasterizer's clip window). */
|
|
7
|
+
export interface StrokeImage {
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
}
|
|
11
|
+
/** Where a wand or brush pointer tick lands (see {@link MaskStrokeEditor.beginTick}). */
|
|
12
|
+
export interface StrokeTick {
|
|
13
|
+
/** The host's readback. */
|
|
14
|
+
cached: CachedImageData;
|
|
15
|
+
/** The current regions, mutated by the tick and committed once. */
|
|
16
|
+
regions: Region[];
|
|
17
|
+
/** The readback's data↔matrix frame. */
|
|
18
|
+
frame: MatrixFrame;
|
|
19
|
+
/** The matrix point under the pointer, inside the readback. */
|
|
20
|
+
mx: number;
|
|
21
|
+
my: number;
|
|
22
|
+
}
|
|
23
|
+
/** How a commit turns traced pieces into regions. */
|
|
24
|
+
export interface StrokeCommitOptions {
|
|
25
|
+
/** The tick erased (Shift): a stroke erased to nothing removes its regions. */
|
|
26
|
+
erase: boolean;
|
|
27
|
+
/** A brand-new region for a piece no existing region owns. */
|
|
28
|
+
newRegion(bounds: Polygon): Region;
|
|
29
|
+
/** Fields applied on top of an edited region (e.g. a painted class colour). */
|
|
30
|
+
editPatch?: Partial<Region>;
|
|
31
|
+
/** Class label given to an edited region that has none, so tool output is never unlabeled. */
|
|
32
|
+
defaultLabel: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The bbox-relative mask accumulator shared by the wand and the brush: adopt a
|
|
36
|
+
* region under the cursor, grow the mask, fold touching regions in, then trace
|
|
37
|
+
* every connected piece (with holes) and commit them.
|
|
38
|
+
*
|
|
39
|
+
* The accumulator survives mouseup so the next stroke extends the same region
|
|
40
|
+
* (QuPath behaviour). It is dropped when the view changes (its matrix coords
|
|
41
|
+
* are tied to the readback frame, jit-ui#102) and when its regions changed
|
|
42
|
+
* outside the tool (undo, Region Editor, segmentation, eraser — RT-2).
|
|
43
|
+
*
|
|
44
|
+
* Commits never mutate a store instance and never drop metadata: an edited
|
|
45
|
+
* region is a copy of the original with new bounds (RT-5). An erase that cuts a
|
|
46
|
+
* region in two keeps both pieces and a donut keeps its holes (RT-3).
|
|
47
|
+
*/
|
|
48
|
+
export declare class MaskStrokeEditor {
|
|
49
|
+
/** The accumulated mask, in matrix coords of {@link frameSig}'s frame. */
|
|
50
|
+
stroke: BBoxMask | null;
|
|
51
|
+
/** Id of the region the stroke edits (null = a fresh region); for a split,
|
|
52
|
+
* the largest piece. */
|
|
53
|
+
regionId: number | null;
|
|
54
|
+
/** Ids of the extra pieces an erase split off, reused across ticks so they
|
|
55
|
+
* keep stable identities. */
|
|
56
|
+
private extraIds;
|
|
57
|
+
/** The bounds objects the stroke last committed or adopted, one per region it
|
|
58
|
+
* owns. Once any of them is no longer held by a region, the stroke is stale. */
|
|
59
|
+
private lastCommitted;
|
|
60
|
+
/** The region the stroke adopted (or first merged in): its metadata carries
|
|
61
|
+
* over to the committed pieces even after a merge removed it from the list. */
|
|
62
|
+
private template;
|
|
63
|
+
private frameSig;
|
|
64
|
+
/** Drop the stroke and everything tied to it. */
|
|
65
|
+
reset(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Start a wand or brush tick at pointer `e`: read the host's readback and
|
|
68
|
+
* regions, drop a stale stroke ({@link invalidateIfStale}) or one from another
|
|
69
|
+
* view ({@link syncFrame}), and map the pointer into the readback's matrix.
|
|
70
|
+
* Null when there is no readback or ready transform, or the pointer is off it.
|
|
71
|
+
*/
|
|
72
|
+
beginTick(host: CanvasToolHost, e: {
|
|
73
|
+
clientX: number;
|
|
74
|
+
clientY: number;
|
|
75
|
+
}): StrokeTick | null;
|
|
76
|
+
/** Drop a stroke whose regions were undone, deleted or replaced outside the
|
|
77
|
+
* tool: re-committing it would bring the old shapes back (RT-2). */
|
|
78
|
+
invalidateIfStale(regions: Region[]): void;
|
|
79
|
+
/** Drop a stroke built at a different view (zoom/pan): re-committing it would
|
|
80
|
+
* rescale the region by the zoom factor (jit-ui#102). */
|
|
81
|
+
syncFrame(frame: MatrixFrame): void;
|
|
82
|
+
/** True if matrix point (mx, my) is painted in the stroke. */
|
|
83
|
+
contains(mx: number, my: number): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Make the stroke's bbox cover [x0,x1)×[y0,y1) (matrix px), creating an empty
|
|
86
|
+
* stroke or growing (and copying) the existing one. False for an empty box.
|
|
87
|
+
*/
|
|
88
|
+
ensureCovers(x0: number, y0: number, x1: number, y1: number): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* If matrix point (mx, my) lies inside a region `accept`s (topmost first, not
|
|
91
|
+
* in a hole), rasterize it into the stroke so this stroke extends it.
|
|
92
|
+
*/
|
|
93
|
+
adoptAt(regions: Region[], mx: number, my: number, frame: MatrixFrame, image: StrokeImage, accept?: (r: Region) => boolean): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Fold every region `accept`s whose raster overlaps the stroke into it and
|
|
96
|
+
* remove it from `regions` (merge-on-touch). Repeats until nothing changes so
|
|
97
|
+
* chained merges resolve. With no region yet, the first merged region's
|
|
98
|
+
* identity and metadata are adopted.
|
|
99
|
+
*/
|
|
100
|
+
mergeTouching(regions: Region[], frame: MatrixFrame, image: StrokeImage, accept?: (r: Region) => boolean): void;
|
|
101
|
+
/**
|
|
102
|
+
* Trace every connected piece of the stroke (holes included) and commit them:
|
|
103
|
+
* the largest keeps the stroke's region, further pieces (from an erase that
|
|
104
|
+
* split it) become their own regions with stable ids across ticks. An erase
|
|
105
|
+
* that leaves nothing removes the stroke's regions.
|
|
106
|
+
*/
|
|
107
|
+
commit(regions: Region[], frame: MatrixFrame, host: IRegionDataHost, opts: StrokeCommitOptions): void;
|
|
108
|
+
/** Remove the stroke's region(s) and reset — an erase deleted every pixel. */
|
|
109
|
+
dropActive(regions: Region[], host: IRegionDataHost): void;
|
|
110
|
+
/** The region with `id` in `regions`, or the adopted/merged template when a
|
|
111
|
+
* merge already removed it from the list. */
|
|
112
|
+
private owner;
|
|
113
|
+
/** Replace `existing` in place (or append it if a merge removed it). */
|
|
114
|
+
private upsert;
|
|
115
|
+
/** The fields an edit sets on `existing`: the tool's patch, plus a default label. */
|
|
116
|
+
private patchFor;
|
|
117
|
+
private insert;
|
|
118
|
+
/**
|
|
119
|
+
* A region's closed ring and holes in matrix coords, or null when it can't be
|
|
120
|
+
* edited as a mask: not a closed polygon (rectangles, polylines,
|
|
121
|
+
* multi-polygons), or too large to rasterize faithfully at this zoom — editing
|
|
122
|
+
* would clip or down-quantize it and bring it back rescaled (jit-ui#102).
|
|
123
|
+
*/
|
|
124
|
+
private editableRing;
|
|
125
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { CachedImageData } from './canvas-tool';
|
|
2
|
+
/**
|
|
3
|
+
* The mapping between a backend's data coordinates and the pixel matrix of a
|
|
4
|
+
* cached readback (`CachedImageData`): `matrix = (data - origin) / ratio` per
|
|
5
|
+
* axis. OSD and napari publish distinct `[ratioX, ratioY]`, so rows must use
|
|
6
|
+
* the Y ratio; a single ratio is used for both axes when only one is supplied.
|
|
7
|
+
*/
|
|
8
|
+
export declare class MatrixFrame {
|
|
9
|
+
/** Data units per matrix column. */
|
|
10
|
+
readonly rx: number;
|
|
11
|
+
/** Data units per matrix row. */
|
|
12
|
+
readonly ry: number;
|
|
13
|
+
/** Data X of matrix column 0. */
|
|
14
|
+
readonly ox: number;
|
|
15
|
+
/** Data Y of matrix row 0. */
|
|
16
|
+
readonly oy: number;
|
|
17
|
+
private constructor();
|
|
18
|
+
/** The frame of a readback. Missing/zero ratios fall back to 1, missing origins to 0. */
|
|
19
|
+
static from(cached: Pick<CachedImageData, 'ratios' | 'originX' | 'originY'>): MatrixFrame;
|
|
20
|
+
/** Identity of the frame: a stroke built in matrix coords is only valid while this is unchanged. */
|
|
21
|
+
get sig(): string;
|
|
22
|
+
toMatrixX(x: number): number;
|
|
23
|
+
toMatrixY(y: number): number;
|
|
24
|
+
toDataX(mx: number): number;
|
|
25
|
+
toDataY(my: number): number;
|
|
26
|
+
/** A ring (parallel arrays) from data to matrix coords. */
|
|
27
|
+
ringToMatrix(xs: number[], ys: number[]): {
|
|
28
|
+
xs: number[];
|
|
29
|
+
ys: number[];
|
|
30
|
+
};
|
|
31
|
+
/** A ring (parallel arrays) from matrix to data coords. */
|
|
32
|
+
ringToData(xs: number[], ys: number[]): {
|
|
33
|
+
xs: number[];
|
|
34
|
+
ys: number[];
|
|
35
|
+
};
|
|
36
|
+
/** Hole rings (`[[x, y], …]`) from data to matrix coords. */
|
|
37
|
+
holesToMatrix(holes: number[][][] | undefined): number[][][] | undefined;
|
|
38
|
+
/** Hole rings (`[[x, y], …]`) from matrix to data coords. */
|
|
39
|
+
holesToData(holes: number[][][] | undefined): number[][][] | undefined;
|
|
40
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/** Pointer callbacks of an on-canvas tool. */
|
|
2
|
+
export interface ToolOverlayHandlers {
|
|
3
|
+
/** Primary-button press (other buttons are ignored). The pointer is captured,
|
|
4
|
+
* so the drag keeps reporting moves and its release outside the canvas. */
|
|
5
|
+
down?(e: PointerEvent): void;
|
|
6
|
+
/** Every move, pressed or hovering. */
|
|
7
|
+
move?(e: PointerEvent): void;
|
|
8
|
+
/** Release, cancel, or leaving the canvas without a capture. */
|
|
9
|
+
up?(e: PointerEvent): void;
|
|
10
|
+
/** The canvas backing store was resized (its contents were cleared). */
|
|
11
|
+
resize?(): void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The transparent canvas an on-canvas tool (wand, brush, vertex eraser,
|
|
15
|
+
* zoom-to-box, SAM point) lays over the plot to take the pointer:
|
|
16
|
+
*
|
|
17
|
+
* - absolute, 100 % of the container, above the renderer (z-index 100);
|
|
18
|
+
* - pointer events (mouse, pen, touch) with pointer capture, so a drag that
|
|
19
|
+
* leaves the canvas keeps going instead of ending at the edge;
|
|
20
|
+
* - only the primary button starts a gesture;
|
|
21
|
+
* - a backing store sized to the container × devicePixelRatio and kept in step
|
|
22
|
+
* by a ResizeObserver, so drawing stays sharp and aligned after a panel or
|
|
23
|
+
* window resize (RT-31). {@link context} draws in CSS pixels.
|
|
24
|
+
*/
|
|
25
|
+
export declare class ToolOverlayCanvas {
|
|
26
|
+
private canvas;
|
|
27
|
+
private handlers;
|
|
28
|
+
private resizeObserver?;
|
|
29
|
+
private readonly listeners;
|
|
30
|
+
/** The overlay canvas while attached. */
|
|
31
|
+
get element(): HTMLCanvasElement | null;
|
|
32
|
+
get attached(): boolean;
|
|
33
|
+
/** Width / height in CSS pixels. */
|
|
34
|
+
get cssWidth(): number;
|
|
35
|
+
get cssHeight(): number;
|
|
36
|
+
/** Lay the canvas over `container` (no-op when already attached). */
|
|
37
|
+
attach(container: HTMLElement, handlers: ToolOverlayHandlers, cursor?: string): HTMLCanvasElement;
|
|
38
|
+
/** Remove the canvas and its listeners (no-op when detached). */
|
|
39
|
+
detach(): void;
|
|
40
|
+
/** The 2D context, scaled so drawing coordinates are CSS pixels. */
|
|
41
|
+
context(): CanvasRenderingContext2D | null;
|
|
42
|
+
/** Clear the whole canvas. */
|
|
43
|
+
clear(): void;
|
|
44
|
+
/** An event's position relative to the canvas, in CSS pixels. */
|
|
45
|
+
toLocal(e: {
|
|
46
|
+
clientX: number;
|
|
47
|
+
clientY: number;
|
|
48
|
+
}): {
|
|
49
|
+
x: number;
|
|
50
|
+
y: number;
|
|
51
|
+
};
|
|
52
|
+
private onDown;
|
|
53
|
+
private onUp;
|
|
54
|
+
/** Leaving ends a drag only when nothing captured the pointer (a captured
|
|
55
|
+
* drag continues outside the canvas until release). */
|
|
56
|
+
private onLeave;
|
|
57
|
+
/** Size the backing store to the container × DPR. True when it changed. */
|
|
58
|
+
private fit;
|
|
59
|
+
private dpr;
|
|
60
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** The part of RegionStore a tool needs to make one drag one undo step. */
|
|
2
|
+
export interface UndoGestureTarget {
|
|
3
|
+
beginGesture(): void;
|
|
4
|
+
endGesture(): void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Brackets one pointer drag as a single undo step on the region store (RT-12):
|
|
8
|
+
* `begin()` on pointer-down, `end()` on pointer-up/leave or deactivation.
|
|
9
|
+
* Idempotent, so every exit path can call `end()`. A no-op without a target.
|
|
10
|
+
*/
|
|
11
|
+
export declare class UndoGesture {
|
|
12
|
+
private readonly target;
|
|
13
|
+
private open;
|
|
14
|
+
constructor(target: UndoGestureTarget | null | undefined);
|
|
15
|
+
begin(): void;
|
|
16
|
+
end(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* A labelled toolbar slider: label, p-slider, value readout. Used for the
|
|
5
|
+
* brush size, wand sensitivity, vertex-eraser radius and the isosurface band
|
|
6
|
+
* (`range`). Presentational: the host owns the value.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ToolSliderComponent {
|
|
9
|
+
/** The label before the slider. */
|
|
10
|
+
label: string;
|
|
11
|
+
/** A number, or `[low, high]` with {@link range}. */
|
|
12
|
+
value: number | number[];
|
|
13
|
+
/** Lower bound of the slider. */
|
|
14
|
+
min: number;
|
|
15
|
+
/** Upper bound of the slider. */
|
|
16
|
+
max: number;
|
|
17
|
+
/** Slider step. */
|
|
18
|
+
step: number;
|
|
19
|
+
/** A two-handle range slider: {@link value} is `[low, high]`. */
|
|
20
|
+
range: boolean;
|
|
21
|
+
/** Tooltip (HTML). */
|
|
22
|
+
tooltip: string;
|
|
23
|
+
/** The readout after the slider. */
|
|
24
|
+
valueText: string;
|
|
25
|
+
/** Slider moved: its value (or values with {@link range}); PrimeNG may report none. */
|
|
26
|
+
valueChange: EventEmitter<number | number[] | undefined>;
|
|
27
|
+
protected onChange(event: {
|
|
28
|
+
value?: number;
|
|
29
|
+
values?: number[];
|
|
30
|
+
}): void;
|
|
31
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToolSliderComponent, never>;
|
|
32
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ToolSliderComponent, "toolbar-tool-slider", never, { "label": { "alias": "label"; "required": false; }; "value": { "alias": "value"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "step": { "alias": "step"; "required": false; }; "range": { "alias": "range"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "valueText": { "alias": "valueText"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { ToolbarDialogToolContribution, ToolbarToolContribution } from '../../contracts/toolbar-tool.contract';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* The plotting toolbar's help dialog: static documentation of every tool, plus
|
|
6
|
+
* the help each contributed tool brings.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ToolbarHelpDialogComponent implements OnChanges {
|
|
9
|
+
/** The dialog is open. */
|
|
10
|
+
visible: boolean;
|
|
11
|
+
/** The dialog was closed (`false`); two-way with {@link visible}. */
|
|
12
|
+
visibleChange: EventEmitter<boolean>;
|
|
13
|
+
/** Contributed no-prompt tools (their help entries are listed). */
|
|
14
|
+
contributedTools: ToolbarToolContribution[];
|
|
15
|
+
/** Contributed dialog tools (their help entries are listed). */
|
|
16
|
+
dialogTools: ToolbarDialogToolContribution[];
|
|
17
|
+
/** Contributed tool names for the prompted/no-prompt contrast, e.g.
|
|
18
|
+
* "YOLO, Retinal layers". Empty when nothing is registered, which is why
|
|
19
|
+
* the sentence that uses it is itself conditional. */
|
|
20
|
+
protected contributedToolNames: string;
|
|
21
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ToolbarHelpDialogComponent, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarHelpDialogComponent, "toolbar-help-dialog", never, { "visible": { "alias": "visible"; "required": false; }; "contributedTools": { "alias": "contributedTools"; "required": false; }; "dialogTools": { "alias": "dialogTools"; "required": false; }; }, { "visibleChange": "visibleChange"; }, never, never, true, never>;
|
|
24
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { EventEmitter
|
|
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
|
|
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,21 @@ 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
|
+
/** The armed tool's mode (zoom, pan, a drawing tool, `samPoint`, …), or null. */
|
|
54
56
|
activeDragMode: string | null;
|
|
57
|
+
/** The 3D camera mode (`turntable` / `orbit` / …). */
|
|
55
58
|
activeSurface3dMode: string;
|
|
56
59
|
/** Whether the napari 3D axes/scale gizmo is currently shown (drives the toggle's look). */
|
|
57
60
|
axesVisible: boolean;
|
|
61
|
+
/** The napari surface wireframe is on. */
|
|
58
62
|
wireframeActive: boolean;
|
|
59
63
|
/** Active napari 3D decimate factor (1 = Full … 8 = ⅛; default ½). */
|
|
60
64
|
resolutionScale: number;
|
|
61
|
-
/**
|
|
62
|
-
readonly decimateOptions: {
|
|
63
|
-
label: string;
|
|
64
|
-
value: number;
|
|
65
|
-
}[];
|
|
65
|
+
/** Magic-wand sensitivity. */
|
|
66
66
|
wandSensitivity: number;
|
|
67
|
+
/** Brush diameter in image pixels. */
|
|
67
68
|
brushSize: number;
|
|
69
|
+
/** Vertex-eraser radius in image pixels. */
|
|
68
70
|
vertexEraserRadius: number;
|
|
69
71
|
/** Whether a region action is available to undo (jit-ui#85). Greys out the
|
|
70
72
|
* Undo button when false (nothing done yet, or all steps already undone). */
|
|
@@ -72,6 +74,7 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
72
74
|
/** Whether an undone region action is available to redo (jit-ui#85). Greys
|
|
73
75
|
* out the Redo button when false. */
|
|
74
76
|
canRedo: boolean;
|
|
77
|
+
/** The single-image / stack choices of the Plotly stack toggle. */
|
|
75
78
|
stackOptions: {
|
|
76
79
|
name: string;
|
|
77
80
|
val: string;
|
|
@@ -87,6 +90,7 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
87
90
|
id: string;
|
|
88
91
|
label: string;
|
|
89
92
|
}[];
|
|
93
|
+
/** The selected SAM model id. */
|
|
90
94
|
samModelId: string;
|
|
91
95
|
/**
|
|
92
96
|
* Tools contributed through {@link TOOLBAR_TOOLS}, already filtered to the
|
|
@@ -100,31 +104,46 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
100
104
|
openDialogToolId: string | null;
|
|
101
105
|
/** Active checkpoint per contributed tool, keyed by tool id. */
|
|
102
106
|
toolModelIds: Record<string, string>;
|
|
107
|
+
/** A plot type or contributed mode was picked. */
|
|
103
108
|
selectPlotType: EventEmitter<string>;
|
|
104
109
|
/** Intensity (LINE) mode: add another colored line ROI + inset trace. */
|
|
105
110
|
addProfileLine: EventEmitter<void>;
|
|
106
111
|
/** Toggle image smoothing (bilinear) vs nearest-neighbour (crisp pixels). */
|
|
107
112
|
toggleImageSmoothing: EventEmitter<void>;
|
|
113
|
+
/** The isosurface band slider moved: the new `[low, high]` pair. */
|
|
108
114
|
isoRangeChange: EventEmitter<number[] | undefined>;
|
|
109
115
|
/** Open the Channels & Histogram dialog (brightness/contrast, colormap, …). */
|
|
110
116
|
openChannelHistogram: EventEmitter<void>;
|
|
111
117
|
/** Open the spatial-omics controls (colour-by, legend, point display). */
|
|
112
118
|
openSpatialControls: EventEmitter<void>;
|
|
119
|
+
/** Open the Region Editor dialog. */
|
|
113
120
|
openRegionEditor: EventEmitter<void>;
|
|
121
|
+
/** A single-image / stack choice was picked. */
|
|
114
122
|
selectStackOption: EventEmitter<{
|
|
115
123
|
name: string;
|
|
116
124
|
val: string;
|
|
117
125
|
}>;
|
|
126
|
+
/** The live slice scrubber moved (fires while dragging). */
|
|
118
127
|
zScrub: EventEmitter<number | undefined>;
|
|
128
|
+
/** The live slice scrubber was released on a slice. */
|
|
119
129
|
zSlide: EventEmitter<number | undefined>;
|
|
130
|
+
/** A slice number was typed. */
|
|
120
131
|
zIndexInput: EventEmitter<number>;
|
|
132
|
+
/** Re-plot at the typed slice. */
|
|
121
133
|
reloadAndPlot: EventEmitter<void>;
|
|
134
|
+
/** Download the current view as PNG. */
|
|
122
135
|
downloadImage: EventEmitter<void>;
|
|
136
|
+
/** Fit the image to the view. */
|
|
123
137
|
autoscaleImage: EventEmitter<void>;
|
|
138
|
+
/** A zoom / pan / drawing tool button was clicked (its mode). */
|
|
124
139
|
toggleDragMode: EventEmitter<string>;
|
|
140
|
+
/** Zoom in one step. */
|
|
125
141
|
zoomIn: EventEmitter<void>;
|
|
142
|
+
/** Zoom out one step. */
|
|
126
143
|
zoomOut: EventEmitter<void>;
|
|
144
|
+
/** A 3D camera mode button was clicked (its mode). */
|
|
127
145
|
toggleSurface3dMode: EventEmitter<string>;
|
|
146
|
+
/** Reset the 3D camera. */
|
|
128
147
|
resetSurfaceCamera: EventEmitter<void>;
|
|
129
148
|
/** Toggle the napari 3D coordinate-axes / scale gizmo on/off. */
|
|
130
149
|
toggleAxes: EventEmitter<void>;
|
|
@@ -132,6 +151,7 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
132
151
|
toggleWireframe: EventEmitter<void>;
|
|
133
152
|
/** Change the napari 3D decimate factor (reloads at the new resolution). */
|
|
134
153
|
selectResolution: EventEmitter<number>;
|
|
154
|
+
/** Delete the selected region. */
|
|
135
155
|
deleteRegion: EventEmitter<void>;
|
|
136
156
|
/** Undo the last region action (jit-ui#85). */
|
|
137
157
|
undoRegion: EventEmitter<void>;
|
|
@@ -154,105 +174,49 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
154
174
|
openToolParams: EventEmitter<string>;
|
|
155
175
|
/** SAM model picker (jit-ui#90 P1). */
|
|
156
176
|
samModelChange: EventEmitter<string>;
|
|
177
|
+
/** The wand sensitivity slider moved. */
|
|
157
178
|
wandSensitivityChange: EventEmitter<number | undefined>;
|
|
179
|
+
/** The brush size slider moved. */
|
|
158
180
|
brushSizeChange: EventEmitter<number | undefined>;
|
|
181
|
+
/** The vertex-eraser radius slider moved. */
|
|
159
182
|
vertexEraserRadiusChange: EventEmitter<number | undefined>;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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 (` `, `×`, `&`) 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: {
|
|
183
|
+
protected displayHelpDialog: boolean;
|
|
184
|
+
/** trackBy for the dialog tools' buttons. */
|
|
185
|
+
protected trackToolById(_index: number, tool: {
|
|
219
186
|
id: string;
|
|
220
187
|
}): string;
|
|
221
188
|
/** The built-in type whose tools and controls apply to the current selection. */
|
|
222
|
-
get effectivePlotType(): PlotType;
|
|
189
|
+
protected get effectivePlotType(): PlotType;
|
|
223
190
|
/** The Image plot type renders as a natively pan/zoom-able raster, so the
|
|
224
191
|
* generic zoom/pan tools are hidden. */
|
|
225
|
-
get isImageView(): boolean;
|
|
192
|
+
protected get isImageView(): boolean;
|
|
226
193
|
/** Either spatial-omics mode is active, so its controls are worth offering.
|
|
227
194
|
* The 3D cloud needs the panel MORE than the 2D view does, not less: colouring,
|
|
228
195
|
* the legend and category show/hide are the only way to make sense of a
|
|
229
196
|
* 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;
|
|
197
|
+
protected get isSpatialMode(): boolean;
|
|
234
198
|
/** Backends with a vertex-editing region overlay: OSD Image and napari-js WebGPU image
|
|
235
199
|
* (jit-ui#102). Gates the polygon / add-vertex / delete-vertex / Bézier-convert tools. */
|
|
236
|
-
get supportsRegionVertexTools(): boolean;
|
|
200
|
+
protected get supportsRegionVertexTools(): boolean;
|
|
237
201
|
/** Plot types that scrub a z-stack live (the renderer swaps the slice in place): the OSD Image
|
|
238
202
|
* view, the napari-js WebGPU image, the napari-js surface — which rebuilds the height field
|
|
239
203
|
* from the picked slice (jit-ui#102) — and the 2D spatial-omics view, where a 3D dataset's
|
|
240
204
|
* registered volume is the image and the slider picks the section whose observations are
|
|
241
205
|
* drawn. Drives the per-slice slider. */
|
|
242
|
-
get showsLiveSliceScrubber(): boolean;
|
|
206
|
+
protected get showsLiveSliceScrubber(): boolean;
|
|
243
207
|
/** Any napari-js WebGPU plot type. The single-image/stack toggle + slice-number field are
|
|
244
208
|
* Plotly-only stack controls, so they're hidden for napari (jit-ui#102). */
|
|
245
|
-
get isNapariMode(): boolean;
|
|
209
|
+
protected get isNapariMode(): boolean;
|
|
246
210
|
/** ISOSURFACE (Plotly or napari-js WebGPU, either resolution) shows the isovalue range slider. */
|
|
247
|
-
get isIsosurfaceMode(): boolean;
|
|
211
|
+
protected get isIsosurfaceMode(): boolean;
|
|
248
212
|
/** The napari-js WebGPU surface — shows the wireframe toggle. */
|
|
249
|
-
get isNapariSurfaceMode(): boolean;
|
|
213
|
+
protected get isNapariSurfaceMode(): boolean;
|
|
250
214
|
/** Any napari-js WebGPU 3D type (volume/isosurface/surface) — shows the Resolution control. */
|
|
251
|
-
get isNapari3dMode(): boolean;
|
|
215
|
+
protected get isNapari3dMode(): boolean;
|
|
252
216
|
/** Intensity profile lines are Region-based and available in the Heatmap and
|
|
253
217
|
* Image plot types, which show the Intensity tool group. */
|
|
254
|
-
get isIntensityCapable(): boolean;
|
|
255
|
-
showHelp(): void;
|
|
218
|
+
protected get isIntensityCapable(): boolean;
|
|
219
|
+
protected showHelp(): void;
|
|
256
220
|
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, ["*"],
|
|
221
|
+
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, ["*"], true, never>;
|
|
258
222
|
}
|