@deck.gl/geo-layers 8.9.21 → 8.9.23

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 (77) hide show
  1. package/LICENSE +1 -1
  2. package/dist/dist.dev.js +23 -8
  3. package/dist/es5/geo-cell-layer/GeoCellLayer.js +12 -3
  4. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
  5. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  6. package/dist/es5/quadkey-layer/quadkey-layer.js +6 -1
  7. package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
  8. package/dist/es5/quadkey-layer/quadkey-utils.js +5 -3
  9. package/dist/es5/quadkey-layer/quadkey-utils.js.map +1 -1
  10. package/dist/es5/tile-3d-layer/tile-3d-layer.js +14 -9
  11. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
  12. package/dist/es5/tile-layer/tile-layer.js +2 -1
  13. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  14. package/dist/esm/geo-cell-layer/GeoCellLayer.js +6 -2
  15. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
  16. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  17. package/dist/esm/quadkey-layer/quadkey-layer.js +6 -1
  18. package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
  19. package/dist/esm/quadkey-layer/quadkey-utils.js +4 -4
  20. package/dist/esm/quadkey-layer/quadkey-utils.js.map +1 -1
  21. package/dist/esm/tile-3d-layer/tile-3d-layer.js +6 -1
  22. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
  23. package/dist/esm/tile-layer/tile-layer.js +2 -1
  24. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  25. package/dist.min.js +55 -55
  26. package/package.json +2 -2
  27. package/src/geo-cell-layer/GeoCellLayer.ts +3 -1
  28. package/src/mvt-layer/mvt-layer.ts +1 -1
  29. package/src/quadkey-layer/quadkey-layer.ts +5 -2
  30. package/src/quadkey-layer/quadkey-utils.ts +4 -4
  31. package/src/tile-3d-layer/tile-3d-layer.ts +5 -1
  32. package/src/tile-layer/tile-layer.ts +2 -1
  33. package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
  34. package/typed/mvt-layer/mvt-layer.d.ts +1 -1
  35. package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
  36. package/typed/quadkey-layer/quadkey-layer.d.ts.map +1 -1
  37. package/typed/quadkey-layer/quadkey-utils.d.ts +2 -2
  38. package/typed/quadkey-layer/quadkey-utils.d.ts.map +1 -1
  39. package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +1 -1
  40. package/typed/tile-layer/tile-layer.d.ts.map +1 -1
  41. package/typed/geo-cell-layer/GeoCellLayer.js +0 -49
  42. package/typed/great-circle-layer/great-circle-layer.js +0 -29
  43. package/typed/h3-layers/h3-cluster-layer.js +0 -33
  44. package/typed/h3-layers/h3-hexagon-layer.js +0 -251
  45. package/typed/imagery-layer/imagery-layer.d.ts +0 -53
  46. package/typed/imagery-layer/imagery-layer.d.ts.map +0 -1
  47. package/typed/index.js +0 -33
  48. package/typed/mesh-layer/mesh-layer-fragment.glsl.js +0 -55
  49. package/typed/mesh-layer/mesh-layer-vertex.glsl.js +0 -80
  50. package/typed/mesh-layer/mesh-layer.js +0 -110
  51. package/typed/mvt-layer/coordinate-transform.js +0 -41
  52. package/typed/mvt-layer/find-index-binary.js +0 -96
  53. package/typed/mvt-layer/mvt-layer.js +0 -297
  54. package/typed/quadkey-layer/quadkey-layer.js +0 -18
  55. package/typed/quadkey-layer/quadkey-utils.js +0 -26
  56. package/typed/s2-layer/s2-geometry.js +0 -123
  57. package/typed/s2-layer/s2-layer.js +0 -37
  58. package/typed/s2-layer/s2-utils.js +0 -88
  59. package/typed/terrain-layer/terrain-layer.js +0 -226
  60. package/typed/tile-3d-layer/tile-3d-layer.js +0 -294
  61. package/typed/tile-layer/tile-2d-header.d.ts +0 -40
  62. package/typed/tile-layer/tile-2d-header.d.ts.map +0 -1
  63. package/typed/tile-layer/tile-2d-header.js +0 -113
  64. package/typed/tile-layer/tile-2d-traversal.d.ts +0 -4
  65. package/typed/tile-layer/tile-2d-traversal.d.ts.map +0 -1
  66. package/typed/tile-layer/tile-2d-traversal.js +0 -181
  67. package/typed/tile-layer/tile-layer.js +0 -192
  68. package/typed/tile-layer/tileset-2d.d.ts +0 -96
  69. package/typed/tile-layer/tileset-2d.d.ts.map +0 -1
  70. package/typed/tile-layer/tileset-2d.js +0 -399
  71. package/typed/tile-layer/types.d.ts +0 -30
  72. package/typed/tile-layer/types.d.ts.map +0 -1
  73. package/typed/tile-layer/types.js +0 -1
  74. package/typed/tile-layer/utils.d.ts +0 -51
  75. package/typed/tile-layer/utils.d.ts.map +0 -1
  76. package/typed/tile-layer/utils.js +0 -197
  77. 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
@@ -6264,6 +6264,10 @@ var __exports__ = (() => {
6264
6264
  transitions
6265
6265
  } = this.props;
6266
6266
  const CellLayer = this.getSubLayerClass("cell", import_layers4.PolygonLayer);
6267
+ const {
6268
+ updateTriggers: boundsUpdateTriggers,
6269
+ ...boundsProps
6270
+ } = this.indexToBounds() || {};
6267
6271
  return new CellLayer({
6268
6272
  filled,
6269
6273
  wireframe,
@@ -6286,12 +6290,13 @@ var __exports__ = (() => {
6286
6290
  }, this.getSubLayerProps({
6287
6291
  id: "cell",
6288
6292
  updateTriggers: updateTriggers && {
6293
+ ...boundsUpdateTriggers,
6289
6294
  getElevation: updateTriggers.getElevation,
6290
6295
  getFillColor: updateTriggers.getFillColor,
6291
6296
  getLineColor: updateTriggers.getLineColor,
6292
6297
  getLineWidth: updateTriggers.getLineWidth
6293
6298
  }
6294
- }), this.indexToBounds());
6299
+ }), boundsProps);
6295
6300
  }
6296
6301
  };
6297
6302
  __publicField(GeoCellLayer, "layerName", "GeoCellLayer");
@@ -6487,7 +6492,7 @@ var __exports__ = (() => {
6487
6492
 
6488
6493
  // src/quadkey-layer/quadkey-utils.ts
6489
6494
  var TILE_SIZE2 = 512;
6490
- function quadkeyToWorldBounds(quadkey) {
6495
+ function quadkeyToWorldBounds(quadkey, coverage) {
6491
6496
  let x2 = 0;
6492
6497
  let y2 = 0;
6493
6498
  let mask = 1 << quadkey.length;
@@ -6500,10 +6505,10 @@ var __exports__ = (() => {
6500
6505
  if (q > 1)
6501
6506
  y2 |= mask;
6502
6507
  }
6503
- return [[x2 / scale5, TILE_SIZE2 - y2 / scale5], [(x2 + 0.99) / scale5, TILE_SIZE2 - (y2 + 0.99) / scale5]];
6508
+ return [[x2 / scale5, TILE_SIZE2 - y2 / scale5], [(x2 + coverage) / scale5, TILE_SIZE2 - (y2 + coverage) / scale5]];
6504
6509
  }
6505
- function getQuadkeyPolygon(quadkey) {
6506
- const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey);
6510
+ function getQuadkeyPolygon(quadkey, coverage = 1) {
6511
+ const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey, coverage);
6507
6512
  const [w, n2] = worldToLngLat(topLeft);
6508
6513
  const [e, s2] = worldToLngLat(bottomRight);
6509
6514
  return [e, n2, e, s2, w, s2, w, n2, e, n2];
@@ -6520,13 +6525,18 @@ var __exports__ = (() => {
6520
6525
  indexToBounds() {
6521
6526
  const {
6522
6527
  data,
6528
+ extruded,
6523
6529
  getQuadkey
6524
6530
  } = this.props;
6531
+ const coverage = extruded ? 0.99 : 1;
6525
6532
  return {
6526
6533
  data,
6527
6534
  _normalize: false,
6528
6535
  positionFormat: "XY",
6529
- getPolygon: (x2, objectInfo) => getQuadkeyPolygon(getQuadkey(x2, objectInfo))
6536
+ getPolygon: (x2, objectInfo) => getQuadkeyPolygon(getQuadkey(x2, objectInfo), coverage),
6537
+ updateTriggers: {
6538
+ getPolygon: coverage
6539
+ }
6530
6540
  };
6531
6541
  }
6532
6542
  };
@@ -10330,7 +10340,8 @@ var __exports__ = (() => {
10330
10340
  const layers = this.renderSubLayers({
10331
10341
  ...this.props,
10332
10342
  ...this.getSubLayerProps({
10333
- id: tile.id
10343
+ id: tile.id,
10344
+ updateTriggers: this.props.updateTriggers
10334
10345
  }),
10335
10346
  data: tile.content,
10336
10347
  _offset: 0,
@@ -26234,8 +26245,12 @@ void main(void) {
26234
26245
  ...loadOptions
26235
26246
  }
26236
26247
  };
26248
+ let actualTilesetUrl = tilesetUrl;
26237
26249
  if (loader.preload) {
26238
26250
  const preloadOptions = await loader.preload(tilesetUrl, loadOptions);
26251
+ if (preloadOptions.url) {
26252
+ actualTilesetUrl = preloadOptions.url;
26253
+ }
26239
26254
  if (preloadOptions.headers) {
26240
26255
  options.loadOptions.fetch = {
26241
26256
  ...options.loadOptions.fetch,
@@ -26244,7 +26259,7 @@ void main(void) {
26244
26259
  }
26245
26260
  Object.assign(options, preloadOptions);
26246
26261
  }
26247
- const tilesetJson = await (0, import_core45.load)(tilesetUrl, loader, options.loadOptions);
26262
+ const tilesetJson = await (0, import_core45.load)(actualTilesetUrl, loader, options.loadOptions);
26248
26263
  const tileset3d = new Tileset3D(tilesetJson, {
26249
26264
  onTileLoad: this._onTileLoad.bind(this),
26250
26265
  onTileUnload: this._onTileUnload.bind(this),
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+
10
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
13
 
12
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -23,6 +25,8 @@ var _core = require("@deck.gl/core");
23
25
 
24
26
  var _layers = require("@deck.gl/layers");
25
27
 
28
+ var _excluded = ["updateTriggers"];
29
+
26
30
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
27
31
 
28
32
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -73,6 +77,11 @@ var GeoCellLayer = function (_CompositeLayer) {
73
77
  material = _this$props2.material,
74
78
  transitions = _this$props2.transitions;
75
79
  var CellLayer = this.getSubLayerClass('cell', _layers.PolygonLayer);
80
+
81
+ var _ref = this.indexToBounds() || {},
82
+ boundsUpdateTriggers = _ref.updateTriggers,
83
+ boundsProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
84
+
76
85
  return new CellLayer({
77
86
  filled: filled,
78
87
  wireframe: wireframe,
@@ -94,13 +103,13 @@ var GeoCellLayer = function (_CompositeLayer) {
94
103
  getLineWidth: getLineWidth
95
104
  }, this.getSubLayerProps({
96
105
  id: 'cell',
97
- updateTriggers: updateTriggers && {
106
+ updateTriggers: updateTriggers && _objectSpread(_objectSpread({}, boundsUpdateTriggers), {}, {
98
107
  getElevation: updateTriggers.getElevation,
99
108
  getFillColor: updateTriggers.getFillColor,
100
109
  getLineColor: updateTriggers.getLineColor,
101
110
  getLineWidth: updateTriggers.getLineWidth
102
- }
103
- }), this.indexToBounds());
111
+ })
112
+ }), boundsProps);
104
113
  }
105
114
  }]);
106
115
  return GeoCellLayer;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/geo-cell-layer/GeoCellLayer.ts"],"names":["defaultProps","PolygonLayer","GeoCellLayer","props","elevationScale","extruded","wireframe","filled","stroked","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","lineJointRounded","lineMiterLimit","lineDashJustified","getElevation","getFillColor","getLineColor","getLineWidth","updateTriggers","material","transitions","CellLayer","getSubLayerClass","getSubLayerProps","id","indexToBounds","CompositeLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;AAEA,IAAMA,YAA6C,qBAC9CC,qBAAaD,YADiC,CAAnD;;IAOqBE,Y;;;;;;;;;;;;WAOnB,yBAAuD;AACrD,aAAO,IAAP;AACD;;;WAED,wBAA0C;AAExC,wBAiBI,KAAKC,KAjBT;AAAA,UACEC,cADF,eACEA,cADF;AAAA,UAEEC,QAFF,eAEEA,QAFF;AAAA,UAGEC,SAHF,eAGEA,SAHF;AAAA,UAIEC,MAJF,eAIEA,MAJF;AAAA,UAKEC,OALF,eAKEA,OALF;AAAA,UAMEC,cANF,eAMEA,cANF;AAAA,UAOEC,cAPF,eAOEA,cAPF;AAAA,UAQEC,kBARF,eAQEA,kBARF;AAAA,UASEC,kBATF,eASEA,kBATF;AAAA,UAUEC,gBAVF,eAUEA,gBAVF;AAAA,UAWEC,cAXF,eAWEA,cAXF;AAAA,UAYEC,iBAZF,eAYEA,iBAZF;AAAA,UAaEC,YAbF,eAaEA,YAbF;AAAA,UAcEC,YAdF,eAcEA,YAdF;AAAA,UAeEC,YAfF,eAeEA,YAfF;AAAA,UAgBEC,YAhBF,eAgBEA,YAhBF;AAoBA,yBAAgD,KAAKhB,KAArD;AAAA,UAAOiB,cAAP,gBAAOA,cAAP;AAAA,UAAuBC,QAAvB,gBAAuBA,QAAvB;AAAA,UAAiCC,WAAjC,gBAAiCA,WAAjC;AAGA,UAAMC,SAAS,GAAG,KAAKC,gBAAL,CAAsB,MAAtB,EAA8BvB,oBAA9B,CAAlB;AACA,aAAO,IAAIsB,SAAJ,CACL;AACEhB,QAAAA,MAAM,EAANA,MADF;AAEED,QAAAA,SAAS,EAATA,SAFF;AAIED,QAAAA,QAAQ,EAARA,QAJF;AAKED,QAAAA,cAAc,EAAdA,cALF;AAOEI,QAAAA,OAAO,EAAPA,OAPF;AAQEC,QAAAA,cAAc,EAAdA,cARF;AASEC,QAAAA,cAAc,EAAdA,cATF;AAUEC,QAAAA,kBAAkB,EAAlBA,kBAVF;AAWEC,QAAAA,kBAAkB,EAAlBA,kBAXF;AAYEC,QAAAA,gBAAgB,EAAhBA,gBAZF;AAaEC,QAAAA,cAAc,EAAdA,cAbF;AAcEC,QAAAA,iBAAiB,EAAjBA,iBAdF;AAgBEM,QAAAA,QAAQ,EAARA,QAhBF;AAiBEC,QAAAA,WAAW,EAAXA,WAjBF;AAmBEN,QAAAA,YAAY,EAAZA,YAnBF;AAoBEC,QAAAA,YAAY,EAAZA,YApBF;AAqBEC,QAAAA,YAAY,EAAZA,YArBF;AAsBEC,QAAAA,YAAY,EAAZA;AAtBF,OADK,EAyBL,KAAKM,gBAAL,CAAsB;AACpBC,QAAAA,EAAE,EAAE,MADgB;AAEpBN,QAAAA,cAAc,EAAEA,cAAc,IAAI;AAChCJ,UAAAA,YAAY,EAAEI,cAAc,CAACJ,YADG;AAEhCC,UAAAA,YAAY,EAAEG,cAAc,CAACH,YAFG;AAGhCC,UAAAA,YAAY,EAAEE,cAAc,CAACF,YAHG;AAIhCC,UAAAA,YAAY,EAAEC,cAAc,CAACD;AAJG;AAFd,OAAtB,CAzBK,EAkCL,KAAKQ,aAAL,EAlCK,CAAP;AAoCD;;;EAzEgFC,oB;;;8BAA9D1B,Y,eAGA,c;8BAHAA,Y,kBAIiBF,Y","sourcesContent":["import {CompositeLayer, Layer, LayersList, DefaultProps} from '@deck.gl/core';\nimport {PolygonLayer, PolygonLayerProps} from '@deck.gl/layers';\n\nconst defaultProps: DefaultProps<GeoCellLayerProps> = {\n ...PolygonLayer.defaultProps\n};\n\n/** All properties supported by GeoCellLayer. */\nexport type GeoCellLayerProps<DataT = any> = PolygonLayerProps<DataT>;\n\nexport default class GeoCellLayer<DataT = any, ExtraProps extends {} = {}> extends CompositeLayer<\n Required<GeoCellLayerProps<DataT>> & ExtraProps\n> {\n static layerName = 'GeoCellLayer';\n static defaultProps: DefaultProps = defaultProps;\n\n /** Implement to generate props to create geometry. */\n indexToBounds(): Partial<GeoCellLayer['props']> | null {\n return null;\n }\n\n renderLayers(): Layer | null | LayersList {\n // Rendering props underlying layer\n const {\n elevationScale,\n extruded,\n wireframe,\n filled,\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n } = this.props;\n\n // Accessor props for underlying layers\n const {updateTriggers, material, transitions} = this.props;\n\n // Filled Polygon Layer\n const CellLayer = this.getSubLayerClass('cell', PolygonLayer);\n return new CellLayer(\n {\n filled,\n wireframe,\n\n extruded,\n elevationScale,\n\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n\n material,\n transitions,\n\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n },\n this.getSubLayerProps({\n id: 'cell',\n updateTriggers: updateTriggers && {\n getElevation: updateTriggers.getElevation,\n getFillColor: updateTriggers.getFillColor,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n }),\n this.indexToBounds()\n );\n }\n}\n"],"file":"GeoCellLayer.js"}
1
+ {"version":3,"sources":["../../../src/geo-cell-layer/GeoCellLayer.ts"],"names":["defaultProps","PolygonLayer","GeoCellLayer","props","elevationScale","extruded","wireframe","filled","stroked","lineWidthUnits","lineWidthScale","lineWidthMinPixels","lineWidthMaxPixels","lineJointRounded","lineMiterLimit","lineDashJustified","getElevation","getFillColor","getLineColor","getLineWidth","updateTriggers","material","transitions","CellLayer","getSubLayerClass","indexToBounds","boundsUpdateTriggers","boundsProps","getSubLayerProps","id","CompositeLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;;;;;AAEA,IAAMA,YAA6C,qBAC9CC,qBAAaD,YADiC,CAAnD;;IAOqBE,Y;;;;;;;;;;;;WAOnB,yBAAuD;AACrD,aAAO,IAAP;AACD;;;WAED,wBAA0C;AAExC,wBAiBI,KAAKC,KAjBT;AAAA,UACEC,cADF,eACEA,cADF;AAAA,UAEEC,QAFF,eAEEA,QAFF;AAAA,UAGEC,SAHF,eAGEA,SAHF;AAAA,UAIEC,MAJF,eAIEA,MAJF;AAAA,UAKEC,OALF,eAKEA,OALF;AAAA,UAMEC,cANF,eAMEA,cANF;AAAA,UAOEC,cAPF,eAOEA,cAPF;AAAA,UAQEC,kBARF,eAQEA,kBARF;AAAA,UASEC,kBATF,eASEA,kBATF;AAAA,UAUEC,gBAVF,eAUEA,gBAVF;AAAA,UAWEC,cAXF,eAWEA,cAXF;AAAA,UAYEC,iBAZF,eAYEA,iBAZF;AAAA,UAaEC,YAbF,eAaEA,YAbF;AAAA,UAcEC,YAdF,eAcEA,YAdF;AAAA,UAeEC,YAfF,eAeEA,YAfF;AAAA,UAgBEC,YAhBF,eAgBEA,YAhBF;AAoBA,yBAAgD,KAAKhB,KAArD;AAAA,UAAOiB,cAAP,gBAAOA,cAAP;AAAA,UAAuBC,QAAvB,gBAAuBA,QAAvB;AAAA,UAAiCC,WAAjC,gBAAiCA,WAAjC;AAGA,UAAMC,SAAS,GAAG,KAAKC,gBAAL,CAAsB,MAAtB,EAA8BvB,oBAA9B,CAAlB;;AACA,iBAA+D,KAAKwB,aAAL,MAAwB,EAAvF;AAAA,UAAuBC,oBAAvB,QAAON,cAAP;AAAA,UAAgDO,WAAhD;;AACA,aAAO,IAAIJ,SAAJ,CACL;AACEhB,QAAAA,MAAM,EAANA,MADF;AAEED,QAAAA,SAAS,EAATA,SAFF;AAIED,QAAAA,QAAQ,EAARA,QAJF;AAKED,QAAAA,cAAc,EAAdA,cALF;AAOEI,QAAAA,OAAO,EAAPA,OAPF;AAQEC,QAAAA,cAAc,EAAdA,cARF;AASEC,QAAAA,cAAc,EAAdA,cATF;AAUEC,QAAAA,kBAAkB,EAAlBA,kBAVF;AAWEC,QAAAA,kBAAkB,EAAlBA,kBAXF;AAYEC,QAAAA,gBAAgB,EAAhBA,gBAZF;AAaEC,QAAAA,cAAc,EAAdA,cAbF;AAcEC,QAAAA,iBAAiB,EAAjBA,iBAdF;AAgBEM,QAAAA,QAAQ,EAARA,QAhBF;AAiBEC,QAAAA,WAAW,EAAXA,WAjBF;AAmBEN,QAAAA,YAAY,EAAZA,YAnBF;AAoBEC,QAAAA,YAAY,EAAZA,YApBF;AAqBEC,QAAAA,YAAY,EAAZA,YArBF;AAsBEC,QAAAA,YAAY,EAAZA;AAtBF,OADK,EAyBL,KAAKS,gBAAL,CAAsB;AACpBC,QAAAA,EAAE,EAAE,MADgB;AAEpBT,QAAAA,cAAc,EAAEA,cAAc,oCACzBM,oBADyB;AAE5BV,UAAAA,YAAY,EAAEI,cAAc,CAACJ,YAFD;AAG5BC,UAAAA,YAAY,EAAEG,cAAc,CAACH,YAHD;AAI5BC,UAAAA,YAAY,EAAEE,cAAc,CAACF,YAJD;AAK5BC,UAAAA,YAAY,EAAEC,cAAc,CAACD;AALD;AAFV,OAAtB,CAzBK,EAmCLQ,WAnCK,CAAP;AAqCD;;;EA3EgFG,oB;;;8BAA9D5B,Y,eAGA,c;8BAHAA,Y,kBAIiBF,Y","sourcesContent":["import {CompositeLayer, Layer, LayersList, DefaultProps} from '@deck.gl/core';\nimport {PolygonLayer, PolygonLayerProps} from '@deck.gl/layers';\n\nconst defaultProps: DefaultProps<GeoCellLayerProps> = {\n ...PolygonLayer.defaultProps\n};\n\n/** All properties supported by GeoCellLayer. */\nexport type GeoCellLayerProps<DataT = any> = PolygonLayerProps<DataT>;\n\nexport default class GeoCellLayer<DataT = any, ExtraProps extends {} = {}> extends CompositeLayer<\n Required<GeoCellLayerProps<DataT>> & ExtraProps\n> {\n static layerName = 'GeoCellLayer';\n static defaultProps: DefaultProps = defaultProps;\n\n /** Implement to generate props to create geometry. */\n indexToBounds(): Partial<GeoCellLayer['props']> | null {\n return null;\n }\n\n renderLayers(): Layer | null | LayersList {\n // Rendering props underlying layer\n const {\n elevationScale,\n extruded,\n wireframe,\n filled,\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n } = this.props;\n\n // Accessor props for underlying layers\n const {updateTriggers, material, transitions} = this.props;\n\n // Filled Polygon Layer\n const CellLayer = this.getSubLayerClass('cell', PolygonLayer);\n const {updateTriggers: boundsUpdateTriggers, ...boundsProps} = this.indexToBounds() || {};\n return new CellLayer(\n {\n filled,\n wireframe,\n\n extruded,\n elevationScale,\n\n stroked,\n lineWidthUnits,\n lineWidthScale,\n lineWidthMinPixels,\n lineWidthMaxPixels,\n lineJointRounded,\n lineMiterLimit,\n lineDashJustified,\n\n material,\n transitions,\n\n getElevation,\n getFillColor,\n getLineColor,\n getLineWidth\n },\n this.getSubLayerProps({\n id: 'cell',\n updateTriggers: updateTriggers && {\n ...boundsUpdateTriggers,\n getElevation: updateTriggers.getElevation,\n getFillColor: updateTriggers.getFillColor,\n getLineColor: updateTriggers.getLineColor,\n getLineWidth: updateTriggers.getLineWidth\n }\n }),\n boundsProps\n );\n }\n}\n"],"file":"GeoCellLayer.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mvt-layer/mvt-layer.ts"],"names":["WORLD_SIZE","defaultProps","GeoJsonLayer","data","urlType","onDataLoad","type","value","optional","compare","uniqueIdProperty","highlightedFeatureId","loaders","MVTWorkerLoader","binary","MVTLayer","context","viewport","resolution","undefined","props","setState","tileJSON","state","tileset","oldProps","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","fetch","propName","layer","raiseError","tilejson","tiles","opts","minZoom","maxZoom","Number","isFinite","minzoom","maxzoom","loadProps","index","signal","url","Promise","reject","loadOptions","getLoadOptions","mimeType","mvt","coordinates","tileIndex","gis","format","tile","x","y","z","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","Matrix4","scale","autoHighlight","coordinateOrigin","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","extensions","ClipExtension","subLayers","log","warn","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","params","isWGS84","Boolean","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","maxObjects","deck","width","height","layerIds","id","pickObjects","maxFeatures","features","_pickObjects","featureCache","Set","renderedFeatures","f","featureId","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","TileLayer","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n GetPickingInfoParams,\n Viewport,\n COORDINATE_SYSTEM,\n DefaultProps\n} from '@deck.gl/core';\nimport {GeoJsonLayer, GeoJsonLayerProps} from '@deck.gl/layers';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport {Matrix4} from '@math.gl/core';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\n\nimport type {Loader} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport TileLayer, {TiledPickingInfo, TileLayerProps} from '../tile-layer/tile-layer';\n\nimport type {Tileset2DProps, TileLoadProps, GeoBoundingBox} from '../tileset-2d';\nimport {\n urlType,\n Tileset2D,\n Tile2DHeader,\n getURLFromTemplate,\n isGeoBoundingBox,\n isURLTemplate\n} from '../tileset-2d';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps: DefaultProps<MVTLayerProps> = {\n ...GeoJsonLayer.defaultProps,\n data: urlType,\n onDataLoad: {type: 'function', value: null, optional: true, compare: false},\n uniqueIdProperty: '',\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport type TileJson = {\n tilejson: string;\n tiles: string[];\n // eslint-disable-next-line camelcase\n vector_layers: any[];\n attribution?: string;\n scheme?: string;\n maxzoom?: number;\n minzoom?: number;\n version?: string;\n};\n\ntype ParsedMvtTile = Feature[] | BinaryFeatures;\n\n/** All props supported by the MVTLayer */\nexport type MVTLayerProps = _MVTLayerProps &\n Omit<GeoJsonLayerProps, 'data'> &\n TileLayerProps<ParsedMvtTile>;\n\n/** Props added by the MVTLayer */\nexport type _MVTLayerProps = {\n /** Called if `data` is a TileJSON URL when it is successfully fetched. */\n onDataLoad?: ((tilejson: TileJson | null) => void) | null;\n\n /** Needed for highlighting a feature split across two or more tiles. */\n uniqueIdProperty?: string;\n\n /** A feature with ID corresponding to the supplied value will be highlighted. */\n highlightedFeatureId?: string | null;\n\n /**\n * Use tile data in binary format.\n *\n * @default true\n */\n binary?: boolean;\n\n /**\n * Loaders used to transform tiles into `data` property passed to `renderSubLayers`.\n *\n * @default [MVTWorkerLoader] from `@loaders.gl/mvt`\n */\n loaders?: Loader[];\n};\n\ntype ContentWGS84Cache = {_contentWGS84?: Feature[]};\n\n/** Render data formatted as [Mapbox Vector Tiles](https://docs.mapbox.com/vector-tiles/specification/). */\nexport default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<\n ParsedMvtTile,\n Required<_MVTLayerProps> & ExtraProps\n> {\n static layerName = 'MVTLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n super.initializeState();\n // GlobeView doesn't work well with binary data\n const binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;\n this.setState({\n binary,\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded(): boolean {\n return this.state && this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}: UpdateParameters<this>) {\n if (changeFlags.dataChanged) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._updateTileData();\n }\n\n if (this.state?.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n private async _updateTileData(): Promise<void> {\n let data: any = this.props.data;\n let tileJSON: any = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error: any) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON, {propName: 'data', layer: this});\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const opts = super._getTilesetOptions();\n const tileJSON: TileJson | null | undefined = this.state.tileJSON;\n const {minZoom, maxZoom} = this.props;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && (tileJSON.minzoom as number) > (minZoom as number)) {\n opts.minZoom = tileJSON.minzoom as number;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(maxZoom) || (tileJSON.maxzoom as number) < (maxZoom as number))\n ) {\n opts.maxZoom = tileJSON.maxzoom as number;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers(): Layer | null | LayersList {\n if (!this.state?.data) return null;\n return super.renderLayers();\n }\n\n getTileData(loadProps: TileLoadProps): Promise<ParsedMvtTile> {\n const {data, binary} = this.state;\n const {index, signal} = loadProps;\n\n const url = getURLFromTemplate(data, loadProps);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {fetch} = this.props;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: index\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: ParsedMvtTile;\n _offset: number;\n tile: Tile2DHeader<ParsedMvtTile>;\n }\n ): Layer | null | LayersList {\n const {x, y, z} = props.tile.index;\n const worldScale = Math.pow(2, z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.state.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params: GetPickingInfoParams): TiledPickingInfo {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = Boolean(this.context.viewport.resolution);\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer!.props;\n info.object = binaryToGeojson(data as BinaryFeatures, {\n globalFeatureId: info.index\n }) as Feature;\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(\n info.object,\n info.tile!.bbox as GeoBoundingBox, // eslint-disable-line\n this.context.viewport\n );\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader<ParsedMvtTile>): Record<string, any> {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n private getHighlightedObjectIndex(tile: Tile2DHeader<ParsedMvtTile>): number {\n const {hoveredFeatureId, hoveredFeatureLayerName, binary} = this.state;\n const {uniqueIdProperty, highlightedFeatureId} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n private _pickObjects(maxObjects: number | null): PickingInfo[] {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck!.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n /** Get the rendered features in the current viewport. */\n getRenderedFeatures(maxFeatures: number | null = null): Feature[] {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures: Feature[] = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object as Feature);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object as Feature);\n }\n }\n\n return renderedFeatures;\n }\n\n private _setWGS84PropertyForTiles(): void {\n const propName = 'dataInWGS84';\n const tileset: Tileset2D = this.state.tileset;\n\n // @ts-expect-error selectedTiles are always initialized when tile is being processed\n tileset.selectedTiles.forEach((tile: Tile2DHeader & ContentWGS84Cache) => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.state.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n const {bbox} = tile;\n if (tile._contentWGS84 === undefined && isGeoBoundingBox(bbox)) {\n // Create a cache to transform only once\n\n const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature: Feature, uniqueIdProperty: string | undefined) {\n if (feature.properties && uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature: Feature): string | null {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(\n object: Feature,\n bbox: GeoBoundingBox,\n viewport: Viewport\n): Feature {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature as Feature;\n}\n"],"file":"mvt-layer.js"}
1
+ {"version":3,"sources":["../../../src/mvt-layer/mvt-layer.ts"],"names":["WORLD_SIZE","defaultProps","GeoJsonLayer","data","urlType","onDataLoad","type","value","optional","compare","uniqueIdProperty","highlightedFeatureId","loaders","MVTWorkerLoader","binary","MVTLayer","context","viewport","resolution","undefined","props","setState","tileJSON","state","tileset","oldProps","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","fetch","propName","layer","raiseError","tilejson","tiles","opts","minZoom","maxZoom","Number","isFinite","minzoom","maxzoom","loadProps","index","signal","url","Promise","reject","loadOptions","getLoadOptions","mimeType","mvt","coordinates","tileIndex","gis","format","tile","x","y","z","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","Matrix4","scale","autoHighlight","coordinateOrigin","coordinateSystem","COORDINATE_SYSTEM","CARTESIAN","extensions","ClipExtension","subLayers","log","warn","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","params","isWGS84","Boolean","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","maxObjects","deck","width","height","layerIds","id","pickObjects","maxFeatures","features","_pickObjects","featureCache","Set","renderedFeatures","f","featureId","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","TileLayer","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n GetPickingInfoParams,\n Viewport,\n COORDINATE_SYSTEM,\n DefaultProps\n} from '@deck.gl/core';\nimport {GeoJsonLayer, GeoJsonLayerProps} from '@deck.gl/layers';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport {Matrix4} from '@math.gl/core';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\n\nimport type {Loader} from '@loaders.gl/loader-utils';\nimport type {BinaryFeatures} from '@loaders.gl/schema';\nimport type {Feature} from 'geojson';\n\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport TileLayer, {TiledPickingInfo, TileLayerProps} from '../tile-layer/tile-layer';\n\nimport type {Tileset2DProps, TileLoadProps, GeoBoundingBox} from '../tileset-2d';\nimport {\n urlType,\n Tileset2D,\n Tile2DHeader,\n getURLFromTemplate,\n isGeoBoundingBox,\n isURLTemplate\n} from '../tileset-2d';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps: DefaultProps<MVTLayerProps> = {\n ...GeoJsonLayer.defaultProps,\n data: urlType,\n onDataLoad: {type: 'function', value: null, optional: true, compare: false},\n uniqueIdProperty: '',\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport type TileJson = {\n tilejson: string;\n tiles: string[];\n // eslint-disable-next-line camelcase\n vector_layers: any[];\n attribution?: string;\n scheme?: string;\n maxzoom?: number;\n minzoom?: number;\n version?: string;\n};\n\ntype ParsedMvtTile = Feature[] | BinaryFeatures;\n\n/** All props supported by the MVTLayer */\nexport type MVTLayerProps = _MVTLayerProps &\n Omit<GeoJsonLayerProps, 'data'> &\n TileLayerProps<ParsedMvtTile>;\n\n/** Props added by the MVTLayer */\nexport type _MVTLayerProps = {\n /** Called if `data` is a TileJSON URL when it is successfully fetched. */\n onDataLoad?: ((tilejson: TileJson | null) => void) | null;\n\n /** Needed for highlighting a feature split across two or more tiles. */\n uniqueIdProperty?: string;\n\n /** A feature with ID corresponding to the supplied value will be highlighted. */\n highlightedFeatureId?: string | number | null;\n\n /**\n * Use tile data in binary format.\n *\n * @default true\n */\n binary?: boolean;\n\n /**\n * Loaders used to transform tiles into `data` property passed to `renderSubLayers`.\n *\n * @default [MVTWorkerLoader] from `@loaders.gl/mvt`\n */\n loaders?: Loader[];\n};\n\ntype ContentWGS84Cache = {_contentWGS84?: Feature[]};\n\n/** Render data formatted as [Mapbox Vector Tiles](https://docs.mapbox.com/vector-tiles/specification/). */\nexport default class MVTLayer<ExtraProps extends {} = {}> extends TileLayer<\n ParsedMvtTile,\n Required<_MVTLayerProps> & ExtraProps\n> {\n static layerName = 'MVTLayer';\n static defaultProps = defaultProps;\n\n initializeState(): void {\n super.initializeState();\n // GlobeView doesn't work well with binary data\n const binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;\n this.setState({\n binary,\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded(): boolean {\n return this.state && this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}: UpdateParameters<this>) {\n if (changeFlags.dataChanged) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._updateTileData();\n }\n\n if (this.state?.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n private async _updateTileData(): Promise<void> {\n let data: any = this.props.data;\n let tileJSON: any = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error: any) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON, {propName: 'data', layer: this});\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const opts = super._getTilesetOptions();\n const tileJSON: TileJson | null | undefined = this.state.tileJSON;\n const {minZoom, maxZoom} = this.props;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && (tileJSON.minzoom as number) > (minZoom as number)) {\n opts.minZoom = tileJSON.minzoom as number;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(maxZoom) || (tileJSON.maxzoom as number) < (maxZoom as number))\n ) {\n opts.maxZoom = tileJSON.maxzoom as number;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers(): Layer | null | LayersList {\n if (!this.state?.data) return null;\n return super.renderLayers();\n }\n\n getTileData(loadProps: TileLoadProps): Promise<ParsedMvtTile> {\n const {data, binary} = this.state;\n const {index, signal} = loadProps;\n\n const url = getURLFromTemplate(data, loadProps);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {fetch} = this.props;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: index\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(\n props: TileLayer['props'] & {\n id: string;\n data: ParsedMvtTile;\n _offset: number;\n tile: Tile2DHeader<ParsedMvtTile>;\n }\n ): Layer | null | LayersList {\n const {x, y, z} = props.tile.index;\n const worldScale = Math.pow(2, z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.state.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params: GetPickingInfoParams): TiledPickingInfo {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = Boolean(this.context.viewport.resolution);\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer!.props;\n info.object = binaryToGeojson(data as BinaryFeatures, {\n globalFeatureId: info.index\n }) as Feature;\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(\n info.object,\n info.tile!.bbox as GeoBoundingBox, // eslint-disable-line\n this.context.viewport\n );\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader<ParsedMvtTile>): Record<string, any> {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n private getHighlightedObjectIndex(tile: Tile2DHeader<ParsedMvtTile>): number {\n const {hoveredFeatureId, hoveredFeatureLayerName, binary} = this.state;\n const {uniqueIdProperty, highlightedFeatureId} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n private _pickObjects(maxObjects: number | null): PickingInfo[] {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck!.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n /** Get the rendered features in the current viewport. */\n getRenderedFeatures(maxFeatures: number | null = null): Feature[] {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures: Feature[] = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object as Feature);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object as Feature);\n }\n }\n\n return renderedFeatures;\n }\n\n private _setWGS84PropertyForTiles(): void {\n const propName = 'dataInWGS84';\n const tileset: Tileset2D = this.state.tileset;\n\n // @ts-expect-error selectedTiles are always initialized when tile is being processed\n tileset.selectedTiles.forEach((tile: Tile2DHeader & ContentWGS84Cache) => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.state.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n const {bbox} = tile;\n if (tile._contentWGS84 === undefined && isGeoBoundingBox(bbox)) {\n // Create a cache to transform only once\n\n const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature: Feature, uniqueIdProperty: string | undefined) {\n if (feature.properties && uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature: Feature): string | null {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value: unknown): boolean {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(\n object: Feature,\n bbox: GeoBoundingBox,\n viewport: Viewport\n): Feature {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature as Feature;\n}\n"],"file":"mvt-layer.js"}
@@ -51,13 +51,18 @@ var QuadkeyLayer = function (_GeoCellLayer) {
51
51
  value: function indexToBounds() {
52
52
  var _this$props = this.props,
53
53
  data = _this$props.data,
54
+ extruded = _this$props.extruded,
54
55
  getQuadkey = _this$props.getQuadkey;
56
+ var coverage = extruded ? 0.99 : 1;
55
57
  return {
56
58
  data: data,
57
59
  _normalize: false,
58
60
  positionFormat: 'XY',
59
61
  getPolygon: function getPolygon(x, objectInfo) {
60
- return (0, _quadkeyUtils.getQuadkeyPolygon)(getQuadkey(x, objectInfo));
62
+ return (0, _quadkeyUtils.getQuadkeyPolygon)(getQuadkey(x, objectInfo), coverage);
63
+ },
64
+ updateTriggers: {
65
+ getPolygon: coverage
61
66
  }
62
67
  };
63
68
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/quadkey-layer/quadkey-layer.ts"],"names":["defaultProps","getQuadkey","type","value","d","quadkey","QuadkeyLayer","props","data","_normalize","positionFormat","getPolygon","x","objectInfo","GeoCellLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;AAEA,IAAMA,YAA6C,GAAG;AACpDC,EAAAA,UAAU,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAC,CAAC;AAAA,aAAIA,CAAC,CAACC,OAAN;AAAA;AAA3B;AADwC,CAAtD;;IAkBqBC,Y;;;;;;;;;;;;WAOnB,yBAAuD;AACrD,wBAA2B,KAAKC,KAAhC;AAAA,UAAOC,IAAP,eAAOA,IAAP;AAAA,UAAaP,UAAb,eAAaA,UAAb;AAEA,aAAO;AACLO,QAAAA,IAAI,EAAJA,IADK;AAELC,QAAAA,UAAU,EAAE,KAFP;AAGLC,QAAAA,cAAc,EAAE,IAHX;AAKLC,QAAAA,UAAU,EAAE,oBAACC,CAAD,EAAWC,UAAX;AAAA,iBAA0B,qCAAkBZ,UAAU,CAACW,CAAD,EAAIC,UAAJ,CAA5B,CAA1B;AAAA;AALP,OAAP;AAOD;;;EAjBgFC,sB;;;8BAA9DR,Y,eAIA,c;8BAJAA,Y,kBAKGN,Y","sourcesContent":["import {AccessorFunction, DefaultProps} from '@deck.gl/core';\nimport GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';\nimport {getQuadkeyPolygon} from './quadkey-utils';\n\nconst defaultProps: DefaultProps<QuadkeyLayerProps> = {\n getQuadkey: {type: 'accessor', value: d => d.quadkey}\n};\n\n/** All properties supported by QuadkeyLayer. */\nexport type QuadkeyLayerProps<DataT = any> = _QuadkeyLayerProps<DataT> & GeoCellLayerProps<DataT>;\n\n/** Properties added by QuadkeyLayer. */\ntype _QuadkeyLayerProps<DataT> = {\n /**\n * Called for each data object to retrieve the quadkey string identifier.\n *\n * By default, it reads `quadkey` property of data object.\n */\n getQuadkey?: AccessorFunction<DataT, string>;\n};\n\n/** Render filled and/or stroked polygons based on the [Quadkey](https://towardsdatascience.com/geospatial-indexing-with-quadkeys-d933dff01496) geospatial indexing system. */\nexport default class QuadkeyLayer<DataT = any, ExtraProps extends {} = {}> extends GeoCellLayer<\n DataT,\n Required<_QuadkeyLayerProps<DataT>> & ExtraProps\n> {\n static layerName = 'QuadkeyLayer';\n static defaultProps = defaultProps;\n\n indexToBounds(): Partial<GeoCellLayer['props']> | null {\n const {data, getQuadkey} = this.props;\n\n return {\n data,\n _normalize: false,\n positionFormat: 'XY',\n\n getPolygon: (x: DataT, objectInfo) => getQuadkeyPolygon(getQuadkey(x, objectInfo))\n };\n }\n}\n"],"file":"quadkey-layer.js"}
1
+ {"version":3,"sources":["../../../src/quadkey-layer/quadkey-layer.ts"],"names":["defaultProps","getQuadkey","type","value","d","quadkey","QuadkeyLayer","props","data","extruded","coverage","_normalize","positionFormat","getPolygon","x","objectInfo","updateTriggers","GeoCellLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;;;;;AAEA,IAAMA,YAA6C,GAAG;AACpDC,EAAAA,UAAU,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAC,CAAC;AAAA,aAAIA,CAAC,CAACC,OAAN;AAAA;AAA3B;AADwC,CAAtD;;IAkBqBC,Y;;;;;;;;;;;;WAOnB,yBAAuD;AACrD,wBAAqC,KAAKC,KAA1C;AAAA,UAAOC,IAAP,eAAOA,IAAP;AAAA,UAAaC,QAAb,eAAaA,QAAb;AAAA,UAAuBR,UAAvB,eAAuBA,UAAvB;AAEA,UAAMS,QAAQ,GAAGD,QAAQ,GAAG,IAAH,GAAU,CAAnC;AAEA,aAAO;AACLD,QAAAA,IAAI,EAAJA,IADK;AAELG,QAAAA,UAAU,EAAE,KAFP;AAGLC,QAAAA,cAAc,EAAE,IAHX;AAKLC,QAAAA,UAAU,EAAE,oBAACC,CAAD,EAAWC,UAAX;AAAA,iBAA0B,qCAAkBd,UAAU,CAACa,CAAD,EAAIC,UAAJ,CAA5B,EAA6CL,QAA7C,CAA1B;AAAA,SALP;AAMLM,QAAAA,cAAc,EAAE;AAACH,UAAAA,UAAU,EAAEH;AAAb;AANX,OAAP;AAQD;;;EApBgFO,sB;;;8BAA9DX,Y,eAIA,c;8BAJAA,Y,kBAKGN,Y","sourcesContent":["import {AccessorFunction, DefaultProps} from '@deck.gl/core';\nimport GeoCellLayer, {GeoCellLayerProps} from '../geo-cell-layer/GeoCellLayer';\nimport {getQuadkeyPolygon} from './quadkey-utils';\n\nconst defaultProps: DefaultProps<QuadkeyLayerProps> = {\n getQuadkey: {type: 'accessor', value: d => d.quadkey}\n};\n\n/** All properties supported by QuadkeyLayer. */\nexport type QuadkeyLayerProps<DataT = any> = _QuadkeyLayerProps<DataT> & GeoCellLayerProps<DataT>;\n\n/** Properties added by QuadkeyLayer. */\ntype _QuadkeyLayerProps<DataT> = {\n /**\n * Called for each data object to retrieve the quadkey string identifier.\n *\n * By default, it reads `quadkey` property of data object.\n */\n getQuadkey?: AccessorFunction<DataT, string>;\n};\n\n/** Render filled and/or stroked polygons based on the [Quadkey](https://towardsdatascience.com/geospatial-indexing-with-quadkeys-d933dff01496) geospatial indexing system. */\nexport default class QuadkeyLayer<DataT = any, ExtraProps extends {} = {}> extends GeoCellLayer<\n DataT,\n Required<_QuadkeyLayerProps<DataT>> & ExtraProps\n> {\n static layerName = 'QuadkeyLayer';\n static defaultProps = defaultProps;\n\n indexToBounds(): Partial<GeoCellLayer['props']> | null {\n const {data, extruded, getQuadkey} = this.props;\n // To avoid z-fighting reduce polygon footprint when extruding\n const coverage = extruded ? 0.99 : 1;\n\n return {\n data,\n _normalize: false,\n positionFormat: 'XY',\n\n getPolygon: (x: DataT, objectInfo) => getQuadkeyPolygon(getQuadkey(x, objectInfo), coverage),\n updateTriggers: {getPolygon: coverage}\n };\n }\n}\n"],"file":"quadkey-layer.js"}
@@ -14,7 +14,7 @@ var _webMercator = require("@math.gl/web-mercator");
14
14
 
15
15
  var TILE_SIZE = 512;
16
16
 
17
- function quadkeyToWorldBounds(quadkey) {
17
+ function quadkeyToWorldBounds(quadkey, coverage) {
18
18
  var x = 0;
19
19
  var y = 0;
20
20
  var mask = 1 << quadkey.length;
@@ -27,11 +27,13 @@ function quadkeyToWorldBounds(quadkey) {
27
27
  if (q > 1) y |= mask;
28
28
  }
29
29
 
30
- return [[x / scale, TILE_SIZE - y / scale], [(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]];
30
+ return [[x / scale, TILE_SIZE - y / scale], [(x + coverage) / scale, TILE_SIZE - (y + coverage) / scale]];
31
31
  }
32
32
 
33
33
  function getQuadkeyPolygon(quadkey) {
34
- var _quadkeyToWorldBounds = quadkeyToWorldBounds(quadkey),
34
+ var coverage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
35
+
36
+ var _quadkeyToWorldBounds = quadkeyToWorldBounds(quadkey, coverage),
35
37
  _quadkeyToWorldBounds2 = (0, _slicedToArray2.default)(_quadkeyToWorldBounds, 2),
36
38
  topLeft = _quadkeyToWorldBounds2[0],
37
39
  bottomRight = _quadkeyToWorldBounds2[1];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/quadkey-layer/quadkey-utils.ts"],"names":["TILE_SIZE","quadkeyToWorldBounds","quadkey","x","y","mask","length","scale","i","q","parseInt","getQuadkeyPolygon","topLeft","bottomRight","w","n","e","s"],"mappings":";;;;;;;;;;;;AAAA;;AAEA,IAAMA,SAAS,GAAG,GAAlB;;AAEO,SAASC,oBAAT,CAA8BC,OAA9B,EAAqE;AAC1E,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,IAAI,GAAG,KAAKH,OAAO,CAACI,MAAxB;AACA,MAAMC,KAAK,GAAGF,IAAI,GAAGL,SAArB;;AAEA,OAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,OAAO,CAACI,MAA5B,EAAoCE,CAAC,EAArC,EAAyC;AACvCH,IAAAA,IAAI,KAAK,CAAT;AACA,QAAMI,CAAC,GAAGC,QAAQ,CAACR,OAAO,CAACM,CAAD,CAAR,CAAlB;AACA,QAAIC,CAAC,GAAG,CAAR,EAAWN,CAAC,IAAIE,IAAL;AACX,QAAII,CAAC,GAAG,CAAR,EAAWL,CAAC,IAAIC,IAAL;AACZ;;AACD,SAAO,CACL,CAACF,CAAC,GAAGI,KAAL,EAAYP,SAAS,GAAGI,CAAC,GAAGG,KAA5B,CADK,EAEL,CAAC,CAACJ,CAAC,GAAG,IAAL,IAAaI,KAAd,EAAqBP,SAAS,GAAG,CAACI,CAAC,GAAG,IAAL,IAAaG,KAA9C,CAFK,CAAP;AAID;;AAEM,SAASI,iBAAT,CAA2BT,OAA3B,EAAsD;AAC3D,8BAA+BD,oBAAoB,CAACC,OAAD,CAAnD;AAAA;AAAA,MAAOU,OAAP;AAAA,MAAgBC,WAAhB;;AACA,uBAAe,gCAAcD,OAAd,CAAf;AAAA;AAAA,MAAOE,CAAP;AAAA,MAAUC,CAAV;;AACA,wBAAe,gCAAcF,WAAd,CAAf;AAAA;AAAA,MAAOG,CAAP;AAAA,MAAUC,CAAV;;AACA,SAAO,CAACD,CAAD,EAAID,CAAJ,EAAOC,CAAP,EAAUC,CAAV,EAAaH,CAAb,EAAgBG,CAAhB,EAAmBH,CAAnB,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BD,CAA5B,CAAP;AACD","sourcesContent":["import {worldToLngLat} from '@math.gl/web-mercator';\n\nconst TILE_SIZE = 512;\n\nexport function quadkeyToWorldBounds(quadkey: string): [number[], number[]] {\n let x = 0;\n let y = 0;\n let mask = 1 << quadkey.length;\n const scale = mask / TILE_SIZE;\n\n for (let i = 0; i < quadkey.length; i++) {\n mask >>= 1;\n const q = parseInt(quadkey[i]);\n if (q % 2) x |= mask;\n if (q > 1) y |= mask;\n }\n return [\n [x / scale, TILE_SIZE - y / scale],\n [(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]\n ];\n}\n\nexport function getQuadkeyPolygon(quadkey: string): number[] {\n const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey);\n const [w, n] = worldToLngLat(topLeft);\n const [e, s] = worldToLngLat(bottomRight);\n return [e, n, e, s, w, s, w, n, e, n];\n}\n"],"file":"quadkey-utils.js"}
1
+ {"version":3,"sources":["../../../src/quadkey-layer/quadkey-utils.ts"],"names":["TILE_SIZE","quadkeyToWorldBounds","quadkey","coverage","x","y","mask","length","scale","i","q","parseInt","getQuadkeyPolygon","topLeft","bottomRight","w","n","e","s"],"mappings":";;;;;;;;;;;;AAAA;;AAEA,IAAMA,SAAS,GAAG,GAAlB;;AAEO,SAASC,oBAAT,CAA8BC,OAA9B,EAA+CC,QAA/C,EAAuF;AAC5F,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,IAAI,GAAG,KAAKJ,OAAO,CAACK,MAAxB;AACA,MAAMC,KAAK,GAAGF,IAAI,GAAGN,SAArB;;AAEA,OAAK,IAAIS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGP,OAAO,CAACK,MAA5B,EAAoCE,CAAC,EAArC,EAAyC;AACvCH,IAAAA,IAAI,KAAK,CAAT;AACA,QAAMI,CAAC,GAAGC,QAAQ,CAACT,OAAO,CAACO,CAAD,CAAR,CAAlB;AACA,QAAIC,CAAC,GAAG,CAAR,EAAWN,CAAC,IAAIE,IAAL;AACX,QAAII,CAAC,GAAG,CAAR,EAAWL,CAAC,IAAIC,IAAL;AACZ;;AACD,SAAO,CACL,CAACF,CAAC,GAAGI,KAAL,EAAYR,SAAS,GAAGK,CAAC,GAAGG,KAA5B,CADK,EAEL,CAAC,CAACJ,CAAC,GAAGD,QAAL,IAAiBK,KAAlB,EAAyBR,SAAS,GAAG,CAACK,CAAC,GAAGF,QAAL,IAAiBK,KAAtD,CAFK,CAAP;AAID;;AAEM,SAASI,iBAAT,CAA2BV,OAA3B,EAAoE;AAAA,MAAxBC,QAAwB,uEAAb,CAAa;;AACzE,8BAA+BF,oBAAoB,CAACC,OAAD,EAAUC,QAAV,CAAnD;AAAA;AAAA,MAAOU,OAAP;AAAA,MAAgBC,WAAhB;;AACA,uBAAe,gCAAcD,OAAd,CAAf;AAAA;AAAA,MAAOE,CAAP;AAAA,MAAUC,CAAV;;AACA,wBAAe,gCAAcF,WAAd,CAAf;AAAA;AAAA,MAAOG,CAAP;AAAA,MAAUC,CAAV;;AACA,SAAO,CAACD,CAAD,EAAID,CAAJ,EAAOC,CAAP,EAAUC,CAAV,EAAaH,CAAb,EAAgBG,CAAhB,EAAmBH,CAAnB,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BD,CAA5B,CAAP;AACD","sourcesContent":["import {worldToLngLat} from '@math.gl/web-mercator';\n\nconst TILE_SIZE = 512;\n\nexport function quadkeyToWorldBounds(quadkey: string, coverage: number): [number[], number[]] {\n let x = 0;\n let y = 0;\n let mask = 1 << quadkey.length;\n const scale = mask / TILE_SIZE;\n\n for (let i = 0; i < quadkey.length; i++) {\n mask >>= 1;\n const q = parseInt(quadkey[i]);\n if (q % 2) x |= mask;\n if (q > 1) y |= mask;\n }\n return [\n [x / scale, TILE_SIZE - y / scale],\n [(x + coverage) / scale, TILE_SIZE - (y + coverage) / scale]\n ];\n}\n\nexport function getQuadkeyPolygon(quadkey: string, coverage = 1): number[] {\n const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey, coverage);\n const [w, n] = worldToLngLat(topLeft);\n const [e, s] = worldToLngLat(bottomRight);\n return [e, n, e, s, w, s, w, n, e, n];\n}\n"],"file":"quadkey-utils.js"}
@@ -213,7 +213,7 @@ var Tile3DLayer = function (_CompositeLayer) {
213
213
  key: "_loadTileset",
214
214
  value: function () {
215
215
  var _loadTileset2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(tilesetUrl) {
216
- var _this$props$loadOptio, loadOptions, loader, options, preloadOptions, tilesetJson, tileset3d;
216
+ var _this$props$loadOptio, loadOptions, loader, options, actualTilesetUrl, preloadOptions, tilesetJson, tileset3d;
217
217
 
218
218
  return _regenerator.default.wrap(function _callee$(_context) {
219
219
  while (1) {
@@ -229,18 +229,23 @@ var Tile3DLayer = function (_CompositeLayer) {
229
229
  options = {
230
230
  loadOptions: _objectSpread({}, loadOptions)
231
231
  };
232
+ actualTilesetUrl = tilesetUrl;
232
233
 
233
234
  if (!loader.preload) {
234
- _context.next = 10;
235
+ _context.next = 12;
235
236
  break;
236
237
  }
237
238
 
238
- _context.next = 7;
239
+ _context.next = 8;
239
240
  return loader.preload(tilesetUrl, loadOptions);
240
241
 
241
- case 7:
242
+ case 8:
242
243
  preloadOptions = _context.sent;
243
244
 
245
+ if (preloadOptions.url) {
246
+ actualTilesetUrl = preloadOptions.url;
247
+ }
248
+
244
249
  if (preloadOptions.headers) {
245
250
  options.loadOptions.fetch = _objectSpread(_objectSpread({}, options.loadOptions.fetch), {}, {
246
251
  headers: preloadOptions.headers
@@ -249,11 +254,11 @@ var Tile3DLayer = function (_CompositeLayer) {
249
254
 
250
255
  Object.assign(options, preloadOptions);
251
256
 
252
- case 10:
253
- _context.next = 12;
254
- return (0, _core3.load)(tilesetUrl, loader, options.loadOptions);
255
-
256
257
  case 12:
258
+ _context.next = 14;
259
+ return (0, _core3.load)(actualTilesetUrl, loader, options.loadOptions);
260
+
261
+ case 14:
257
262
  tilesetJson = _context.sent;
258
263
  tileset3d = new _tiles.Tileset3D(tilesetJson, _objectSpread({
259
264
  onTileLoad: this._onTileLoad.bind(this),
@@ -269,7 +274,7 @@ var Tile3DLayer = function (_CompositeLayer) {
269
274
 
270
275
  this.props.onTilesetLoad(tileset3d);
271
276
 
272
- case 17:
277
+ case 19:
273
278
  case "end":
274
279
  return _context.stop();
275
280
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.ts"],"names":["SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","Tiles3DLoader","onTilesetLoad","tileset3d","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","props","log","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","changeFlags","somethingChanged","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","info","sourceLayer","sourceTile","picked","object","layer","viewportId","selected","viewportIds","includes","layerCache","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","preload","preloadOptions","headers","fetch","assign","tilesetJson","Tileset3D","_onTileLoad","bind","_onTileUnload","setState","viewports","timeline","context","selectTiles","values","then","frameNumber","tilesetChanged","oldLayer","content","TILE_TYPE","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","PointCloudLayer","getSubLayerProps","coordinateSystem","COORDINATE_SYSTEM","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","ScenegraphLayer","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","Geometry","drawMode","getMeshGeometry","MeshLayer","pbrMaterial","tiles","map","_getSubLayer","filter","Boolean","CompositeLayer","contentAttributes","Float32Array","texCoords","uvRegions"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\n\nimport {\n Accessor,\n Color,\n CompositeLayer,\n CompositeLayerProps,\n COORDINATE_SYSTEM,\n FilterContext,\n GetPickingInfoParams,\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n Viewport,\n DefaultProps\n} from '@deck.gl/core';\nimport {PointCloudLayer} from '@deck.gl/layers';\nimport {ScenegraphLayer} from '@deck.gl/mesh-layers';\nimport {default as MeshLayer} from '../mesh-layer/mesh-layer';\n\nimport {load} from '@loaders.gl/core';\nimport {MeshAttributes} from '@loaders.gl/schema';\nimport {Tileset3D, Tile3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps: DefaultProps<Tile3DLayerProps> = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n // Disable async data loading (handling it in _loadTileSet)\n data: '',\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}},\n onTileLoad: {type: 'function', value: tileHeader => {}},\n onTileUnload: {type: 'function', value: tileHeader => {}},\n onTileError: {type: 'function', value: (tile, message, url) => {}},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255]}\n};\n\n/** All properties supported by Tile3DLayer */\nexport type Tile3DLayerProps<DataT = any> = _Tile3DLayerProps<DataT> & CompositeLayerProps;\n\n/** Props added by the Tile3DLayer */\ntype _Tile3DLayerProps<DataT> = {\n data: string;\n /** Color Accessor for point clouds. **/\n getPointColor?: Accessor<DataT, Color>;\n\n /** Global radius of all points in pixels. **/\n pointSize?: number;\n\n /** A loader which is used to decode the fetched tiles.\n * @deprecated Use `loaders` instead\n */\n loader?: typeof Tiles3DLoader;\n\n /** Called when Tileset JSON file is loaded. **/\n onTilesetLoad?: (tile: Tileset3D) => void;\n\n /** Called when a tile in the tileset hierarchy is loaded. **/\n onTileLoad?: (tile: Tile3D) => void;\n\n /** Called when a tile is unloaded. **/\n onTileUnload?: (tile: Tile3D) => void;\n\n /** Called when a tile fails to load. **/\n onTileError?: (tile: Tile3D, url: string, message: string) => void;\n\n /** (Experimental) Accessor to change color of mesh based on properties. **/\n _getMeshColor?: (tile: Tile3D) => Color;\n};\n\n/** Render 3d tiles data formatted according to the [3D Tiles Specification](https://www.opengeospatial.org/standards/3DTiles) and [`ESRI I3S`](https://github.com/Esri/i3s-spec) */\nexport default class Tile3DLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_Tile3DLayerProps<DataT>>\n> {\n static defaultProps = defaultProps;\n static layerName = 'Tile3DLayer';\n\n state!: {\n activeViewports: {};\n frameNumber?: number;\n lastUpdatedViewports: {[viewportId: string]: Viewport} | null;\n layerMap: {[layerId: string]: any};\n tileset3d: Tileset3D | null;\n };\n\n initializeState() {\n if ('onTileLoadFail' in this.props) {\n log.removed('onTileLoadFail', 'onTileError')();\n }\n // prop verification\n this.state = {\n layerMap: {},\n tileset3d: null,\n activeViewports: {},\n lastUpdatedViewports: null\n };\n }\n\n get isLoaded(): boolean {\n const {tileset3d} = this.state;\n return tileset3d !== null && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}: UpdateParameters<this>): void {\n if (props.data && props.data !== oldProps.data) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._loadTileset(props.data);\n }\n\n if (changeFlags.viewportChanged) {\n const {activeViewports} = this.state;\n const viewportsNumber = Object.keys(activeViewports).length;\n if (viewportsNumber) {\n this._updateTileset(activeViewports);\n this.state.lastUpdatedViewports = activeViewports;\n this.state.activeViewports = {};\n }\n }\n if (changeFlags.propsChanged) {\n const {layerMap} = this.state;\n for (const key in layerMap) {\n layerMap[key].needsUpdate = true;\n }\n }\n }\n\n activateViewport(viewport: Viewport): void {\n const {activeViewports, lastUpdatedViewports} = this.state;\n this.internalState!.viewport = viewport;\n\n activeViewports[viewport.id] = viewport;\n const lastViewport = lastUpdatedViewports?.[viewport.id];\n if (!lastViewport || !viewport.equals(lastViewport)) {\n this.setChangeFlags({viewportChanged: true});\n this.setNeedsUpdate();\n }\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams) {\n const sourceTile = sourceLayer && (sourceLayer.props as any).tile;\n if (info.picked) {\n info.object = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n\n return info;\n }\n\n filterSubLayer({layer, viewport}: FilterContext): boolean {\n // All sublayers will have a tile prop\n const {tile} = layer.props as unknown as {tile: Tile3D};\n const {id: viewportId} = viewport;\n return tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile;\n const layerCache = this.state.layerMap[sourceTile?.id];\n if (layerCache && layerCache.layer) {\n layerCache.layer.updateAutoHighlight(info);\n }\n }\n\n private async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n // @ts-ignore\n let loader = this.props.loader || this.props.loaders;\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const options = {loadOptions: {...loadOptions}};\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n\n if (preloadOptions.headers) {\n options.loadOptions.fetch = {\n ...options.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n }\n Object.assign(options, preloadOptions);\n }\n const tilesetJson = await load(tilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileError: this.props.onTileError,\n ...options\n });\n\n this.setState({\n tileset3d,\n layerMap: {}\n });\n\n this._updateTileset(this.state.activeViewports);\n this.props.onTilesetLoad(tileset3d);\n }\n\n private _onTileLoad(tileHeader: Tile3D): void {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n private _onTileUnload(tileHeader: Tile3D): void {\n // Was cleaned up from tileset cache. We no longer need to track it.\n delete this.state.layerMap[tileHeader.id];\n this.props.onTileUnload(tileHeader);\n }\n\n private _updateTileset(viewports: {[viewportId: string]: Viewport} | null): void {\n if (!viewports) {\n return;\n }\n const {tileset3d} = this.state;\n const {timeline} = this.context;\n const viewportsNumber = Object.keys(viewports).length;\n if (!timeline || !viewportsNumber || !tileset3d) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tileset3d.selectTiles(Object.values(viewports)).then(frameNumber => {\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n });\n }\n\n private _getSubLayer(\n tileHeader: Tile3D,\n oldLayer?: Layer\n ): MeshLayer<DataT> | PointCloudLayer<DataT> | ScenegraphLayer<DataT> | null {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer as PointCloudLayer<DataT>);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer as MeshLayer<DataT>);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n private _makePointCloudLayer(\n tileHeader: Tile3D,\n oldLayer?: PointCloudLayer<DataT>\n ): PointCloudLayer<DataT> | null {\n const {attributes, pointCount, constantRGBA, cartographicOrigin, modelMatrix} =\n tileHeader.content;\n const {positions, normals, colors} = attributes;\n\n if (!positions) {\n return null;\n }\n const data = (oldLayer && oldLayer.props.data) || {\n header: {\n vertexCount: pointCount\n },\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n COLOR_0: colors\n }\n };\n\n const {pointSize, getPointColor} = this.props;\n const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n return new SubLayerClass(\n {\n pointSize\n },\n this.getSubLayerProps({\n id: 'pointcloud'\n }),\n {\n id: `${this.id}-pointcloud-${tileHeader.id}`,\n tile: tileHeader,\n data,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getColor: constantRGBA || getPointColor,\n _offset: 0\n }\n );\n }\n\n private _make3DModelLayer(tileHeader: Tile3D): ScenegraphLayer<DataT> {\n const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;\n\n const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n\n return new SubLayerClass(\n {\n _lighting: 'pbr'\n },\n this.getSubLayerProps({\n id: 'scenegraph'\n }),\n {\n id: `${this.id}-scenegraph-${tileHeader.id}`,\n tile: tileHeader,\n data: instances || SINGLE_DATA,\n scenegraph: gltf,\n\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getTransformMatrix: instance => instance.modelMatrix,\n getPosition: [0, 0, 0],\n _offset: 0\n }\n );\n }\n\n private _makeSimpleMeshLayer(tileHeader: Tile3D, oldLayer?: MeshLayer<DataT>): MeshLayer<DataT> {\n const content = tileHeader.content;\n const {\n attributes,\n indices,\n modelMatrix,\n cartographicOrigin,\n coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS,\n material,\n featureIds\n } = content;\n const {_getMeshColor} = this.props;\n\n const geometry =\n (oldLayer && oldLayer.props.mesh) ||\n new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: getMeshGeometry(attributes),\n indices\n });\n\n const SubLayerClass = this.getSubLayerClass('mesh', MeshLayer);\n\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n id: `${this.id}-mesh-${tileHeader.id}`,\n tile: tileHeader,\n mesh: geometry,\n data: SINGLE_DATA,\n getColor: _getMeshColor(tileHeader),\n pbrMaterial: material,\n modelMatrix,\n coordinateOrigin: cartographicOrigin,\n coordinateSystem,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers(): Layer | null | LayersList {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n // loaders.gl doesn't provide a type for tileset3d.tiles\n return (tileset3d.tiles as Tile3D[])\n .map(tile => {\n const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});\n let {layer} = layerCache;\n if (tile.selected) {\n // render selected tiles\n if (!layer) {\n // create layer\n layer = this._getSubLayer(tile);\n } else if (layerCache.needsUpdate) {\n // props have changed, rerender layer\n layer = this._getSubLayer(tile, layer);\n layerCache.needsUpdate = false;\n }\n }\n layerCache.layer = layer;\n return layer;\n })\n .filter(Boolean);\n }\n}\n\nfunction getMeshGeometry(contentAttributes: MeshAttributes): MeshAttributes {\n const attributes: MeshAttributes = {};\n attributes.positions = {\n ...contentAttributes.positions,\n value: new Float32Array(contentAttributes.positions.value)\n };\n if (contentAttributes.normals) {\n attributes.normals = contentAttributes.normals;\n }\n if (contentAttributes.texCoords) {\n attributes.texCoords = contentAttributes.texCoords;\n }\n if (contentAttributes.colors) {\n attributes.colors = contentAttributes.colors;\n }\n if (contentAttributes.uvRegions) {\n attributes.uvRegions = contentAttributes.uvRegions;\n }\n return attributes;\n}\n"],"file":"tile-3d-layer.js"}
1
+ {"version":3,"sources":["../../../src/tile-3d-layer/tile-3d-layer.ts"],"names":["SINGLE_DATA","defaultProps","getPointColor","type","value","pointSize","data","loader","Tiles3DLoader","onTilesetLoad","tileset3d","onTileLoad","tileHeader","onTileUnload","onTileError","tile","message","url","_getMeshColor","Tile3DLayer","props","log","removed","state","layerMap","activeViewports","lastUpdatedViewports","isLoaded","changeFlags","somethingChanged","oldProps","_loadTileset","viewportChanged","viewportsNumber","Object","keys","length","_updateTileset","propsChanged","key","needsUpdate","viewport","internalState","id","lastViewport","equals","setChangeFlags","setNeedsUpdate","info","sourceLayer","sourceTile","picked","object","layer","viewportId","selected","viewportIds","includes","layerCache","updateAutoHighlight","tilesetUrl","loadOptions","loaders","Array","isArray","options","actualTilesetUrl","preload","preloadOptions","headers","fetch","assign","tilesetJson","Tileset3D","_onTileLoad","bind","_onTileUnload","setState","viewports","timeline","context","selectTiles","values","then","frameNumber","tilesetChanged","oldLayer","content","TILE_TYPE","POINTCLOUD","_makePointCloudLayer","SCENEGRAPH","_make3DModelLayer","MESH","_makeSimpleMeshLayer","Error","attributes","pointCount","constantRGBA","cartographicOrigin","modelMatrix","positions","normals","colors","header","vertexCount","POSITION","NORMAL","COLOR_0","SubLayerClass","getSubLayerClass","PointCloudLayer","getSubLayerProps","coordinateSystem","COORDINATE_SYSTEM","METER_OFFSETS","coordinateOrigin","getColor","_offset","gltf","instances","ScenegraphLayer","_lighting","scenegraph","getTransformMatrix","instance","getPosition","indices","material","featureIds","geometry","mesh","Geometry","drawMode","getMeshGeometry","MeshLayer","pbrMaterial","tiles","map","_getSubLayer","filter","Boolean","CompositeLayer","contentAttributes","Float32Array","texCoords","uvRegions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AAgBA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;;;;;;;;;AAEA,IAAMA,WAAW,GAAG,CAAC,CAAD,CAApB;AAEA,IAAMC,YAA4C,GAAG;AACnDC,EAAAA,aAAa,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,GAAV;AAA1B,GADoC;AAEnDC,EAAAA,SAAS,EAAE,GAFwC;AAKnDC,EAAAA,IAAI,EAAE,EAL6C;AAMnDC,EAAAA,MAAM,EAAEC,qBAN2C;AAQnDC,EAAAA,aAAa,EAAE;AAACN,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAM,SAAS,EAAI,CAAE;AAAzC,GARoC;AASnDC,EAAAA,UAAU,EAAE;AAACR,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAQ,UAAU,EAAI,CAAE;AAA1C,GATuC;AAUnDC,EAAAA,YAAY,EAAE;AAACV,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAQ,UAAU,EAAI,CAAE;AAA1C,GAVqC;AAWnDE,EAAAA,WAAW,EAAE;AAACX,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAACW,IAAD,EAAOC,OAAP,EAAgBC,GAAhB,EAAwB,CAAE;AAApD,GAXsC;AAYnDC,EAAAA,aAAa,EAAE;AAACf,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAE,eAAAQ,UAAU;AAAA,aAAI,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAJ;AAAA;AAApC;AAZoC,CAArD;;IAiDqBO,W;;;;;;;;;;;;;;;;;;;;;WAcnB,2BAAkB;AAChB,UAAI,oBAAoB,KAAKC,KAA7B,EAAoC;AAClCC,mBAAIC,OAAJ,CAAY,gBAAZ,EAA8B,aAA9B;AACD;;AAED,WAAKC,KAAL,GAAa;AACXC,QAAAA,QAAQ,EAAE,EADC;AAEXd,QAAAA,SAAS,EAAE,IAFA;AAGXe,QAAAA,eAAe,EAAE,EAHN;AAIXC,QAAAA,oBAAoB,EAAE;AAJX,OAAb;AAMD;;;SAED,eAAwB;AACtB,UAAOhB,SAAP,GAAoB,KAAKa,KAAzB,CAAOb,SAAP;AACA,aAAOA,SAAS,KAAK,IAAd,IAAsBA,SAAS,CAACiB,QAAV,EAA7B;AACD;;;WAED,iCAAkE;AAAA,UAA/CC,WAA+C,QAA/CA,WAA+C;AAChE,aAAOA,WAAW,CAACC,gBAAnB;AACD;;;WAED,4BAA0E;AAAA,UAA7DT,KAA6D,SAA7DA,KAA6D;AAAA,UAAtDU,QAAsD,SAAtDA,QAAsD;AAAA,UAA5CF,WAA4C,SAA5CA,WAA4C;;AACxE,UAAIR,KAAK,CAACd,IAAN,IAAcc,KAAK,CAACd,IAAN,KAAewB,QAAQ,CAACxB,IAA1C,EAAgD;AAE9C,aAAKyB,YAAL,CAAkBX,KAAK,CAACd,IAAxB;AACD;;AAED,UAAIsB,WAAW,CAACI,eAAhB,EAAiC;AAC/B,YAAOP,eAAP,GAA0B,KAAKF,KAA/B,CAAOE,eAAP;AACA,YAAMQ,eAAe,GAAGC,MAAM,CAACC,IAAP,CAAYV,eAAZ,EAA6BW,MAArD;;AACA,YAAIH,eAAJ,EAAqB;AACnB,eAAKI,cAAL,CAAoBZ,eAApB;;AACA,eAAKF,KAAL,CAAWG,oBAAX,GAAkCD,eAAlC;AACA,eAAKF,KAAL,CAAWE,eAAX,GAA6B,EAA7B;AACD;AACF;;AACD,UAAIG,WAAW,CAACU,YAAhB,EAA8B;AAC5B,YAAOd,QAAP,GAAmB,KAAKD,KAAxB,CAAOC,QAAP;;AACA,aAAK,IAAMe,GAAX,IAAkBf,QAAlB,EAA4B;AAC1BA,UAAAA,QAAQ,CAACe,GAAD,CAAR,CAAcC,WAAd,GAA4B,IAA5B;AACD;AACF;AACF;;;WAED,0BAAiBC,QAAjB,EAA2C;AACzC,wBAAgD,KAAKlB,KAArD;AAAA,UAAOE,eAAP,eAAOA,eAAP;AAAA,UAAwBC,oBAAxB,eAAwBA,oBAAxB;AACA,WAAKgB,aAAL,CAAoBD,QAApB,GAA+BA,QAA/B;AAEAhB,MAAAA,eAAe,CAACgB,QAAQ,CAACE,EAAV,CAAf,GAA+BF,QAA/B;AACA,UAAMG,YAAY,GAAGlB,oBAAH,aAAGA,oBAAH,uBAAGA,oBAAoB,CAAGe,QAAQ,CAACE,EAAZ,CAAzC;;AACA,UAAI,CAACC,YAAD,IAAiB,CAACH,QAAQ,CAACI,MAAT,CAAgBD,YAAhB,CAAtB,EAAqD;AACnD,aAAKE,cAAL,CAAoB;AAACd,UAAAA,eAAe,EAAE;AAAlB,SAApB;AACA,aAAKe,cAAL;AACD;AACF;;;WAED,+BAA0D;AAAA,UAA1CC,IAA0C,SAA1CA,IAA0C;AAAA,UAApCC,WAAoC,SAApCA,WAAoC;AACxD,UAAMC,UAAU,GAAGD,WAAW,IAAKA,WAAW,CAAC7B,KAAb,CAA2BL,IAA7D;;AACA,UAAIiC,IAAI,CAACG,MAAT,EAAiB;AACfH,QAAAA,IAAI,CAACI,MAAL,GAAcF,UAAd;AACD;;AACAF,MAAAA,IAAD,CAAcE,UAAd,GAA2BA,UAA3B;AAEA,aAAOF,IAAP;AACD;;;WAED,+BAA0D;AAAA,UAA1CK,KAA0C,SAA1CA,KAA0C;AAAA,UAAnCZ,QAAmC,SAAnCA,QAAmC;AAExD,kBAAeY,KAAK,CAACjC,KAArB;AAAA,UAAOL,IAAP,SAAOA,IAAP;AACA,UAAWuC,UAAX,GAAyBb,QAAzB,CAAOE,EAAP;AACA,aAAO5B,IAAI,CAACwC,QAAL,IAAiBxC,IAAI,CAACyC,WAAL,CAAiBC,QAAjB,CAA0BH,UAA1B,CAAxB;AACD;;;WAED,8BAA+BN,IAA/B,EAAwD;AACtD,UAAME,UAAU,GAAIF,IAAD,CAAcE,UAAjC;AACA,UAAMQ,UAAU,GAAG,KAAKnC,KAAL,CAAWC,QAAX,CAAoB0B,UAApB,aAAoBA,UAApB,uBAAoBA,UAAU,CAAEP,EAAhC,CAAnB;;AACA,UAAIe,UAAU,IAAIA,UAAU,CAACL,KAA7B,EAAoC;AAClCK,QAAAA,UAAU,CAACL,KAAX,CAAiBM,mBAAjB,CAAqCX,IAArC;AACD;AACF;;;;oFAED,iBAA2BY,UAA3B;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,wCAC6B,KAAKxC,KADlC,CACSyC,WADT,EACSA,WADT,sCACuB,EADvB;AAKMtD,gBAAAA,MALN,GAKe,KAAKa,KAAL,CAAWb,MAAX,IAAqB,KAAKa,KAAL,CAAW0C,OAL/C;;AAME,oBAAIC,KAAK,CAACC,OAAN,CAAczD,MAAd,CAAJ,EAA2B;AACzBA,kBAAAA,MAAM,GAAGA,MAAM,CAAC,CAAD,CAAf;AACD;;AAEK0D,gBAAAA,OAVR,GAUkB;AAACJ,kBAAAA,WAAW,oBAAMA,WAAN;AAAZ,iBAVlB;AAWMK,gBAAAA,gBAXN,GAWyBN,UAXzB;;AAAA,qBAYMrD,MAAM,CAAC4D,OAZb;AAAA;AAAA;AAAA;;AAAA;AAAA,uBAaiC5D,MAAM,CAAC4D,OAAP,CAAeP,UAAf,EAA2BC,WAA3B,CAbjC;;AAAA;AAaUO,gBAAAA,cAbV;;AAcI,oBAAIA,cAAc,CAACnD,GAAnB,EAAwB;AACtBiD,kBAAAA,gBAAgB,GAAGE,cAAc,CAACnD,GAAlC;AACD;;AAED,oBAAImD,cAAc,CAACC,OAAnB,EAA4B;AAC1BJ,kBAAAA,OAAO,CAACJ,WAAR,CAAoBS,KAApB,mCACKL,OAAO,CAACJ,WAAR,CAAoBS,KADzB;AAEED,oBAAAA,OAAO,EAAED,cAAc,CAACC;AAF1B;AAID;;AACDnC,gBAAAA,MAAM,CAACqC,MAAP,CAAcN,OAAd,EAAuBG,cAAvB;;AAxBJ;AAAA;AAAA,uBA0B4B,iBAAKF,gBAAL,EAAuB3D,MAAvB,EAA+B0D,OAAO,CAACJ,WAAvC,CA1B5B;;AAAA;AA0BQW,gBAAAA,WA1BR;AA4BQ9D,gBAAAA,SA5BR,GA4BoB,IAAI+D,gBAAJ,CAAcD,WAAd;AAChB7D,kBAAAA,UAAU,EAAE,KAAK+D,WAAL,CAAiBC,IAAjB,CAAsB,IAAtB,CADI;AAEhB9D,kBAAAA,YAAY,EAAE,KAAK+D,aAAL,CAAmBD,IAAnB,CAAwB,IAAxB,CAFE;AAGhB7D,kBAAAA,WAAW,EAAE,KAAKM,KAAL,CAAWN;AAHR,mBAIbmD,OAJa,EA5BpB;AAmCE,qBAAKY,QAAL,CAAc;AACZnE,kBAAAA,SAAS,EAATA,SADY;AAEZc,kBAAAA,QAAQ,EAAE;AAFE,iBAAd;;AAKA,qBAAKa,cAAL,CAAoB,KAAKd,KAAL,CAAWE,eAA/B;;AACA,qBAAKL,KAAL,CAAWX,aAAX,CAAyBC,SAAzB;;AAzCF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WA4CA,qBAAoBE,UAApB,EAA8C;AAC5C,UAAOc,oBAAP,GAA+B,KAAKH,KAApC,CAAOG,oBAAP;AACA,WAAKN,KAAL,CAAWT,UAAX,CAAsBC,UAAtB;;AACA,WAAKyB,cAAL,CAAoBX,oBAApB;;AACA,WAAKqB,cAAL;AACD;;;WAED,uBAAsBnC,UAAtB,EAAgD;AAE9C,aAAO,KAAKW,KAAL,CAAWC,QAAX,CAAoBZ,UAAU,CAAC+B,EAA/B,CAAP;AACA,WAAKvB,KAAL,CAAWP,YAAX,CAAwBD,UAAxB;AACD;;;WAED,wBAAuBkE,SAAvB,EAAiF;AAAA;;AAC/E,UAAI,CAACA,SAAL,EAAgB;AACd;AACD;;AACD,UAAOpE,SAAP,GAAoB,KAAKa,KAAzB,CAAOb,SAAP;AACA,UAAOqE,QAAP,GAAmB,KAAKC,OAAxB,CAAOD,QAAP;AACA,UAAM9C,eAAe,GAAGC,MAAM,CAACC,IAAP,CAAY2C,SAAZ,EAAuB1C,MAA/C;;AACA,UAAI,CAAC2C,QAAD,IAAa,CAAC9C,eAAd,IAAiC,CAACvB,SAAtC,EAAiD;AAC/C;AACD;;AAGDA,MAAAA,SAAS,CAACuE,WAAV,CAAsB/C,MAAM,CAACgD,MAAP,CAAcJ,SAAd,CAAtB,EAAgDK,IAAhD,CAAqD,UAAAC,WAAW,EAAI;AAClE,YAAMC,cAAc,GAAG,MAAI,CAAC9D,KAAL,CAAW6D,WAAX,KAA2BA,WAAlD;;AACA,YAAIC,cAAJ,EAAoB;AAClB,UAAA,MAAI,CAACR,QAAL,CAAc;AAACO,YAAAA,WAAW,EAAXA;AAAD,WAAd;AACD;AACF,OALD;AAMD;;;WAED,sBACExE,UADF,EAEE0E,QAFF,EAG6E;AAC3E,UAAI,CAAC1E,UAAU,CAAC2E,OAAhB,EAAyB;AACvB,eAAO,IAAP;AACD;;AAED,cAAQ3E,UAAU,CAACT,IAAnB;AACE,aAAKqF,iBAAUC,UAAf;AACE,iBAAO,KAAKC,oBAAL,CAA0B9E,UAA1B,EAAsC0E,QAAtC,CAAP;;AACF,aAAKE,iBAAUG,UAAf;AACE,iBAAO,KAAKC,iBAAL,CAAuBhF,UAAvB,CAAP;;AACF,aAAK4E,iBAAUK,IAAf;AACE,iBAAO,KAAKC,oBAAL,CAA0BlF,UAA1B,EAAsC0E,QAAtC,CAAP;;AACF;AACE,gBAAM,IAAIS,KAAJ,uDAAyDnF,UAAU,CAAC2E,OAAX,CAAmBpF,IAA5E,EAAN;AARJ;AAUD;;;WAED,8BACES,UADF,EAEE0E,QAFF,EAGiC;AAC/B,gCACE1E,UAAU,CAAC2E,OADb;AAAA,UAAOS,UAAP,uBAAOA,UAAP;AAAA,UAAmBC,UAAnB,uBAAmBA,UAAnB;AAAA,UAA+BC,YAA/B,uBAA+BA,YAA/B;AAAA,UAA6CC,kBAA7C,uBAA6CA,kBAA7C;AAAA,UAAiEC,WAAjE,uBAAiEA,WAAjE;AAEA,UAAOC,SAAP,GAAqCL,UAArC,CAAOK,SAAP;AAAA,UAAkBC,OAAlB,GAAqCN,UAArC,CAAkBM,OAAlB;AAAA,UAA2BC,MAA3B,GAAqCP,UAArC,CAA2BO,MAA3B;;AAEA,UAAI,CAACF,SAAL,EAAgB;AACd,eAAO,IAAP;AACD;;AACD,UAAM/F,IAAI,GAAIgF,QAAQ,IAAIA,QAAQ,CAAClE,KAAT,CAAed,IAA5B,IAAqC;AAChDkG,QAAAA,MAAM,EAAE;AACNC,UAAAA,WAAW,EAAER;AADP,SADwC;AAIhDD,QAAAA,UAAU,EAAE;AACVU,UAAAA,QAAQ,EAAEL,SADA;AAEVM,UAAAA,MAAM,EAAEL,OAFE;AAGVM,UAAAA,OAAO,EAAEL;AAHC;AAJoC,OAAlD;AAWA,wBAAmC,KAAKnF,KAAxC;AAAA,UAAOf,SAAP,eAAOA,SAAP;AAAA,UAAkBH,aAAlB,eAAkBA,aAAlB;AACA,UAAM2G,aAAa,GAAG,KAAKC,gBAAL,CAAsB,YAAtB,EAAoCC,uBAApC,CAAtB;AACA,aAAO,IAAIF,aAAJ,CACL;AACExG,QAAAA,SAAS,EAATA;AADF,OADK,EAIL,KAAK2G,gBAAL,CAAsB;AACpBrE,QAAAA,EAAE,EAAE;AADgB,OAAtB,CAJK,EAOL;AACEA,QAAAA,EAAE,YAAK,KAAKA,EAAV,yBAA2B/B,UAAU,CAAC+B,EAAtC,CADJ;AAEE5B,QAAAA,IAAI,EAAEH,UAFR;AAGEN,QAAAA,IAAI,EAAJA,IAHF;AAIE2G,QAAAA,gBAAgB,EAAEC,yBAAkBC,aAJtC;AAKEC,QAAAA,gBAAgB,EAAEjB,kBALpB;AAMEC,QAAAA,WAAW,EAAXA,WANF;AAOEiB,QAAAA,QAAQ,EAAEnB,YAAY,IAAIhG,aAP5B;AAQEoH,QAAAA,OAAO,EAAE;AARX,OAPK,CAAP;AAkBD;;;WAED,2BAA0B1G,UAA1B,EAAsE;AACpE,iCAA2DA,UAAU,CAAC2E,OAAtE;AAAA,UAAOgC,IAAP,wBAAOA,IAAP;AAAA,UAAaC,SAAb,wBAAaA,SAAb;AAAA,UAAwBrB,kBAAxB,wBAAwBA,kBAAxB;AAAA,UAA4CC,WAA5C,wBAA4CA,WAA5C;AAEA,UAAMS,aAAa,GAAG,KAAKC,gBAAL,CAAsB,YAAtB,EAAoCW,2BAApC,CAAtB;AAEA,aAAO,IAAIZ,aAAJ,CACL;AACEa,QAAAA,SAAS,EAAE;AADb,OADK,EAIL,KAAKV,gBAAL,CAAsB;AACpBrE,QAAAA,EAAE,EAAE;AADgB,OAAtB,CAJK,EAOL;AACEA,QAAAA,EAAE,YAAK,KAAKA,EAAV,yBAA2B/B,UAAU,CAAC+B,EAAtC,CADJ;AAEE5B,QAAAA,IAAI,EAAEH,UAFR;AAGEN,QAAAA,IAAI,EAAEkH,SAAS,IAAIxH,WAHrB;AAIE2H,QAAAA,UAAU,EAAEJ,IAJd;AAMEN,QAAAA,gBAAgB,EAAEC,yBAAkBC,aANtC;AAOEC,QAAAA,gBAAgB,EAAEjB,kBAPpB;AAQEC,QAAAA,WAAW,EAAXA,WARF;AASEwB,QAAAA,kBAAkB,EAAE,4BAAAC,QAAQ;AAAA,iBAAIA,QAAQ,CAACzB,WAAb;AAAA,SAT9B;AAUE0B,QAAAA,WAAW,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAVf;AAWER,QAAAA,OAAO,EAAE;AAXX,OAPK,CAAP;AAqBD;;;WAED,8BAA6B1G,UAA7B,EAAiD0E,QAAjD,EAAgG;AAC9F,UAAMC,OAAO,GAAG3E,UAAU,CAAC2E,OAA3B;AACA,UACES,UADF,GAQIT,OARJ,CACES,UADF;AAAA,UAEE+B,OAFF,GAQIxC,OARJ,CAEEwC,OAFF;AAAA,UAGE3B,WAHF,GAQIb,OARJ,CAGEa,WAHF;AAAA,UAIED,kBAJF,GAQIZ,OARJ,CAIEY,kBAJF;AAAA,kCAQIZ,OARJ,CAKE0B,gBALF;AAAA,UAKEA,gBALF,sCAKqBC,yBAAkBC,aALvC;AAAA,UAMEa,QANF,GAQIzC,OARJ,CAMEyC,QANF;AAAA,UAOEC,UAPF,GAQI1C,OARJ,CAOE0C,UAPF;AASA,UAAO/G,aAAP,GAAwB,KAAKE,KAA7B,CAAOF,aAAP;AAEA,UAAMgH,QAAQ,GACX5C,QAAQ,IAAIA,QAAQ,CAAClE,KAAT,CAAe+G,IAA5B,IACA,IAAIC,cAAJ,CAAa;AACXC,QAAAA,QAAQ,GADG;AAEXrC,QAAAA,UAAU,EAAEsC,eAAe,CAACtC,UAAD,CAFhB;AAGX+B,QAAAA,OAAO,EAAPA;AAHW,OAAb,CAFF;AAQA,UAAMlB,aAAa,GAAG,KAAKC,gBAAL,CAAsB,MAAtB,EAA8ByB,kBAA9B,CAAtB;AAEA,aAAO,IAAI1B,aAAJ,CACL,KAAKG,gBAAL,CAAsB;AACpBrE,QAAAA,EAAE,EAAE;AADgB,OAAtB,CADK,EAIL;AACEA,QAAAA,EAAE,YAAK,KAAKA,EAAV,mBAAqB/B,UAAU,CAAC+B,EAAhC,CADJ;AAEE5B,QAAAA,IAAI,EAAEH,UAFR;AAGEuH,QAAAA,IAAI,EAAED,QAHR;AAIE5H,QAAAA,IAAI,EAAEN,WAJR;AAKEqH,QAAAA,QAAQ,EAAEnG,aAAa,CAACN,UAAD,CALzB;AAME4H,QAAAA,WAAW,EAAER,QANf;AAOE5B,QAAAA,WAAW,EAAXA,WAPF;AAQEgB,QAAAA,gBAAgB,EAAEjB,kBARpB;AASEc,QAAAA,gBAAgB,EAAhBA,gBATF;AAUEgB,QAAAA,UAAU,EAAVA,UAVF;AAWEX,QAAAA,OAAO,EAAE;AAXX,OAJK,CAAP;AAkBD;;;WAED,wBAA0C;AAAA;;AACxC,yBAA8B,KAAK/F,KAAnC;AAAA,UAAOb,SAAP,gBAAOA,SAAP;AAAA,UAAkBc,QAAlB,gBAAkBA,QAAlB;;AACA,UAAI,CAACd,SAAL,EAAgB;AACd,eAAO,IAAP;AACD;;AAGD,aAAQA,SAAS,CAAC+H,KAAX,CACJC,GADI,CACA,UAAA3H,IAAI,EAAI;AACX,YAAM2C,UAAU,GAAIlC,QAAQ,CAACT,IAAI,CAAC4B,EAAN,CAAR,GAAoBnB,QAAQ,CAACT,IAAI,CAAC4B,EAAN,CAAR,IAAqB;AAAC5B,UAAAA,IAAI,EAAJA;AAAD,SAA7D;AACA,YAAKsC,KAAL,GAAcK,UAAd,CAAKL,KAAL;;AACA,YAAItC,IAAI,CAACwC,QAAT,EAAmB;AAEjB,cAAI,CAACF,KAAL,EAAY;AAEVA,YAAAA,KAAK,GAAG,MAAI,CAACsF,YAAL,CAAkB5H,IAAlB,CAAR;AACD,WAHD,MAGO,IAAI2C,UAAU,CAAClB,WAAf,EAA4B;AAEjCa,YAAAA,KAAK,GAAG,MAAI,CAACsF,YAAL,CAAkB5H,IAAlB,EAAwBsC,KAAxB,CAAR;AACAK,YAAAA,UAAU,CAAClB,WAAX,GAAyB,KAAzB;AACD;AACF;;AACDkB,QAAAA,UAAU,CAACL,KAAX,GAAmBA,KAAnB;AACA,eAAOA,KAAP;AACD,OAjBI,EAkBJuF,MAlBI,CAkBGC,OAlBH,CAAP;AAmBD;;;EA9UgFC,qB;;;8BAA9D3H,W,kBAGGlB,Y;8BAHHkB,W,eAIA,a;;AA6UrB,SAASmH,eAAT,CAAyBS,iBAAzB,EAA4E;AAC1E,MAAM/C,UAA0B,GAAG,EAAnC;AACAA,EAAAA,UAAU,CAACK,SAAX,mCACK0C,iBAAiB,CAAC1C,SADvB;AAEEjG,IAAAA,KAAK,EAAE,IAAI4I,YAAJ,CAAiBD,iBAAiB,CAAC1C,SAAlB,CAA4BjG,KAA7C;AAFT;;AAIA,MAAI2I,iBAAiB,CAACzC,OAAtB,EAA+B;AAC7BN,IAAAA,UAAU,CAACM,OAAX,GAAqByC,iBAAiB,CAACzC,OAAvC;AACD;;AACD,MAAIyC,iBAAiB,CAACE,SAAtB,EAAiC;AAC/BjD,IAAAA,UAAU,CAACiD,SAAX,GAAuBF,iBAAiB,CAACE,SAAzC;AACD;;AACD,MAAIF,iBAAiB,CAACxC,MAAtB,EAA8B;AAC5BP,IAAAA,UAAU,CAACO,MAAX,GAAoBwC,iBAAiB,CAACxC,MAAtC;AACD;;AACD,MAAIwC,iBAAiB,CAACG,SAAtB,EAAiC;AAC/BlD,IAAAA,UAAU,CAACkD,SAAX,GAAuBH,iBAAiB,CAACG,SAAzC;AACD;;AACD,SAAOlD,UAAP;AACD","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Geometry} from '@luma.gl/core';\n\nimport {\n Accessor,\n Color,\n CompositeLayer,\n CompositeLayerProps,\n COORDINATE_SYSTEM,\n FilterContext,\n GetPickingInfoParams,\n Layer,\n LayersList,\n log,\n PickingInfo,\n UpdateParameters,\n Viewport,\n DefaultProps\n} from '@deck.gl/core';\nimport {PointCloudLayer} from '@deck.gl/layers';\nimport {ScenegraphLayer} from '@deck.gl/mesh-layers';\nimport {default as MeshLayer} from '../mesh-layer/mesh-layer';\n\nimport {load} from '@loaders.gl/core';\nimport {MeshAttributes} from '@loaders.gl/schema';\nimport {Tileset3D, Tile3D, TILE_TYPE} from '@loaders.gl/tiles';\nimport {Tiles3DLoader} from '@loaders.gl/3d-tiles';\n\nconst SINGLE_DATA = [0];\n\nconst defaultProps: DefaultProps<Tile3DLayerProps> = {\n getPointColor: {type: 'accessor', value: [0, 0, 0, 255]},\n pointSize: 1.0,\n\n // Disable async data loading (handling it in _loadTileSet)\n data: '',\n loader: Tiles3DLoader,\n\n onTilesetLoad: {type: 'function', value: tileset3d => {}},\n onTileLoad: {type: 'function', value: tileHeader => {}},\n onTileUnload: {type: 'function', value: tileHeader => {}},\n onTileError: {type: 'function', value: (tile, message, url) => {}},\n _getMeshColor: {type: 'function', value: tileHeader => [255, 255, 255]}\n};\n\n/** All properties supported by Tile3DLayer */\nexport type Tile3DLayerProps<DataT = any> = _Tile3DLayerProps<DataT> & CompositeLayerProps;\n\n/** Props added by the Tile3DLayer */\ntype _Tile3DLayerProps<DataT> = {\n data: string;\n /** Color Accessor for point clouds. **/\n getPointColor?: Accessor<DataT, Color>;\n\n /** Global radius of all points in pixels. **/\n pointSize?: number;\n\n /** A loader which is used to decode the fetched tiles.\n * @deprecated Use `loaders` instead\n */\n loader?: typeof Tiles3DLoader;\n\n /** Called when Tileset JSON file is loaded. **/\n onTilesetLoad?: (tile: Tileset3D) => void;\n\n /** Called when a tile in the tileset hierarchy is loaded. **/\n onTileLoad?: (tile: Tile3D) => void;\n\n /** Called when a tile is unloaded. **/\n onTileUnload?: (tile: Tile3D) => void;\n\n /** Called when a tile fails to load. **/\n onTileError?: (tile: Tile3D, url: string, message: string) => void;\n\n /** (Experimental) Accessor to change color of mesh based on properties. **/\n _getMeshColor?: (tile: Tile3D) => Color;\n};\n\n/** Render 3d tiles data formatted according to the [3D Tiles Specification](https://www.opengeospatial.org/standards/3DTiles) and [`ESRI I3S`](https://github.com/Esri/i3s-spec) */\nexport default class Tile3DLayer<DataT = any, ExtraPropsT extends {} = {}> extends CompositeLayer<\n ExtraPropsT & Required<_Tile3DLayerProps<DataT>>\n> {\n static defaultProps = defaultProps;\n static layerName = 'Tile3DLayer';\n\n state!: {\n activeViewports: {};\n frameNumber?: number;\n lastUpdatedViewports: {[viewportId: string]: Viewport} | null;\n layerMap: {[layerId: string]: any};\n tileset3d: Tileset3D | null;\n };\n\n initializeState() {\n if ('onTileLoadFail' in this.props) {\n log.removed('onTileLoadFail', 'onTileError')();\n }\n // prop verification\n this.state = {\n layerMap: {},\n tileset3d: null,\n activeViewports: {},\n lastUpdatedViewports: null\n };\n }\n\n get isLoaded(): boolean {\n const {tileset3d} = this.state;\n return tileset3d !== null && tileset3d.isLoaded();\n }\n\n shouldUpdateState({changeFlags}: UpdateParameters<this>): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({props, oldProps, changeFlags}: UpdateParameters<this>): void {\n if (props.data && props.data !== oldProps.data) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._loadTileset(props.data);\n }\n\n if (changeFlags.viewportChanged) {\n const {activeViewports} = this.state;\n const viewportsNumber = Object.keys(activeViewports).length;\n if (viewportsNumber) {\n this._updateTileset(activeViewports);\n this.state.lastUpdatedViewports = activeViewports;\n this.state.activeViewports = {};\n }\n }\n if (changeFlags.propsChanged) {\n const {layerMap} = this.state;\n for (const key in layerMap) {\n layerMap[key].needsUpdate = true;\n }\n }\n }\n\n activateViewport(viewport: Viewport): void {\n const {activeViewports, lastUpdatedViewports} = this.state;\n this.internalState!.viewport = viewport;\n\n activeViewports[viewport.id] = viewport;\n const lastViewport = lastUpdatedViewports?.[viewport.id];\n if (!lastViewport || !viewport.equals(lastViewport)) {\n this.setChangeFlags({viewportChanged: true});\n this.setNeedsUpdate();\n }\n }\n\n getPickingInfo({info, sourceLayer}: GetPickingInfoParams) {\n const sourceTile = sourceLayer && (sourceLayer.props as any).tile;\n if (info.picked) {\n info.object = sourceTile;\n }\n (info as any).sourceTile = sourceTile;\n\n return info;\n }\n\n filterSubLayer({layer, viewport}: FilterContext): boolean {\n // All sublayers will have a tile prop\n const {tile} = layer.props as unknown as {tile: Tile3D};\n const {id: viewportId} = viewport;\n return tile.selected && tile.viewportIds.includes(viewportId);\n }\n\n protected _updateAutoHighlight(info: PickingInfo): void {\n const sourceTile = (info as any).sourceTile;\n const layerCache = this.state.layerMap[sourceTile?.id];\n if (layerCache && layerCache.layer) {\n layerCache.layer.updateAutoHighlight(info);\n }\n }\n\n private async _loadTileset(tilesetUrl) {\n const {loadOptions = {}} = this.props;\n\n // TODO: deprecate `loader` in v9.0\n // @ts-ignore\n let loader = this.props.loader || this.props.loaders;\n if (Array.isArray(loader)) {\n loader = loader[0];\n }\n\n const options = {loadOptions: {...loadOptions}};\n let actualTilesetUrl = tilesetUrl;\n if (loader.preload) {\n const preloadOptions = await loader.preload(tilesetUrl, loadOptions);\n if (preloadOptions.url) {\n actualTilesetUrl = preloadOptions.url;\n }\n\n if (preloadOptions.headers) {\n options.loadOptions.fetch = {\n ...options.loadOptions.fetch,\n headers: preloadOptions.headers\n };\n }\n Object.assign(options, preloadOptions);\n }\n const tilesetJson = await load(actualTilesetUrl, loader, options.loadOptions);\n\n const tileset3d = new Tileset3D(tilesetJson, {\n onTileLoad: this._onTileLoad.bind(this),\n onTileUnload: this._onTileUnload.bind(this),\n onTileError: this.props.onTileError,\n ...options\n });\n\n this.setState({\n tileset3d,\n layerMap: {}\n });\n\n this._updateTileset(this.state.activeViewports);\n this.props.onTilesetLoad(tileset3d);\n }\n\n private _onTileLoad(tileHeader: Tile3D): void {\n const {lastUpdatedViewports} = this.state;\n this.props.onTileLoad(tileHeader);\n this._updateTileset(lastUpdatedViewports);\n this.setNeedsUpdate();\n }\n\n private _onTileUnload(tileHeader: Tile3D): void {\n // Was cleaned up from tileset cache. We no longer need to track it.\n delete this.state.layerMap[tileHeader.id];\n this.props.onTileUnload(tileHeader);\n }\n\n private _updateTileset(viewports: {[viewportId: string]: Viewport} | null): void {\n if (!viewports) {\n return;\n }\n const {tileset3d} = this.state;\n const {timeline} = this.context;\n const viewportsNumber = Object.keys(viewports).length;\n if (!timeline || !viewportsNumber || !tileset3d) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tileset3d.selectTiles(Object.values(viewports)).then(frameNumber => {\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n if (tilesetChanged) {\n this.setState({frameNumber});\n }\n });\n }\n\n private _getSubLayer(\n tileHeader: Tile3D,\n oldLayer?: Layer\n ): MeshLayer<DataT> | PointCloudLayer<DataT> | ScenegraphLayer<DataT> | null {\n if (!tileHeader.content) {\n return null;\n }\n\n switch (tileHeader.type) {\n case TILE_TYPE.POINTCLOUD:\n return this._makePointCloudLayer(tileHeader, oldLayer as PointCloudLayer<DataT>);\n case TILE_TYPE.SCENEGRAPH:\n return this._make3DModelLayer(tileHeader);\n case TILE_TYPE.MESH:\n return this._makeSimpleMeshLayer(tileHeader, oldLayer as MeshLayer<DataT>);\n default:\n throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);\n }\n }\n\n private _makePointCloudLayer(\n tileHeader: Tile3D,\n oldLayer?: PointCloudLayer<DataT>\n ): PointCloudLayer<DataT> | null {\n const {attributes, pointCount, constantRGBA, cartographicOrigin, modelMatrix} =\n tileHeader.content;\n const {positions, normals, colors} = attributes;\n\n if (!positions) {\n return null;\n }\n const data = (oldLayer && oldLayer.props.data) || {\n header: {\n vertexCount: pointCount\n },\n attributes: {\n POSITION: positions,\n NORMAL: normals,\n COLOR_0: colors\n }\n };\n\n const {pointSize, getPointColor} = this.props;\n const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);\n return new SubLayerClass(\n {\n pointSize\n },\n this.getSubLayerProps({\n id: 'pointcloud'\n }),\n {\n id: `${this.id}-pointcloud-${tileHeader.id}`,\n tile: tileHeader,\n data,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getColor: constantRGBA || getPointColor,\n _offset: 0\n }\n );\n }\n\n private _make3DModelLayer(tileHeader: Tile3D): ScenegraphLayer<DataT> {\n const {gltf, instances, cartographicOrigin, modelMatrix} = tileHeader.content;\n\n const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);\n\n return new SubLayerClass(\n {\n _lighting: 'pbr'\n },\n this.getSubLayerProps({\n id: 'scenegraph'\n }),\n {\n id: `${this.id}-scenegraph-${tileHeader.id}`,\n tile: tileHeader,\n data: instances || SINGLE_DATA,\n scenegraph: gltf,\n\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,\n coordinateOrigin: cartographicOrigin,\n modelMatrix,\n getTransformMatrix: instance => instance.modelMatrix,\n getPosition: [0, 0, 0],\n _offset: 0\n }\n );\n }\n\n private _makeSimpleMeshLayer(tileHeader: Tile3D, oldLayer?: MeshLayer<DataT>): MeshLayer<DataT> {\n const content = tileHeader.content;\n const {\n attributes,\n indices,\n modelMatrix,\n cartographicOrigin,\n coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS,\n material,\n featureIds\n } = content;\n const {_getMeshColor} = this.props;\n\n const geometry =\n (oldLayer && oldLayer.props.mesh) ||\n new Geometry({\n drawMode: GL.TRIANGLES,\n attributes: getMeshGeometry(attributes),\n indices\n });\n\n const SubLayerClass = this.getSubLayerClass('mesh', MeshLayer);\n\n return new SubLayerClass(\n this.getSubLayerProps({\n id: 'mesh'\n }),\n {\n id: `${this.id}-mesh-${tileHeader.id}`,\n tile: tileHeader,\n mesh: geometry,\n data: SINGLE_DATA,\n getColor: _getMeshColor(tileHeader),\n pbrMaterial: material,\n modelMatrix,\n coordinateOrigin: cartographicOrigin,\n coordinateSystem,\n featureIds,\n _offset: 0\n }\n );\n }\n\n renderLayers(): Layer | null | LayersList {\n const {tileset3d, layerMap} = this.state;\n if (!tileset3d) {\n return null;\n }\n\n // loaders.gl doesn't provide a type for tileset3d.tiles\n return (tileset3d.tiles as Tile3D[])\n .map(tile => {\n const layerCache = (layerMap[tile.id] = layerMap[tile.id] || {tile});\n let {layer} = layerCache;\n if (tile.selected) {\n // render selected tiles\n if (!layer) {\n // create layer\n layer = this._getSubLayer(tile);\n } else if (layerCache.needsUpdate) {\n // props have changed, rerender layer\n layer = this._getSubLayer(tile, layer);\n layerCache.needsUpdate = false;\n }\n }\n layerCache.layer = layer;\n return layer;\n })\n .filter(Boolean);\n }\n}\n\nfunction getMeshGeometry(contentAttributes: MeshAttributes): MeshAttributes {\n const attributes: MeshAttributes = {};\n attributes.positions = {\n ...contentAttributes.positions,\n value: new Float32Array(contentAttributes.positions.value)\n };\n if (contentAttributes.normals) {\n attributes.normals = contentAttributes.normals;\n }\n if (contentAttributes.texCoords) {\n attributes.texCoords = contentAttributes.texCoords;\n }\n if (contentAttributes.colors) {\n attributes.colors = contentAttributes.colors;\n }\n if (contentAttributes.uvRegions) {\n attributes.uvRegions = contentAttributes.uvRegions;\n }\n return attributes;\n}\n"],"file":"tile-3d-layer.js"}
@@ -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,