bruce-cesium 3.2.1 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10552,18 +10552,24 @@
10552
10552
  this.sourceId = (_a = menuItem.BruceEntity) === null || _a === void 0 ? void 0 : _a.SourceId;
10553
10553
  this.entityTypeId = (_b = menuItem.BruceEntity) === null || _b === void 0 ? void 0 : _b["EntityType.ID"];
10554
10554
  (function () { return __awaiter(_this, void 0, void 0, function () {
10555
- var CESIUM, cTileset;
10555
+ var validToken, CESIUM, cTileset;
10556
10556
  var _this = this;
10557
10557
  return __generator(this, function (_a) {
10558
10558
  switch (_a.label) {
10559
- case 0:
10559
+ case 0: return [4 /*yield*/, exports.ViewerUtils.AssertIonToken(Cesium.Ion.defaultAccessToken)];
10560
+ case 1:
10561
+ validToken = _a.sent();
10562
+ if (!validToken) {
10563
+ console.warn("'tileset-osm-render-manager.ts' could not locate a valid Cesium Ion token.");
10564
+ return [2 /*return*/];
10565
+ }
10560
10566
  CESIUM = Cesium;
10561
- if (!CESIUM["createOsmBuildingsAsync"]) return [3 /*break*/, 2];
10567
+ if (!CESIUM["createOsmBuildingsAsync"]) return [3 /*break*/, 3];
10562
10568
  return [4 /*yield*/, CESIUM.createOsmBuildingsAsync({})];
10563
- case 1:
10564
- cTileset = _a.sent();
10565
- return [3 /*break*/, 3];
10566
10569
  case 2:
10570
+ cTileset = _a.sent();
10571
+ return [3 /*break*/, 4];
10572
+ case 3:
10567
10573
  if (CESIUM["createOsmBuildings"]) {
10568
10574
  cTileset = CESIUM.createOsmBuildings();
10569
10575
  }
@@ -10571,8 +10577,8 @@
10571
10577
  console.warn("'tileset-osm-render-manager.ts' could not locate a create function for OSM buildings.");
10572
10578
  return [2 /*return*/];
10573
10579
  }
10574
- _a.label = 3;
10575
- case 3:
10580
+ _a.label = 4;
10581
+ case 4:
10576
10582
  if (this.disposed) {
10577
10583
  if (this.cTileset && !this.cTileset.isDestroyed()) {
10578
10584
  this.cTileset.destroy();
@@ -12115,9 +12121,10 @@
12115
12121
  function Manager(params) {
12116
12122
  this.disposed = false;
12117
12123
  this.cTileset = null;
12118
- var viewer = params.viewer, item = params.item;
12124
+ var viewer = params.viewer, item = params.item, getters = params.getters;
12119
12125
  this.viewer = viewer;
12120
12126
  this.item = item;
12127
+ this.getters = getters;
12121
12128
  }
12122
12129
  Object.defineProperty(Manager.prototype, "Disposed", {
12123
12130
  get: function () {
@@ -12154,17 +12161,43 @@
12154
12161
  Manager.prototype.Init = function () {
12155
12162
  var _this = this;
12156
12163
  (function () { return __awaiter(_this, void 0, void 0, function () {
12157
- var _a, colorCss;
12158
- var _b, _c;
12159
- return __generator(this, function (_d) {
12160
- switch (_d.label) {
12164
+ var CESIUM, programKey, e_1, _a, colorCss;
12165
+ var _b;
12166
+ return __generator(this, function (_c) {
12167
+ switch (_c.label) {
12161
12168
  case 0:
12162
- // Using as any to be OK with older versions.
12163
- _a = this;
12164
- return [4 /*yield*/, ((_c = (_b = Cesium).createGooglePhotorealistic3DTileset) === null || _c === void 0 ? void 0 : _c.call(_b))];
12169
+ CESIUM = Cesium;
12170
+ if (!CESIUM.createGooglePhotorealistic3DTileset) {
12171
+ console.warn("Cesium version does not support 'createGooglePhotorealistic3DTileset' so Google Photos tileset will not be rendered.");
12172
+ return [2 /*return*/];
12173
+ }
12174
+ if (!!CESIUM.GoogleMaps.defaultApiKey) return [3 /*break*/, 4];
12175
+ _c.label = 1;
12165
12176
  case 1:
12166
- // Using as any to be OK with older versions.
12167
- _a.cTileset = _d.sent();
12177
+ _c.trys.push([1, 3, , 4]);
12178
+ return [4 /*yield*/, bruceModels.ProgramKey.Get({
12179
+ programId: bruceModels.ProgramKey.EProgramId.Google,
12180
+ api: this.getters.GetBruceApi()
12181
+ })];
12182
+ case 2:
12183
+ programKey = (_c.sent()).programKey;
12184
+ if (programKey === null || programKey === void 0 ? void 0 : programKey.Key) {
12185
+ CESIUM.GoogleMaps.defaultApiKey = programKey.Key;
12186
+ }
12187
+ return [3 /*break*/, 4];
12188
+ case 3:
12189
+ e_1 = _c.sent();
12190
+ console.error(e_1);
12191
+ return [3 /*break*/, 4];
12192
+ case 4:
12193
+ if (this.disposed) {
12194
+ this.doDispose();
12195
+ return [2 /*return*/];
12196
+ }
12197
+ _a = this;
12198
+ return [4 /*yield*/, ((_b = CESIUM.createGooglePhotorealistic3DTileset) === null || _b === void 0 ? void 0 : _b.call(CESIUM))];
12199
+ case 5:
12200
+ _a.cTileset = _c.sent();
12168
12201
  if (this.disposed) {
12169
12202
  this.doDispose();
12170
12203
  return [2 /*return*/];
@@ -12776,6 +12809,7 @@
12776
12809
  break;
12777
12810
  case bruceModels.MenuItem.EType.GooglePhotoTileset:
12778
12811
  rItem.renderManager = new exports.TilesetGooglePhotosRenderManager.Manager({
12812
+ getters: params.getters,
12779
12813
  item: params.item,
12780
12814
  viewer: this.viewer,
12781
12815
  });
@@ -16098,6 +16132,8 @@
16098
16132
  }
16099
16133
  }, 1500);
16100
16134
  }
16135
+ // Cache of Cesium Token -> Validity.
16136
+ var _cToken_check_cache = {};
16101
16137
  (function (ViewerUtils) {
16102
16138
  /**
16103
16139
  * Destroys all the junk that cesium viewer ships with.
@@ -16250,6 +16286,47 @@
16250
16286
  return widgets;
16251
16287
  }
16252
16288
  ViewerUtils.CreateWidgets = CreateWidgets;
16289
+ /**
16290
+ * Returns if the given token is valid or not.
16291
+ * This will perform a test request to Cesium API.
16292
+ * @param token
16293
+ * @returns
16294
+ */
16295
+ function AssertIonToken(token) {
16296
+ return __awaiter(this, void 0, void 0, function () {
16297
+ var url, response, json, e_1;
16298
+ return __generator(this, function (_a) {
16299
+ switch (_a.label) {
16300
+ case 0:
16301
+ if (!token) {
16302
+ return [2 /*return*/, false];
16303
+ }
16304
+ if (_cToken_check_cache[token] != null) {
16305
+ return [2 /*return*/, _cToken_check_cache[token]];
16306
+ }
16307
+ _a.label = 1;
16308
+ case 1:
16309
+ _a.trys.push([1, 4, , 5]);
16310
+ url = "https://api.cesium.com/v1/assets/1/endpoint?access_token=".concat(token);
16311
+ return [4 /*yield*/, fetch(url)];
16312
+ case 2:
16313
+ response = _a.sent();
16314
+ return [4 /*yield*/, response.json()];
16315
+ case 3:
16316
+ json = _a.sent();
16317
+ _cToken_check_cache[token] = Boolean(json === null || json === void 0 ? void 0 : json.url);
16318
+ return [2 /*return*/, _cToken_check_cache[token]];
16319
+ case 4:
16320
+ e_1 = _a.sent();
16321
+ console.error(e_1);
16322
+ _cToken_check_cache[token] = false;
16323
+ return [3 /*break*/, 5];
16324
+ case 5: return [2 /*return*/];
16325
+ }
16326
+ });
16327
+ });
16328
+ }
16329
+ ViewerUtils.AssertIonToken = AssertIonToken;
16253
16330
  })(exports.ViewerUtils || (exports.ViewerUtils = {}));
16254
16331
 
16255
16332
  (function (MenuItemCreator) {
@@ -17507,7 +17584,7 @@
17507
17584
  (function (Navigator) {
17508
17585
  function GetOrCreateLayer(params) {
17509
17586
  return __awaiter(this, void 0, void 0, function () {
17510
- var viewer, apiGetter, meta, CESIUM, enabled, i, layer, layerMeta, defaultImg, provider, api, tileset, boundaries, settings, minLat, maxLat, minLon, maxLon, minLevel, maxLevel, hasLevels, url, settings_1, _a, cesiumIonKey, _b, mapboxKey, _c, layer;
17587
+ var viewer, apiGetter, meta, CESIUM, enabled, i, layer, layerMeta, defaultImg, provider, NEEDS_CESIUM_TOKEN, shouldCreate, api, tileset, boundaries, settings, minLat, maxLat, minLon, maxLon, minLevel, maxLevel, hasLevels, url, settings_1, _a, cesiumIonKey, _b, mapboxKey, _c, layer;
17511
17588
  return __generator(this, function (_d) {
17512
17589
  switch (_d.label) {
17513
17590
  case 0:
@@ -17526,18 +17603,32 @@
17526
17603
  }
17527
17604
  defaultImg = meta.accountId ? null : bruceModels.ProjectViewTile.DefaultImagery.find(function (x) { return x.id === meta.tilesetId; });
17528
17605
  provider = null;
17529
- if (!defaultImg) return [3 /*break*/, 2];
17530
- return [4 /*yield*/, renderDefaultMapTile(apiGetter, defaultImg.id)];
17606
+ if (!defaultImg) return [3 /*break*/, 5];
17607
+ NEEDS_CESIUM_TOKEN = [
17608
+ bruceModels.ProjectViewTile.EDefaultImagery.BingMapsAerial,
17609
+ bruceModels.ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels,
17610
+ bruceModels.ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels,
17611
+ ];
17612
+ shouldCreate = true;
17613
+ if (!NEEDS_CESIUM_TOKEN.includes(defaultImg.id)) return [3 /*break*/, 2];
17614
+ return [4 /*yield*/, exports.ViewerUtils.AssertIonToken(Cesium.Ion.defaultAccessToken)];
17531
17615
  case 1:
17532
- provider = _d.sent();
17533
- return [3 /*break*/, 28];
17616
+ shouldCreate = _d.sent();
17617
+ _d.label = 2;
17534
17618
  case 2:
17619
+ if (!shouldCreate) return [3 /*break*/, 4];
17620
+ return [4 /*yield*/, renderDefaultMapTile(apiGetter, defaultImg.id)];
17621
+ case 3:
17622
+ provider = _d.sent();
17623
+ _d.label = 4;
17624
+ case 4: return [3 /*break*/, 31];
17625
+ case 5:
17535
17626
  api = apiGetter.getApi(meta.accountId);
17536
17627
  // Ensure regional url is loaded.
17537
17628
  // When loading stuff in the same account as the default it's likely already loaded,
17538
17629
  // but if we just made an API instance for some external account then it won't be loaded yet.
17539
17630
  return [4 /*yield*/, api.Loading];
17540
- case 3:
17631
+ case 6:
17541
17632
  // Ensure regional url is loaded.
17542
17633
  // When loading stuff in the same account as the default it's likely already loaded,
17543
17634
  // but if we just made an API instance for some external account then it won't be loaded yet.
@@ -17546,7 +17637,7 @@
17546
17637
  api: api,
17547
17638
  tilesetId: meta.tilesetId
17548
17639
  })];
17549
- case 4:
17640
+ case 7:
17550
17641
  tileset = (_d.sent()).tileset;
17551
17642
  boundaries = undefined;
17552
17643
  settings = tileset === null || tileset === void 0 ? void 0 : tileset.settings;
@@ -17560,8 +17651,8 @@
17560
17651
  minLevel = settings === null || settings === void 0 ? void 0 : settings.levelMin;
17561
17652
  maxLevel = settings === null || settings === void 0 ? void 0 : settings.levelMax;
17562
17653
  hasLevels = !isNaN(minLevel) && !isNaN(maxLevel);
17563
- if (!(tileset.type === bruceModels.Tileset.EType.GeoMap)) return [3 /*break*/, 8];
17564
- if (!Cesium.TileMapServiceImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 6];
17654
+ if (!(tileset.type === bruceModels.Tileset.EType.GeoMap)) return [3 /*break*/, 11];
17655
+ if (!Cesium.TileMapServiceImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 9];
17565
17656
  url = bruceModels.Tileset.GetPublicFileUrl({
17566
17657
  api: api,
17567
17658
  tilesetId: meta.tilesetId,
@@ -17576,10 +17667,10 @@
17576
17667
  maximumLevel: hasLevels ? maxLevel : undefined,
17577
17668
  minimumLevel: hasLevels ? minLevel : undefined,
17578
17669
  })];
17579
- case 5:
17670
+ case 8:
17580
17671
  provider = _d.sent();
17581
- return [3 /*break*/, 7];
17582
- case 6:
17672
+ return [3 /*break*/, 10];
17673
+ case 9:
17583
17674
  provider = new CESIUM.TileMapServiceImageryProvider({
17584
17675
  url: bruceModels.Tileset.GetPublicFileUrl({
17585
17676
  api: api,
@@ -17594,53 +17685,53 @@
17594
17685
  maximumLevel: hasLevels ? maxLevel : undefined,
17595
17686
  minimumLevel: hasLevels ? minLevel : undefined,
17596
17687
  });
17597
- _d.label = 7;
17598
- case 7: return [3 /*break*/, 28];
17599
- case 8:
17600
- if (!(tileset.type === bruceModels.Tileset.EType.ExternalGeoMap)) return [3 /*break*/, 27];
17688
+ _d.label = 10;
17689
+ case 10: return [3 /*break*/, 31];
17690
+ case 11:
17691
+ if (!(tileset.type === bruceModels.Tileset.EType.ExternalGeoMap)) return [3 /*break*/, 30];
17601
17692
  settings_1 = tileset.settings;
17602
17693
  _a = settings_1.mapType;
17603
17694
  switch (_a) {
17604
- case bruceModels.Tileset.Settings.EExternalMapType.CesiumIon: return [3 /*break*/, 9];
17605
- case bruceModels.Tileset.Settings.EExternalMapType.MapBoxImagery: return [3 /*break*/, 16];
17606
- case bruceModels.Tileset.Settings.EExternalMapType.OpenStreetMapImagery: return [3 /*break*/, 20];
17607
- case bruceModels.Tileset.Settings.EExternalMapType.TileMapImagery: return [3 /*break*/, 21];
17608
- case bruceModels.Tileset.Settings.EExternalMapType.CustomTemplate: return [3 /*break*/, 25];
17695
+ case bruceModels.Tileset.Settings.EExternalMapType.CesiumIon: return [3 /*break*/, 12];
17696
+ case bruceModels.Tileset.Settings.EExternalMapType.MapBoxImagery: return [3 /*break*/, 19];
17697
+ case bruceModels.Tileset.Settings.EExternalMapType.OpenStreetMapImagery: return [3 /*break*/, 23];
17698
+ case bruceModels.Tileset.Settings.EExternalMapType.TileMapImagery: return [3 /*break*/, 24];
17699
+ case bruceModels.Tileset.Settings.EExternalMapType.CustomTemplate: return [3 /*break*/, 28];
17609
17700
  }
17610
- return [3 /*break*/, 26];
17611
- case 9:
17612
- if (!settings_1.key) return [3 /*break*/, 10];
17701
+ return [3 /*break*/, 29];
17702
+ case 12:
17703
+ if (!settings_1.key) return [3 /*break*/, 13];
17613
17704
  _b = settings_1.key;
17614
- return [3 /*break*/, 12];
17615
- case 10: return [4 /*yield*/, findKey(apiGetter, bruceModels.ProgramKey.EProgramId.CesiumIon, null)];
17616
- case 11:
17705
+ return [3 /*break*/, 15];
17706
+ case 13: return [4 /*yield*/, findKey(apiGetter, bruceModels.ProgramKey.EProgramId.CesiumIon, null)];
17707
+ case 14:
17617
17708
  _b = _d.sent();
17618
- _d.label = 12;
17619
- case 12:
17709
+ _d.label = 15;
17710
+ case 15:
17620
17711
  cesiumIonKey = _b;
17621
- if (!Cesium.IonImageryProvider.hasOwnProperty("fromAssetId")) return [3 /*break*/, 14];
17712
+ if (!Cesium.IonImageryProvider.hasOwnProperty("fromAssetId")) return [3 /*break*/, 17];
17622
17713
  return [4 /*yield*/, CESIUM.IonImageryProvider.fromAssetId(Number(settings_1.externalId), {
17623
17714
  accessToken: cesiumIonKey
17624
17715
  })];
17625
- case 13:
17716
+ case 16:
17626
17717
  provider = _d.sent();
17627
- return [3 /*break*/, 15];
17628
- case 14:
17718
+ return [3 /*break*/, 18];
17719
+ case 17:
17629
17720
  provider = new CESIUM.IonImageryProvider({
17630
17721
  assetId: Number(settings_1.externalId),
17631
17722
  accessToken: cesiumIonKey
17632
17723
  });
17633
- _d.label = 15;
17634
- case 15: return [3 /*break*/, 26];
17635
- case 16:
17636
- if (!settings_1.key) return [3 /*break*/, 17];
17724
+ _d.label = 18;
17725
+ case 18: return [3 /*break*/, 29];
17726
+ case 19:
17727
+ if (!settings_1.key) return [3 /*break*/, 20];
17637
17728
  _c = settings_1.key;
17638
- return [3 /*break*/, 19];
17639
- case 17: return [4 /*yield*/, findKey(apiGetter, bruceModels.ProgramKey.EProgramId.Mapbox, null)];
17640
- case 18:
17729
+ return [3 /*break*/, 22];
17730
+ case 20: return [4 /*yield*/, findKey(apiGetter, bruceModels.ProgramKey.EProgramId.Mapbox, null)];
17731
+ case 21:
17641
17732
  _c = _d.sent();
17642
- _d.label = 19;
17643
- case 19:
17733
+ _d.label = 22;
17734
+ case 22:
17644
17735
  mapboxKey = _c;
17645
17736
  provider = new Cesium.UrlTemplateImageryProvider({
17646
17737
  url: "https://api.mapbox.com/styles/v1/"
@@ -17648,8 +17739,8 @@
17648
17739
  "/tiles/256/{z}/{x}/{y}?access_token="
17649
17740
  + mapboxKey
17650
17741
  });
17651
- return [3 /*break*/, 26];
17652
- case 20:
17742
+ return [3 /*break*/, 29];
17743
+ case 23:
17653
17744
  provider = new Cesium.OpenStreetMapImageryProvider({
17654
17745
  url: settings_1.url,
17655
17746
  fileExtension: prepareFileExt(settings_1.fileExtension),
@@ -17658,9 +17749,9 @@
17658
17749
  // maximumLevel: hasLevels ? maxLevel : undefined,
17659
17750
  // minimumLevel: hasLevels ? minLevel : undefined,
17660
17751
  });
17661
- return [3 /*break*/, 26];
17662
- case 21:
17663
- if (!Cesium.TileMapServiceImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 23];
17752
+ return [3 /*break*/, 29];
17753
+ case 24:
17754
+ if (!Cesium.TileMapServiceImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 26];
17664
17755
  return [4 /*yield*/, CESIUM.TileMapServiceImageryProvider.fromUrl(settings_1.url, {
17665
17756
  fileExtension: prepareFileExt(settings_1.fileExtension),
17666
17757
  // Unused until tested properly. In the past these settings caused large lag.
@@ -17668,10 +17759,10 @@
17668
17759
  // maximumLevel: hasLevels ? maxLevel : undefined,
17669
17760
  // minimumLevel: hasLevels ? minLevel : undefined,
17670
17761
  })];
17671
- case 22:
17762
+ case 25:
17672
17763
  provider = _d.sent();
17673
- return [3 /*break*/, 24];
17674
- case 23:
17764
+ return [3 /*break*/, 27];
17765
+ case 26:
17675
17766
  provider = new CESIUM.TileMapServiceImageryProvider({
17676
17767
  url: settings_1.url,
17677
17768
  fileExtension: prepareFileExt(settings_1.fileExtension),
@@ -17680,15 +17771,15 @@
17680
17771
  // maximumLevel: hasLevels ? maxLevel : undefined,
17681
17772
  // minimumLevel: hasLevels ? minLevel : undefined,
17682
17773
  });
17683
- _d.label = 24;
17684
- case 24: return [3 /*break*/, 26];
17685
- case 25:
17774
+ _d.label = 27;
17775
+ case 27: return [3 /*break*/, 29];
17776
+ case 28:
17686
17777
  provider = new Cesium.UrlTemplateImageryProvider({
17687
17778
  url: settings_1.url
17688
17779
  });
17689
- return [3 /*break*/, 26];
17690
- case 26: return [3 /*break*/, 28];
17691
- case 27:
17780
+ return [3 /*break*/, 29];
17781
+ case 29: return [3 /*break*/, 31];
17782
+ case 30:
17692
17783
  if (tileset.type === bruceModels.Tileset.EType.EntitiesMap) {
17693
17784
  provider = new Cesium.UrlTemplateImageryProvider({
17694
17785
  url: bruceModels.Tileset.GetPublicFileUrl({
@@ -17706,8 +17797,8 @@
17706
17797
  // maximumLevel: hasLevels ? maxLevel : undefined,
17707
17798
  });
17708
17799
  }
17709
- _d.label = 28;
17710
- case 28:
17800
+ _d.label = 31;
17801
+ case 31:
17711
17802
  if (provider) {
17712
17803
  layer = viewer.imageryLayers.addImageryProvider(provider);
17713
17804
  layer._bMeta = meta;
@@ -17963,7 +18054,7 @@
17963
18054
  function Render(params) {
17964
18055
  var _a;
17965
18056
  return __awaiter(this, void 0, void 0, function () {
17966
- var iteration, CESIUM, enabledMeta, provider_1, leave, defaultTerr, provider, api, tileset, url, vertexes, settings;
18057
+ var iteration, CESIUM, enabledMeta, provider_1, leave, defaultTerr, provider, shouldCreate, api, tileset, url, vertexes, settings;
17967
18058
  return __generator(this, function (_b) {
17968
18059
  switch (_b.label) {
17969
18060
  case 0:
@@ -17997,18 +18088,27 @@
17997
18088
  }
17998
18089
  defaultTerr = params.tile.accountId ? null : bruceModels.ProjectViewTile.DefaultTerrains.find(function (x) { return x.id === params.tile.tilesetId; });
17999
18090
  provider = null;
18000
- if (!defaultTerr) return [3 /*break*/, 2];
18001
- return [4 /*yield*/, renderDefaultTerrTile(defaultTerr.id)];
18091
+ if (!defaultTerr) return [3 /*break*/, 5];
18092
+ shouldCreate = true;
18093
+ if (!(defaultTerr.id == bruceModels.ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain)) return [3 /*break*/, 2];
18094
+ return [4 /*yield*/, exports.ViewerUtils.AssertIonToken(Cesium.Ion.defaultAccessToken)];
18002
18095
  case 1:
18003
- provider = (_b.sent());
18004
- return [3 /*break*/, 7];
18096
+ shouldCreate = _b.sent();
18097
+ _b.label = 2;
18005
18098
  case 2:
18099
+ if (!shouldCreate) return [3 /*break*/, 4];
18100
+ return [4 /*yield*/, renderDefaultTerrTile(defaultTerr.id)];
18101
+ case 3:
18102
+ provider = (_b.sent());
18103
+ _b.label = 4;
18104
+ case 4: return [3 /*break*/, 10];
18105
+ case 5:
18006
18106
  api = params.apiGetter.getApi(params.tile.accountId);
18007
18107
  // Ensure regional url is loaded.
18008
18108
  // When loading stuff in the same account as the default it's likely already loaded,
18009
18109
  // but if we just made an API instance for some external account then it won't be loaded yet.
18010
18110
  return [4 /*yield*/, api.Loading];
18011
- case 3:
18111
+ case 6:
18012
18112
  // Ensure regional url is loaded.
18013
18113
  // When loading stuff in the same account as the default it's likely already loaded,
18014
18114
  // but if we just made an API instance for some external account then it won't be loaded yet.
@@ -18020,7 +18120,7 @@
18020
18120
  api: api,
18021
18121
  tilesetId: params.tile.tilesetId
18022
18122
  })];
18023
- case 4:
18123
+ case 7:
18024
18124
  tileset = (_b.sent()).tileset;
18025
18125
  if (!assertIteration(params.viewer, iteration)) {
18026
18126
  return [2 /*return*/];
@@ -18044,21 +18144,21 @@
18044
18144
  else {
18045
18145
  console.error("Invalid tileset type.", tileset);
18046
18146
  }
18047
- if (!url) return [3 /*break*/, 7];
18048
- if (!CESIUM.CesiumTerrainProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 6];
18147
+ if (!url) return [3 /*break*/, 10];
18148
+ if (!CESIUM.CesiumTerrainProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 9];
18049
18149
  return [4 /*yield*/, CESIUM.CesiumTerrainProvider.fromUrl(url, {
18050
18150
  requestVertexNormals: vertexes
18051
18151
  })];
18052
- case 5:
18152
+ case 8:
18053
18153
  provider = (_b.sent());
18054
- return [3 /*break*/, 7];
18055
- case 6:
18154
+ return [3 /*break*/, 10];
18155
+ case 9:
18056
18156
  provider = new CESIUM.CesiumTerrainProvider({
18057
18157
  url: url,
18058
18158
  requestVertexNormals: vertexes
18059
18159
  });
18060
- _b.label = 7;
18061
- case 7:
18160
+ _b.label = 10;
18161
+ case 10:
18062
18162
  if (provider) {
18063
18163
  provider._bMeta = {
18064
18164
  accountId: params.tile.accountId,
@@ -18084,6 +18184,12 @@
18084
18184
  // Used to track if a current in-progress render is the latest.
18085
18185
  // If we're midway through an async function that is rendering a bookmark and this changes, then we stop the function.
18086
18186
  var ITERATION_KEY$1 = "nextspace-view-render-engine-iteration";
18187
+ // Will be set when the account doesn't have its own key.
18188
+ // This can be safely nulled as the code will avoid using things it cannot do without it.
18189
+ // We should do either:
18190
+ // 1- new accounts get our token set.
18191
+ // 2- we reference to the template account's token.
18192
+ var CESIUM_DEFAULT_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiODI1OWQyZC0wYzdlLTRlOTctODFlOC1kYjIwOGYzOWE0NGIiLCJpZCI6MTE3NDg0LCJpYXQiOjE2NzAzODczOTR9.sx0EZdD-Y33FQ7gB_R3CkTsk3KhNpODoQGrnpvSH4UQ";
18087
18193
  /**
18088
18194
  * Creates a new iteration state.
18089
18195
  * This will stop any existing renders from processing to their end.
@@ -18258,15 +18364,60 @@
18258
18364
  * @param bookmark
18259
18365
  * @param view
18260
18366
  */
18261
- function renderNavigator(iteration, params, bookmark, view) {
18367
+ function renderNavigator(iteration, params, bookmark, view, getters) {
18262
18368
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6;
18263
18369
  return __awaiter(this, void 0, void 0, function () {
18264
- var viewer, scene, vSettings, bSettings, defaults, camera, newLens, shouldBe2d, curIs2d, transition, pos, terrain, hillShades, baseColor, globeHidden, terrainWireframe, globeAlpha, shadows, size, ambientOcclusion, AO, lighting, light, quality, fxaa, dateTime, clock, selectedIds, hiddenIds, isolatedIds, labelledIds, curLabelledIds, toUnLabel, entityOpacityMap, entityId, opacity, imagery, legacyRelationIds, relations, curEnabled, newItemIds, _i, curEnabled_1, id, shouldRemove, rendered, menuItem, menuItem, gOcclusion;
18265
- return __generator(this, function (_7) {
18266
- switch (_7.label) {
18370
+ var viewer, scene, cTokenSet, _7, programKey, valid, e_1, valid, vSettings, bSettings, defaults, camera, newLens, shouldBe2d, curIs2d, transition, pos, terrain, hillShades, baseColor, globeHidden, terrainWireframe, globeAlpha, shadows, size, ambientOcclusion, AO, lighting, light, quality, fxaa, dateTime, clock, selectedIds, hiddenIds, isolatedIds, labelledIds, curLabelledIds, toUnLabel, entityOpacityMap, entityId, opacity, imagery, i, layer, legacyRelationIds, relations, curEnabled, newItemIds, _i, curEnabled_1, id, shouldRemove, rendered, menuItem, menuItem, gOcclusion;
18371
+ return __generator(this, function (_8) {
18372
+ switch (_8.label) {
18267
18373
  case 0:
18268
18374
  viewer = params.manager.Viewer;
18269
18375
  scene = viewer.scene;
18376
+ if (!Cesium.Ion.defaultAccessToken) return [3 /*break*/, 2];
18377
+ return [4 /*yield*/, exports.ViewerUtils.AssertIonToken(Cesium.Ion.defaultAccessToken)];
18378
+ case 1:
18379
+ _7 = _8.sent();
18380
+ return [3 /*break*/, 3];
18381
+ case 2:
18382
+ _7 = false;
18383
+ _8.label = 3;
18384
+ case 3:
18385
+ cTokenSet = _7;
18386
+ if (!!cTokenSet) return [3 /*break*/, 9];
18387
+ _8.label = 4;
18388
+ case 4:
18389
+ _8.trys.push([4, 8, , 9]);
18390
+ return [4 /*yield*/, bruceModels.ProgramKey.Get({
18391
+ programId: bruceModels.ProgramKey.EProgramId.CesiumIon,
18392
+ api: getters.GetBruceApi()
18393
+ })];
18394
+ case 5:
18395
+ programKey = (_8.sent()).programKey;
18396
+ if (!(programKey === null || programKey === void 0 ? void 0 : programKey.Key)) return [3 /*break*/, 7];
18397
+ return [4 /*yield*/, exports.ViewerUtils.AssertIonToken(programKey.Key)];
18398
+ case 6:
18399
+ valid = _8.sent();
18400
+ if (valid) {
18401
+ Cesium.Ion.defaultAccessToken = programKey.Key;
18402
+ cTokenSet = true;
18403
+ }
18404
+ _8.label = 7;
18405
+ case 7: return [3 /*break*/, 9];
18406
+ case 8:
18407
+ e_1 = _8.sent();
18408
+ console.error(e_1);
18409
+ return [3 /*break*/, 9];
18410
+ case 9:
18411
+ if (!!cTokenSet) return [3 /*break*/, 11];
18412
+ return [4 /*yield*/, exports.ViewerUtils.AssertIonToken(CESIUM_DEFAULT_TOKEN)];
18413
+ case 10:
18414
+ valid = _8.sent();
18415
+ if (valid) {
18416
+ Cesium.Ion.defaultAccessToken = CESIUM_DEFAULT_TOKEN;
18417
+ cTokenSet = true;
18418
+ }
18419
+ _8.label = 11;
18420
+ case 11:
18270
18421
  vSettings = view.Settings;
18271
18422
  bSettings = ((_a = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) !== null && _a !== void 0 ? _a : {});
18272
18423
  defaults = (_b = vSettings.defaults) !== null && _b !== void 0 ? _b : {};
@@ -18318,19 +18469,27 @@
18318
18469
  }
18319
18470
  }
18320
18471
  terrain = (bSettings === null || bSettings === void 0 ? void 0 : bSettings.terrain) != null ? bSettings === null || bSettings === void 0 ? void 0 : bSettings.terrain : (_m = defaults.settings) === null || _m === void 0 ? void 0 : _m.terrain;
18321
- if (!terrain) return [3 /*break*/, 2];
18472
+ if (!terrain) return [3 /*break*/, 13];
18473
+ // If there is no Cesium token set then we'll swap cesium terrain to flat terrain.
18474
+ // This allows a scene to render even if it's not the correct one.
18475
+ if (terrain.tilesetId == bruceModels.ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain && !cTokenSet) {
18476
+ terrain = {
18477
+ tilesetId: bruceModels.ProjectViewTile.EDefaultTerrain.FlatTerrain
18478
+ };
18479
+ console.warn("Cesium Ion token not set, using flat terrain instead of cesium world terrain.");
18480
+ }
18322
18481
  return [4 /*yield*/, exports.TileRenderEngine.Terrain.Navigator.Render({
18323
18482
  apiGetter: params.apiGetter,
18324
18483
  tile: terrain,
18325
18484
  viewer: params.manager.Viewer,
18326
18485
  })];
18327
- case 1:
18328
- _7.sent();
18486
+ case 12:
18487
+ _8.sent();
18329
18488
  if (!assertIteration$1(params.viewer, iteration)) {
18330
18489
  return [2 /*return*/];
18331
18490
  }
18332
- _7.label = 2;
18333
- case 2:
18491
+ _8.label = 13;
18492
+ case 13:
18334
18493
  hillShades = (_o = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _o === void 0 ? void 0 : _o.hillShades;
18335
18494
  if (hillShades == null) {
18336
18495
  hillShades = (_p = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _p === void 0 ? void 0 : _p.hillShades;
@@ -18548,6 +18707,29 @@
18548
18707
  }
18549
18708
  ];
18550
18709
  }
18710
+ else if (imagery === null || imagery === void 0 ? void 0 : imagery.length) {
18711
+ // If the Cesium token is not set then we'll avoid rendering Bing Maps since they won't work.
18712
+ // We'll swap them out to good enough alternatives.
18713
+ if (!cTokenSet) {
18714
+ // Deference the array so we don't modify the original.
18715
+ imagery = JSON.parse(JSON.stringify(imagery));
18716
+ for (i = 0; i < imagery.length; i++) {
18717
+ layer = imagery[i];
18718
+ if (layer.tilesetId == bruceModels.ProjectViewTile.EDefaultImagery.BingMapsAerial) {
18719
+ layer.tilesetId = bruceModels.ProjectViewTile.EDefaultImagery.MapboxSatellite;
18720
+ console.warn("Cesium Ion token not set, using mapbox satellite instead of bing maps aerial.");
18721
+ }
18722
+ else if (layer.tilesetId == bruceModels.ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels) {
18723
+ layer.tilesetId = bruceModels.ProjectViewTile.EDefaultImagery.MapboxSatellite;
18724
+ console.warn("Cesium Ion token not set, using mapbox satellite instead of bing maps aerial with labels.");
18725
+ }
18726
+ else if (layer.tilesetId == bruceModels.ProjectViewTile.EDefaultImagery.BingMapsRoads) {
18727
+ layer.tilesetId = bruceModels.ProjectViewTile.EDefaultImagery.MapBoxStreets;
18728
+ console.warn("Cesium Ion token not set, using mapbox streets instead of bing maps roads.");
18729
+ }
18730
+ }
18731
+ }
18732
+ }
18551
18733
  // We don't wait for imageries to load, this does not affect rendering other things.
18552
18734
  exports.TileRenderEngine.Map.Navigator.Render({
18553
18735
  apiGetter: params.apiGetter,
@@ -18592,20 +18774,20 @@
18592
18774
  });
18593
18775
  }
18594
18776
  }
18595
- if (!bookmark) return [3 /*break*/, 4];
18777
+ if (!bookmark) return [3 /*break*/, 15];
18596
18778
  return [4 /*yield*/, exports.MenuItemCreator.RenderBookmarkItems({
18597
18779
  getters: params.getters,
18598
18780
  manager: params.manager,
18599
18781
  view: view,
18600
18782
  bookmark: bookmark
18601
18783
  })];
18602
- case 3:
18603
- _7.sent();
18784
+ case 14:
18785
+ _8.sent();
18604
18786
  if (!assertIteration$1(params.viewer, iteration)) {
18605
18787
  return [2 /*return*/];
18606
18788
  }
18607
- _7.label = 4;
18608
- case 4:
18789
+ _8.label = 15;
18790
+ case 15:
18609
18791
  if (legacyRelationIds.length || relations.length) {
18610
18792
  if (relations.length) {
18611
18793
  menuItem = {
@@ -18722,7 +18904,7 @@
18722
18904
  case 8:
18723
18905
  _d.sent();
18724
18906
  return [3 /*break*/, 11];
18725
- case 9: return [4 /*yield*/, renderNavigator(iteration, params, bookmark, view)];
18907
+ case 9: return [4 /*yield*/, renderNavigator(iteration, params, bookmark, view, params.getters)];
18726
18908
  case 10:
18727
18909
  _d.sent();
18728
18910
  _d.label = 11;
@@ -19158,7 +19340,7 @@
19158
19340
  CesiumViewMonitor.Monitor = Monitor;
19159
19341
  })(exports.CesiumViewMonitor || (exports.CesiumViewMonitor = {}));
19160
19342
 
19161
- var VERSION$1 = "3.2.1";
19343
+ var VERSION$1 = "3.2.2";
19162
19344
 
19163
19345
  exports.VERSION = VERSION$1;
19164
19346
  exports.CesiumParabola = CesiumParabola;