@loaders.gl/tiles 4.5.3 → 5.0.0-alpha.10
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/LICENSE +14 -3
- package/README.md +136 -1
- package/dist/dist.dev.js +22570 -4947
- package/dist/dist.min.js +3 -1
- package/dist/image-set.d.ts +94 -0
- package/dist/image-set.d.ts.map +1 -0
- package/dist/image-set.js +243 -0
- package/dist/image-set.js.map +1 -0
- package/dist/index.cjs +10171 -2117
- package/dist/index.cjs.map +3 -4
- package/dist/index.d.ts +50 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -8
- package/dist/index.js.map +1 -1
- package/dist/point-cloud/point-cloud-tile.d.ts +47 -0
- package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -0
- package/dist/point-cloud/point-cloud-tile.js +70 -0
- package/dist/point-cloud/point-cloud-tile.js.map +1 -0
- package/dist/point-cloud/point-cloud-tileset.d.ts +135 -0
- package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -0
- package/dist/point-cloud/point-cloud-tileset.js +549 -0
- package/dist/point-cloud/point-cloud-tileset.js.map +1 -0
- package/dist/point-cloud/types.d.ts +81 -0
- package/dist/point-cloud/types.d.ts.map +1 -0
- package/dist/point-cloud/types.js +5 -0
- package/dist/point-cloud/types.js.map +1 -0
- package/dist/raster-set.d.ts +124 -0
- package/dist/raster-set.d.ts.map +1 -0
- package/dist/raster-set.js +348 -0
- package/dist/raster-set.js.map +1 -0
- package/dist/spatial/format-spatial-reference.d.ts +68 -0
- package/dist/spatial/format-spatial-reference.d.ts.map +1 -0
- package/dist/spatial/format-spatial-reference.js +291 -0
- package/dist/spatial/format-spatial-reference.js.map +1 -0
- package/dist/spatial/get-spatial-coordinate-frame.d.ts +20 -0
- package/dist/spatial/get-spatial-coordinate-frame.d.ts.map +1 -0
- package/dist/spatial/get-spatial-coordinate-frame.js +139 -0
- package/dist/spatial/get-spatial-coordinate-frame.js.map +1 -0
- package/dist/spatial/i3s-elevation.d.ts +20 -0
- package/dist/spatial/i3s-elevation.d.ts.map +1 -0
- package/dist/spatial/i3s-elevation.js +90 -0
- package/dist/spatial/i3s-elevation.js.map +1 -0
- package/dist/spatial/i3s-spatial-transformer.d.ts +189 -0
- package/dist/spatial/i3s-spatial-transformer.d.ts.map +1 -0
- package/dist/spatial/i3s-spatial-transformer.js +686 -0
- package/dist/spatial/i3s-spatial-transformer.js.map +1 -0
- package/dist/spatial/normalize-crs-identifier.d.ts +15 -0
- package/dist/spatial/normalize-crs-identifier.d.ts.map +1 -0
- package/dist/spatial/normalize-crs-identifier.js +22 -0
- package/dist/spatial/normalize-crs-identifier.js.map +1 -0
- package/dist/spatial/spatial-coordinate-transformer.d.ts +52 -0
- package/dist/spatial/spatial-coordinate-transformer.d.ts.map +1 -0
- package/dist/spatial/spatial-coordinate-transformer.js +295 -0
- package/dist/spatial/spatial-coordinate-transformer.js.map +1 -0
- package/dist/spatial/spatial-resource-registry.d.ts +44 -0
- package/dist/spatial/spatial-resource-registry.d.ts.map +1 -0
- package/dist/spatial/spatial-resource-registry.js +67 -0
- package/dist/spatial/spatial-resource-registry.js.map +1 -0
- package/dist/spatial/spatial-types.d.ts +190 -0
- package/dist/spatial/spatial-types.d.ts.map +1 -0
- package/dist/spatial/spatial-types.js +192 -0
- package/dist/spatial/spatial-types.js.map +1 -0
- package/dist/spatial/tiles-3d-spatial-transformer.d.ts +32 -0
- package/dist/spatial/tiles-3d-spatial-transformer.d.ts.map +1 -0
- package/dist/spatial/tiles-3d-spatial-transformer.js +175 -0
- package/dist/spatial/tiles-3d-spatial-transformer.js.map +1 -0
- package/dist/tileset-2d/adapter.d.ts +37 -0
- package/dist/tileset-2d/adapter.d.ts.map +1 -0
- package/dist/tileset-2d/adapter.js +5 -0
- package/dist/tileset-2d/adapter.js.map +1 -0
- package/dist/tileset-2d/index.d.ts +7 -0
- package/dist/tileset-2d/index.d.ts.map +1 -0
- package/dist/tileset-2d/index.js +6 -0
- package/dist/tileset-2d/index.js.map +1 -0
- package/dist/tileset-2d/tile-2d-header.d.ts +68 -0
- package/dist/tileset-2d/tile-2d-header.d.ts.map +1 -0
- package/dist/tileset-2d/tile-2d-header.js +181 -0
- package/dist/tileset-2d/tile-2d-header.js.map +1 -0
- package/dist/tileset-2d/tileset-2d.d.ts +200 -0
- package/dist/tileset-2d/tileset-2d.d.ts.map +1 -0
- package/dist/tileset-2d/tileset-2d.js +532 -0
- package/dist/tileset-2d/tileset-2d.js.map +1 -0
- package/dist/tileset-2d/types.d.ts +44 -0
- package/dist/tileset-2d/types.d.ts.map +1 -0
- package/dist/tileset-2d/types.js +5 -0
- package/dist/tileset-2d/types.js.map +1 -0
- package/dist/tileset-2d.d.ts +2 -0
- package/dist/tileset-2d.d.ts.map +1 -0
- package/dist/tileset-2d.js +5 -0
- package/dist/tileset-2d.js.map +1 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts +60 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.d.ts.map +1 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js +130 -0
- package/dist/tileset-3d/common/indexed-archive-tileset-source.js.map +1 -0
- package/dist/tileset-3d/common/tile-3d-contracts.d.ts +63 -0
- package/dist/tileset-3d/common/tile-3d-contracts.d.ts.map +1 -0
- package/dist/tileset-3d/common/tile-3d-contracts.js +51 -0
- package/dist/tileset-3d/common/tile-3d-contracts.js.map +1 -0
- package/dist/tileset-3d/common/tile-3d.d.ts +410 -0
- package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -0
- package/dist/tileset-3d/common/tile-3d.js +1056 -0
- package/dist/tileset-3d/common/tile-3d.js.map +1 -0
- package/dist/tileset-3d/common/tileset-3d.d.ts +360 -0
- package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-3d.js +846 -0
- package/dist/tileset-3d/common/tileset-3d.js.map +1 -0
- package/dist/tileset-3d/common/tileset-cache.d.ts +29 -0
- package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-cache.js +12 -4
- package/dist/tileset-3d/common/tileset-cache.js.map +1 -0
- package/dist/tileset-3d/common/tileset-content-traversal.d.ts +37 -0
- package/dist/tileset-3d/common/tileset-content-traversal.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-content-traversal.js +80 -0
- package/dist/tileset-3d/common/tileset-content-traversal.js.map +1 -0
- package/dist/tileset-3d/common/tileset-observability.d.ts +60 -0
- package/dist/tileset-3d/common/tileset-observability.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-observability.js +39 -0
- package/dist/tileset-3d/common/tileset-observability.js.map +1 -0
- package/dist/tileset-3d/common/tileset-source.d.ts +228 -0
- package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -0
- package/dist/tileset-3d/common/tileset-source.js +17 -0
- package/dist/tileset-3d/common/tileset-source.js.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-traverser.d.ts +35 -3
- package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d/common}/tileset-traverser.js +61 -13
- package/dist/tileset-3d/common/tileset-traverser.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +182 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +681 -0
- package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +221 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +770 -0
- package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +110 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +331 -0
- package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.js +3 -0
- package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts +116 -0
- package/dist/tileset-3d/format-i3s/i3s-source.d.ts.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-source.js +450 -0
- package/dist/tileset-3d/format-i3s/i3s-source.js.map +1 -0
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.js +5 -2
- package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.d.ts +2 -2
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.js +17 -23
- package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.d.ts +1 -1
- package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/3d-tiles-options.js +3 -0
- package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/bounding-volume.d.ts +7 -3
- package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/bounding-volume.js +20 -91
- package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -0
- package/dist/tileset-3d/helpers/frame-state.d.ts +93 -0
- package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/frame-state.js +92 -10
- package/dist/tileset-3d/helpers/frame-state.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/i3s-lod.d.ts +1 -1
- package/dist/tileset-3d/helpers/i3s-lod.d.ts.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/i3s-lod.js +21 -9
- package/dist/tileset-3d/helpers/i3s-lod.js.map +1 -0
- package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts +17 -0
- package/dist/tileset-3d/helpers/s2-bounding-volume.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/s2-bounding-volume.js +20 -0
- package/dist/tileset-3d/helpers/s2-bounding-volume.js.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +72 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.js +257 -0
- package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
- package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
- package/dist/{tileset → tileset-3d}/helpers/transform-utils.d.ts +1 -1
- package/dist/tileset-3d/helpers/transform-utils.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/transform-utils.js.map +1 -0
- package/dist/tileset-3d/helpers/zoom.d.ts.map +1 -0
- package/dist/tileset-3d/helpers/zoom.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/doubly-linked-list.d.ts.map +1 -1
- package/dist/utils/doubly-linked-list.js +1 -0
- package/dist/utils/doubly-linked-list.js.map +1 -1
- package/dist/utils/managed-array.d.ts.map +1 -1
- package/dist/utils/managed-array.js +1 -0
- package/dist/utils/managed-array.js.map +1 -1
- package/package.json +12 -9
- package/src/image-set.ts +328 -0
- package/src/index.ts +157 -9
- package/src/point-cloud/point-cloud-tile.ts +80 -0
- package/src/point-cloud/point-cloud-tileset.ts +767 -0
- package/src/point-cloud/types.ts +99 -0
- package/src/raster-set.ts +504 -0
- package/src/spatial/format-spatial-reference.ts +385 -0
- package/src/spatial/get-spatial-coordinate-frame.ts +169 -0
- package/src/spatial/i3s-elevation.ts +96 -0
- package/src/spatial/i3s-spatial-transformer.ts +957 -0
- package/src/spatial/normalize-crs-identifier.ts +26 -0
- package/src/spatial/spatial-coordinate-transformer.ts +376 -0
- package/src/spatial/spatial-resource-registry.ts +79 -0
- package/src/spatial/spatial-types.ts +422 -0
- package/src/spatial/tiles-3d-spatial-transformer.ts +206 -0
- package/src/tileset-2d/adapter.ts +46 -0
- package/src/tileset-2d/index.ts +33 -0
- package/src/tileset-2d/tile-2d-header.ts +224 -0
- package/src/tileset-2d/tileset-2d.ts +715 -0
- package/src/tileset-2d/types.ts +39 -0
- package/src/tileset-2d.ts +5 -0
- package/src/tileset-3d/common/indexed-archive-tileset-source.ts +205 -0
- package/src/tileset-3d/common/tile-3d-contracts.ts +115 -0
- package/src/tileset-3d/common/tile-3d.ts +1310 -0
- package/src/tileset-3d/common/tileset-3d.ts +1166 -0
- package/src/{tileset → tileset-3d/common}/tileset-cache.ts +16 -8
- package/src/tileset-3d/common/tileset-content-traversal.ts +114 -0
- package/src/tileset-3d/common/tileset-observability.ts +100 -0
- package/src/tileset-3d/common/tileset-source.ts +284 -0
- package/src/{tileset → tileset-3d/common}/tileset-traverser.ts +74 -14
- package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +1059 -0
- package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +1025 -0
- package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +379 -0
- package/src/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.ts +4 -0
- package/src/tileset-3d/format-i3s/i3s-source.ts +557 -0
- package/src/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.ts +6 -2
- package/src/{tileset → tileset-3d}/format-i3s/i3s-tileset-traverser.ts +20 -24
- package/src/{tileset → tileset-3d}/helpers/3d-tiles-options.ts +5 -1
- package/src/{tileset → tileset-3d}/helpers/bounding-volume.ts +31 -114
- package/src/tileset-3d/helpers/frame-state.ts +322 -0
- package/src/{tileset → tileset-3d}/helpers/i3s-lod.ts +24 -10
- package/src/tileset-3d/helpers/s2-bounding-volume.ts +35 -0
- package/src/tileset-3d/helpers/tiles-3d-lod.ts +370 -0
- package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
- package/src/{tileset → tileset-3d}/helpers/transform-utils.ts +1 -1
- package/src/types.ts +18 -0
- package/src/utils/doubly-linked-list.ts +2 -0
- package/src/utils/managed-array.ts +2 -0
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts +0 -7
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.d.ts.map +0 -1
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js +0 -53
- package/dist/tileset/format-3d-tiles/tileset-3d-traverser.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-pending-tiles-register.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-tile-manager.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-tile-manager.js.map +0 -1
- package/dist/tileset/format-i3s/i3s-tileset-traverser.d.ts.map +0 -1
- package/dist/tileset/format-i3s/i3s-tileset-traverser.js.map +0 -1
- package/dist/tileset/helpers/3d-tiles-options.d.ts.map +0 -1
- package/dist/tileset/helpers/3d-tiles-options.js.map +0 -1
- package/dist/tileset/helpers/bounding-volume.d.ts.map +0 -1
- package/dist/tileset/helpers/bounding-volume.js.map +0 -1
- package/dist/tileset/helpers/frame-state.d.ts +0 -28
- package/dist/tileset/helpers/frame-state.d.ts.map +0 -1
- package/dist/tileset/helpers/frame-state.js.map +0 -1
- package/dist/tileset/helpers/i3s-lod.d.ts.map +0 -1
- package/dist/tileset/helpers/i3s-lod.js.map +0 -1
- package/dist/tileset/helpers/tiles-3d-lod.d.ts +0 -8
- package/dist/tileset/helpers/tiles-3d-lod.d.ts.map +0 -1
- package/dist/tileset/helpers/tiles-3d-lod.js +0 -113
- package/dist/tileset/helpers/tiles-3d-lod.js.map +0 -1
- package/dist/tileset/helpers/transform-utils.d.ts.map +0 -1
- package/dist/tileset/helpers/transform-utils.js.map +0 -1
- package/dist/tileset/helpers/zoom.d.ts.map +0 -1
- package/dist/tileset/helpers/zoom.js.map +0 -1
- package/dist/tileset/tile-3d.d.ts +0 -230
- package/dist/tileset/tile-3d.d.ts.map +0 -1
- package/dist/tileset/tile-3d.js +0 -631
- package/dist/tileset/tile-3d.js.map +0 -1
- package/dist/tileset/tileset-3d.d.ts +0 -284
- package/dist/tileset/tileset-3d.d.ts.map +0 -1
- package/dist/tileset/tileset-3d.js +0 -814
- package/dist/tileset/tileset-3d.js.map +0 -1
- package/dist/tileset/tileset-cache.d.ts +0 -19
- package/dist/tileset/tileset-cache.d.ts.map +0 -1
- package/dist/tileset/tileset-cache.js.map +0 -1
- package/dist/tileset/tileset-traverser.d.ts.map +0 -1
- package/dist/tileset/tileset-traverser.js.map +0 -1
- package/src/tileset/format-3d-tiles/tileset-3d-traverser.ts +0 -63
- package/src/tileset/helpers/frame-state.ts +0 -183
- package/src/tileset/helpers/tiles-3d-lod.ts +0 -149
- package/src/tileset/tile-3d.ts +0 -788
- package/src/tileset/tileset-3d.ts +0 -1037
- /package/dist/{tileset → tileset-3d}/format-i3s/i3s-pending-tiles-register.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/format-i3s/i3s-tile-manager.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/transform-utils.js +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/zoom.d.ts +0 -0
- /package/dist/{tileset → tileset-3d}/helpers/zoom.js +0 -0
- /package/src/{tileset → tileset-3d}/helpers/zoom.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/point-cloud/types.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type { GetRasterParameters, NumericRasterData, RasterData, RasterSource, RasterSourceMetadata } from '@loaders.gl/loader-utils';
|
|
2
|
+
/** Accepted raster request currently retained by {@link RasterSet}. */
|
|
3
|
+
export type RasterSetRequest<DataT extends NumericRasterData = RasterData, ParametersT extends object = GetRasterParameters> = {
|
|
4
|
+
/** Unique request id assigned by the manager. */
|
|
5
|
+
requestId: number;
|
|
6
|
+
/** Raster request parameters that produced the accepted raster payload. */
|
|
7
|
+
parameters: ParametersT;
|
|
8
|
+
/** Raster retained as the current output. */
|
|
9
|
+
raster: DataT;
|
|
10
|
+
};
|
|
11
|
+
/** Arguments supplied to {@link RasterSetBaseProps.shouldRefetch}. */
|
|
12
|
+
export type RasterSetShouldRefetchArgs<DataT extends NumericRasterData = RasterData, ParametersT extends object = GetRasterParameters, MetadataT extends RasterSourceMetadata = RasterSourceMetadata> = {
|
|
13
|
+
/** Current accepted request retained by the raster manager, if any. */
|
|
14
|
+
currentRequest: RasterSetRequest<DataT, ParametersT> | null;
|
|
15
|
+
/** Source metadata resolved by {@link RasterSet.loadMetadata}, if available. */
|
|
16
|
+
metadata: MetadataT | null;
|
|
17
|
+
/** Candidate raster request parameters under evaluation. */
|
|
18
|
+
nextParameters: ParametersT;
|
|
19
|
+
};
|
|
20
|
+
/** Configuration shared by all {@link RasterSet} instances. */
|
|
21
|
+
export type RasterSetBaseProps<DataT extends NumericRasterData = RasterData, ParametersT extends object = GetRasterParameters, MetadataT extends RasterSourceMetadata = RasterSourceMetadata> = {
|
|
22
|
+
/** Callback used to load source metadata. */
|
|
23
|
+
getMetadata: (options?: {
|
|
24
|
+
/** Metadata request cancellation. */ signal?: AbortSignal;
|
|
25
|
+
}) => Promise<MetadataT>;
|
|
26
|
+
/** Callback used to load raster data for a viewport-derived request. */
|
|
27
|
+
getRaster: (parameters: ParametersT) => Promise<DataT>;
|
|
28
|
+
/** Debounce interval applied before issuing raster requests. */
|
|
29
|
+
debounceTime?: number;
|
|
30
|
+
/** Optional policy callback that can skip redundant raster requests. */
|
|
31
|
+
shouldRefetch?: (args: RasterSetShouldRefetchArgs<DataT, ParametersT, MetadataT>) => boolean;
|
|
32
|
+
};
|
|
33
|
+
/** Options for creating a {@link RasterSet}. */
|
|
34
|
+
export type RasterSetProps<DataT extends NumericRasterData = RasterData, ParametersT extends object = GetRasterParameters, MetadataT extends RasterSourceMetadata = RasterSourceMetadata> = Partial<RasterSetBaseProps<DataT, ParametersT, MetadataT>> & {
|
|
35
|
+
/** Optional loaders.gl raster source backing this manager. */
|
|
36
|
+
rasterSource?: RasterSource<DataT, ParametersT & GetRasterParameters, MetadataT> | null;
|
|
37
|
+
};
|
|
38
|
+
/** Subscription callbacks emitted by {@link RasterSet}. */
|
|
39
|
+
export type RasterSetListener<DataT extends NumericRasterData = RasterData, ParametersT extends object = GetRasterParameters, MetadataT extends RasterSourceMetadata = RasterSourceMetadata> = {
|
|
40
|
+
/** Fired when metadata/raster loading starts or stops. */
|
|
41
|
+
onLoadingStateChange?: (isLoading: boolean) => void;
|
|
42
|
+
/** Fired when source metadata resolves successfully. */
|
|
43
|
+
onMetadataLoad?: (metadata: MetadataT) => void;
|
|
44
|
+
/** Fired when metadata loading fails. */
|
|
45
|
+
onMetadataLoadError?: (error: Error) => void;
|
|
46
|
+
/** Fired when a new raster request is issued. */
|
|
47
|
+
onRasterLoadStart?: (requestId: number, parameters: ParametersT) => void;
|
|
48
|
+
/** Fired when a raster request resolves and becomes current. */
|
|
49
|
+
onRasterLoad?: (request: RasterSetRequest<DataT, ParametersT>) => void;
|
|
50
|
+
/** Fired when a raster request fails. */
|
|
51
|
+
onRasterLoadError?: (requestId: number, error: Error, parameters: ParametersT) => void;
|
|
52
|
+
/** Fired when metadata or the current raster changes. */
|
|
53
|
+
onUpdate?: () => void;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Shared raster request manager used by viewport-driven raster examples and layers.
|
|
57
|
+
*
|
|
58
|
+
* @typeParam DataT Raster payload retained by the manager.
|
|
59
|
+
* @typeParam ParametersT Request parameters accepted by the source.
|
|
60
|
+
* @typeParam MetadataT Metadata returned by the source.
|
|
61
|
+
*/
|
|
62
|
+
export declare class RasterSet<DataT extends NumericRasterData = RasterData, ParametersT extends object = GetRasterParameters, MetadataT extends RasterSourceMetadata = RasterSourceMetadata> {
|
|
63
|
+
/** Cached metadata returned by the backing source, if any. */
|
|
64
|
+
metadata: MetadataT | null;
|
|
65
|
+
private _opts;
|
|
66
|
+
private _listeners;
|
|
67
|
+
private _currentRequest;
|
|
68
|
+
private _nextRequestId;
|
|
69
|
+
private _loadCounter;
|
|
70
|
+
private _timeoutId;
|
|
71
|
+
private _abortController;
|
|
72
|
+
/** Controller owned by the newest metadata request. */
|
|
73
|
+
private _metadataAbortController;
|
|
74
|
+
private _finalized;
|
|
75
|
+
/** Generation invalidates metadata from replaced sources. */
|
|
76
|
+
private _sourceGeneration;
|
|
77
|
+
/** Monotonic metadata request identity. */
|
|
78
|
+
private _metadataRequestId;
|
|
79
|
+
/** Creates a raster manager from a source or direct callbacks. */
|
|
80
|
+
constructor(opts: RasterSetProps<DataT, ParametersT, MetadataT>);
|
|
81
|
+
/** Convenience factory for wrapping a loaders.gl {@link RasterSource}. */
|
|
82
|
+
static fromRasterSource<DataT extends NumericRasterData = RasterData, ParametersT extends GetRasterParameters = GetRasterParameters, MetadataT extends RasterSourceMetadata = RasterSourceMetadata>(rasterSource: RasterSource<DataT, ParametersT, MetadataT>, opts?: Omit<RasterSetProps<DataT, ParametersT, MetadataT>, 'rasterSource' | 'getRaster' | 'getMetadata'>): RasterSet<DataT, ParametersT, MetadataT>;
|
|
83
|
+
/** Convenience factory for sources whose requests are not viewport-shaped. */
|
|
84
|
+
static fromCallbacks<DataT extends NumericRasterData = RasterData, ParametersT extends object = GetRasterParameters, MetadataT extends RasterSourceMetadata = RasterSourceMetadata>(opts: RasterSetBaseProps<DataT, ParametersT, MetadataT>): RasterSet<DataT, ParametersT, MetadataT>;
|
|
85
|
+
/** Whether the manager has no requests in flight and a current raster. */
|
|
86
|
+
get isLoaded(): boolean;
|
|
87
|
+
/** Current accepted raster, if any. */
|
|
88
|
+
get raster(): DataT | null;
|
|
89
|
+
/** Current accepted request and raster payload, if any. */
|
|
90
|
+
get currentRequest(): RasterSetRequest<DataT, ParametersT> | null;
|
|
91
|
+
/** Backing raster source when constructed from one. */
|
|
92
|
+
get rasterSource(): RasterSource<DataT, ParametersT & GetRasterParameters, MetadataT> | null;
|
|
93
|
+
/** Subscribes to metadata and raster lifecycle events. */
|
|
94
|
+
subscribe(listener: RasterSetListener<DataT, ParametersT, MetadataT>): () => void;
|
|
95
|
+
/** Updates source callbacks or debounce settings, resetting state when the source changes. */
|
|
96
|
+
setOptions(opts: RasterSetProps<DataT, ParametersT, MetadataT>): void;
|
|
97
|
+
/** Loads metadata from the current raster source or callbacks. */
|
|
98
|
+
loadMetadata(options?: {
|
|
99
|
+
signal?: AbortSignal;
|
|
100
|
+
}): Promise<MetadataT>;
|
|
101
|
+
/** Debounces and issues a new raster request for the supplied parameters. */
|
|
102
|
+
requestRaster(parameters: ParametersT, debounceTime?: number): number;
|
|
103
|
+
/** Returns `true` when the supplied parameters warrant a new raster fetch. */
|
|
104
|
+
shouldRefetchRaster(parameters: ParametersT): boolean;
|
|
105
|
+
/** Clears timers and listeners held by the manager. */
|
|
106
|
+
finalize(): void;
|
|
107
|
+
/** Loads a raster immediately and accepts it only if it is the newest completed request. */
|
|
108
|
+
private _loadRaster;
|
|
109
|
+
/** Resolves current options from either a source or direct callbacks. */
|
|
110
|
+
private _normalizeOptions;
|
|
111
|
+
/** Emits one generic update notification to all subscribers. */
|
|
112
|
+
private _emitUpdate;
|
|
113
|
+
/** Emits one loading-state transition to all subscribers. */
|
|
114
|
+
private _emitLoadingStateChange;
|
|
115
|
+
/** Increments the active load count and emits loading-state transitions. */
|
|
116
|
+
private _startLoading;
|
|
117
|
+
/** Decrements the active load count and emits loading-state transitions. */
|
|
118
|
+
private _finishLoading;
|
|
119
|
+
/** Clears any pending debounced raster request before it hits the network. */
|
|
120
|
+
private _cancelScheduledRaster;
|
|
121
|
+
/** Aborts the currently active raster request, if one exists. */
|
|
122
|
+
private _abortActiveRequest;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=raster-set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raster-set.d.ts","sourceRoot":"","sources":["../src/raster-set.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// SPDX-FileCopyrightText: Copyright (c) vis.gl contributors
|
|
4
|
+
import { waitForPromiseWithSignals } from '@loaders.gl/loader-utils';
|
|
5
|
+
const DEFAULT_RASTERSET_PROPS = {
|
|
6
|
+
getMetadata: async () => ({
|
|
7
|
+
width: 0,
|
|
8
|
+
height: 0,
|
|
9
|
+
bandCount: 0,
|
|
10
|
+
dtype: 'uint8'
|
|
11
|
+
}),
|
|
12
|
+
getRaster: async () => ({
|
|
13
|
+
data: new Uint8Array(0),
|
|
14
|
+
width: 0,
|
|
15
|
+
height: 0,
|
|
16
|
+
bandCount: 0,
|
|
17
|
+
dtype: 'uint8'
|
|
18
|
+
}),
|
|
19
|
+
debounceTime: 0,
|
|
20
|
+
shouldRefetch: () => true
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Shared raster request manager used by viewport-driven raster examples and layers.
|
|
24
|
+
*
|
|
25
|
+
* @typeParam DataT Raster payload retained by the manager.
|
|
26
|
+
* @typeParam ParametersT Request parameters accepted by the source.
|
|
27
|
+
* @typeParam MetadataT Metadata returned by the source.
|
|
28
|
+
*/
|
|
29
|
+
export class RasterSet {
|
|
30
|
+
/** Cached metadata returned by the backing source, if any. */
|
|
31
|
+
metadata = null;
|
|
32
|
+
_opts;
|
|
33
|
+
_listeners = new Set();
|
|
34
|
+
_currentRequest = null;
|
|
35
|
+
_nextRequestId = 0;
|
|
36
|
+
_loadCounter = 0;
|
|
37
|
+
_timeoutId = null;
|
|
38
|
+
_abortController = null;
|
|
39
|
+
/** Controller owned by the newest metadata request. */
|
|
40
|
+
_metadataAbortController = null;
|
|
41
|
+
_finalized = false;
|
|
42
|
+
/** Generation invalidates metadata from replaced sources. */
|
|
43
|
+
_sourceGeneration = 0;
|
|
44
|
+
/** Monotonic metadata request identity. */
|
|
45
|
+
_metadataRequestId = 0;
|
|
46
|
+
/** Creates a raster manager from a source or direct callbacks. */
|
|
47
|
+
constructor(opts) {
|
|
48
|
+
this._opts = this._normalizeOptions(opts);
|
|
49
|
+
if (!this._opts.rasterSource && (!opts.getRaster || !opts.getMetadata)) {
|
|
50
|
+
throw new Error('RasterSet requires either `rasterSource` or both `getRaster` and `getMetadata`.');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Convenience factory for wrapping a loaders.gl {@link RasterSource}. */
|
|
54
|
+
static fromRasterSource(rasterSource, opts = {}) {
|
|
55
|
+
return new RasterSet({ ...opts, rasterSource });
|
|
56
|
+
}
|
|
57
|
+
/** Convenience factory for sources whose requests are not viewport-shaped. */
|
|
58
|
+
static fromCallbacks(opts) {
|
|
59
|
+
return new RasterSet(opts);
|
|
60
|
+
}
|
|
61
|
+
/** Whether the manager has no requests in flight and a current raster. */
|
|
62
|
+
get isLoaded() {
|
|
63
|
+
return this._loadCounter === 0 && Boolean(this._currentRequest);
|
|
64
|
+
}
|
|
65
|
+
/** Current accepted raster, if any. */
|
|
66
|
+
get raster() {
|
|
67
|
+
return this._currentRequest?.raster || null;
|
|
68
|
+
}
|
|
69
|
+
/** Current accepted request and raster payload, if any. */
|
|
70
|
+
get currentRequest() {
|
|
71
|
+
return this._currentRequest;
|
|
72
|
+
}
|
|
73
|
+
/** Backing raster source when constructed from one. */
|
|
74
|
+
get rasterSource() {
|
|
75
|
+
return this._opts.rasterSource;
|
|
76
|
+
}
|
|
77
|
+
/** Subscribes to metadata and raster lifecycle events. */
|
|
78
|
+
subscribe(listener) {
|
|
79
|
+
this._listeners.add(listener);
|
|
80
|
+
return () => this._listeners.delete(listener);
|
|
81
|
+
}
|
|
82
|
+
/** Updates source callbacks or debounce settings, resetting state when the source changes. */
|
|
83
|
+
setOptions(opts) {
|
|
84
|
+
const previousRasterSource = this._opts.rasterSource;
|
|
85
|
+
const mergedOptions = { ...this._opts, ...opts };
|
|
86
|
+
if (opts.rasterSource && opts.rasterSource !== previousRasterSource) {
|
|
87
|
+
mergedOptions.getRaster = opts.getRaster;
|
|
88
|
+
mergedOptions.getMetadata = opts.getMetadata;
|
|
89
|
+
}
|
|
90
|
+
const nextOptions = this._normalizeOptions(mergedOptions);
|
|
91
|
+
const sourceChanged = previousRasterSource !== nextOptions.rasterSource ||
|
|
92
|
+
this._opts.getRaster !== nextOptions.getRaster ||
|
|
93
|
+
this._opts.getMetadata !== nextOptions.getMetadata;
|
|
94
|
+
this._opts = nextOptions;
|
|
95
|
+
if (sourceChanged) {
|
|
96
|
+
this._cancelScheduledRaster();
|
|
97
|
+
this._abortActiveRequest();
|
|
98
|
+
this._metadataAbortController?.abort();
|
|
99
|
+
this._sourceGeneration++;
|
|
100
|
+
this.metadata = null;
|
|
101
|
+
this._currentRequest = null;
|
|
102
|
+
this._emitUpdate();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** Loads metadata from the current raster source or callbacks. */
|
|
106
|
+
async loadMetadata(options = {}) {
|
|
107
|
+
if (this._finalized)
|
|
108
|
+
throw new Error('RasterSet is finalized');
|
|
109
|
+
options.signal?.throwIfAborted();
|
|
110
|
+
this._metadataAbortController?.abort();
|
|
111
|
+
const abortController = new AbortController();
|
|
112
|
+
this._metadataAbortController = abortController;
|
|
113
|
+
const abortFromCaller = () => abortController.abort(options.signal?.reason);
|
|
114
|
+
options.signal?.addEventListener('abort', abortFromCaller, { once: true });
|
|
115
|
+
const metadataRequestId = ++this._metadataRequestId;
|
|
116
|
+
const generation = this._sourceGeneration;
|
|
117
|
+
try {
|
|
118
|
+
this._startLoading();
|
|
119
|
+
abortController.signal.throwIfAborted();
|
|
120
|
+
const metadata = await waitForPromiseWithSignals(signal => this._opts.getMetadata({ signal }), [abortController.signal]);
|
|
121
|
+
abortController.signal.throwIfAborted();
|
|
122
|
+
if (this._finalized ||
|
|
123
|
+
generation !== this._sourceGeneration ||
|
|
124
|
+
metadataRequestId !== this._metadataRequestId) {
|
|
125
|
+
return metadata;
|
|
126
|
+
}
|
|
127
|
+
this.metadata = metadata;
|
|
128
|
+
for (const listener of this._listeners) {
|
|
129
|
+
listener.onMetadataLoad?.(metadata);
|
|
130
|
+
}
|
|
131
|
+
this._emitUpdate();
|
|
132
|
+
return metadata;
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
if (abortController.signal.aborted)
|
|
136
|
+
throw abortController.signal.reason;
|
|
137
|
+
if (isAbortError(error))
|
|
138
|
+
throw error;
|
|
139
|
+
const normalizedError = normalizeRasterSetError(error, 'Raster metadata request failed');
|
|
140
|
+
if (!this._finalized &&
|
|
141
|
+
generation === this._sourceGeneration &&
|
|
142
|
+
metadataRequestId === this._metadataRequestId) {
|
|
143
|
+
for (const listener of this._listeners) {
|
|
144
|
+
listener.onMetadataLoadError?.(normalizedError);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
throw normalizedError;
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
options.signal?.removeEventListener('abort', abortFromCaller);
|
|
151
|
+
if (this._metadataAbortController === abortController)
|
|
152
|
+
this._metadataAbortController = null;
|
|
153
|
+
this._finishLoading();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/** Debounces and issues a new raster request for the supplied parameters. */
|
|
157
|
+
requestRaster(parameters, debounceTime = this._opts.debounceTime) {
|
|
158
|
+
if (this._finalized)
|
|
159
|
+
return -1;
|
|
160
|
+
if (!this.shouldRefetchRaster(parameters)) {
|
|
161
|
+
this._cancelScheduledRaster();
|
|
162
|
+
this._abortActiveRequest();
|
|
163
|
+
this._nextRequestId++;
|
|
164
|
+
return this._currentRequest?.requestId ?? -1;
|
|
165
|
+
}
|
|
166
|
+
const requestId = this._nextRequestId++;
|
|
167
|
+
this._cancelScheduledRaster();
|
|
168
|
+
this._abortActiveRequest();
|
|
169
|
+
if (debounceTime > 0) {
|
|
170
|
+
this._timeoutId = setTimeout(() => {
|
|
171
|
+
this._timeoutId = null;
|
|
172
|
+
void this._loadRaster(requestId, parameters);
|
|
173
|
+
}, debounceTime);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
void this._loadRaster(requestId, parameters);
|
|
177
|
+
}
|
|
178
|
+
return requestId;
|
|
179
|
+
}
|
|
180
|
+
/** Returns `true` when the supplied parameters warrant a new raster fetch. */
|
|
181
|
+
shouldRefetchRaster(parameters) {
|
|
182
|
+
return this._opts.shouldRefetch({
|
|
183
|
+
currentRequest: this._currentRequest,
|
|
184
|
+
metadata: this.metadata,
|
|
185
|
+
nextParameters: parameters
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
/** Clears timers and listeners held by the manager. */
|
|
189
|
+
finalize() {
|
|
190
|
+
this._finalized = true;
|
|
191
|
+
this._cancelScheduledRaster();
|
|
192
|
+
this._abortActiveRequest();
|
|
193
|
+
this._metadataAbortController?.abort();
|
|
194
|
+
this._metadataAbortController = null;
|
|
195
|
+
this._loadCounter = 0;
|
|
196
|
+
this._listeners.clear();
|
|
197
|
+
}
|
|
198
|
+
/** Loads a raster immediately and accepts it only if it is the newest completed request. */
|
|
199
|
+
async _loadRaster(requestId, parameters) {
|
|
200
|
+
if (this._finalized) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const callerSignal = parameters.signal;
|
|
204
|
+
if (callerSignal?.aborted)
|
|
205
|
+
return;
|
|
206
|
+
const abortController = new AbortController();
|
|
207
|
+
this._abortController = abortController;
|
|
208
|
+
const abortFromCaller = () => abortController.abort(callerSignal?.reason);
|
|
209
|
+
callerSignal?.addEventListener('abort', abortFromCaller, { once: true });
|
|
210
|
+
this._startLoading();
|
|
211
|
+
try {
|
|
212
|
+
abortController.signal.throwIfAborted();
|
|
213
|
+
for (const listener of this._listeners)
|
|
214
|
+
listener.onRasterLoadStart?.(requestId, parameters);
|
|
215
|
+
abortController.signal.throwIfAborted();
|
|
216
|
+
const raster = await waitForPromiseWithSignals(signal => this._opts.getRaster(withAbortSignal(parameters, signal)), [abortController.signal]);
|
|
217
|
+
if (this._finalized ||
|
|
218
|
+
abortController.signal.aborted ||
|
|
219
|
+
requestId !== this._nextRequestId - 1) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
this._currentRequest = { requestId, parameters, raster };
|
|
223
|
+
for (const listener of this._listeners) {
|
|
224
|
+
listener.onRasterLoad?.(this._currentRequest);
|
|
225
|
+
}
|
|
226
|
+
this._emitUpdate();
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
if (abortController.signal.aborted || isAbortError(error)) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
232
|
+
const normalizedError = normalizeRasterSetError(error, 'Raster request failed');
|
|
233
|
+
if (!this._finalized && requestId === this._nextRequestId - 1) {
|
|
234
|
+
for (const listener of this._listeners) {
|
|
235
|
+
listener.onRasterLoadError?.(requestId, normalizedError, parameters);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
finally {
|
|
240
|
+
callerSignal?.removeEventListener('abort', abortFromCaller);
|
|
241
|
+
if (this._abortController === abortController)
|
|
242
|
+
this._abortController = null;
|
|
243
|
+
this._finishLoading();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/** Resolves current options from either a source or direct callbacks. */
|
|
247
|
+
_normalizeOptions(opts) {
|
|
248
|
+
const rasterSource = opts.rasterSource || null;
|
|
249
|
+
return {
|
|
250
|
+
...DEFAULT_RASTERSET_PROPS,
|
|
251
|
+
...opts,
|
|
252
|
+
rasterSource,
|
|
253
|
+
getMetadata: opts.getMetadata ||
|
|
254
|
+
(options => {
|
|
255
|
+
if (rasterSource) {
|
|
256
|
+
return rasterSource.getMetadata(options);
|
|
257
|
+
}
|
|
258
|
+
return DEFAULT_RASTERSET_PROPS.getMetadata();
|
|
259
|
+
}),
|
|
260
|
+
getRaster: opts.getRaster ||
|
|
261
|
+
((parameters) => {
|
|
262
|
+
if (rasterSource) {
|
|
263
|
+
return rasterSource.getRaster(parameters);
|
|
264
|
+
}
|
|
265
|
+
return DEFAULT_RASTERSET_PROPS.getRaster(parameters);
|
|
266
|
+
}),
|
|
267
|
+
debounceTime: opts.debounceTime ?? DEFAULT_RASTERSET_PROPS.debounceTime,
|
|
268
|
+
shouldRefetch: opts.shouldRefetch ||
|
|
269
|
+
((args) => DEFAULT_RASTERSET_PROPS.shouldRefetch(args))
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
/** Emits one generic update notification to all subscribers. */
|
|
273
|
+
_emitUpdate() {
|
|
274
|
+
if (this._finalized)
|
|
275
|
+
return;
|
|
276
|
+
for (const listener of this._listeners) {
|
|
277
|
+
listener.onUpdate?.();
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/** Emits one loading-state transition to all subscribers. */
|
|
281
|
+
_emitLoadingStateChange(isLoading) {
|
|
282
|
+
if (this._finalized)
|
|
283
|
+
return;
|
|
284
|
+
for (const listener of this._listeners) {
|
|
285
|
+
listener.onLoadingStateChange?.(isLoading);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/** Increments the active load count and emits loading-state transitions. */
|
|
289
|
+
_startLoading() {
|
|
290
|
+
const wasLoading = this._loadCounter > 0;
|
|
291
|
+
this._loadCounter++;
|
|
292
|
+
if (!wasLoading) {
|
|
293
|
+
this._emitLoadingStateChange(true);
|
|
294
|
+
this._emitUpdate();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/** Decrements the active load count and emits loading-state transitions. */
|
|
298
|
+
_finishLoading() {
|
|
299
|
+
const wasLoading = this._loadCounter > 0;
|
|
300
|
+
this._loadCounter = Math.max(0, this._loadCounter - 1);
|
|
301
|
+
if (wasLoading && this._loadCounter === 0) {
|
|
302
|
+
this._emitLoadingStateChange(false);
|
|
303
|
+
this._emitUpdate();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/** Clears any pending debounced raster request before it hits the network. */
|
|
307
|
+
_cancelScheduledRaster() {
|
|
308
|
+
if (this._timeoutId !== null) {
|
|
309
|
+
clearTimeout(this._timeoutId);
|
|
310
|
+
this._timeoutId = null;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/** Aborts the currently active raster request, if one exists. */
|
|
314
|
+
_abortActiveRequest() {
|
|
315
|
+
this._abortController?.abort();
|
|
316
|
+
this._abortController = null;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
/** Adds cancellation to a request while preserving its array/prototype shape. */
|
|
320
|
+
function withAbortSignal(parameters, signal) {
|
|
321
|
+
const descriptors = Object.getOwnPropertyDescriptors(parameters);
|
|
322
|
+
delete descriptors.signal;
|
|
323
|
+
const request = Array.isArray(parameters)
|
|
324
|
+
? Object.defineProperties(parameters.slice(), descriptors)
|
|
325
|
+
: Object.create(Object.getPrototypeOf(parameters), descriptors);
|
|
326
|
+
Object.defineProperty(request, 'signal', {
|
|
327
|
+
configurable: true,
|
|
328
|
+
enumerable: true,
|
|
329
|
+
value: signal,
|
|
330
|
+
writable: true
|
|
331
|
+
});
|
|
332
|
+
return request;
|
|
333
|
+
}
|
|
334
|
+
/** Normalizes arbitrary thrown values to `Error` instances for raster-set callbacks. */
|
|
335
|
+
function normalizeRasterSetError(error, message) {
|
|
336
|
+
if (error instanceof Error) {
|
|
337
|
+
return error;
|
|
338
|
+
}
|
|
339
|
+
if (typeof error === 'string') {
|
|
340
|
+
return new Error(error);
|
|
341
|
+
}
|
|
342
|
+
return new Error(message);
|
|
343
|
+
}
|
|
344
|
+
/** Returns true when an error came from an aborted request. */
|
|
345
|
+
function isAbortError(error) {
|
|
346
|
+
return error instanceof Error && error.name === 'AbortError';
|
|
347
|
+
}
|
|
348
|
+
//# sourceMappingURL=raster-set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raster-set.js","sourceRoot":"","sources":["../src/raster-set.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { ReadonlyCRSDefinition } from '@math.gl/crs';
|
|
2
|
+
import type { TilesetSpatialReference } from "./spatial-types.js";
|
|
3
|
+
/** ArcGIS/I3S spatial reference fields used without depending on the I3S package. */
|
|
4
|
+
type I3SSpatialReferenceLike = {
|
|
5
|
+
wkid?: number;
|
|
6
|
+
latestWkid?: number;
|
|
7
|
+
vcsWkid?: number;
|
|
8
|
+
latestVcsWkid?: number;
|
|
9
|
+
wkt?: string;
|
|
10
|
+
};
|
|
11
|
+
/** I3S layer fields needed for spatial metadata discovery. */
|
|
12
|
+
type I3SLayerLike = {
|
|
13
|
+
spatialReference?: I3SSpatialReferenceLike;
|
|
14
|
+
fullExtent?: {
|
|
15
|
+
spatialReference?: I3SSpatialReferenceLike;
|
|
16
|
+
};
|
|
17
|
+
heightModelInfo?: {
|
|
18
|
+
heightModel?: string;
|
|
19
|
+
vertCRS?: ReadonlyCRSDefinition;
|
|
20
|
+
heightUnit?: string;
|
|
21
|
+
};
|
|
22
|
+
ZFactor?: number;
|
|
23
|
+
elevationInfo?: {
|
|
24
|
+
mode?: string;
|
|
25
|
+
offset?: number;
|
|
26
|
+
unit?: string;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/** 3D Tiles document fields needed for CRS semantic discovery. */
|
|
30
|
+
type Tiles3DLike = {
|
|
31
|
+
schema?: {
|
|
32
|
+
classes?: Record<string, unknown>;
|
|
33
|
+
};
|
|
34
|
+
schemaUri?: string;
|
|
35
|
+
metadata?: {
|
|
36
|
+
class?: string;
|
|
37
|
+
properties?: Record<string, unknown>;
|
|
38
|
+
};
|
|
39
|
+
root?: {
|
|
40
|
+
boundingVolume?: {
|
|
41
|
+
region?: unknown;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
extensions?: Record<string, unknown>;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Discovers normalized spatial metadata from an I3S scene-layer document.
|
|
48
|
+
*
|
|
49
|
+
* I3S encodes geographic coordinates in longitude/latitude wire order even for authority
|
|
50
|
+
* definitions whose formal axis order differs.
|
|
51
|
+
*
|
|
52
|
+
* @param layer - Parsed I3S layer document.
|
|
53
|
+
* @returns Normalized source spatial metadata.
|
|
54
|
+
*/
|
|
55
|
+
export declare function getI3SSpatialReference(layer: I3SLayerLike): TilesetSpatialReference;
|
|
56
|
+
/**
|
|
57
|
+
* Discovers the 3D Tiles geocentric CRS and coordinate epoch from structured metadata semantics.
|
|
58
|
+
*
|
|
59
|
+
* The method intentionally does not infer ECEF from coordinate magnitude. A root `region`
|
|
60
|
+
* establishes the format's global ellipsoidal frame, while local tilesets without an explicit
|
|
61
|
+
* semantic remain unknown.
|
|
62
|
+
*
|
|
63
|
+
* @param tileset - Parsed 3D Tiles tileset document.
|
|
64
|
+
* @returns Normalized source spatial metadata.
|
|
65
|
+
*/
|
|
66
|
+
export declare function get3DTilesSpatialReference(tileset: Tiles3DLike): TilesetSpatialReference;
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=format-spatial-reference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-spatial-reference.d.ts","sourceRoot":"","sources":["../../src/spatial/format-spatial-reference.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAC;AAOxD,OAAO,KAAK,EAAuB,uBAAuB,EAAC,2BAAwB;AAEnF,qFAAqF;AACrF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,8DAA8D;AAC9D,KAAK,YAAY,GAAG;IAClB,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,UAAU,CAAC,EAAE;QAAC,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;KAAC,CAAC;IAC1D,eAAe,CAAC,EAAE;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,qBAAqB,CAAC;QAChC,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CACjE,CAAC;AAKF,kEAAkE;AAClE,KAAK,WAAW,GAAG;IACjB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAC,CAAC;IAClE,IAAI,CAAC,EAAE;QAAC,cAAc,CAAC,EAAE;YAAC,MAAM,CAAC,EAAE,OAAO,CAAA;SAAC,CAAA;KAAC,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,uBAAuB,CAqEnF;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,WAAW,GAAG,uBAAuB,CA8CxF"}
|