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