@idetik/core 0.35.4 → 0.36.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 (48) hide show
  1. package/dist/index.d.ts +67 -68
  2. package/dist/index.js +127 -110
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.umd.cjs +16 -16
  5. package/dist/index.umd.cjs.map +1 -1
  6. package/dist/types/src/core/event_dispatcher.d.ts +1 -0
  7. package/dist/types/src/core/event_dispatcher.d.ts.map +1 -1
  8. package/dist/types/src/core/image_source_policy.d.ts +5 -5
  9. package/dist/types/src/core/image_source_policy.d.ts.map +1 -1
  10. package/dist/types/src/core/layer.d.ts +5 -7
  11. package/dist/types/src/core/layer.d.ts.map +1 -1
  12. package/dist/types/src/core/renderer.d.ts +2 -1
  13. package/dist/types/src/core/renderer.d.ts.map +1 -1
  14. package/dist/types/src/core/viewport.d.ts +4 -4
  15. package/dist/types/src/core/viewport.d.ts.map +1 -1
  16. package/dist/types/src/idetik.d.ts +5 -5
  17. package/dist/types/src/idetik.d.ts.map +1 -1
  18. package/dist/types/src/index.d.ts +3 -4
  19. package/dist/types/src/index.d.ts.map +1 -1
  20. package/dist/types/src/layers/image_layer.d.ts +4 -3
  21. package/dist/types/src/layers/image_layer.d.ts.map +1 -1
  22. package/dist/types/src/layers/label_layer.d.ts +3 -4
  23. package/dist/types/src/layers/label_layer.d.ts.map +1 -1
  24. package/dist/types/src/layers/volume_layer.d.ts +3 -2
  25. package/dist/types/src/layers/volume_layer.d.ts.map +1 -1
  26. package/dist/types/src/objects/cameras/orbit_controls.d.ts +2 -2
  27. package/dist/types/src/objects/cameras/orbit_controls.d.ts.map +1 -1
  28. package/dist/types/src/objects/cameras/orthographic_camera.d.ts +2 -2
  29. package/dist/types/src/objects/cameras/orthographic_camera.d.ts.map +1 -1
  30. package/dist/types/src/objects/cameras/perspective_camera.d.ts +2 -2
  31. package/dist/types/src/objects/cameras/perspective_camera.d.ts.map +1 -1
  32. package/dist/types/src/objects/renderable/label_image_renderable.d.ts +10 -1
  33. package/dist/types/src/objects/renderable/label_image_renderable.d.ts.map +1 -1
  34. package/dist/types/src/objects/renderable/{points.d.ts → points_renderable.d.ts} +4 -4
  35. package/dist/types/src/objects/renderable/points_renderable.d.ts.map +1 -0
  36. package/dist/types/src/objects/renderable/{projected_line.d.ts → projected_line_renderable.d.ts} +4 -4
  37. package/dist/types/src/objects/renderable/projected_line_renderable.d.ts.map +1 -0
  38. package/dist/types/src/renderers/webgl_renderer.d.ts +4 -1
  39. package/dist/types/src/renderers/webgl_renderer.d.ts.map +1 -1
  40. package/dist/types/src/renderers/webgl_state.d.ts +4 -0
  41. package/dist/types/src/renderers/webgl_state.d.ts.map +1 -1
  42. package/dist/types/test/event_dispatcher.test.d.ts +2 -0
  43. package/dist/types/test/event_dispatcher.test.d.ts.map +1 -0
  44. package/package.json +1 -1
  45. package/dist/types/src/objects/renderable/label_color_map.d.ts +0 -11
  46. package/dist/types/src/objects/renderable/label_color_map.d.ts.map +0 -1
  47. package/dist/types/src/objects/renderable/points.d.ts.map +0 -1
  48. package/dist/types/src/objects/renderable/projected_line.d.ts.map +0 -1
package/dist/index.d.ts CHANGED
@@ -124,7 +124,7 @@ type ChunkLoader = {
124
124
 
125
125
  declare const ALL_CATEGORIES: readonly ["fallbackVisible", "prefetchTime", "visibleCurrent", "fallbackBackground", "prefetchSpace"];
126
126
  type PriorityCategory = (typeof ALL_CATEGORIES)[number];
127
- type ImageSourcePolicyConfig = {
127
+ type ImageSourcePolicyProps = {
128
128
  profile?: string;
129
129
  prefetch: {
130
130
  x: number;
@@ -156,13 +156,13 @@ type ImageSourcePolicy = Readonly<{
156
156
  };
157
157
  }>;
158
158
  /** @group Layer Configuration */
159
- declare function createImageSourcePolicy(config: ImageSourcePolicyConfig): ImageSourcePolicy;
159
+ declare function createImageSourcePolicy(config: ImageSourcePolicyProps): ImageSourcePolicy;
160
160
  /** @group Layer Configuration */
161
- declare function createExplorationPolicy(overrides?: Partial<ImageSourcePolicyConfig>): ImageSourcePolicy;
161
+ declare function createExplorationPolicy(overrides?: Partial<ImageSourcePolicyProps>): ImageSourcePolicy;
162
162
  /** @group Layer Configuration */
163
- declare function createPlaybackPolicy(overrides?: Partial<ImageSourcePolicyConfig>): ImageSourcePolicy;
163
+ declare function createPlaybackPolicy(overrides?: Partial<ImageSourcePolicyProps>): ImageSourcePolicy;
164
164
  /** @group Layer Configuration */
165
- declare function createNoPrefetchPolicy(overrides?: Partial<ImageSourcePolicyConfig>): ImageSourcePolicy;
165
+ declare function createNoPrefetchPolicy(overrides?: Partial<ImageSourcePolicyProps>): ImageSourcePolicy;
166
166
 
167
167
  declare class ChunkStore {
168
168
  private readonly chunks_;
@@ -494,12 +494,13 @@ declare class EventDispatcher {
494
494
  private isConnected_;
495
495
  constructor(element: HTMLElement);
496
496
  addEventListener(listener: Listener): void;
497
+ removeEventListener(listener: Listener): void;
497
498
  connect(): void;
498
499
  disconnect(): void;
499
500
  private readonly handleEvent;
500
501
  }
501
502
 
502
- type OrthographicCameraOptions = {
503
+ type OrthographicCameraProps = {
503
504
  near?: number;
504
505
  far?: number;
505
506
  orientation?: SliceOrientation;
@@ -535,7 +536,7 @@ declare class OrthographicCamera extends Camera {
535
536
  * @param options - Near/far clipping plane distances (default `-1e6` and
536
537
  * `1e6`) and the slice orientation the camera faces (default `"XY"`).
537
538
  */
538
- constructor(left: number, right: number, top: number, bottom: number, options?: OrthographicCameraOptions);
539
+ constructor(left: number, right: number, top: number, bottom: number, options?: OrthographicCameraProps);
539
540
  get viewportSize(): [number, number];
540
541
  setAspectRatio(aspectRatio: number): void;
541
542
  setFrame(left: number, right: number, bottom: number, top: number): void;
@@ -572,14 +573,14 @@ declare class PanZoomControls implements CameraControls {
572
573
  private onPointerEnd;
573
574
  }
574
575
 
575
- interface ViewportConfig {
576
+ interface ViewportProps {
576
577
  id?: string;
577
578
  element?: HTMLElement;
578
579
  camera: Camera;
579
580
  layers?: Layer[];
580
581
  cameraControls?: CameraControls;
581
582
  }
582
- interface ViewportProps extends ViewportConfig {
583
+ interface ResolvedViewportProps extends ViewportProps {
583
584
  id: string;
584
585
  element: HTMLElement;
585
586
  context: IdetikContext;
@@ -592,7 +593,7 @@ declare class Viewport {
592
593
  cameraControls?: CameraControls;
593
594
  private readonly context_;
594
595
  private layers_;
595
- constructor(props: ViewportProps);
596
+ constructor(props: ResolvedViewportProps);
596
597
  get layers(): readonly Layer[];
597
598
  addLayer(layer: Layer): void;
598
599
  removeLayer(layer: Layer): void;
@@ -615,7 +616,7 @@ declare class Viewport {
615
616
  type LayerState = "initialized" | "loading" | "ready";
616
617
  type BlendMode = "none" | "normal" | "additive" | "subtractive" | "multiply" | "premultiplied";
617
618
  type StateChangeCallback = (newState: LayerState, prevState?: LayerState) => void;
618
- interface LayerOptions {
619
+ interface LayerProps {
619
620
  opacity?: number;
620
621
  blendMode?: BlendMode;
621
622
  }
@@ -637,13 +638,13 @@ interface LayerOptions {
637
638
  */
638
639
  declare abstract class Layer {
639
640
  abstract readonly type: string;
640
- private objects_;
641
+ private readonly coverageGroups_;
641
642
  private state_;
642
643
  private attached_;
643
644
  private readonly callbacks_;
644
645
  private opacity_;
645
646
  blendMode: BlendMode;
646
- constructor({ opacity, blendMode }?: LayerOptions);
647
+ constructor({ opacity, blendMode }?: LayerProps);
647
648
  get opacity(): number;
648
649
  set opacity(value: number);
649
650
  abstract update(viewport?: Viewport): void;
@@ -652,14 +653,12 @@ declare abstract class Layer {
652
653
  onDetached(context: IdetikContext): void;
653
654
  protected attach(_context: IdetikContext): void;
654
655
  protected detach(_context: IdetikContext): void;
655
- get objects(): RenderableObject[];
656
+ get coverageGroups(): ReadonlyMap<number | null, readonly RenderableObject[]>;
656
657
  get state(): LayerState;
657
658
  addStateChangeCallback(callback: StateChangeCallback): void;
658
659
  removeStateChangeCallback(callback: StateChangeCallback): void;
659
- hasMultipleLODs(): boolean;
660
660
  protected setState(newState: LayerState): void;
661
- protected addObject(object: RenderableObject): void;
662
- protected removeObject(object: RenderableObject): void;
661
+ protected addObject(object: RenderableObject, coverageGroup?: number | null): void;
663
662
  protected clearObjects(): void;
664
663
  /**
665
664
  * Get uniforms for shader program. Override in derived classes that need custom uniforms.
@@ -674,7 +673,7 @@ declare abstract class Renderer {
674
673
  private height_;
675
674
  protected renderedObjects_: number;
676
675
  protected abstract resize(width: number, height: number): void;
677
- protected abstract renderObject(layer: Layer, objectIndex: number, camera: Camera): void;
676
+ protected abstract renderObject(layer: Layer, object: RenderableObject, camera: Camera): void;
678
677
  protected abstract clear(): void;
679
678
  constructor(canvas: HTMLCanvasElement);
680
679
  beginFrame(): void;
@@ -696,9 +695,9 @@ type Overlay = {
696
695
  update(idetik: Idetik): void;
697
696
  };
698
697
  /** @inline */
699
- type IdetikParams = {
698
+ type IdetikProps = {
700
699
  canvas: HTMLCanvasElement;
701
- viewports?: ViewportConfig[];
700
+ viewports?: ViewportProps[];
702
701
  overlays?: Overlay[];
703
702
  showStats?: boolean;
704
703
  memoryLimitMB?: number;
@@ -787,7 +786,7 @@ declare class Idetik {
787
786
  *
788
787
  * @throws {Error} If viewports have duplicate IDs or shared elements
789
788
  */
790
- constructor(params: IdetikParams, renderer?: Renderer);
789
+ constructor(params: IdetikProps, renderer?: Renderer);
791
790
  get chunkQueueStats(): QueueStats;
792
791
  get memoryStats(): MemoryStats;
793
792
  get renderedObjects(): number;
@@ -796,7 +795,7 @@ declare class Idetik {
796
795
  get viewports(): readonly Viewport[];
797
796
  get running(): boolean;
798
797
  getViewport(id: string): Viewport | undefined;
799
- addViewport(config: ViewportConfig): Viewport;
798
+ addViewport(props: ViewportProps): Viewport;
800
799
  removeViewport(viewport: Viewport): boolean;
801
800
  addOverlay(overlay: Overlay): void;
802
801
  removeOverlay(overlay: Overlay): boolean;
@@ -1495,7 +1494,7 @@ interface PointPickingResult {
1495
1494
  }
1496
1495
 
1497
1496
  /** @inline */
1498
- type ImageLayerProps = LayerOptions & {
1497
+ type ImageLayerProps = LayerProps & {
1499
1498
  source: ChunkSource;
1500
1499
  sliceCoords: SliceCoordinates;
1501
1500
  policy: ImageSourcePolicy;
@@ -1526,6 +1525,7 @@ declare class ImageLayer extends Layer implements ChannelsEnabled {
1526
1525
  private orientation_;
1527
1526
  private readonly onPickValue_?;
1528
1527
  private readonly visibleChunks_;
1528
+ private orderedChunks_;
1529
1529
  private readonly pool_;
1530
1530
  private readonly initialChannelProps_?;
1531
1531
  private readonly channelChangeCallbacks_;
@@ -1550,7 +1550,7 @@ declare class ImageLayer extends Layer implements ChannelsEnabled {
1550
1550
  */
1551
1551
  setOrientation(orientation: SliceOrientation): void;
1552
1552
  private updateChunks;
1553
- hasMultipleLODs(): boolean;
1553
+ private rebuildRenderGroups;
1554
1554
  get lastPresentationTimeCoord(): number | undefined;
1555
1555
  private isPresentationStale;
1556
1556
  onEvent(event: EventContext): void;
@@ -1594,7 +1594,7 @@ declare class VolumeLayer extends Layer implements ChannelsEnabled {
1594
1594
  private readonly pool_;
1595
1595
  private readonly initialChannelProps_?;
1596
1596
  private readonly channelChangeCallbacks_;
1597
- private sourcePolicy_;
1597
+ private policy_;
1598
1598
  private chunkStoreView_?;
1599
1599
  private channelProps_?;
1600
1600
  private lastLoadedTime_;
@@ -1607,7 +1607,7 @@ declare class VolumeLayer extends Layer implements ChannelsEnabled {
1607
1607
  earlyTerminationAlpha: number;
1608
1608
  get debugShowWireframes(): boolean;
1609
1609
  set debugShowWireframes(value: boolean);
1610
- set sourcePolicy(newPolicy: ImageSourcePolicy);
1610
+ set imageSourcePolicy(newPolicy: ImageSourcePolicy);
1611
1611
  setChannelProps(channelProps: ChannelProps[]): void;
1612
1612
  get channelProps(): ChannelProps[] | undefined;
1613
1613
  resetChannelProps(): void;
@@ -1621,6 +1621,7 @@ declare class VolumeLayer extends Layer implements ChannelsEnabled {
1621
1621
  private updateVolumeTransform;
1622
1622
  private releaseAndRemoveVolume;
1623
1623
  update(viewport?: Viewport): void;
1624
+ private rebuildObjects;
1624
1625
  getUniforms(): Record<string, unknown>;
1625
1626
  }
1626
1627
 
@@ -1633,8 +1634,36 @@ declare class LabelColorMap {
1633
1634
  readonly cycle: ReadonlyArray<Color>;
1634
1635
  constructor(props?: LabelColorMapProps);
1635
1636
  }
1637
+ type LabelImageRenderableProps = {
1638
+ width: number;
1639
+ height: number;
1640
+ imageData: Texture;
1641
+ colorMap: LabelColorMap;
1642
+ outlineSelected?: boolean;
1643
+ selectedValue?: number | null;
1644
+ };
1645
+ /** @group Renderable Objects */
1646
+ declare class LabelImageRenderable extends RenderableObject {
1647
+ private outlineSelected_;
1648
+ private selectedValue_;
1649
+ worldToTexCoord: mat4;
1650
+ constructor(props: LabelImageRenderableProps);
1651
+ get type(): string;
1652
+ getUniforms(): {
1653
+ u_imageSampler: number;
1654
+ u_colorCycleSampler: number;
1655
+ u_colorLookupTableSampler: number;
1656
+ u_outlineSelected: number;
1657
+ u_selectedValue: number;
1658
+ u_worldToTexCoord: mat4;
1659
+ };
1660
+ setColorMap(colorMap: LabelColorMap): void;
1661
+ setSelectedValue(value: number | null): void;
1662
+ private makeColorCycleTexture;
1663
+ private makeColorLookupTableTexture;
1664
+ }
1636
1665
 
1637
- type LabelLayerProps = LayerOptions & {
1666
+ type LabelLayerProps = LayerProps & {
1638
1667
  source: ChunkSource;
1639
1668
  sliceCoords: SliceCoordinates;
1640
1669
  policy: ImageSourcePolicy;
@@ -1675,7 +1704,6 @@ declare class LabelLayer extends Layer {
1675
1704
  */
1676
1705
  setOrientation(orientation: SliceOrientation): void;
1677
1706
  private updateChunks;
1678
- hasMultipleLODs(): boolean;
1679
1707
  private isPresentationStale;
1680
1708
  onEvent(event: EventContext): void;
1681
1709
  private pickAtRay;
@@ -1717,45 +1745,16 @@ declare class ImageRenderable extends RenderableObject {
1717
1745
  getUniforms(): UniformValues;
1718
1746
  }
1719
1747
 
1720
- type LabelImageRenderableProps = {
1721
- width: number;
1722
- height: number;
1723
- imageData: Texture;
1724
- colorMap: LabelColorMap;
1725
- outlineSelected?: boolean;
1726
- selectedValue?: number | null;
1727
- };
1728
- /** @group Renderable Objects */
1729
- declare class LabelImageRenderable extends RenderableObject {
1730
- private outlineSelected_;
1731
- private selectedValue_;
1732
- worldToTexCoord: mat4;
1733
- constructor(props: LabelImageRenderableProps);
1734
- get type(): string;
1735
- getUniforms(): {
1736
- u_imageSampler: number;
1737
- u_colorCycleSampler: number;
1738
- u_colorLookupTableSampler: number;
1739
- u_outlineSelected: number;
1740
- u_selectedValue: number;
1741
- u_worldToTexCoord: mat4;
1742
- };
1743
- setColorMap(colorMap: LabelColorMap): void;
1744
- setSelectedValue(value: number | null): void;
1745
- private makeColorCycleTexture;
1746
- private makeColorLookupTableTexture;
1747
- }
1748
-
1749
1748
  type Marker = "circle" | "square" | "triangle";
1750
- type PointProperties = {
1749
+ type PointProps = {
1751
1750
  position: vec3;
1752
1751
  color: ColorLike;
1753
1752
  size: number;
1754
1753
  marker: Marker;
1755
1754
  };
1756
1755
  /** @group Renderable Objects */
1757
- declare class Points extends RenderableObject {
1758
- constructor(points: PointProperties[]);
1756
+ declare class PointsRenderable extends RenderableObject {
1757
+ constructor(points: PointProps[]);
1759
1758
  get type(): string;
1760
1759
  }
1761
1760
 
@@ -1765,16 +1764,16 @@ declare class ProjectedLineGeometry extends Geometry {
1765
1764
  private createIndex;
1766
1765
  }
1767
1766
 
1768
- type LineParameters = {
1767
+ type ProjectedLineRenderableProps = {
1769
1768
  geometry: ProjectedLineGeometry;
1770
1769
  color: ColorLike;
1771
1770
  width: number;
1772
1771
  };
1773
1772
  /** @group Renderable Objects */
1774
- declare class ProjectedLine extends RenderableObject {
1773
+ declare class ProjectedLineRenderable extends RenderableObject {
1775
1774
  private color_;
1776
1775
  private width_;
1777
- constructor({ geometry, color, width }: LineParameters);
1776
+ constructor({ geometry, color, width }: ProjectedLineRenderableProps);
1778
1777
  get type(): string;
1779
1778
  get color(): Color;
1780
1779
  set color(value: ColorLike);
@@ -1808,7 +1807,7 @@ declare class VolumeRenderable extends RenderableObject {
1808
1807
  setChannelProperty<K extends keyof ChannelProps>(channelIndex: number, property: K, value: Required<ChannelProps>[K]): void;
1809
1808
  }
1810
1809
 
1811
- type PerspectiveCameraOptions = {
1810
+ type PerspectiveCameraProps = {
1812
1811
  fov?: number;
1813
1812
  aspectRatio?: number;
1814
1813
  near?: number;
@@ -1819,7 +1818,7 @@ type PerspectiveCameraOptions = {
1819
1818
  declare class PerspectiveCamera extends Camera {
1820
1819
  private fov_;
1821
1820
  private aspectRatio_;
1822
- constructor(options?: PerspectiveCameraOptions);
1821
+ constructor(options?: PerspectiveCameraProps);
1823
1822
  setAspectRatio(aspectRatio: number): void;
1824
1823
  get type(): CameraType;
1825
1824
  get fov(): number;
@@ -1827,7 +1826,7 @@ declare class PerspectiveCamera extends Camera {
1827
1826
  protected updateProjectionMatrix(): void;
1828
1827
  }
1829
1828
 
1830
- type OrbitParams = {
1829
+ type OrbitControlsProps = {
1831
1830
  radius?: number;
1832
1831
  yaw?: number;
1833
1832
  pitch?: number;
@@ -1843,7 +1842,7 @@ declare class OrbitControls implements CameraControls {
1843
1842
  private readonly currCenter_;
1844
1843
  private readonly dampingFactor_;
1845
1844
  private currMouseButton_;
1846
- constructor(camera: PerspectiveCamera, params?: OrbitParams);
1845
+ constructor(camera: PerspectiveCamera, params?: OrbitControlsProps);
1847
1846
  get isMoving(): boolean;
1848
1847
  onEvent(event: EventContext): void;
1849
1848
  onUpdate(dt: number): void;
@@ -2067,5 +2066,5 @@ type Image = z.infer<typeof Image>;
2067
2066
  */
2068
2067
  type OmeZarrImage = Image;
2069
2068
 
2070
- export { AxesLayer, Color, Idetik, ImageLayer, ImageRenderable, LabelColorMap, LabelImageRenderable, LabelLayer, Layer, OmeZarrImageSource, OrbitControls, OrthographicCamera, PanZoomControls, PerspectiveCamera, Points, ProjectedLine, VolumeLayer, VolumeRenderable, createExplorationPolicy, createImageSourcePolicy, createNoPrefetchPolicy, createPlaybackPolicy, loadOmeZarrPlate, loadOmeZarrWell, loadOmeroChannels, loadOmeroDefaults };
2069
+ export { AxesLayer, Color, Idetik, ImageLayer, ImageRenderable, LabelColorMap, LabelImageRenderable, LabelLayer, Layer, OmeZarrImageSource, OrbitControls, OrthographicCamera, PanZoomControls, PerspectiveCamera, PointsRenderable, ProjectedLineRenderable, VolumeLayer, VolumeRenderable, createExplorationPolicy, createImageSourcePolicy, createNoPrefetchPolicy, createPlaybackPolicy, loadOmeZarrPlate, loadOmeZarrWell, loadOmeroChannels, loadOmeroDefaults };
2071
2070
  export type { ChannelProps, ColorLike, LayerState, MemoryStats, OmeZarrImage, Overlay, SliceCoordinates, SliceOrientation };