@jax-data-science/sci-image-visualizer 0.8.3 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +201 -460
- package/esm2022/index.mjs +34 -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/image.contract.mjs +1 -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/region-store.contract.mjs +1 -1
- package/esm2022/lib/contracts/sam.contract.mjs +1 -1
- package/esm2022/lib/contracts/section-view.contract.mjs +2 -0
- 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/loft.mjs +128 -0
- package/esm2022/lib/geometry/polylabel.mjs +156 -0
- package/esm2022/lib/geometry/raster.mjs +98 -0
- package/esm2022/lib/geometry/reconstruct.mjs +315 -0
- package/esm2022/lib/geometry/reslice-image.mjs +57 -0
- package/esm2022/lib/geometry/ring.mjs +201 -0
- package/esm2022/lib/geometry/section.mjs +215 -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 +12 -9
- package/esm2022/lib/implementations/napari-js/napari-loading-state.mjs +83 -0
- package/esm2022/lib/implementations/napari-js/napari-region-mesh-pointer.mjs +100 -0
- package/esm2022/lib/implementations/napari-js/napari-region-overlay.mjs +180 -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 +270 -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 +347 -0
- package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +427 -4207
- package/esm2022/lib/implementations/napari-js/napari-volume-region-meshes.mjs +129 -0
- package/esm2022/lib/implementations/napari-js/napari-volume-scene.mjs +550 -0
- package/esm2022/lib/implementations/napari-js/napari-volume-slice-planes.mjs +103 -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 +194 -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 +164 -0
- package/esm2022/lib/implementations/osd/osd-region-overlay.mjs +213 -716
- 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 +134 -0
- package/esm2022/lib/models/region-clone.mjs +68 -0
- package/esm2022/lib/models/region-geojson.mjs +411 -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/class-tree/class-tree.component.mjs +156 -0
- package/esm2022/lib/region-editor/class-tree/class-tree.mjs +108 -0
- package/esm2022/lib/region-editor/classes-panel/classes-panel.component.mjs +163 -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 +896 -660
- package/esm2022/lib/region-editor/region-metrics.mjs +86 -0
- package/esm2022/lib/region-editor/region-persistence.service.mjs +160 -0
- package/esm2022/lib/region-editor/region-table/region-table.component.mjs +169 -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/region-source-layer.mjs +378 -0
- package/esm2022/lib/region-overlay/region-style.mjs +97 -0
- package/esm2022/lib/region-overlay/svg-region-renderer.mjs +228 -0
- package/esm2022/lib/region-source/http-region-source.mjs +104 -0
- package/esm2022/lib/region-source/region-source-ops.mjs +53 -0
- package/esm2022/lib/region-source/region-source-worker.mjs +10 -0
- package/esm2022/lib/region-source/region-source.mjs +67 -0
- package/esm2022/lib/region-source/region-tiles.mjs +708 -0
- package/esm2022/lib/region-source/worker-region-source.mjs +229 -0
- package/esm2022/lib/render-orchestrator.mjs +14 -11
- package/esm2022/lib/render-session.mjs +207 -0
- package/esm2022/lib/routing-visualizer.service.mjs +858 -414
- package/esm2022/lib/section-pane/section-pane.component.mjs +299 -0
- 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 +53 -5
- package/esm2022/lib/store/class-signatures.mjs +63 -0
- package/esm2022/lib/store/region-history.mjs +146 -0
- package/esm2022/lib/store/region-scope-cache.mjs +144 -0
- package/esm2022/lib/store/region-selection.mjs +82 -0
- package/esm2022/lib/store/region-source-scope.mjs +171 -0
- package/esm2022/lib/store/region-store.service.mjs +986 -670
- package/esm2022/lib/store/spatial-selection.service.mjs +2 -2
- package/esm2022/lib/store/visualizer-store.service.mjs +81 -76
- 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 +120 -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 +121 -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 +84 -119
- 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 +123 -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/volume-sections.mjs +175 -0
- package/esm2022/lib/visualizer.component.mjs +602 -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-BKQhpbHv.mjs +47169 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs +238 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.mjs +12 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.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/region-source.worker.js +1067 -0
- package/fesm2022/spatial-math.worker.js +471 -0
- package/fesm2022/tsne.worker.js +32 -15
- package/index.d.ts +19 -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/image.contract.d.ts +4 -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 +85 -1
- package/lib/contracts/region-overlay.contract.d.ts +5 -0
- package/lib/contracts/region-store.contract.d.ts +22 -0
- package/lib/contracts/sam.contract.d.ts +7 -0
- package/lib/contracts/section-view.contract.d.ts +44 -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 +231 -54
- package/lib/contracts/viz-config.d.ts +9 -0
- package/lib/geometry/contour.d.ts +24 -0
- package/lib/geometry/loft.d.ts +22 -0
- package/lib/geometry/polylabel.d.ts +23 -0
- package/lib/geometry/raster.d.ts +42 -0
- package/lib/geometry/reconstruct.d.ts +54 -0
- package/lib/geometry/reslice-image.d.ts +33 -0
- package/lib/geometry/ring.d.ts +67 -0
- package/lib/geometry/section.d.ts +52 -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 +4 -3
- package/lib/implementations/napari-js/napari-loading-state.d.ts +37 -0
- package/lib/implementations/napari-js/napari-region-mesh-pointer.d.ts +32 -0
- package/lib/implementations/napari-js/napari-region-overlay.d.ts +68 -71
- package/lib/implementations/napari-js/napari-scene.d.ts +126 -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 +91 -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 +169 -883
- package/lib/implementations/napari-js/napari-volume-region-meshes.d.ts +66 -0
- package/lib/implementations/napari-js/napari-volume-scene.d.ts +148 -0
- package/lib/implementations/napari-js/napari-volume-slice-planes.d.ts +43 -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 +38 -0
- package/lib/implementations/osd/osd-region-overlay.d.ts +46 -51
- 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 +83 -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 +25 -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 +45 -0
- package/lib/models/region-clone.d.ts +20 -0
- package/lib/models/region-geojson.d.ts +57 -0
- package/lib/models/region.d.ts +59 -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/class-tree/class-tree.component.d.ts +78 -0
- package/lib/region-editor/class-tree/class-tree.d.ts +31 -0
- package/lib/region-editor/classes-panel/classes-panel.component.d.ts +86 -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 +283 -200
- package/lib/region-editor/region-metrics.d.ts +34 -0
- package/lib/region-editor/region-persistence.service.d.ts +77 -0
- package/lib/region-editor/region-table/region-table.component.d.ts +89 -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 +158 -0
- package/lib/region-overlay/region-hit-test.d.ts +38 -0
- package/lib/region-overlay/region-source-layer.d.ts +96 -0
- package/lib/region-overlay/region-style.d.ts +52 -0
- package/lib/region-overlay/svg-region-renderer.d.ts +110 -0
- package/lib/region-source/http-region-source.d.ts +45 -0
- package/lib/region-source/region-source-ops.d.ts +89 -0
- package/lib/region-source/region-source-worker.d.ts +7 -0
- package/lib/region-source/region-source.d.ts +82 -0
- package/lib/region-source/region-tiles.d.ts +289 -0
- package/lib/region-source/worker-region-source.d.ts +65 -0
- package/lib/render-orchestrator.d.ts +6 -2
- package/lib/render-session.d.ts +75 -0
- package/lib/routing-visualizer.service.d.ts +248 -59
- package/lib/section-pane/section-pane.component.d.ts +47 -0
- 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 +39 -2
- package/lib/store/class-signatures.d.ts +11 -0
- package/lib/store/region-history.d.ts +66 -0
- package/lib/store/region-scope-cache.d.ts +65 -0
- package/lib/store/region-selection.d.ts +36 -0
- package/lib/store/region-source-scope.d.ts +68 -0
- package/lib/store/region-store.service.d.ts +312 -116
- package/lib/store/visualizer-store.service.d.ts +32 -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 +62 -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 +51 -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 +55 -84
- 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 +46 -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/volume-sections.d.ts +64 -0
- package/lib/visualizer.component.d.ts +232 -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/assets/slice.svg +23 -0
- 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,86 @@
|
|
|
1
|
+
import { IViewportHost, IRegionDataHost } from '../../contracts/coordinate-transform.contract';
|
|
2
|
+
import type { CanvasToolId } from '../../contracts/display-types';
|
|
3
|
+
import type { CachedFrame } from './frame-pixels';
|
|
4
|
+
/**
|
|
5
|
+
* The pixel readback a backend (Plotly, OpenSeadragon or napari-js) hands the
|
|
6
|
+
* canvas tools for sampling. Returned by {@link CanvasToolHost.getCachedImageData}.
|
|
7
|
+
*/
|
|
8
|
+
export interface CachedImageData {
|
|
9
|
+
/**
|
|
10
|
+
* One frame per stack slice (length 1 for non-stack images): a nested `[y][x]`
|
|
11
|
+
* matrix (Plotly) or a packed RGBA readback (OpenSeadragon, napari-js). Read
|
|
12
|
+
* them through `framePixels()` (`tool-kit/frame-pixels`).
|
|
13
|
+
*/
|
|
14
|
+
frames: CachedFrame[];
|
|
15
|
+
/** Image-pixel width of each frame matrix. */
|
|
16
|
+
width: number;
|
|
17
|
+
/** Image-pixel height of each frame matrix. */
|
|
18
|
+
height: number;
|
|
19
|
+
/**
|
|
20
|
+
* Data coords per matrix pixel: `[x, y]`. OSD and napari report distinct
|
|
21
|
+
* ratios for a non-square viewport; a single entry applies to both axes
|
|
22
|
+
* (see `MatrixFrame`).
|
|
23
|
+
*/
|
|
24
|
+
ratios: number[];
|
|
25
|
+
/** Whether each nested frame is a 2-D scalar matrix (true) or 3-channel RGB
|
|
26
|
+
* (false). Packed frames always read as RGB. */
|
|
27
|
+
isGrayscale: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Data-coords of matrix pixel (0,0)'s top-left corner. Lets the matrix be a
|
|
30
|
+
* *crop* of the data space rather than starting at the origin — e.g. the OSD
|
|
31
|
+
* backend samples the currently rendered viewport, so when zoomed in the matrix
|
|
32
|
+
* covers only the visible sub-region at screen resolution. Defaults to 0.
|
|
33
|
+
* matrix = (data - origin) / ratio, and matrix pixel (i, j) covers
|
|
34
|
+
* `[i, i + 1) × [j, j + 1)` on every backend: a click floors to its pixel, and
|
|
35
|
+
* traced outlines run along pixel edges.
|
|
36
|
+
*/
|
|
37
|
+
originX?: number;
|
|
38
|
+
originY?: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Everything a canvas tool needs from the backend it runs on — one interface
|
|
42
|
+
* for every tool (it replaces the wand's, the vertex eraser's and the
|
|
43
|
+
* zoom-to-box's own host types). Keeping it explicit keeps the dependency
|
|
44
|
+
* one-way: the tools never import a backend.
|
|
45
|
+
*/
|
|
46
|
+
export interface CanvasToolHost extends IViewportHost, IRegionDataHost {
|
|
47
|
+
/** Pixel data for sampling, and the data↔matrix frame. null when no image is loaded yet. */
|
|
48
|
+
getCachedImageData(): CachedImageData | null;
|
|
49
|
+
/** Index of the currently visible frame in a stack (0 for non-stack). */
|
|
50
|
+
getActiveFrameIndex(): number;
|
|
51
|
+
/** Current image's filename — stamped onto new shapes for filtering. */
|
|
52
|
+
getFileName(): string | undefined;
|
|
53
|
+
/** Default stroke colour for new shapes. */
|
|
54
|
+
getShapeColor(): string;
|
|
55
|
+
/**
|
|
56
|
+
* Zoom-to-box: an overlay-pixel point (relative to the overlay container's
|
|
57
|
+
* top-left) in the backend's data coordinates.
|
|
58
|
+
*/
|
|
59
|
+
pixelToData?(px: number, py: number): {
|
|
60
|
+
x: number;
|
|
61
|
+
y: number;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Zoom-to-box: apply the selected rectangle, ordered `[xMin, xMax, yMax, yMin]`.
|
|
65
|
+
* Plotly re-fetches or relayouts its axes; OpenSeadragon and napari-js fit the
|
|
66
|
+
* view to the image rectangle.
|
|
67
|
+
*/
|
|
68
|
+
applyZoomToBox?(dataBox: number[]): void;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* An on-canvas tool (wand, brush, vertex eraser, zoom-to-box, SAM point). One
|
|
72
|
+
* instance per backend, owned by that backend's `CanvasToolManager`, so no
|
|
73
|
+
* in-progress state (a stroke, SAM points) is shared between backends.
|
|
74
|
+
*/
|
|
75
|
+
export interface ICanvasTool<O = unknown> {
|
|
76
|
+
readonly id: CanvasToolId;
|
|
77
|
+
/** Arm the tool on `host` (lay its overlay over the plot). Arming the armed
|
|
78
|
+
* tool again only applies `options`; it keeps the work in progress. */
|
|
79
|
+
activate(host: CanvasToolHost, options?: O): void;
|
|
80
|
+
/** Remove the overlay and drop the work in progress. */
|
|
81
|
+
deactivate(): void;
|
|
82
|
+
/** Live option updates (also while disarmed: they apply to the next arming). */
|
|
83
|
+
setOptions?(options: O): void;
|
|
84
|
+
/** Drop the work in progress but stay armed (undo/redo, image switch). */
|
|
85
|
+
reset?(): void;
|
|
86
|
+
}
|
|
@@ -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
|
+
}
|