@deck.gl/geo-layers 8.10.0-alpha.2 → 8.10.0-alpha.4

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 (47) hide show
  1. package/LICENSE +1 -1
  2. package/dist/dist.dev.js +53 -28
  3. package/dist/es5/tile-layer/tile-layer.js +4 -3
  4. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  5. package/dist/esm/tile-layer/tile-layer.js +4 -3
  6. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  7. package/dist.min.js +54 -54
  8. package/package.json +11 -11
  9. package/src/tile-layer/tile-layer.ts +3 -2
  10. package/typed/tile-layer/tile-layer.d.ts.map +1 -1
  11. package/typed/geo-cell-layer/GeoCellLayer.js +0 -49
  12. package/typed/great-circle-layer/great-circle-layer.js +0 -29
  13. package/typed/h3-layers/h3-cluster-layer.js +0 -33
  14. package/typed/h3-layers/h3-hexagon-layer.js +0 -251
  15. package/typed/imagery-layer/imagery-layer.d.ts +0 -53
  16. package/typed/imagery-layer/imagery-layer.d.ts.map +0 -1
  17. package/typed/index.js +0 -33
  18. package/typed/mesh-layer/mesh-layer-fragment.glsl.js +0 -55
  19. package/typed/mesh-layer/mesh-layer-vertex.glsl.js +0 -80
  20. package/typed/mesh-layer/mesh-layer.js +0 -110
  21. package/typed/mvt-layer/coordinate-transform.js +0 -41
  22. package/typed/mvt-layer/find-index-binary.js +0 -96
  23. package/typed/mvt-layer/mvt-layer.js +0 -297
  24. package/typed/quadkey-layer/quadkey-layer.js +0 -18
  25. package/typed/quadkey-layer/quadkey-utils.js +0 -26
  26. package/typed/s2-layer/s2-geometry.js +0 -123
  27. package/typed/s2-layer/s2-layer.js +0 -37
  28. package/typed/s2-layer/s2-utils.js +0 -88
  29. package/typed/terrain-layer/terrain-layer.js +0 -226
  30. package/typed/tile-3d-layer/tile-3d-layer.js +0 -294
  31. package/typed/tile-layer/tile-2d-header.d.ts +0 -40
  32. package/typed/tile-layer/tile-2d-header.d.ts.map +0 -1
  33. package/typed/tile-layer/tile-2d-header.js +0 -113
  34. package/typed/tile-layer/tile-2d-traversal.d.ts +0 -4
  35. package/typed/tile-layer/tile-2d-traversal.d.ts.map +0 -1
  36. package/typed/tile-layer/tile-2d-traversal.js +0 -181
  37. package/typed/tile-layer/tile-layer.js +0 -192
  38. package/typed/tile-layer/tileset-2d.d.ts +0 -96
  39. package/typed/tile-layer/tileset-2d.d.ts.map +0 -1
  40. package/typed/tile-layer/tileset-2d.js +0 -399
  41. package/typed/tile-layer/types.d.ts +0 -30
  42. package/typed/tile-layer/types.d.ts.map +0 -1
  43. package/typed/tile-layer/types.js +0 -1
  44. package/typed/tile-layer/utils.d.ts +0 -51
  45. package/typed/tile-layer/utils.d.ts.map +0 -1
  46. package/typed/tile-layer/utils.js +0 -197
  47. package/typed/trips-layer/trips-layer.js +0 -92
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2020 Urban Computing Foundation
1
+ Copyright Vis.gl contributors.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
package/dist/dist.dev.js CHANGED
@@ -519,6 +519,7 @@ var __exports__ = (() => {
519
519
  // ../../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js
520
520
  var require_DocTypeReader = __commonJS({
521
521
  "../../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js"(exports, module2) {
522
+ var util = require_util();
522
523
  function readDocType(xmlData, i3) {
523
524
  const entities = {};
524
525
  if (xmlData[i3 + 3] === "O" && xmlData[i3 + 4] === "C" && xmlData[i3 + 5] === "T" && xmlData[i3 + 6] === "Y" && xmlData[i3 + 7] === "P" && xmlData[i3 + 8] === "E") {
@@ -532,7 +533,7 @@ var __exports__ = (() => {
532
533
  i3 += 7;
533
534
  [entityName, val, i3] = readEntityExp(xmlData, i3 + 1);
534
535
  if (val.indexOf("&") === -1)
535
- entities[entityName] = {
536
+ entities[validateEntityName(entityName)] = {
536
537
  regx: RegExp(`&${entityName};`, "g"),
537
538
  val
538
539
  };
@@ -617,6 +618,12 @@ var __exports__ = (() => {
617
618
  return true;
618
619
  return false;
619
620
  }
621
+ function validateEntityName(name10) {
622
+ if (util.isName(name10))
623
+ return name10;
624
+ else
625
+ throw new Error(`Invalid entity name ${name10}`);
626
+ }
620
627
  module2.exports = readDocType;
621
628
  }
622
629
  });
@@ -1026,6 +1033,7 @@ var __exports__ = (() => {
1026
1033
  if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) {
1027
1034
  if (tagName[tagName.length - 1] === "/") {
1028
1035
  tagName = tagName.substr(0, tagName.length - 1);
1036
+ jPath = jPath.substr(0, jPath.length - 1);
1029
1037
  tagExp = tagName;
1030
1038
  } else {
1031
1039
  tagExp = tagExp.substr(0, tagExp.length - 1);
@@ -1606,11 +1614,17 @@ var __exports__ = (() => {
1606
1614
  let val2 = "";
1607
1615
  for (let key in jObj) {
1608
1616
  if (typeof jObj[key] === "undefined") {
1617
+ if (this.isAttribute(key)) {
1618
+ val2 += "";
1619
+ }
1609
1620
  } else if (jObj[key] === null) {
1610
- if (key[0] === "?")
1621
+ if (this.isAttribute(key)) {
1622
+ val2 += "";
1623
+ } else if (key[0] === "?") {
1611
1624
  val2 += this.indentate(level) + "<" + key + "?" + this.tagEndChar;
1612
- else
1625
+ } else {
1613
1626
  val2 += this.indentate(level) + "<" + key + "/" + this.tagEndChar;
1627
+ }
1614
1628
  } else if (jObj[key] instanceof Date) {
1615
1629
  val2 += this.buildTextValNode(jObj[key], key, "", level);
1616
1630
  } else if (typeof jObj[key] !== "object") {
@@ -1697,7 +1711,7 @@ var __exports__ = (() => {
1697
1711
  piClosingChar = "?";
1698
1712
  tagEndExp = "";
1699
1713
  }
1700
- if (attrStr && val2.indexOf("<") === -1) {
1714
+ if ((attrStr || attrStr === "") && val2.indexOf("<") === -1) {
1701
1715
  return this.indentate(level) + "<" + key + attrStr + piClosingChar + ">" + val2 + tagEndExp;
1702
1716
  } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {
1703
1717
  return this.indentate(level) + `<!--${val2}-->` + this.newLine;
@@ -1748,7 +1762,7 @@ var __exports__ = (() => {
1748
1762
  return this.options.indentBy.repeat(level);
1749
1763
  }
1750
1764
  function isAttribute(name10) {
1751
- if (name10.startsWith(this.options.attributeNamePrefix)) {
1765
+ if (name10.startsWith(this.options.attributeNamePrefix) && name10 !== this.options.textNodeName) {
1752
1766
  return name10.substr(this.attrPrefixLen);
1753
1767
  } else {
1754
1768
  return false;
@@ -3151,7 +3165,7 @@ var __exports__ = (() => {
3151
3165
  }
3152
3166
 
3153
3167
  // ../../node_modules/@loaders.gl/xml/dist/esm/xml-loader.js
3154
- var VERSION = true ? "3.4.3" : "latest";
3168
+ var VERSION = true ? "3.4.13" : "latest";
3155
3169
  var XMLLoader = {
3156
3170
  name: "XML",
3157
3171
  id: "xml",
@@ -3267,7 +3281,7 @@ var __exports__ = (() => {
3267
3281
 
3268
3282
  // ../../node_modules/@loaders.gl/worker-utils/dist/esm/lib/library-utils/library-utils.js
3269
3283
  var node = __toESM(require_require_utils());
3270
- var VERSION2 = true ? "3.4.3" : LATEST;
3284
+ var VERSION2 = true ? "3.4.13" : LATEST;
3271
3285
  var loadLibraryPromises = {};
3272
3286
  async function loadLibrary(libraryUrl) {
3273
3287
  let moduleName = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;
@@ -3882,7 +3896,7 @@ var __exports__ = (() => {
3882
3896
  }
3883
3897
 
3884
3898
  // ../../node_modules/@loaders.gl/wms/dist/esm/wms-error-loader.js
3885
- var VERSION3 = true ? "3.4.3" : "latest";
3899
+ var VERSION3 = true ? "3.4.13" : "latest";
3886
3900
  var WMSErrorLoader = {
3887
3901
  id: "wms-error",
3888
3902
  name: "WMS Error",
@@ -4181,7 +4195,7 @@ var __exports__ = (() => {
4181
4195
  }
4182
4196
 
4183
4197
  // ../../node_modules/@loaders.gl/wms/dist/esm/wms-capabilities-loader.js
4184
- var VERSION4 = true ? "3.4.3" : "latest";
4198
+ var VERSION4 = true ? "3.4.13" : "latest";
4185
4199
  var WMSCapabilitiesLoader = {
4186
4200
  id: "wms-capabilities",
4187
4201
  name: "WMS Capabilities",
@@ -4298,7 +4312,7 @@ var __exports__ = (() => {
4298
4312
  };
4299
4313
 
4300
4314
  // ../../node_modules/@loaders.gl/images/dist/esm/lib/utils/version.js
4301
- var VERSION5 = true ? "3.4.3" : "latest";
4315
+ var VERSION5 = true ? "3.4.13" : "latest";
4302
4316
 
4303
4317
  // ../../node_modules/@loaders.gl/images/dist/esm/lib/category-api/image-type.js
4304
4318
  var {
@@ -10174,7 +10188,7 @@ var __exports__ = (() => {
10174
10188
  this.state?.tileset?.finalize();
10175
10189
  }
10176
10190
  get isLoaded() {
10177
- return this.state?.tileset?.selectedTiles.every((tile) => tile.isLoaded && tile.layers && tile.layers.every((layer) => layer.isLoaded));
10191
+ return this.state?.tileset?.selectedTiles?.every((tile) => tile.isLoaded && tile.layers && tile.layers.every((layer) => layer.isLoaded));
10178
10192
  }
10179
10193
  shouldUpdateState({
10180
10194
  changeFlags
@@ -10340,7 +10354,8 @@ var __exports__ = (() => {
10340
10354
  const layers = this.renderSubLayers({
10341
10355
  ...this.props,
10342
10356
  ...this.getSubLayerProps({
10343
- id: tile.id
10357
+ id: tile.id,
10358
+ updateTriggers: this.props.updateTriggers
10344
10359
  }),
10345
10360
  data: tile.content,
10346
10361
  _offset: 0,
@@ -17998,7 +18013,7 @@ void main(void) {
17998
18013
  }
17999
18014
  stack2.push(child);
18000
18015
  }
18001
- } else if (!tile.contentAvailable) {
18016
+ } else if (!tile.contentAvailable && !tile.hasEmptyContent) {
18002
18017
  allDescendantsLoaded = false;
18003
18018
  }
18004
18019
  }
@@ -19219,7 +19234,7 @@ void main(void) {
19219
19234
  };
19220
19235
 
19221
19236
  // ../../node_modules/@loaders.gl/3d-tiles/dist/esm/lib/utils/version.js
19222
- var VERSION8 = true ? "3.4.3" : "latest";
19237
+ var VERSION8 = true ? "3.4.13" : "latest";
19223
19238
 
19224
19239
  // ../../node_modules/@loaders.gl/3d-tiles/dist/esm/lib/constants.js
19225
19240
  var TILE3D_TYPE = {
@@ -19248,7 +19263,7 @@ void main(void) {
19248
19263
  }
19249
19264
 
19250
19265
  // ../../node_modules/@loaders.gl/draco/dist/esm/lib/utils/version.js
19251
- var VERSION9 = true ? "3.4.3" : "latest";
19266
+ var VERSION9 = true ? "3.4.13" : "latest";
19252
19267
 
19253
19268
  // ../../node_modules/@loaders.gl/draco/dist/esm/draco-loader.js
19254
19269
  var DEFAULT_DRACO_OPTIONS = {
@@ -21414,13 +21429,13 @@ void main(void) {
21414
21429
  }
21415
21430
 
21416
21431
  // ../../node_modules/@loaders.gl/gltf/dist/esm/lib/utils/version.js
21417
- var VERSION10 = true ? "3.4.3" : "latest";
21432
+ var VERSION10 = true ? "3.4.13" : "latest";
21418
21433
 
21419
21434
  // ../../node_modules/@loaders.gl/textures/dist/esm/lib/utils/version.js
21420
- var VERSION11 = true ? "3.4.3" : "latest";
21435
+ var VERSION11 = true ? "3.4.13" : "latest";
21421
21436
 
21422
21437
  // ../../node_modules/@loaders.gl/textures/dist/esm/lib/parsers/basis-module-loader.js
21423
- var VERSION12 = true ? "3.4.3" : "latest";
21438
+ var VERSION12 = true ? "3.4.13" : "latest";
21424
21439
  var BASIS_CDN_ENCODER_WASM = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION12, "/dist/libs/basis_encoder.wasm");
21425
21440
  var BASIS_CDN_ENCODER_JS = "https://unpkg.com/@loaders.gl/textures@".concat(VERSION12, "/dist/libs/basis_encoder.js");
21426
21441
  var loadBasisTranscoderPromise;
@@ -27558,7 +27573,7 @@ void main(void) {
27558
27573
  }
27559
27574
 
27560
27575
  // ../../node_modules/@loaders.gl/terrain/dist/esm/lib/utils/version.js
27561
- var VERSION13 = true ? "3.4.3" : "latest";
27576
+ var VERSION13 = true ? "3.4.13" : "latest";
27562
27577
 
27563
27578
  // ../../node_modules/@loaders.gl/terrain/dist/esm/terrain-loader.js
27564
27579
  var TerrainLoader = {
@@ -28373,7 +28388,8 @@ void main(void) {
28373
28388
  ...geometryInfo
28374
28389
  }, {
28375
28390
  numericPropKeys: options && options.numericPropKeys || numericPropKeys,
28376
- PositionDataType: options ? options.PositionDataType : Float32Array
28391
+ PositionDataType: options ? options.PositionDataType : Float32Array,
28392
+ triangulate: options ? options.triangulate : true
28377
28393
  });
28378
28394
  }
28379
28395
  function extractNumericPropTypes(features) {
@@ -28404,7 +28420,8 @@ void main(void) {
28404
28420
  } = geometryInfo;
28405
28421
  const {
28406
28422
  numericPropKeys = [],
28407
- PositionDataType = Float32Array
28423
+ PositionDataType = Float32Array,
28424
+ triangulate = true
28408
28425
  } = options;
28409
28426
  const hasGlobalId = features[0] && "id" in features[0];
28410
28427
  const GlobalFeatureIdsDataType = features.length > 65535 ? Uint32Array : Uint16Array;
@@ -28432,13 +28449,15 @@ void main(void) {
28432
28449
  polygonIndices: polygonPositionsCount > 65535 ? new Uint32Array(polygonObjectsCount + 1) : new Uint16Array(polygonObjectsCount + 1),
28433
28450
  primitivePolygonIndices: polygonPositionsCount > 65535 ? new Uint32Array(polygonRingsCount + 1) : new Uint16Array(polygonRingsCount + 1),
28434
28451
  positions: new PositionDataType(polygonPositionsCount * coordLength),
28435
- triangles: [],
28436
28452
  globalFeatureIds: new GlobalFeatureIdsDataType(polygonPositionsCount),
28437
28453
  featureIds: polygonFeaturesCount > 65535 ? new Uint32Array(polygonPositionsCount) : new Uint16Array(polygonPositionsCount),
28438
28454
  numericProps: {},
28439
28455
  properties: [],
28440
28456
  fields: []
28441
28457
  };
28458
+ if (triangulate) {
28459
+ polygons.triangles = [];
28460
+ }
28442
28461
  for (const object of [points, lines, polygons]) {
28443
28462
  for (const propName of numericPropKeys) {
28444
28463
  const T = propArrayTypes[propName];
@@ -28554,6 +28573,9 @@ void main(void) {
28554
28573
  endPosition,
28555
28574
  coordLength
28556
28575
  } = _ref;
28576
+ if (!polygons.triangles) {
28577
+ return;
28578
+ }
28557
28579
  const start = startPosition * coordLength;
28558
28580
  const end = endPosition * coordLength;
28559
28581
  const polygonPositions = polygons.positions.subarray(start, end);
@@ -28575,7 +28597,7 @@ void main(void) {
28575
28597
  return returnObj;
28576
28598
  }
28577
28599
  function makeAccessorObjects(points, lines, polygons, coordLength) {
28578
- return {
28600
+ const binaryFeatures = {
28579
28601
  points: {
28580
28602
  ...points,
28581
28603
  positions: {
@@ -28626,10 +28648,6 @@ void main(void) {
28626
28648
  value: polygons.primitivePolygonIndices,
28627
28649
  size: 1
28628
28650
  },
28629
- triangles: {
28630
- value: new Uint32Array(polygons.triangles),
28631
- size: 1
28632
- },
28633
28651
  globalFeatureIds: {
28634
28652
  value: polygons.globalFeatureIds,
28635
28653
  size: 1
@@ -28641,6 +28659,13 @@ void main(void) {
28641
28659
  numericProps: wrapProps(polygons.numericProps, 1)
28642
28660
  }
28643
28661
  };
28662
+ if (polygons.triangles) {
28663
+ binaryFeatures.polygons.triangles = {
28664
+ value: new Uint32Array(polygons.triangles),
28665
+ size: 1
28666
+ };
28667
+ }
28668
+ return binaryFeatures;
28644
28669
  }
28645
28670
  function fillNumericProperties(object, properties, index, length5) {
28646
28671
  for (const numericPropName in object.numericProps) {
@@ -29606,7 +29631,7 @@ void main(void) {
29606
29631
  }
29607
29632
 
29608
29633
  // ../../node_modules/@loaders.gl/mvt/dist/esm/mvt-loader.js
29609
- var VERSION14 = true ? "3.4.3" : "latest";
29634
+ var VERSION14 = true ? "3.4.13" : "latest";
29610
29635
  var DEFAULT_MVT_LOADER_OPTIONS = {
29611
29636
  mvt: {
29612
29637
  shape: "geojson",
@@ -121,9 +121,9 @@ var TileLayer = function (_CompositeLayer) {
121
121
  }, {
122
122
  key: "isLoaded",
123
123
  get: function get() {
124
- var _this$state2, _this$state2$tileset;
124
+ var _this$state2, _this$state2$tileset, _this$state2$tileset$;
125
125
 
126
- return (_this$state2 = this.state) === null || _this$state2 === void 0 ? void 0 : (_this$state2$tileset = _this$state2.tileset) === null || _this$state2$tileset === void 0 ? void 0 : _this$state2$tileset.selectedTiles.every(function (tile) {
126
+ return (_this$state2 = this.state) === null || _this$state2 === void 0 ? void 0 : (_this$state2$tileset = _this$state2.tileset) === null || _this$state2$tileset === void 0 ? void 0 : (_this$state2$tileset$ = _this$state2$tileset.selectedTiles) === null || _this$state2$tileset$ === void 0 ? void 0 : _this$state2$tileset$.every(function (tile) {
127
127
  return tile.isLoaded && tile.layers && tile.layers.every(function (layer) {
128
128
  return layer.isLoaded;
129
129
  });
@@ -326,7 +326,8 @@ var TileLayer = function (_CompositeLayer) {
326
326
 
327
327
  if (!tile.isLoaded && !tile.content) {} else if (!tile.layers) {
328
328
  var layers = _this.renderSubLayers(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.getSubLayerProps({
329
- id: tile.id
329
+ id: tile.id,
330
+ updateTriggers: _this.props.updateTriggers
330
331
  })), {}, {
331
332
  data: tile.content,
332
333
  _offset: 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-layer/tile-layer.ts"],"names":["defaultProps","TilesetClass","Tileset2D","data","type","value","dataComparator","urlType","equal","renderSubLayers","props","GeoJsonLayer","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","compare","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","STRATEGY_DEFAULT","zRange","maxRequests","zoomOffset","TileLayer","state","tileset","isLoaded","finalize","selectedTiles","every","layers","layer","changeFlags","somethingChanged","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","setNeedsUpdate","fetch","signal","url","Array","isArray","propName","info","sourceLayer","sourceTile","picked","updateAutoHighlight","map","subLayerProps","getSubLayerPropsByTile","content","getSubLayerProps","id","_offset","Boolean","clone","Object","keys","some","cullRect","isTileVisible","CompositeLayer"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n UpdateParameters,\n PickingInfo,\n GetPickingInfoParams,\n DefaultProps,\n FilterContext,\n _flatten as flatten\n} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {LayersList} from '@deck.gl/core';\n\nimport type {TileLoadProps, ZRange} from '../tileset-2d';\nimport {\n Tileset2D,\n Tile2DHeader,\n RefinementStrategy,\n STRATEGY_DEFAULT,\n Tileset2DProps\n} from '../tileset-2d';\nimport {urlType, URLTemplate, getURLFromTemplate} from '../tileset-2d';\n\nconst defaultProps: DefaultProps<TileLayerProps> = {\n TilesetClass: Tileset2D,\n data: {type: 'data', value: []},\n dataComparator: urlType.equal,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props)},\n getTileData: {type: 'function', optional: true, value: null},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null},\n onTileLoad: {type: 'function', value: tile => {}},\n onTileUnload: {type: 'function', value: tile => {}},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err)},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\n/** All props supported by the TileLayer */\nexport type TileLayerProps<DataT = any> = CompositeLayerProps & _TileLayerProps<DataT>;\n\n/** Props added by the TileLayer */\ntype _TileLayerProps<DataT> = {\n data: URLTemplate;\n /**\n * Optionally implement a custom indexing scheme.\n */\n TilesetClass?: typeof Tileset2D;\n /**\n * Renders one or an array of Layer instances.\n */\n renderSubLayers?: (\n props: TileLayerProps<DataT> & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ) => Layer | null | LayersList;\n /**\n * If supplied, `getTileData` is called to retrieve the data of each tile.\n */\n getTileData?: ((props: TileLoadProps) => Promise<DataT> | DataT) | null;\n\n /** Called when all tiles in the current viewport are loaded. */\n onViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile?) => void;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n\n /** The max zoom level of the layer's data.\n * @default null\n */\n maxZoom?: number | null;\n\n /** The min zoom level of the layer's data.\n * @default 0\n */\n minZoom?: number | null;\n\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n\n /**\n * The maximum memory used for caching tiles.\n *\n * @default null\n */\n maxCacheByteSize?: number | null;\n\n /**\n * How the tile layer refines the visibility of tiles.\n *\n * @default 'best-available'\n */\n refinementStrategy?: RefinementStrategy;\n\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n\n /**\n * The maximum number of concurrent getTileData calls.\n *\n * @default 6\n */\n maxRequests?: number;\n\n /**\n * This offset changes the zoom level at which the tiles are fetched.\n *\n * Needs to be an integer.\n *\n * @default 0\n */\n zoomOffset?: number;\n};\n\nexport type TiledPickingInfo<DataT = any> = PickingInfo & {\n tile?: Tile2DHeader<DataT>;\n};\n\n/**\n * The TileLayer is a composite layer that makes it possible to visualize very large datasets.\n *\n * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.\n */\nexport default class TileLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TileLayerProps<DataT>>\n> {\n static defaultProps: DefaultProps = defaultProps;\n static layerName = 'TileLayer';\n\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state?.tileset?.finalize();\n }\n\n get isLoaded(): boolean {\n return this.state?.tileset?.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({changeFlags}: UpdateParameters<this>) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new this.props.TilesetClass(this._getTilesetOptions());\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions());\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = this.props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n private _updateTileset(): void {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad(): void {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile: Tile2DHeader<DataT>): void {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileError(error: any, tile: Tile2DHeader<DataT>) {\n this.props.onTileError(error);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tile: Tile2DHeader<DataT>) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile: TileLoadProps): Promise<DataT> | DataT | null {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (fetch && tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ): Layer | null | LayersList {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader): Partial<LayerProps> | null {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams): TiledPickingInfo<DataT> {\n const sourceTile = (sourceLayer as any).props.tile;\n if (info.picked) {\n (info as any).tile = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n return info;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile as Tile2DHeader;\n if (sourceTile && sourceTile.layers) {\n for (const layer of sourceTile.layers) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n return this.state.tileset.tiles.map((tile: Tile2DHeader) => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n ...this.getSubLayerProps({\n id: tile.id\n }),\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = (flatten(layers, Boolean) as Layer<{tile?: Tile2DHeader}>[]).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers![0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer, cullRect}: FilterContext) {\n const {tile} = (layer as Layer<{tile: Tile2DHeader}>).props;\n return this.state.tileset.isTileVisible(tile, cullRect);\n }\n}\n"],"file":"tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/tile-layer/tile-layer.ts"],"names":["defaultProps","TilesetClass","Tileset2D","data","type","value","dataComparator","urlType","equal","renderSubLayers","props","GeoJsonLayer","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","compare","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","STRATEGY_DEFAULT","zRange","maxRequests","zoomOffset","TileLayer","state","tileset","isLoaded","finalize","selectedTiles","every","layers","layer","changeFlags","somethingChanged","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","setNeedsUpdate","fetch","signal","url","Array","isArray","propName","info","sourceLayer","sourceTile","picked","updateAutoHighlight","map","subLayerProps","getSubLayerPropsByTile","content","getSubLayerProps","id","updateTriggers","_offset","Boolean","clone","Object","keys","some","cullRect","isTileVisible","CompositeLayer"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n UpdateParameters,\n PickingInfo,\n GetPickingInfoParams,\n DefaultProps,\n FilterContext,\n _flatten as flatten\n} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {LayersList} from '@deck.gl/core';\n\nimport type {TileLoadProps, ZRange} from '../tileset-2d';\nimport {\n Tileset2D,\n Tile2DHeader,\n RefinementStrategy,\n STRATEGY_DEFAULT,\n Tileset2DProps\n} from '../tileset-2d';\nimport {urlType, URLTemplate, getURLFromTemplate} from '../tileset-2d';\n\nconst defaultProps: DefaultProps<TileLayerProps> = {\n TilesetClass: Tileset2D,\n data: {type: 'data', value: []},\n dataComparator: urlType.equal,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props)},\n getTileData: {type: 'function', optional: true, value: null},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null},\n onTileLoad: {type: 'function', value: tile => {}},\n onTileUnload: {type: 'function', value: tile => {}},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err)},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\n/** All props supported by the TileLayer */\nexport type TileLayerProps<DataT = any> = CompositeLayerProps & _TileLayerProps<DataT>;\n\n/** Props added by the TileLayer */\ntype _TileLayerProps<DataT> = {\n data: URLTemplate;\n /**\n * Optionally implement a custom indexing scheme.\n */\n TilesetClass?: typeof Tileset2D;\n /**\n * Renders one or an array of Layer instances.\n */\n renderSubLayers?: (\n props: TileLayerProps<DataT> & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ) => Layer | null | LayersList;\n /**\n * If supplied, `getTileData` is called to retrieve the data of each tile.\n */\n getTileData?: ((props: TileLoadProps) => Promise<DataT> | DataT) | null;\n\n /** Called when all tiles in the current viewport are loaded. */\n onViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile?) => void;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n\n /** The max zoom level of the layer's data.\n * @default null\n */\n maxZoom?: number | null;\n\n /** The min zoom level of the layer's data.\n * @default 0\n */\n minZoom?: number | null;\n\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n\n /**\n * The maximum memory used for caching tiles.\n *\n * @default null\n */\n maxCacheByteSize?: number | null;\n\n /**\n * How the tile layer refines the visibility of tiles.\n *\n * @default 'best-available'\n */\n refinementStrategy?: RefinementStrategy;\n\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n\n /**\n * The maximum number of concurrent getTileData calls.\n *\n * @default 6\n */\n maxRequests?: number;\n\n /**\n * This offset changes the zoom level at which the tiles are fetched.\n *\n * Needs to be an integer.\n *\n * @default 0\n */\n zoomOffset?: number;\n};\n\nexport type TiledPickingInfo<DataT = any> = PickingInfo & {\n tile?: Tile2DHeader<DataT>;\n};\n\n/**\n * The TileLayer is a composite layer that makes it possible to visualize very large datasets.\n *\n * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.\n */\nexport default class TileLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TileLayerProps<DataT>>\n> {\n static defaultProps: DefaultProps = defaultProps;\n static layerName = 'TileLayer';\n\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state?.tileset?.finalize();\n }\n\n get isLoaded(): boolean {\n return this.state?.tileset?.selectedTiles?.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({changeFlags}: UpdateParameters<this>) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new this.props.TilesetClass(this._getTilesetOptions());\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions());\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = this.props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n private _updateTileset(): void {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad(): void {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile: Tile2DHeader<DataT>): void {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileError(error: any, tile: Tile2DHeader<DataT>) {\n this.props.onTileError(error);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tile: Tile2DHeader<DataT>) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile: TileLoadProps): Promise<DataT> | DataT | null {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (fetch && tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ): Layer | null | LayersList {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader): Partial<LayerProps> | null {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams): TiledPickingInfo<DataT> {\n const sourceTile = (sourceLayer as any).props.tile;\n if (info.picked) {\n (info as any).tile = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n return info;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile as Tile2DHeader;\n if (sourceTile && sourceTile.layers) {\n for (const layer of sourceTile.layers) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n return this.state.tileset.tiles.map((tile: Tile2DHeader) => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n ...this.getSubLayerProps({\n id: tile.id,\n updateTriggers: this.props.updateTriggers\n }),\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = (flatten(layers, Boolean) as Layer<{tile?: Tile2DHeader}>[]).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers![0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer, cullRect}: FilterContext) {\n const {tile} = (layer as Layer<{tile: Tile2DHeader}>).props;\n return this.state.tileset.isTileVisible(tile, cullRect);\n }\n}\n"],"file":"tile-layer.js"}
@@ -67,9 +67,9 @@ export default class TileLayer extends CompositeLayer {
67
67
  }
68
68
 
69
69
  get isLoaded() {
70
- var _this$state2, _this$state2$tileset;
70
+ var _this$state2, _this$state2$tileset, _this$state2$tileset$;
71
71
 
72
- return (_this$state2 = this.state) === null || _this$state2 === void 0 ? void 0 : (_this$state2$tileset = _this$state2.tileset) === null || _this$state2$tileset === void 0 ? void 0 : _this$state2$tileset.selectedTiles.every(tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded));
72
+ return (_this$state2 = this.state) === null || _this$state2 === void 0 ? void 0 : (_this$state2$tileset = _this$state2.tileset) === null || _this$state2$tileset === void 0 ? void 0 : (_this$state2$tileset$ = _this$state2$tileset.selectedTiles) === null || _this$state2$tileset$ === void 0 ? void 0 : _this$state2$tileset$.every(tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded));
73
73
  }
74
74
 
75
75
  shouldUpdateState({
@@ -261,7 +261,8 @@ export default class TileLayer extends CompositeLayer {
261
261
  if (!tile.isLoaded && !tile.content) {} else if (!tile.layers) {
262
262
  const layers = this.renderSubLayers({ ...this.props,
263
263
  ...this.getSubLayerProps({
264
- id: tile.id
264
+ id: tile.id,
265
+ updateTriggers: this.props.updateTriggers
265
266
  }),
266
267
  data: tile.content,
267
268
  _offset: 0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-layer/tile-layer.ts"],"names":["CompositeLayer","_flatten","flatten","GeoJsonLayer","Tileset2D","STRATEGY_DEFAULT","urlType","getURLFromTemplate","defaultProps","TilesetClass","data","type","value","dataComparator","equal","renderSubLayers","props","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","compare","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","zRange","maxRequests","zoomOffset","TileLayer","initializeState","state","tileset","isLoaded","finalizeState","finalize","selectedTiles","every","layers","layer","shouldUpdateState","changeFlags","somethingChanged","updateState","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","setNeedsUpdate","fetch","signal","url","Array","isArray","propName","getSubLayerPropsByTile","getPickingInfo","info","sourceLayer","sourceTile","picked","_updateAutoHighlight","updateAutoHighlight","renderLayers","map","subLayerProps","content","getSubLayerProps","id","_offset","Boolean","clone","Object","keys","some","filterSubLayer","cullRect","isTileVisible"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n UpdateParameters,\n PickingInfo,\n GetPickingInfoParams,\n DefaultProps,\n FilterContext,\n _flatten as flatten\n} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {LayersList} from '@deck.gl/core';\n\nimport type {TileLoadProps, ZRange} from '../tileset-2d';\nimport {\n Tileset2D,\n Tile2DHeader,\n RefinementStrategy,\n STRATEGY_DEFAULT,\n Tileset2DProps\n} from '../tileset-2d';\nimport {urlType, URLTemplate, getURLFromTemplate} from '../tileset-2d';\n\nconst defaultProps: DefaultProps<TileLayerProps> = {\n TilesetClass: Tileset2D,\n data: {type: 'data', value: []},\n dataComparator: urlType.equal,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props)},\n getTileData: {type: 'function', optional: true, value: null},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null},\n onTileLoad: {type: 'function', value: tile => {}},\n onTileUnload: {type: 'function', value: tile => {}},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err)},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\n/** All props supported by the TileLayer */\nexport type TileLayerProps<DataT = any> = CompositeLayerProps & _TileLayerProps<DataT>;\n\n/** Props added by the TileLayer */\ntype _TileLayerProps<DataT> = {\n data: URLTemplate;\n /**\n * Optionally implement a custom indexing scheme.\n */\n TilesetClass?: typeof Tileset2D;\n /**\n * Renders one or an array of Layer instances.\n */\n renderSubLayers?: (\n props: TileLayerProps<DataT> & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ) => Layer | null | LayersList;\n /**\n * If supplied, `getTileData` is called to retrieve the data of each tile.\n */\n getTileData?: ((props: TileLoadProps) => Promise<DataT> | DataT) | null;\n\n /** Called when all tiles in the current viewport are loaded. */\n onViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile?) => void;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n\n /** The max zoom level of the layer's data.\n * @default null\n */\n maxZoom?: number | null;\n\n /** The min zoom level of the layer's data.\n * @default 0\n */\n minZoom?: number | null;\n\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n\n /**\n * The maximum memory used for caching tiles.\n *\n * @default null\n */\n maxCacheByteSize?: number | null;\n\n /**\n * How the tile layer refines the visibility of tiles.\n *\n * @default 'best-available'\n */\n refinementStrategy?: RefinementStrategy;\n\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n\n /**\n * The maximum number of concurrent getTileData calls.\n *\n * @default 6\n */\n maxRequests?: number;\n\n /**\n * This offset changes the zoom level at which the tiles are fetched.\n *\n * Needs to be an integer.\n *\n * @default 0\n */\n zoomOffset?: number;\n};\n\nexport type TiledPickingInfo<DataT = any> = PickingInfo & {\n tile?: Tile2DHeader<DataT>;\n};\n\n/**\n * The TileLayer is a composite layer that makes it possible to visualize very large datasets.\n *\n * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.\n */\nexport default class TileLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TileLayerProps<DataT>>\n> {\n static defaultProps: DefaultProps = defaultProps;\n static layerName = 'TileLayer';\n\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state?.tileset?.finalize();\n }\n\n get isLoaded(): boolean {\n return this.state?.tileset?.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({changeFlags}: UpdateParameters<this>) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new this.props.TilesetClass(this._getTilesetOptions());\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions());\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = this.props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n private _updateTileset(): void {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad(): void {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile: Tile2DHeader<DataT>): void {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileError(error: any, tile: Tile2DHeader<DataT>) {\n this.props.onTileError(error);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tile: Tile2DHeader<DataT>) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile: TileLoadProps): Promise<DataT> | DataT | null {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (fetch && tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ): Layer | null | LayersList {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader): Partial<LayerProps> | null {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams): TiledPickingInfo<DataT> {\n const sourceTile = (sourceLayer as any).props.tile;\n if (info.picked) {\n (info as any).tile = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n return info;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile as Tile2DHeader;\n if (sourceTile && sourceTile.layers) {\n for (const layer of sourceTile.layers) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n return this.state.tileset.tiles.map((tile: Tile2DHeader) => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n ...this.getSubLayerProps({\n id: tile.id\n }),\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = (flatten(layers, Boolean) as Layer<{tile?: Tile2DHeader}>[]).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers![0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer, cullRect}: FilterContext) {\n const {tile} = (layer as Layer<{tile: Tile2DHeader}>).props;\n return this.state.tileset.isTileVisible(tile, cullRect);\n }\n}\n"],"file":"tile-layer.js"}
1
+ {"version":3,"sources":["../../../src/tile-layer/tile-layer.ts"],"names":["CompositeLayer","_flatten","flatten","GeoJsonLayer","Tileset2D","STRATEGY_DEFAULT","urlType","getURLFromTemplate","defaultProps","TilesetClass","data","type","value","dataComparator","equal","renderSubLayers","props","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","compare","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","zRange","maxRequests","zoomOffset","TileLayer","initializeState","state","tileset","isLoaded","finalizeState","finalize","selectedTiles","every","layers","layer","shouldUpdateState","changeFlags","somethingChanged","updateState","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","modelMatrix","frameNumber","update","context","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","setNeedsUpdate","fetch","signal","url","Array","isArray","propName","getSubLayerPropsByTile","getPickingInfo","info","sourceLayer","sourceTile","picked","_updateAutoHighlight","updateAutoHighlight","renderLayers","map","subLayerProps","content","getSubLayerProps","id","updateTriggers","_offset","Boolean","clone","Object","keys","some","filterSubLayer","cullRect","isTileVisible"],"mappings":"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","sourcesContent":["import {\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n UpdateParameters,\n PickingInfo,\n GetPickingInfoParams,\n DefaultProps,\n FilterContext,\n _flatten as flatten\n} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {LayersList} from '@deck.gl/core';\n\nimport type {TileLoadProps, ZRange} from '../tileset-2d';\nimport {\n Tileset2D,\n Tile2DHeader,\n RefinementStrategy,\n STRATEGY_DEFAULT,\n Tileset2DProps\n} from '../tileset-2d';\nimport {urlType, URLTemplate, getURLFromTemplate} from '../tileset-2d';\n\nconst defaultProps: DefaultProps<TileLayerProps> = {\n TilesetClass: Tileset2D,\n data: {type: 'data', value: []},\n dataComparator: urlType.equal,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props)},\n getTileData: {type: 'function', optional: true, value: null},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null},\n onTileLoad: {type: 'function', value: tile => {}},\n onTileUnload: {type: 'function', value: tile => {}},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err)},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\n/** All props supported by the TileLayer */\nexport type TileLayerProps<DataT = any> = CompositeLayerProps & _TileLayerProps<DataT>;\n\n/** Props added by the TileLayer */\ntype _TileLayerProps<DataT> = {\n data: URLTemplate;\n /**\n * Optionally implement a custom indexing scheme.\n */\n TilesetClass?: typeof Tileset2D;\n /**\n * Renders one or an array of Layer instances.\n */\n renderSubLayers?: (\n props: TileLayerProps<DataT> & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ) => Layer | null | LayersList;\n /**\n * If supplied, `getTileData` is called to retrieve the data of each tile.\n */\n getTileData?: ((props: TileLoadProps) => Promise<DataT> | DataT) | null;\n\n /** Called when all tiles in the current viewport are loaded. */\n onViewportLoad?: ((tiles: Tile2DHeader<DataT>[]) => void) | null;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader<DataT>) => void;\n\n /** Called when a tile failed to load. */\n onTileError?: (err: any, tile?) => void;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n\n /** The max zoom level of the layer's data.\n * @default null\n */\n maxZoom?: number | null;\n\n /** The min zoom level of the layer's data.\n * @default 0\n */\n minZoom?: number | null;\n\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n\n /**\n * The maximum memory used for caching tiles.\n *\n * @default null\n */\n maxCacheByteSize?: number | null;\n\n /**\n * How the tile layer refines the visibility of tiles.\n *\n * @default 'best-available'\n */\n refinementStrategy?: RefinementStrategy;\n\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n\n /**\n * The maximum number of concurrent getTileData calls.\n *\n * @default 6\n */\n maxRequests?: number;\n\n /**\n * This offset changes the zoom level at which the tiles are fetched.\n *\n * Needs to be an integer.\n *\n * @default 0\n */\n zoomOffset?: number;\n};\n\nexport type TiledPickingInfo<DataT = any> = PickingInfo & {\n tile?: Tile2DHeader<DataT>;\n};\n\n/**\n * The TileLayer is a composite layer that makes it possible to visualize very large datasets.\n *\n * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.\n */\nexport default class TileLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TileLayerProps<DataT>>\n> {\n static defaultProps: DefaultProps = defaultProps;\n static layerName = 'TileLayer';\n\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state?.tileset?.finalize();\n }\n\n get isLoaded(): boolean {\n return this.state?.tileset?.selectedTiles?.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({changeFlags}: UpdateParameters<this>) {\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new this.props.TilesetClass(this._getTilesetOptions());\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions());\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = this.props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n private _updateTileset(): void {\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad(): void {\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile: Tile2DHeader<DataT>): void {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileError(error: any, tile: Tile2DHeader<DataT>) {\n this.props.onTileError(error);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tile: Tile2DHeader<DataT>) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile: TileLoadProps): Promise<DataT> | DataT | null {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (fetch && tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: DataT;\n _offset: number;\n tile: Tile2DHeader<DataT>;\n }\n ): Layer | null | LayersList {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader): Partial<LayerProps> | null {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams): TiledPickingInfo<DataT> {\n const sourceTile = (sourceLayer as any).props.tile;\n if (info.picked) {\n (info as any).tile = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n return info;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile as Tile2DHeader;\n if (sourceTile && sourceTile.layers) {\n for (const layer of sourceTile.layers) {\n layer.updateAutoHighlight(info);\n }\n }\n }\n\n renderLayers(): Layer | null | LayersList {\n return this.state.tileset.tiles.map((tile: Tile2DHeader) => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n ...this.getSubLayerProps({\n id: tile.id,\n updateTriggers: this.props.updateTriggers\n }),\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = (flatten(layers, Boolean) as Layer<{tile?: Tile2DHeader}>[]).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers![0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer, cullRect}: FilterContext) {\n const {tile} = (layer as Layer<{tile: Tile2DHeader}>).props;\n return this.state.tileset.isTileVisible(tile, cullRect);\n }\n}\n"],"file":"tile-layer.js"}