@loaders.gl/tiles 3.3.0-alpha.1 → 3.3.0-alpha.11

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 (124) hide show
  1. package/dist/dist.min.js +1031 -1433
  2. package/dist/es5/bundle.js +0 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/constants.js +2 -1
  5. package/dist/es5/constants.js.map +1 -1
  6. package/dist/es5/index.js +26 -36
  7. package/dist/es5/index.js.map +1 -1
  8. package/dist/es5/tileset/helpers/3d-tiles-options.js +0 -1
  9. package/dist/es5/tileset/helpers/3d-tiles-options.js.map +1 -1
  10. package/dist/es5/tileset/helpers/bounding-volume.js +7 -26
  11. package/dist/es5/tileset/helpers/bounding-volume.js.map +1 -1
  12. package/dist/es5/tileset/helpers/frame-state.js +45 -50
  13. package/dist/es5/tileset/helpers/frame-state.js.map +1 -1
  14. package/dist/es5/tileset/helpers/i3s-lod.js +0 -13
  15. package/dist/es5/tileset/helpers/i3s-lod.js.map +1 -1
  16. package/dist/es5/tileset/helpers/tiles-3d-lod.js +7 -16
  17. package/dist/es5/tileset/helpers/tiles-3d-lod.js.map +1 -1
  18. package/dist/es5/tileset/helpers/transform-utils.js +2 -11
  19. package/dist/es5/tileset/helpers/transform-utils.js.map +1 -1
  20. package/dist/es5/tileset/helpers/zoom.js +6 -16
  21. package/dist/es5/tileset/helpers/zoom.js.map +1 -1
  22. package/dist/es5/tileset/tile-3d.js +111 -98
  23. package/dist/es5/tileset/tile-3d.js.map +1 -1
  24. package/dist/es5/tileset/tileset-3d.js +130 -196
  25. package/dist/es5/tileset/tileset-3d.js.map +1 -1
  26. package/dist/es5/tileset/tileset-cache.js +1 -14
  27. package/dist/es5/tileset/tileset-cache.js.map +1 -1
  28. package/dist/es5/tileset/traversers/{i3s-frame-counter.js → i3s-pending-tiles-register.js} +21 -16
  29. package/dist/es5/tileset/traversers/i3s-pending-tiles-register.js.map +1 -0
  30. package/dist/es5/tileset/traversers/i3s-tile-manager.js +33 -27
  31. package/dist/es5/tileset/traversers/i3s-tile-manager.js.map +1 -1
  32. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js +10 -52
  33. package/dist/es5/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
  34. package/dist/es5/tileset/traversers/tileset-3d-traverser.js +0 -22
  35. package/dist/es5/tileset/traversers/tileset-3d-traverser.js.map +1 -1
  36. package/dist/es5/tileset/traversers/tileset-traverser.js +55 -78
  37. package/dist/es5/tileset/traversers/tileset-traverser.js.map +1 -1
  38. package/dist/es5/types.js.map +1 -1
  39. package/dist/es5/utils/doubly-linked-list-node.js +3 -7
  40. package/dist/es5/utils/doubly-linked-list-node.js.map +1 -1
  41. package/dist/es5/utils/doubly-linked-list.js +9 -17
  42. package/dist/es5/utils/doubly-linked-list.js.map +1 -1
  43. package/dist/es5/utils/managed-array.js +29 -30
  44. package/dist/es5/utils/managed-array.js.map +1 -1
  45. package/dist/esm/bundle.js +1 -1
  46. package/dist/esm/bundle.js.map +1 -1
  47. package/dist/esm/constants.js +3 -0
  48. package/dist/esm/constants.js.map +1 -1
  49. package/dist/esm/index.js.map +1 -1
  50. package/dist/esm/tileset/helpers/3d-tiles-options.js.map +1 -1
  51. package/dist/esm/tileset/helpers/bounding-volume.js +4 -10
  52. package/dist/esm/tileset/helpers/bounding-volume.js.map +1 -1
  53. package/dist/esm/tileset/helpers/frame-state.js +36 -20
  54. package/dist/esm/tileset/helpers/frame-state.js.map +1 -1
  55. package/dist/esm/tileset/helpers/i3s-lod.js +4 -4
  56. package/dist/esm/tileset/helpers/i3s-lod.js.map +1 -1
  57. package/dist/esm/tileset/helpers/tiles-3d-lod.js +11 -8
  58. package/dist/esm/tileset/helpers/tiles-3d-lod.js.map +1 -1
  59. package/dist/esm/tileset/helpers/transform-utils.js +1 -3
  60. package/dist/esm/tileset/helpers/transform-utils.js.map +1 -1
  61. package/dist/esm/tileset/helpers/zoom.js +3 -2
  62. package/dist/esm/tileset/helpers/zoom.js.map +1 -1
  63. package/dist/esm/tileset/tile-3d.js +47 -108
  64. package/dist/esm/tileset/tile-3d.js.map +1 -1
  65. package/dist/esm/tileset/tileset-3d.js +70 -163
  66. package/dist/esm/tileset/tileset-3d.js.map +1 -1
  67. package/dist/esm/tileset/tileset-cache.js +2 -18
  68. package/dist/esm/tileset/tileset-cache.js.map +1 -1
  69. package/dist/esm/tileset/traversers/i3s-pending-tiles-register.js +28 -0
  70. package/dist/esm/tileset/traversers/i3s-pending-tiles-register.js.map +1 -0
  71. package/dist/esm/tileset/traversers/i3s-tile-manager.js +34 -15
  72. package/dist/esm/tileset/traversers/i3s-tile-manager.js.map +1 -1
  73. package/dist/esm/tileset/traversers/i3s-tileset-traverser.js +8 -22
  74. package/dist/esm/tileset/traversers/i3s-tileset-traverser.js.map +1 -1
  75. package/dist/esm/tileset/traversers/tileset-3d-traverser.js +2 -9
  76. package/dist/esm/tileset/traversers/tileset-3d-traverser.js.map +1 -1
  77. package/dist/esm/tileset/traversers/tileset-traverser.js +20 -59
  78. package/dist/esm/tileset/traversers/tileset-traverser.js.map +1 -1
  79. package/dist/esm/types.js.map +1 -1
  80. package/dist/esm/utils/doubly-linked-list-node.js +1 -4
  81. package/dist/esm/utils/doubly-linked-list-node.js.map +1 -1
  82. package/dist/esm/utils/doubly-linked-list.js +2 -11
  83. package/dist/esm/utils/doubly-linked-list.js.map +1 -1
  84. package/dist/esm/utils/managed-array.js +4 -22
  85. package/dist/esm/utils/managed-array.js.map +1 -1
  86. package/dist/tileset/helpers/frame-state.d.ts +5 -8
  87. package/dist/tileset/helpers/frame-state.d.ts.map +1 -1
  88. package/dist/tileset/helpers/frame-state.js +27 -12
  89. package/dist/tileset/helpers/i3s-lod.d.ts.map +1 -1
  90. package/dist/tileset/tile-3d.d.ts +15 -4
  91. package/dist/tileset/tile-3d.d.ts.map +1 -1
  92. package/dist/tileset/tile-3d.js +15 -2
  93. package/dist/tileset/tileset-3d.d.ts +17 -4
  94. package/dist/tileset/tileset-3d.d.ts.map +1 -1
  95. package/dist/tileset/tileset-3d.js +47 -10
  96. package/dist/tileset/traversers/{i3s-frame-counter.d.ts → i3s-pending-tiles-register.d.ts} +7 -4
  97. package/dist/tileset/traversers/i3s-pending-tiles-register.d.ts.map +1 -0
  98. package/dist/tileset/traversers/{i3s-frame-counter.js → i3s-pending-tiles-register.js} +17 -8
  99. package/dist/tileset/traversers/i3s-tile-manager.d.ts +19 -1
  100. package/dist/tileset/traversers/i3s-tile-manager.d.ts.map +1 -1
  101. package/dist/tileset/traversers/i3s-tile-manager.js +32 -12
  102. package/dist/tileset/traversers/i3s-tileset-traverser.d.ts +1 -1
  103. package/dist/tileset/traversers/i3s-tileset-traverser.d.ts.map +1 -1
  104. package/dist/tileset/traversers/i3s-tileset-traverser.js +9 -9
  105. package/dist/tileset/traversers/tileset-traverser.d.ts +3 -3
  106. package/dist/tileset/traversers/tileset-traverser.d.ts.map +1 -1
  107. package/dist/tileset/traversers/tileset-traverser.js +4 -4
  108. package/dist/types.d.ts +30 -1
  109. package/dist/types.d.ts.map +1 -1
  110. package/package.json +4 -4
  111. package/src/tileset/helpers/frame-state.ts +47 -19
  112. package/src/tileset/helpers/i3s-lod.ts +3 -1
  113. package/src/tileset/tile-3d.ts +16 -2
  114. package/src/tileset/tileset-3d.ts +55 -16
  115. package/src/tileset/traversers/i3s-pending-tiles-register.ts +44 -0
  116. package/src/tileset/traversers/i3s-tile-manager.ts +47 -11
  117. package/src/tileset/traversers/i3s-tileset-traverser.ts +5 -5
  118. package/src/tileset/traversers/tileset-traverser.ts +2 -2
  119. package/src/types.ts +32 -0
  120. package/dist/es5/tileset/traversers/i3s-frame-counter.js.map +0 -1
  121. package/dist/esm/tileset/traversers/i3s-frame-counter.js +0 -23
  122. package/dist/esm/tileset/traversers/i3s-frame-counter.js.map +0 -1
  123. package/dist/tileset/traversers/i3s-frame-counter.d.ts.map +0 -1
  124. package/src/tileset/traversers/i3s-frame-counter.ts +0 -35
@@ -1,60 +1,34 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
-
14
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
-
18
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
-
20
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
-
22
14
  var _core = require("@math.gl/core");
23
-
24
15
  var _geospatial = require("@math.gl/geospatial");
25
-
26
16
  var _stats = require("@probe.gl/stats");
27
-
28
17
  var _loaderUtils = require("@loaders.gl/loader-utils");
29
-
30
18
  var _tilesetCache = _interopRequireDefault(require("./tileset-cache"));
31
-
32
19
  var _transformUtils = require("./helpers/transform-utils");
33
-
34
20
  var _frameState = require("./helpers/frame-state");
35
-
36
21
  var _zoom = require("./helpers/zoom");
37
-
38
22
  var _tile3d = _interopRequireDefault(require("./tile-3d"));
39
-
40
23
  var _tileset3dTraverser = _interopRequireDefault(require("./traversers/tileset-3d-traverser"));
41
-
42
24
  var _tilesetTraverser = _interopRequireDefault(require("./traversers/tileset-traverser"));
43
-
44
25
  var _i3sTilesetTraverser = _interopRequireDefault(require("./traversers/i3s-tileset-traverser"));
45
-
46
26
  var _constants = require("../constants");
47
-
48
27
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
49
-
50
28
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
51
-
52
29
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
53
-
54
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
55
-
56
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
57
-
30
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
58
32
  var DEFAULT_PROPS = {
59
33
  description: '',
60
34
  ellipsoid: _geospatial.Ellipsoid.WGS84,
@@ -83,6 +57,7 @@ var DEFAULT_PROPS = {
83
57
  basePath: '',
84
58
  i3s: {}
85
59
  };
60
+
86
61
  var TILES_TOTAL = 'Tiles In Tileset(s)';
87
62
  var TILES_IN_MEMORY = 'Tiles In Memory';
88
63
  var TILES_IN_VIEW = 'Tiles In View';
@@ -93,8 +68,8 @@ var TILES_UNLOADED = 'Tiles Unloaded';
93
68
  var TILES_LOAD_FAILED = 'Failed Tile Loads';
94
69
  var POINTS_COUNT = 'Points/Vertices';
95
70
  var TILES_GPU_MEMORY = 'Tile Memory Use';
96
-
97
71
  var Tileset3D = function () {
72
+
98
73
  function Tileset3D(json, options) {
99
74
  (0, _classCallCheck2.default)(this, Tileset3D);
100
75
  (0, _defineProperty2.default)(this, "options", void 0);
@@ -118,6 +93,12 @@ var Tileset3D = function () {
118
93
  (0, _defineProperty2.default)(this, "attributions", void 0);
119
94
  (0, _defineProperty2.default)(this, "credits", void 0);
120
95
  (0, _defineProperty2.default)(this, "stats", void 0);
96
+ (0, _defineProperty2.default)(this, "contentFormats", {
97
+ draco: false,
98
+ meshopt: false,
99
+ dds: false,
100
+ ktx2: false
101
+ });
121
102
  (0, _defineProperty2.default)(this, "traverseCounter", void 0);
122
103
  (0, _defineProperty2.default)(this, "geometricError", void 0);
123
104
  (0, _defineProperty2.default)(this, "selectedTiles", void 0);
@@ -144,6 +125,7 @@ var Tileset3D = function () {
144
125
  (0, _defineProperty2.default)(this, "frameStateData", void 0);
145
126
  (0, _defineProperty2.default)(this, "maximumMemoryUsage", void 0);
146
127
  (0, _loaderUtils.assert)(json);
128
+
147
129
  this.options = _objectSpread(_objectSpread({}, DEFAULT_PROPS), options);
148
130
  this.tileset = json;
149
131
  this.loader = json.loader;
@@ -152,6 +134,7 @@ var Tileset3D = function () {
152
134
  this.basePath = json.basePath || _loaderUtils.path.dirname(this.url);
153
135
  this.modelMatrix = this.options.modelMatrix;
154
136
  this.ellipsoid = this.options.ellipsoid;
137
+
155
138
  this.lodMetricType = json.lodMetricType;
156
139
  this.lodMetricValue = json.lodMetricValue;
157
140
  this.refine = json.root.refine;
@@ -162,6 +145,7 @@ var Tileset3D = function () {
162
145
  this.cartesianCenter = null;
163
146
  this.zoom = 1;
164
147
  this.boundingVolume = null;
148
+
165
149
  this.traverseCounter = 0;
166
150
  this.geometricError = 0;
167
151
  this._traverser = this._initializeTraverser();
@@ -171,7 +155,9 @@ var Tileset3D = function () {
171
155
  maxRequests: this.options.maxRequests
172
156
  });
173
157
  this._frameNumber = 0;
158
+
174
159
  this._pendingCount = 0;
160
+
175
161
  this._tiles = {};
176
162
  this.selectedTiles = [];
177
163
  this._emptyTiles = [];
@@ -180,12 +166,12 @@ var Tileset3D = function () {
180
166
  this.lastUpdatedVieports = null;
181
167
  this._queryParams = {};
182
168
  this._queryParamsString = '';
169
+
183
170
  this.maximumMemoryUsage = this.options.maximumMemoryUsage || 32;
184
171
  this.gpuMemoryUsageInBytes = 0;
185
172
  this.stats = new _stats.Stats({
186
173
  id: this.url
187
174
  });
188
-
189
175
  this._initializeStats();
190
176
 
191
177
  this._extensionsUsed = undefined;
@@ -199,12 +185,15 @@ var Tileset3D = function () {
199
185
 
200
186
  (0, _createClass2.default)(Tileset3D, [{
201
187
  key: "destroy",
202
- value: function destroy() {
188
+ value:
189
+ function destroy() {
203
190
  this._destroy();
204
191
  }
192
+
205
193
  }, {
206
194
  key: "isLoaded",
207
- value: function isLoaded() {
195
+ value:
196
+ function isLoaded() {
208
197
  return this._pendingCount === 0 && this._frameNumber !== 0 && this._requestedTiles.length === 0;
209
198
  }
210
199
  }, {
@@ -223,7 +212,6 @@ var Tileset3D = function () {
223
212
  if (!this._queryParamsString) {
224
213
  this._queryParamsString = getQueryParamString(this._queryParams);
225
214
  }
226
-
227
215
  return this._queryParamsString;
228
216
  }
229
217
  }, {
@@ -231,32 +219,37 @@ var Tileset3D = function () {
231
219
  value: function setProps(props) {
232
220
  this.options = _objectSpread(_objectSpread({}, this.options), props);
233
221
  }
222
+
234
223
  }, {
235
224
  key: "setOptions",
236
- value: function setOptions(options) {
225
+ value:
226
+ function setOptions(options) {
237
227
  this.options = _objectSpread(_objectSpread({}, this.options), options);
238
228
  }
229
+
239
230
  }, {
240
231
  key: "getTileUrl",
241
- value: function getTileUrl(tilePath) {
232
+ value:
233
+ function getTileUrl(tilePath) {
242
234
  var isDataUrl = tilePath.startsWith('data:');
243
-
244
235
  if (isDataUrl) {
245
236
  return tilePath;
246
237
  }
247
-
248
238
  return "".concat(tilePath).concat(this.queryParams);
249
239
  }
240
+
250
241
  }, {
251
242
  key: "hasExtension",
252
- value: function hasExtension(extensionName) {
243
+ value:
244
+ function hasExtension(extensionName) {
253
245
  return Boolean(this._extensionsUsed && this._extensionsUsed.indexOf(extensionName) > -1);
254
246
  }
247
+
255
248
  }, {
256
249
  key: "update",
257
- value: function update() {
250
+ value:
251
+ function update() {
258
252
  var _this = this;
259
-
260
253
  var viewports = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
261
254
  this.tilesetInitializationPromise.then(function () {
262
255
  if (!viewports && _this.lastUpdatedVieports) {
@@ -264,18 +257,19 @@ var Tileset3D = function () {
264
257
  } else {
265
258
  _this.lastUpdatedVieports = viewports;
266
259
  }
267
-
268
- _this.doUpdate(viewports);
260
+ if (viewports) {
261
+ _this.doUpdate(viewports);
262
+ }
269
263
  });
270
264
  }
265
+
271
266
  }, {
272
267
  key: "selectTiles",
273
268
  value: function () {
274
269
  var _selectTiles = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
275
270
  var _this2 = this;
276
-
277
271
  var viewports,
278
- _args = arguments;
272
+ _args = arguments;
279
273
  return _regenerator.default.wrap(function _callee$(_context) {
280
274
  while (1) {
281
275
  switch (_context.prev = _context.next) {
@@ -283,25 +277,22 @@ var Tileset3D = function () {
283
277
  viewports = _args.length > 0 && _args[0] !== undefined ? _args[0] : null;
284
278
  _context.next = 3;
285
279
  return this.tilesetInitializationPromise;
286
-
287
280
  case 3:
288
281
  if (viewports) {
289
282
  this.lastUpdatedVieports = viewports;
290
283
  }
291
-
292
284
  if (!this.updatePromise) {
293
285
  this.updatePromise = new Promise(function (resolve) {
294
286
  setTimeout(function () {
295
- _this2.doUpdate(_this2.lastUpdatedVieports);
296
-
287
+ if (_this2.lastUpdatedVieports) {
288
+ _this2.doUpdate(_this2.lastUpdatedVieports);
289
+ }
297
290
  resolve(_this2._frameNumber);
298
291
  _this2.updatePromise = null;
299
292
  }, _this2.options.debounceTime);
300
293
  });
301
294
  }
302
-
303
295
  return _context.abrupt("return", this.updatePromise);
304
-
305
296
  case 6:
306
297
  case "end":
307
298
  return _context.stop();
@@ -309,74 +300,58 @@ var Tileset3D = function () {
309
300
  }
310
301
  }, _callee, this);
311
302
  }));
312
-
313
303
  function selectTiles() {
314
304
  return _selectTiles.apply(this, arguments);
315
305
  }
316
-
317
306
  return selectTiles;
318
307
  }()
319
308
  }, {
320
309
  key: "doUpdate",
321
- value: function doUpdate() {
322
- var viewports = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
323
-
310
+ value:
311
+ function doUpdate(viewports) {
324
312
  if ('loadTiles' in this.options && !this.options.loadTiles) {
325
313
  return;
326
314
  }
327
-
328
315
  if (this.traverseCounter > 0) {
329
316
  return;
330
317
  }
331
-
332
- if (!(viewports instanceof Array)) {
333
- viewports = [viewports];
334
- }
335
-
318
+ var preparedViewports = viewports instanceof Array ? viewports : [viewports];
336
319
  this._cache.reset();
337
-
338
320
  this._frameNumber++;
339
- this.traverseCounter = viewports.length;
321
+ this.traverseCounter = preparedViewports.length;
340
322
  var viewportsToTraverse = [];
341
-
342
- var _iterator = _createForOfIteratorHelper(viewports),
343
- _step;
344
-
323
+ var _iterator = _createForOfIteratorHelper(preparedViewports),
324
+ _step;
345
325
  try {
346
326
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
347
327
  var viewport = _step.value;
348
328
  var _id = viewport.id;
349
-
350
329
  if (this._needTraverse(_id)) {
351
330
  viewportsToTraverse.push(_id);
352
331
  } else {
353
332
  this.traverseCounter--;
354
333
  }
355
334
  }
335
+
356
336
  } catch (err) {
357
337
  _iterator.e(err);
358
338
  } finally {
359
339
  _iterator.f();
360
340
  }
361
-
362
- var _iterator2 = _createForOfIteratorHelper(viewports),
363
- _step2;
364
-
341
+ var _iterator2 = _createForOfIteratorHelper(preparedViewports),
342
+ _step2;
365
343
  try {
366
344
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
367
345
  var _viewport = _step2.value;
368
346
  var _id2 = _viewport.id;
369
-
370
347
  if (!this.roots[_id2]) {
371
348
  this.roots[_id2] = this._initializeTileHeaders(this.tileset, null);
372
349
  }
373
-
374
350
  if (!viewportsToTraverse.includes(_id2)) {
375
351
  continue;
376
352
  }
377
353
 
378
354
  var frameState = (0, _frameState.getFrameState)(_viewport, this._frameNumber);
379
-
380
355
  this._traverser.traverse(this.roots[_id2], frameState, this.options);
381
356
  }
382
357
  } catch (err) {
@@ -385,26 +360,26 @@ var Tileset3D = function () {
385
360
  _iterator2.f();
386
361
  }
387
362
  }
363
+
388
364
  }, {
389
365
  key: "_needTraverse",
390
- value: function _needTraverse(viewportId) {
366
+ value:
367
+ function _needTraverse(viewportId) {
391
368
  var traverserId = viewportId;
392
-
393
369
  if (this.options.viewportTraversersMap) {
394
370
  traverserId = this.options.viewportTraversersMap[viewportId];
395
371
  }
396
-
397
372
  if (traverserId !== viewportId) {
398
373
  return false;
399
374
  }
400
-
401
375
  return true;
402
376
  }
377
+
403
378
  }, {
404
379
  key: "_onTraversalEnd",
405
- value: function _onTraversalEnd(frameState) {
380
+ value:
381
+ function _onTraversalEnd(frameState) {
406
382
  var id = frameState.viewport.id;
407
-
408
383
  if (!this.frameStateData[id]) {
409
384
  this.frameStateData[id] = {
410
385
  selectedTiles: [],
@@ -412,24 +387,18 @@ var Tileset3D = function () {
412
387
  _emptyTiles: []
413
388
  };
414
389
  }
415
-
416
390
  var currentFrameStateData = this.frameStateData[id];
417
391
  var selectedTiles = Object.values(this._traverser.selectedTiles);
418
-
419
392
  var _limitSelectedTiles = (0, _frameState.limitSelectedTiles)(selectedTiles, frameState, this.options.maximumTilesSelected),
420
- _limitSelectedTiles2 = (0, _slicedToArray2.default)(_limitSelectedTiles, 2),
421
- filteredSelectedTiles = _limitSelectedTiles2[0],
422
- unselectedTiles = _limitSelectedTiles2[1];
423
-
393
+ _limitSelectedTiles2 = (0, _slicedToArray2.default)(_limitSelectedTiles, 2),
394
+ filteredSelectedTiles = _limitSelectedTiles2[0],
395
+ unselectedTiles = _limitSelectedTiles2[1];
424
396
  currentFrameStateData.selectedTiles = filteredSelectedTiles;
425
-
426
397
  var _iterator3 = _createForOfIteratorHelper(unselectedTiles),
427
- _step3;
428
-
398
+ _step3;
429
399
  try {
430
400
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
431
401
  var _tile = _step3.value;
432
-
433
402
  _tile.unselect();
434
403
  }
435
404
  } catch (err) {
@@ -437,36 +406,31 @@ var Tileset3D = function () {
437
406
  } finally {
438
407
  _iterator3.f();
439
408
  }
440
-
441
409
  currentFrameStateData._requestedTiles = Object.values(this._traverser.requestedTiles);
442
410
  currentFrameStateData._emptyTiles = Object.values(this._traverser.emptyTiles);
443
411
  this.traverseCounter--;
444
-
445
412
  if (this.traverseCounter > 0) {
446
413
  return;
447
414
  }
448
-
449
415
  this._updateTiles();
450
416
  }
417
+
451
418
  }, {
452
419
  key: "_updateTiles",
453
- value: function _updateTiles() {
420
+ value:
421
+ function _updateTiles() {
454
422
  this.selectedTiles = [];
455
423
  this._requestedTiles = [];
456
424
  this._emptyTiles = [];
457
-
458
425
  for (var frameStateKey in this.frameStateData) {
459
426
  var frameStateDataValue = this.frameStateData[frameStateKey];
460
427
  this.selectedTiles = this.selectedTiles.concat(frameStateDataValue.selectedTiles);
461
428
  this._requestedTiles = this._requestedTiles.concat(frameStateDataValue._requestedTiles);
462
429
  this._emptyTiles = this._emptyTiles.concat(frameStateDataValue._emptyTiles);
463
430
  }
464
-
465
431
  this.selectedTiles = this.options.onTraversalComplete(this.selectedTiles);
466
-
467
432
  var _iterator4 = _createForOfIteratorHelper(this.selectedTiles),
468
- _step4;
469
-
433
+ _step4;
470
434
  try {
471
435
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
472
436
  var _tile2 = _step4.value;
@@ -477,11 +441,8 @@ var Tileset3D = function () {
477
441
  } finally {
478
442
  _iterator4.f();
479
443
  }
480
-
481
444
  this._loadTiles();
482
-
483
445
  this._unloadTiles();
484
-
485
446
  this._updateStats();
486
447
  }
487
448
  }, {
@@ -490,7 +451,6 @@ var Tileset3D = function () {
490
451
  if (oldSelectedTiles.length !== selectedTiles.length) {
491
452
  return true;
492
453
  }
493
-
494
454
  var set1 = new Set(oldSelectedTiles.map(function (t) {
495
455
  return t.id;
496
456
  }));
@@ -509,12 +469,10 @@ var Tileset3D = function () {
509
469
  key: "_loadTiles",
510
470
  value: function _loadTiles() {
511
471
  var _iterator5 = _createForOfIteratorHelper(this._requestedTiles),
512
- _step5;
513
-
472
+ _step5;
514
473
  try {
515
474
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
516
475
  var _tile3 = _step5.value;
517
-
518
476
  if (_tile3.contentUnloaded) {
519
477
  this._loadTile(_tile3);
520
478
  }
@@ -537,17 +495,13 @@ var Tileset3D = function () {
537
495
  value: function _updateStats() {
538
496
  var tilesRenderable = 0;
539
497
  var pointsRenderable = 0;
540
-
541
498
  var _iterator6 = _createForOfIteratorHelper(this.selectedTiles),
542
- _step6;
543
-
499
+ _step6;
544
500
  try {
545
501
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
546
502
  var _tile4 = _step6.value;
547
-
548
503
  if (_tile4.contentAvailable && _tile4.content) {
549
504
  tilesRenderable++;
550
-
551
505
  if (_tile4.content.pointCount) {
552
506
  pointsRenderable += _tile4.content.pointCount;
553
507
  } else {
@@ -560,7 +514,6 @@ var Tileset3D = function () {
560
514
  } finally {
561
515
  _iterator6.f();
562
516
  }
563
-
564
517
  this.stats.get(TILES_IN_VIEW).count = this.selectedTiles.length;
565
518
  this.stats.get(TILES_RENDERABLE).count = tilesRenderable;
566
519
  this.stats.get(POINTS_COUNT).count = pointsRenderable;
@@ -577,27 +530,20 @@ var Tileset3D = function () {
577
530
  _context2.next = 5;
578
531
  break;
579
532
  }
580
-
581
533
  this.calculateViewPropsI3S();
582
534
  _context2.next = 4;
583
535
  return tilesetJson.root;
584
-
585
536
  case 4:
586
537
  tilesetJson.root = _context2.sent;
587
-
588
538
  case 5:
589
539
  this.root = this._initializeTileHeaders(tilesetJson, null);
590
-
591
540
  if (this.type === _constants.TILESET_TYPE.TILES3D) {
592
541
  this._initializeTiles3DTileset(tilesetJson);
593
-
594
542
  this.calculateViewPropsTiles3D();
595
543
  }
596
-
597
544
  if (this.type === _constants.TILESET_TYPE.I3S) {
598
545
  this._initializeI3STileset();
599
546
  }
600
-
601
547
  case 8:
602
548
  case "end":
603
549
  return _context2.stop();
@@ -605,60 +551,54 @@ var Tileset3D = function () {
605
551
  }
606
552
  }, _callee2, this);
607
553
  }));
608
-
609
554
  function _initializeTileSet(_x) {
610
555
  return _initializeTileSet2.apply(this, arguments);
611
556
  }
612
-
613
557
  return _initializeTileSet;
614
558
  }()
615
559
  }, {
616
560
  key: "calculateViewPropsI3S",
617
- value: function calculateViewPropsI3S() {
561
+ value:
562
+ function calculateViewPropsI3S() {
618
563
  var _this$tileset$store;
619
-
620
564
  var fullExtent = this.tileset.fullExtent;
621
-
622
565
  if (fullExtent) {
623
566
  var xmin = fullExtent.xmin,
624
- xmax = fullExtent.xmax,
625
- ymin = fullExtent.ymin,
626
- ymax = fullExtent.ymax,
627
- zmin = fullExtent.zmin,
628
- zmax = fullExtent.zmax;
567
+ xmax = fullExtent.xmax,
568
+ ymin = fullExtent.ymin,
569
+ ymax = fullExtent.ymax,
570
+ zmin = fullExtent.zmin,
571
+ zmax = fullExtent.zmax;
629
572
  this.cartographicCenter = new _core.Vector3(xmin + (xmax - xmin) / 2, ymin + (ymax - ymin) / 2, zmin + (zmax - zmin) / 2);
630
573
  this.cartesianCenter = _geospatial.Ellipsoid.WGS84.cartographicToCartesian(this.cartographicCenter, new _core.Vector3());
631
574
  this.zoom = (0, _zoom.getZoomFromFullExtent)(fullExtent, this.cartographicCenter, this.cartesianCenter);
632
575
  return;
633
576
  }
634
-
635
577
  var extent = (_this$tileset$store = this.tileset.store) === null || _this$tileset$store === void 0 ? void 0 : _this$tileset$store.extent;
636
-
637
578
  if (extent) {
638
579
  var _extent = (0, _slicedToArray2.default)(extent, 4),
639
- _xmin = _extent[0],
640
- _ymin = _extent[1],
641
- _xmax = _extent[2],
642
- _ymax = _extent[3];
643
-
580
+ _xmin = _extent[0],
581
+ _ymin = _extent[1],
582
+ _xmax = _extent[2],
583
+ _ymax = _extent[3];
644
584
  this.cartographicCenter = new _core.Vector3(_xmin + (_xmax - _xmin) / 2, _ymin + (_ymax - _ymin) / 2, 0);
645
585
  this.cartesianCenter = _geospatial.Ellipsoid.WGS84.cartographicToCartesian(this.cartographicCenter, new _core.Vector3());
646
586
  this.zoom = (0, _zoom.getZoomFromExtent)(extent, this.cartographicCenter, this.cartesianCenter);
647
587
  return;
648
588
  }
649
-
650
589
  console.warn('Extent is not defined in the tileset header');
651
590
  this.cartographicCenter = new _core.Vector3();
652
591
  this.zoom = 1;
653
592
  return;
654
593
  }
594
+
655
595
  }, {
656
596
  key: "calculateViewPropsTiles3D",
657
- value: function calculateViewPropsTiles3D() {
597
+ value:
598
+ function calculateViewPropsTiles3D() {
658
599
  var root = this.root;
659
600
  (0, _loaderUtils.assert)(root);
660
601
  var center = root.boundingVolume.center;
661
-
662
602
  if (!center) {
663
603
  console.warn('center was not pre-calculated for the root tile');
664
604
  this.cartographicCenter = new _core.Vector3();
@@ -671,7 +611,6 @@ var Tileset3D = function () {
671
611
  } else {
672
612
  this.cartographicCenter = new _core.Vector3(0, 0, -_geospatial.Ellipsoid.WGS84.radii[0]);
673
613
  }
674
-
675
614
  this.cartesianCenter = center;
676
615
  this.zoom = (0, _zoom.getZoomFromBoundingVolume)(root.boundingVolume, this.cartographicCenter);
677
616
  }
@@ -686,12 +625,14 @@ var Tileset3D = function () {
686
625
  this.stats.get(TILES_LOADED);
687
626
  this.stats.get(TILES_UNLOADED);
688
627
  this.stats.get(TILES_LOAD_FAILED);
689
- this.stats.get(POINTS_COUNT, 'memory');
628
+ this.stats.get(POINTS_COUNT);
690
629
  this.stats.get(TILES_GPU_MEMORY, 'memory');
691
630
  }
631
+
692
632
  }, {
693
633
  key: "_initializeTileHeaders",
694
- value: function _initializeTileHeaders(tilesetJson, parentTileHeader) {
634
+ value:
635
+ function _initializeTileHeaders(tilesetJson, parentTileHeader) {
695
636
  var rootTile = new _tile3d.default(this, tilesetJson.root, parentTileHeader);
696
637
 
697
638
  if (parentTileHeader) {
@@ -702,23 +643,17 @@ var Tileset3D = function () {
702
643
  if (this.type === _constants.TILESET_TYPE.TILES3D) {
703
644
  var stack = [];
704
645
  stack.push(rootTile);
705
-
706
646
  while (stack.length > 0) {
707
647
  var _tile5 = stack.pop();
708
-
709
648
  this.stats.get(TILES_TOTAL).incrementCount();
710
649
  var children = _tile5.header.children || [];
711
-
712
650
  var _iterator7 = _createForOfIteratorHelper(children),
713
- _step7;
714
-
651
+ _step7;
715
652
  try {
716
653
  for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
717
654
  var childHeader = _step7.value;
718
655
  var childTile = new _tile3d.default(this, childHeader, _tile5);
719
-
720
656
  _tile5.children.push(childTile);
721
-
722
657
  childTile.depth = _tile5.depth + 1;
723
658
  stack.push(childTile);
724
659
  }
@@ -729,7 +664,6 @@ var Tileset3D = function () {
729
664
  }
730
665
  }
731
666
  }
732
-
733
667
  return rootTile;
734
668
  }
735
669
  }, {
@@ -737,20 +671,16 @@ var Tileset3D = function () {
737
671
  value: function _initializeTraverser() {
738
672
  var TraverserClass;
739
673
  var type = this.type;
740
-
741
674
  switch (type) {
742
675
  case _constants.TILESET_TYPE.TILES3D:
743
676
  TraverserClass = _tileset3dTraverser.default;
744
677
  break;
745
-
746
678
  case _constants.TILESET_TYPE.I3S:
747
679
  TraverserClass = _i3sTilesetTraverser.default;
748
680
  break;
749
-
750
681
  default:
751
682
  TraverserClass = _tilesetTraverser.default;
752
683
  }
753
-
754
684
  return new TraverserClass({
755
685
  basePath: this.basePath,
756
686
  onTraversalEnd: this._onTraversalEnd.bind(this)
@@ -771,32 +701,22 @@ var Tileset3D = function () {
771
701
  switch (_context3.prev = _context3.next) {
772
702
  case 0:
773
703
  _context3.prev = 0;
774
-
775
704
  this._onStartTileLoading();
776
-
777
705
  _context3.next = 4;
778
706
  return tile.loadContent();
779
-
780
707
  case 4:
781
708
  loaded = _context3.sent;
782
709
  _context3.next = 10;
783
710
  break;
784
-
785
711
  case 7:
786
712
  _context3.prev = 7;
787
713
  _context3.t0 = _context3["catch"](0);
788
-
789
714
  this._onTileLoadError(tile, _context3.t0);
790
-
791
715
  case 10:
792
716
  _context3.prev = 10;
793
-
794
717
  this._onEndTileLoading();
795
-
796
718
  this._onTileLoad(tile, loaded);
797
-
798
719
  return _context3.finish(10);
799
-
800
720
  case 14:
801
721
  case "end":
802
722
  return _context3.stop();
@@ -804,11 +724,9 @@ var Tileset3D = function () {
804
724
  }
805
725
  }, _callee3, this, [[0, 7, 10, 14]]);
806
726
  }));
807
-
808
727
  function _loadTile(_x2) {
809
728
  return _loadTile2.apply(this, arguments);
810
729
  }
811
-
812
730
  return _loadTile;
813
731
  }()
814
732
  }, {
@@ -826,10 +744,8 @@ var Tileset3D = function () {
826
744
  if (!loaded) {
827
745
  return;
828
746
  }
829
-
830
747
  if (this.type === _constants.TILESET_TYPE.I3S) {
831
748
  var _this$tileset, _this$tileset$nodePag;
832
-
833
749
  var nodesInNodePages = ((_this$tileset = this.tileset) === null || _this$tileset === void 0 ? void 0 : (_this$tileset$nodePag = _this$tileset.nodePagesTile) === null || _this$tileset$nodePag === void 0 ? void 0 : _this$tileset$nodePag.nodesInNodePages) || 0;
834
750
  this.stats.get(TILES_TOTAL).reset();
835
751
  this.stats.get(TILES_TOTAL).addCount(nodesInNodePages);
@@ -838,11 +754,44 @@ var Tileset3D = function () {
838
754
  if (tile && tile.content) {
839
755
  (0, _transformUtils.calculateTransformProps)(tile, tile.content);
840
756
  }
841
-
757
+ this.updateContentTypes(tile);
842
758
  this._addTileToCache(tile);
843
-
844
759
  this.options.onTileLoad(tile);
845
760
  }
761
+
762
+ }, {
763
+ key: "updateContentTypes",
764
+ value:
765
+ function updateContentTypes(tile) {
766
+ if (this.type === _constants.TILESET_TYPE.I3S) {
767
+ if (tile.header.isDracoGeometry) {
768
+ this.contentFormats.draco = true;
769
+ }
770
+ switch (tile.header.textureFormat) {
771
+ case 'dds':
772
+ this.contentFormats.dds = true;
773
+ break;
774
+ case 'ktx2':
775
+ this.contentFormats.ktx2 = true;
776
+ break;
777
+ default:
778
+ }
779
+ } else if (this.type === _constants.TILESET_TYPE.TILES3D) {
780
+ var _tile$content;
781
+ var _ref = ((_tile$content = tile.content) === null || _tile$content === void 0 ? void 0 : _tile$content.gltf) || {},
782
+ _ref$extensionsRemove = _ref.extensionsRemoved,
783
+ extensionsRemoved = _ref$extensionsRemove === void 0 ? [] : _ref$extensionsRemove;
784
+ if (extensionsRemoved.includes('KHR_draco_mesh_compression')) {
785
+ this.contentFormats.draco = true;
786
+ }
787
+ if (extensionsRemoved.includes('EXT_meshopt_compression')) {
788
+ this.contentFormats.meshopt = true;
789
+ }
790
+ if (extensionsRemoved.includes('KHR_texture_basisu')) {
791
+ this.contentFormats.ktx2 = true;
792
+ }
793
+ }
794
+ }
846
795
  }, {
847
796
  key: "_onStartTileLoading",
848
797
  value: function _onStartTileLoading() {
@@ -867,6 +816,7 @@ var Tileset3D = function () {
867
816
  value: function _updateCacheStats(tile) {
868
817
  this.stats.get(TILES_LOADED).incrementCount();
869
818
  this.stats.get(TILES_IN_MEMORY).incrementCount();
819
+
870
820
  this.gpuMemoryUsageInBytes += tile.content.byteLength || 0;
871
821
  this.stats.get(TILES_GPU_MEMORY).count = this.gpuMemoryUsageInBytes;
872
822
  }
@@ -880,21 +830,19 @@ var Tileset3D = function () {
880
830
  this.options.onTileUnload(tile);
881
831
  tile.unloadContent();
882
832
  }
833
+
883
834
  }, {
884
835
  key: "_destroy",
885
- value: function _destroy() {
836
+ value:
837
+ function _destroy() {
886
838
  var stack = [];
887
-
888
839
  if (this.root) {
889
840
  stack.push(this.root);
890
841
  }
891
-
892
842
  while (stack.length > 0) {
893
843
  var _tile6 = stack.pop();
894
-
895
844
  var _iterator8 = _createForOfIteratorHelper(_tile6.children),
896
- _step8;
897
-
845
+ _step8;
898
846
  try {
899
847
  for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
900
848
  var child = _step8.value;
@@ -905,25 +853,22 @@ var Tileset3D = function () {
905
853
  } finally {
906
854
  _iterator8.f();
907
855
  }
908
-
909
856
  this._destroyTile(_tile6);
910
857
  }
911
-
912
858
  this.root = null;
913
859
  }
860
+
914
861
  }, {
915
862
  key: "_destroySubtree",
916
- value: function _destroySubtree(tile) {
863
+ value:
864
+ function _destroySubtree(tile) {
917
865
  var root = tile;
918
866
  var stack = [];
919
867
  stack.push(root);
920
-
921
868
  while (stack.length > 0) {
922
869
  tile = stack.pop();
923
-
924
870
  var _iterator9 = _createForOfIteratorHelper(tile.children),
925
- _step9;
926
-
871
+ _step9;
927
872
  try {
928
873
  for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
929
874
  var child = _step9.value;
@@ -934,32 +879,26 @@ var Tileset3D = function () {
934
879
  } finally {
935
880
  _iterator9.f();
936
881
  }
937
-
938
882
  if (tile !== root) {
939
883
  this._destroyTile(tile);
940
884
  }
941
885
  }
942
-
943
886
  root.children = [];
944
887
  }
945
888
  }, {
946
889
  key: "_destroyTile",
947
890
  value: function _destroyTile(tile) {
948
891
  this._cache.unloadTile(this, tile);
949
-
950
892
  this._unloadTile(tile);
951
-
952
893
  tile.destroy();
953
894
  }
954
895
  }, {
955
896
  key: "_initializeTiles3DTileset",
956
897
  value: function _initializeTiles3DTileset(tilesetJson) {
957
898
  this.asset = tilesetJson.asset;
958
-
959
899
  if (!this.asset) {
960
900
  throw new Error('Tileset must have an asset property.');
961
901
  }
962
-
963
902
  if (this.asset.version !== '0.0' && this.asset.version !== '1.0') {
964
903
  throw new Error('The tileset must be 3D Tiles version 0.0 or 1.0.');
965
904
  }
@@ -972,6 +911,7 @@ var Tileset3D = function () {
972
911
  attributions: this.options.attributions || []
973
912
  };
974
913
  this.description = this.options.description || '';
914
+
975
915
  this.properties = tilesetJson.properties;
976
916
  this.geometricError = tilesetJson.geometricError;
977
917
  this._extensionsUsed = tilesetJson.extensionsUsed;
@@ -987,24 +927,18 @@ var Tileset3D = function () {
987
927
  }]);
988
928
  return Tileset3D;
989
929
  }();
990
-
991
930
  exports.default = Tileset3D;
992
-
993
931
  function getQueryParamString(queryParams) {
994
932
  var queryParamStrings = [];
995
-
996
933
  for (var _i = 0, _Object$keys = Object.keys(queryParams); _i < _Object$keys.length; _i++) {
997
934
  var _key = _Object$keys[_i];
998
935
  queryParamStrings.push("".concat(_key, "=").concat(queryParams[_key]));
999
936
  }
1000
-
1001
937
  switch (queryParamStrings.length) {
1002
938
  case 0:
1003
939
  return '';
1004
-
1005
940
  case 1:
1006
941
  return "?".concat(queryParamStrings[0]);
1007
-
1008
942
  default:
1009
943
  return "?".concat(queryParamStrings.join('&'));
1010
944
  }