@loaders.gl/tiles 5.0.0-alpha.1 → 5.0.0-alpha.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.
Files changed (115) hide show
  1. package/LICENSE +14 -3
  2. package/dist/dist.dev.js +2396 -274
  3. package/dist/dist.min.js +1 -1
  4. package/dist/index.cjs +2763 -337
  5. package/dist/index.cjs.map +3 -4
  6. package/dist/index.d.ts +7 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/point-cloud/point-cloud-tile.d.ts.map +1 -1
  11. package/dist/point-cloud/point-cloud-tile.js +3 -0
  12. package/dist/point-cloud/point-cloud-tile.js.map +1 -1
  13. package/dist/point-cloud/point-cloud-tileset.d.ts.map +1 -1
  14. package/dist/point-cloud/point-cloud-tileset.js +3 -0
  15. package/dist/point-cloud/point-cloud-tileset.js.map +1 -1
  16. package/dist/point-cloud/types.d.ts.map +1 -1
  17. package/dist/point-cloud/types.js +3 -0
  18. package/dist/point-cloud/types.js.map +1 -1
  19. package/dist/raster-set.d.ts +35 -29
  20. package/dist/raster-set.d.ts.map +1 -1
  21. package/dist/raster-set.js +7 -1
  22. package/dist/raster-set.js.map +1 -1
  23. package/dist/tileset-3d/common/tile-3d.d.ts +98 -3
  24. package/dist/tileset-3d/common/tile-3d.d.ts.map +1 -1
  25. package/dist/tileset-3d/common/tile-3d.js +229 -15
  26. package/dist/tileset-3d/common/tile-3d.js.map +1 -1
  27. package/dist/tileset-3d/common/tileset-3d.d.ts +143 -3
  28. package/dist/tileset-3d/common/tileset-3d.d.ts.map +1 -1
  29. package/dist/tileset-3d/common/tileset-3d.js +257 -16
  30. package/dist/tileset-3d/common/tileset-3d.js.map +1 -1
  31. package/dist/tileset-3d/common/tileset-cache.d.ts +11 -1
  32. package/dist/tileset-3d/common/tileset-cache.d.ts.map +1 -1
  33. package/dist/tileset-3d/common/tileset-cache.js +11 -3
  34. package/dist/tileset-3d/common/tileset-cache.js.map +1 -1
  35. package/dist/tileset-3d/common/tileset-source.d.ts +18 -0
  36. package/dist/tileset-3d/common/tileset-source.d.ts.map +1 -1
  37. package/dist/tileset-3d/common/tileset-source.js.map +1 -1
  38. package/dist/tileset-3d/common/tileset-traverser.d.ts +13 -0
  39. package/dist/tileset-3d/common/tileset-traverser.d.ts.map +1 -1
  40. package/dist/tileset-3d/common/tileset-traverser.js +28 -1
  41. package/dist/tileset-3d/common/tileset-traverser.js.map +1 -1
  42. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts +111 -0
  43. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.d.ts.map +1 -0
  44. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js +340 -0
  45. package/dist/tileset-3d/format-3d-tiles/implicit-tiling.js.map +1 -0
  46. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts +92 -3
  47. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.d.ts.map +1 -1
  48. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js +211 -13
  49. package/dist/tileset-3d/format-3d-tiles/tiles-3d-source.js.map +1 -1
  50. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts +36 -0
  51. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.d.ts.map +1 -1
  52. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js +66 -0
  53. package/dist/tileset-3d/format-3d-tiles/tileset-3d-traverser.js.map +1 -1
  54. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.d.ts.map +1 -1
  55. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js +3 -0
  56. package/dist/tileset-3d/format-i3s/i3s-pending-tiles-register.js.map +1 -1
  57. package/dist/tileset-3d/format-i3s/i3s-tile-manager.d.ts.map +1 -1
  58. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js +3 -0
  59. package/dist/tileset-3d/format-i3s/i3s-tile-manager.js.map +1 -1
  60. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.d.ts.map +1 -1
  61. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js +3 -0
  62. package/dist/tileset-3d/format-i3s/i3s-tileset-traverser.js.map +1 -1
  63. package/dist/tileset-3d/helpers/3d-tiles-options.d.ts.map +1 -1
  64. package/dist/tileset-3d/helpers/3d-tiles-options.js +3 -0
  65. package/dist/tileset-3d/helpers/3d-tiles-options.js.map +1 -1
  66. package/dist/tileset-3d/helpers/bounding-volume.d.ts.map +1 -1
  67. package/dist/tileset-3d/helpers/bounding-volume.js +1 -0
  68. package/dist/tileset-3d/helpers/bounding-volume.js.map +1 -1
  69. package/dist/tileset-3d/helpers/frame-state.d.ts +59 -1
  70. package/dist/tileset-3d/helpers/frame-state.d.ts.map +1 -1
  71. package/dist/tileset-3d/helpers/frame-state.js +84 -9
  72. package/dist/tileset-3d/helpers/frame-state.js.map +1 -1
  73. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts +61 -9
  74. package/dist/tileset-3d/helpers/tiles-3d-lod.d.ts.map +1 -1
  75. package/dist/tileset-3d/helpers/tiles-3d-lod.js +198 -93
  76. package/dist/tileset-3d/helpers/tiles-3d-lod.js.map +1 -1
  77. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts +134 -0
  78. package/dist/tileset-3d/helpers/tiles-3d-request-priority.d.ts.map +1 -0
  79. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js +179 -0
  80. package/dist/tileset-3d/helpers/tiles-3d-request-priority.js.map +1 -0
  81. package/dist/types.d.ts +2 -0
  82. package/dist/types.d.ts.map +1 -1
  83. package/dist/types.js +3 -0
  84. package/dist/types.js.map +1 -1
  85. package/dist/utils/doubly-linked-list.d.ts.map +1 -1
  86. package/dist/utils/doubly-linked-list.js +1 -0
  87. package/dist/utils/doubly-linked-list.js.map +1 -1
  88. package/dist/utils/managed-array.d.ts.map +1 -1
  89. package/dist/utils/managed-array.js +1 -0
  90. package/dist/utils/managed-array.js.map +1 -1
  91. package/package.json +5 -5
  92. package/src/index.ts +19 -0
  93. package/src/point-cloud/point-cloud-tile.ts +4 -0
  94. package/src/point-cloud/point-cloud-tileset.ts +4 -0
  95. package/src/point-cloud/types.ts +4 -0
  96. package/src/raster-set.ts +81 -43
  97. package/src/tileset-3d/common/tile-3d.ts +285 -21
  98. package/src/tileset-3d/common/tileset-3d.ts +368 -17
  99. package/src/tileset-3d/common/tileset-cache.ts +15 -7
  100. package/src/tileset-3d/common/tileset-source.ts +21 -0
  101. package/src/tileset-3d/common/tileset-traverser.ts +29 -1
  102. package/src/tileset-3d/format-3d-tiles/implicit-tiling.ts +534 -0
  103. package/src/tileset-3d/format-3d-tiles/tiles-3d-source.ts +266 -13
  104. package/src/tileset-3d/format-3d-tiles/tileset-3d-traverser.ts +77 -0
  105. package/src/tileset-3d/format-i3s/i3s-pending-tiles-register.ts +4 -0
  106. package/src/tileset-3d/format-i3s/i3s-tile-manager.ts +4 -0
  107. package/src/tileset-3d/format-i3s/i3s-tileset-traverser.ts +4 -0
  108. package/src/tileset-3d/helpers/3d-tiles-options.ts +4 -0
  109. package/src/tileset-3d/helpers/bounding-volume.ts +2 -0
  110. package/src/tileset-3d/helpers/frame-state.ts +139 -11
  111. package/src/tileset-3d/helpers/tiles-3d-lod.ts +291 -112
  112. package/src/tileset-3d/helpers/tiles-3d-request-priority.ts +301 -0
  113. package/src/types.ts +6 -0
  114. package/src/utils/doubly-linked-list.ts +2 -0
  115. package/src/utils/managed-array.ts +2 -0
@@ -0,0 +1,179 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT AND Apache-2.0
3
+ // Copyright vis.gl contributors
4
+ // This file contains behavior derived from the Cesium code base under Apache 2 license.
5
+ import { Vector3 } from '@math.gl/core';
6
+ import { BoundingSphere } from '@math.gl/culling';
7
+ import { TILE_REFINEMENT } from "../../constants.js";
8
+ const PREFERRED_SORTING_DIGITS = 10_000;
9
+ const FOVEATED_SORTING_SCALE = 10_000;
10
+ const PROGRESSIVE_RESOLUTION_PENALTY = 100_000_000;
11
+ const scratchBoundingSphere = new BoundingSphere();
12
+ const scratchCenterOffset = new Vector3();
13
+ const scratchClosestPointOnLine = new Vector3();
14
+ const scratchVectorToLine = new Vector3();
15
+ const scratchClosestPointOnSphere = new Vector3();
16
+ /**
17
+ * Linearly interpolates between two values.
18
+ *
19
+ * @param minimumValue - Value returned when `interpolationAmount` is zero.
20
+ * @param maximumValue - Value returned when `interpolationAmount` is one.
21
+ * @param interpolationAmount - Normalized interpolation position.
22
+ * @returns Linearly interpolated value.
23
+ */
24
+ export function interpolateLinearly(minimumValue, maximumValue, interpolationAmount) {
25
+ return minimumValue + (maximumValue - minimumValue) * interpolationAmount;
26
+ }
27
+ /**
28
+ * Calculates how far a tile lies from the camera's forward center ray.
29
+ *
30
+ * The tile's bounding sphere, rather than only its center, is used so large tiles that intersect
31
+ * the view axis retain center priority. Clamping the nearest point to the forward ray prevents
32
+ * volumes behind the camera from receiving the same priority as centered visible content. The
33
+ * returned angular factor is zero on the view axis and increases toward the edge of a perspective
34
+ * frustum, reaching one for volumes entirely behind the camera.
35
+ *
36
+ * @param boundingVolume - Tile volume used to find the point nearest the camera view axis.
37
+ * @param camera - World-space camera position and normalized view direction.
38
+ * @returns Unitless angular factor, where zero intersects the view axis and larger values are more
39
+ * peripheral.
40
+ */
41
+ export function calculateFoveatedFactor(boundingVolume, camera) {
42
+ const boundingSphere = boundingVolume instanceof BoundingSphere
43
+ ? boundingVolume
44
+ : boundingVolume.getBoundingSphere(scratchBoundingSphere);
45
+ const { center, radius } = boundingSphere;
46
+ scratchCenterOffset.copy(center).subtract(camera.position);
47
+ const centerZDepth = Math.max(scratchCenterOffset.dot(camera.direction), 0);
48
+ scratchClosestPointOnLine.copy(camera.direction).scale(centerZDepth).add(camera.position);
49
+ scratchVectorToLine.copy(scratchClosestPointOnLine).subtract(center);
50
+ const distanceToCenterLine = scratchVectorToLine.magnitude();
51
+ if (distanceToCenterLine <= radius) {
52
+ return 0;
53
+ }
54
+ scratchClosestPointOnSphere
55
+ .copy(scratchVectorToLine)
56
+ .normalize()
57
+ .scale(radius)
58
+ .add(center)
59
+ .subtract(camera.position);
60
+ if (scratchClosestPointOnSphere.magnitude() === 0) {
61
+ return 0;
62
+ }
63
+ scratchClosestPointOnSphere.normalize();
64
+ return Math.min(Math.max(1 - scratchClosestPointOnSphere.dot(camera.direction), 0), 1);
65
+ }
66
+ /**
67
+ * Returns whether a tile supplies the coarse coverage targeted by progressive resolution.
68
+ *
69
+ * In addition to tiles whose reduced-height SSE exceeds the normal threshold, the first child
70
+ * that crosses below the threshold is promoted. Promoting that SSE leaf prevents gaps between
71
+ * coarse hierarchy levels in the initial coverage pass.
72
+ *
73
+ * @param screenSpaceError - Tile SSE calculated at the reduced logical viewport height.
74
+ * @param parentScreenSpaceError - Parent SSE at the same reduced height, when available.
75
+ * @param maximumScreenSpaceError - Normal traversal threshold in logical pixels.
76
+ * @param progressiveResolutionHeightFraction - Reduced-height fraction; values outside `(0, 0.5]`
77
+ * disable progressive priority.
78
+ * @returns `true` when the tile belongs to the initial coarse-coverage priority band.
79
+ */
80
+ export function isProgressiveResolutionPriority(screenSpaceError, parentScreenSpaceError, maximumScreenSpaceError, progressiveResolutionHeightFraction) {
81
+ if (!Number.isFinite(progressiveResolutionHeightFraction) ||
82
+ progressiveResolutionHeightFraction <= 0 ||
83
+ progressiveResolutionHeightFraction > 0.5) {
84
+ return false;
85
+ }
86
+ if (screenSpaceError > maximumScreenSpaceError) {
87
+ return true;
88
+ }
89
+ return parentScreenSpaceError !== undefined && parentScreenSpaceError > maximumScreenSpaceError;
90
+ }
91
+ /**
92
+ * Returns whether a peripheral request can wait briefly after camera motion.
93
+ *
94
+ * Traditional `REPLACE` traversal is never deferred because every required child must be ready
95
+ * before its parent disappears. `ADD` traversal and skip-LOD replacement traversal can safely keep
96
+ * already available ancestors while peripheral descendants wait.
97
+ *
98
+ * @param parameters - Refinement, projection, SSE, and foveation measurements for the tile.
99
+ * @returns `true` when the request may wait during the camera-motion delay.
100
+ */
101
+ export function isFoveatedRequestDeferred(parameters) {
102
+ const coneSize = Number.isFinite(parameters.foveatedConeSize)
103
+ ? Math.min(Math.max(parameters.foveatedConeSize, 0), 1)
104
+ : 1;
105
+ const replacementRefinement = parameters.refinement === TILE_REFINEMENT.REPLACE;
106
+ if ((replacementRefinement && !parameters.skipLevelOfDetail) ||
107
+ !parameters.foveatedScreenSpaceError ||
108
+ coneSize >= 1 ||
109
+ (replacementRefinement &&
110
+ parameters.skipLevelOfDetail &&
111
+ parameters.priorityProgressiveResolution)) {
112
+ return false;
113
+ }
114
+ const verticalFieldOfView = Number.isFinite(parameters.verticalFieldOfView) && parameters.verticalFieldOfView > 0
115
+ ? parameters.verticalFieldOfView
116
+ : Math.PI / 3;
117
+ const maximumFoveatedFactor = 1 - Math.cos(verticalFieldOfView * 0.5);
118
+ const coneFactor = coneSize * maximumFoveatedFactor;
119
+ if (parameters.foveatedFactor <= coneFactor || maximumFoveatedFactor <= coneFactor) {
120
+ return false;
121
+ }
122
+ const interpolationAmount = Math.min(Math.max((parameters.foveatedFactor - coneFactor) / (maximumFoveatedFactor - coneFactor), 0), 1);
123
+ const interpolationCallback = typeof parameters.interpolationCallback === 'function'
124
+ ? parameters.interpolationCallback
125
+ : interpolateLinearly;
126
+ const interpolatedRelaxation = interpolationCallback(parameters.minimumScreenSpaceErrorRelaxation, parameters.maximumScreenSpaceError, interpolationAmount);
127
+ const screenSpaceErrorRelaxation = Number.isFinite(interpolatedRelaxation)
128
+ ? Math.min(Math.max(interpolatedRelaxation, 0), parameters.maximumScreenSpaceError)
129
+ : 0;
130
+ const screenSpaceError = parameters.screenSpaceError === 0 && parameters.parentScreenSpaceError !== undefined
131
+ ? parameters.parentScreenSpaceError * 0.5
132
+ : parameters.screenSpaceError;
133
+ return parameters.maximumScreenSpaceError - screenSpaceErrorRelaxation <= screenSpaceError;
134
+ }
135
+ /**
136
+ * Returns whether an eligible foveated request is inside the current camera-motion delay.
137
+ *
138
+ * Eligibility describes geometry and refinement safety; this function adds time. Keeping the
139
+ * active state separate ensures the scheduler removes the temporary hold as soon as the configured
140
+ * delay expires, while invalid timing inputs safely disable the hold.
141
+ *
142
+ * @param deferralEligible - Whether refinement and foveation permit this request to wait.
143
+ * @param timeSinceMovement - Seconds since the current viewport last changed pose.
144
+ * @param foveatedTimeDelay - Maximum delay after motion, in seconds.
145
+ * @returns `true` only while an eligible request remains inside a positive finite delay.
146
+ */
147
+ export function isFoveatedRequestDelayActive(deferralEligible, timeSinceMovement, foveatedTimeDelay) {
148
+ return (deferralEligible &&
149
+ Number.isFinite(timeSinceMovement) &&
150
+ Number.isFinite(foveatedTimeDelay) &&
151
+ foveatedTimeDelay > 0 &&
152
+ timeSinceMovement < foveatedTimeDelay);
153
+ }
154
+ /**
155
+ * Encodes request priority into independent decimal bands.
156
+ *
157
+ * Smaller values load first. Requests inside the moving-camera delay are kept out of this queue;
158
+ * eligible requests are ordered by the progressive-coverage flag, distance from the view center,
159
+ * and finally the established reverse-SSE order. Normalizing reverse SSE preserves its relative
160
+ * ordering while preventing one metric from spilling into the next priority band.
161
+ *
162
+ * @param parameters - Independent request-priority measurements for a tile.
163
+ * @returns Numeric priority for `RequestScheduler`; smaller values start first.
164
+ */
165
+ export function calculateTileRequestPriority(parameters) {
166
+ const normalizedReverseScreenSpaceError = parameters.rootScreenSpaceError > 0
167
+ ? Math.min(Math.max(parameters.reverseScreenSpaceError / parameters.rootScreenSpaceError, 0), 1)
168
+ : 0;
169
+ const preferredSortingDigits = Math.floor(normalizedReverseScreenSpaceError * (PREFERRED_SORTING_DIGITS - 1));
170
+ const normalizedFoveatedFactor = Number.isFinite(parameters.foveatedFactor)
171
+ ? Math.min(Math.max(parameters.foveatedFactor, 0), 1)
172
+ : 0;
173
+ const foveatedSortingDigits = Math.floor(normalizedFoveatedFactor * (PREFERRED_SORTING_DIGITS - 1)) * FOVEATED_SORTING_SCALE;
174
+ const progressiveResolutionDigits = parameters.priorityProgressiveResolution
175
+ ? 0
176
+ : PROGRESSIVE_RESOLUTION_PENALTY;
177
+ return progressiveResolutionDigits + foveatedSortingDigits + preferredSortingDigits;
178
+ }
179
+ //# sourceMappingURL=tiles-3d-request-priority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiles-3d-request-priority.js","sourceRoot":"","sources":["../../../src/tileset-3d/helpers/tiles-3d-request-priority.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -11,6 +11,8 @@ export type Viewport = {
11
11
  height: number;
12
12
  width: number;
13
13
  zoom: number;
14
+ /** Perspective vertical field of view in degrees, when exposed by the viewport. */
15
+ fovy?: number;
14
16
  /** Whether this viewport uses an orthographic projection. */
15
17
  orthographic?: boolean;
16
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;iEACiE;AACjE,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE;QACd,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,KAAK,MAAM,EAAE,CAAC;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG;IAC1C,mGAAmG;IACnG,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,mGAAmG;IACnG,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;iEACiE;AACjE,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE;QACd,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9E,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,KAAK,MAAM,EAAE,CAAC;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG;IAC1C,mGAAmG;IACnG,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,mGAAmG;IACnG,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
package/dist/types.js CHANGED
@@ -1,2 +1,5 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  export {};
2
5
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doubly-linked-list.d.ts","sourceRoot":"","sources":["../../src/utils/doubly-linked-list.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,oBAAoB,EAAC,qCAAkC;AAE/D;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IACzC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IACzC,OAAO,SAAK;IAEZ,IAAI,MAAM,WAET;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAI,KAAA;IAgBR;;;OAGG;IACH,MAAM,CAAC,IAAI,KAAA;IA4BX;;;;OAIG;IACH,MAAM,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;IAUrB,OAAO,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;CAgBvB"}
1
+ {"version":3,"file":"doubly-linked-list.d.ts","sourceRoot":"","sources":["../../src/utils/doubly-linked-list.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,oBAAoB,EAAC,qCAAkC;AAE/D;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IACzC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IACzC,OAAO,SAAK;IAEZ,IAAI,MAAM,WAET;IAED;;;;OAIG;IACH,GAAG,CAAC,IAAI,KAAA;IAgBR;;;OAGG;IACH,MAAM,CAAC,IAAI,KAAA;IA4BX;;;;OAIG;IACH,MAAM,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;IAUrB,OAAO,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;CAgBvB"}
@@ -1,3 +1,4 @@
1
+ // SPDX-License-Identifier: Apache-2.0
1
2
  // This file is derived from the Cesium code base under Apache 2 license
2
3
  // See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md
3
4
  import { DoublyLinkedListNode } from "./doubly-linked-list-node.js";
@@ -1 +1 @@
1
- {"version":3,"file":"doubly-linked-list.js","sourceRoot":"","sources":["../../src/utils/doubly-linked-list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doubly-linked-list.js","sourceRoot":"","sources":["../../src/utils/doubly-linked-list.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"managed-array.d.ts","sourceRoot":"","sources":["../../src/utils/managed-array.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,IAAI,gBAAa;IACjB,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;gBAEJ,MAAM,SAAI;IAKtB;;;;;;OAMG;IACH,IAAI,MAAM,WAET;IAED,IAAI,MAAM,CAAC,MAAM,QAAA,EAKhB;IAED;;;;;;OAMG;IACH,IAAI,MAAM,UAET;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAK,KAAA;IAKT;;;;;OAKG;IACH,GAAG,CAAC,KAAK,KAAA,EAAE,OAAO,KAAA;IAelB,MAAM,CAAC,OAAO,KAAA;IASd;;;;OAIG;IACH,IAAI;IAIJ;;;;OAIG;IACH,IAAI,CAAC,OAAO,KAAA;IAQZ;;;;OAIG;IACH,GAAG;IAMH;;;;OAIG;IACH,OAAO,CAAC,MAAM,KAAA;IAQd;;;;OAIG;IACH,MAAM,CAAC,MAAM,KAAA;IAMb;;;;OAIG;IACH,IAAI,CAAC,MAAM,KAAA;IAOX,KAAK;IAML,IAAI,CAAC,MAAM,KAAA;CAGZ"}
1
+ {"version":3,"file":"managed-array.d.ts","sourceRoot":"","sources":["../../src/utils/managed-array.ts"],"names":[],"mappings":"AAOA;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,IAAI,gBAAa;IACjB,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;gBAEJ,MAAM,SAAI;IAKtB;;;;;;OAMG;IACH,IAAI,MAAM,WAET;IAED,IAAI,MAAM,CAAC,MAAM,QAAA,EAKhB;IAED;;;;;;OAMG;IACH,IAAI,MAAM,UAET;IAED;;;;OAIG;IACH,GAAG,CAAC,KAAK,KAAA;IAKT;;;;;OAKG;IACH,GAAG,CAAC,KAAK,KAAA,EAAE,OAAO,KAAA;IAelB,MAAM,CAAC,OAAO,KAAA;IASd;;;;OAIG;IACH,IAAI;IAIJ;;;;OAIG;IACH,IAAI,CAAC,OAAO,KAAA;IAQZ;;;;OAIG;IACH,GAAG;IAMH;;;;OAIG;IACH,OAAO,CAAC,MAAM,KAAA;IAQd;;;;OAIG;IACH,MAAM,CAAC,MAAM,KAAA;IAMb;;;;OAIG;IACH,IAAI,CAAC,MAAM,KAAA;IAOX,KAAK;IAML,IAAI,CAAC,MAAM,KAAA;CAGZ"}
@@ -1,3 +1,4 @@
1
+ // SPDX-License-Identifier: Apache-2.0
1
2
  // This file is derived from the Cesium code base under Apache 2 license
2
3
  // See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md
3
4
  import { assert } from '@loaders.gl/loader-utils';
@@ -1 +1 @@
1
- {"version":3,"file":"managed-array.js","sourceRoot":"","sources":["../../src/utils/managed-array.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"managed-array.js","sourceRoot":"","sources":["../../src/utils/managed-array.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/tiles",
3
- "version": "5.0.0-alpha.1",
3
+ "version": "5.0.0-alpha.2",
4
4
  "description": "Common components for different tiles loaders.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -42,9 +42,9 @@
42
42
  "build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js"
43
43
  },
44
44
  "dependencies": {
45
- "@loaders.gl/loader-utils": "5.0.0-alpha.1",
46
- "@loaders.gl/math": "5.0.0-alpha.1",
47
- "@loaders.gl/schema": "5.0.0-alpha.1",
45
+ "@loaders.gl/loader-utils": "5.0.0-alpha.2",
46
+ "@loaders.gl/math": "5.0.0-alpha.2",
47
+ "@loaders.gl/schema": "5.0.0-alpha.2",
48
48
  "@math.gl/core": "^4.1.0",
49
49
  "@math.gl/culling": "^4.1.0",
50
50
  "@math.gl/geospatial": "^4.1.0",
@@ -57,5 +57,5 @@
57
57
  "peerDependencies": {
58
58
  "@loaders.gl/core": "~5.0.0-alpha.0"
59
59
  },
60
- "gitHead": "77a55028e8204e09df1258f10cb61ed35353b258"
60
+ "gitHead": "27bcc0db684abb66a83003263c9d1cafd9e5b2dd"
61
61
  }
package/src/index.ts CHANGED
@@ -3,9 +3,11 @@
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
5
  export type {Tileset3DProps} from './tileset-3d/common/tileset-3d';
6
+ export type {FoveatedInterpolationCallback} from './tileset-3d/helpers/tiles-3d-request-priority';
6
7
  export {Tileset3D} from './tileset-3d/common/tileset-3d';
7
8
  export type {
8
9
  TileContentLoadResult,
10
+ TileChildrenLoadResult,
9
11
  TilesetContentFormats,
10
12
  TilesetJSON,
11
13
  TilesetSourceInput,
@@ -19,7 +21,23 @@ export {isTileset3DSource} from './tileset-3d/common/tileset-source';
19
21
  export type {IndexedArchiveTilesetSourceOptions} from './tileset-3d/common/indexed-archive-tileset-source';
20
22
  export {IndexedArchiveTilesetSource} from './tileset-3d/common/indexed-archive-tileset-source';
21
23
  export {Tile3D} from './tileset-3d/common/tile-3d';
24
+ export type {TileChildrenState} from './tileset-3d/common/tile-3d';
22
25
  export {Tiles3DSource} from './tileset-3d/format-3d-tiles/tiles-3d-source';
26
+ export type {ImplicitTilingStats} from './tileset-3d/format-3d-tiles/tiles-3d-source';
27
+ export type {
28
+ ImplicitAvailability,
29
+ ImplicitSubtreeReference,
30
+ ImplicitTileCoordinates,
31
+ ImplicitTileHeader,
32
+ ImplicitTilingDescriptor,
33
+ MaterializedImplicitSubtree,
34
+ ParsedImplicitSubtree
35
+ } from './tileset-3d/format-3d-tiles/implicit-tiling';
36
+ export {
37
+ createImplicitSubtreeReference,
38
+ materializeImplicitSubtree,
39
+ replaceImplicitUrlTemplate
40
+ } from './tileset-3d/format-3d-tiles/implicit-tiling';
23
41
  export {I3SSource} from './tileset-3d/format-i3s/i3s-source';
24
42
 
25
43
  export {TilesetTraverser} from './tileset-3d/common/tileset-traverser';
@@ -84,6 +102,7 @@ export {createBoundingVolume} from './tileset-3d/helpers/bounding-volume';
84
102
  export {calculateTransformProps} from './tileset-3d/helpers/transform-utils';
85
103
 
86
104
  export {getFrameState} from './tileset-3d/helpers/frame-state';
105
+ export type {GetFrameStateOptions} from './tileset-3d/helpers/frame-state';
87
106
  export {getLodStatus} from './tileset-3d/helpers/i3s-lod';
88
107
 
89
108
  export {
@@ -1,3 +1,7 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import type {PointCloudTileContent, PointCloudTileHeader} from './types';
2
6
 
3
7
  /**
@@ -1,3 +1,7 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {Vector3} from '@math.gl/core';
2
6
  import {BoundingSphere, CullingVolume, Plane} from '@math.gl/culling';
3
7
  import type {Viewport} from '../types';
@@ -1,3 +1,7 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import type {DataSource, DataSourceOptions} from '@loaders.gl/loader-utils';
2
6
  import type {MeshArrowTable} from '@loaders.gl/schema';
3
7
 
package/src/raster-set.ts CHANGED
@@ -10,57 +10,76 @@ import type {
10
10
  } from '@loaders.gl/loader-utils';
11
11
 
12
12
  /** Accepted raster request currently retained by {@link RasterSet}. */
13
- export type RasterSetRequest<DataT = RasterData> = {
13
+ export type RasterSetRequest<
14
+ DataT extends RasterData = RasterData,
15
+ ParametersT extends GetRasterParameters = GetRasterParameters
16
+ > = {
14
17
  /** Unique request id assigned by the manager. */
15
18
  requestId: number;
16
19
  /** Raster request parameters that produced the accepted raster payload. */
17
- parameters: GetRasterParameters;
20
+ parameters: ParametersT;
18
21
  /** Raster retained as the current output. */
19
22
  raster: DataT;
20
23
  };
21
24
 
22
25
  /** Arguments supplied to {@link RasterSetBaseProps.shouldRefetch}. */
23
- export type RasterSetShouldRefetchArgs<DataT = RasterData> = {
26
+ export type RasterSetShouldRefetchArgs<
27
+ DataT extends RasterData = RasterData,
28
+ ParametersT extends GetRasterParameters = GetRasterParameters,
29
+ MetadataT extends RasterSourceMetadata = RasterSourceMetadata
30
+ > = {
24
31
  /** Current accepted request retained by the raster manager, if any. */
25
- currentRequest: RasterSetRequest<DataT> | null;
32
+ currentRequest: RasterSetRequest<DataT, ParametersT> | null;
26
33
  /** Source metadata resolved by {@link RasterSet.loadMetadata}, if available. */
27
- metadata: RasterSourceMetadata | null;
34
+ metadata: MetadataT | null;
28
35
  /** Candidate raster request parameters under evaluation. */
29
- nextParameters: GetRasterParameters;
36
+ nextParameters: ParametersT;
30
37
  };
31
38
 
32
39
  /** Configuration shared by all {@link RasterSet} instances. */
33
- export type RasterSetBaseProps<DataT = RasterData> = {
40
+ export type RasterSetBaseProps<
41
+ DataT extends RasterData = RasterData,
42
+ ParametersT extends GetRasterParameters = GetRasterParameters,
43
+ MetadataT extends RasterSourceMetadata = RasterSourceMetadata
44
+ > = {
34
45
  /** Callback used to load source metadata. */
35
- getMetadata: () => Promise<RasterSourceMetadata>;
46
+ getMetadata: () => Promise<MetadataT>;
36
47
  /** Callback used to load raster data for a viewport-derived request. */
37
- getRaster: (parameters: GetRasterParameters) => Promise<DataT>;
48
+ getRaster: (parameters: ParametersT) => Promise<DataT>;
38
49
  /** Debounce interval applied before issuing raster requests. */
39
50
  debounceTime?: number;
40
51
  /** Optional policy callback that can skip redundant raster requests. */
41
- shouldRefetch?: (args: RasterSetShouldRefetchArgs<DataT>) => boolean;
52
+ shouldRefetch?: (args: RasterSetShouldRefetchArgs<DataT, ParametersT, MetadataT>) => boolean;
42
53
  };
43
54
 
44
55
  /** Options for creating a {@link RasterSet}. */
45
- export type RasterSetProps<DataT = RasterData> = Partial<RasterSetBaseProps<DataT>> & {
56
+ export type RasterSetProps<
57
+ DataT extends RasterData = RasterData,
58
+ ParametersT extends GetRasterParameters = GetRasterParameters,
59
+ MetadataT extends RasterSourceMetadata = RasterSourceMetadata
60
+ > = Partial<RasterSetBaseProps<DataT, ParametersT, MetadataT>> & {
46
61
  /** Optional loaders.gl raster source backing this manager. */
47
- rasterSource?: RasterSource | null;
62
+ rasterSource?: RasterSource<DataT, ParametersT, MetadataT> | null;
48
63
  };
49
64
 
50
65
  /** Subscription callbacks emitted by {@link RasterSet}. */
51
- export type RasterSetListener<DataT = RasterData> = {
66
+ export type RasterSetListener<
67
+ DataT extends RasterData = RasterData,
68
+ ParametersT extends GetRasterParameters = GetRasterParameters,
69
+ MetadataT extends RasterSourceMetadata = RasterSourceMetadata
70
+ > = {
52
71
  /** Fired when metadata/raster loading starts or stops. */
53
72
  onLoadingStateChange?: (isLoading: boolean) => void;
54
73
  /** Fired when source metadata resolves successfully. */
55
- onMetadataLoad?: (metadata: RasterSourceMetadata) => void;
74
+ onMetadataLoad?: (metadata: MetadataT) => void;
56
75
  /** Fired when metadata loading fails. */
57
76
  onMetadataLoadError?: (error: Error) => void;
58
77
  /** Fired when a new raster request is issued. */
59
- onRasterLoadStart?: (requestId: number, parameters: GetRasterParameters) => void;
78
+ onRasterLoadStart?: (requestId: number, parameters: ParametersT) => void;
60
79
  /** Fired when a raster request resolves and becomes current. */
61
- onRasterLoad?: (request: RasterSetRequest<DataT>) => void;
80
+ onRasterLoad?: (request: RasterSetRequest<DataT, ParametersT>) => void;
62
81
  /** Fired when a raster request fails. */
63
- onRasterLoadError?: (requestId: number, error: Error, parameters: GetRasterParameters) => void;
82
+ onRasterLoadError?: (requestId: number, error: Error, parameters: ParametersT) => void;
64
83
  /** Fired when metadata or the current raster changes. */
65
84
  onUpdate?: () => void;
66
85
  };
@@ -84,14 +103,24 @@ const DEFAULT_RASTERSET_PROPS: Required<Omit<RasterSetProps, 'rasterSource'>> =
84
103
  shouldRefetch: () => true
85
104
  };
86
105
 
87
- /** Shared raster request manager used by viewport-driven raster examples and layers. */
88
- export class RasterSet<DataT = RasterData> {
106
+ /**
107
+ * Shared raster request manager used by viewport-driven raster examples and layers.
108
+ *
109
+ * @typeParam DataT Raster payload retained by the manager.
110
+ * @typeParam ParametersT Request parameters accepted by the source.
111
+ * @typeParam MetadataT Metadata returned by the source.
112
+ */
113
+ export class RasterSet<
114
+ DataT extends RasterData = RasterData,
115
+ ParametersT extends GetRasterParameters = GetRasterParameters,
116
+ MetadataT extends RasterSourceMetadata = RasterSourceMetadata
117
+ > {
89
118
  /** Cached metadata returned by the backing source, if any. */
90
- metadata: RasterSourceMetadata | null = null;
119
+ metadata: MetadataT | null = null;
91
120
 
92
- private _opts: Required<RasterSetProps<DataT>>;
93
- private _listeners = new Set<RasterSetListener<DataT>>();
94
- private _currentRequest: RasterSetRequest<DataT> | null = null;
121
+ private _opts: Required<RasterSetProps<DataT, ParametersT, MetadataT>>;
122
+ private _listeners = new Set<RasterSetListener<DataT, ParametersT, MetadataT>>();
123
+ private _currentRequest: RasterSetRequest<DataT, ParametersT> | null = null;
95
124
  private _lastAcceptedRequestId = -1;
96
125
  private _nextRequestId = 0;
97
126
  private _loadCounter = 0;
@@ -100,7 +129,7 @@ export class RasterSet<DataT = RasterData> {
100
129
  private _finalized = false;
101
130
 
102
131
  /** Creates a raster manager from a source or direct callbacks. */
103
- constructor(opts: RasterSetProps<DataT>) {
132
+ constructor(opts: RasterSetProps<DataT, ParametersT, MetadataT>) {
104
133
  this._opts = this._normalizeOptions(opts);
105
134
  if (!this._opts.rasterSource && (!opts.getRaster || !opts.getMetadata)) {
106
135
  throw new Error(
@@ -110,11 +139,18 @@ export class RasterSet<DataT = RasterData> {
110
139
  }
111
140
 
112
141
  /** Convenience factory for wrapping a loaders.gl {@link RasterSource}. */
113
- static fromRasterSource<DataT = RasterData>(
114
- rasterSource: RasterSource,
115
- opts: Omit<RasterSetProps<DataT>, 'rasterSource' | 'getRaster' | 'getMetadata'> = {}
116
- ): RasterSet<DataT> {
117
- return new RasterSet<DataT>({...opts, rasterSource});
142
+ static fromRasterSource<
143
+ DataT extends RasterData = RasterData,
144
+ ParametersT extends GetRasterParameters = GetRasterParameters,
145
+ MetadataT extends RasterSourceMetadata = RasterSourceMetadata
146
+ >(
147
+ rasterSource: RasterSource<DataT, ParametersT, MetadataT>,
148
+ opts: Omit<
149
+ RasterSetProps<DataT, ParametersT, MetadataT>,
150
+ 'rasterSource' | 'getRaster' | 'getMetadata'
151
+ > = {}
152
+ ): RasterSet<DataT, ParametersT, MetadataT> {
153
+ return new RasterSet<DataT, ParametersT, MetadataT>({...opts, rasterSource});
118
154
  }
119
155
 
120
156
  /** Whether the manager has no requests in flight and a current raster. */
@@ -128,23 +164,23 @@ export class RasterSet<DataT = RasterData> {
128
164
  }
129
165
 
130
166
  /** Current accepted request and raster payload, if any. */
131
- get currentRequest(): RasterSetRequest<DataT> | null {
167
+ get currentRequest(): RasterSetRequest<DataT, ParametersT> | null {
132
168
  return this._currentRequest;
133
169
  }
134
170
 
135
171
  /** Backing raster source when constructed from one. */
136
- get rasterSource(): RasterSource | null {
172
+ get rasterSource(): RasterSource<DataT, ParametersT, MetadataT> | null {
137
173
  return this._opts.rasterSource;
138
174
  }
139
175
 
140
176
  /** Subscribes to metadata and raster lifecycle events. */
141
- subscribe(listener: RasterSetListener<DataT>): () => void {
177
+ subscribe(listener: RasterSetListener<DataT, ParametersT, MetadataT>): () => void {
142
178
  this._listeners.add(listener);
143
179
  return () => this._listeners.delete(listener);
144
180
  }
145
181
 
146
182
  /** Updates source callbacks or debounce settings, resetting state when the source changes. */
147
- setOptions(opts: RasterSetProps<DataT>): void {
183
+ setOptions(opts: RasterSetProps<DataT, ParametersT, MetadataT>): void {
148
184
  const previousRasterSource = this._opts.rasterSource;
149
185
  const nextOptions = this._normalizeOptions({...this._opts, ...opts});
150
186
  const sourceChanged =
@@ -165,7 +201,7 @@ export class RasterSet<DataT = RasterData> {
165
201
  }
166
202
 
167
203
  /** Loads metadata from the current raster source or callbacks. */
168
- async loadMetadata(): Promise<RasterSourceMetadata> {
204
+ async loadMetadata(): Promise<MetadataT> {
169
205
  this._startLoading();
170
206
  try {
171
207
  const metadata = await this._opts.getMetadata();
@@ -192,7 +228,7 @@ export class RasterSet<DataT = RasterData> {
192
228
  }
193
229
 
194
230
  /** Debounces and issues a new raster request for the supplied parameters. */
195
- requestRaster(parameters: GetRasterParameters, debounceTime = this._opts.debounceTime): number {
231
+ requestRaster(parameters: ParametersT, debounceTime = this._opts.debounceTime): number {
196
232
  if (!this.shouldRefetchRaster(parameters)) {
197
233
  return this._currentRequest?.requestId ?? -1;
198
234
  }
@@ -213,7 +249,7 @@ export class RasterSet<DataT = RasterData> {
213
249
  }
214
250
 
215
251
  /** Returns `true` when the supplied parameters warrant a new raster fetch. */
216
- shouldRefetchRaster(parameters: GetRasterParameters): boolean {
252
+ shouldRefetchRaster(parameters: ParametersT): boolean {
217
253
  return this._opts.shouldRefetch({
218
254
  currentRequest: this._currentRequest,
219
255
  metadata: this.metadata,
@@ -230,7 +266,7 @@ export class RasterSet<DataT = RasterData> {
230
266
  }
231
267
 
232
268
  /** Loads a raster immediately and accepts it only if it is the newest completed request. */
233
- private async _loadRaster(requestId: number, parameters: GetRasterParameters): Promise<void> {
269
+ private async _loadRaster(requestId: number, parameters: ParametersT): Promise<void> {
234
270
  if (this._finalized) {
235
271
  return;
236
272
  }
@@ -276,7 +312,9 @@ export class RasterSet<DataT = RasterData> {
276
312
  }
277
313
 
278
314
  /** Resolves current options from either a source or direct callbacks. */
279
- private _normalizeOptions(opts: RasterSetProps<DataT>): Required<RasterSetProps<DataT>> {
315
+ private _normalizeOptions(
316
+ opts: RasterSetProps<DataT, ParametersT, MetadataT>
317
+ ): Required<RasterSetProps<DataT, ParametersT, MetadataT>> {
280
318
  const rasterSource = opts.rasterSource || null;
281
319
  return {
282
320
  ...DEFAULT_RASTERSET_PROPS,
@@ -288,22 +326,22 @@ export class RasterSet<DataT = RasterData> {
288
326
  if (rasterSource) {
289
327
  return rasterSource.getMetadata();
290
328
  }
291
- return DEFAULT_RASTERSET_PROPS.getMetadata();
329
+ return DEFAULT_RASTERSET_PROPS.getMetadata() as Promise<MetadataT>;
292
330
  }),
293
331
  getRaster:
294
332
  opts.getRaster ||
295
- ((parameters: GetRasterParameters) => {
333
+ ((parameters: ParametersT) => {
296
334
  if (rasterSource) {
297
- return rasterSource.getRaster(parameters) as Promise<DataT>;
335
+ return rasterSource.getRaster(parameters);
298
336
  }
299
337
  return DEFAULT_RASTERSET_PROPS.getRaster(parameters) as Promise<DataT>;
300
338
  }),
301
339
  debounceTime: opts.debounceTime ?? DEFAULT_RASTERSET_PROPS.debounceTime,
302
340
  shouldRefetch:
303
341
  (opts.shouldRefetch as
304
- | ((args: RasterSetShouldRefetchArgs<DataT>) => boolean)
342
+ | ((args: RasterSetShouldRefetchArgs<DataT, ParametersT, MetadataT>) => boolean)
305
343
  | undefined) ||
306
- ((args: RasterSetShouldRefetchArgs<DataT>) =>
344
+ ((args: RasterSetShouldRefetchArgs<DataT, ParametersT, MetadataT>) =>
307
345
  DEFAULT_RASTERSET_PROPS.shouldRefetch(args as RasterSetShouldRefetchArgs))
308
346
  };
309
347
  }