@developmentseed/deck.gl-geotiff 0.6.1 → 0.7.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.
- package/dist/cog-layer.d.ts +6 -5
- package/dist/cog-layer.d.ts.map +1 -1
- package/dist/cog-layer.js.map +1 -1
- package/dist/geotiff/render-pipeline.js +8 -7
- package/dist/geotiff/render-pipeline.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mosaic-layer/mosaic-layer.d.ts +57 -4
- package/dist/mosaic-layer/mosaic-layer.d.ts.map +1 -1
- package/dist/mosaic-layer/mosaic-layer.js +76 -8
- package/dist/mosaic-layer/mosaic-layer.js.map +1 -1
- package/dist/mosaic-layer/mosaic-tileset-2d.d.ts +37 -7
- package/dist/mosaic-layer/mosaic-tileset-2d.d.ts.map +1 -1
- package/dist/mosaic-layer/mosaic-tileset-2d.js +55 -30
- package/dist/mosaic-layer/mosaic-tileset-2d.js.map +1 -1
- package/dist/multi-cog-layer.d.ts +27 -64
- package/dist/multi-cog-layer.d.ts.map +1 -1
- package/dist/multi-cog-layer.js +70 -173
- package/dist/multi-cog-layer.js.map +1 -1
- package/package.json +10 -10
- package/dist/geotiff-layer.d.ts +0 -90
- package/dist/geotiff-layer.d.ts.map +0 -1
- package/dist/geotiff-layer.js +0 -81
- package/dist/geotiff-layer.js.map +0 -1
- package/dist/geotiff-reprojection.d.ts +0 -12
- package/dist/geotiff-reprojection.d.ts.map +0 -1
- package/dist/geotiff-reprojection.js +0 -26
- package/dist/geotiff-reprojection.js.map +0 -1
package/dist/cog-layer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { UpdateParameters } from "@deck.gl/core";
|
|
2
|
-
import type { MinimalTileData, GetTileDataOptions as RasterTileGetTileDataOptions, RasterTileLayerProps,
|
|
2
|
+
import type { MinimalTileData, GetTileDataOptions as RasterTileGetTileDataOptions, RasterTileLayerProps, RasterTilesetDescriptor, RenderTileResult } from "@developmentseed/deck.gl-raster";
|
|
3
3
|
import { RasterTileLayer } from "@developmentseed/deck.gl-raster";
|
|
4
4
|
import type { DecoderPool, GeoTIFF, Overview } from "@developmentseed/geotiff";
|
|
5
5
|
import type { EpsgResolver, ProjectionDefinition } from "@developmentseed/proj";
|
|
@@ -32,9 +32,10 @@ type COGLayerDataProps<DataT extends MinimalTileData> = {
|
|
|
32
32
|
* User-defined method to render data for a tile.
|
|
33
33
|
*
|
|
34
34
|
* Must be provided together with `getTileData`. Receives the value
|
|
35
|
-
* returned by `getTileData` and must return a render pipeline
|
|
35
|
+
* returned by `getTileData` and must return a render pipeline, or
|
|
36
|
+
* `null` to skip rendering for this tile.
|
|
36
37
|
*/
|
|
37
|
-
renderTile: (data: DataT) => RenderTileResult;
|
|
38
|
+
renderTile: (data: DataT) => RenderTileResult | null;
|
|
38
39
|
} | {
|
|
39
40
|
getTileData?: undefined;
|
|
40
41
|
renderTile?: undefined;
|
|
@@ -100,7 +101,7 @@ export declare class COGLayer<DataT extends MinimalTileData = DefaultDataT> exte
|
|
|
100
101
|
static defaultProps: typeof RasterTileLayer.defaultProps;
|
|
101
102
|
state: {
|
|
102
103
|
geotiff?: GeoTIFF;
|
|
103
|
-
tilesetDescriptor?:
|
|
104
|
+
tilesetDescriptor?: RasterTilesetDescriptor;
|
|
104
105
|
defaultGetTileData?: COGLayerProps<TextureDataT>["getTileData"];
|
|
105
106
|
defaultRenderTile?: COGLayerProps<TextureDataT>["renderTile"];
|
|
106
107
|
};
|
|
@@ -108,7 +109,7 @@ export declare class COGLayer<DataT extends MinimalTileData = DefaultDataT> exte
|
|
|
108
109
|
updateState(params: UpdateParameters<this>): void;
|
|
109
110
|
clearState(): void;
|
|
110
111
|
_parseGeoTIFF(): Promise<void>;
|
|
111
|
-
protected _tilesetDescriptor():
|
|
112
|
+
protected _tilesetDescriptor(): RasterTilesetDescriptor | undefined;
|
|
112
113
|
/**
|
|
113
114
|
* Adapts the user-facing `(image, { x, y, ... }) => Promise<DataT>` signature
|
|
114
115
|
* into RasterTileLayer's `(tile, { signal, device }) => Promise<DataT>`.
|
package/dist/cog-layer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cog-layer.d.ts","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,IAAI,4BAA4B,EAClD,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"cog-layer.d.ts","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"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"}
|
package/dist/cog-layer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cog-layer.js","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,aAAa,EACb,QAAQ,GACT,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"cog-layer.js","sourceRoot":"","sources":["../src/cog-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,7 +55,8 @@ function createUnormPipeline(geotiff, device) {
|
|
|
55
55
|
if (toRGBModule) {
|
|
56
56
|
renderPipeline.push(toRGBModule);
|
|
57
57
|
}
|
|
58
|
-
// For palette images, use nearest-neighbor sampling
|
|
58
|
+
// For palette images, use nearest-neighbor sampling, because indices into a
|
|
59
|
+
// colormap can't be interpolated
|
|
59
60
|
const samplerOptions = photometric === Photometric.Palette
|
|
60
61
|
? {
|
|
61
62
|
magFilter: "nearest",
|
|
@@ -92,11 +93,7 @@ function createUnormPipeline(geotiff, device) {
|
|
|
92
93
|
format: textureFormat,
|
|
93
94
|
width,
|
|
94
95
|
height,
|
|
95
|
-
|
|
96
|
-
sampler: {
|
|
97
|
-
minFilter: "nearest",
|
|
98
|
-
magFilter: "nearest",
|
|
99
|
-
},
|
|
96
|
+
sampler: samplerOptions,
|
|
100
97
|
});
|
|
101
98
|
let maskTexture;
|
|
102
99
|
if (mask !== null) {
|
|
@@ -106,7 +103,11 @@ function createUnormPipeline(geotiff, device) {
|
|
|
106
103
|
format: "r8unorm",
|
|
107
104
|
width,
|
|
108
105
|
height,
|
|
109
|
-
|
|
106
|
+
// Use nearest filtering for the mask to avoid interpolated edges/halos
|
|
107
|
+
sampler: {
|
|
108
|
+
minFilter: "nearest",
|
|
109
|
+
magFilter: "nearest",
|
|
110
|
+
},
|
|
110
111
|
});
|
|
111
112
|
byteLength += mask.byteLength;
|
|
112
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-pipeline.js","sourceRoot":"","sources":["../../src/geotiff/render-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG5D,OAAO,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,aAAa,EACb,WAAW,EACX,eAAe,EACf,WAAW,EACX,WAAW,GACZ,MAAM,6CAA6C,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA6BlD,MAAM,UAAU,mBAAmB,CACjC,OAAgB,EAChB,MAAc;IAQd,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAC5C,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,QAAQ,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,oBAAoB;QACpB,KAAK,YAAY,CAAC,IAAI;YACpB,OAAO,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,IAAI,KAAK,CACb,8FAA8F,YAAY,EAAE,CAC7G,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,OAAgB,EAChB,MAAc;IAQd,MAAM,EACJ,aAAa,EACb,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,eAAe,EACf,MAAM,GACP,GAAG,OAAO,CAAC,UAAU,CAAC;IAEvB,MAAM,cAAc,GAA2C;QAC7D;YACE,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE;gBACL,WAAW,EAAE,CAAC,IAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO;aAClD;SACF;KACF,CAAC;IAEF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,kEAAkE;QAClE,MAAM,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;QAErC,cAAc,CAAC,IAAI,CAAC;YAClB,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC/B,cAAc,CAAC,IAAI,CAAC;YAClB,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE;gBACL,mEAAmE;gBACnE,WAAW,EAAE,CAAC,IAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAe;aAC1D;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAG,8BAA8B,CAAC;QACjD,KAAK,EAAE,eAAe;QACtB,WAAW;QACX,MAAM;QACN,QAAQ;KACT,CAAC,CAAC;IACH,IAAI,WAAW,EAAE,CAAC;QAChB,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"render-pipeline.js","sourceRoot":"","sources":["../../src/geotiff/render-pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export type { COGLayerProps, GetTileDataOptions,
|
|
1
|
+
export type { COGLayerProps, GetTileDataOptions, } from "./cog-layer.js";
|
|
2
2
|
export { COGLayer } from "./cog-layer.js";
|
|
3
|
+
export { addAlphaChannel } from "./geotiff/geotiff.js";
|
|
3
4
|
export * as texture from "./geotiff/texture.js";
|
|
4
5
|
export type { MosaicLayerProps } from "./mosaic-layer/mosaic-layer.js";
|
|
5
6
|
export { MosaicLayer } from "./mosaic-layer/mosaic-layer.js";
|
|
6
|
-
export {
|
|
7
|
+
export type { MosaicSource } from "./mosaic-layer/mosaic-tileset-2d.js";
|
|
7
8
|
export type { MultiCOGLayerProps, MultiCOGSourceConfig, } from "./multi-cog-layer.js";
|
|
8
9
|
export { MultiCOGLayer } from "./multi-cog-layer.js";
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,YAAY,EACV,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { COGLayer } from "./cog-layer.js";
|
|
2
|
+
export { addAlphaChannel } from "./geotiff/geotiff.js";
|
|
2
3
|
export * as texture from "./geotiff/texture.js";
|
|
3
4
|
export { MosaicLayer } from "./mosaic-layer/mosaic-layer.js";
|
|
4
|
-
export { MosaicTileset2D, } from "./mosaic-layer/mosaic-tileset-2d.js";
|
|
5
5
|
export { MultiCOGLayer } from "./multi-cog-layer.js";
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAM7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1,10 +1,29 @@
|
|
|
1
|
-
import type { CompositeLayerProps, Layer, LayersList } from "@deck.gl/core";
|
|
1
|
+
import type { CompositeLayerProps, Layer, LayerContext, LayersList, UpdateParameters } from "@deck.gl/core";
|
|
2
2
|
import { CompositeLayer } from "@deck.gl/core";
|
|
3
3
|
import type { TileLayerProps } from "@deck.gl/geo-layers";
|
|
4
4
|
import { TileLayer } from "@deck.gl/geo-layers";
|
|
5
|
+
import Flatbush from "flatbush";
|
|
5
6
|
import type { MosaicSource } from "./mosaic-tileset-2d.js";
|
|
6
|
-
export type MosaicLayerProps<MosaicT extends MosaicSource = MosaicSource, DataT = any> = CompositeLayerProps & Pick<TileLayerProps, "extent" | "
|
|
7
|
-
/**
|
|
7
|
+
export type MosaicLayerProps<MosaicT extends MosaicSource = MosaicSource, DataT = any> = CompositeLayerProps & Pick<TileLayerProps, "debounceTime" | "extent" | "maxCacheByteSize" | "maxCacheSize" | "maxRequests" | "maxZoom" | "minZoom"> & {
|
|
8
|
+
/**
|
|
9
|
+
* List of mosaic sources to render.
|
|
10
|
+
*
|
|
11
|
+
* The mosaic updates reactively when this prop is replaced with a new
|
|
12
|
+
* array reference. Mutating the array in place will not trigger an
|
|
13
|
+
* update — pass a fresh array (e.g. `[...sources, newItem]`) to add or
|
|
14
|
+
* remove items.
|
|
15
|
+
*
|
|
16
|
+
* Tile cache reuse depends on stable tile IDs. By default, each source's
|
|
17
|
+
* tile ID is derived from its position in this array (see
|
|
18
|
+
* `MosaicSource.id`), so:
|
|
19
|
+
*
|
|
20
|
+
* - Appending items preserves all existing rendered tiles.
|
|
21
|
+
* - Reordering or removing items from the middle of the array invalidates
|
|
22
|
+
* the cache slots of shifted items, causing them to re-fetch.
|
|
23
|
+
*
|
|
24
|
+
* Supply an explicit `id` per source if you need cache stability across
|
|
25
|
+
* arbitrary mutations of `sources`.
|
|
26
|
+
*/
|
|
8
27
|
sources: MosaicT[];
|
|
9
28
|
/** Fetch data for this source. */
|
|
10
29
|
getSource?: (source: MosaicT, opts: {
|
|
@@ -15,6 +34,34 @@ export type MosaicLayerProps<MosaicT extends MosaicSource = MosaicSource, DataT
|
|
|
15
34
|
data?: DataT;
|
|
16
35
|
signal?: AbortSignal;
|
|
17
36
|
}) => Layer | LayersList | null;
|
|
37
|
+
/**
|
|
38
|
+
* Called after a source's data has loaded successfully. `data` is the
|
|
39
|
+
* value returned by `getSource`, or `undefined` when no `getSource` was
|
|
40
|
+
* supplied.
|
|
41
|
+
*/
|
|
42
|
+
onSourceLoad?: (source: MosaicT, info: {
|
|
43
|
+
data?: DataT;
|
|
44
|
+
}) => void;
|
|
45
|
+
/**
|
|
46
|
+
* Called when fetching a source's data fails.
|
|
47
|
+
*/
|
|
48
|
+
onSourceError?: (source: MosaicT, info: {
|
|
49
|
+
error: Error;
|
|
50
|
+
}) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Called when a source is evicted from the tile cache.
|
|
53
|
+
*/
|
|
54
|
+
onSourceUnload?: (source: MosaicT, info: {
|
|
55
|
+
data?: DataT;
|
|
56
|
+
}) => void;
|
|
57
|
+
/**
|
|
58
|
+
* Called when all sources currently in the viewport have finished
|
|
59
|
+
* loading.
|
|
60
|
+
*/
|
|
61
|
+
onViewportLoad?: (entries: Array<{
|
|
62
|
+
source: MosaicT;
|
|
63
|
+
data?: DataT;
|
|
64
|
+
}>) => void;
|
|
18
65
|
};
|
|
19
66
|
/**
|
|
20
67
|
* A deck.gl layer for rendering a mosaic of raster sources.
|
|
@@ -25,7 +72,13 @@ export type MosaicLayerProps<MosaicT extends MosaicSource = MosaicSource, DataT
|
|
|
25
72
|
export declare class MosaicLayer<MosaicT extends MosaicSource = MosaicSource, DataT = any> extends CompositeLayer<MosaicLayerProps<MosaicT, DataT>> {
|
|
26
73
|
static layerName: string;
|
|
27
74
|
static defaultProps: Partial<MosaicLayerProps<MosaicSource, any>>;
|
|
28
|
-
|
|
75
|
+
state: {
|
|
76
|
+
index: Flatbush | null;
|
|
77
|
+
};
|
|
78
|
+
initializeState(context: LayerContext): void;
|
|
79
|
+
updateState(params: UpdateParameters<this>): void;
|
|
80
|
+
private _buildSpatialIndex;
|
|
81
|
+
renderTileLayer(renderSource: MosaicLayerProps<MosaicT, DataT>["renderSource"]): TileLayer;
|
|
29
82
|
renderLayers(): Layer | null | LayersList;
|
|
30
83
|
}
|
|
31
84
|
//# sourceMappingURL=mosaic-layer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mosaic-layer.d.ts","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"mosaic-layer.d.ts","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,KAAK,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,MAAM,gBAAgB,CAC1B,OAAO,SAAS,YAAY,GAAG,YAAY,EAC3C,KAAK,GAAG,GAAG,IACT,mBAAmB,GACrB,IAAI,CACF,cAAc,EACZ,cAAc,GACd,QAAQ,GACR,kBAAkB,GAClB,cAAc,GACd,aAAa,GACb,SAAS,GACT,SAAS,CACZ,GAAG;IACF;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,EAAE,OAAO,EAAE,CAAC;IAEnB,kCAAkC;IAClC,SAAS,CAAC,EAAE,CACV,MAAM,EAAE,OAAO,EACf,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAC3B,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpB,sBAAsB;IACtB,YAAY,EAAE,CACZ,MAAM,EAAE,OAAO,EACf,IAAI,EAAE;QACJ,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,KACE,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;IAE/B;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAC;IAEjE;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAC;IAElE;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,KAAK,CAAA;KAAE,KAAK,IAAI,CAAC;IAEnE;;;OAGG;IACH,cAAc,CAAC,EAAE,CACf,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC,KAC9C,IAAI,CAAC;CACX,CAAC;AAMJ;;;;;GAKG;AACH,qBAAa,WAAW,CACtB,OAAO,SAAS,YAAY,GAAG,YAAY,EAC3C,KAAK,GAAG,GAAG,CACX,SAAQ,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxD,OAAgB,SAAS,SAAiB;IAC1C,OAAgB,YAAY,+CAAgB;IAEpC,KAAK,EAAE;QAEb,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;KACxB,CAAC;IAEO,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAK5C,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI;IAU1D,OAAO,CAAC,kBAAkB;IAgB1B,eAAe,CACb,YAAY,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,cAAc,CAAC,GAC7D,SAAS;IAmGH,YAAY,IAAI,KAAK,GAAG,IAAI,GAAG,UAAU;CAYnD"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { CompositeLayer } from "@deck.gl/core";
|
|
2
2
|
import { TileLayer } from "@deck.gl/geo-layers";
|
|
3
|
+
import Flatbush from "flatbush";
|
|
3
4
|
import { MosaicTileset2D } from "./mosaic-tileset-2d.js";
|
|
4
|
-
const defaultProps = {
|
|
5
|
+
const defaultProps = {
|
|
6
|
+
sources: [],
|
|
7
|
+
};
|
|
5
8
|
/**
|
|
6
9
|
* A deck.gl layer for rendering a mosaic of raster sources.
|
|
7
10
|
*
|
|
@@ -11,11 +14,40 @@ const defaultProps = {};
|
|
|
11
14
|
export class MosaicLayer extends CompositeLayer {
|
|
12
15
|
static layerName = "MosaicLayer";
|
|
13
16
|
static defaultProps = defaultProps;
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
initializeState(context) {
|
|
18
|
+
super.initializeState(context);
|
|
19
|
+
this._buildSpatialIndex();
|
|
20
|
+
}
|
|
21
|
+
updateState(params) {
|
|
22
|
+
super.updateState(params);
|
|
23
|
+
const { props, oldProps } = params;
|
|
24
|
+
if (props.sources !== oldProps.sources) {
|
|
25
|
+
this._buildSpatialIndex();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
_buildSpatialIndex() {
|
|
29
|
+
const { sources } = this.props;
|
|
30
|
+
if (sources.length === 0) {
|
|
31
|
+
this.setState({ index: null });
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const index = new Flatbush(sources.length);
|
|
35
|
+
for (const source of sources) {
|
|
36
|
+
index.add(...source.bbox);
|
|
37
|
+
}
|
|
38
|
+
index.finish();
|
|
39
|
+
this.setState({ index });
|
|
40
|
+
}
|
|
41
|
+
renderTileLayer(renderSource) {
|
|
42
|
+
const { id, minZoom, maxZoom, debounceTime, extent, maxCacheByteSize, maxCacheSize, maxRequests, onSourceLoad, onSourceError, onSourceUnload, onViewportLoad, } = this.props;
|
|
43
|
+
// Arrow functions bind to the MosaicLayer instance, which deck.gl reuses
|
|
44
|
+
// across prop updates — so `this.props` and `this.state` always reflect
|
|
45
|
+
// the latest values when the tileset reads them.
|
|
46
|
+
const getSources = () => this.props.sources;
|
|
47
|
+
const getIndex = () => this.state.index;
|
|
16
48
|
class MosaicTileset2DFactory extends MosaicTileset2D {
|
|
17
49
|
constructor(opts) {
|
|
18
|
-
super(
|
|
50
|
+
super(getSources, getIndex, opts);
|
|
19
51
|
}
|
|
20
52
|
}
|
|
21
53
|
return new TileLayer({
|
|
@@ -23,14 +55,15 @@ export class MosaicLayer extends CompositeLayer {
|
|
|
23
55
|
TilesetClass: MosaicTileset2DFactory,
|
|
24
56
|
minZoom,
|
|
25
57
|
maxZoom,
|
|
58
|
+
debounceTime,
|
|
26
59
|
extent,
|
|
27
60
|
...(maxCacheByteSize !== undefined && { maxCacheByteSize }),
|
|
28
61
|
maxCacheSize,
|
|
29
62
|
maxRequests,
|
|
30
63
|
getTileData: async (data) => {
|
|
31
64
|
// We hard-cast this because TilesetClass is not generic.
|
|
32
|
-
//
|
|
33
|
-
//
|
|
65
|
+
// MosaicTileset2D returns MosaicT in `index`, but TileLayer's typing
|
|
66
|
+
// exposes only the plain `TileIndex` here.
|
|
34
67
|
const index = data.index;
|
|
35
68
|
const { signal } = data;
|
|
36
69
|
const userData = this.props.getSource &&
|
|
@@ -46,14 +79,49 @@ export class MosaicLayer extends CompositeLayer {
|
|
|
46
79
|
const { source, signal, data: userData } = data;
|
|
47
80
|
return renderSource(source, { data: userData, signal });
|
|
48
81
|
},
|
|
82
|
+
...(onSourceLoad && {
|
|
83
|
+
onTileLoad: (tile) => {
|
|
84
|
+
// `tile.index` is a `ResolvedSource<MosaicT>` from
|
|
85
|
+
// MosaicTileset2D.getTileIndices, which structurally extends
|
|
86
|
+
// MosaicT.
|
|
87
|
+
const source = tile.index;
|
|
88
|
+
onSourceLoad(source, { data: tile.content?.data });
|
|
89
|
+
},
|
|
90
|
+
}),
|
|
91
|
+
...(onSourceError && {
|
|
92
|
+
onTileError: (error, tile) => {
|
|
93
|
+
if (!tile) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const source = tile.index;
|
|
97
|
+
onSourceError(source, { error });
|
|
98
|
+
},
|
|
99
|
+
}),
|
|
100
|
+
...(onSourceUnload && {
|
|
101
|
+
onTileUnload: (tile) => {
|
|
102
|
+
const source = tile.index;
|
|
103
|
+
onSourceUnload(source, { data: tile.content?.data });
|
|
104
|
+
},
|
|
105
|
+
}),
|
|
106
|
+
...(onViewportLoad && {
|
|
107
|
+
onViewportLoad: (tiles) => {
|
|
108
|
+
onViewportLoad(tiles.map((tile) => ({
|
|
109
|
+
source: tile.index,
|
|
110
|
+
data: tile.content?.data,
|
|
111
|
+
})));
|
|
112
|
+
},
|
|
113
|
+
}),
|
|
49
114
|
});
|
|
50
115
|
}
|
|
51
116
|
renderLayers() {
|
|
52
117
|
const { sources, renderSource } = this.props;
|
|
53
|
-
if (!sources
|
|
118
|
+
if (!sources) {
|
|
54
119
|
return null;
|
|
55
120
|
}
|
|
56
|
-
|
|
121
|
+
// Note: we deliberately render the inner TileLayer even when `sources` is
|
|
122
|
+
// empty so the same Tileset2D instance lives across empty -> non-empty
|
|
123
|
+
// transitions and picks up later updates without recreation.
|
|
124
|
+
return this.renderTileLayer(renderSource);
|
|
57
125
|
}
|
|
58
126
|
}
|
|
59
127
|
//# sourceMappingURL=mosaic-layer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mosaic-layer.js","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-layer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mosaic-layer.js","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-layer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Viewport } from "@deck.gl/core";
|
|
2
2
|
import type { _Tileset2DProps as Tileset2DProps } from "@deck.gl/geo-layers";
|
|
3
3
|
import { _Tileset2D as Tileset2D } from "@deck.gl/geo-layers";
|
|
4
|
+
import type Flatbush from "flatbush";
|
|
4
5
|
/** Tile index.
|
|
5
6
|
*
|
|
6
7
|
* Note this is essentially just to type-check deck.gl, since getTileIndices
|
|
@@ -15,9 +16,14 @@ export type TileIndex = {
|
|
|
15
16
|
* Minimal required interface of a mosaic item.
|
|
16
17
|
*/
|
|
17
18
|
export type MosaicSource = {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Optional stable identifier used as this source's tile-cache key in the
|
|
21
|
+
* inner Tileset2D. Defaults to the source's position in the `sources`
|
|
22
|
+
* array. Supply an explicit value when the sources list is reordered or
|
|
23
|
+
* spliced at runtime, so a given source keeps the same cache slot across
|
|
24
|
+
* updates.
|
|
25
|
+
*/
|
|
26
|
+
id?: string;
|
|
21
27
|
/**
|
|
22
28
|
* Geographic bounds (WGS84) of the source in [minX, minY, maxX, maxY] format
|
|
23
29
|
*/
|
|
@@ -28,15 +34,39 @@ export type MosaicSource = {
|
|
|
28
34
|
*
|
|
29
35
|
* This is intended to be used for a collection of image mosaics, where we want
|
|
30
36
|
* to render all images currently visible in the viewport.
|
|
37
|
+
*
|
|
38
|
+
* The constructor accepts a `getSources` closure rather than a sources array
|
|
39
|
+
* so that updates to the parent layer's `sources` prop are picked up across
|
|
40
|
+
* the tileset's lifetime. The spatial index is rebuilt on demand whenever the
|
|
41
|
+
* closure returns a new array reference (compared by `===`); mutating the
|
|
42
|
+
* array in place will not be detected.
|
|
31
43
|
*/
|
|
44
|
+
/** A source augmented with the `TileIndex` fields and a resolved `id`
|
|
45
|
+
* (defaulting to the array position) so deck.gl typing is satisfied and the
|
|
46
|
+
* cache identifier is always defined. */
|
|
47
|
+
type ResolvedSource<MosaicT> = TileIndex & MosaicT & {
|
|
48
|
+
id: string;
|
|
49
|
+
};
|
|
32
50
|
export declare class MosaicTileset2D<MosaicT extends MosaicSource> extends Tileset2D {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
51
|
+
/** Closure returning the parent layer's current sources array. Re-evaluated
|
|
52
|
+
* on each `getTileIndices` call so updates to the layer's `sources` prop
|
|
53
|
+
* propagate without recreating the tileset. */
|
|
54
|
+
private getSources;
|
|
55
|
+
/** Access the spatial index on the MosaicLayer instance. */
|
|
56
|
+
private getIndex;
|
|
57
|
+
constructor(getSources: () => MosaicT[], getIndex: () => Flatbush | null, opts: Tileset2DProps);
|
|
58
|
+
/** The Tileset2D cache key for a source. */
|
|
59
|
+
getTileId(tileIndex: TileIndex): string;
|
|
60
|
+
/** Must override to provide a zoom level for the tile. */
|
|
61
|
+
getTileZoom(_tileIndex: TileIndex): number;
|
|
62
|
+
/** Must override because our tileIndex does not have x, y, z */
|
|
63
|
+
getTileMetadata(tileIndex: TileIndex): Record<string, any>;
|
|
64
|
+
getParentIndex(tileIndex: TileIndex): TileIndex;
|
|
36
65
|
getTileIndices({ viewport, maxZoom, minZoom, }: {
|
|
37
66
|
viewport: Viewport;
|
|
38
67
|
maxZoom?: number;
|
|
39
68
|
minZoom?: number;
|
|
40
|
-
}):
|
|
69
|
+
}): ResolvedSource<MosaicT>[];
|
|
41
70
|
}
|
|
71
|
+
export {};
|
|
42
72
|
//# sourceMappingURL=mosaic-tileset-2d.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mosaic-tileset-2d.d.ts","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-tileset-2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"mosaic-tileset-2d.d.ts","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-tileset-2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAErC;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;;;;;OAMG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH;;yCAEyC;AACzC,KAAK,cAAc,CAAC,OAAO,IAAI,SAAS,GAAG,OAAO,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,qBAAa,eAAe,CAAC,OAAO,SAAS,YAAY,CAAE,SAAQ,SAAS;IAC1E;;mDAE+C;IAC/C,OAAO,CAAC,UAAU,CAAkB;IAEpC,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAwB;gBAGtC,UAAU,EAAE,MAAM,OAAO,EAAE,EAC3B,QAAQ,EAAE,MAAM,QAAQ,GAAG,IAAI,EAC/B,IAAI,EAAE,cAAc;IAOtB,4CAA4C;IACnC,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAMhD,0DAA0D;IACjD,WAAW,CAAC,UAAU,EAAE,SAAS,GAAG,MAAM;IAInD,gEAAgE;IACvD,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAK1D,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS;IAI/C,cAAc,CAAC,EACtB,QAAQ,EACR,OAAO,EACP,OAAO,GACR,EAAE;QACD,QAAQ,EAAE,QAAQ,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE;CA4C9B"}
|
|
@@ -1,33 +1,34 @@
|
|
|
1
1
|
import { _Tileset2D as Tileset2D } from "@deck.gl/geo-layers";
|
|
2
|
-
import
|
|
3
|
-
/**
|
|
4
|
-
* A deck.gl Tileset2D for navigating an arbitrary collection of bounding boxes.
|
|
5
|
-
*
|
|
6
|
-
* This is intended to be used for a collection of image mosaics, where we want
|
|
7
|
-
* to render all images currently visible in the viewport.
|
|
8
|
-
*/
|
|
2
|
+
import { _sortItemsByDistanceFromViewportCenter as sortItemsByDistanceFromViewportCenter } from "@developmentseed/deck.gl-raster";
|
|
9
3
|
export class MosaicTileset2D extends Tileset2D {
|
|
10
|
-
sources
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
/** Closure returning the parent layer's current sources array. Re-evaluated
|
|
5
|
+
* on each `getTileIndices` call so updates to the layer's `sources` prop
|
|
6
|
+
* propagate without recreating the tileset. */
|
|
7
|
+
getSources;
|
|
8
|
+
/** Access the spatial index on the MosaicLayer instance. */
|
|
9
|
+
getIndex;
|
|
10
|
+
constructor(getSources, getIndex, opts) {
|
|
13
11
|
super(opts);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
12
|
+
this.getIndex = getIndex;
|
|
13
|
+
this.getSources = getSources;
|
|
14
|
+
}
|
|
15
|
+
/** The Tileset2D cache key for a source. */
|
|
16
|
+
getTileId(tileIndex) {
|
|
17
|
+
// `getTileIndices` always returns `ResolvedSource`s, so an `id` is
|
|
18
|
+
// present on every value deck.gl will pass back here.
|
|
19
|
+
return tileIndex.id;
|
|
20
|
+
}
|
|
21
|
+
/** Must override to provide a zoom level for the tile. */
|
|
22
|
+
getTileZoom(_tileIndex) {
|
|
23
|
+
return 0;
|
|
24
|
+
}
|
|
25
|
+
/** Must override because our tileIndex does not have x, y, z */
|
|
26
|
+
getTileMetadata(tileIndex) {
|
|
27
|
+
const { id, bbox } = tileIndex;
|
|
28
|
+
return { id, bbox };
|
|
29
|
+
}
|
|
30
|
+
getParentIndex(tileIndex) {
|
|
31
|
+
return tileIndex;
|
|
31
32
|
}
|
|
32
33
|
getTileIndices({ viewport, maxZoom, minZoom, }) {
|
|
33
34
|
if (viewport.zoom < (minZoom ?? -Infinity)) {
|
|
@@ -36,9 +37,33 @@ export class MosaicTileset2D extends Tileset2D {
|
|
|
36
37
|
if (viewport.zoom > (maxZoom ?? Infinity)) {
|
|
37
38
|
return [];
|
|
38
39
|
}
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
const index = this.getIndex();
|
|
41
|
+
if (!index) {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
const viewportBounds = viewport.getBounds();
|
|
45
|
+
const indices = index.search(...viewportBounds);
|
|
46
|
+
const sources = this.getSources();
|
|
47
|
+
const selectedSources = indices.map((sourceIndex) => {
|
|
48
|
+
const source = sources[sourceIndex];
|
|
49
|
+
return {
|
|
50
|
+
// Remove once https://github.com/visgl/deck.gl/pull/10299
|
|
51
|
+
// is merged and released
|
|
52
|
+
x: 0,
|
|
53
|
+
y: 0,
|
|
54
|
+
z: 0,
|
|
55
|
+
...source,
|
|
56
|
+
id: source.id ?? String(sourceIndex),
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
const { maxRequests } = this.opts;
|
|
60
|
+
if (selectedSources.length <= maxRequests) {
|
|
61
|
+
return selectedSources;
|
|
62
|
+
}
|
|
63
|
+
return sortItemsByDistanceFromViewportCenter(selectedSources, viewport, (source) => {
|
|
64
|
+
const [minX, minY, maxX, maxY] = source.bbox;
|
|
65
|
+
return [(minX + maxX) * 0.5, (minY + maxY) * 0.5];
|
|
66
|
+
});
|
|
42
67
|
}
|
|
43
68
|
}
|
|
44
69
|
//# sourceMappingURL=mosaic-tileset-2d.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mosaic-tileset-2d.js","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-tileset-2d.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"mosaic-tileset-2d.js","sourceRoot":"","sources":["../../src/mosaic-layer/mosaic-tileset-2d.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,sCAAsC,IAAI,qCAAqC,EAAE,MAAM,iCAAiC,CAAC;AA6ClI,MAAM,OAAO,eAA8C,SAAQ,SAAS;IAC1E;;mDAE+C;IACvC,UAAU,CAAkB;IAEpC,4DAA4D;IACpD,QAAQ,CAAwB;IAExC,YACE,UAA2B,EAC3B,QAA+B,EAC/B,IAAoB;QAEpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,4CAA4C;IACnC,SAAS,CAAC,SAAoB;QACrC,mEAAmE;QACnE,sDAAsD;QACtD,OAAQ,SAAqC,CAAC,EAAE,CAAC;IACnD,CAAC;IAED,0DAA0D;IACjD,WAAW,CAAC,UAAqB;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,gEAAgE;IACvD,eAAe,CAAC,SAAoB;QAC3C,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,SAA+C,CAAC;QACrE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAEQ,cAAc,CAAC,SAAoB;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAEQ,cAAc,CAAC,EACtB,QAAQ,EACR,OAAO,EACP,OAAO,GAKR;QACC,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;YAClD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAE,CAAC;YACrC,OAAO;gBACL,0DAA0D;gBAC1D,yBAAyB;gBACzB,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,GAAG,MAAM;gBACT,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC;aACrC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAClC,IAAI,eAAe,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YAC1C,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,OAAO,qCAAqC,CAC1C,eAAe,EACf,QAAQ,EACR,CAAC,MAAM,EAAE,EAAE;YACT,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;YAC7C,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAU,CAAC;QAC7D,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
|