@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,110 @@
1
+ /**
2
+ * World-space SVG region renderer shared by the OpenSeadragon and napari
3
+ * overlays (review NAPARI-BOUNDARY-10, OSD-PLOTLY-11).
4
+ *
5
+ * The overlays used to delete and rebuild every region element on every camera
6
+ * frame, projecting every vertex to screen pixels (napari also read the layout
7
+ * once per vertex). Here region geometry is drawn ONCE, in world coordinates,
8
+ * inside a single `<g transform="matrix(a b c d e f)">`, with
9
+ * `vector-effect: non-scaling-stroke` so strokes keep their pixel width. A
10
+ * camera change rewrites that one attribute and re-positions the few
11
+ * screen-sized elements (labels, the selected region's handles, a draft) —
12
+ * nothing is created or removed. Region nodes are rebuilt only when the
13
+ * regions or the selection change ({@link render}).
14
+ *
15
+ * Layers, bottom to top, each attached only while it has content:
16
+ * 1. world — region shapes, in world coordinates (transformed group);
17
+ * 2. labels — screen-space text pinned to world anchors, rebuilt with the regions;
18
+ * 3. overlay — screen-space handles/drafts, rebuilt by the overlay on demand
19
+ * ({@link renderOverlay}).
20
+ */
21
+ import { Region } from '../models/region';
22
+ /** An SVG affine `matrix(a b c d e f)`: x' = a·x + c·y + e, y' = b·x + d·y + f. */
23
+ export type Affine = readonly [number, number, number, number, number, number];
24
+ /** World → svg-local pixel projection. */
25
+ export type Project = (x: number, y: number) => [number, number];
26
+ export declare const IDENTITY_AFFINE: Affine;
27
+ /**
28
+ * The affine of a projection that is affine (pan/zoom/rotate/flip), read from
29
+ * where it sends (0,0), (1,0) and (0,1) — how the OSD overlay gets its matrix
30
+ * from the viewport transform without depending on viewer internals. (napari-js
31
+ * hands the napari overlay its matrix directly: `Viewer.canvasTransform()`.)
32
+ */
33
+ export declare function affineFromProjection(project: (x: number, y: number) => readonly [number, number]): Affine;
34
+ /** Apply an affine to a point. */
35
+ export declare function applyAffine(m: Affine, x: number, y: number): [number, number];
36
+ /** How a placed screen element is (re)positioned for the current camera. */
37
+ export type Placement<T extends SVGElement> = (el: T, project: Project) => void;
38
+ /** Options for {@link SvgRegionRenderer}. */
39
+ export interface SvgRegionRendererOptions {
40
+ /** Draw a {@link Rectangle} as a `<rect>` or as a four-point `<polygon>`. Default polygon. */
41
+ rectElement?: 'rect' | 'polygon';
42
+ /** Stroke and fill for one region's shape element. */
43
+ styleShape(el: SVGElement, region: Region, selected: boolean): void;
44
+ /** Add a region's screen-space decorations (its label) — once per {@link render}. */
45
+ decorate?(region: Region, index: number, selected: boolean, layer: ScreenLayer): void;
46
+ /** Leave a region out entirely (it keeps its index). */
47
+ skip?(region: Region): boolean;
48
+ }
49
+ /**
50
+ * A screen-space layer: elements positioned from world anchors through the
51
+ * current camera, re-positioned (not rebuilt) on every camera change.
52
+ */
53
+ export declare class ScreenLayer {
54
+ readonly group: SVGGElement;
55
+ private readonly project;
56
+ private readonly placed;
57
+ constructor(group: SVGGElement, project: Project);
58
+ /** Append `el`, positioned by `place` now and after every camera change. */
59
+ place<T extends SVGElement>(el: T, place: Placement<T>): T;
60
+ /** Append `el` with attributes `x`/`y` (e.g. `'cx'`/`'cy'`) at a world point, offset in pixels. */
61
+ at<T extends SVGElement>(el: T, wx: number, wy: number, attrs?: {
62
+ x?: string;
63
+ y?: string;
64
+ dx?: number;
65
+ dy?: number;
66
+ }): T;
67
+ /** A `<line>` between two world points. */
68
+ line(ax: number, ay: number, bx: number, by: number): SVGLineElement;
69
+ /** A `<polygon>` / `<polyline>` through world points. */
70
+ poly(tag: 'polygon' | 'polyline', pts: ReadonlyArray<{
71
+ x: number;
72
+ y: number;
73
+ }>): SVGElement;
74
+ /** Re-position every element for the current camera. */
75
+ reproject(): void;
76
+ get isEmpty(): boolean;
77
+ clear(): void;
78
+ }
79
+ /** Create an SVG element. */
80
+ export declare function svgEl<K extends keyof SVGElementTagNameMap>(tag: K): SVGElementTagNameMap[K];
81
+ export declare class SvgRegionRenderer {
82
+ private readonly svg;
83
+ private readonly opts;
84
+ private camera;
85
+ private readonly world;
86
+ private readonly labels;
87
+ private readonly overlay;
88
+ /** World → svg-local pixels through the current camera. */
89
+ readonly project: Project;
90
+ constructor(svg: SVGSVGElement, opts: SvgRegionRendererOptions);
91
+ /** The current world → svg-local affine. */
92
+ get affine(): Affine;
93
+ /**
94
+ * Move the camera: rewrite the world group's transform and re-position the
95
+ * screen-space elements. No element is created or removed. Returns false
96
+ * (and touches nothing) when the affine did not change.
97
+ */
98
+ setCamera(affine: Affine): boolean;
99
+ /** Rebuild the region shapes (world space) and their decorations. */
100
+ render(regions: ReadonlyArray<Region>, selected: ReadonlyArray<number>): void;
101
+ /** Rebuild the overlay layer (the selected region's handles, drafts). */
102
+ renderOverlay(build: (layer: ScreenLayer) => void): void;
103
+ /** Remove every layer from the svg. */
104
+ destroy(): void;
105
+ private applyCamera;
106
+ /** Attach the layers that have content (in order) and detach the empty ones. */
107
+ private sync;
108
+ /** The world-space element for a region's geometry, or null when it has none. */
109
+ private shapeOf;
110
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * A {@link RegionSource} served over HTTP, by a server that tiles a region set as `region-tiles`
3
+ * does (the example tile server's `/regions/…` routes). Relative to the source's base URL:
4
+ *
5
+ * - `GET info` → {@link RegionSourceInfo}
6
+ * - `GET tile/{z}/{level}/{gx}/{gy}` → `{ features: WireTileFeature[] }`
7
+ * - `POST features` `{ ids }` → `{ features: SourceFeature[] }`
8
+ * - `POST index` `{ z, ...query }` → {@link RegionIndexPage}
9
+ * - `POST classes` `{ z, exclude }` → features per class on plane z
10
+ * - `POST outlines` `{ classes, level, exclude }` → `{ slices: [{ z, rings }] }`
11
+ * - `POST export` `{ exclude, extra }`→ a GeoJSON FeatureCollection
12
+ *
13
+ * Tile rings travel as flat `[x, y, x, y, …]` arrays, label points as flat `[x, y, room, …]`.
14
+ *
15
+ * Given the host's Angular `HttpClient` (as the visualizer passes it), every request goes through
16
+ * it, so the host's interceptors apply — its auth header above all — as for the image tiles and
17
+ * the spatial data. The library itself knows nothing of authentication.
18
+ */
19
+ import type { HttpClient } from '@angular/common/http';
20
+ import { RegionSource } from './region-source';
21
+ import type { Bbox } from './region-tiles';
22
+ /** A tile feature on the wire: rings as plain arrays. */
23
+ export interface WireTileFeature {
24
+ id: string;
25
+ label: string | null;
26
+ color: string | null;
27
+ bbox: Bbox;
28
+ rings: number[][];
29
+ open?: boolean;
30
+ labels?: number[];
31
+ }
32
+ /** Options of {@link openHttpRegionSource}. */
33
+ export interface HttpRegionSourceOptions {
34
+ /**
35
+ * The host's `HttpClient`: requests then go through it and its interceptors (the host's auth),
36
+ * not `fetch`, and `init` and `fetch` are not used.
37
+ */
38
+ http?: HttpClient;
39
+ /** Extra request options (credentials, headers) for every `fetch` request. */
40
+ init?: RequestInit;
41
+ /** The fetch to use (default the global one). */
42
+ fetch?: typeof fetch;
43
+ }
44
+ /** Open the region source at `baseUrl` (its `info` is fetched first). */
45
+ export declare function openHttpRegionSource(baseUrl: string, options?: HttpRegionSourceOptions): Promise<RegionSource>;
@@ -0,0 +1,89 @@
1
+ /**
2
+ * The region-source worker's protocol and the tables it holds, shared by the worker and the
3
+ * main-thread fallback (which runs the very same {@link RegionSourceTables} where no worker can
4
+ * start).
5
+ *
6
+ * Protocol: `{ id, op, ...args }` → `{ id, ok: true, result }` | `{ id, ok: false, error }`.
7
+ */
8
+ import { ReconstructOptions, SliceOutlines } from '../geometry/reconstruct';
9
+ import type { Mesh } from 'napari-js/geometry';
10
+ import { ClassOutlines, RegionIndexPage, RegionIndexQuery, RegionSourceInfo, RegionTile } from './region-tiles';
11
+ import type { SourceFeature } from './region-source';
12
+ export type RegionSourceRequest = {
13
+ op: 'open';
14
+ text: string;
15
+ tileSize?: number;
16
+ } | {
17
+ op: 'tile';
18
+ handle: number;
19
+ z: number;
20
+ level: number;
21
+ gx: number;
22
+ gy: number;
23
+ } | {
24
+ op: 'features';
25
+ handle: number;
26
+ ids: readonly string[];
27
+ } | {
28
+ op: 'index';
29
+ handle: number;
30
+ z: number;
31
+ query: RegionIndexQuery;
32
+ } | {
33
+ op: 'classes';
34
+ handle: number;
35
+ z: number | null;
36
+ exclude?: readonly string[];
37
+ } | {
38
+ op: 'outlines';
39
+ handle: number;
40
+ classes: readonly string[] | null;
41
+ level: number;
42
+ exclude?: readonly string[];
43
+ } | {
44
+ op: 'mesh';
45
+ slices: readonly SliceOutlines[];
46
+ options?: ReconstructOptions;
47
+ } | {
48
+ op: 'export';
49
+ handle: number;
50
+ exclude: readonly string[];
51
+ extra: readonly object[];
52
+ } | {
53
+ op: 'close';
54
+ handle: number;
55
+ };
56
+ export interface RegionSourceResults {
57
+ open: {
58
+ handle: number;
59
+ info: RegionSourceInfo;
60
+ };
61
+ tile: RegionTile;
62
+ features: SourceFeature[];
63
+ index: RegionIndexPage;
64
+ classes: Record<string, number>;
65
+ outlines: ClassOutlines[];
66
+ mesh: Mesh;
67
+ export: string;
68
+ close: null;
69
+ }
70
+ export type RegionSourceMessage = RegionSourceRequest & {
71
+ id: number;
72
+ };
73
+ export type RegionSourceReply = {
74
+ id: number;
75
+ ok: true;
76
+ result: unknown;
77
+ } | {
78
+ id: number;
79
+ ok: false;
80
+ error: string;
81
+ };
82
+ /** The open tables, by handle. */
83
+ export declare class RegionSourceTables {
84
+ private readonly tables;
85
+ private nextHandle;
86
+ run<R extends RegionSourceRequest>(request: R): RegionSourceResults[R['op']];
87
+ private dispatch;
88
+ private table;
89
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Factory for the region-source Web Worker, isolated in its own module so the `import.meta.url`
3
+ * reference — which the bundler needs in order to locate the worker — is never pulled into the
4
+ * ts-jest CommonJS compile of anything that uses it. Same arrangement as
5
+ * `workers/spatial-math-worker.ts`.
6
+ */
7
+ export declare function createRegionSourceWorker(): Worker;
@@ -0,0 +1,82 @@
1
+ /**
2
+ * A tiled region source: one image's large region set, served as level-of-detail tiles so a view
3
+ * never holds or draws the whole set (see `region-tiles` for the levels and tiles).
4
+ *
5
+ * Two implementations behind {@link RegionSource}: a GeoJSON source parsed and tiled in a Web
6
+ * Worker (`openGeoJsonRegionSource`, the main thread only ever sees tiles), and an HTTP source
7
+ * for a server that serves the same tiles (`openHttpRegionSource`).
8
+ */
9
+ import type { ClassOutlines, GeoJsonFeatureLike, RegionIndexPage, RegionIndexQuery, RegionSourceInfo, RegionTile, RegionTileKey, TileFeature } from './region-tiles';
10
+ import type { RegionStyle } from '../region-overlay/region-style';
11
+ /** A feature's exact GeoJSON with the source's id for it. */
12
+ export interface SourceFeature {
13
+ id: string;
14
+ feature: GeoJsonFeatureLike;
15
+ }
16
+ /** One image's tiled region set. */
17
+ export interface RegionSource {
18
+ /** What the source holds; known once it is open. */
19
+ readonly info: RegionSourceInfo;
20
+ /** One tile of plane `z`. Cached: asking again for a tile in view costs nothing. */
21
+ getTile(z: number, key: RegionTileKey, signal?: AbortSignal): Promise<RegionTile>;
22
+ /** The exact features with these ids (unknown ids are skipped). */
23
+ getFeatures(ids: readonly string[]): Promise<SourceFeature[]>;
24
+ /** A page of plane `z`'s feature index. */
25
+ getIndex(z: number, query: RegionIndexQuery): Promise<RegionIndexPage>;
26
+ /**
27
+ * Every plane's outlines of the features of these classes, simplified for `level`, without the
28
+ * `exclude`d ids: what a 3D reconstruction of the classes stacks. `classes` null reads every
29
+ * class, each outline labelled with its own (what a section through the stack draws).
30
+ */
31
+ getClassOutlines(classes: readonly string[] | null, level: number, exclude?: readonly string[]): Promise<ClassOutlines[]>;
32
+ /**
33
+ * How many features of each class plane `z` has (null: every plane, the whole stack), without
34
+ * the `exclude`d ids.
35
+ */
36
+ getClassCounts(z: number | null, exclude?: readonly string[]): Promise<Record<string, number>>;
37
+ /**
38
+ * The whole set as a GeoJSON FeatureCollection string, through the working set: `exclude`d
39
+ * features (taken for editing, or deleted) left out, `extra` features appended.
40
+ */
41
+ exportGeoJson(exclude: readonly string[], extra: readonly object[]): Promise<string>;
42
+ /** Release the source (its worker table, its cache). */
43
+ dispose(): void;
44
+ }
45
+ /** What the store shows of the current slice's region source: what a source layer draws. */
46
+ export interface RegionSourceView {
47
+ source: RegionSource;
48
+ /** The source plane the slice shows. */
49
+ plane: number;
50
+ /** Ids the source no longer draws: taken into the working set, or deleted. */
51
+ taken: ReadonlySet<string>;
52
+ /** The colour a feature is drawn in (its class colour, as a region of that class gets). */
53
+ colorOf(feature: Pick<TileFeature, 'label' | 'color'>): string;
54
+ /** The region look, the regions' own (so a feature looks the same once taken). */
55
+ style: RegionStyle;
56
+ /** Whether class labels are shown. */
57
+ labels: boolean;
58
+ /** Whether a class's features are hidden (see `RegionStore.setClassesHidden`); default: none is. */
59
+ isHidden?(label: string | null | undefined): boolean;
60
+ }
61
+ /**
62
+ * ROI GeoJSON at least this many characters long loads as a tiled region source rather than as
63
+ * regions (see `VizConfig.regionSourceMinChars`).
64
+ */
65
+ export declare const REGION_SOURCE_MIN_CHARS = 1000000;
66
+ /** Tiles a source keeps, most recently used last. */
67
+ export declare const REGION_TILE_CACHE_SIZE = 384;
68
+ /** A least-recently-used cache of tile requests. A request that fails is forgotten. */
69
+ export declare class RegionTileCache {
70
+ private readonly limit;
71
+ private readonly tiles;
72
+ constructor(limit?: number);
73
+ /** The cached tile, else `load()`'s, cached. */
74
+ get(z: number, key: RegionTileKey, load: () => Promise<RegionTile>): Promise<RegionTile>;
75
+ clear(): void;
76
+ }
77
+ /** An `AbortError`, as `fetch` and the workers reject with. */
78
+ export declare function abortError(): Error;
79
+ /** True for the rejection of an aborted request. */
80
+ export declare function isAbortError(err: unknown): boolean;
81
+ /** `promise`, rejected with an `AbortError` as soon as `signal` fires (the work goes on). */
82
+ export declare function abortable<T>(promise: Promise<T>, signal?: AbortSignal): Promise<T>;
@@ -0,0 +1,289 @@
1
+ /** An axis-aligned box `[x0, y0, x1, y1]` in image pixels. */
2
+ export type Bbox = [number, number, number, number];
3
+ /** Edge of a level-0 tile, in image pixels. */
4
+ export declare const REGION_TILE_SIZE = 512;
5
+ /**
6
+ * One class of a class hierarchy (e.g. a brain-atlas ontology): the class name the features use,
7
+ * its long name, its parent class and its colour. A region set may carry one (a GeoJSON
8
+ * FeatureCollection's `classHierarchy` member); the Region Editor then lists the set as a tree.
9
+ */
10
+ export interface RegionClassNode {
11
+ /** The class name, as features use it (`classification.name`): an atlas acronym, say. */
12
+ name: string;
13
+ /** The long name, e.g. "Somatomotor areas, Layer 5". */
14
+ title?: string;
15
+ /** The parent class's name; absent for a root. */
16
+ parent?: string | null;
17
+ /** `#rrggbb`. */
18
+ color?: string;
19
+ /** Position among its siblings (an atlas's graph order); file order without one. */
20
+ order?: number;
21
+ }
22
+ /**
23
+ * How a region set wants to be drawn, a hint the viewer applies when the set opens (a GeoJSON
24
+ * FeatureCollection's `style` member): an atlas fills its structures and labels them.
25
+ */
26
+ export interface RegionSourceStyle {
27
+ /** Fill regions in their colour at this opacity (0 = outlines only). */
28
+ fillOpacity?: number;
29
+ /** Outline colour when filled (default: the region's colour). */
30
+ stroke?: string;
31
+ /** Outline width in screen px. */
32
+ strokeWidth?: number;
33
+ /** Show class labels inside the regions. */
34
+ labels?: boolean;
35
+ /** Fill colour of selected regions. */
36
+ highlight?: string;
37
+ }
38
+ /** What a region source holds, known once it is open. */
39
+ export interface RegionSourceInfo {
40
+ /** Features in the source, over every plane. */
41
+ featureCount: number;
42
+ /** The box around every feature's geometry; null when none has any. */
43
+ bounds: Bbox | null;
44
+ /** Edge of a level-0 tile, in image pixels. */
45
+ tileSize: number;
46
+ /** Number of levels; the last one's tiles cover {@link bounds} in a few tiles. */
47
+ levels: number;
48
+ /** The z planes features are on (QuPath's `geometry.plane.z`, 0 without one), ascending. */
49
+ planes: number[];
50
+ /** The colour the file gives each class (its first feature's), by class name. */
51
+ classColors: Record<string, string>;
52
+ /** The set's class hierarchy, when it has one. */
53
+ hierarchy?: RegionClassNode[];
54
+ /** How the set wants to be drawn, when it says. */
55
+ style?: RegionSourceStyle;
56
+ }
57
+ /** One feature as a tile carries it: identity, class and outline at the tile's level. */
58
+ export interface TileFeature {
59
+ id: string;
60
+ /** The class name. */
61
+ label: string | null;
62
+ /** The feature's own colour (`#rrggbb`), from its classification. */
63
+ color: string | null;
64
+ /** The box around the exact geometry. */
65
+ bbox: Bbox;
66
+ /** Rings as interleaved `x, y` (no repeated closing vertex): exteriors and holes of every
67
+ * part, drawn and hit-tested even-odd. For an open feature, its polylines. */
68
+ rings: Float32Array[];
69
+ /** A polyline (LineString) rather than an area. */
70
+ open: boolean;
71
+ /**
72
+ * Where to label the feature, per part big enough: `x, y, room` triples, `room` the distance
73
+ * from the point to the part's nearest edge (image px), so a label shows once it fits.
74
+ */
75
+ labels?: Float32Array;
76
+ }
77
+ /**
78
+ * A class's outlines on one plane: rings as interleaved `x, y` image px (holes included), and its
79
+ * open features' polylines, likewise (absent from a server that predates them). Read for every
80
+ * class at once, each ring's and line's class comes with it (`ringLabels`, `lineLabels`).
81
+ */
82
+ export interface ClassOutlines {
83
+ z: number;
84
+ rings: Float32Array[];
85
+ /**
86
+ * The feature each ring is part of (see SliceOutlines.ringGroups): a feature's rings fill
87
+ * even-odd, the features as their union. Absent from a server that predates them.
88
+ */
89
+ ringGroups?: number[];
90
+ lines?: Float32Array[];
91
+ ringLabels?: string[];
92
+ lineLabels?: string[];
93
+ }
94
+ /** One tile of one level of one plane. */
95
+ export interface RegionTile {
96
+ z: number;
97
+ level: number;
98
+ gx: number;
99
+ gy: number;
100
+ features: TileFeature[];
101
+ }
102
+ /** A tile's address. */
103
+ export interface RegionTileKey {
104
+ level: number;
105
+ gx: number;
106
+ gy: number;
107
+ }
108
+ /** One row of a source's feature index (the Region Editor's table). */
109
+ export interface RegionIndexRow {
110
+ id: string;
111
+ label: string | null;
112
+ color: string | null;
113
+ bbox: Bbox;
114
+ /** The area inside the exact outline (holes left out), image px²; 0 for a polyline. Absent from a
115
+ * server that predates it. */
116
+ area?: number;
117
+ }
118
+ /** A page of a plane's feature index. */
119
+ export interface RegionIndexPage {
120
+ /** Rows matching the query, over the whole plane. */
121
+ total: number;
122
+ rows: RegionIndexRow[];
123
+ }
124
+ /** Which rows a page of the index holds. */
125
+ export interface RegionIndexQuery {
126
+ offset: number;
127
+ limit: number;
128
+ /** Only rows whose class name contains this (case-insensitive). */
129
+ label?: string;
130
+ /** Leave these ids out (taken into the working set, or deleted). */
131
+ exclude?: readonly string[];
132
+ /** Only rows of exactly these classes. */
133
+ classes?: readonly string[];
134
+ }
135
+ /** The parts of a GeoJSON feature the tiler reads. Parsed from a file: nothing is guaranteed. */
136
+ export interface GeoJsonFeatureLike {
137
+ type?: string;
138
+ id?: string | number;
139
+ geometry?: {
140
+ type?: string;
141
+ coordinates?: unknown;
142
+ plane?: {
143
+ z?: number;
144
+ };
145
+ } | null;
146
+ properties?: {
147
+ id?: string | number;
148
+ classification?: unknown;
149
+ } & Record<string, unknown>;
150
+ }
151
+ /**
152
+ * The level whose tiles suit a zoom of `pxPerImagePx` screen pixels per image pixel: exact (0)
153
+ * at 1:1 and closer, else level k for zooms in [2⁻ᵏ, 2¹⁻ᵏ), where its tolerance is half to one
154
+ * screen pixel and the features it leaves out are under one or two.
155
+ */
156
+ export declare function regionLevelFor(pxPerImagePx: number, levels: number): number;
157
+ /** Simplification tolerance of a level, in image pixels (0 = exact). */
158
+ export declare function levelTolerance(level: number): number;
159
+ /** Features smaller than this (their box's longer side, image pixels) are left out of a level. */
160
+ export declare function levelMinExtent(level: number): number;
161
+ /** Tile edge of a level, in image pixels. */
162
+ export declare function levelTileSize(level: number, tileSize?: number): number;
163
+ /**
164
+ * Tiles of `level` that meet `rect`, clipped to `bounds` (none past the data), ordered from the
165
+ * rectangle's centre outward so the middle of the screen fills first. At most `limit`.
166
+ */
167
+ export declare function regionTilesInRect(rect: Bbox, level: number, tileSize: number, bounds: Bbox | null, limit?: number): RegionTileKey[];
168
+ /** `level/gx/gy`, a tile's id within one plane. */
169
+ export declare function regionTileId(k: RegionTileKey): string;
170
+ /** The tile of `level` holding image point (x, y). */
171
+ export declare function tileAt(x: number, y: number, level: number, tileSize?: number): RegionTileKey;
172
+ /** True when two boxes meet (edges included). */
173
+ export declare function bboxesMeet(a: Readonly<Bbox>, b: Readonly<Bbox>): boolean;
174
+ /**
175
+ * The feature under image point (x, y): inside an area (even-odd over its rings, so holes are
176
+ * outside) or within `tolerance` image pixels of a polyline. Of several, the one with the
177
+ * smallest box — the innermost of nested outlines. Null when none is.
178
+ */
179
+ export declare function featureAt(features: Iterable<TileFeature>, x: number, y: number, tolerance?: number): TileFeature | null;
180
+ /** Features whose box meets `rect` (the rubber band's rule for regions). */
181
+ export declare function featuresInRect(features: Iterable<TileFeature>, rect: Readonly<Bbox>): TileFeature[];
182
+ /** Even-odd containment over interleaved rings. */
183
+ export declare function insideRings(rings: readonly ArrayLike<number>[], x: number, y: number): boolean;
184
+ /** Douglas–Peucker over an open polyline (both ends kept). */
185
+ export declare function simplifyPolyline(xs: number[], ys: number[], epsilon: number): {
186
+ xs: number[];
187
+ ys: number[];
188
+ };
189
+ /**
190
+ * Rings simplified for a level: every ring through Douglas–Peucker at the level's tolerance,
191
+ * rings whose box is under the level's minimum extent dropped, and rings left with too few
192
+ * vertices to draw (3 for a closed ring, 2 for a polyline) dropped. Level 0 returns the rings
193
+ * as they are.
194
+ */
195
+ export declare function simplifyRings(rings: readonly Float64Array[], open: boolean, level: number): Float32Array[];
196
+ /**
197
+ * A parsed GeoJSON region set, indexed for tiles. Holds the raw features (for the exact
198
+ * geometry and the export), each feature's rings, box, plane and class, and builds a level's
199
+ * tile buckets the first time that level of a plane is asked for.
200
+ */
201
+ export declare class RegionFeatureTable {
202
+ readonly raw: GeoJsonFeatureLike[];
203
+ readonly tileSize: number;
204
+ readonly ids: string[];
205
+ readonly labels: Array<string | null>;
206
+ readonly colors: Array<string | null>;
207
+ readonly planes: number[];
208
+ readonly boxes: Bbox[];
209
+ readonly rings: Float64Array[][];
210
+ readonly open: boolean[];
211
+ /** Per feature, its parts as ring indices (the exterior first, then its holes). */
212
+ readonly parts: number[][][];
213
+ private readonly labelPoints;
214
+ /** Each feature's area, worked out the first time its row is asked for. */
215
+ private readonly areas;
216
+ private hierarchy?;
217
+ private style?;
218
+ private readonly byId;
219
+ private readonly buckets;
220
+ private readonly simplified;
221
+ private readonly bounds;
222
+ private readonly levels;
223
+ constructor(raw: GeoJsonFeatureLike[], tileSize?: number);
224
+ /** Parse a GeoJSON FeatureCollection string. Throws on invalid JSON or no `features`. */
225
+ static fromGeoJson(text: string, tileSize?: number): RegionFeatureTable;
226
+ /** Attach a class hierarchy and a style hint (each ignored when not well formed). */
227
+ describe(hierarchy?: unknown, style?: unknown): void;
228
+ /**
229
+ * The outlines of every feature of these classes, plane by plane, simplified for `level` (what a
230
+ * 3D reconstruction of the classes stacks), without the `exclude`d ids: closed features' rings,
231
+ * open features' polylines as `lines`, each ring with its feature (`ringGroups`). Planes without
232
+ * one are left out. `classes` null reads every labelled feature, each outline with its class
233
+ * (`ringLabels`, `lineLabels`).
234
+ */
235
+ classOutlines(classes: readonly string[] | null, level: number, exclude?: readonly string[]): ClassOutlines[];
236
+ /** Features per class on plane `z` (null: on every plane), without the `exclude`d ids. */
237
+ classCounts(z: number | null, exclude?: readonly string[]): Record<string, number>;
238
+ info(): RegionSourceInfo;
239
+ /** One tile of plane `z`. */
240
+ tile(z: number, level: number, gx: number, gy: number): RegionTile;
241
+ /** The raw GeoJSON features with these ids, in the order asked (unknown ids skipped). */
242
+ features(ids: readonly string[]): Array<{
243
+ id: string;
244
+ feature: GeoJsonFeatureLike;
245
+ }>;
246
+ /** Feature `i`'s area in px² (0 for a polyline). */
247
+ private areaOf;
248
+ /** A page of plane `z`'s features, in file order. */
249
+ index(z: number, query: RegionIndexQuery): RegionIndexPage;
250
+ /**
251
+ * The source as a GeoJSON FeatureCollection string, through the working set: features whose
252
+ * id is in `exclude` (taken for editing, or deleted) are left out, `extra` (the working set's
253
+ * features) appended. Every feature keeps an `id`; the set keeps its hierarchy and style.
254
+ */
255
+ exportGeoJson(exclude: readonly string[], extra: readonly object[]): string;
256
+ /**
257
+ * Feature `i`'s label points (one per part with room for a label at `level`: a part under the
258
+ * level's minimum extent is not drawn there), from the exact geometry, computed once.
259
+ */
260
+ private labelsAt;
261
+ /** Feature `i`'s rings at `level`, simplified once and cached. */
262
+ private ringsAt;
263
+ /** Entries in plane `z`'s level-`level` index: cell listings plus wide features (tests). */
264
+ indexEntries(z: number, level: number): number;
265
+ /**
266
+ * Plane `z`'s level-`level` index, built on first use: features by tile cell (`gx/gy` → feature
267
+ * indices), and the wide ones (more than {@link MAX_CELLS_PER_FEATURE} cells, or past the
268
+ * number range), tested against a tile when it is asked for.
269
+ */
270
+ private bucketsFor;
271
+ }
272
+ /**
273
+ * A feature spanning more tiles than this is not listed in each of them but kept aside and tested
274
+ * against a tile when one is asked for: one huge box (an outline around a whole slide, or a corrupt
275
+ * coordinate) must not make a plane's index millions of entries.
276
+ */
277
+ export declare const MAX_CELLS_PER_FEATURE = 64;
278
+ /** A feature's own id (`id`, else `properties.id`) as a string. */
279
+ export declare function featureIdOf(feature: GeoJsonFeatureLike): string | undefined;
280
+ /**
281
+ * A FeatureCollection string of `features` (each a feature's JSON), with the set's class hierarchy
282
+ * and style as its `classHierarchy` and `style` members when it has them: what
283
+ * {@link RegionFeatureTable.fromGeoJson} reads back.
284
+ */
285
+ export declare function featureCollectionJson(features: readonly string[], hierarchy?: readonly RegionClassNode[], style?: RegionSourceStyle): string;
286
+ /** A well-formed class hierarchy from a file (colours as `#rrggbb` or `[r, g, b]`), else undefined. */
287
+ export declare function readHierarchy(raw: unknown): RegionClassNode[] | undefined;
288
+ /** A well-formed style hint from a file, else undefined. */
289
+ export declare function readStyle(raw: unknown): RegionSourceStyle | undefined;