@idetik/core 0.45.4 → 0.46.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.
@@ -1,7 +1,7 @@
1
- import { IdetikContext } from "../idetik";
1
+ import type { IdetikContext } from "../idetik";
2
2
  import { RenderableObject } from "./renderable_object";
3
3
  import { EventContext } from "./event_dispatcher";
4
- import { Viewport } from "./viewport";
4
+ import type { Viewport } from "./viewport";
5
5
  /**
6
6
  * The loading lifecycle state of a layer.
7
7
  */
@@ -115,6 +115,8 @@ export declare abstract class Layer {
115
115
  * @param _event - The event with clip and world coordinates attached.
116
116
  */
117
117
  onEvent(_event: EventContext): void;
118
+ /** Whether the layer is attached to a viewport. */
119
+ get attached(): boolean;
118
120
  /**
119
121
  * Lifecycle hook that is called automatically when a layer is
120
122
  * is attached to a viewport. A layer can only be attached to one viewport
@@ -1 +1 @@
1
- {"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../../../../src/core/layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layer.d.ts","sourceRoot":"","sources":["../../../../src/core/layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { ChunkManager, QueueStats } from "../data/chunk_manager";
2
+ import { type ChunkStats } from "../data/chunk_stats";
3
+ import type { Renderer } from "./renderer";
4
+ import type { Viewport } from "./viewport";
5
+ /** A snapshot of memory used by chunks, renderer textures, and the JS heap. */
6
+ export type MemoryStats = {
7
+ /** Bytes of chunk data in CPU memory, shared across all Idetik instances. */
8
+ cpuChunkBytes: number;
9
+ /** Number of chunks in CPU memory, shared across all Idetik instances. */
10
+ cpuChunkCount: number;
11
+ /** Bytes of texture data resident on this instance's GPU renderer. */
12
+ gpuTextureBytes: number;
13
+ /** Number of textures resident on this instance's GPU renderer. */
14
+ gpuTextureCount: number;
15
+ /** Used JS heap in bytes, when the browser exposes it. Not instance-specific. */
16
+ jsHeapUsedBytes?: number;
17
+ /** JS heap size limit in bytes, when the browser exposes it. */
18
+ jsHeapLimitBytes?: number;
19
+ };
20
+ /**
21
+ * Statistics available through `idetik.stats`.
22
+ *
23
+ * Getters read the current state. Only `chunks` walks chunk states. Reading
24
+ * memory usage, queue counts, or rendered objects does not scan chunks.
25
+ *
26
+ * @group Core
27
+ */
28
+ export declare class Stats {
29
+ private readonly renderer_;
30
+ private readonly chunkManager_;
31
+ private readonly viewports_;
32
+ /** @hidden */
33
+ constructor(renderer: Renderer, chunkManager: ChunkManager, viewports: readonly Viewport[]);
34
+ /**
35
+ * CPU chunk memory shared across instances, this renderer's GPU texture
36
+ * memory, and optional JS heap figures. Heap figures are not specific to
37
+ * this instance. Sizes are in bytes.
38
+ */
39
+ get memory(): MemoryStats;
40
+ /** Counts of queued and in-flight chunk requests for this instance. */
41
+ get queue(): QueueStats;
42
+ /**
43
+ * Chunk demand and GPU residency per source, by timepoint, and loading
44
+ * progress per viewport. Each read walks every view's chunk states, so poll
45
+ * it at the rate you need rather than every frame.
46
+ */
47
+ get chunks(): ChunkStats;
48
+ /** Objects reported by the renderer for the last viewport render. */
49
+ get renderedObjects(): number;
50
+ }
51
+ //# sourceMappingURL=stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../../src/core/stats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,+EAA+E;AAC/E,MAAM,MAAM,WAAW,GAAG;IACxB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,eAAe,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,eAAe,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAEjD,cAAc;gBAEZ,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,QAAQ,EAAE;IAOhC;;;;OAIG;IACH,IAAW,MAAM,IAAI,WAAW,CAc/B;IAED,uEAAuE;IACvE,IAAW,KAAK,IAAI,UAAU,CAE7B;IAED;;;;OAIG;IACH,IAAW,MAAM,IAAI,UAAU,CAoB9B;IAED,qEAAqE;IACrE,IAAW,eAAe,IAAI,MAAM,CAEnC;CACF"}
@@ -4,15 +4,14 @@ import { CameraControls } from "../objects/cameras/controls";
4
4
  import { Box2 } from "../math/box2";
5
5
  import { vec2, vec3 } from "gl-matrix";
6
6
  import { EventDispatcher } from "./event_dispatcher";
7
- import { IdetikContext } from "../idetik";
8
7
  /**
9
8
  * Initialization properties for constructing a viewport.
10
9
  */
11
10
  export type ViewportProps = {
12
11
  /** Unique id. Defaults to the element id or a generated id. */
13
12
  id?: string;
14
- /** Host element. Defaults to the Idetik canvas. */
15
- element?: HTMLElement;
13
+ /** Host element. */
14
+ domElement: HTMLElement;
16
15
  /** The camera the viewport renders with. */
17
16
  camera: Camera;
18
17
  /** Layers to render in order. */
@@ -20,17 +19,11 @@ export type ViewportProps = {
20
19
  /** Input controls driving the camera. */
21
20
  cameraControls?: CameraControls;
22
21
  };
23
- interface ResolvedViewportProps extends ViewportProps {
24
- id: string;
25
- element: HTMLElement;
26
- context: IdetikContext;
27
- }
28
22
  /**
29
23
  * A region of the canvas that renders a stack of layers through a camera.
30
24
  *
31
25
  * Every viewport draws into the shared canvas through the area of its host
32
- * element. The element defaults to the canvas itself and must be unique
33
- * across viewports.
26
+ * element. The element must be unique across viewports.
34
27
  *
35
28
  * Viewports also route input. Pointer and wheel events on the host element
36
29
  * are enriched with clip and world coordinates and a picking ray, sent to
@@ -38,12 +31,13 @@ interface ResolvedViewportProps extends ViewportProps {
38
31
  * propagation.
39
32
  *
40
33
  * ```ts
41
- * const idetik = new Idetik({
42
- * canvas,
43
- * viewports: [{ id: 'main', camera, layers: [imageLayer] }],
34
+ * const viewport = new Viewport({
35
+ * domElement: canvas,
36
+ * camera,
37
+ * layers: [imageLayer],
44
38
  * });
39
+ * const idetik = new Idetik({ canvas, viewports: [viewport] });
45
40
  *
46
- * const viewport = idetik.getViewport('main')!;
47
41
  * viewport.addLayer(labelLayer);
48
42
  * ```
49
43
  *
@@ -53,24 +47,23 @@ export declare class Viewport {
53
47
  /** The viewport's unique identifier. */
54
48
  readonly id: string;
55
49
  /** The host element defining the viewport's area. */
56
- readonly element: HTMLElement;
50
+ readonly domElement: HTMLElement;
57
51
  /** The camera the viewport renders with. */
58
52
  readonly camera: Camera;
59
53
  /** The pointer and wheel event dispatcher for the host element. */
60
54
  readonly events: EventDispatcher;
61
55
  /** Input controls driving the camera. */
62
56
  cameraControls?: CameraControls;
63
- private readonly context_;
64
57
  private layers_;
65
- /** @hidden */
66
- constructor(props: ResolvedViewportProps);
58
+ constructor(props: ViewportProps);
67
59
  /**
68
60
  * The layers rendered by this viewport in order. Layers with `occludes`
69
61
  * set draw before non-occluding layers regardless of stack order.
70
62
  */
71
63
  get layers(): readonly Layer[];
72
64
  /**
73
- * Adds a layer to the top of the stack.
65
+ * Adds a layer to the top of the stack. Throws if the viewport already
66
+ * contains the layer.
74
67
  *
75
68
  * @param layer - The layer to add.
76
69
  */
@@ -89,14 +82,17 @@ export declare class Viewport {
89
82
  */
90
83
  updateSize(): void;
91
84
  /**
92
- * Computes the viewport's box relative to the given canvas in device pixels.
85
+ * Computes the viewport's box relative to the given element in device
86
+ * pixels, with `y` flipped to match WebGL's bottom-left origin.
93
87
  *
94
- * @param canvas - The canvas to compute the box against.
95
- * @returns The viewport's box in the canvas's coordinate space.
88
+ * @param element - The element to compute the box against, typically the
89
+ * canvas.
90
+ * @returns The viewport's box in the element's coordinate space.
96
91
  */
97
- getBoxRelativeTo(canvas: HTMLCanvasElement): Box2;
92
+ getBoxRelativeTo(element: HTMLElement): Box2;
98
93
  /**
99
- * The viewport's rectangle in the drawing buffer in device pixels.
94
+ * The viewport's size in device pixels. Measured relative to its own host
95
+ * element, so `x` and `y` are always `0`.
100
96
  */
101
97
  getBufferRect(): {
102
98
  x: number;
@@ -123,13 +119,4 @@ export declare class Viewport {
123
119
  private getBox;
124
120
  private updateAspectRatio;
125
121
  }
126
- export declare function validateNewViewport(viewport: {
127
- id: string;
128
- element: HTMLElement;
129
- }, existingViewports: {
130
- id: string;
131
- element: HTMLElement;
132
- }[]): void;
133
- export declare function parseViewportProps(props: ViewportProps[], canvas: HTMLCanvasElement, context: IdetikContext): Viewport[];
134
- export {};
135
122
  //# sourceMappingURL=viewport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../../../../src/core/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAgB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,+DAA+D;IAC/D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,yCAAyC;IACzC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF,UAAU,qBAAsB,SAAQ,aAAa;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,QAAQ;IACnB,wCAAwC;IACxC,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,SAAgB,OAAO,EAAE,WAAW,CAAC;IACrC,4CAA4C;IAC5C,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,SAAgB,MAAM,EAAE,eAAe,CAAC;IACxC,yCAAyC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAKvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IAEzC,OAAO,CAAC,OAAO,CAAe;IAE9B,cAAc;gBACF,KAAK,EAAE,qBAAqB;IAkCxC;;;OAGG;IACH,IAAW,MAAM,IAAI,SAAS,KAAK,EAAE,CAEpC;IAED;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAKnC;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAStC,4CAA4C;IACrC,eAAe,IAAI,IAAI;IAO9B;;;OAGG;IACI,UAAU,IAAI,IAAI;IAIzB;;;;;OAKG;IACI,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IA0BxD;;OAEG;IACI,aAAa,IAAI;QACtB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB;IAID;;;;;;OAMG;IACI,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAU5D;;;;;;OAMG;IACI,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAK7D,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,iBAAiB;CAY1B;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,EAC9C,iBAAiB,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,EAAE,GACxD,IAAI,CAmBN;AAQD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EAAE,EACtB,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,aAAa,GACrB,QAAQ,EAAE,CAYZ"}
1
+ {"version":3,"file":"viewport.d.ts","sourceRoot":"","sources":["../../../../src/core/viewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAgB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGnE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,+DAA+D;IAC/D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,oBAAoB;IACpB,UAAU,EAAE,WAAW,CAAC;IACxB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,yCAAyC;IACzC,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,QAAQ;IACnB,wCAAwC;IACxC,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,SAAgB,UAAU,EAAE,WAAW,CAAC;IACxC,4CAA4C;IAC5C,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,SAAgB,MAAM,EAAE,eAAe,CAAC;IACxC,yCAAyC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAEvC,OAAO,CAAC,OAAO,CAAe;gBAElB,KAAK,EAAE,aAAa;IA+BhC;;;OAGG;IACH,IAAW,MAAM,IAAI,SAAS,KAAK,EAAE,CAEpC;IAED;;;;;OAKG;IACI,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAOnC;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAQtC,4CAA4C;IACrC,eAAe,IAAI,IAAI;IAI9B;;;OAGG;IACI,UAAU,IAAI,IAAI;IAIzB;;;;;;;OAOG;IACI,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IA0BnD;;;OAGG;IACI,aAAa,IAAI;QACtB,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB;IAID;;;;;;OAMG;IACI,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAU5D;;;;;;OAMG;IACI,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAK7D,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,iBAAiB;CAY1B"}
@@ -1,6 +1,6 @@
1
1
  import { ChunkManager } from "./data/chunk_manager";
2
- import { type ChunkStats } from "./data/chunk_stats";
3
- import { Viewport, ViewportProps } from "./core/viewport";
2
+ import { Stats } from "./core/stats";
3
+ import { Viewport } from "./core/viewport";
4
4
  /**
5
5
  * An object updated once per frame after all viewports have rendered.
6
6
  *
@@ -10,7 +10,7 @@ import { Viewport, ViewportProps } from "./core/viewport";
10
10
  * ```ts
11
11
  * const chunkReadout: Overlay = {
12
12
  * update(idetik) {
13
- * div.textContent = `${idetik.memoryStats.cpuChunkCount} chunks`;
13
+ * div.textContent = `${idetik.stats.memory.cpuChunkCount} chunks`;
14
14
  * },
15
15
  * };
16
16
  *
@@ -27,8 +27,8 @@ export type Overlay = {
27
27
  export type IdetikProps = {
28
28
  /** The canvas element to render into. */
29
29
  canvas: HTMLCanvasElement;
30
- /** Viewport definitions to create at startup. */
31
- viewports?: ViewportProps[];
30
+ /** Viewports to render at startup. */
31
+ viewports?: Viewport[];
32
32
  /** Overlays to run each frame. */
33
33
  overlays?: Overlay[];
34
34
  /** Shows an FPS meter. Defaults to `false`. */
@@ -43,23 +43,6 @@ export type IdetikProps = {
43
43
  export type IdetikContext = {
44
44
  chunkManager: ChunkManager;
45
45
  };
46
- /**
47
- * A snapshot of the runtime's memory usage.
48
- */
49
- export type MemoryStats = {
50
- /** Bytes of chunk data held in CPU memory. */
51
- cpuChunkBytes: number;
52
- /** Number of chunks held in CPU memory. */
53
- cpuChunkCount: number;
54
- /** Bytes of texture data resident on the GPU. */
55
- gpuTextureBytes: number;
56
- /** Number of textures resident on the GPU. */
57
- gpuTextureCount: number;
58
- /** Used JS heap in bytes. */
59
- jsHeapUsedBytes?: number;
60
- /** JS heap size limit in bytes. */
61
- jsHeapLimitBytes?: number;
62
- };
63
46
  /**
64
47
  * The entry point of an Idetik application.
65
48
  *
@@ -84,13 +67,15 @@ export type MemoryStats = {
84
67
  * bottom: 1024,
85
68
  * });
86
69
  *
70
+ * const canvas = document.querySelector<HTMLCanvasElement>('canvas')!;
87
71
  * const idetik = new Idetik({
88
- * canvas: document.querySelector('canvas')!,
89
- * viewports: [{
72
+ * canvas,
73
+ * viewports: [new Viewport({
74
+ * domElement: canvas,
90
75
  * camera,
91
76
  * layers: [layer],
92
77
  * cameraControls: new PanZoomControls(camera),
93
- * }],
78
+ * })],
94
79
  * });
95
80
  *
96
81
  * idetik.start();
@@ -105,10 +90,13 @@ export declare class Idetik {
105
90
  readonly canvas: HTMLCanvasElement;
106
91
  /** The registered overlays that update once per frame in order. */
107
92
  readonly overlays: Overlay[];
93
+ /** Memory, queue, chunk, and rendered-object statistics. */
94
+ readonly stats: Stats;
108
95
  private readonly chunkManager_;
109
96
  private readonly context_;
110
97
  private readonly renderer_;
111
98
  private readonly viewports_;
99
+ private readonly attachments_;
112
100
  private readonly stats_?;
113
101
  private readonly sizeObserver_;
114
102
  private lastAnimationId_?;
@@ -119,18 +107,6 @@ export declare class Idetik {
119
107
  * @param params - Initialization properties.
120
108
  */
121
109
  constructor(params: IdetikProps);
122
- /** Counts of queued and in-flight chunk requests. */
123
- get chunkQueueStats(): import(".").QueueStats;
124
- /**
125
- * Chunk demand and GPU residency per source, by timepoint, and loading
126
- * progress per viewport. Each read walks every view's chunk states and returns a
127
- * new snapshot, so poll it at the rate you need rather than every frame.
128
- */
129
- get chunkStats(): ChunkStats;
130
- /** A snapshot of current CPU/GPU/JS heap memory usage. */
131
- get memoryStats(): MemoryStats;
132
- /** The number of objects drawn in the last rendered frame. */
133
- get renderedObjects(): number;
134
110
  /** The width of the rendering surface in pixels. */
135
111
  get width(): number;
136
112
  /** The height of the rendering surface in pixels. */
@@ -149,11 +125,10 @@ export declare class Idetik {
149
125
  /**
150
126
  * Adds a viewport at runtime.
151
127
  *
152
- * @param props - The viewport definition. The `element` defaults to the
153
- * canvas and must be unique across viewports.
154
- * @returns The created viewport.
128
+ * @param viewport - The viewport to add.
129
+ * @returns The added viewport.
155
130
  */
156
- addViewport(props: ViewportProps): Viewport;
131
+ addViewport(viewport: Viewport): Viewport;
157
132
  /**
158
133
  * Removes a previously added viewport.
159
134
  *
@@ -186,6 +161,8 @@ export declare class Idetik {
186
161
  * @returns The instance, for chaining.
187
162
  */
188
163
  start(): this;
164
+ private detachRemovedLayers;
165
+ private renderViewport;
189
166
  private animate;
190
167
  /**
191
168
  * Stops the render loop and disconnects input handlers.
@@ -1 +1 @@
1
- {"version":3,"file":"idetik.d.ts","sourceRoot":"","sources":["../../../src/idetik.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"idetik.d.ts","sourceRoot":"","sources":["../../../src/idetik.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAM3C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,sCAAsC;IACtC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,yCAAyC;IACzC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,sCAAsC;IACtC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,0DAA0D;IAC1D,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAqCF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBAAa,MAAM;IACjB,kDAAkD;IAClD,SAAgB,MAAM,EAAE,iBAAiB,CAAC;IAC1C,mEAAmE;IACnE,SAAgB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpC,4DAA4D;IAC5D,SAAgB,KAAK,EAAE,KAAK,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA8B;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAElD,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,cAAc,CAA0B;IAEhD;;;;OAIG;gBACS,MAAM,EAAE,WAAW;IA8C/B,oDAAoD;IACpD,IAAW,KAAK,WAEf;IAED,qDAAqD;IACrD,IAAW,MAAM,WAEhB;IAED,qCAAqC;IACrC,IAAW,SAAS,IAAI,SAAS,QAAQ,EAAE,CAE1C;IAED,0CAA0C;IAC1C,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;;;;OAKG;IACI,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIpD;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAgBhD;;;;;OAKG;IACI,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO;IA6BlD;;;;OAIG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzC;;;;;OAKG;IACI,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAW/C;;;;OAIG;IACI,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAIpD;;;;OAIG;IACI,KAAK;IAkBZ,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,OAAO;IA2Bf;;OAEG;IACI,IAAI;CAcZ"}
@@ -43,11 +43,13 @@ export { createExplorationPolicy, createImageSourcePolicy, createNoPrefetchPolic
43
43
  export type { ImageSourcePolicy, ImageSourcePolicyProps, PriorityCategory, } from "./core/image_source_policy";
44
44
  export type { ChannelProps } from "./core/channel";
45
45
  export type { LayerState } from "./core/layer";
46
- export type { IdetikProps, MemoryStats, Overlay } from "./idetik";
46
+ export type { IdetikProps, Overlay } from "./idetik";
47
+ export type { MemoryStats } from "./core/stats";
47
48
  export type { QueueStats } from "./data/chunk_manager";
48
49
  export type { ChunkStats, SourceChunkStats, ViewportChunkStats, } from "./data/chunk_stats";
49
50
  export type { SliceCoordinates } from "./data/chunk";
50
51
  export type { SliceOrientation } from "./math/axes";
52
+ export { Stats } from "./core/stats";
51
53
  export { Color } from "./math/color";
52
54
  export type { ColorLike } from "./math/color";
53
55
  export { Box2 } from "./math/box2";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -74,11 +74,12 @@ export type PanZoomControlsProps = {
74
74
  *
75
75
  * const idetik = new Idetik({
76
76
  * canvas,
77
- * viewports: [{
77
+ * viewports: [new Viewport({
78
+ * domElement: canvas,
78
79
  * camera,
79
80
  * layers: [imageLayer],
80
81
  * cameraControls: new PanZoomControls(camera),
81
- * }],
82
+ * })],
82
83
  * });
83
84
  * ```
84
85
  *
@@ -1 +1 @@
1
- {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../../../src/objects/cameras/controls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAI3D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,eAAgB,YAAW,cAAc;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAC7C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;;;OAKG;gBACS,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,oBAAoB;IAKrE,yCAAyC;IACzC,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED;;;;;OAKG;IACI,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAkBzC;;;;OAIG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM;IAE9B,OAAO,CAAC,OAAO;IAoBf,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,YAAY;CAQrB"}
1
+ {"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../../../src/objects/cameras/controls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAI3D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,eAAgB,YAAW,cAAc;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAC7C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;;;OAKG;gBACS,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,oBAAoB;IAKrE,yCAAyC;IACzC,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED;;;;;OAKG;IACI,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAkBzC;;;;OAIG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM;IAE9B,OAAO,CAAC,OAAO;IAoBf,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,YAAY;CAQrB"}
@@ -31,14 +31,15 @@ export type OrbitControlsProps = {
31
31
  *
32
32
  * const idetik = new Idetik({
33
33
  * canvas,
34
- * viewports: [{
34
+ * viewports: [new Viewport({
35
+ * domElement: canvas,
35
36
  * camera,
36
37
  * layers: [volumeLayer],
37
38
  * cameraControls: new OrbitControls(camera, {
38
39
  * radius: 100,
39
40
  * target: [40, 40, 10],
40
41
  * }),
41
- * }],
42
+ * })],
42
43
  * });
43
44
  * ```
44
45
  *
@@ -1 +1 @@
1
- {"version":3,"file":"orbit_controls.d.ts","sourceRoot":"","sources":["../../../../../src/objects/cameras/orbit_controls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAY,IAAI,EAAE,MAAM,WAAW,CAAC;AAa3C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAE5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAE9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAE7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAE7C,OAAO,CAAC,gBAAgB,CAAqB;IAE7C;;;;;OAKG;gBACS,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,kBAAkB;IAwBlE,2DAA2D;IAC3D,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,4CAA4C;IAC5C,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,8CAA8C;IAC9C,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,6CAA6C;IAC7C,IAAW,MAAM,IAAI,IAAI,CAExB;IAED,wDAAwD;IACxD,IAAW,QAAQ,IAAI,OAAO,CAS7B;IAED;;;;;OAKG;IACI,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAkBzC;;;;;OAKG;IACI,QAAQ,CAAC,EAAE,EAAE,MAAM;IAmC1B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,GAAG;IAWX,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,iBAAiB;CAU1B"}
1
+ {"version":3,"file":"orbit_controls.d.ts","sourceRoot":"","sources":["../../../../../src/objects/cameras/orbit_controls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAY,IAAI,EAAE,MAAM,WAAW,CAAC;AAa3C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAE5C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IACzD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAE9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAE7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAE7C,OAAO,CAAC,gBAAgB,CAAqB;IAE7C;;;;;OAKG;gBACS,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,kBAAkB;IAwBlE,2DAA2D;IAC3D,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,4CAA4C;IAC5C,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,8CAA8C;IAC9C,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,6CAA6C;IAC7C,IAAW,MAAM,IAAI,IAAI,CAExB;IAED,wDAAwD;IACxD,IAAW,QAAQ,IAAI,OAAO,CAS7B;IAED;;;;;OAKG;IACI,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAkBzC;;;;;OAKG;IACI,QAAQ,CAAC,EAAE,EAAE,MAAM;IAmC1B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,GAAG;IAWX,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,iBAAiB;CAU1B"}
@@ -55,13 +55,15 @@ export type OrthographicCameraProps = {
55
55
  * bottom: 1024
56
56
  * });
57
57
  *
58
+ * const canvas = document.querySelector<HTMLCanvasElement>('canvas')!;
58
59
  * const idetik = new Idetik({
59
- * canvas: document.querySelector('canvas')!,
60
- * viewports: [{
60
+ * canvas,
61
+ * viewports: [new Viewport({
62
+ * domElement: canvas,
61
63
  * camera,
62
64
  * layers: [imageLayer],
63
65
  * cameraControls: new PanZoomControls(camera),
64
- * }],
66
+ * })],
65
67
  * });
66
68
  * ```
67
69
  * @group Cameras
@@ -1 +1 @@
1
- {"version":3,"file":"orthographic_camera.d.ts","sourceRoot":"","sources":["../../../../../src/objects/cameras/orthographic_camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAGL,gBAAgB,EAGjB,MAAM,iBAAiB,CAAC;AAQzB;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,qBAAa,kBAAmB,SAAQ,MAAM;IAE5C,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,aAAa,CAAqD;IAC1E,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,YAAY,CAAmB;IAEvC;;;;OAIG;gBACS,KAAK,EAAE,uBAAuB;IAW1C;;;;;OAKG;IACH,IAAW,YAAY,qBAEtB;IAED;;;;;OAKG;IACI,cAAc,CAAC,WAAW,EAAE,MAAM;IAKzC;;;;;;;;OAQG;IACI,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,uBAAuB;IAYrE,0DAA0D;IAC1D,IAAW,IAAI,IAAI,UAAU,CAE5B;IAED,8CAA8C;IAC9C,IAAW,WAAW,IAAI,gBAAgB,CAEzC;IAED;;;;;;OAMG;IACI,cAAc,CAAC,WAAW,EAAE,gBAAgB;IAoBnD;;;;;;OAMG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM;IAQ1B;;;;;OAKG;IACI,gBAAgB,IAAI,IAAI;IAgB/B,cAAc;IACd,SAAS,CAAC,sBAAsB;CA8BjC"}
1
+ {"version":3,"file":"orthographic_camera.d.ts","sourceRoot":"","sources":["../../../../../src/objects/cameras/orthographic_camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAGL,gBAAgB,EAGjB,MAAM,iBAAiB,CAAC;AAQzB;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBAAa,kBAAmB,SAAQ,MAAM;IAE5C,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,oBAAoB,CAAgC;IAC5D,OAAO,CAAC,aAAa,CAAqD;IAC1E,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,YAAY,CAAmB;IAEvC;;;;OAIG;gBACS,KAAK,EAAE,uBAAuB;IAW1C;;;;;OAKG;IACH,IAAW,YAAY,qBAEtB;IAED;;;;;OAKG;IACI,cAAc,CAAC,WAAW,EAAE,MAAM;IAKzC;;;;;;;;OAQG;IACI,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,uBAAuB;IAYrE,0DAA0D;IAC1D,IAAW,IAAI,IAAI,UAAU,CAE5B;IAED,8CAA8C;IAC9C,IAAW,WAAW,IAAI,gBAAgB,CAEzC;IAED;;;;;;OAMG;IACI,cAAc,CAAC,WAAW,EAAE,gBAAgB;IAoBnD;;;;;;OAMG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM;IAQ1B;;;;;OAKG;IACI,gBAAgB,IAAI,IAAI;IAgB/B,cAAc;IACd,SAAS,CAAC,sBAAsB;CA8BjC"}
@@ -35,9 +35,15 @@ export type PerspectiveCameraProps = {
35
35
  * target: [0, 0, 0],
36
36
  * });
37
37
  *
38
+ * const canvas = document.querySelector<HTMLCanvasElement>('canvas')!;
38
39
  * const idetik = new Idetik({
39
- * canvas: document.querySelector('canvas')!,
40
- * viewports: [{ camera, layers: [volumeLayer], cameraControls: controls }],
40
+ * canvas,
41
+ * viewports: [new Viewport({
42
+ * domElement: canvas,
43
+ * camera,
44
+ * layers: [volumeLayer],
45
+ * cameraControls: controls
46
+ * })],
41
47
  * });
42
48
  * ```
43
49
  *
@@ -1 +1 @@
1
- {"version":3,"file":"perspective_camera.d.ts","sourceRoot":"","sources":["../../../../../src/objects/cameras/perspective_camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAkB,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,iBAAkB,SAAQ,MAAM;IAC3C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;OAIG;gBACS,KAAK,GAAE,sBAA2B;IAyB9C;;;;;;OAMG;IACI,cAAc,CAAC,WAAW,EAAE,MAAM;IAKzC,yDAAyD;IACzD,IAAW,IAAI,IAAI,UAAU,CAE5B;IAED,6CAA6C;IAC7C,IAAW,GAAG,WAEb;IAED;;;;;;;;;OASG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM;IAS1B,cAAc;IACd,SAAS,CAAC,sBAAsB;CASjC"}
1
+ {"version":3,"file":"perspective_camera.d.ts","sourceRoot":"","sources":["../../../../../src/objects/cameras/perspective_camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAkB,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,iBAAkB,SAAQ,MAAM;IAC3C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,YAAY,CAAS;IAE7B;;;;OAIG;gBACS,KAAK,GAAE,sBAA2B;IAyB9C;;;;;;OAMG;IACI,cAAc,CAAC,WAAW,EAAE,MAAM;IAKzC,yDAAyD;IACzD,IAAW,IAAI,IAAI,UAAU,CAE5B;IAED,6CAA6C;IAC7C,IAAW,GAAG,WAEb;IAED;;;;;;;;;OASG;IACI,IAAI,CAAC,MAAM,EAAE,MAAM;IAS1B,cAAc;IACd,SAAS,CAAC,sBAAsB;CASjC"}
@@ -1,5 +1,6 @@
1
1
  import type { Chunk } from "../src/data/chunk";
2
2
  import { Viewport } from "@/core/viewport";
3
+ import { Layer } from "@/core/layer";
3
4
  import { OrthographicCamera } from "@/objects/cameras/orthographic_camera";
4
5
  import type { IdetikContext } from "@/idetik";
5
6
  type ChunkOverrides = Partial<Omit<Chunk, "shape" | "chunkIndex" | "scale" | "offset">> & {
@@ -21,6 +22,14 @@ export declare function waitFor(check: () => boolean, { timeout, interval }?: {
21
22
  export declare function createTestElement(id?: string): HTMLElement;
22
23
  export declare function createTestCamera(): OrthographicCamera;
23
24
  export declare function createTestContext(): IdetikContext;
25
+ export declare class TrackingLayer extends Layer {
26
+ readonly type = "TrackingLayer";
27
+ attachCount: number;
28
+ detachCount: number;
29
+ update(): void;
30
+ protected attach(): void;
31
+ protected detach(): void;
32
+ }
24
33
  export declare function createTestViewport(id?: string): Viewport;
25
34
  export {};
26
35
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../test/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,KAAK,cAAc,GAAG,OAAO,CAC3B,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC,CACzD,GAAG;IACF,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;CACnC,CAAC;AAEF,wBAAgB,SAAS,CAAC,SAAS,GAAE,cAAmB,GAAG,KAAK,CA2B/D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI;qBAUjC,WAAW;;iBAkBpB,OAAO;EAEvB;AAED,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,OAAO,EACpB,EAAE,OAAa,EAAE,QAAY,EAAE;;;CAAK,iBAQrC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,GAAE,MAAuB,GAAG,WAAW,CAI1E;AAED,wBAAgB,gBAAgB,IAAI,kBAAkB,CAErD;AAED,wBAAgB,iBAAiB,IAAI,aAAa,CAEjD;AAED,wBAAgB,kBAAkB,CAAC,EAAE,GAAE,MAAwB,GAAG,QAAQ,CAOzE"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../test/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,KAAK,cAAc,GAAG,OAAO,CAC3B,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC,CACzD,GAAG;IACF,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;CACnC,CAAC;AAEF,wBAAgB,SAAS,CAAC,SAAS,GAAE,cAAmB,GAAG,KAAK,CA2B/D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI;qBAUjC,WAAW;;iBAkBpB,OAAO;EAEvB;AAED,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,OAAO,EACpB,EAAE,OAAa,EAAE,QAAY,EAAE;;;CAAK,iBAQrC;AAED,wBAAgB,iBAAiB,CAAC,EAAE,GAAE,MAAuB,GAAG,WAAW,CAI1E;AAED,wBAAgB,gBAAgB,IAAI,kBAAkB,CAErD;AAED,wBAAgB,iBAAiB,IAAI,aAAa,CAEjD;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,SAAgB,IAAI,mBAAmB;IAChC,WAAW,SAAK;IAChB,WAAW,SAAK;IAEhB,MAAM;IAEb,SAAS,CAAC,MAAM;IAIhB,SAAS,CAAC,MAAM;CAGjB;AAED,wBAAgB,kBAAkB,CAAC,EAAE,GAAE,MAAwB,GAAG,QAAQ,CAMzE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idetik/core",
3
- "version": "0.45.4",
3
+ "version": "0.46.0",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "repository": {