open-plant 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/point-hit-index-worker-CNFA6pZm.js +2 -0
- package/dist/assets/point-hit-index-worker-CNFA6pZm.js.map +1 -0
- package/dist/assets/roi-clip-worker-BDVQwN2T.js.map +1 -1
- package/dist/index.cjs +17 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3233 -3037
- package/dist/index.js.map +1 -1
- package/dist/types/core/ortho-camera.d.ts +7 -0
- package/dist/types/core/ortho-camera.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/react/draw-layer-brush.d.ts +9 -0
- package/dist/types/react/draw-layer-brush.d.ts.map +1 -0
- package/dist/types/react/draw-layer-label.d.ts +21 -0
- package/dist/types/react/draw-layer-label.d.ts.map +1 -0
- package/dist/types/react/draw-layer-overlay.d.ts +18 -0
- package/dist/types/react/draw-layer-overlay.d.ts.map +1 -0
- package/dist/types/react/draw-layer-stamp.d.ts +24 -0
- package/dist/types/react/draw-layer-stamp.d.ts.map +1 -0
- package/dist/types/react/draw-layer-types.d.ts +243 -0
- package/dist/types/react/draw-layer-types.d.ts.map +1 -0
- package/dist/types/react/draw-layer-utils.d.ts +30 -0
- package/dist/types/react/draw-layer-utils.d.ts.map +1 -0
- package/dist/types/react/draw-layer.d.ts +4 -187
- package/dist/types/react/draw-layer.d.ts.map +1 -1
- package/dist/types/react/wsi-region-hit-utils.d.ts +21 -0
- package/dist/types/react/wsi-region-hit-utils.d.ts.map +1 -0
- package/dist/types/react/wsi-viewer-canvas.d.ts +2 -1
- package/dist/types/react/wsi-viewer-canvas.d.ts.map +1 -1
- package/dist/types/wsi/brush-stroke.d.ts.map +1 -1
- package/dist/types/wsi/image-info.d.ts +26 -1
- package/dist/types/wsi/image-info.d.ts.map +1 -1
- package/dist/types/wsi/point-clip-hybrid.d.ts.map +1 -1
- package/dist/types/wsi/point-clip-worker-client.d.ts.map +1 -1
- package/dist/types/wsi/point-clip.d.ts +1 -1
- package/dist/types/wsi/point-clip.d.ts.map +1 -1
- package/dist/types/wsi/point-hit-index-shared.d.ts +25 -0
- package/dist/types/wsi/point-hit-index-shared.d.ts.map +1 -0
- package/dist/types/wsi/point-hit-index-worker-client.d.ts.map +1 -1
- package/dist/types/wsi/roi-geometry.d.ts +3 -0
- package/dist/types/wsi/roi-geometry.d.ts.map +1 -1
- package/dist/types/wsi/roi-term-stats.d.ts.map +1 -1
- package/dist/types/wsi/tile-scheduler.d.ts.map +1 -1
- package/dist/types/wsi/utils.d.ts +3 -2
- package/dist/types/wsi/utils.d.ts.map +1 -1
- package/dist/types/wsi/worker-client.d.ts +28 -0
- package/dist/types/wsi/worker-client.d.ts.map +1 -0
- package/dist/types/wsi/wsi-canvas-lifecycle.d.ts +15 -0
- package/dist/types/wsi/wsi-canvas-lifecycle.d.ts.map +1 -0
- package/dist/types/wsi/wsi-input-handlers.d.ts +67 -0
- package/dist/types/wsi/wsi-input-handlers.d.ts.map +1 -0
- package/dist/types/wsi/wsi-interaction.d.ts +50 -0
- package/dist/types/wsi/wsi-interaction.d.ts.map +1 -0
- package/dist/types/wsi/wsi-lifecycle-ops.d.ts +38 -0
- package/dist/types/wsi/wsi-lifecycle-ops.d.ts.map +1 -0
- package/dist/types/wsi/wsi-normalize.d.ts +20 -0
- package/dist/types/wsi/wsi-normalize.d.ts.map +1 -0
- package/dist/types/wsi/wsi-point-data.d.ts +14 -0
- package/dist/types/wsi/wsi-point-data.d.ts.map +1 -0
- package/dist/types/wsi/wsi-render-pass.d.ts +40 -0
- package/dist/types/wsi/wsi-render-pass.d.ts.map +1 -0
- package/dist/types/wsi/wsi-renderer-types.d.ts +132 -0
- package/dist/types/wsi/wsi-renderer-types.d.ts.map +1 -0
- package/dist/types/wsi/wsi-shaders.d.ts +4 -0
- package/dist/types/wsi/wsi-shaders.d.ts.map +1 -0
- package/dist/types/wsi/wsi-tile-cache.d.ts +8 -0
- package/dist/types/wsi/wsi-tile-cache.d.ts.map +1 -0
- package/dist/types/wsi/wsi-tile-renderer.d.ts +11 -70
- package/dist/types/wsi/wsi-tile-renderer.d.ts.map +1 -1
- package/dist/types/wsi/wsi-tile-visibility.d.ts +22 -0
- package/dist/types/wsi/wsi-tile-visibility.d.ts.map +1 -0
- package/dist/types/wsi/wsi-view-animation.d.ts +4 -0
- package/dist/types/wsi/wsi-view-animation.d.ts.map +1 -0
- package/dist/types/wsi/wsi-view-ops.d.ts +17 -0
- package/dist/types/wsi/wsi-view-ops.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/assets/point-hit-index-worker-Bp1uxxyQ.js +0 -2
- package/dist/assets/point-hit-index-worker-Bp1uxxyQ.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsi-render-pass.d.ts","sourceRoot":"","sources":["../../../src/wsi/wsi-render-pass.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,4BAA4B,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9H,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,sBAAsB,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,kBAAkB,EAAE,4BAA4B,CAAC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,MAAM;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;IAClE,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,EAAE,CAAC;IAC1D,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,gBAAgB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CACrD;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CA0H1E"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { ScheduledTile, TileBounds } from "./tile-scheduler";
|
|
2
|
+
import type { WsiImageColorSettings, WsiRenderStats, WsiViewState } from "./types";
|
|
3
|
+
export type Bounds = TileBounds;
|
|
4
|
+
export type WorldPoint = [number, number];
|
|
5
|
+
export interface CachedTile {
|
|
6
|
+
key: string;
|
|
7
|
+
texture: WebGLTexture;
|
|
8
|
+
bounds: Bounds;
|
|
9
|
+
tier: number;
|
|
10
|
+
lastUsed: number;
|
|
11
|
+
}
|
|
12
|
+
export interface TileVertexProgram {
|
|
13
|
+
program: WebGLProgram;
|
|
14
|
+
vao: WebGLVertexArrayObject;
|
|
15
|
+
vbo: WebGLBuffer;
|
|
16
|
+
uCamera: WebGLUniformLocation;
|
|
17
|
+
uBounds: WebGLUniformLocation;
|
|
18
|
+
uTexture: WebGLUniformLocation;
|
|
19
|
+
uBrightness: WebGLUniformLocation;
|
|
20
|
+
uContrast: WebGLUniformLocation;
|
|
21
|
+
uSaturation: WebGLUniformLocation;
|
|
22
|
+
}
|
|
23
|
+
export interface PointProgram {
|
|
24
|
+
program: WebGLProgram;
|
|
25
|
+
vao: WebGLVertexArrayObject;
|
|
26
|
+
posBuffer: WebGLBuffer;
|
|
27
|
+
termBuffer: WebGLBuffer;
|
|
28
|
+
fillModeBuffer: WebGLBuffer;
|
|
29
|
+
indexBuffer: WebGLBuffer;
|
|
30
|
+
paletteTexture: WebGLTexture;
|
|
31
|
+
uCamera: WebGLUniformLocation;
|
|
32
|
+
uPointSize: WebGLUniformLocation;
|
|
33
|
+
uPalette: WebGLUniformLocation;
|
|
34
|
+
uPaletteSize: WebGLUniformLocation;
|
|
35
|
+
uPointStrokeScale: WebGLUniformLocation;
|
|
36
|
+
uPointInnerFillAlpha: WebGLUniformLocation;
|
|
37
|
+
}
|
|
38
|
+
export interface PointSizeStop {
|
|
39
|
+
zoom: number;
|
|
40
|
+
size: number;
|
|
41
|
+
}
|
|
42
|
+
export type PointSizeByZoom = Readonly<Record<number, number>>;
|
|
43
|
+
export interface WsiViewTransitionOptions {
|
|
44
|
+
duration?: number;
|
|
45
|
+
easing?: (t: number) => number;
|
|
46
|
+
}
|
|
47
|
+
export interface WsiTileSchedulerConfig {
|
|
48
|
+
maxConcurrency?: number;
|
|
49
|
+
maxRetries?: number;
|
|
50
|
+
retryBaseDelayMs?: number;
|
|
51
|
+
retryMaxDelayMs?: number;
|
|
52
|
+
}
|
|
53
|
+
export interface WsiTileErrorEvent {
|
|
54
|
+
tile: ScheduledTile;
|
|
55
|
+
error: unknown;
|
|
56
|
+
attemptCount: number;
|
|
57
|
+
}
|
|
58
|
+
export interface WsiTileRendererOptions {
|
|
59
|
+
onViewStateChange?: (next: WsiViewState) => void;
|
|
60
|
+
onStats?: (stats: WsiRenderStats) => void;
|
|
61
|
+
authToken?: string;
|
|
62
|
+
imageColorSettings?: WsiImageColorSettings | null;
|
|
63
|
+
minZoom?: number;
|
|
64
|
+
maxZoom?: number;
|
|
65
|
+
viewTransition?: WsiViewTransitionOptions;
|
|
66
|
+
pointSizeByZoom?: PointSizeByZoom;
|
|
67
|
+
pointStrokeScale?: number;
|
|
68
|
+
pointInnerFillOpacity?: number;
|
|
69
|
+
maxCacheTiles?: number;
|
|
70
|
+
ctrlDragRotate?: boolean;
|
|
71
|
+
rotationDragSensitivityDegPerPixel?: number;
|
|
72
|
+
tileScheduler?: WsiTileSchedulerConfig;
|
|
73
|
+
onTileError?: (event: WsiTileErrorEvent) => void;
|
|
74
|
+
onContextLost?: () => void;
|
|
75
|
+
onContextRestored?: () => void;
|
|
76
|
+
}
|
|
77
|
+
export interface ViewAnimationState {
|
|
78
|
+
startMs: number;
|
|
79
|
+
durationMs: number;
|
|
80
|
+
from: WsiViewState;
|
|
81
|
+
to: WsiViewState;
|
|
82
|
+
easing: (t: number) => number;
|
|
83
|
+
}
|
|
84
|
+
export interface NormalizedImageColorSettings {
|
|
85
|
+
brightness: number;
|
|
86
|
+
contrast: number;
|
|
87
|
+
saturation: number;
|
|
88
|
+
}
|
|
89
|
+
export interface InteractionState {
|
|
90
|
+
dragging: boolean;
|
|
91
|
+
mode: "none" | "pan" | "rotate";
|
|
92
|
+
rotateLastAngleRad: number | null;
|
|
93
|
+
pointerId: number | null;
|
|
94
|
+
lastPointerX: number;
|
|
95
|
+
lastPointerY: number;
|
|
96
|
+
}
|
|
97
|
+
export interface InteractionConfig {
|
|
98
|
+
ctrlDragRotate: boolean;
|
|
99
|
+
rotationDragSensitivityDegPerPixel: number;
|
|
100
|
+
}
|
|
101
|
+
export interface ViewAnimationRuntimeState {
|
|
102
|
+
animation: ViewAnimationState | null;
|
|
103
|
+
frame: number | null;
|
|
104
|
+
}
|
|
105
|
+
export interface HandleTileLoadedOptions {
|
|
106
|
+
gl: WebGL2RenderingContext;
|
|
107
|
+
cache: Map<string, CachedTile>;
|
|
108
|
+
tile: ScheduledTile;
|
|
109
|
+
bitmap: ImageBitmap;
|
|
110
|
+
frameSerial: number;
|
|
111
|
+
maxCacheTiles: number;
|
|
112
|
+
destroyed: boolean;
|
|
113
|
+
contextLost: boolean;
|
|
114
|
+
requestRender: () => void;
|
|
115
|
+
}
|
|
116
|
+
export interface TileCacheTrimOptions {
|
|
117
|
+
gl: WebGL2RenderingContext;
|
|
118
|
+
cache: Map<string, CachedTile>;
|
|
119
|
+
maxCacheTiles: number;
|
|
120
|
+
}
|
|
121
|
+
export interface ViewAnimationStartOptions {
|
|
122
|
+
state: ViewAnimationRuntimeState;
|
|
123
|
+
camera: {
|
|
124
|
+
getViewState: () => WsiViewState;
|
|
125
|
+
setViewState: (next: Partial<WsiViewState>) => void;
|
|
126
|
+
};
|
|
127
|
+
target: WsiViewState;
|
|
128
|
+
durationMs: number;
|
|
129
|
+
easing: (t: number) => number;
|
|
130
|
+
onUpdate: () => void;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=wsi-renderer-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsi-renderer-types.d.ts","sourceRoot":"","sources":["../../../src/wsi/wsi-renderer-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PointProgram, TileVertexProgram } from "./wsi-renderer-types";
|
|
2
|
+
export declare function initTileProgram(gl: WebGL2RenderingContext): TileVertexProgram;
|
|
3
|
+
export declare function initPointProgram(gl: WebGL2RenderingContext): PointProgram;
|
|
4
|
+
//# sourceMappingURL=wsi-shaders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsi-shaders.d.ts","sourceRoot":"","sources":["../../../src/wsi/wsi-shaders.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,wBAAgB,eAAe,CAAC,EAAE,EAAE,sBAAsB,GAAG,iBAAiB,CA4F7E;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,sBAAsB,GAAG,YAAY,CAuIzE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HandleTileLoadedOptions, TileCacheTrimOptions } from "./wsi-renderer-types";
|
|
2
|
+
export declare function trimTileCache(options: TileCacheTrimOptions): void;
|
|
3
|
+
export declare function createTextureFromBitmap(gl: WebGL2RenderingContext, bitmap: ImageBitmap): WebGLTexture | null;
|
|
4
|
+
export declare function handleTileLoaded(options: HandleTileLoadedOptions): void;
|
|
5
|
+
export declare function deleteCachedTextures(gl: WebGL2RenderingContext, cache: Map<string, {
|
|
6
|
+
texture: WebGLTexture;
|
|
7
|
+
}>): void;
|
|
8
|
+
//# sourceMappingURL=wsi-tile-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsi-tile-cache.d.ts","sourceRoot":"","sources":["../../../src/wsi/wsi-tile-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAajE;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,sBAAsB,EAAE,MAAM,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI,CAgB5G;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAyBvE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC,GAAG,IAAI,CAIpH"}
|
|
@@ -1,41 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
3
|
-
type
|
|
4
|
-
type WorldPoint = [number, number];
|
|
5
|
-
export type PointSizeByZoom = Readonly<Record<number, number>>;
|
|
6
|
-
export interface WsiViewTransitionOptions {
|
|
7
|
-
duration?: number;
|
|
8
|
-
easing?: (t: number) => number;
|
|
9
|
-
}
|
|
10
|
-
export interface WsiTileSchedulerConfig {
|
|
11
|
-
maxConcurrency?: number;
|
|
12
|
-
maxRetries?: number;
|
|
13
|
-
retryBaseDelayMs?: number;
|
|
14
|
-
retryMaxDelayMs?: number;
|
|
15
|
-
}
|
|
16
|
-
export interface WsiTileRendererOptions {
|
|
17
|
-
onViewStateChange?: (next: WsiViewState) => void;
|
|
18
|
-
onStats?: (stats: WsiRenderStats) => void;
|
|
19
|
-
authToken?: string;
|
|
20
|
-
imageColorSettings?: WsiImageColorSettings | null;
|
|
21
|
-
minZoom?: number;
|
|
22
|
-
maxZoom?: number;
|
|
23
|
-
viewTransition?: WsiViewTransitionOptions;
|
|
24
|
-
pointSizeByZoom?: PointSizeByZoom;
|
|
25
|
-
pointStrokeScale?: number;
|
|
26
|
-
maxCacheTiles?: number;
|
|
27
|
-
ctrlDragRotate?: boolean;
|
|
28
|
-
rotationDragSensitivityDegPerPixel?: number;
|
|
29
|
-
tileScheduler?: WsiTileSchedulerConfig;
|
|
30
|
-
onTileError?: (event: WsiTileErrorEvent) => void;
|
|
31
|
-
onContextLost?: () => void;
|
|
32
|
-
onContextRestored?: () => void;
|
|
33
|
-
}
|
|
34
|
-
export interface WsiTileErrorEvent {
|
|
35
|
-
tile: ScheduledTile;
|
|
36
|
-
error: unknown;
|
|
37
|
-
attemptCount: number;
|
|
38
|
-
}
|
|
1
|
+
import type { WsiImageColorSettings, WsiImageSource, WsiPointData, WsiViewState } from "./types";
|
|
2
|
+
import type { PointSizeByZoom, WorldPoint, WsiTileRendererOptions, WsiViewTransitionOptions } from "./wsi-renderer-types";
|
|
3
|
+
export type { PointSizeByZoom, WsiTileErrorEvent, WsiTileRendererOptions, WsiTileSchedulerConfig, WsiViewTransitionOptions } from "./wsi-renderer-types";
|
|
39
4
|
export declare class WsiTileRenderer {
|
|
40
5
|
private readonly canvas;
|
|
41
6
|
private readonly source;
|
|
@@ -55,12 +20,7 @@ export declare class WsiTileRenderer {
|
|
|
55
20
|
private contextLost;
|
|
56
21
|
private frame;
|
|
57
22
|
private frameSerial;
|
|
58
|
-
private
|
|
59
|
-
private interactionMode;
|
|
60
|
-
private rotateLastAngleRad;
|
|
61
|
-
private pointerId;
|
|
62
|
-
private lastPointerX;
|
|
63
|
-
private lastPointerY;
|
|
23
|
+
private interactionState;
|
|
64
24
|
private interactionLocked;
|
|
65
25
|
private ctrlDragRotate;
|
|
66
26
|
private rotationDragSensitivityDegPerPixel;
|
|
@@ -72,15 +32,14 @@ export declare class WsiTileRenderer {
|
|
|
72
32
|
private maxZoomOverride;
|
|
73
33
|
private viewTransitionDurationMs;
|
|
74
34
|
private viewTransitionEasing;
|
|
75
|
-
private
|
|
76
|
-
private viewAnimationFrame;
|
|
77
|
-
private currentTier;
|
|
35
|
+
private viewAnimationState;
|
|
78
36
|
private pointCount;
|
|
79
37
|
private usePointIndices;
|
|
80
38
|
private pointBuffersDirty;
|
|
81
39
|
private pointPaletteSize;
|
|
82
40
|
private pointSizeStops;
|
|
83
41
|
private pointStrokeScale;
|
|
42
|
+
private pointInnerFillOpacity;
|
|
84
43
|
private imageColorSettings;
|
|
85
44
|
private lastPointData;
|
|
86
45
|
private lastPointPalette;
|
|
@@ -94,12 +53,15 @@ export declare class WsiTileRenderer {
|
|
|
94
53
|
private readonly boundContextMenu;
|
|
95
54
|
private readonly boundContextLost;
|
|
96
55
|
private readonly boundContextRestored;
|
|
56
|
+
private getCanvasHandlers;
|
|
97
57
|
constructor(canvas: HTMLCanvasElement, source: WsiImageSource, options?: WsiTileRendererOptions);
|
|
98
|
-
private resolveDefaultZoomBounds;
|
|
99
58
|
private applyZoomBounds;
|
|
100
59
|
private resolveTargetViewState;
|
|
101
60
|
private cancelViewAnimation;
|
|
102
61
|
private startViewAnimation;
|
|
62
|
+
private getPointBufferRuntime;
|
|
63
|
+
private applyPointBufferRuntime;
|
|
64
|
+
private applyViewStateAndRender;
|
|
103
65
|
setAuthToken(token: string): void;
|
|
104
66
|
setZoomRange(minZoom: number | null | undefined, maxZoom: number | null | undefined): void;
|
|
105
67
|
setViewTransition(options: WsiViewTransitionOptions | null | undefined): void;
|
|
@@ -111,14 +73,12 @@ export declare class WsiTileRenderer {
|
|
|
111
73
|
};
|
|
112
74
|
setPointPalette(colors: Uint8Array | null | undefined): void;
|
|
113
75
|
setPointData(points: WsiPointData | null | undefined): void;
|
|
114
|
-
private sanitizeDrawIndices;
|
|
115
|
-
private getZeroFillModes;
|
|
116
76
|
setInteractionLock(locked: boolean): void;
|
|
117
77
|
setPointSizeByZoom(pointSizeByZoom: PointSizeByZoom | null | undefined): void;
|
|
118
78
|
setPointStrokeScale(scale: number | null | undefined): void;
|
|
79
|
+
setPointInnerFillOpacity(opacity: number | null | undefined): void;
|
|
119
80
|
setImageColorSettings(settings: WsiImageColorSettings | null | undefined): void;
|
|
120
81
|
cancelDrag(): void;
|
|
121
|
-
private getPointerAngleRad;
|
|
122
82
|
screenToWorld(clientX: number, clientY: number): [number, number];
|
|
123
83
|
worldToScreen(worldX: number, worldY: number): [number, number];
|
|
124
84
|
setViewCenter(worldX: number, worldY: number, transition?: WsiViewTransitionOptions): void;
|
|
@@ -127,30 +87,11 @@ export declare class WsiTileRenderer {
|
|
|
127
87
|
getPointSizeByZoom(): number;
|
|
128
88
|
fitToImage(transition?: WsiViewTransitionOptions): void;
|
|
129
89
|
zoomBy(factor: number, screenX: number, screenY: number, transition?: WsiViewTransitionOptions): void;
|
|
130
|
-
clampViewState(): void;
|
|
131
|
-
emitViewState(): void;
|
|
132
|
-
selectTier(): number;
|
|
133
|
-
getViewBounds(): Bounds;
|
|
134
|
-
intersectsBounds(a: Bounds, b: Bounds): boolean;
|
|
135
|
-
getVisibleTiles(): ScheduledTile[];
|
|
136
|
-
getVisibleTilesForTier(tier: number): ScheduledTile[];
|
|
137
|
-
trimCache(): void;
|
|
138
90
|
render(): void;
|
|
139
91
|
requestRender(): void;
|
|
140
92
|
resize(): void;
|
|
141
|
-
onPointerDown(event: PointerEvent): void;
|
|
142
|
-
onPointerMove(event: PointerEvent): void;
|
|
143
|
-
onPointerUp(event: PointerEvent): void;
|
|
144
|
-
onWheel(event: WheelEvent): void;
|
|
145
|
-
onDoubleClick(event: MouseEvent): void;
|
|
146
|
-
onContextMenu(event: MouseEvent): void;
|
|
147
93
|
private onWebGlContextLost;
|
|
148
94
|
private onWebGlContextRestored;
|
|
149
95
|
destroy(): void;
|
|
150
|
-
private initTileProgram;
|
|
151
|
-
private initPointProgram;
|
|
152
|
-
private handleTileLoaded;
|
|
153
|
-
private createTextureFromBitmap;
|
|
154
96
|
}
|
|
155
|
-
export {};
|
|
156
97
|
//# sourceMappingURL=wsi-tile-renderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wsi-tile-renderer.d.ts","sourceRoot":"","sources":["../../../src/wsi/wsi-tile-renderer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wsi-tile-renderer.d.ts","sourceRoot":"","sources":["../../../src/wsi/wsi-tile-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ScheduledTile } from "./tile-scheduler";
|
|
2
|
+
import type { WsiImageSource } from "./types";
|
|
3
|
+
import type { Bounds } from "./wsi-renderer-types";
|
|
4
|
+
interface CameraViewLike {
|
|
5
|
+
getViewCorners: () => [readonly [number, number], readonly [number, number], readonly [number, number], readonly [number, number]];
|
|
6
|
+
getViewState: () => {
|
|
7
|
+
zoom: number;
|
|
8
|
+
};
|
|
9
|
+
getCenter: () => [number, number];
|
|
10
|
+
setCenter: (x: number, y: number) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function getViewBounds(camera: CameraViewLike): Bounds;
|
|
13
|
+
export declare function clampViewState(camera: CameraViewLike, source: WsiImageSource): void;
|
|
14
|
+
export declare function selectTier(camera: CameraViewLike, source: WsiImageSource): number;
|
|
15
|
+
export declare function intersectsBounds(a: Bounds, b: Bounds): boolean;
|
|
16
|
+
export declare function getVisibleTilesForTier(camera: CameraViewLike, source: WsiImageSource, tier: number): ScheduledTile[];
|
|
17
|
+
export declare function getVisibleTiles(camera: CameraViewLike, source: WsiImageSource): {
|
|
18
|
+
tier: number;
|
|
19
|
+
visible: ScheduledTile[];
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=wsi-tile-visibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsi-tile-visibility.d.ts","sourceRoot":"","sources":["../../../src/wsi/wsi-tile-visibility.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,UAAU,cAAc;IACtB,cAAc,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnI,YAAY,EAAE,MAAM;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAa5D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAoBnF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAIjF;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAmDpH;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,EAAE,CAAA;CAAE,CAM1H"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ViewAnimationRuntimeState, ViewAnimationStartOptions } from "./wsi-renderer-types";
|
|
2
|
+
export declare function cancelViewAnimation(state: ViewAnimationRuntimeState): void;
|
|
3
|
+
export declare function startViewAnimation(options: ViewAnimationStartOptions): void;
|
|
4
|
+
//# sourceMappingURL=wsi-view-animation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsi-view-animation.d.ts","sourceRoot":"","sources":["../../../src/wsi/wsi-view-animation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI,CAM1E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,CA+C3E"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { OrthoCamera } from "../core/ortho-camera";
|
|
2
|
+
import type { WsiImageSource, WsiViewState } from "./types";
|
|
3
|
+
export declare function resolveDefaultZoomBounds(fitZoom: number): {
|
|
4
|
+
minZoom: number;
|
|
5
|
+
maxZoom: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function resolveZoomBounds(fitZoom: number, minZoomOverride: number | null, maxZoomOverride: number | null): {
|
|
8
|
+
minZoom: number;
|
|
9
|
+
maxZoom: number;
|
|
10
|
+
};
|
|
11
|
+
export declare function resolveTargetViewState(camera: OrthoCamera, minZoom: number, maxZoom: number, next: Partial<WsiViewState>, clampViewState: () => void): WsiViewState;
|
|
12
|
+
export declare function computeFitToImageTarget(source: WsiImageSource, viewportWidth: number, viewportHeight: number, minZoom: number, maxZoom: number): {
|
|
13
|
+
fitZoom: number;
|
|
14
|
+
target: WsiViewState;
|
|
15
|
+
};
|
|
16
|
+
export declare function computeZoomByTarget(camera: OrthoCamera, minZoom: number, maxZoom: number, factor: number, screenX: number, screenY: number): Partial<WsiViewState> | null;
|
|
17
|
+
//# sourceMappingURL=wsi-view-ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsi-view-ops.d.ts","sourceRoot":"","sources":["../../../src/wsi/wsi-view-ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAO9F;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAUvJ;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,EAC3B,cAAc,EAAE,MAAM,IAAI,GACzB,YAAY,CAcd;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,cAAc,EACtB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CAgB3C;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAsB9B"}
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(function(){"use strict";function U(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}function q(r){if(r instanceof Error)return r.message;try{return String(r)}catch{return"unknown worker error"}}function X(r,f,o){if(r<=0||f<=0||o<=0)return 256;const i=Math.max(1,r*f),h=Math.sqrt(i/Math.max(1,o))*4;return Math.max(24,Math.min(1024,h))}function S(r,f,o){return(r*73856093^f*19349663)>>>0&o}function B(r){const f=U(),o=Math.max(0,Math.floor(r.count)),i=new Float32Array(r.positions),L=Math.floor(i.length/2),h=Math.max(0,Math.min(o,L));if(h<=0)return null;let I=null;if(r.drawIndices){const t=new Uint32Array(r.drawIndices);if(t.length>0){let n=!0;for(let s=0;s<t.length;s+=1)if(t[s]>=h){n=!1;break}if(n)I=t;else{const s=new Uint32Array(t.length);let e=0;for(let u=0;u<t.length;u+=1)t[u]<h&&(s[e++]=t[u]);I=e>0?s.subarray(0,e):null}}}const A=I?I.length:h;if(A===0)return null;const F=X(r.sourceWidth,r.sourceHeight,A),H=1/F,O=new Int32Array(A),P=new Int32Array(A);let c=0;if(I)for(let t=0;t<A;t+=1){const n=I[t],s=i[n*2],e=i[n*2+1];!Number.isFinite(s)||!Number.isFinite(e)||(O[c]=Math.floor(s*H),P[c]=Math.floor(e*H),c+=1)}else for(let t=0;t<h;t+=1){const n=i[t*2],s=i[t*2+1];!Number.isFinite(n)||!Number.isFinite(s)||(O[c]=Math.floor(n*H),P[c]=Math.floor(s*H),c+=1)}if(c===0)return null;const V=Math.min(c,Math.max(64,c>>>3));let a=1;for(;a<V*2;)a<<=1;const G=a-1;let l=new Int32Array(a*2),p=new Int32Array(a);l.fill(2147483647);let y=0;const _=new Int32Array(c);for(let t=0;t<c;t+=1){const n=O[t],s=P[t];let e=S(n,s,G);for(;;){const u=l[e*2];if(u===2147483647){if(l[e*2]=n,l[e*2+1]=s,p[e]=1,_[t]=e,y+=1,y*4>a*3){const j=a;a<<=1;const E=a-1,x=new Int32Array(a*2),v=new Int32Array(a);x.fill(2147483647);for(let d=0;d<j;d+=1){if(l[d*2]===2147483647)continue;const z=l[d*2],Z=l[d*2+1];let M=S(z,Z,E);for(;x[M*2]!==2147483647;)M=M+1&E;x[M*2]=z,x[M*2+1]=Z,v[M]=p[d]}for(l=x,p=v,e=S(n,s,E);l[e*2]!==n||l[e*2+1]!==s;)e=e+1&E;_[t]=e}break}if(u===n&&l[e*2+1]===s){p[e]+=1,_[t]=e;break}e=e+1&G}}const b=new Int32Array(y*2),k=new Uint32Array(y),K=new Uint32Array(y),g=new Int32Array(a);g.fill(-1);let w=0,R=0;for(let t=0;t<a;t+=1)l[t*2]!==2147483647&&(b[w*2]=l[t*2],b[w*2+1]=l[t*2+1],k[w]=R,K[w]=p[t],g[t]=w,R+=p[t],w+=1);const D=new Uint32Array(c),T=new Uint32Array(y);if(T.set(k),I)for(let t=0;t<c;t+=1){const n=g[_[t]];D[T[n]]=I[t],T[n]+=1}else{let t=0;for(let n=0;n<h;n+=1){const s=i[n*2],e=i[n*2+1];if(!Number.isFinite(s)||!Number.isFinite(e))continue;const u=g[_[t]];D[T[u]]=n,T[u]+=1,t+=1}}let C=1;for(;C<y*2;)C<<=1;const Y=C-1,N=new Int32Array(C);N.fill(-1);for(let t=0;t<y;t+=1){const n=b[t*2],s=b[t*2+1];let e=S(n,s,Y);for(;N[e]!==-1;)e=e+1&Y;N[e]=t}return{type:"point-hit-index-success",id:r.id,cellSize:F,safeCount:h,cellCount:y,hashCapacity:C,hashTable:N.buffer,cellKeys:b.buffer,cellOffsets:k.buffer,cellLengths:K.buffer,pointIndices:D.buffer,durationMs:U()-f}}const m=self;m.addEventListener("message",r=>{const f=r.data;if(!(!f||f.type!=="point-hit-index-request"))try{const o=B(f);if(!o){const i={type:"point-hit-index-success",id:f.id,cellSize:0,safeCount:0,cellCount:0,hashCapacity:0,hashTable:new Int32Array(0).buffer,cellKeys:new Int32Array(0).buffer,cellOffsets:new Uint32Array(0).buffer,cellLengths:new Uint32Array(0).buffer,pointIndices:new Uint32Array(0).buffer,durationMs:0};m.postMessage(i,[i.hashTable,i.cellKeys,i.cellOffsets,i.cellLengths,i.pointIndices]);return}m.postMessage(o,[o.hashTable,o.cellKeys,o.cellOffsets,o.cellLengths,o.pointIndices])}catch(o){const i={type:"point-hit-index-failure",id:f.id,error:q(o)};m.postMessage(i)}})})();
|
|
2
|
-
//# sourceMappingURL=point-hit-index-worker-Bp1uxxyQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"point-hit-index-worker-Bp1uxxyQ.js","sources":["../src/workers/point-hit-index-worker.ts"],"sourcesContent":["import type {\n\tPointHitIndexWorkerRequest,\n\tPointHitIndexWorkerResponse,\n\tPointHitIndexWorkerSuccess,\n} from \"../wsi/point-hit-index-worker-protocol\";\n\nconst MIN_POINT_HIT_GRID_SIZE = 24;\nconst MAX_POINT_HIT_GRID_SIZE = 1024;\nconst POINT_HIT_GRID_DENSITY_SCALE = 4;\nconst HASH_EMPTY = -1;\n\nfunction nowMs(): number {\n\tif (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n\t\treturn performance.now();\n\t}\n\treturn Date.now();\n}\n\nfunction toErrorMessage(error: unknown): string {\n\tif (error instanceof Error) return error.message;\n\ttry {\n\t\treturn String(error);\n\t} catch {\n\t\treturn \"unknown worker error\";\n\t}\n}\n\nfunction resolveGridSize(sourceWidth: number, sourceHeight: number, visibleCount: number): number {\n\tif (sourceWidth <= 0 || sourceHeight <= 0 || visibleCount <= 0) return 256;\n\tconst area = Math.max(1, sourceWidth * sourceHeight);\n\tconst avgSpacing = Math.sqrt(area / Math.max(1, visibleCount));\n\tconst raw = avgSpacing * POINT_HIT_GRID_DENSITY_SCALE;\n\treturn Math.max(MIN_POINT_HIT_GRID_SIZE, Math.min(MAX_POINT_HIT_GRID_SIZE, raw));\n}\n\nfunction cellHash(cellX: number, cellY: number, mask: number): number {\n\treturn (((cellX * 73856093) ^ (cellY * 19349663)) >>> 0) & mask;\n}\n\nfunction handleRequest(msg: PointHitIndexWorkerRequest): PointHitIndexWorkerSuccess | null {\n\tconst start = nowMs();\n\tconst count = Math.max(0, Math.floor(msg.count));\n\tconst positions = new Float32Array(msg.positions);\n\tconst maxCountByPositions = Math.floor(positions.length / 2);\n\tconst safeCount = Math.max(0, Math.min(count, maxCountByPositions));\n\n\tif (safeCount <= 0) return null;\n\n\tlet drawIndices: Uint32Array | null = null;\n\tif (msg.drawIndices) {\n\t\tconst raw = new Uint32Array(msg.drawIndices);\n\t\tif (raw.length > 0) {\n\t\t\tlet allValid = true;\n\t\t\tfor (let i = 0; i < raw.length; i += 1) {\n\t\t\t\tif (raw[i] >= safeCount) { allValid = false; break; }\n\t\t\t}\n\t\t\tif (allValid) {\n\t\t\t\tdrawIndices = raw;\n\t\t\t} else {\n\t\t\t\tconst filtered = new Uint32Array(raw.length);\n\t\t\t\tlet cursor = 0;\n\t\t\t\tfor (let i = 0; i < raw.length; i += 1) {\n\t\t\t\t\tif (raw[i] < safeCount) { filtered[cursor++] = raw[i]; }\n\t\t\t\t}\n\t\t\t\tdrawIndices = cursor > 0 ? filtered.subarray(0, cursor) : null;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst visibleCount = drawIndices ? drawIndices.length : safeCount;\n\tif (visibleCount === 0) return null;\n\n\tconst cellSize = resolveGridSize(msg.sourceWidth, msg.sourceHeight, visibleCount);\n\tconst invCellSize = 1.0 / cellSize;\n\n\t// --- Pass 1: assign cell keys, count unique cells ---\n\tconst pointCellX = new Int32Array(visibleCount);\n\tconst pointCellY = new Int32Array(visibleCount);\n\tlet validCount = 0;\n\n\tif (drawIndices) {\n\t\tfor (let i = 0; i < visibleCount; i += 1) {\n\t\t\tconst pi = drawIndices[i];\n\t\t\tconst px = positions[pi * 2];\n\t\t\tconst py = positions[pi * 2 + 1];\n\t\t\tif (!Number.isFinite(px) || !Number.isFinite(py)) continue;\n\t\t\tpointCellX[validCount] = Math.floor(px * invCellSize);\n\t\t\tpointCellY[validCount] = Math.floor(py * invCellSize);\n\t\t\tvalidCount += 1;\n\t\t}\n\t} else {\n\t\tfor (let i = 0; i < safeCount; i += 1) {\n\t\t\tconst px = positions[i * 2];\n\t\t\tconst py = positions[i * 2 + 1];\n\t\t\tif (!Number.isFinite(px) || !Number.isFinite(py)) continue;\n\t\t\tpointCellX[validCount] = Math.floor(px * invCellSize);\n\t\t\tpointCellY[validCount] = Math.floor(py * invCellSize);\n\t\t\tvalidCount += 1;\n\t\t}\n\t}\n\n\tif (validCount === 0) return null;\n\n\t// --- Pass 2: build temporary hash to discover unique cells and count per cell ---\n\tconst estimatedCells = Math.min(validCount, Math.max(64, validCount >>> 3));\n\tlet hashCapacity = 1;\n\twhile (hashCapacity < estimatedCells * 2) hashCapacity <<= 1;\n\tconst hashMask = hashCapacity - 1;\n\n\tlet tempHashKeys = new Int32Array(hashCapacity * 2);\n\tlet tempHashCounts = new Int32Array(hashCapacity);\n\ttempHashKeys.fill(0x7FFFFFFF);\n\tlet cellCount = 0;\n\n\tconst pointCellSlot = new Int32Array(validCount);\n\n\tfor (let i = 0; i < validCount; i += 1) {\n\t\tconst cx = pointCellX[i];\n\t\tconst cy = pointCellY[i];\n\t\tlet slot = cellHash(cx, cy, hashMask);\n\n\t\twhile (true) {\n\t\t\tconst kx = tempHashKeys[slot * 2];\n\t\t\tif (kx === 0x7FFFFFFF) {\n\t\t\t\ttempHashKeys[slot * 2] = cx;\n\t\t\t\ttempHashKeys[slot * 2 + 1] = cy;\n\t\t\t\ttempHashCounts[slot] = 1;\n\t\t\t\tpointCellSlot[i] = slot;\n\t\t\t\tcellCount += 1;\n\t\t\t\tif (cellCount * 4 > hashCapacity * 3) {\n\t\t\t\t\tconst oldCap = hashCapacity;\n\t\t\t\t\thashCapacity <<= 1;\n\t\t\t\t\tconst newMask = hashCapacity - 1;\n\t\t\t\t\tconst newKeys = new Int32Array(hashCapacity * 2);\n\t\t\t\t\tconst newCounts = new Int32Array(hashCapacity);\n\t\t\t\t\tnewKeys.fill(0x7FFFFFFF);\n\t\t\t\t\tfor (let s = 0; s < oldCap; s += 1) {\n\t\t\t\t\t\tif (tempHashKeys[s * 2] === 0x7FFFFFFF) continue;\n\t\t\t\t\t\tconst ocx = tempHashKeys[s * 2];\n\t\t\t\t\t\tconst ocy = tempHashKeys[s * 2 + 1];\n\t\t\t\t\t\tlet ns = cellHash(ocx, ocy, newMask);\n\t\t\t\t\t\twhile (newKeys[ns * 2] !== 0x7FFFFFFF) ns = (ns + 1) & newMask;\n\t\t\t\t\t\tnewKeys[ns * 2] = ocx;\n\t\t\t\t\t\tnewKeys[ns * 2 + 1] = ocy;\n\t\t\t\t\t\tnewCounts[ns] = tempHashCounts[s];\n\t\t\t\t\t}\n\t\t\t\t\ttempHashKeys = newKeys;\n\t\t\t\t\ttempHashCounts = newCounts;\n\n\t\t\t\t\tslot = cellHash(cx, cy, newMask);\n\t\t\t\t\twhile (tempHashKeys[slot * 2] !== cx || tempHashKeys[slot * 2 + 1] !== cy) {\n\t\t\t\t\t\tslot = (slot + 1) & newMask;\n\t\t\t\t\t}\n\t\t\t\t\tpointCellSlot[i] = slot;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (kx === cx && tempHashKeys[slot * 2 + 1] === cy) {\n\t\t\t\ttempHashCounts[slot] += 1;\n\t\t\t\tpointCellSlot[i] = slot;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tslot = (slot + 1) & hashMask;\n\t\t}\n\t}\n\n\t// --- Pass 3: compute offsets via prefix sum ---\n\tconst finalHashMask = (hashCapacity - 1);\n\tconst cellKeys = new Int32Array(cellCount * 2);\n\tconst cellOffsets = new Uint32Array(cellCount);\n\tconst cellLengths = new Uint32Array(cellCount);\n\tconst slotToCellIndex = new Int32Array(hashCapacity);\n\tslotToCellIndex.fill(HASH_EMPTY);\n\n\tlet cellIdx = 0;\n\tlet offset = 0;\n\tfor (let s = 0; s < hashCapacity; s += 1) {\n\t\tif (tempHashKeys[s * 2] === 0x7FFFFFFF) continue;\n\t\tcellKeys[cellIdx * 2] = tempHashKeys[s * 2];\n\t\tcellKeys[cellIdx * 2 + 1] = tempHashKeys[s * 2 + 1];\n\t\tcellOffsets[cellIdx] = offset;\n\t\tcellLengths[cellIdx] = tempHashCounts[s];\n\t\tslotToCellIndex[s] = cellIdx;\n\t\toffset += tempHashCounts[s];\n\t\tcellIdx += 1;\n\t}\n\n\t// --- Pass 4: scatter point indices into flat array ---\n\tconst pointIndices = new Uint32Array(validCount);\n\tconst fillCursor = new Uint32Array(cellCount);\n\tfillCursor.set(cellOffsets);\n\n\tif (drawIndices) {\n\t\tfor (let i = 0; i < validCount; i += 1) {\n\t\t\tconst ci = slotToCellIndex[pointCellSlot[i]];\n\t\t\tpointIndices[fillCursor[ci]] = drawIndices[i];\n\t\t\tfillCursor[ci] += 1;\n\t\t}\n\t} else {\n\t\tlet srcIdx = 0;\n\t\tfor (let i = 0; i < safeCount; i += 1) {\n\t\t\tconst px = positions[i * 2];\n\t\t\tconst py = positions[i * 2 + 1];\n\t\t\tif (!Number.isFinite(px) || !Number.isFinite(py)) continue;\n\t\t\tconst ci = slotToCellIndex[pointCellSlot[srcIdx]];\n\t\t\tpointIndices[fillCursor[ci]] = i;\n\t\t\tfillCursor[ci] += 1;\n\t\t\tsrcIdx += 1;\n\t\t}\n\t}\n\n\t// --- Build final hash table for main-thread lookup ---\n\tlet finalCap = 1;\n\twhile (finalCap < cellCount * 2) finalCap <<= 1;\n\tconst finalMask = finalCap - 1;\n\tconst hashTable = new Int32Array(finalCap);\n\thashTable.fill(HASH_EMPTY);\n\n\tfor (let i = 0; i < cellCount; i += 1) {\n\t\tconst cx = cellKeys[i * 2];\n\t\tconst cy = cellKeys[i * 2 + 1];\n\t\tlet slot = cellHash(cx, cy, finalMask);\n\t\twhile (hashTable[slot] !== HASH_EMPTY) slot = (slot + 1) & finalMask;\n\t\thashTable[slot] = i;\n\t}\n\n\treturn {\n\t\ttype: \"point-hit-index-success\",\n\t\tid: msg.id,\n\t\tcellSize,\n\t\tsafeCount,\n\t\tcellCount,\n\t\thashCapacity: finalCap,\n\t\thashTable: hashTable.buffer,\n\t\tcellKeys: cellKeys.buffer,\n\t\tcellOffsets: cellOffsets.buffer,\n\t\tcellLengths: cellLengths.buffer,\n\t\tpointIndices: pointIndices.buffer,\n\t\tdurationMs: nowMs() - start,\n\t};\n}\n\ninterface WorkerScope {\n\tpostMessage(message: unknown, transfer?: Transferable[]): void;\n\taddEventListener(type: \"message\", listener: (event: MessageEvent<PointHitIndexWorkerRequest>) => void): void;\n}\n\nconst workerScope = self as unknown as WorkerScope;\n\nworkerScope.addEventListener(\"message\", (event: MessageEvent<PointHitIndexWorkerRequest>) => {\n\tconst data = event.data;\n\tif (!data || data.type !== \"point-hit-index-request\") return;\n\n\ttry {\n\t\tconst result = handleRequest(data);\n\t\tif (!result) {\n\t\t\tconst empty: PointHitIndexWorkerSuccess = {\n\t\t\t\ttype: \"point-hit-index-success\",\n\t\t\t\tid: data.id,\n\t\t\t\tcellSize: 0,\n\t\t\t\tsafeCount: 0,\n\t\t\t\tcellCount: 0,\n\t\t\t\thashCapacity: 0,\n\t\t\t\thashTable: new Int32Array(0).buffer,\n\t\t\t\tcellKeys: new Int32Array(0).buffer,\n\t\t\t\tcellOffsets: new Uint32Array(0).buffer,\n\t\t\t\tcellLengths: new Uint32Array(0).buffer,\n\t\t\t\tpointIndices: new Uint32Array(0).buffer,\n\t\t\t\tdurationMs: 0,\n\t\t\t};\n\t\t\tworkerScope.postMessage(empty, [\n\t\t\t\tempty.hashTable, empty.cellKeys,\n\t\t\t\tempty.cellOffsets, empty.cellLengths, empty.pointIndices,\n\t\t\t]);\n\t\t\treturn;\n\t\t}\n\t\tworkerScope.postMessage(result, [\n\t\t\tresult.hashTable, result.cellKeys,\n\t\t\tresult.cellOffsets, result.cellLengths, result.pointIndices,\n\t\t]);\n\t} catch (error) {\n\t\tconst fail: PointHitIndexWorkerResponse = {\n\t\t\ttype: \"point-hit-index-failure\",\n\t\t\tid: data.id,\n\t\t\terror: toErrorMessage(error),\n\t\t};\n\t\tworkerScope.postMessage(fail);\n\t}\n});\n"],"names":["nowMs","toErrorMessage","error","resolveGridSize","sourceWidth","sourceHeight","visibleCount","area","raw","cellHash","cellX","cellY","mask","handleRequest","msg","start","count","positions","maxCountByPositions","safeCount","drawIndices","allValid","i","filtered","cursor","cellSize","invCellSize","pointCellX","pointCellY","validCount","pi","px","py","estimatedCells","hashCapacity","hashMask","tempHashKeys","tempHashCounts","cellCount","pointCellSlot","cx","cy","slot","kx","oldCap","newMask","newKeys","newCounts","s","ocx","ocy","ns","cellKeys","cellOffsets","cellLengths","slotToCellIndex","cellIdx","offset","pointIndices","fillCursor","ci","srcIdx","finalCap","finalMask","hashTable","workerScope","event","data","result","empty","fail"],"mappings":"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"}
|