@deck.gl-community/geo-layers 9.2.8 → 9.3.0-beta.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 (82) hide show
  1. package/dist/global-grid-layer/global-grid-cluster-layer.d.ts.map +1 -1
  2. package/dist/global-grid-layer/global-grid-cluster-layer.js +1 -0
  3. package/dist/global-grid-layer/global-grid-cluster-layer.js.map +1 -1
  4. package/dist/index.cjs +1799 -7
  5. package/dist/index.cjs.map +4 -4
  6. package/dist/index.d.ts +7 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +3 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/shared-tile-2d-layer/deck-tile-traversal.d.ts +5 -0
  11. package/dist/shared-tile-2d-layer/deck-tile-traversal.d.ts.map +1 -0
  12. package/dist/shared-tile-2d-layer/deck-tile-traversal.js +173 -0
  13. package/dist/shared-tile-2d-layer/deck-tile-traversal.js.map +1 -0
  14. package/dist/shared-tile-2d-layer/deck-tileset-adapter.d.ts +26 -0
  15. package/dist/shared-tile-2d-layer/deck-tileset-adapter.d.ts.map +1 -0
  16. package/dist/shared-tile-2d-layer/deck-tileset-adapter.js +174 -0
  17. package/dist/shared-tile-2d-layer/deck-tileset-adapter.js.map +1 -0
  18. package/dist/shared-tile-2d-layer/index.d.ts +4 -0
  19. package/dist/shared-tile-2d-layer/index.d.ts.map +1 -0
  20. package/dist/shared-tile-2d-layer/index.js +6 -0
  21. package/dist/shared-tile-2d-layer/index.js.map +1 -0
  22. package/dist/shared-tile-2d-layer/shared-tile-2d-layer.d.ts +151 -0
  23. package/dist/shared-tile-2d-layer/shared-tile-2d-layer.d.ts.map +1 -0
  24. package/dist/shared-tile-2d-layer/shared-tile-2d-layer.js +422 -0
  25. package/dist/shared-tile-2d-layer/shared-tile-2d-layer.js.map +1 -0
  26. package/dist/shared-tile-2d-layer/shared-tile-2d-view.d.ts +57 -0
  27. package/dist/shared-tile-2d-layer/shared-tile-2d-view.d.ts.map +1 -0
  28. package/dist/shared-tile-2d-layer/shared-tile-2d-view.js +253 -0
  29. package/dist/shared-tile-2d-layer/shared-tile-2d-view.js.map +1 -0
  30. package/dist/shared-tile-2d-layer/url-template.d.ts +9 -0
  31. package/dist/shared-tile-2d-layer/url-template.d.ts.map +1 -0
  32. package/dist/shared-tile-2d-layer/url-template.js +25 -0
  33. package/dist/shared-tile-2d-layer/url-template.js.map +1 -0
  34. package/dist/tile-grid-layer/tile-grid-layer.d.ts +47 -0
  35. package/dist/tile-grid-layer/tile-grid-layer.d.ts.map +1 -0
  36. package/dist/tile-grid-layer/tile-grid-layer.js +94 -0
  37. package/dist/tile-grid-layer/tile-grid-layer.js.map +1 -0
  38. package/dist/tile-source-layer/tile-source-layer.d.ts +2 -2
  39. package/dist/tile-source-layer/tile-source-layer.d.ts.map +1 -1
  40. package/dist/tileset/adapter.d.ts +38 -0
  41. package/dist/tileset/adapter.d.ts.map +1 -0
  42. package/dist/tileset/adapter.js +5 -0
  43. package/dist/tileset/adapter.js.map +1 -0
  44. package/dist/tileset/index.cjs +721 -0
  45. package/dist/tileset/index.cjs.map +7 -0
  46. package/dist/tileset/index.d.ts +8 -0
  47. package/dist/tileset/index.d.ts.map +1 -0
  48. package/dist/tileset/index.js +7 -0
  49. package/dist/tileset/index.js.map +1 -0
  50. package/dist/tileset/tile-2d-header.d.ts +71 -0
  51. package/dist/tileset/tile-2d-header.d.ts.map +1 -0
  52. package/dist/tileset/tile-2d-header.js +168 -0
  53. package/dist/tileset/tile-2d-header.js.map +1 -0
  54. package/dist/tileset/tileset-2d.d.ts +210 -0
  55. package/dist/tileset/tileset-2d.d.ts.map +1 -0
  56. package/dist/tileset/tileset-2d.js +531 -0
  57. package/dist/tileset/tileset-2d.js.map +1 -0
  58. package/dist/tileset/types.d.ts +44 -0
  59. package/dist/tileset/types.d.ts.map +1 -0
  60. package/dist/tileset/types.js +5 -0
  61. package/dist/tileset/types.js.map +1 -0
  62. package/dist/utils/memoize.d.ts +2 -0
  63. package/dist/utils/memoize.d.ts.map +1 -0
  64. package/dist/utils/memoize.js +36 -0
  65. package/dist/utils/memoize.js.map +1 -0
  66. package/package.json +17 -11
  67. package/src/global-grid-layer/global-grid-cluster-layer.ts +1 -1
  68. package/src/index.ts +14 -0
  69. package/src/shared-tile-2d-layer/deck-tile-traversal.ts +247 -0
  70. package/src/shared-tile-2d-layer/deck-tileset-adapter.ts +262 -0
  71. package/src/shared-tile-2d-layer/index.ts +7 -0
  72. package/src/shared-tile-2d-layer/shared-tile-2d-layer.ts +681 -0
  73. package/src/shared-tile-2d-layer/shared-tile-2d-view.ts +339 -0
  74. package/src/shared-tile-2d-layer/url-template.ts +40 -0
  75. package/src/tile-grid-layer/tile-grid-layer.ts +158 -0
  76. package/src/tile-source-layer/tile-source-layer.ts +2 -2
  77. package/src/tileset/adapter.ts +47 -0
  78. package/src/tileset/index.ts +22 -0
  79. package/src/tileset/tile-2d-header.ts +210 -0
  80. package/src/tileset/tileset-2d.ts +705 -0
  81. package/src/tileset/types.ts +38 -0
  82. package/src/utils/memoize.ts +38 -0
@@ -0,0 +1,422 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { CompositeLayer, _flatten as flatten } from '@deck.gl/core';
5
+ import { GeoJsonLayer } from '@deck.gl/layers';
6
+ import { Matrix4 } from '@math.gl/core';
7
+ import { SharedTileset2D, STRATEGY_DEFAULT } from "../tileset/index.js";
8
+ import { SharedTile2DView } from "./shared-tile-2d-view.js";
9
+ import { sharedTile2DDeckAdapter } from "./deck-tileset-adapter.js";
10
+ import { getURLFromTemplate } from "./url-template.js";
11
+ /** Tests whether a value looks like a loaders.gl {@link TileSource}. */
12
+ function isTileSource(value) {
13
+ return Boolean(value &&
14
+ typeof value === 'object' &&
15
+ 'getTileData' in value &&
16
+ typeof value.getTileData === 'function' &&
17
+ 'getMetadata' in value &&
18
+ typeof value.getMetadata === 'function');
19
+ }
20
+ /** Tests whether a value is a supported URL-template input for tiled requests. */
21
+ function isURLTemplate(value) {
22
+ return (value === null ||
23
+ typeof value === 'string' ||
24
+ (Array.isArray(value) && value.every((url) => typeof url === 'string')));
25
+ }
26
+ /** Prop-type validator for `data` inputs accepted by {@link SharedTile2DLayer}. */
27
+ const tile2DDataType = {
28
+ type: 'object',
29
+ value: null,
30
+ validate: (value, propType) => (propType.optional && value === null) ||
31
+ value instanceof SharedTileset2D ||
32
+ isTileSource(value) ||
33
+ isURLTemplate(value),
34
+ equal: (value1, value2) => value1 === value2
35
+ };
36
+ /** Default prop values for {@link SharedTile2DLayer}. */
37
+ const defaultProps = {
38
+ TilesetClass: SharedTileset2D,
39
+ data: tile2DDataType,
40
+ dataComparator: tile2DDataType.equal,
41
+ renderSubLayers: { type: 'function', value: (props) => new GeoJsonLayer(props) },
42
+ getTileData: { type: 'function', optional: true, value: null },
43
+ onViewportLoad: { type: 'function', optional: true, value: null },
44
+ onTileLoad: { type: 'function', value: () => { } },
45
+ onTileUnload: { type: 'function', value: () => { } },
46
+ onTileError: { type: 'function', value: () => { } },
47
+ extent: { type: 'array', optional: true, value: null, compare: true },
48
+ tileSize: 512,
49
+ maxZoom: null,
50
+ minZoom: 0,
51
+ maxCacheSize: null,
52
+ maxCacheByteSize: null,
53
+ refinementStrategy: STRATEGY_DEFAULT,
54
+ zRange: null,
55
+ maxRequests: 6,
56
+ debounceTime: 0,
57
+ zoomOffset: 0
58
+ };
59
+ /** Internal defaults used to detect whether layer props were explicitly overridden. */
60
+ const TILE2D_LAYER_DEFAULT_OPTION_VALUES = {
61
+ maxCacheSize: null,
62
+ maxCacheByteSize: null,
63
+ maxZoom: null,
64
+ minZoom: 0,
65
+ tileSize: 512,
66
+ refinementStrategy: STRATEGY_DEFAULT,
67
+ extent: null,
68
+ maxRequests: 6,
69
+ debounceTime: 0,
70
+ zoomOffset: 0
71
+ };
72
+ /** Composite layer that can reuse a shared {@link SharedTileset2D} across layers and views. */
73
+ export class SharedTile2DLayer extends CompositeLayer {
74
+ /** Layer default props consumed by deck.gl prop management. */
75
+ static defaultProps = defaultProps;
76
+ /** Stable layer name used in logs and devtools. */
77
+ static layerName = 'SharedTile2DLayer';
78
+ /** Viewports currently known to this layer during multi-view rendering. */
79
+ _knownViewports = new Map();
80
+ /** Internal layer state shared across render passes. */
81
+ state = null;
82
+ /** Initializes layer-owned tileset state. */
83
+ initializeState() {
84
+ this._knownViewports.clear();
85
+ if (this.context.viewport) {
86
+ this._knownViewports.set(this.context.viewport.id || 'default', this.context.viewport);
87
+ }
88
+ this.state = {
89
+ tileset: null,
90
+ tilesetViews: new Map(),
91
+ ownsTileset: false,
92
+ isLoaded: false,
93
+ frameNumbers: new Map(),
94
+ tileLayers: new Map(),
95
+ unsubscribeTilesetEvents: null
96
+ };
97
+ }
98
+ /** Finalizes owned resources and detaches from any shared tileset. */
99
+ finalizeState() {
100
+ this.state.unsubscribeTilesetEvents?.();
101
+ for (const tilesetView of this.state.tilesetViews.values()) {
102
+ tilesetView.finalize();
103
+ }
104
+ if (this.state.ownsTileset) {
105
+ this.state.tileset?.finalize();
106
+ }
107
+ }
108
+ /** Returns whether all visible sub-layers for all tracked views are loaded. */
109
+ get isLoaded() {
110
+ const { tilesetViews, tileLayers } = this.state;
111
+ if (!tilesetViews.size) {
112
+ return false;
113
+ }
114
+ return Boolean(Array.from(tilesetViews.values()).every((tilesetView) => tilesetView.selectedTiles?.every((tile) => {
115
+ const cachedLayers = tileLayers.get(tile.id);
116
+ return (tile.isLoaded &&
117
+ (!tile.content || !cachedLayers || cachedLayers.every((layer) => layer.isLoaded)));
118
+ })));
119
+ }
120
+ /** Triggers updates whenever props, data, or update triggers change. */
121
+ shouldUpdateState({ changeFlags }) {
122
+ return changeFlags.somethingChanged;
123
+ }
124
+ /** Creates, reuses, or reconfigures the backing shared tileset and per-view state. */
125
+ updateState({ changeFlags }) {
126
+ if (this.context.viewport) {
127
+ this._knownViewports.set(this._getViewportKey(), this.context.viewport);
128
+ }
129
+ const propsChanged = Boolean(changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged);
130
+ const dataChanged = changeFlags.dataChanged ||
131
+ (changeFlags.updateTriggersChanged &&
132
+ (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));
133
+ let { tileset, ownsTileset } = this.state;
134
+ const nextExternalTileset = this.props.data instanceof SharedTileset2D ? this.props.data : null;
135
+ if (nextExternalTileset && !nextExternalTileset.adapter) {
136
+ nextExternalTileset.setOptions({ adapter: sharedTile2DDeckAdapter });
137
+ }
138
+ const nextOwnsTileset = !nextExternalTileset;
139
+ const nextTileset = this._resolveTileset(tileset, ownsTileset, nextExternalTileset);
140
+ const tilesetChanged = nextTileset !== tileset || nextOwnsTileset !== ownsTileset;
141
+ if (tilesetChanged) {
142
+ this._releaseTileset(tileset, ownsTileset);
143
+ tileset = nextTileset;
144
+ ownsTileset = nextOwnsTileset;
145
+ this.setState({
146
+ tileset,
147
+ tilesetViews: new Map(),
148
+ ownsTileset,
149
+ tileLayers: new Map(),
150
+ frameNumbers: new Map(),
151
+ unsubscribeTilesetEvents: nextTileset.subscribe({
152
+ onTileLoad: this._onTileLoad.bind(this),
153
+ onTileError: this._onTileError.bind(this),
154
+ onTileUnload: this._onTileUnload.bind(this),
155
+ onUpdate: () => this.setNeedsUpdate(),
156
+ onError: (error) => this.raiseError(error, 'loading TileSource metadata')
157
+ })
158
+ });
159
+ }
160
+ else {
161
+ this._updateExistingTileset(propsChanged, ownsTileset, Boolean(dataChanged), nextTileset);
162
+ }
163
+ this._updateTileset();
164
+ }
165
+ /** Resolves whether to reuse a shared tileset, reuse an owned tileset, or create a new one. */
166
+ _resolveTileset(currentTileset, ownsCurrentTileset, nextExternalTileset) {
167
+ if (nextExternalTileset) {
168
+ return nextExternalTileset;
169
+ }
170
+ if (currentTileset && ownsCurrentTileset) {
171
+ return currentTileset;
172
+ }
173
+ return new this.props.TilesetClass(this._getTilesetOptions());
174
+ }
175
+ /** Tears down subscriptions and per-view state for the outgoing tileset. */
176
+ _releaseTileset(tileset, ownsTileset) {
177
+ this.state.unsubscribeTilesetEvents?.();
178
+ for (const tilesetView of this.state.tilesetViews.values()) {
179
+ tilesetView.finalize();
180
+ }
181
+ if (ownsTileset) {
182
+ tileset?.finalize();
183
+ }
184
+ }
185
+ /** Applies prop updates to an existing tileset without replacing it. */
186
+ _updateExistingTileset(propsChanged, ownsTileset, dataChanged, tileset) {
187
+ if (!propsChanged) {
188
+ return;
189
+ }
190
+ if (ownsTileset) {
191
+ tileset.setOptions(this._getTilesetOptions());
192
+ if (dataChanged) {
193
+ tileset.reloadAll();
194
+ return;
195
+ }
196
+ }
197
+ this.state.tileLayers.clear();
198
+ }
199
+ /** Resolves the current tileset configuration from layer props. */
200
+ _getTilesetOptions() {
201
+ const { tileSize, maxCacheSize, maxCacheByteSize, refinementStrategy, extent, maxZoom, minZoom, maxRequests, debounceTime, zoomOffset } = this.props;
202
+ const tileSource = isTileSource(this.props.data) ? this.props.data : undefined;
203
+ const options = {
204
+ tileSource,
205
+ adapter: sharedTile2DDeckAdapter,
206
+ getTileData: tileSource ? undefined : this.getTileData.bind(this),
207
+ onTileLoad: () => { },
208
+ onTileError: () => { },
209
+ onTileUnload: () => { }
210
+ };
211
+ this._assignTilesetOptionIfExplicit(options, 'maxCacheSize', maxCacheSize, TILE2D_LAYER_DEFAULT_OPTION_VALUES.maxCacheSize);
212
+ this._assignTilesetOptionIfExplicit(options, 'maxCacheByteSize', maxCacheByteSize, TILE2D_LAYER_DEFAULT_OPTION_VALUES.maxCacheByteSize);
213
+ this._assignTilesetOptionIfExplicit(options, 'maxZoom', maxZoom, TILE2D_LAYER_DEFAULT_OPTION_VALUES.maxZoom);
214
+ this._assignTilesetOptionIfExplicit(options, 'minZoom', minZoom, TILE2D_LAYER_DEFAULT_OPTION_VALUES.minZoom);
215
+ this._assignTilesetOptionIfExplicit(options, 'tileSize', tileSize, TILE2D_LAYER_DEFAULT_OPTION_VALUES.tileSize);
216
+ this._assignTilesetOptionIfExplicit(options, 'refinementStrategy', refinementStrategy, TILE2D_LAYER_DEFAULT_OPTION_VALUES.refinementStrategy);
217
+ this._assignTilesetOptionIfExplicit(options, 'extent', extent, TILE2D_LAYER_DEFAULT_OPTION_VALUES.extent);
218
+ this._assignTilesetOptionIfExplicit(options, 'maxRequests', maxRequests, TILE2D_LAYER_DEFAULT_OPTION_VALUES.maxRequests);
219
+ this._assignTilesetOptionIfExplicit(options, 'debounceTime', debounceTime, TILE2D_LAYER_DEFAULT_OPTION_VALUES.debounceTime);
220
+ this._assignTilesetOptionIfExplicit(options, 'zoomOffset', zoomOffset, TILE2D_LAYER_DEFAULT_OPTION_VALUES.zoomOffset);
221
+ return options;
222
+ }
223
+ /** Updates per-view traversal state for all known viewports. */
224
+ _updateTileset() {
225
+ const { zRange, modelMatrix } = this.props;
226
+ let anyTilesetChanged = false;
227
+ for (const [viewportKey, viewport] of this._knownViewports) {
228
+ this._prunePlaceholderViewportView(viewportKey);
229
+ const tilesetView = this._getOrCreateTilesetView(viewportKey);
230
+ const frameNumber = tilesetView.update(viewport, { zRange, modelMatrix });
231
+ const previousFrameNumber = this.state.frameNumbers.get(viewportKey);
232
+ const tilesetChanged = previousFrameNumber !== frameNumber;
233
+ anyTilesetChanged ||= tilesetChanged;
234
+ if (tilesetView.isLoaded && tilesetChanged) {
235
+ this._onViewportLoad(tilesetView);
236
+ }
237
+ if (tilesetChanged) {
238
+ this.state.frameNumbers.set(viewportKey, frameNumber);
239
+ }
240
+ }
241
+ const nextIsLoaded = this.isLoaded;
242
+ const loadingStateChanged = this.state.isLoaded !== nextIsLoaded;
243
+ if (loadingStateChanged) {
244
+ for (const tilesetView of this.state.tilesetViews.values()) {
245
+ if (tilesetView.isLoaded) {
246
+ this._onViewportLoad(tilesetView);
247
+ }
248
+ }
249
+ }
250
+ if (anyTilesetChanged) {
251
+ this.setState({ frameNumbers: new Map(this.state.frameNumbers) });
252
+ }
253
+ this.state.isLoaded = nextIsLoaded;
254
+ }
255
+ /** Emits the viewport-load callback for one view. */
256
+ _onViewportLoad(tilesetView) {
257
+ if (tilesetView.selectedTiles) {
258
+ this.props.onViewportLoad?.(tilesetView.selectedTiles);
259
+ }
260
+ }
261
+ /** Clears cached sub-layers when a tile loads. */
262
+ _onTileLoad(tile) {
263
+ this.state.tileLayers.delete(tile.id);
264
+ this.props.onTileLoad(tile);
265
+ this.setNeedsUpdate();
266
+ }
267
+ /** Clears cached sub-layers when a tile errors. */
268
+ _onTileError(error, tile) {
269
+ this.state.tileLayers.delete(tile.id);
270
+ this.props.onTileError(error, tile);
271
+ this.setNeedsUpdate();
272
+ }
273
+ /** Removes cached sub-layers when a tile is evicted. */
274
+ _onTileUnload(tile) {
275
+ this.state.tileLayers.delete(tile.id);
276
+ this.props.onTileUnload(tile);
277
+ }
278
+ /** Calls the URL-template loader path for a tile when the layer owns the tileset. */
279
+ getTileData(tile) {
280
+ const { data, getTileData, fetch } = this.props;
281
+ const { signal } = tile;
282
+ if (!isURLTemplate(data)) {
283
+ return null;
284
+ }
285
+ tile.url = getURLFromTemplate(data, tile);
286
+ if (getTileData) {
287
+ return getTileData(tile);
288
+ }
289
+ if (fetch && tile.url) {
290
+ return fetch(tile.url, { propName: 'data', layer: this, signal });
291
+ }
292
+ return null;
293
+ }
294
+ /** Default tile sub-layer renderer, delegating to `renderSubLayers`. */
295
+ renderSubLayers(props) {
296
+ return this.props.renderSubLayers(props);
297
+ }
298
+ /** Hook for subclasses to provide extra sub-layer props per tile. */
299
+ getSubLayerPropsByTile(_tile) {
300
+ return null;
301
+ }
302
+ /** Adds tile references to picking info returned from sub-layers. */
303
+ getPickingInfo(params) {
304
+ const { sourceLayer } = params;
305
+ if (!sourceLayer) {
306
+ throw new Error('SharedTile2DLayer picking info requires a source layer.');
307
+ }
308
+ const sourceTile = sourceLayer.props.tile;
309
+ const info = params.info;
310
+ if (info.picked) {
311
+ info.tile = sourceTile;
312
+ }
313
+ info.sourceTile = sourceTile;
314
+ info.sourceTileSubLayer = sourceLayer;
315
+ return info;
316
+ }
317
+ /** Forwards auto-highlight updates to the picked sub-layer. */
318
+ _updateAutoHighlight(info) {
319
+ info.sourceTileSubLayer.updateAutoHighlight(info);
320
+ }
321
+ /** Renders cached or newly generated sub-layers for each loaded tile. */
322
+ renderLayers() {
323
+ const { tileset, tileLayers } = this.state;
324
+ if (!tileset) {
325
+ return null;
326
+ }
327
+ return tileset.tiles.map((tile) => {
328
+ const subLayerProps = this.getSubLayerPropsByTile(tile);
329
+ let layers = tileLayers.get(tile.id);
330
+ if (!tile.isLoaded && !tile.content) {
331
+ return layers;
332
+ }
333
+ if (!layers) {
334
+ const rendered = this.renderSubLayers({
335
+ ...this.props,
336
+ ...this.getSubLayerProps({
337
+ id: tile.id,
338
+ updateTriggers: this.props.updateTriggers
339
+ }),
340
+ data: tile.content,
341
+ _offset: 0,
342
+ tile
343
+ });
344
+ layers = this._flattenTileLayers(rendered).map((layer) => layer.clone({ tile, ...subLayerProps }));
345
+ tileLayers.set(tile.id, layers);
346
+ }
347
+ else if (subLayerProps &&
348
+ layers[0] &&
349
+ Object.keys(subLayerProps).some((propName) => layers[0].props[propName] !== subLayerProps[propName])) {
350
+ layers = layers.map((layer) => layer.clone(subLayerProps));
351
+ tileLayers.set(tile.id, layers);
352
+ }
353
+ return layers;
354
+ });
355
+ }
356
+ /** Filters tile sub-layers based on the active view-specific visibility state. */
357
+ filterSubLayer({ layer, cullRect }) {
358
+ const { tile } = layer.props;
359
+ const tilesetView = this._getOrCreateTilesetView(this._getViewportKey());
360
+ return tilesetView.isTileVisible(tile, cullRect, this.props.modelMatrix ? new Matrix4(this.props.modelMatrix) : null);
361
+ }
362
+ /** Returns the active viewport key used to isolate per-view traversal state. */
363
+ _getViewportKey() {
364
+ return this.context.viewport?.id || 'default';
365
+ }
366
+ /** Copies a tileset option only when the layer prop was explicitly set. */
367
+ _assignTilesetOptionIfExplicit(options, key, value, defaultValue) {
368
+ if (!this._isDefaultOptionValue(value, defaultValue)) {
369
+ options[key] = value;
370
+ }
371
+ }
372
+ /** Tests whether a layer prop still has its default value. */
373
+ _isDefaultOptionValue(value, defaultValue) {
374
+ if (Array.isArray(value) || Array.isArray(defaultValue)) {
375
+ return (Array.isArray(value) &&
376
+ Array.isArray(defaultValue) &&
377
+ value.length === defaultValue.length &&
378
+ value.every((entry, index) => entry === defaultValue[index]));
379
+ }
380
+ return value === defaultValue;
381
+ }
382
+ /** Drops the bootstrap placeholder viewport after a real viewport is known. */
383
+ _prunePlaceholderViewportView(viewportKey) {
384
+ const placeholderViewportKey = 'DEFAULT-INITIAL-VIEWPORT';
385
+ if (viewportKey !== placeholderViewportKey) {
386
+ const placeholderView = this.state.tilesetViews.get(placeholderViewportKey);
387
+ if (placeholderView) {
388
+ placeholderView.finalize();
389
+ this.state.tilesetViews.delete(placeholderViewportKey);
390
+ this.state.frameNumbers.delete(placeholderViewportKey);
391
+ }
392
+ }
393
+ }
394
+ /** Returns the per-viewport traversal state, creating it on demand. */
395
+ _getOrCreateTilesetView(viewportKey) {
396
+ let tilesetView = this.state.tilesetViews.get(viewportKey);
397
+ if (!tilesetView) {
398
+ const tileset = this.state.tileset;
399
+ if (!tileset) {
400
+ throw new Error('SharedTile2DLayer tileset was not initialized.');
401
+ }
402
+ tilesetView = new SharedTile2DView(tileset);
403
+ this.state.tilesetViews.set(viewportKey, tilesetView);
404
+ }
405
+ return tilesetView;
406
+ }
407
+ /** Registers additional viewports in multi-view rendering scenarios. */
408
+ activateViewport(viewport) {
409
+ const viewportKey = viewport.id || 'default';
410
+ const previousViewport = this._knownViewports.get(viewportKey);
411
+ this._knownViewports.set(viewportKey, viewport);
412
+ if (!previousViewport || !viewport.equals(previousViewport)) {
413
+ this.setNeedsUpdate();
414
+ }
415
+ super.activateViewport(viewport);
416
+ }
417
+ /** Normalizes nested render output into a flat tile sub-layer array. */
418
+ _flattenTileLayers(rendered) {
419
+ return flatten(rendered, Boolean);
420
+ }
421
+ }
422
+ //# sourceMappingURL=shared-tile-2d-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-tile-2d-layer.js","sourceRoot":"","sources":["../../src/shared-tile-2d-layer/shared-tile-2d-layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import { type Viewport } from '@deck.gl/core';
2
+ import { Matrix4, type NumericArray } from '@math.gl/core';
3
+ import { SharedTile2DHeader, type SharedTileset2D } from "../tileset/index.js";
4
+ /** Per-viewport traversal state for the deck-facing shared tile layer. */
5
+ export declare class SharedTile2DView<DataT = any> {
6
+ /** Unique consumer identifier used by the shared tileset cache. */
7
+ readonly id: symbol;
8
+ /** Shared tileset queried by this view. */
9
+ private _tileset;
10
+ /** Tiles selected during the latest traversal. */
11
+ private _selectedTiles;
12
+ /** Incremented whenever this view's visible tile set changes. */
13
+ private _frameNumber;
14
+ /** Last viewport used to compute tile selection. */
15
+ private _viewport;
16
+ /** Last z-range used during tile selection. */
17
+ private _zRange;
18
+ /** Last model matrix applied to tile selection. */
19
+ private _modelMatrix;
20
+ /** Inverse of the current model matrix. */
21
+ private _modelMatrixInverse;
22
+ /** Per-tile visibility and selection flags for this view. */
23
+ private _state;
24
+ /** Creates a viewport-specific view of a shared tileset. */
25
+ constructor(tileset: SharedTileset2D<DataT, Viewport>);
26
+ /** Releases this view and detaches it from the shared tileset. */
27
+ finalize(): void;
28
+ /** Tiles selected for the last viewport update. */
29
+ get selectedTiles(): SharedTile2DHeader<DataT>[] | null;
30
+ /** Indicates whether all selected tiles are fully loaded for this view. */
31
+ get isLoaded(): boolean;
32
+ /** Indicates whether any selected tile needs to be re-requested. */
33
+ get needsReload(): boolean;
34
+ /** Updates tile selection and visibility for a viewport and returns the current frame number. */
35
+ update(viewport: Viewport, { zRange, modelMatrix }?: {
36
+ zRange: [number, number] | null;
37
+ modelMatrix: NumericArray | null;
38
+ }): number;
39
+ /** Tests whether a tile should render in the current viewport and culling rectangle. */
40
+ isTileVisible(tile: SharedTile2DHeader<DataT>, cullRect?: {
41
+ x: number;
42
+ y: number;
43
+ width: number;
44
+ height: number;
45
+ }, modelMatrix?: Matrix4 | null): boolean;
46
+ /** Collects tiles currently marked visible for this view. */
47
+ private _getVisibleTiles;
48
+ /** Memoized screen-space culling bounds helper. */
49
+ private _getCullBounds;
50
+ /** Recomputes selected and placeholder-visible tiles for the current view. */
51
+ private _updateTileStates;
52
+ /** Tests one tile against one culling bounds rectangle. */
53
+ private _tileOverlapsBounds;
54
+ /** Applies model-matrix transforms to non-geospatial tile bounds when needed. */
55
+ private _getTileBoundingBox;
56
+ }
57
+ //# sourceMappingURL=shared-tile-2d-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-tile-2d-view.d.ts","sourceRoot":"","sources":["../../src/shared-tile-2d-layer/shared-tile-2d-view.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAU,KAAK,YAAY,EAAC,MAAM,eAAe,CAAC;AAGjE,OAAO,EAIL,kBAAkB,EAClB,KAAK,eAAe,EACrB,4BAAyB;AAyB1B,0EAA0E;AAC1E,qBAAa,gBAAgB,CAAC,KAAK,GAAG,GAAG;IACvC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,SAA0B;IAErC,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAmC;IACnD,kDAAkD;IAClD,OAAO,CAAC,cAAc,CAA4C;IAClE,iEAAiE;IACjE,OAAO,CAAC,YAAY,CAAK;IACzB,oDAAoD;IACpD,OAAO,CAAC,SAAS,CAAyB;IAC1C,+CAA+C;IAC/C,OAAO,CAAC,OAAO,CAAiC;IAChD,mDAAmD;IACnD,OAAO,CAAC,YAAY,CAAiB;IACrC,2CAA2C;IAC3C,OAAO,CAAC,mBAAmB,CAAiB;IAC5C,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAuD;IAErE,4DAA4D;gBAChD,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC;IAQrD,kEAAkE;IAClE,QAAQ,IAAI,IAAI;IAMhB,mDAAmD;IACnD,IAAI,aAAa,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAEtD;IAED,2EAA2E;IAC3E,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,oEAAoE;IACpE,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,iGAAiG;IACjG,MAAM,CACJ,QAAQ,EAAE,QAAQ,EAClB,EACE,MAAM,EACN,WAAW,EACZ,GAAE;QACD,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;QAChC,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC;KACE,GACpC,MAAM;IA0CT,wFAAwF;IACxF,aAAa,CACX,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAC/B,QAAQ,CAAC,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,EAChE,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI,GAC3B,OAAO;IAiBV,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB;IAUxB,mDAAmD;IACnD,OAAO,CAAC,cAAc,CAA0B;IAEhD,8EAA8E;IAC9E,OAAO,CAAC,iBAAiB;IAkCzB,2DAA2D;IAC3D,OAAO,CAAC,mBAAmB;IAc3B,iFAAiF;IACjF,OAAO,CAAC,mBAAmB;CAW5B"}