@jax-data-science/sci-image-visualizer 0.8.3 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (579) hide show
  1. package/README.md +201 -460
  2. package/esm2022/index.mjs +34 -15
  3. package/esm2022/lib/channel-histogram/channel-histogram.component.mjs +163 -91
  4. package/esm2022/lib/contracts/capabilities.contract.mjs +4 -3
  5. package/esm2022/lib/contracts/cell-segmenter.contract.mjs +1 -1
  6. package/esm2022/lib/contracts/channel-histogram-api.contract.mjs +5 -1
  7. package/esm2022/lib/contracts/color.mjs +60 -0
  8. package/esm2022/lib/contracts/colormap-lut.mjs +213 -57
  9. package/esm2022/lib/contracts/coordinate-transform.contract.mjs +1 -1
  10. package/esm2022/lib/contracts/display-types.mjs +11 -1
  11. package/esm2022/lib/contracts/image.contract.mjs +1 -1
  12. package/esm2022/lib/contracts/instance-segmenter.contract.mjs +1 -1
  13. package/esm2022/lib/contracts/intensity.mjs +48 -5
  14. package/esm2022/lib/contracts/plot-type-contribution.contract.mjs +1 -1
  15. package/esm2022/lib/contracts/plot-type.mjs +134 -17
  16. package/esm2022/lib/contracts/ports/image-state.port.mjs +4 -1
  17. package/esm2022/lib/contracts/ports/preferences.port.mjs +5 -1
  18. package/esm2022/lib/contracts/ports/region-io.port.mjs +2 -1
  19. package/esm2022/lib/contracts/ports/spatial-data.port.mjs +5 -1
  20. package/esm2022/lib/contracts/ports/tile-access.port.mjs +2 -1
  21. package/esm2022/lib/contracts/region-editor-api.contract.mjs +1 -1
  22. package/esm2022/lib/contracts/region-overlay.contract.mjs +1 -1
  23. package/esm2022/lib/contracts/region-store.contract.mjs +1 -1
  24. package/esm2022/lib/contracts/sam.contract.mjs +1 -1
  25. package/esm2022/lib/contracts/section-view.contract.mjs +2 -0
  26. package/esm2022/lib/contracts/semantic-segmenter.contract.mjs +1 -1
  27. package/esm2022/lib/contracts/spatial-dataset.contract.mjs +3 -1
  28. package/esm2022/lib/contracts/toolbar-tool.contract.mjs +6 -4
  29. package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
  30. package/esm2022/lib/contracts/viz-config.mjs +2 -1
  31. package/esm2022/lib/geometry/contour.mjs +63 -0
  32. package/esm2022/lib/geometry/loft.mjs +128 -0
  33. package/esm2022/lib/geometry/polylabel.mjs +156 -0
  34. package/esm2022/lib/geometry/raster.mjs +98 -0
  35. package/esm2022/lib/geometry/reconstruct.mjs +315 -0
  36. package/esm2022/lib/geometry/reslice-image.mjs +57 -0
  37. package/esm2022/lib/geometry/ring.mjs +201 -0
  38. package/esm2022/lib/geometry/section.mjs +215 -0
  39. package/esm2022/lib/hex-color-picker/hex-color-picker.component.mjs +202 -102
  40. package/esm2022/lib/implementations/base-store-visualizer.mjs +201 -48
  41. package/esm2022/lib/implementations/napari-js/napari-axes-gizmo.mjs +65 -0
  42. package/esm2022/lib/implementations/napari-js/napari-display-state.mjs +136 -0
  43. package/esm2022/lib/implementations/napari-js/napari-helpers.mjs +199 -0
  44. package/esm2022/lib/implementations/napari-js/napari-image-2d-scene.mjs +602 -0
  45. package/esm2022/lib/implementations/napari-js/napari-loading-badge.mjs +12 -9
  46. package/esm2022/lib/implementations/napari-js/napari-loading-state.mjs +83 -0
  47. package/esm2022/lib/implementations/napari-js/napari-region-mesh-pointer.mjs +100 -0
  48. package/esm2022/lib/implementations/napari-js/napari-region-overlay.mjs +180 -591
  49. package/esm2022/lib/implementations/napari-js/napari-scene.mjs +2 -0
  50. package/esm2022/lib/implementations/napari-js/napari-spatial-2d-scene.mjs +614 -0
  51. package/esm2022/lib/implementations/napari-js/napari-spatial-3d-scene.mjs +769 -0
  52. package/esm2022/lib/implementations/napari-js/napari-spatial-encoding.mjs +199 -0
  53. package/esm2022/lib/implementations/napari-js/napari-spatial-hover.mjs +270 -0
  54. package/esm2022/lib/implementations/napari-js/napari-spatial-scene.mjs +159 -0
  55. package/esm2022/lib/implementations/napari-js/napari-spatial-tiles.mjs +106 -1408
  56. package/esm2022/lib/implementations/napari-js/napari-spatial-tooltip.mjs +2 -2
  57. package/esm2022/lib/implementations/napari-js/napari-surface-scene.mjs +271 -0
  58. package/esm2022/lib/implementations/napari-js/napari-tile-client.mjs +562 -0
  59. package/esm2022/lib/implementations/napari-js/napari-tool-bridge.mjs +347 -0
  60. package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +427 -4207
  61. package/esm2022/lib/implementations/napari-js/napari-volume-region-meshes.mjs +129 -0
  62. package/esm2022/lib/implementations/napari-js/napari-volume-scene.mjs +550 -0
  63. package/esm2022/lib/implementations/napari-js/napari-volume-slice-planes.mjs +103 -0
  64. package/esm2022/lib/implementations/napari-js/napari-volume-z-handle.mjs +6 -6
  65. package/esm2022/lib/implementations/napari-js/region-overlay/overlay-projection.mjs +96 -0
  66. package/esm2022/lib/implementations/napari-js/region-overlay/region-edit.mjs +35 -0
  67. package/esm2022/lib/implementations/napari-js/region-overlay/region-svg-renderer.mjs +194 -0
  68. package/esm2022/lib/implementations/napari-js/spatial-tiles/categorical-lookup.mjs +30 -0
  69. package/esm2022/lib/implementations/napari-js/spatial-tiles/cell-layers.mjs +274 -0
  70. package/esm2022/lib/implementations/napari-js/spatial-tiles/density-layer.mjs +144 -0
  71. package/esm2022/lib/implementations/napari-js/spatial-tiles/layer-groups.mjs +165 -0
  72. package/esm2022/lib/implementations/napari-js/spatial-tiles/plan-context.mjs +78 -0
  73. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-hover.mjs +182 -0
  74. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-jobs.mjs +369 -0
  75. package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-layers.mjs +306 -0
  76. package/esm2022/lib/implementations/osd/display-pipeline.mjs +102 -40
  77. package/esm2022/lib/implementations/osd/histogram-sampler.mjs +56 -31
  78. package/esm2022/lib/implementations/osd/openseadragon-viewer-options.mjs +128 -0
  79. package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +333 -1685
  80. package/esm2022/lib/implementations/osd/osd-coordinate-transform.mjs +1 -1
  81. package/esm2022/lib/implementations/osd/osd-coords.mjs +5 -6
  82. package/esm2022/lib/implementations/osd/osd-export.mjs +122 -0
  83. package/esm2022/lib/implementations/osd/osd-lib.mjs +15 -1
  84. package/esm2022/lib/implementations/osd/osd-navigator-chrome.mjs +205 -0
  85. package/esm2022/lib/implementations/osd/osd-pixel-readback.mjs +68 -0
  86. package/esm2022/lib/implementations/osd/osd-region-overlay-draw.mjs +164 -0
  87. package/esm2022/lib/implementations/osd/osd-region-overlay.mjs +213 -716
  88. package/esm2022/lib/implementations/osd/osd-scale-bar.mjs +52 -60
  89. package/esm2022/lib/implementations/osd/osd-tile-source.mjs +105 -0
  90. package/esm2022/lib/implementations/osd/osd-viewer-like.mjs +2 -0
  91. package/esm2022/lib/implementations/osd/osd-viewer-mount.mjs +44 -0
  92. package/esm2022/lib/implementations/osd/osd-viewport.mjs +184 -0
  93. package/esm2022/lib/implementations/osd/osd-zoom.mjs +7 -1
  94. package/esm2022/lib/implementations/osd/simple-source.mjs +395 -0
  95. package/esm2022/lib/implementations/osd/slice-cache.mjs +53 -48
  96. package/esm2022/lib/implementations/osd/tile-client.mjs +32 -11
  97. package/esm2022/lib/implementations/osd/tile-recolor.mjs +330 -0
  98. package/esm2022/lib/implementations/plotly/omics-trace-builders.mjs +161 -73
  99. package/esm2022/lib/implementations/plotly/plotly-coordinate-transform.mjs +1 -1
  100. package/esm2022/lib/implementations/plotly/plotly-image-loader.mjs +112 -0
  101. package/esm2022/lib/implementations/plotly/plotly-image-recolor.mjs +178 -0
  102. package/esm2022/lib/implementations/plotly/plotly-intensity-inset.mjs +33 -0
  103. package/esm2022/lib/implementations/plotly/plotly-isosurface-controls.mjs +83 -0
  104. package/esm2022/lib/implementations/plotly/plotly-layouts.mjs +121 -0
  105. package/esm2022/lib/implementations/plotly/plotly-readback.mjs +117 -0
  106. package/esm2022/lib/implementations/plotly/plotly-region-overlay.mjs +19 -10
  107. package/esm2022/lib/implementations/plotly/plotly-shape-projection.mjs +223 -0
  108. package/esm2022/lib/implementations/plotly/plotly-trace-builders.mjs +79 -19
  109. package/esm2022/lib/implementations/plotly/plotly-zoom-controller.mjs +223 -0
  110. package/esm2022/lib/implementations/plotly/plotly.service.mjs +439 -1655
  111. package/esm2022/lib/implementations/region-centroids.mjs +47 -0
  112. package/esm2022/lib/implementations/simple-slice-access.service.mjs +22 -12
  113. package/esm2022/lib/implementations/spatial-data-http/spatial-data-http.service.mjs +172 -92
  114. package/esm2022/lib/implementations/spatial-data-http/spatial-wire.mjs +103 -22
  115. package/esm2022/lib/implementations/tile-server/index.mjs +6 -0
  116. package/esm2022/lib/implementations/tile-server/native-histogram.mjs +30 -0
  117. package/esm2022/lib/implementations/tile-server/poll-descriptor.mjs +65 -0
  118. package/esm2022/lib/implementations/tile-server/tile-protocol.mjs +42 -0
  119. package/esm2022/lib/implementations/tile-server/transport.mjs +135 -0
  120. package/esm2022/lib/intensity/intensity-profile.mjs +107 -0
  121. package/esm2022/lib/intensity/intensity-profile.service.mjs +223 -0
  122. package/esm2022/lib/intensity-inset/intensity-inset.component.mjs +133 -0
  123. package/esm2022/lib/models/bezier.mjs +1 -11
  124. package/esm2022/lib/models/class-preset.mjs +41 -3
  125. package/esm2022/lib/models/geometry.mjs +27 -164
  126. package/esm2022/lib/models/polygon-edit.mjs +254 -0
  127. package/esm2022/lib/models/polygon-factory.mjs +134 -0
  128. package/esm2022/lib/models/region-clone.mjs +68 -0
  129. package/esm2022/lib/models/region-geojson.mjs +411 -0
  130. package/esm2022/lib/models/region.mjs +34 -33
  131. package/esm2022/lib/models/shape.mjs +18 -16
  132. package/esm2022/lib/plot-mode/contribution-host.mjs +297 -0
  133. package/esm2022/lib/plot-mode/plot-mode-controller.mjs +9 -6
  134. package/esm2022/lib/plot-mode/plot-type-menu.mjs +85 -0
  135. package/esm2022/lib/plot-mode/tool-params-model.mjs +87 -0
  136. package/esm2022/lib/plot.utilities.mjs +296 -473
  137. package/esm2022/lib/processing/image-crop.mjs +1 -1
  138. package/esm2022/lib/processing/processing-image.mjs +28 -15
  139. package/esm2022/lib/provide-visualization.mjs +40 -14
  140. package/esm2022/lib/region-editor/class-tree/class-tree.component.mjs +156 -0
  141. package/esm2022/lib/region-editor/class-tree/class-tree.mjs +108 -0
  142. package/esm2022/lib/region-editor/classes-panel/classes-panel.component.mjs +163 -0
  143. package/esm2022/lib/region-editor/file-stem.mjs +13 -0
  144. package/esm2022/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.mjs +118 -0
  145. package/esm2022/lib/region-editor/mask-export.service.mjs +98 -0
  146. package/esm2022/lib/region-editor/mask-raster.mjs +11 -5
  147. package/esm2022/lib/region-editor/region-color-dialog/region-color-dialog.component.mjs +56 -0
  148. package/esm2022/lib/region-editor/region-editor-help/region-editor-help.component.mjs +28 -0
  149. package/esm2022/lib/region-editor/region-editor.component.mjs +896 -660
  150. package/esm2022/lib/region-editor/region-metrics.mjs +86 -0
  151. package/esm2022/lib/region-editor/region-persistence.service.mjs +160 -0
  152. package/esm2022/lib/region-editor/region-table/region-table.component.mjs +169 -0
  153. package/esm2022/lib/region-editor/save-mask-dialog/save-mask-dialog.component.mjs +91 -0
  154. package/esm2022/lib/region-editor/save-regions-dialog/save-regions-dialog.component.mjs +92 -0
  155. package/esm2022/lib/region-ops.service.mjs +28 -70
  156. package/esm2022/lib/region-overlay/region-geometry.mjs +360 -0
  157. package/esm2022/lib/region-overlay/region-hit-test.mjs +103 -0
  158. package/esm2022/lib/region-overlay/region-source-layer.mjs +378 -0
  159. package/esm2022/lib/region-overlay/region-style.mjs +97 -0
  160. package/esm2022/lib/region-overlay/svg-region-renderer.mjs +228 -0
  161. package/esm2022/lib/region-source/http-region-source.mjs +104 -0
  162. package/esm2022/lib/region-source/region-source-ops.mjs +53 -0
  163. package/esm2022/lib/region-source/region-source-worker.mjs +10 -0
  164. package/esm2022/lib/region-source/region-source.mjs +67 -0
  165. package/esm2022/lib/region-source/region-tiles.mjs +708 -0
  166. package/esm2022/lib/region-source/worker-region-source.mjs +229 -0
  167. package/esm2022/lib/render-orchestrator.mjs +14 -11
  168. package/esm2022/lib/render-session.mjs +207 -0
  169. package/esm2022/lib/routing-visualizer.service.mjs +858 -414
  170. package/esm2022/lib/section-pane/section-pane.component.mjs +299 -0
  171. package/esm2022/lib/spatial/density-raster.mjs +14 -0
  172. package/esm2022/lib/spatial/embedding-compute-coordinator.mjs +239 -0
  173. package/esm2022/lib/spatial/embedding-compute.mjs +43 -10
  174. package/esm2022/lib/spatial/gene-search.mjs +1 -1
  175. package/esm2022/lib/spatial/glyphs.mjs +97 -0
  176. package/esm2022/lib/spatial/lod.mjs +187 -0
  177. package/esm2022/lib/spatial/spatial-controls.facade.mjs +200 -0
  178. package/esm2022/lib/spatial/spatial-density.mjs +25 -16
  179. package/esm2022/lib/spatial/spatial-encoding.mjs +26 -82
  180. package/esm2022/lib/spatial/spatial-expression.mjs +43 -42
  181. package/esm2022/lib/spatial/spatial-framing.mjs +1 -1
  182. package/esm2022/lib/spatial/spatial-heatmap.mjs +6 -3
  183. package/esm2022/lib/spatial/spatial-hover.mjs +5 -33
  184. package/esm2022/lib/spatial/spatial-panel-model.mjs +282 -0
  185. package/esm2022/lib/spatial/spatial-sections.mjs +1 -1
  186. package/esm2022/lib/spatial/spatial-selection.mjs +33 -46
  187. package/esm2022/lib/spatial/spatial-tile-merge.mjs +219 -0
  188. package/esm2022/lib/spatial/spatial-tiles.mjs +12 -648
  189. package/esm2022/lib/spatial/spatial-volume-image.mjs +2 -4
  190. package/esm2022/lib/spatial/stats.mjs +71 -0
  191. package/esm2022/lib/spatial/transcript-grouping.mjs +307 -0
  192. package/esm2022/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.mjs +150 -0
  193. package/esm2022/lib/spatial-controls/spatial-charts/chart-data-model.mjs +309 -0
  194. package/esm2022/lib/spatial-controls/spatial-charts/chart-help.mjs +145 -0
  195. package/esm2022/lib/spatial-controls/spatial-charts/plotly-chart-host.mjs +158 -0
  196. package/esm2022/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.mjs +47 -0
  197. package/esm2022/lib/spatial-controls/spatial-charts/spatial-charts.component.mjs +297 -802
  198. package/esm2022/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.mjs +89 -0
  199. package/esm2022/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.mjs +52 -0
  200. package/esm2022/lib/spatial-controls/spatial-controls.component.mjs +143 -1238
  201. package/esm2022/lib/spatial-controls/spatial-gene-picker.mjs +153 -0
  202. package/esm2022/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.mjs +241 -0
  203. package/esm2022/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.mjs +193 -0
  204. package/esm2022/lib/spatial-controls/spatial-key/spatial-key.component.mjs +132 -0
  205. package/esm2022/lib/spatial-controls/spatial-key/spatial-key.model.mjs +67 -0
  206. package/esm2022/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.mjs +147 -0
  207. package/esm2022/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.mjs +300 -0
  208. package/esm2022/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.mjs +370 -0
  209. package/esm2022/lib/store/class-color.util.mjs +53 -5
  210. package/esm2022/lib/store/class-signatures.mjs +63 -0
  211. package/esm2022/lib/store/region-history.mjs +146 -0
  212. package/esm2022/lib/store/region-scope-cache.mjs +144 -0
  213. package/esm2022/lib/store/region-selection.mjs +82 -0
  214. package/esm2022/lib/store/region-source-scope.mjs +171 -0
  215. package/esm2022/lib/store/region-store.service.mjs +986 -670
  216. package/esm2022/lib/store/spatial-selection.service.mjs +2 -2
  217. package/esm2022/lib/store/visualizer-store.service.mjs +81 -76
  218. package/esm2022/lib/toast-outlets.mjs +5 -4
  219. package/esm2022/lib/toolbar/brush/brush-tool.service.mjs +92 -434
  220. package/esm2022/lib/toolbar/canvas-tools.mjs +20 -0
  221. package/esm2022/lib/toolbar/crop/slide-crop.mjs +26 -42
  222. package/esm2022/lib/toolbar/plot-type-selector/plot-type-selector.component.mjs +85 -0
  223. package/esm2022/lib/toolbar/region-tools/region-tool-buttons.mjs +74 -0
  224. package/esm2022/lib/toolbar/region-tools/region-tools.component.mjs +120 -0
  225. package/esm2022/lib/toolbar/segmentation/cell-segment-tool.service.mjs +74 -78
  226. package/esm2022/lib/toolbar/segmentation/cellpose-segmenter.service.mjs +50 -8
  227. package/esm2022/lib/toolbar/segmentation/onnx-sam-session.mjs +61 -42
  228. package/esm2022/lib/toolbar/segmentation/pending-calls.mjs +47 -0
  229. package/esm2022/lib/toolbar/segmentation/sam-model-registry.mjs +12 -4
  230. package/esm2022/lib/toolbar/segmentation/sam-onnx-core.mjs +70 -14
  231. package/esm2022/lib/toolbar/segmentation/sam-point-tool.service.mjs +135 -172
  232. package/esm2022/lib/toolbar/segmentation/sam-prompt.mjs +9 -90
  233. package/esm2022/lib/toolbar/segmentation/sam-session.service.mjs +183 -0
  234. package/esm2022/lib/toolbar/segmentation/sam-tool.service.mjs +95 -150
  235. package/esm2022/lib/toolbar/segmentation/segmentation-commit.mjs +12 -0
  236. package/esm2022/lib/toolbar/segmentation/segmentation-runner.mjs +108 -0
  237. package/esm2022/lib/toolbar/segmentation-tools/segmentation-tools.component.mjs +155 -0
  238. package/esm2022/lib/toolbar/stack-controls/stack-controls.component.mjs +121 -0
  239. package/esm2022/lib/toolbar/tool-kit/async-tool-status.mjs +37 -0
  240. package/esm2022/lib/toolbar/tool-kit/canvas-tool-manager.mjs +63 -0
  241. package/esm2022/lib/toolbar/tool-kit/canvas-tool.mjs +2 -0
  242. package/esm2022/lib/toolbar/tool-kit/frame-pixels.mjs +108 -0
  243. package/esm2022/lib/toolbar/tool-kit/mask-stroke-editor.mjs +306 -0
  244. package/esm2022/lib/toolbar/tool-kit/matrix-frame.mjs +61 -0
  245. package/esm2022/lib/toolbar/tool-kit/tool-overlay.mjs +140 -0
  246. package/esm2022/lib/toolbar/tool-kit/undo-gesture.mjs +24 -0
  247. package/esm2022/lib/toolbar/tool-slider/tool-slider.component.mjs +63 -0
  248. package/esm2022/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.mjs +50 -0
  249. package/esm2022/lib/toolbar/toolbar.component.mjs +84 -119
  250. package/esm2022/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.mjs +93 -115
  251. package/esm2022/lib/toolbar/view-controls/view-controls.component.mjs +107 -0
  252. package/esm2022/lib/toolbar/wand/wand-region-grow.mjs +321 -0
  253. package/esm2022/lib/toolbar/wand/wand-tool.service.mjs +121 -416
  254. package/esm2022/lib/toolbar/wand/wand.service.mjs +30 -894
  255. package/esm2022/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.mjs +48 -90
  256. package/esm2022/lib/util/mark-for-check.mjs +17 -0
  257. package/esm2022/lib/util/supersede.mjs +56 -0
  258. package/esm2022/lib/visualization.module.mjs +39 -141
  259. package/esm2022/lib/visualizer/floating-drag.directive.mjs +58 -0
  260. package/esm2022/lib/visualizer/region-actions.mjs +149 -0
  261. package/esm2022/lib/visualizer/region-load.mjs +123 -0
  262. package/esm2022/lib/visualizer/spatial-dataset-binder.mjs +163 -0
  263. package/esm2022/lib/visualizer/tool-modes.mjs +113 -0
  264. package/esm2022/lib/visualizer/viewer-shortcuts.mjs +167 -0
  265. package/esm2022/lib/visualizer/visualizer-context-menu.mjs +119 -0
  266. package/esm2022/lib/visualizer/volume-sections.mjs +175 -0
  267. package/esm2022/lib/visualizer.component.mjs +602 -1902
  268. package/esm2022/lib/workers/spatial-math-ops.mjs +43 -0
  269. package/esm2022/lib/workers/spatial-math-worker.mjs +10 -0
  270. package/esm2022/lib/workers/spatial-math.mjs +190 -0
  271. package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs +47169 -0
  272. package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs.map +1 -0
  273. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs +238 -0
  274. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs.map +1 -0
  275. package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.mjs +12 -0
  276. package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.mjs.map +1 -0
  277. package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs +12 -0
  278. package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs.map +1 -0
  279. package/fesm2022/jax-data-science-sci-image-visualizer.mjs +41 -34467
  280. package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
  281. package/fesm2022/mask.worker.js +36 -917
  282. package/fesm2022/onnx-sam.worker.js +52 -16
  283. package/fesm2022/region-source.worker.js +1067 -0
  284. package/fesm2022/spatial-math.worker.js +471 -0
  285. package/fesm2022/tsne.worker.js +32 -15
  286. package/index.d.ts +19 -10
  287. package/lib/channel-histogram/channel-histogram.component.d.ts +53 -43
  288. package/lib/contracts/capabilities.contract.d.ts +4 -2
  289. package/lib/contracts/cell-segmenter.contract.d.ts +1 -0
  290. package/lib/contracts/channel-histogram-api.contract.d.ts +4 -0
  291. package/lib/contracts/color.d.ts +27 -0
  292. package/lib/contracts/colormap-lut.d.ts +19 -4
  293. package/lib/contracts/coordinate-transform.contract.d.ts +3 -3
  294. package/lib/contracts/display-types.d.ts +21 -0
  295. package/lib/contracts/image.contract.d.ts +4 -0
  296. package/lib/contracts/instance-segmenter.contract.d.ts +5 -0
  297. package/lib/contracts/intensity.d.ts +13 -2
  298. package/lib/contracts/plot-type.d.ts +3 -1
  299. package/lib/contracts/ports/image-state.port.d.ts +6 -2
  300. package/lib/contracts/ports/preferences.port.d.ts +4 -0
  301. package/lib/contracts/ports/region-io.port.d.ts +1 -0
  302. package/lib/contracts/ports/spatial-data.port.d.ts +4 -10
  303. package/lib/contracts/ports/tile-access.port.d.ts +1 -0
  304. package/lib/contracts/region-editor-api.contract.d.ts +85 -1
  305. package/lib/contracts/region-overlay.contract.d.ts +5 -0
  306. package/lib/contracts/region-store.contract.d.ts +22 -0
  307. package/lib/contracts/sam.contract.d.ts +7 -0
  308. package/lib/contracts/section-view.contract.d.ts +44 -0
  309. package/lib/contracts/semantic-segmenter.contract.d.ts +6 -0
  310. package/lib/contracts/spatial-dataset.contract.d.ts +19 -6
  311. package/lib/contracts/toolbar-tool.contract.d.ts +1 -0
  312. package/lib/contracts/visualizer.contract.d.ts +231 -54
  313. package/lib/contracts/viz-config.d.ts +9 -0
  314. package/lib/geometry/contour.d.ts +24 -0
  315. package/lib/geometry/loft.d.ts +22 -0
  316. package/lib/geometry/polylabel.d.ts +23 -0
  317. package/lib/geometry/raster.d.ts +42 -0
  318. package/lib/geometry/reconstruct.d.ts +54 -0
  319. package/lib/geometry/reslice-image.d.ts +33 -0
  320. package/lib/geometry/ring.d.ts +67 -0
  321. package/lib/geometry/section.d.ts +52 -0
  322. package/lib/hex-color-picker/hex-color-picker.component.d.ts +61 -27
  323. package/lib/implementations/base-store-visualizer.d.ts +61 -15
  324. package/lib/implementations/napari-js/napari-axes-gizmo.d.ts +36 -0
  325. package/lib/implementations/napari-js/napari-display-state.d.ts +76 -0
  326. package/lib/implementations/napari-js/napari-helpers.d.ts +129 -0
  327. package/lib/implementations/napari-js/napari-image-2d-scene.d.ts +162 -0
  328. package/lib/implementations/napari-js/napari-loading-badge.d.ts +4 -3
  329. package/lib/implementations/napari-js/napari-loading-state.d.ts +37 -0
  330. package/lib/implementations/napari-js/napari-region-mesh-pointer.d.ts +32 -0
  331. package/lib/implementations/napari-js/napari-region-overlay.d.ts +68 -71
  332. package/lib/implementations/napari-js/napari-scene.d.ts +126 -0
  333. package/lib/implementations/napari-js/napari-spatial-2d-scene.d.ts +163 -0
  334. package/lib/implementations/napari-js/napari-spatial-3d-scene.d.ts +212 -0
  335. package/lib/implementations/napari-js/napari-spatial-encoding.d.ts +114 -0
  336. package/lib/implementations/napari-js/napari-spatial-hover.d.ts +91 -0
  337. package/lib/implementations/napari-js/napari-spatial-scene.d.ts +118 -0
  338. package/lib/implementations/napari-js/napari-spatial-tiles.d.ts +56 -263
  339. package/lib/implementations/napari-js/napari-spatial-tooltip.d.ts +1 -1
  340. package/lib/implementations/napari-js/napari-surface-scene.d.ts +76 -0
  341. package/lib/implementations/napari-js/napari-tile-client.d.ts +214 -0
  342. package/lib/implementations/napari-js/napari-tool-bridge.d.ts +179 -0
  343. package/lib/implementations/napari-js/napari-visualizer.service.d.ts +169 -883
  344. package/lib/implementations/napari-js/napari-volume-region-meshes.d.ts +66 -0
  345. package/lib/implementations/napari-js/napari-volume-scene.d.ts +148 -0
  346. package/lib/implementations/napari-js/napari-volume-slice-planes.d.ts +43 -0
  347. package/lib/implementations/napari-js/napari-volume-z-handle.d.ts +8 -12
  348. package/lib/implementations/napari-js/region-overlay/overlay-projection.d.ts +59 -0
  349. package/lib/implementations/napari-js/region-overlay/region-edit.d.ts +15 -0
  350. package/lib/implementations/napari-js/region-overlay/region-svg-renderer.d.ts +54 -0
  351. package/lib/implementations/napari-js/spatial-tiles/categorical-lookup.d.ts +26 -0
  352. package/lib/implementations/napari-js/spatial-tiles/cell-layers.d.ts +70 -0
  353. package/lib/implementations/napari-js/spatial-tiles/density-layer.d.ts +61 -0
  354. package/lib/implementations/napari-js/spatial-tiles/layer-groups.d.ts +67 -0
  355. package/lib/implementations/napari-js/spatial-tiles/plan-context.d.ts +38 -0
  356. package/lib/implementations/napari-js/spatial-tiles/transcript-hover.d.ts +71 -0
  357. package/lib/implementations/napari-js/spatial-tiles/transcript-jobs.d.ts +105 -0
  358. package/lib/implementations/napari-js/spatial-tiles/transcript-layers.d.ts +56 -0
  359. package/lib/implementations/osd/display-pipeline.d.ts +38 -9
  360. package/lib/implementations/osd/histogram-sampler.d.ts +22 -12
  361. package/lib/implementations/osd/openseadragon-viewer-options.d.ts +35 -0
  362. package/lib/implementations/osd/openseadragon-visualizer.service.d.ts +78 -354
  363. package/lib/implementations/osd/osd-coordinate-transform.d.ts +2 -1
  364. package/lib/implementations/osd/osd-coords.d.ts +6 -4
  365. package/lib/implementations/osd/osd-export.d.ts +36 -0
  366. package/lib/implementations/osd/osd-lib.d.ts +7 -0
  367. package/lib/implementations/osd/osd-navigator-chrome.d.ts +69 -0
  368. package/lib/implementations/osd/osd-pixel-readback.d.ts +22 -0
  369. package/lib/implementations/osd/osd-region-overlay-draw.d.ts +38 -0
  370. package/lib/implementations/osd/osd-region-overlay.d.ts +46 -51
  371. package/lib/implementations/osd/osd-scale-bar.d.ts +8 -6
  372. package/lib/implementations/osd/osd-tile-source.d.ts +49 -0
  373. package/lib/implementations/osd/osd-viewer-like.d.ts +100 -0
  374. package/lib/implementations/osd/osd-viewer-mount.d.ts +14 -0
  375. package/lib/implementations/osd/osd-viewport.d.ts +77 -0
  376. package/lib/implementations/osd/osd-zoom.d.ts +6 -0
  377. package/lib/implementations/osd/simple-source.d.ts +161 -0
  378. package/lib/implementations/osd/slice-cache.d.ts +12 -3
  379. package/lib/implementations/osd/tile-client.d.ts +11 -14
  380. package/lib/implementations/osd/tile-recolor.d.ts +141 -0
  381. package/lib/implementations/plotly/omics-trace-builders.d.ts +32 -20
  382. package/lib/implementations/plotly/plotly-image-loader.d.ts +49 -0
  383. package/lib/implementations/plotly/plotly-image-recolor.d.ts +75 -0
  384. package/lib/implementations/plotly/plotly-intensity-inset.d.ts +8 -0
  385. package/lib/implementations/plotly/plotly-isosurface-controls.d.ts +38 -0
  386. package/lib/implementations/plotly/plotly-layouts.d.ts +188 -0
  387. package/lib/implementations/plotly/plotly-readback.d.ts +41 -0
  388. package/lib/implementations/plotly/plotly-region-overlay.d.ts +2 -2
  389. package/lib/implementations/plotly/plotly-shape-projection.d.ts +92 -0
  390. package/lib/implementations/plotly/plotly-trace-builders.d.ts +23 -12
  391. package/lib/implementations/plotly/plotly-zoom-controller.d.ts +86 -0
  392. package/lib/implementations/plotly/plotly.service.d.ts +136 -401
  393. package/lib/implementations/region-centroids.d.ts +14 -0
  394. package/lib/implementations/simple-slice-access.service.d.ts +7 -4
  395. package/lib/implementations/spatial-data-http/spatial-data-http.service.d.ts +42 -18
  396. package/lib/implementations/spatial-data-http/spatial-wire.d.ts +34 -9
  397. package/lib/implementations/tile-server/index.d.ts +5 -0
  398. package/lib/implementations/tile-server/native-histogram.d.ts +25 -0
  399. package/lib/implementations/tile-server/poll-descriptor.d.ts +39 -0
  400. package/lib/implementations/tile-server/tile-protocol.d.ts +83 -0
  401. package/lib/implementations/tile-server/transport.d.ts +62 -0
  402. package/lib/intensity/intensity-profile.d.ts +66 -0
  403. package/lib/intensity/intensity-profile.service.d.ts +108 -0
  404. package/lib/intensity-inset/intensity-inset.component.d.ts +58 -0
  405. package/lib/models/bezier.d.ts +0 -5
  406. package/lib/models/class-preset.d.ts +25 -0
  407. package/lib/models/geometry.d.ts +14 -48
  408. package/lib/models/polygon-edit.d.ts +72 -0
  409. package/lib/models/polygon-factory.d.ts +45 -0
  410. package/lib/models/region-clone.d.ts +20 -0
  411. package/lib/models/region-geojson.d.ts +57 -0
  412. package/lib/models/region.d.ts +59 -4
  413. package/lib/models/shape.d.ts +8 -0
  414. package/lib/plot-mode/contribution-host.d.ts +125 -0
  415. package/lib/plot-mode/plot-type-menu.d.ts +60 -0
  416. package/lib/plot-mode/tool-params-model.d.ts +49 -0
  417. package/lib/plot.utilities.d.ts +19 -30
  418. package/lib/processing/processing-image.d.ts +5 -2
  419. package/lib/provide-visualization.d.ts +19 -2
  420. package/lib/region-editor/class-tree/class-tree.component.d.ts +78 -0
  421. package/lib/region-editor/class-tree/class-tree.d.ts +31 -0
  422. package/lib/region-editor/classes-panel/classes-panel.component.d.ts +86 -0
  423. package/lib/region-editor/file-stem.d.ts +7 -0
  424. package/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.d.ts +45 -0
  425. package/lib/region-editor/mask-export.service.d.ts +54 -0
  426. package/lib/region-editor/mask-raster.d.ts +2 -8
  427. package/lib/region-editor/region-color-dialog/region-color-dialog.component.d.ts +29 -0
  428. package/lib/region-editor/region-editor-help/region-editor-help.component.d.ts +11 -0
  429. package/lib/region-editor/region-editor.component.d.ts +283 -200
  430. package/lib/region-editor/region-metrics.d.ts +34 -0
  431. package/lib/region-editor/region-persistence.service.d.ts +77 -0
  432. package/lib/region-editor/region-table/region-table.component.d.ts +89 -0
  433. package/lib/region-editor/save-mask-dialog/save-mask-dialog.component.d.ts +36 -0
  434. package/lib/region-editor/save-regions-dialog/save-regions-dialog.component.d.ts +37 -0
  435. package/lib/region-ops.service.d.ts +1 -7
  436. package/lib/region-overlay/region-geometry.d.ts +158 -0
  437. package/lib/region-overlay/region-hit-test.d.ts +38 -0
  438. package/lib/region-overlay/region-source-layer.d.ts +96 -0
  439. package/lib/region-overlay/region-style.d.ts +52 -0
  440. package/lib/region-overlay/svg-region-renderer.d.ts +110 -0
  441. package/lib/region-source/http-region-source.d.ts +45 -0
  442. package/lib/region-source/region-source-ops.d.ts +89 -0
  443. package/lib/region-source/region-source-worker.d.ts +7 -0
  444. package/lib/region-source/region-source.d.ts +82 -0
  445. package/lib/region-source/region-tiles.d.ts +289 -0
  446. package/lib/region-source/worker-region-source.d.ts +65 -0
  447. package/lib/render-orchestrator.d.ts +6 -2
  448. package/lib/render-session.d.ts +75 -0
  449. package/lib/routing-visualizer.service.d.ts +248 -59
  450. package/lib/section-pane/section-pane.component.d.ts +47 -0
  451. package/lib/spatial/density-raster.d.ts +6 -0
  452. package/lib/spatial/embedding-compute-coordinator.d.ts +123 -0
  453. package/lib/spatial/embedding-compute.d.ts +21 -2
  454. package/lib/spatial/glyphs.d.ts +16 -0
  455. package/lib/spatial/lod.d.ts +94 -0
  456. package/lib/spatial/spatial-controls.facade.d.ts +64 -0
  457. package/lib/spatial/spatial-density.d.ts +15 -5
  458. package/lib/spatial/spatial-encoding.d.ts +11 -44
  459. package/lib/spatial/spatial-expression.d.ts +40 -22
  460. package/lib/spatial/spatial-framing.d.ts +1 -0
  461. package/lib/spatial/spatial-heatmap.d.ts +2 -0
  462. package/lib/spatial/spatial-hover.d.ts +4 -16
  463. package/lib/spatial/spatial-panel-model.d.ts +135 -0
  464. package/lib/spatial/spatial-selection.d.ts +21 -26
  465. package/lib/spatial/spatial-tile-merge.d.ts +41 -0
  466. package/lib/spatial/spatial-tiles.d.ts +9 -256
  467. package/lib/spatial/stats.d.ts +38 -0
  468. package/lib/spatial/transcript-grouping.d.ts +119 -0
  469. package/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.d.ts +64 -0
  470. package/lib/spatial-controls/spatial-charts/chart-data-model.d.ts +153 -0
  471. package/lib/spatial-controls/spatial-charts/chart-help.d.ts +69 -0
  472. package/lib/spatial-controls/spatial-charts/plotly-chart-host.d.ts +98 -0
  473. package/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.d.ts +26 -0
  474. package/lib/spatial-controls/spatial-charts/spatial-charts.component.d.ts +101 -260
  475. package/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.d.ts +43 -0
  476. package/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.d.ts +27 -0
  477. package/lib/spatial-controls/spatial-controls.component.d.ts +68 -448
  478. package/lib/spatial-controls/spatial-gene-picker.d.ts +86 -0
  479. package/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.d.ts +102 -0
  480. package/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.d.ts +72 -0
  481. package/lib/spatial-controls/spatial-key/spatial-key.component.d.ts +66 -0
  482. package/lib/spatial-controls/spatial-key/spatial-key.model.d.ts +33 -0
  483. package/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.d.ts +64 -0
  484. package/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.d.ts +117 -0
  485. package/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.d.ts +142 -0
  486. package/lib/store/class-color.util.d.ts +39 -2
  487. package/lib/store/class-signatures.d.ts +11 -0
  488. package/lib/store/region-history.d.ts +66 -0
  489. package/lib/store/region-scope-cache.d.ts +65 -0
  490. package/lib/store/region-selection.d.ts +36 -0
  491. package/lib/store/region-source-scope.d.ts +68 -0
  492. package/lib/store/region-store.service.d.ts +312 -116
  493. package/lib/store/visualizer-store.service.d.ts +32 -33
  494. package/lib/toast-outlets.d.ts +4 -3
  495. package/lib/toolbar/brush/brush-tool.service.d.ts +31 -98
  496. package/lib/toolbar/canvas-tools.d.ts +20 -0
  497. package/lib/toolbar/crop/slide-crop.d.ts +10 -4
  498. package/lib/toolbar/plot-type-selector/plot-type-selector.component.d.ts +38 -0
  499. package/lib/toolbar/region-tools/region-tool-buttons.d.ts +21 -0
  500. package/lib/toolbar/region-tools/region-tools.component.d.ts +62 -0
  501. package/lib/toolbar/segmentation/cell-segment-tool.service.d.ts +10 -14
  502. package/lib/toolbar/segmentation/cellpose-segmenter.service.d.ts +12 -2
  503. package/lib/toolbar/segmentation/onnx-sam-session.d.ts +22 -3
  504. package/lib/toolbar/segmentation/pending-calls.d.ts +31 -0
  505. package/lib/toolbar/segmentation/sam-model-registry.d.ts +9 -3
  506. package/lib/toolbar/segmentation/sam-onnx-core.d.ts +18 -5
  507. package/lib/toolbar/segmentation/sam-point-tool.service.d.ts +46 -32
  508. package/lib/toolbar/segmentation/sam-prompt.d.ts +7 -31
  509. package/lib/toolbar/segmentation/sam-session.service.d.ts +74 -0
  510. package/lib/toolbar/segmentation/sam-tool.service.d.ts +23 -30
  511. package/lib/toolbar/segmentation/segmentation-commit.d.ts +8 -0
  512. package/lib/toolbar/segmentation/segmentation-runner.d.ts +52 -0
  513. package/lib/toolbar/segmentation-tools/segmentation-tools.component.d.ts +87 -0
  514. package/lib/toolbar/stack-controls/stack-controls.component.d.ts +51 -0
  515. package/lib/toolbar/tool-kit/async-tool-status.d.ts +21 -0
  516. package/lib/toolbar/tool-kit/canvas-tool-manager.d.ts +36 -0
  517. package/lib/toolbar/tool-kit/canvas-tool.d.ts +86 -0
  518. package/lib/toolbar/tool-kit/frame-pixels.d.ts +45 -0
  519. package/lib/toolbar/tool-kit/mask-stroke-editor.d.ts +125 -0
  520. package/lib/toolbar/tool-kit/matrix-frame.d.ts +40 -0
  521. package/lib/toolbar/tool-kit/tool-overlay.d.ts +60 -0
  522. package/lib/toolbar/tool-kit/undo-gesture.d.ts +17 -0
  523. package/lib/toolbar/tool-slider/tool-slider.component.d.ts +33 -0
  524. package/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.d.ts +24 -0
  525. package/lib/toolbar/toolbar.component.d.ts +55 -84
  526. package/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.d.ts +33 -40
  527. package/lib/toolbar/view-controls/view-controls.component.d.ts +54 -0
  528. package/lib/toolbar/wand/wand-region-grow.d.ts +49 -0
  529. package/lib/toolbar/wand/wand-tool.service.d.ts +39 -124
  530. package/lib/toolbar/wand/wand.service.d.ts +22 -116
  531. package/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.d.ts +17 -37
  532. package/lib/util/mark-for-check.d.ts +11 -0
  533. package/lib/util/supersede.d.ts +53 -0
  534. package/lib/visualization.module.d.ts +18 -39
  535. package/lib/visualizer/floating-drag.directive.d.ts +30 -0
  536. package/lib/visualizer/region-actions.d.ts +54 -0
  537. package/lib/visualizer/region-load.d.ts +46 -0
  538. package/lib/visualizer/spatial-dataset-binder.d.ts +74 -0
  539. package/lib/visualizer/tool-modes.d.ts +49 -0
  540. package/lib/visualizer/viewer-shortcuts.d.ts +71 -0
  541. package/lib/visualizer/visualizer-context-menu.d.ts +55 -0
  542. package/lib/visualizer/volume-sections.d.ts +64 -0
  543. package/lib/visualizer.component.d.ts +232 -447
  544. package/lib/workers/spatial-math-ops.d.ts +65 -0
  545. package/lib/workers/spatial-math-worker.d.ts +7 -0
  546. package/lib/workers/spatial-math.d.ts +74 -0
  547. package/package.json +12 -3
  548. package/src/lib/assets/slice.svg +23 -0
  549. package/src/lib/styles/_viz-icons-rules.scss +73 -0
  550. package/src/lib/styles/viz-icons.scss +14 -0
  551. package/esm2022/lib/implementations/napari-js/napari-axes-labels.mjs +0 -97
  552. package/esm2022/lib/implementations/napari-js/napari-navigator.mjs +0 -195
  553. package/esm2022/lib/implementations/napari-js/napari-scale-bar.mjs +0 -92
  554. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs +0 -329
  555. package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs.map +0 -1
  556. package/lib/implementations/napari-js/napari-axes-labels.d.ts +0 -49
  557. package/lib/implementations/napari-js/napari-navigator.d.ts +0 -72
  558. package/lib/implementations/napari-js/napari-scale-bar.d.ts +0 -35
  559. package/src/lib/assets/cell-detection.svg +0 -37
  560. package/src/lib/assets/click.svg +0 -1
  561. package/src/lib/assets/colormap-luts.json +0 -1
  562. package/src/lib/assets/edit-selection-white.svg +0 -47
  563. package/src/lib/assets/icons/colormap-earth.png +0 -0
  564. package/src/lib/assets/icons/colormap-placeholder.png +0 -0
  565. package/src/lib/assets/icons/colormap-pubu.png +0 -0
  566. package/src/lib/assets/interactive-segmentation-cursor.svg +0 -1
  567. package/src/lib/assets/picture-segmentation.svg +0 -43
  568. package/src/lib/assets/test/download-379.svg +0 -1
  569. package/src/lib/assets/test/download-98.svg +0 -1
  570. package/src/lib/assets/test/json-1.svg +0 -1
  571. package/src/lib/assets/test/load-53.svg +0 -1
  572. package/src/lib/assets/test/mask-44.svg +0 -1
  573. package/src/lib/assets/test/mask-download-44.svg +0 -15
  574. package/src/lib/assets/test/mask-save-44.svg +0 -11
  575. package/src/lib/assets/test/overlay-1.svg +0 -1
  576. package/src/lib/assets/test/overlay-4.svg +0 -1
  577. package/src/lib/assets/test/region-26.svg +0 -1
  578. package/src/lib/assets/test/save-56.svg +0 -1
  579. package/src/lib/assets/test/upload-43.svg +0 -1
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Loads in flight, per layer label ("Transcripts", "Cells"…), for the canvas loading badge.
3
+ * Shared by every plan: a label stays reported while any plan still loads it.
4
+ */
5
+ export declare class LoadTracker {
6
+ private readonly changed;
7
+ private readonly loading;
8
+ constructor(changed: (labels: string[]) => void);
9
+ /** Report `label` loading while `work` is in flight. */
10
+ track<T>(label: string, work: Promise<T>): Promise<T>;
11
+ /** Forget every load (the viewer went away) and report none. */
12
+ clear(): void;
13
+ }
14
+ /**
15
+ * One run of `NapariSpatialTileLayers.plan()`. Completeness belongs to the run that did the
16
+ * fetching: on the instance, a superseded run's failed tile marked the CURRENT run incomplete,
17
+ * which then skipped caching its keys and retried for nothing (review NAPARI-BOUNDARY-9).
18
+ */
19
+ export declare class PlanContext {
20
+ private readonly isStale;
21
+ private readonly loads;
22
+ private failed;
23
+ /** `isStale` turns true once a newer plan started or the viewer changed. */
24
+ constructor(isStale: () => boolean, loads: LoadTracker);
25
+ /** True once a newer plan started or the viewer changed. */
26
+ stale(): boolean;
27
+ /** Set when a fetch of this run failed (see fetchAll): don't cache it as done; retry. */
28
+ get incomplete(): boolean;
29
+ /** A request of this run failed: what it drew must not be cached as done. */
30
+ markIncomplete(): void;
31
+ /** Report `label` loading while `work` is in flight. */
32
+ track<T>(label: string, work: Promise<T>): Promise<T>;
33
+ /**
34
+ * Fetch every tile, drawing what arrived. A failure does not fail the view, but it marks this
35
+ * run incomplete: the caller must not cache it as done, and `plan()` retries it.
36
+ */
37
+ fetchAll<K, T>(keys: K[], load: (k: K) => Promise<T>): Promise<T[]>;
38
+ }
@@ -0,0 +1,71 @@
1
+ import type { PointsLayer } from 'napari-js';
2
+ import type { SpatialDataPort } from '../../../contracts/ports/spatial-data.port';
3
+ import { SpatialTranscriptTile } from '../../../contracts/spatial-dataset.contract';
4
+ import type { CategoricalCodes } from './categorical-lookup';
5
+ /** What one transcript entry is — decides what hovering it says. */
6
+ export type TranscriptKind = 'genes' | 'individual' | 'bins';
7
+ /** A bin grid: its size and origin, so a hovered bin's square can be recovered. */
8
+ export interface TranscriptBin {
9
+ size: number;
10
+ origin: [number, number];
11
+ }
12
+ /**
13
+ * Tooltips for the transcript markers of the 2D spatial view.
14
+ *
15
+ * Reads only what the transcript layer last drew — handed over one way through
16
+ * {@link setDrawn} / {@link setTypes} — and asks the server for the slower details (distinct
17
+ * genes in a group, its top genes and cells, the cell's display id) once the pointer has
18
+ * rested on a marker, caching them until the next draw.
19
+ */
20
+ export declare class TranscriptHover {
21
+ private readonly port;
22
+ private readonly layerShown;
23
+ /** What the transcript layer currently shows (written by drawing, read by hover). */
24
+ private drawn;
25
+ /** The cell-type column, to name the cell a marker is in. */
26
+ private types;
27
+ /** µm per observation unit of the drawn dataset, for describing a grouped marker's area. */
28
+ private micronsPerUnit;
29
+ /** Details already fetched, by hovered entry. */
30
+ private readonly cache;
31
+ private key;
32
+ private timer;
33
+ /** `layerShown` says whether the transcript layer is on screen now (it may have been dropped). */
34
+ constructor(port: SpatialDataPort, layerShown: () => boolean);
35
+ /** The transcript layer was redrawn: hover names these entries now (cached details are dropped). */
36
+ setDrawn(drawn: DrawnTranscripts, micronsPerUnit: number | null): void;
37
+ /** The cell-type column the drawn entries' cells are named by, or null. */
38
+ setTypes(types: CategoricalCodes | null): void;
39
+ /** Nothing is drawn any more. */
40
+ clear(): void;
41
+ /** Stop a pending details request and forget what was drawn. */
42
+ dispose(): void;
43
+ /**
44
+ * Tooltip lines for the transcript marker under world point `(wx, wy)`, or null.
45
+ *
46
+ * The marker is napari-js's pick on the drawn layer: hit anywhere on it, or within
47
+ * `radiusWorld` of its centre when it is smaller than that, the NEAREST centre winning
48
+ * among several (an exact tie, such as two genes' groups on one bin centre, goes to the one
49
+ * drawn on top). Returns what is known at once (gene, count, cell type); anything that needs
50
+ * the server — distinct genes in a group, its top genes and cells, the cell's display id —
51
+ * arrives through `onDetails` once the pointer has rested on the marker briefly.
52
+ */
53
+ hoverAt(wx: number, wy: number, radiusWorld: number, onDetails: (lines: string[]) => void): string[] | null;
54
+ private fetchDetails;
55
+ /** The tooltip text for entry `i`, with the server's details when they have arrived. */
56
+ private describe;
57
+ }
58
+ /** What the transcript layer currently shows — what hovering needs to name a marker. */
59
+ export interface DrawnTranscripts {
60
+ kind: TranscriptKind;
61
+ bin?: TranscriptBin;
62
+ merged: SpatialTranscriptTile;
63
+ /** The layer the entries are drawn in, one marker per entry in the same order. */
64
+ layer: PointsLayer;
65
+ genes: string[];
66
+ /** For a grouped gene selection: each entry's group, and the groups' names. */
67
+ entryGroup?: Int32Array;
68
+ groupNames?: string[];
69
+ /** Each group's genes, when the markers came from the density grids (for the hover). */
70
+ groupGenes?: string[][];
71
+ }
@@ -0,0 +1,105 @@
1
+ import { type SpatialDataPort } from '../../../contracts/ports/spatial-data.port';
2
+ import type { SpatialViewState } from '../../../contracts/display-types';
3
+ import { SpatialDataset, SpatialTranscriptTile } from '../../../contracts/spatial-dataset.contract';
4
+ import { DataRect } from '../../../spatial/lod';
5
+ import type { PlanContext } from './plan-context';
6
+ import type { TranscriptBin, TranscriptKind } from './transcript-hover';
7
+ /** A transcript fetch the planner can key before running. */
8
+ export interface TranscriptJob {
9
+ /** What one entry is — decides what hovering it says. */
10
+ kind: TranscriptKind;
11
+ /** For bins: their size and grid origin, so a hovered bin's square can be recovered. */
12
+ bin?: TranscriptBin;
13
+ /** Identifies what will be drawn, so an unchanged plan is a no-op. */
14
+ key: string;
15
+ /** Fetch and merge; `px` is each entry's marker diameter in screen pixels. A job may
16
+ * switch to another kind once it sees the data (individual → bins); it then says so. */
17
+ load(ctx: PlanContext): Promise<TranscriptLoad>;
18
+ }
19
+ export interface TranscriptLoad {
20
+ merged: SpatialTranscriptTile;
21
+ px: Float32Array;
22
+ /** For a gene selection: group it on this bin ladder once hidden genes are dropped. */
23
+ ladder?: {
24
+ baseBin: number;
25
+ levels: number;
26
+ start: number | null;
27
+ };
28
+ /** Already one marker per cluster per bin (zoomed out, from the density grids): no cells. */
29
+ clustered?: {
30
+ group: Int32Array;
31
+ names: string[];
32
+ genes: string[][];
33
+ bin: number;
34
+ origin: [number, number];
35
+ };
36
+ kind?: TranscriptJob['kind'];
37
+ bin?: TranscriptJob['bin'];
38
+ }
39
+ /**
40
+ * Decides which transcripts the 2D spatial view fetches, at which level, for the current
41
+ * camera and selection: a {@link TranscriptJob} that can be keyed before it runs (so an
42
+ * unchanged plan is a no-op) and that fetches and merges when run.
43
+ *
44
+ * Pure apart from the port, so the level policy is testable without a viewer. Owns the
45
+ * cache of summed per-cluster density grids a zoomed-out gene selection is drawn from.
46
+ */
47
+ export declare class TranscriptJobPlanner {
48
+ private readonly port;
49
+ /** Summed per-cluster density grids (see densityFor). */
50
+ private readonly densityCache;
51
+ constructor(port: SpatialDataPort);
52
+ /**
53
+ * The job that draws the view's transcripts as markers (circles or icons), or null when the
54
+ * view draws none or the port cannot serve them.
55
+ */
56
+ jobFor(dataset: SpatialDataset, view: SpatialViewState, rect: DataRect, pxPerUnit: number): TranscriptJob | null;
57
+ /**
58
+ * The chosen genes, at the level the zoom calls for — or coarser, while the markers in
59
+ * view would exceed the budget.
60
+ */
61
+ private geneJob;
62
+ /**
63
+ * A gene selection from the pyramid's per-gene levels: starting at the level whose bins are
64
+ * `startBin`, fetch the view's tiles for the selected genes and step to a coarser level while
65
+ * one marker per cluster per bin would exceed the max. Hidden genes are fetched too (their
66
+ * counts in view still show) and dropped before drawing; grouping by cluster happens there.
67
+ */
68
+ private geneBinsJob;
69
+ /** The selection's clusters: each gene-tree group's visible genes, then each ungrouped gene. */
70
+ private selectionClusters;
71
+ /**
72
+ * Per-gene density grids summed for `genes`, cached (a cluster is asked for once per bin).
73
+ * Keyed by dataset too: this manager outlives a dataset, and another may share gene names.
74
+ * Least-recently-USED eviction, so the clusters in view stay cached; a failed request is
75
+ * dropped so the next plan asks again.
76
+ */
77
+ private densityFor;
78
+ /**
79
+ * A gene selection zoomed out: one marker per cluster per bin, from the per-gene density
80
+ * grids. The bin starts where markers are 14 px apart and doubles until the markers fit the
81
+ * max; each marker sits at the count-weighted centre of the finer grid inside it, so markers
82
+ * follow the tissue rather than a lattice.
83
+ */
84
+ private clusterDensityJob;
85
+ /**
86
+ * Every gene: the transcripts themselves once they fit the budget, else bins of the
87
+ * all-gene pyramid sized by how many transcripts each holds.
88
+ */
89
+ private allGenesJob;
90
+ /** Bins of the all-gene pyramid at `level`, sized by how many transcripts each holds. */
91
+ private binsJob;
92
+ }
93
+ /**
94
+ * Group a gene selection for the zoom: one marker per gene-tree cluster (a gene in no
95
+ * cluster is its own) per bin of the pyramid ladder, starting at the finest bin whose
96
+ * markers are 14 px apart and stepping up while the markers would exceed the budget.
97
+ * Null to draw every transcript: zoomed in, with the selection within the budget.
98
+ */
99
+ export declare function groupSelection(t: SpatialTranscriptTile, view: SpatialViewState, ladder: NonNullable<TranscriptLoad['ladder']>, pxPerUnit: number): {
100
+ merged: SpatialTranscriptTile;
101
+ px: Float32Array;
102
+ bin: number;
103
+ group: Int32Array;
104
+ names: string[];
105
+ } | null;
@@ -0,0 +1,56 @@
1
+ import type { PointSymbol } from 'napari-js';
2
+ import type { SpatialViewState } from '../../../contracts/display-types';
3
+ import { SpatialDataset } from '../../../contracts/spatial-dataset.contract';
4
+ import { DataRect } from '../../../spatial/lod';
5
+ import { TranscriptGlyph } from '../../../spatial/glyphs';
6
+ import type { CategoricalLookup } from './categorical-lookup';
7
+ import type { OrderedLayerGroups, TileGroup } from './layer-groups';
8
+ import type { PlanContext } from './plan-context';
9
+ import type { TranscriptHover } from './transcript-hover';
10
+ import { type TranscriptJobPlanner } from './transcript-jobs';
11
+ /**
12
+ * The napari-js point symbol each transcript icon is drawn as. Every icon has a counterpart of
13
+ * the same outline (`circle` is napari's `disc`); see {@link GLYPH_SIZE} for the one whose size
14
+ * differs.
15
+ */
16
+ export declare const GLYPH_SYMBOLS: Readonly<Record<TranscriptGlyph, PointSymbol>>;
17
+ /**
18
+ * The transcript markers of the 2D spatial view: runs the planner's job, drops hidden groups
19
+ * and genes, groups a selection under the marker budget, colours the entries and draws them as
20
+ * one points layer: sized circles, or gene icons as per-point symbols (with a dark rim while
21
+ * there are few enough).
22
+ *
23
+ * Hands what it drew to the hover one way ({@link TranscriptHover.setDrawn}), and keeps the
24
+ * loaded per-gene transcripts the in-view gene counts are taken from.
25
+ */
26
+ export declare class TranscriptLayers {
27
+ private readonly groups;
28
+ private readonly jobs;
29
+ private readonly lookup;
30
+ private readonly hover;
31
+ /** The loaded per-gene transcripts the in-view counts are taken from. */
32
+ private countSource;
33
+ constructor(groups: OrderedLayerGroups<TileGroup>, jobs: TranscriptJobPlanner, lookup: CategoricalLookup, hover: TranscriptHover);
34
+ /**
35
+ * Transcripts of each selected gene inside `rect`: each entry counts for the transcripts it
36
+ * stands for (an aggregate at a coarse level holds several). Null without per-gene data.
37
+ */
38
+ geneCountsIn(rect: DataRect): Record<string, number> | null;
39
+ /** The viewer went away: no counts until the next plan. */
40
+ detached(): void;
41
+ /** Draw the view's transcript markers (or drop them); an unchanged plan key is a no-op. */
42
+ plan(dataset: SpatialDataset, view: SpatialViewState, rect: DataRect, pxPerUnit: number, ctx: PlanContext): Promise<void>;
43
+ /**
44
+ * Gene icons: each entry drawn as its gene's napari-js point symbol, in the same one points
45
+ * layer as the circles. With every gene drawn there is one icon for all of them — 18,000
46
+ * shapes would say nothing.
47
+ */
48
+ private drawTranscriptGlyphs;
49
+ /**
50
+ * The one transcripts layer: a marker per entry, `size` saying how many transcripts it stands
51
+ * for, drawn as the layer's disc or as each entry's `symbols` code.
52
+ */
53
+ private drawTranscripts;
54
+ /** Per-entry colours, as packed RGBA. */
55
+ private transcriptColors;
56
+ }
@@ -4,8 +4,8 @@ import { Rgb } from '../../contracts/colormap-lut';
4
4
  * The OSD pixel display pipeline (refactoring plan, Step 4 — a pure move of
5
5
  * the recolor math out of the visualizer service). Stateless: every call reads
6
6
  * the current display state through the host closures, exactly like the moved
7
- * code read the service's fields. Shared by tile recoloring and the composite
8
- * export so they stay identical.
7
+ * code read the service's fields. Shared by tile recoloring, the serverless
8
+ * multichannel compositor and the composite export so they stay identical.
9
9
  */
10
10
  export interface DisplayPipelineHost {
11
11
  /** Grayscale image (colormap LUT path) vs RGB/multichannel (additive tint). */
@@ -23,25 +23,54 @@ export declare class DisplayPipeline {
23
23
  /**
24
24
  * Apply the current display pipeline to an RGBA buffer in place; returns
25
25
  * whether any opaque pixel was written.
26
- * - Grayscale: intensity → window + gamma + invert → colormap LUT.
26
+ * - Grayscale: intensity → window → invert → gamma → colormap LUT.
27
27
  * - RGB/multichannel: additive pseudo-colour merge — each visible channel's
28
- * windowed intensity is tinted by its assigned colour and summed (Fiji
29
- * "Merge Channels"). Defaults (R=red, G=green, B=blue) are the identity.
28
+ * intensity (window → invert → gamma, see {@link channelIntensity}) is
29
+ * tinted by its assigned colour and summed (Fiji "Merge Channels"), then
30
+ * clamped. Invert is per channel, before the merge, as napari-js inverts
31
+ * each additive layer (NAPARI-BOUNDARY-2) — not the composite. Defaults
32
+ * (R=red, G=green, B=blue) are the identity.
30
33
  */
31
34
  applyToRgba(d: Uint8ClampedArray): boolean;
32
- /** Precomputed lum(0..255) → tinted-RGB lookup for a channel's window/gamma/
33
- * colour. Building it costs 256 channelIntensity() calls; using it makes a
35
+ /** Precomputed lum(0..255) → tinted-RGB lookup for a channel's window/invert/
36
+ * gamma/colour. Building it costs 256 channelIntensity() calls; using it makes a
34
37
  * full-tile recolor ~262k array lookups instead of ~262k Math.pow() calls. */
35
38
  channelRgbLut(st?: IChannelState): {
36
39
  r: Uint8ClampedArray;
37
40
  g: Uint8ClampedArray;
38
41
  b: Uint8ClampedArray;
39
42
  };
40
- /** Windowed + gamma intensity (0..255) for a channel, ignoring tint/invert. */
41
- channelIntensity(val: number, c?: IChannelState): number;
43
+ /**
44
+ * Additive ('lighter') merge of single-band channel planes into one opaque
45
+ * RGBA image — what OSD's drawer shows for a per-channel image, where each
46
+ * channel tile is tinted by {@link channelRgbLut}. Hidden channels, missing
47
+ * planes and planes of another size contribute nothing. A plane is RGBA
48
+ * (`bands` 4, R=G=B, transparent pixels skipped) or one byte per pixel
49
+ * (`bands` 1). Used by the serverless multichannel compositor, the
50
+ * multichannel composite export and the Plotly image's channel display.
51
+ */
52
+ compositeChannels(planes: ReadonlyArray<Uint8ClampedArray | Uint8Array | null | undefined>, states: ReadonlyArray<IChannelState | undefined>, bands?: 1 | 4): Uint8ClampedArray;
53
+ /** Add one single-band plane (RGBA or one byte per pixel, see
54
+ * {@link compositeChannels}), tinted by its channel state, onto `out`
55
+ * (Uint8ClampedArray clamps → additive 'lighter'). */
56
+ addChannel(out: Uint8ClampedArray, plane: Uint8ClampedArray | Uint8Array, st?: IChannelState, bands?: 1 | 4): void;
57
+ /**
58
+ * A channel's display intensity (0..255, before its tint): window → invert →
59
+ * gamma, the order of napari-js's `windowGamma`, which every additive napari
60
+ * layer applies on its own before the layers are summed (NAPARI-BOUNDARY-2).
61
+ * The gamma exponent is the ImageJ one (t^(1/γ)). An empty window span maps to
62
+ * 0 before the invert; with no channel state the value passes through.
63
+ */
64
+ channelIntensity(val: number, c?: IChannelState, invert?: boolean): number;
42
65
  /** A channel's pseudo-colour tint as [r,g,b] in 0..1 (default white). */
43
66
  tint01(c?: IChannelState): [number, number, number];
44
67
  /** True when any RGB channel is windowed/hidden/gamma'd/re-tinted or the
45
68
  * background is inverted — otherwise the tile passes through unchanged. */
46
69
  rgbNeedsRecolor(): boolean;
47
70
  }
71
+ /**
72
+ * Whether an RGB image's channel states (R, G, B) change how it looks: any band windowed, hidden,
73
+ * gamma'd or re-tinted, or the image inverted. False means the RGB pixels pass through as they
74
+ * are — every backend's cue to keep drawing the image directly.
75
+ */
76
+ export declare function rgbNeedsRecolor(channelStates: ReadonlyArray<IChannelState | undefined>, invert: boolean): boolean;
@@ -30,9 +30,10 @@ export interface HistogramSamplerHost {
30
30
  /** Histograms landed — nudge the pane to re-read (its retry window may have
31
31
  * lapsed). */
32
32
  onChannelHistogramsSampled(): void;
33
- /** A grayscale auto-window was measured from full-res tiles — seed the
34
- * Intensity channel (or re-invalidate if the user already windowed). */
35
- onGrayWindowSampled(min: number, max: number): void;
33
+ /** A grayscale auto-window was measured from slice `z`'s full-res tiles —
34
+ * seed the Intensity channel (or re-invalidate if the user already
35
+ * windowed). Background-preloaded slices report too; the host decides. */
36
+ onGrayWindowSampled(min: number, max: number, z: number): void;
36
37
  }
37
38
  export declare class HistogramSampler {
38
39
  private http;
@@ -40,18 +41,25 @@ export declare class HistogramSampler {
40
41
  private host;
41
42
  /** 256-bin intensity histogram per z-slice, from sampled tiles. */
42
43
  private sliceHistograms;
43
- /** Native-bit-depth histograms from `/histogram`, keyed `${z}|${channel}`. */
44
+ /** Native-bit-depth histograms from `/histogram`, keyed
45
+ * `${infoB64}|${z}|${channel}|${bins}`. */
44
46
  private nativeHistograms;
45
- /** Per-app-load cache-buster for `/histogram` — the server marks the
46
- * response cacheable for 24h, and a hard refresh can't bust a post-load
47
- * XHR. A token stable within a session but new on each full load keeps the
48
- * in-session dedup (via `nativeHistograms`) while always reflecting the
49
- * live backend after a reload. */
50
- private readonly histCacheBuster;
47
+ /** Bumped by {@link clear}. Every async sampler captures it before its first
48
+ * `await` and drops its result if it changed: tile sampling and the native
49
+ * fetch can take tens of seconds, and a run for the previous image must not
50
+ * write that image's histogram, auto-window or native histogram into the
51
+ * next one. */
52
+ private generation;
53
+ /** Slices whose tile sampling is in flight, so a scrub back to one (or a
54
+ * background preload of it) doesn't fetch its tiles again. */
55
+ private readonly inFlight;
51
56
  constructor(http: HttpClient, api: string, host: HistogramSamplerHost);
52
57
  /** The sampled histogram for one channel of slice z, or null until the
53
58
  * async sampling resolves (or if it was skipped). */
54
59
  get(z: number, channelIndex: number): IHistogram | null;
60
+ /** Whether slice z is already sampled or being sampled (tile samplers only
61
+ * run once per slice until {@link clear}). */
62
+ private sampledOrPending;
55
63
  /** Drop everything (teardown / image switch). */
56
64
  clear(): void;
57
65
  /**
@@ -94,9 +102,11 @@ export declare class HistogramSampler {
94
102
  /**
95
103
  * Native-bit-depth histogram for >8-bit images, from the server `/histogram`
96
104
  * endpoint (the 8-bit canvas tiles can't carry 16-bit values). Cached per
97
- * slice+channel for the session.
105
+ * image+slice+channel+bin count until {@link clear}.
98
106
  */
99
107
  native$(infoB64: string, z: number, channel: number, bins: number): Observable<IHistogram | null>;
100
- /** Fetch + cache one channel's native histogram from `GET /histogram`. */
108
+ /** Fetch + cache one channel's native histogram from `GET /histogram`
109
+ * (the shared jit-service client, which adds the per-app-load cache-buster
110
+ * that defeats the server's 24 h cache). */
101
111
  private fetchNative;
102
112
  }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Quiet OpenSeadragon's "[Viewport.*] is not accurate with multi-image" advisories.
3
+ * A multichannel image is composited from one TiledImage per channel — a legitimate
4
+ * multi-image world — and OSD logs that advisory (at error level) from its own
5
+ * navigator/overview rendering on every animation frame, flooding the console. Our
6
+ * own image<->viewport conversions already route through world item 0 (see
7
+ * osd-coords), so the remaining advisories are OSD-internal and only affect the
8
+ * minimap's box accuracy (cosmetic). This wraps OSD's logger in a Proxy that drops
9
+ * only that one message string and forwards every other log untouched. Idempotent.
10
+ */
11
+ export declare function silenceOsdMultiImageAdvisory(): void;
12
+ /** What {@link buildViewerOptions} needs to know about the viewer being mounted. */
13
+ export interface ViewerOptionsInput {
14
+ /** The DOM id OSD mounts into. */
15
+ id: string;
16
+ /** Show the overview navigator (minimap). */
17
+ navigatorVisible: boolean;
18
+ /** Bilinear smoothing; false gives crisp nearest-neighbour pixels. */
19
+ smoothing: boolean;
20
+ /** Bearer token for OSD's own tile fetches (its loader bypasses HttpClient). */
21
+ authHeaders: Record<string, string>;
22
+ /** Slices in the image (1 for a single image). */
23
+ sliceCount: number;
24
+ /** How many slices the slice cache keeps resident (see SliceCache.maxSlices). */
25
+ maxSlices: number;
26
+ }
27
+ /**
28
+ * The options object handed to the OpenSeadragon factory. Pure: every value
29
+ * that depends on the service comes in through `input`.
30
+ *
31
+ * These are OSD config keys, not library code: OSD silently falls back to its
32
+ * own default when one is misspelled or renamed upstream, so the values we rely
33
+ * on are pinned by `openseadragon-viewer-options.spec.ts`.
34
+ */
35
+ export declare function buildViewerOptions(input: ViewerOptionsInput): Record<string, unknown>;