@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
|
@@ -4,6 +4,7 @@ import { Region, Rectangle, Polygon, MultiPolygon } from '../models/region';
|
|
|
4
4
|
import { VisualizerStore } from './visualizer-store.service';
|
|
5
5
|
import { IRegionStore } from '../contracts/visualizer.contract';
|
|
6
6
|
import { IRegionEditApi } from '../contracts/region-store.contract';
|
|
7
|
+
import { StackSaveLayout } from './region-scope-cache';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
/**
|
|
9
10
|
* Backend-neutral region store — the single source of truth for region state.
|
|
@@ -21,45 +22,33 @@ import * as i0 from "@angular/core";
|
|
|
21
22
|
* - {@link IRegionEditApi} — Region-native geometry edits (move/resize, and
|
|
22
23
|
* add/delete/move vertex) the OSD overlay drives.
|
|
23
24
|
*
|
|
25
|
+
* Copy-on-write (review RT-13): no operation changes a stored {@link Region}
|
|
26
|
+
* (or the regions array) in place. An edit builds a replacement — the geometry
|
|
27
|
+
* through the pure `models/polygon-edit` functions — and swaps it in, so the
|
|
28
|
+
* undo history ({@link RegionHistory}) can keep shallow snapshots that share
|
|
29
|
+
* every untouched region instead of deep-cloning the whole set per step.
|
|
30
|
+
* Callers must follow the same rule with the instances {@link getRegions}
|
|
31
|
+
* returns: treat them as read-only, and commit a changed copy.
|
|
32
|
+
*
|
|
24
33
|
* Classification colours live in {@link VisualizerStore} (shared by both
|
|
25
|
-
* backends); GeoJSON import/export
|
|
26
|
-
*
|
|
34
|
+
* backends); GeoJSON import/export is `models/region-geojson`. All coordinates
|
|
35
|
+
* are image pixels.
|
|
27
36
|
*/
|
|
28
37
|
export declare class RegionStore implements IRegionStore, IRegionEditApi {
|
|
29
38
|
private store;
|
|
30
39
|
private static readonly UNDO_LIMIT;
|
|
31
40
|
private static readonly UNDO_COALESCE_MS;
|
|
32
|
-
/** Per-image region cache. `regions` is always a snapshot of the entry for
|
|
33
|
-
* `currentImageKey`. */
|
|
34
|
-
private regionsByImageKey;
|
|
35
|
-
private currentImageKey;
|
|
36
41
|
/** The current image's regions — the live, edited array. */
|
|
37
42
|
private regions;
|
|
38
|
-
/** Last saved snapshot, restorable via plotPreviousShapes(). */
|
|
39
|
-
private previousRegions;
|
|
40
43
|
/**
|
|
41
44
|
* Undo/redo history (jit-ui#85): up to {@link UNDO_LIMIT} snapshots of the
|
|
42
|
-
* region set, each
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* A continuous gesture (a wand/brush/vertex drag commits to the store many
|
|
49
|
-
* times) is coalesced into a single entry: the first commit of a burst
|
|
50
|
-
* captures the pre-burst state and every commit within
|
|
51
|
-
* {@link UNDO_COALESCE_MS} of the previous one is folded into it. History
|
|
52
|
-
* never crosses an image load/switch — {@link resetUndoHistory} clears it.
|
|
45
|
+
* region set, each taken just *before* a region-editing action; continuous
|
|
46
|
+
* gestures and rapid commits coalesce (see {@link RegionHistory}). Snapshots
|
|
47
|
+
* are shallow — the regions array as it was — which is safe because nothing
|
|
48
|
+
* here mutates a region or an array in place (RT-13). History never crosses an
|
|
49
|
+
* image load/switch — {@link resetUndoHistory} clears it.
|
|
53
50
|
*/
|
|
54
|
-
private
|
|
55
|
-
private redoStack;
|
|
56
|
-
/** True while a coalescing burst is open (further commits fold into it). */
|
|
57
|
-
private undoBurstOpen;
|
|
58
|
-
private undoBurstTimer;
|
|
59
|
-
/** True while restoring a snapshot, so the restore records no new history. */
|
|
60
|
-
private restoringUndo;
|
|
61
|
-
private readonly canUndo$;
|
|
62
|
-
private readonly canRedo$;
|
|
51
|
+
private readonly history;
|
|
63
52
|
/** Monotonic id source — ids never repeat within the service lifetime, so
|
|
64
53
|
* selection stays correct across delete/add cycles even when names collide. */
|
|
65
54
|
private nextId;
|
|
@@ -68,39 +57,27 @@ export declare class RegionStore implements IRegionStore, IRegionEditApi {
|
|
|
68
57
|
private fillColor;
|
|
69
58
|
private isRegionSavedOn;
|
|
70
59
|
/**
|
|
71
|
-
* Per-
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
* zero-based {@link Region.z}) for save/export. Off by default (stackMode
|
|
79
|
-
* false, z 0), so single-plane images are completely unaffected.
|
|
60
|
+
* Per-image cache and, for z-stacks, per-slice regions (jit-ui#93). In stack
|
|
61
|
+
* mode the live `regions` array holds ONE slice — the display slice — so the
|
|
62
|
+
* overlays, the selection projection and the Regions table work unchanged
|
|
63
|
+
* (they all read {@link getRegions}); {@link setDisplaySlice} swaps the live
|
|
64
|
+
* set on scrub and {@link getSliceRegions} flattens every slice (each tagged
|
|
65
|
+
* with its zero-based {@link Region.z}) for save/export. Off by default, so
|
|
66
|
+
* single-plane images are unaffected.
|
|
80
67
|
*/
|
|
81
|
-
private
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
* z-indexed geojson (single-file z-stack, QuPath schema); `per-slice-file`
|
|
86
|
-
* writes one geojson per slice-file (a folder of numbered images). */
|
|
87
|
-
private stackSaveLayout;
|
|
88
|
-
/** Slices that were loaded with regions (jit-ui#93). A per-slice-file save
|
|
89
|
-
* re-writes these even when now empty, so clearing a slice's regions and
|
|
90
|
-
* saving removes its previously-saved geojson (writes an empty one). */
|
|
91
|
-
private stackInitialNonEmpty;
|
|
92
|
-
/** Selection is tracked by region *id* internally (stable across edits) and
|
|
93
|
-
* projected to array indices on the IRegionStore boundary. */
|
|
94
|
-
private selectedIds;
|
|
95
|
-
private readonly selectedIndices$;
|
|
68
|
+
private readonly scope;
|
|
69
|
+
/** Selection by region *id* (stable across edits), projected to array
|
|
70
|
+
* indices on the IRegionStore boundary. */
|
|
71
|
+
private readonly selection;
|
|
96
72
|
private readonly regionUpdate$;
|
|
97
73
|
/** Non-coalesced sibling of regionUpdate$: fires on every change even during a
|
|
98
74
|
* batched drag, so live consumers (intensity inset) update per frame. */
|
|
99
75
|
private readonly regionLiveEdit$;
|
|
76
|
+
/** See {@link getRegionSetReplaced$}. */
|
|
77
|
+
private readonly regionSetReplaced$;
|
|
100
78
|
/** Emit coalescing for live drags (see IRegionEditApi.beginBatch). */
|
|
101
79
|
private batchDepth;
|
|
102
80
|
private pendingEmit;
|
|
103
|
-
private readonly plotUtilities;
|
|
104
81
|
constructor(store: VisualizerStore);
|
|
105
82
|
/**
|
|
106
83
|
* Replace (or, with `append`, add to) the current image's regions. Mints ids
|
|
@@ -109,7 +86,14 @@ export declare class RegionStore implements IRegionStore, IRegionEditApi {
|
|
|
109
86
|
* not stored — mirrors the previous Plotly behaviour.
|
|
110
87
|
*/
|
|
111
88
|
setRegions(regions: Region[], showRegionLabel?: boolean, isRegionSaveOn?: boolean, fillColor?: string, append?: boolean): void;
|
|
112
|
-
/**
|
|
89
|
+
/**
|
|
90
|
+
* The canonical accessor: the current image's regions. A fresh array, but the
|
|
91
|
+
* instances are the stored ones, shared with the undo history: treat them as
|
|
92
|
+
* read-only and change a region through the store's operations (or by
|
|
93
|
+
* committing a copy). Typed `Region[]` rather than
|
|
94
|
+
* `ReadonlyArray<Readonly<Region>>` because the IRegionStore contract and the
|
|
95
|
+
* backends still take a mutable array.
|
|
96
|
+
*/
|
|
113
97
|
getRegions(): Region[];
|
|
114
98
|
/** True while a z-stack is loaded and the store holds regions per slice. */
|
|
115
99
|
isStackMode(): boolean;
|
|
@@ -118,7 +102,7 @@ export declare class RegionStore implements IRegionStore, IRegionEditApi {
|
|
|
118
102
|
/** How the current stack persists to disk (jit-ui#93): `combined` = one
|
|
119
103
|
* z-indexed geojson (single-file z-stack); `per-slice-file` = one geojson per
|
|
120
104
|
* slice-file (folder stack). Meaningless outside stack mode. */
|
|
121
|
-
getStackSaveLayout():
|
|
105
|
+
getStackSaveLayout(): StackSaveLayout;
|
|
122
106
|
/**
|
|
123
107
|
* Enter per-slice stack mode. `slices` maps each zero-based slice index to
|
|
124
108
|
* the regions imported for that slice; the store makes `initialZ`'s slice the
|
|
@@ -128,9 +112,11 @@ export declare class RegionStore implements IRegionStore, IRegionEditApi {
|
|
|
128
112
|
* every slice for save/export. Ids/names/classification colours are minted
|
|
129
113
|
* exactly as {@link setRegions} does.
|
|
130
114
|
*/
|
|
131
|
-
enterStackMode(slices: Map<number, Region[]>, initialZ?: number, saveLayout?:
|
|
115
|
+
enterStackMode(slices: Map<number, Region[]>, initialZ?: number, saveLayout?: StackSaveLayout): void;
|
|
132
116
|
/** Leave stack mode (single-plane image, or the stack was closed). */
|
|
133
117
|
exitStackMode(): void;
|
|
118
|
+
/** The live-set swap of {@link setDisplaySlice}. */
|
|
119
|
+
private showSlice;
|
|
134
120
|
/**
|
|
135
121
|
* Show a different slice: capture the current slice's (possibly edited)
|
|
136
122
|
* regions back into the per-slice store, then load the target slice's regions
|
|
@@ -138,6 +124,8 @@ export declare class RegionStore implements IRegionStore, IRegionEditApi {
|
|
|
138
124
|
* this only records the requested slice index (a no-op otherwise: single-plane
|
|
139
125
|
* regions stay on the default plane — addRegion tags Region.z only in stack
|
|
140
126
|
* mode, so the recorded index is unused until a stack is entered). (jit-ui#93)
|
|
127
|
+
* Either way {@link getRegionSetReplaced$} emits: the slice on screen changed
|
|
128
|
+
* under any in-progress tool work.
|
|
141
129
|
*/
|
|
142
130
|
setDisplaySlice(z: number): void;
|
|
143
131
|
/**
|
|
@@ -157,16 +145,36 @@ export declare class RegionStore implements IRegionStore, IRegionEditApi {
|
|
|
157
145
|
/** Mint ids/names + apply classification colours + tag the slice index, as
|
|
158
146
|
* {@link setRegions} does, for regions entering the per-slice store. */
|
|
159
147
|
private normalizeSlice;
|
|
148
|
+
/**
|
|
149
|
+
* Regions entering the store: mint ids and default names, hydrate JSON bounds
|
|
150
|
+
* into class instances — everything downstream (rendering, geometry de-dup,
|
|
151
|
+
* moveRegion, GeoJSON export) discriminates them with `instanceof`
|
|
152
|
+
* (jit-ui#124) — and apply classification colours. A region that is new to
|
|
153
|
+
* the store (no id yet) is completed in place; one that already has an id may
|
|
154
|
+
* be a stored instance shared with the undo history, so it is copied if it
|
|
155
|
+
* changes.
|
|
156
|
+
*/
|
|
157
|
+
private admit;
|
|
160
158
|
/**
|
|
161
159
|
* Closed polygons projected for image-processing consumers (segmentation,
|
|
162
|
-
* trace builders)
|
|
163
|
-
*
|
|
160
|
+
* crop requests, trace builders), straight from each region's bounds: a
|
|
161
|
+
* rectangle's corners, a polygon with its holes (a bézier as its curve), one
|
|
162
|
+
* polygon per part of a multi-polygon. Open polylines are annotation-only and
|
|
163
|
+
* excluded. Coordinates are rounded to whole pixels.
|
|
164
164
|
*/
|
|
165
|
-
getRegionPolygons():
|
|
165
|
+
getRegionPolygons(): Polygon[];
|
|
166
166
|
getRegionUpdateEvent(): Observable<any[]>;
|
|
167
167
|
/** Live (non-coalesced) region-change stream — fires per frame during a drag.
|
|
168
168
|
* Used by the intensity-profile inset so it tracks line ROIs live. */
|
|
169
169
|
getRegionLiveEdit$(): Observable<Region[]>;
|
|
170
|
+
/**
|
|
171
|
+
* Emits after every {@link undo}, {@link redo} and {@link setDisplaySlice} call
|
|
172
|
+
* (even one that changed nothing): the region set was replaced under whatever
|
|
173
|
+
* a canvas tool was building on (a brush stroke, a SAM point prompt), so the
|
|
174
|
+
* backends reset their canvas tools on it. Not emitted for ordinary edits —
|
|
175
|
+
* a tool's own commit must not reset it.
|
|
176
|
+
*/
|
|
177
|
+
getRegionSetReplaced$(): Observable<void>;
|
|
170
178
|
/** Select regions by array index (or [] to clear). Stored internally by id
|
|
171
179
|
* so the selection survives subsequent edits/reorders. */
|
|
172
180
|
setSelectedShapeIndices(indices: number[]): void;
|
|
@@ -183,16 +191,11 @@ export declare class RegionStore implements IRegionStore, IRegionEditApi {
|
|
|
183
191
|
getShowShapeLabel(): boolean;
|
|
184
192
|
getShapeColor(): string;
|
|
185
193
|
getFillColor(): string;
|
|
186
|
-
/**
|
|
194
|
+
/** Show or hide region labels (not on the contract; specs drive it directly).
|
|
195
|
+
* @deprecated Nothing in the library calls it; will be removed next minor. */
|
|
187
196
|
setShowShapeLabel(show: boolean): void;
|
|
188
|
-
setShapeColor(color: string): void;
|
|
189
|
-
setFillColor(color: string): void;
|
|
190
197
|
getClassificationColors(): Map<string, string>;
|
|
191
198
|
setClassificationColor(label: string, color: string): void;
|
|
192
|
-
/** Re-show the last saved snapshot (transient — does not alter stored state). */
|
|
193
|
-
plotPreviousShapes(): void;
|
|
194
|
-
setPreviousShapes(shapes: any[]): void;
|
|
195
|
-
getPreviousShapes(): any[];
|
|
196
199
|
/** Emits whether an undo step is currently available — drives the toolbar
|
|
197
200
|
* Undo button's enabled state (greyed out when false). */
|
|
198
201
|
getCanUndo$(): Observable<boolean>;
|
|
@@ -224,35 +227,32 @@ export declare class RegionStore implements IRegionStore, IRegionEditApi {
|
|
|
224
227
|
* crosses images). */
|
|
225
228
|
resetUndoHistory(): void;
|
|
226
229
|
/** Make `snapshot` the live region set and notify both backends. Shared by
|
|
227
|
-
* {@link undo} and {@link redo};
|
|
228
|
-
* clone, so it becomes the live array directly. */
|
|
230
|
+
* {@link undo} and {@link redo}; nothing records history while it runs. */
|
|
229
231
|
private restoreSnapshot;
|
|
230
232
|
/**
|
|
231
233
|
* Capture the pre-action region set into the bounded undo history. Called at
|
|
232
|
-
* the top of every mutating operation, *before* it changes `regions
|
|
233
|
-
* snapshot is the
|
|
234
|
-
*
|
|
235
|
-
* any redo future.
|
|
234
|
+
* the top of every mutating operation, *before* it changes `regions`. The
|
|
235
|
+
* snapshot is the array itself: every operation replaces `regions` (and any
|
|
236
|
+
* region it edits) rather than changing them, so it never changes after this.
|
|
236
237
|
*/
|
|
237
238
|
private recordUndoSnapshot;
|
|
238
|
-
/** Push the current can-undo / can-redo availability to subscribers. */
|
|
239
|
-
private emitUndoState;
|
|
240
|
-
/** (Re)arm the idle timer that closes the current coalescing burst. */
|
|
241
|
-
private armUndoBurst;
|
|
242
|
-
private closeUndoBurst;
|
|
243
|
-
private cloneRegions;
|
|
244
|
-
/** Deep clone a region so an in-place geometry edit can't mutate a stored
|
|
245
|
-
* history snapshot (bounds are cloned via {@link cloneBounds}). */
|
|
246
|
-
private cloneRegion;
|
|
247
239
|
importRegions(geoJsonStr: string): Region[];
|
|
248
|
-
|
|
240
|
+
/** Download `regions` as GeoJSON, named after `fileName` (extension
|
|
241
|
+
* replaced by `.geojson`) or `rois.geojson` without one. */
|
|
242
|
+
exportRegions(regions: Region[], fileName?: string): void;
|
|
249
243
|
getGeoJsonString(regions: Region[]): string;
|
|
250
244
|
addRegion(region: Region): number;
|
|
251
245
|
removeRegion(id: number): void;
|
|
246
|
+
/**
|
|
247
|
+
* Remove the regions with these ids, if present. With `{ recordUndo: false }`
|
|
248
|
+
* no undo step is taken — for clearing transient shapes that were never the
|
|
249
|
+
* user's work (the 3D view's screen-space lassos on an orbit, NAPARI-SVC-11).
|
|
250
|
+
*/
|
|
251
|
+
removeRegions(ids: Iterable<number>, opts?: {
|
|
252
|
+
recordUndo?: boolean;
|
|
253
|
+
}): void;
|
|
252
254
|
updateBounds(id: number, bounds: Rectangle | Polygon | MultiPolygon): void;
|
|
253
255
|
moveRegion(id: number, dx: number, dy: number): void;
|
|
254
|
-
/** Translate a polygon's vertices and any holes in place by (dx, dy). */
|
|
255
|
-
private translatePolygon;
|
|
256
256
|
moveVertex(id: number, index: number, x: number, y: number): void;
|
|
257
257
|
/** Move a vertex on a polygon's interior ring (hole) — jit-ui#85. */
|
|
258
258
|
moveHoleVertex(id: number, holeIndex: number, index: number, x: number, y: number): void;
|
|
@@ -266,50 +266,42 @@ export declare class RegionStore implements IRegionStore, IRegionEditApi {
|
|
|
266
266
|
addVertex(id: number, segIndex: number, x: number, y: number): void;
|
|
267
267
|
deleteVertex(id: number, index: number): void;
|
|
268
268
|
setBezier(id: number, bezier: boolean): void;
|
|
269
|
-
/** Turn bezier on (and seed editable handles from the smooth default) or off
|
|
270
|
-
* (and drop the handles). */
|
|
271
|
-
private applyBezier;
|
|
272
|
-
/** (Re)seed per-hole bezier handles from the Catmull-Rom default, parallel to `poly.holes`. */
|
|
273
|
-
private seedHoleHandles;
|
|
274
269
|
/** Drag a bezier control point on a hole ring vertex (donut bezier editing). */
|
|
275
270
|
moveHoleBezierHandle(id: number, holeIndex: number, index: number, side: 'in' | 'out', x: number, y: number): void;
|
|
276
271
|
moveBezierHandle(id: number, index: number, side: 'in' | 'out', x: number, y: number): void;
|
|
272
|
+
/** Apply a copy-on-write polygon edit to region `id`: record, swap in, emit. */
|
|
273
|
+
private editPolygon;
|
|
274
|
+
/** Swap `next` in for the stored region with its id (a new array), then sync and emit. */
|
|
275
|
+
private replaceRegion;
|
|
276
|
+
/** Coalesce `regionUpdate$` until the matching {@link endBatch} (live drags);
|
|
277
|
+
* the batch is also one undo gesture ({@link beginGesture}). */
|
|
277
278
|
beginBatch(): void;
|
|
278
279
|
endBatch(): void;
|
|
280
|
+
/**
|
|
281
|
+
* Mark the start of one user gesture (e.g. a wand/brush mousedown): every
|
|
282
|
+
* commit until the matching {@link endGesture} becomes a single undo step,
|
|
283
|
+
* without delaying `regionUpdate$` (tools render through it while dragging).
|
|
284
|
+
* Calls nest. A gesture never folds into an earlier timed burst.
|
|
285
|
+
*/
|
|
286
|
+
beginGesture(): void;
|
|
287
|
+
/** End the gesture opened by {@link beginGesture}; the next commit starts a new step. */
|
|
288
|
+
endGesture(): void;
|
|
279
289
|
/**
|
|
280
290
|
* Switch the active image: snapshot the outgoing regions, restore the
|
|
281
291
|
* incoming image's (or [] if none), clear selection, and notify. Idempotent
|
|
282
292
|
* for the same image (so repeated replots of one image keep its regions).
|
|
283
293
|
*/
|
|
284
294
|
setActiveImage(imageInfo: IImageInfo): void;
|
|
285
|
-
/**
|
|
286
|
-
|
|
287
|
-
private
|
|
288
|
-
/**
|
|
289
|
-
* Resolve each region's colour from the annotation-class preset set (jit-ui#70).
|
|
290
|
-
* The presets are the source of truth for colour — this **overrides any colour
|
|
291
|
-
* embedded in the GeoJSON** (which the YOLO worker writes today). A matching
|
|
292
|
-
* preset gives the class colour; an unknown class gets a deterministic fallback
|
|
293
|
-
* colour (and, only when `autoPromote` is on, is added to the editable list).
|
|
294
|
-
* Regions the user explicitly recoloured (`colorOverridden`) are left untouched.
|
|
295
|
-
*/
|
|
296
|
-
private applyClassificationColors;
|
|
295
|
+
/** Apply the preset set's class colours (see {@link applyPresetColors}),
|
|
296
|
+
* promoting unknown classes into the shared store when the set asks for it. */
|
|
297
|
+
private withClassificationColors;
|
|
297
298
|
private syncCache;
|
|
298
299
|
private emit;
|
|
299
|
-
/** Project selected ids
|
|
300
|
-
*
|
|
300
|
+
/** Project the selected ids onto the current regions (pruning gone ones);
|
|
301
|
+
* emits only if the index set changed. */
|
|
301
302
|
private emitSelection;
|
|
302
|
-
private indicesEqual;
|
|
303
303
|
private findById;
|
|
304
304
|
private indexOfId;
|
|
305
|
-
/** The region's bounds as a Polygon, or undefined if it isn't a polygon. */
|
|
306
|
-
private polygonOf;
|
|
307
|
-
private clonePolygon;
|
|
308
|
-
private cloneBounds;
|
|
309
|
-
private regionsEqual;
|
|
310
|
-
private polygonsEqual;
|
|
311
|
-
/** Compare two polygons' interior-ring (hole) sets for the dedupe path. */
|
|
312
|
-
private holesEqual;
|
|
313
305
|
static ɵfac: i0.ɵɵFactoryDeclaration<RegionStore, never>;
|
|
314
306
|
static ɵprov: i0.ɵɵInjectableDeclaration<RegionStore>;
|
|
315
307
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
1
|
import { Observable } from 'rxjs';
|
|
3
2
|
import { ClassPreset, PresetSet } from '../models/class-preset';
|
|
4
3
|
import { PreferencesPort } from '../contracts/ports/preferences.port';
|
|
@@ -9,25 +8,20 @@ import * as i0 from "@angular/core";
|
|
|
9
8
|
/**
|
|
10
9
|
* Backend-neutral store for the **visualization session** — the state that
|
|
11
10
|
* describes *how* the current image is being viewed, independent of which
|
|
12
|
-
* rendering backend (Plotly or
|
|
11
|
+
* rendering backend (Plotly, OpenSeadragon or napari-js) is on screen:
|
|
13
12
|
*
|
|
14
13
|
* - the active colormap / LUT and its reverse-scale toggle,
|
|
15
|
-
* - the current image's physical metadata (µm/pixel etc.)
|
|
16
|
-
*
|
|
14
|
+
* - the current image's physical metadata (µm/pixel etc.) and its per-channel
|
|
15
|
+
* display state (window, gamma, tint, visibility; grayscale / invert),
|
|
16
|
+
* - the annotation-class presets (the classification label → colour map),
|
|
17
|
+
* - the spatial-omics view state,
|
|
17
18
|
* - which on-canvas tool is currently active.
|
|
18
19
|
*
|
|
19
|
-
*
|
|
20
|
-
* regardless of which one is rendering
|
|
21
|
-
*
|
|
22
|
-
* Plotly service purely to read the shared colormap; this store removes that
|
|
23
|
-
* coupling — neither backend owns the session state.
|
|
24
|
-
*
|
|
25
|
-
* NOTE: region *geometry* (the drawn shapes / per-image region cache) still
|
|
26
|
-
* lives in `PlotlyService` for now; extracting it into a sibling region store
|
|
27
|
-
* is a separate follow-up.
|
|
20
|
+
* Every backend reads and writes this single instance (one per visualizer chain),
|
|
21
|
+
* so they stay in lock-step regardless of which one is rendering; none of them
|
|
22
|
+
* owns the session state. Region geometry lives in the sibling `RegionStore`.
|
|
28
23
|
*/
|
|
29
24
|
export declare class VisualizerStore {
|
|
30
|
-
private readonly http;
|
|
31
25
|
private readonly prefsPort;
|
|
32
26
|
private readonly colormap$;
|
|
33
27
|
private readonly reverseScale$;
|
|
@@ -37,6 +31,8 @@ export declare class VisualizerStore {
|
|
|
37
31
|
* single-scalar 3D view (the napari Surface) follows for a multichannel image. */
|
|
38
32
|
private readonly selectedChannel$;
|
|
39
33
|
private defaultChannelStates;
|
|
34
|
+
/** The image the current channel states were derived for (see setImageMeta). */
|
|
35
|
+
private channelImageKey;
|
|
40
36
|
private readonly grayscale$;
|
|
41
37
|
private readonly invert$;
|
|
42
38
|
private presetSet;
|
|
@@ -48,17 +44,7 @@ export declare class VisualizerStore {
|
|
|
48
44
|
* Held here, next to the colormap/channel state, so the active backend reacts
|
|
49
45
|
* to an edit exactly as it does for an image. */
|
|
50
46
|
private readonly spatialView$;
|
|
51
|
-
constructor(
|
|
52
|
-
/**
|
|
53
|
-
* Resolve the colormap tree's LUT keys (e.g. "GREYS_LUT") to their colour
|
|
54
|
-
* arrays from a served JSON asset. The ~630 KB of LUT data lives outside the
|
|
55
|
-
* bundle (as `/assets/plotting/colormap-luts.json`) so it never enters the TS
|
|
56
|
-
* / webpack module graph — that data-in-source was the main driver of the
|
|
57
|
-
* build's >2 GB heap. Named Plotly scales (e.g. "Viridis") aren't keys in the
|
|
58
|
-
* JSON, so they're left untouched. The default LUT ("Greys Inv" → the Plotly
|
|
59
|
-
* "Greys" scale) needs no JSON, so the first render works before this resolves.
|
|
60
|
-
*/
|
|
61
|
-
private loadColormapLuts;
|
|
47
|
+
constructor(prefsPort?: PreferencesPort | null);
|
|
62
48
|
private initPresetPersistence;
|
|
63
49
|
private normalizePresetSet;
|
|
64
50
|
/** Queue a debounced save. No-ops until the initial load resolves (and when no port is bound). */
|
|
@@ -86,7 +72,16 @@ export declare class VisualizerStore {
|
|
|
86
72
|
* Editor) show µm²/mm² instead of px². No-op when neither axis is positive.
|
|
87
73
|
*/
|
|
88
74
|
setPhysicalPixelSize(mppX?: number, mppY?: number): void;
|
|
89
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Publish the current image's metadata and derive its channels.
|
|
77
|
+
*
|
|
78
|
+
* `imageKey` identifies the image (its file name). A re-plot of the SAME image
|
|
79
|
+
* keeps the user's window/gamma/tint edits; a different image gets its own
|
|
80
|
+
* derived channels even at the same channel count — keying on the count alone
|
|
81
|
+
* left a DAPI/GFP/RFP stack's names, tints and windows on a following
|
|
82
|
+
* CD3/CD8/PanCK one. Without a key, only a change of channel count re-derives.
|
|
83
|
+
*/
|
|
84
|
+
setImageMeta(imageMeta: IImageMetadata[], imageKey?: string): void;
|
|
90
85
|
/** Channels for an image:
|
|
91
86
|
* - RGB (rgbChannels ≥ 3) → Red/Green/Blue;
|
|
92
87
|
* - multichannel fluorescence (channelCount > 1) → one channel per band,
|
|
@@ -125,19 +120,13 @@ export declare class VisualizerStore {
|
|
|
125
120
|
upsertClass(preset: ClassPreset): void;
|
|
126
121
|
removeClass(name: string): void;
|
|
127
122
|
resetPresets(): void;
|
|
128
|
-
/** Force a (debounced) write-back of the current preset set. */
|
|
129
|
-
persistPresets(): void;
|
|
130
123
|
getSpatialView$(): Observable<SpatialViewState>;
|
|
131
124
|
/** Synchronous read, for a renderer building its first frame. */
|
|
132
125
|
currentSpatialView(): SpatialViewState;
|
|
133
126
|
/** Patch the spatial view state; emits once with the merged value. */
|
|
134
127
|
setSpatialView(partial: Partial<SpatialViewState>): void;
|
|
135
|
-
/** Reset to defaults — e.g. when a different dataset is selected, where the
|
|
136
|
-
* previous colour column almost certainly does not exist. */
|
|
137
|
-
resetSpatialView(): void;
|
|
138
128
|
getActiveTool$(): Observable<string | null>;
|
|
139
|
-
getActiveTool(): string | null;
|
|
140
129
|
setActiveTool(tool: string | null): void;
|
|
141
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<VisualizerStore, [{ optional: true; }
|
|
130
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<VisualizerStore, [{ optional: true; }]>;
|
|
142
131
|
static ɵprov: i0.ɵɵInjectableDeclaration<VisualizerStore>;
|
|
143
132
|
}
|
package/lib/toast-outlets.d.ts
CHANGED
|
@@ -10,9 +10,10 @@
|
|
|
10
10
|
* failed or no-op action looked like a dead button.
|
|
11
11
|
*
|
|
12
12
|
* These keys are owned by the library and their outlets are rendered by
|
|
13
|
-
* {@link VisualizerComponent}, so the feedback works in any host.
|
|
14
|
-
*
|
|
15
|
-
* key — two matching outlets show the message
|
|
13
|
+
* {@link VisualizerComponent}, so the feedback works in any host. Both keys are
|
|
14
|
+
* exported from the package so a host can tell them apart from its own; it should
|
|
15
|
+
* not render an outlet with the same key — two matching outlets show the message
|
|
16
|
+
* twice.
|
|
16
17
|
*/
|
|
17
18
|
/** General notices: save results, validation, action outcomes. Default position. */
|
|
18
19
|
export declare const VIZ_TOAST_KEY = "sci-viz-notice";
|