bruce-cesium 3.2.0 → 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.
@@ -1,6 +1,6 @@
1
- import { Cartes, ProjectViewTile, Carto, Entity as Entity$1, Geometry, Tileset, MathUtils, LRUCache, DelayQueue, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, Bounds, EntityRelationType, BruceEvent, EntityCoords, Api, EntitySource, MenuItem, EntityRelation, ENVIRONMENT, AbstractApi, ProjectViewBookmark, EntityAttachment, EntityAttachmentType, EntityAttribute, ProjectView, ProjectViewLegacyTile, ProgramKey, Camera } from 'bruce-models';
1
+ import { Cartes, ProjectViewTile, Carto, Entity as Entity$1, Geometry, Tileset, MathUtils, LRUCache, DelayQueue, ZoomControl, Style, EntityTag, Calculator, EntityLod, EntityType, ClientFile, ObjectUtils, Bounds, EntityRelationType, BruceEvent, EntityCoords, Api, EntitySource, MenuItem, EntityRelation, ProgramKey, ENVIRONMENT, AbstractApi, ProjectViewBookmark, EntityAttachment, EntityAttachmentType, EntityAttribute, ProjectView, ProjectViewLegacyTile, Camera } from 'bruce-models';
2
2
  import * as Cesium from 'cesium';
3
- import { Cartographic, JulianDate, Cartesian2, Math as Math$1, Cartesian3, CallbackProperty, Color, HeightReference, Rectangle, DistanceDisplayCondition, NearFarScalar, Model, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, SceneMode, Cesium3DTileColorBlendMode, HeadingPitchRange, Cesium3DTileStyle, KmlDataSource, SceneTransforms, EllipsoidTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, CesiumTerrainProvider, Cesium3DTileset, Matrix4, Matrix3, IonResource, Ion, EllipsoidGeodesic, sampleTerrainMostDetailed, defined, CesiumInspector, OrthographicFrustum, EasingFunction, PolygonPipeline, ColorMaterialProperty, BoundingSphere, GeometryInstance, ScreenSpaceEventHandler, ScreenSpaceEventType, Intersect } from 'cesium';
3
+ import { Cartographic, Cartesian2, Math as Math$1, Cartesian3, CallbackProperty, Color, HeightReference, Rectangle, JulianDate, DistanceDisplayCondition, NearFarScalar, Model, Entity, HorizontalOrigin, VerticalOrigin, ClassificationType, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, HeadingPitchRoll, Transforms, ColorBlendMode, Primitive, Cesium3DTileFeature, SceneMode, HeadingPitchRange, Cesium3DTileColorBlendMode, KmlDataSource, Ion, Cesium3DTileStyle, SceneTransforms, OrthographicFrustum, EasingFunction, EllipsoidGeodesic, EllipsoidTerrainProvider, sampleTerrainMostDetailed, defined, Cesium3DTileset, Matrix4, Matrix3, IonResource, PolygonPipeline, CesiumInspector, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, UrlTemplateImageryProvider, TileMapServiceImageryProvider, IonImageryProvider, CesiumTerrainProvider, ColorMaterialProperty, BoundingSphere, GeometryInstance, ScreenSpaceEventHandler, ScreenSpaceEventType, Intersect } from 'cesium';
4
4
 
5
5
  /*! *****************************************************************************
6
6
  Copyright (c) Microsoft Corporation. All rights reserved.
@@ -10593,18 +10593,24 @@ var TilesetOsmRenderManager;
10593
10593
  this.sourceId = (_a = menuItem.BruceEntity) === null || _a === void 0 ? void 0 : _a.SourceId;
10594
10594
  this.entityTypeId = (_b = menuItem.BruceEntity) === null || _b === void 0 ? void 0 : _b["EntityType.ID"];
10595
10595
  (function () { return __awaiter(_this, void 0, void 0, function () {
10596
- var CESIUM, cTileset;
10596
+ var validToken, CESIUM, cTileset;
10597
10597
  var _this = this;
10598
10598
  return __generator(this, function (_a) {
10599
10599
  switch (_a.label) {
10600
- case 0:
10600
+ case 0: return [4 /*yield*/, ViewerUtils.AssertIonToken(Ion.defaultAccessToken)];
10601
+ case 1:
10602
+ validToken = _a.sent();
10603
+ if (!validToken) {
10604
+ console.warn("'tileset-osm-render-manager.ts' could not locate a valid Cesium Ion token.");
10605
+ return [2 /*return*/];
10606
+ }
10601
10607
  CESIUM = Cesium;
10602
- if (!CESIUM["createOsmBuildingsAsync"]) return [3 /*break*/, 2];
10608
+ if (!CESIUM["createOsmBuildingsAsync"]) return [3 /*break*/, 3];
10603
10609
  return [4 /*yield*/, CESIUM.createOsmBuildingsAsync({})];
10604
- case 1:
10605
- cTileset = _a.sent();
10606
- return [3 /*break*/, 3];
10607
10610
  case 2:
10611
+ cTileset = _a.sent();
10612
+ return [3 /*break*/, 4];
10613
+ case 3:
10608
10614
  if (CESIUM["createOsmBuildings"]) {
10609
10615
  cTileset = CESIUM.createOsmBuildings();
10610
10616
  }
@@ -10612,8 +10618,8 @@ var TilesetOsmRenderManager;
10612
10618
  console.warn("'tileset-osm-render-manager.ts' could not locate a create function for OSM buildings.");
10613
10619
  return [2 /*return*/];
10614
10620
  }
10615
- _a.label = 3;
10616
- case 3:
10621
+ _a.label = 4;
10622
+ case 4:
10617
10623
  if (this.disposed) {
10618
10624
  if (this.cTileset && !this.cTileset.isDestroyed()) {
10619
10625
  this.cTileset.destroy();
@@ -11593,18 +11599,18 @@ var TilesetArbRenderManager;
11593
11599
  console.error(e);
11594
11600
  }
11595
11601
  });
11602
+ this.cTileset.tileLoad.addEventListener(function (tile) {
11603
+ try {
11604
+ _this.mapCTile(tile);
11605
+ }
11606
+ catch (e) {
11607
+ console.error(e);
11608
+ }
11609
+ });
11596
11610
  return [2 /*return*/];
11597
11611
  }
11598
11612
  });
11599
11613
  }); })();
11600
- this.cTileset.tileLoad.addEventListener(function (tile) {
11601
- try {
11602
- _this.mapCTile(tile);
11603
- }
11604
- catch (e) {
11605
- console.error(e);
11606
- }
11607
- });
11608
11614
  };
11609
11615
  Manager.prototype.onCTilesetLoad = function () {
11610
11616
  if (this.item.FlyTo) {
@@ -12162,9 +12168,10 @@ var TilesetGooglePhotosRenderManager;
12162
12168
  function Manager(params) {
12163
12169
  this.disposed = false;
12164
12170
  this.cTileset = null;
12165
- var viewer = params.viewer, item = params.item;
12171
+ var viewer = params.viewer, item = params.item, getters = params.getters;
12166
12172
  this.viewer = viewer;
12167
12173
  this.item = item;
12174
+ this.getters = getters;
12168
12175
  }
12169
12176
  Object.defineProperty(Manager.prototype, "Disposed", {
12170
12177
  get: function () {
@@ -12201,17 +12208,43 @@ var TilesetGooglePhotosRenderManager;
12201
12208
  Manager.prototype.Init = function () {
12202
12209
  var _this = this;
12203
12210
  (function () { return __awaiter(_this, void 0, void 0, function () {
12204
- var _a, colorCss;
12205
- var _b, _c;
12206
- return __generator(this, function (_d) {
12207
- switch (_d.label) {
12211
+ var CESIUM, programKey, e_1, _a, colorCss;
12212
+ var _b;
12213
+ return __generator(this, function (_c) {
12214
+ switch (_c.label) {
12208
12215
  case 0:
12209
- // Using as any to be OK with older versions.
12210
- _a = this;
12211
- return [4 /*yield*/, ((_c = (_b = Cesium).createGooglePhotorealistic3DTileset) === null || _c === void 0 ? void 0 : _c.call(_b))];
12216
+ CESIUM = Cesium;
12217
+ if (!CESIUM.createGooglePhotorealistic3DTileset) {
12218
+ console.warn("Cesium version does not support 'createGooglePhotorealistic3DTileset' so Google Photos tileset will not be rendered.");
12219
+ return [2 /*return*/];
12220
+ }
12221
+ if (!!CESIUM.GoogleMaps.defaultApiKey) return [3 /*break*/, 4];
12222
+ _c.label = 1;
12212
12223
  case 1:
12213
- // Using as any to be OK with older versions.
12214
- _a.cTileset = _d.sent();
12224
+ _c.trys.push([1, 3, , 4]);
12225
+ return [4 /*yield*/, ProgramKey.Get({
12226
+ programId: ProgramKey.EProgramId.Google,
12227
+ api: this.getters.GetBruceApi()
12228
+ })];
12229
+ case 2:
12230
+ programKey = (_c.sent()).programKey;
12231
+ if (programKey === null || programKey === void 0 ? void 0 : programKey.Key) {
12232
+ CESIUM.GoogleMaps.defaultApiKey = programKey.Key;
12233
+ }
12234
+ return [3 /*break*/, 4];
12235
+ case 3:
12236
+ e_1 = _c.sent();
12237
+ console.error(e_1);
12238
+ return [3 /*break*/, 4];
12239
+ case 4:
12240
+ if (this.disposed) {
12241
+ this.doDispose();
12242
+ return [2 /*return*/];
12243
+ }
12244
+ _a = this;
12245
+ return [4 /*yield*/, ((_b = CESIUM.createGooglePhotorealistic3DTileset) === null || _b === void 0 ? void 0 : _b.call(CESIUM))];
12246
+ case 5:
12247
+ _a.cTileset = _c.sent();
12215
12248
  if (this.disposed) {
12216
12249
  this.doDispose();
12217
12250
  return [2 /*return*/];
@@ -12827,6 +12860,7 @@ var MenuItemManager;
12827
12860
  break;
12828
12861
  case MenuItem.EType.GooglePhotoTileset:
12829
12862
  rItem.renderManager = new TilesetGooglePhotosRenderManager.Manager({
12863
+ getters: params.getters,
12830
12864
  item: params.item,
12831
12865
  viewer: this.viewer,
12832
12866
  });
@@ -16149,6 +16183,8 @@ function backgroundRendering(viewer) {
16149
16183
  }
16150
16184
  }, 1500);
16151
16185
  }
16186
+ // Cache of Cesium Token -> Validity.
16187
+ var _cToken_check_cache = {};
16152
16188
  var ViewerUtils;
16153
16189
  (function (ViewerUtils) {
16154
16190
  /**
@@ -16302,6 +16338,47 @@ var ViewerUtils;
16302
16338
  return widgets;
16303
16339
  }
16304
16340
  ViewerUtils.CreateWidgets = CreateWidgets;
16341
+ /**
16342
+ * Returns if the given token is valid or not.
16343
+ * This will perform a test request to Cesium API.
16344
+ * @param token
16345
+ * @returns
16346
+ */
16347
+ function AssertIonToken(token) {
16348
+ return __awaiter(this, void 0, void 0, function () {
16349
+ var url, response, json, e_1;
16350
+ return __generator(this, function (_a) {
16351
+ switch (_a.label) {
16352
+ case 0:
16353
+ if (!token) {
16354
+ return [2 /*return*/, false];
16355
+ }
16356
+ if (_cToken_check_cache[token] != null) {
16357
+ return [2 /*return*/, _cToken_check_cache[token]];
16358
+ }
16359
+ _a.label = 1;
16360
+ case 1:
16361
+ _a.trys.push([1, 4, , 5]);
16362
+ url = "https://api.cesium.com/v1/assets/1/endpoint?access_token=".concat(token);
16363
+ return [4 /*yield*/, fetch(url)];
16364
+ case 2:
16365
+ response = _a.sent();
16366
+ return [4 /*yield*/, response.json()];
16367
+ case 3:
16368
+ json = _a.sent();
16369
+ _cToken_check_cache[token] = Boolean(json === null || json === void 0 ? void 0 : json.url);
16370
+ return [2 /*return*/, _cToken_check_cache[token]];
16371
+ case 4:
16372
+ e_1 = _a.sent();
16373
+ console.error(e_1);
16374
+ _cToken_check_cache[token] = false;
16375
+ return [3 /*break*/, 5];
16376
+ case 5: return [2 /*return*/];
16377
+ }
16378
+ });
16379
+ });
16380
+ }
16381
+ ViewerUtils.AssertIonToken = AssertIonToken;
16305
16382
  })(ViewerUtils || (ViewerUtils = {}));
16306
16383
 
16307
16384
  /**
@@ -17564,7 +17641,7 @@ var TileRenderEngine;
17564
17641
  (function (Navigator) {
17565
17642
  function GetOrCreateLayer(params) {
17566
17643
  return __awaiter(this, void 0, void 0, function () {
17567
- 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;
17644
+ 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;
17568
17645
  return __generator(this, function (_d) {
17569
17646
  switch (_d.label) {
17570
17647
  case 0:
@@ -17583,18 +17660,32 @@ var TileRenderEngine;
17583
17660
  }
17584
17661
  defaultImg = meta.accountId ? null : ProjectViewTile.DefaultImagery.find(function (x) { return x.id === meta.tilesetId; });
17585
17662
  provider = null;
17586
- if (!defaultImg) return [3 /*break*/, 2];
17587
- return [4 /*yield*/, renderDefaultMapTile(apiGetter, defaultImg.id)];
17663
+ if (!defaultImg) return [3 /*break*/, 5];
17664
+ NEEDS_CESIUM_TOKEN = [
17665
+ ProjectViewTile.EDefaultImagery.BingMapsAerial,
17666
+ ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels,
17667
+ ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels,
17668
+ ];
17669
+ shouldCreate = true;
17670
+ if (!NEEDS_CESIUM_TOKEN.includes(defaultImg.id)) return [3 /*break*/, 2];
17671
+ return [4 /*yield*/, ViewerUtils.AssertIonToken(Ion.defaultAccessToken)];
17588
17672
  case 1:
17589
- provider = _d.sent();
17590
- return [3 /*break*/, 28];
17673
+ shouldCreate = _d.sent();
17674
+ _d.label = 2;
17591
17675
  case 2:
17676
+ if (!shouldCreate) return [3 /*break*/, 4];
17677
+ return [4 /*yield*/, renderDefaultMapTile(apiGetter, defaultImg.id)];
17678
+ case 3:
17679
+ provider = _d.sent();
17680
+ _d.label = 4;
17681
+ case 4: return [3 /*break*/, 31];
17682
+ case 5:
17592
17683
  api = apiGetter.getApi(meta.accountId);
17593
17684
  // Ensure regional url is loaded.
17594
17685
  // When loading stuff in the same account as the default it's likely already loaded,
17595
17686
  // but if we just made an API instance for some external account then it won't be loaded yet.
17596
17687
  return [4 /*yield*/, api.Loading];
17597
- case 3:
17688
+ case 6:
17598
17689
  // Ensure regional url is loaded.
17599
17690
  // When loading stuff in the same account as the default it's likely already loaded,
17600
17691
  // but if we just made an API instance for some external account then it won't be loaded yet.
@@ -17603,7 +17694,7 @@ var TileRenderEngine;
17603
17694
  api: api,
17604
17695
  tilesetId: meta.tilesetId
17605
17696
  })];
17606
- case 4:
17697
+ case 7:
17607
17698
  tileset = (_d.sent()).tileset;
17608
17699
  boundaries = undefined;
17609
17700
  settings = tileset === null || tileset === void 0 ? void 0 : tileset.settings;
@@ -17617,8 +17708,8 @@ var TileRenderEngine;
17617
17708
  minLevel = settings === null || settings === void 0 ? void 0 : settings.levelMin;
17618
17709
  maxLevel = settings === null || settings === void 0 ? void 0 : settings.levelMax;
17619
17710
  hasLevels = !isNaN(minLevel) && !isNaN(maxLevel);
17620
- if (!(tileset.type === Tileset.EType.GeoMap)) return [3 /*break*/, 8];
17621
- if (!TileMapServiceImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 6];
17711
+ if (!(tileset.type === Tileset.EType.GeoMap)) return [3 /*break*/, 11];
17712
+ if (!TileMapServiceImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 9];
17622
17713
  url = Tileset.GetPublicFileUrl({
17623
17714
  api: api,
17624
17715
  tilesetId: meta.tilesetId,
@@ -17633,10 +17724,10 @@ var TileRenderEngine;
17633
17724
  maximumLevel: hasLevels ? maxLevel : undefined,
17634
17725
  minimumLevel: hasLevels ? minLevel : undefined,
17635
17726
  })];
17636
- case 5:
17727
+ case 8:
17637
17728
  provider = _d.sent();
17638
- return [3 /*break*/, 7];
17639
- case 6:
17729
+ return [3 /*break*/, 10];
17730
+ case 9:
17640
17731
  provider = new CESIUM.TileMapServiceImageryProvider({
17641
17732
  url: Tileset.GetPublicFileUrl({
17642
17733
  api: api,
@@ -17651,53 +17742,53 @@ var TileRenderEngine;
17651
17742
  maximumLevel: hasLevels ? maxLevel : undefined,
17652
17743
  minimumLevel: hasLevels ? minLevel : undefined,
17653
17744
  });
17654
- _d.label = 7;
17655
- case 7: return [3 /*break*/, 28];
17656
- case 8:
17657
- if (!(tileset.type === Tileset.EType.ExternalGeoMap)) return [3 /*break*/, 27];
17745
+ _d.label = 10;
17746
+ case 10: return [3 /*break*/, 31];
17747
+ case 11:
17748
+ if (!(tileset.type === Tileset.EType.ExternalGeoMap)) return [3 /*break*/, 30];
17658
17749
  settings_1 = tileset.settings;
17659
17750
  _a = settings_1.mapType;
17660
17751
  switch (_a) {
17661
- case Tileset.Settings.EExternalMapType.CesiumIon: return [3 /*break*/, 9];
17662
- case Tileset.Settings.EExternalMapType.MapBoxImagery: return [3 /*break*/, 16];
17663
- case Tileset.Settings.EExternalMapType.OpenStreetMapImagery: return [3 /*break*/, 20];
17664
- case Tileset.Settings.EExternalMapType.TileMapImagery: return [3 /*break*/, 21];
17665
- case Tileset.Settings.EExternalMapType.CustomTemplate: return [3 /*break*/, 25];
17752
+ case Tileset.Settings.EExternalMapType.CesiumIon: return [3 /*break*/, 12];
17753
+ case Tileset.Settings.EExternalMapType.MapBoxImagery: return [3 /*break*/, 19];
17754
+ case Tileset.Settings.EExternalMapType.OpenStreetMapImagery: return [3 /*break*/, 23];
17755
+ case Tileset.Settings.EExternalMapType.TileMapImagery: return [3 /*break*/, 24];
17756
+ case Tileset.Settings.EExternalMapType.CustomTemplate: return [3 /*break*/, 28];
17666
17757
  }
17667
- return [3 /*break*/, 26];
17668
- case 9:
17669
- if (!settings_1.key) return [3 /*break*/, 10];
17758
+ return [3 /*break*/, 29];
17759
+ case 12:
17760
+ if (!settings_1.key) return [3 /*break*/, 13];
17670
17761
  _b = settings_1.key;
17671
- return [3 /*break*/, 12];
17672
- case 10: return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.CesiumIon, null)];
17673
- case 11:
17762
+ return [3 /*break*/, 15];
17763
+ case 13: return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.CesiumIon, null)];
17764
+ case 14:
17674
17765
  _b = _d.sent();
17675
- _d.label = 12;
17676
- case 12:
17766
+ _d.label = 15;
17767
+ case 15:
17677
17768
  cesiumIonKey = _b;
17678
- if (!IonImageryProvider.hasOwnProperty("fromAssetId")) return [3 /*break*/, 14];
17769
+ if (!IonImageryProvider.hasOwnProperty("fromAssetId")) return [3 /*break*/, 17];
17679
17770
  return [4 /*yield*/, CESIUM.IonImageryProvider.fromAssetId(Number(settings_1.externalId), {
17680
17771
  accessToken: cesiumIonKey
17681
17772
  })];
17682
- case 13:
17773
+ case 16:
17683
17774
  provider = _d.sent();
17684
- return [3 /*break*/, 15];
17685
- case 14:
17775
+ return [3 /*break*/, 18];
17776
+ case 17:
17686
17777
  provider = new CESIUM.IonImageryProvider({
17687
17778
  assetId: Number(settings_1.externalId),
17688
17779
  accessToken: cesiumIonKey
17689
17780
  });
17690
- _d.label = 15;
17691
- case 15: return [3 /*break*/, 26];
17692
- case 16:
17693
- if (!settings_1.key) return [3 /*break*/, 17];
17781
+ _d.label = 18;
17782
+ case 18: return [3 /*break*/, 29];
17783
+ case 19:
17784
+ if (!settings_1.key) return [3 /*break*/, 20];
17694
17785
  _c = settings_1.key;
17695
- return [3 /*break*/, 19];
17696
- case 17: return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, null)];
17697
- case 18:
17786
+ return [3 /*break*/, 22];
17787
+ case 20: return [4 /*yield*/, findKey(apiGetter, ProgramKey.EProgramId.Mapbox, null)];
17788
+ case 21:
17698
17789
  _c = _d.sent();
17699
- _d.label = 19;
17700
- case 19:
17790
+ _d.label = 22;
17791
+ case 22:
17701
17792
  mapboxKey = _c;
17702
17793
  provider = new UrlTemplateImageryProvider({
17703
17794
  url: "https://api.mapbox.com/styles/v1/"
@@ -17705,8 +17796,8 @@ var TileRenderEngine;
17705
17796
  "/tiles/256/{z}/{x}/{y}?access_token="
17706
17797
  + mapboxKey
17707
17798
  });
17708
- return [3 /*break*/, 26];
17709
- case 20:
17799
+ return [3 /*break*/, 29];
17800
+ case 23:
17710
17801
  provider = new OpenStreetMapImageryProvider({
17711
17802
  url: settings_1.url,
17712
17803
  fileExtension: prepareFileExt(settings_1.fileExtension),
@@ -17715,9 +17806,9 @@ var TileRenderEngine;
17715
17806
  // maximumLevel: hasLevels ? maxLevel : undefined,
17716
17807
  // minimumLevel: hasLevels ? minLevel : undefined,
17717
17808
  });
17718
- return [3 /*break*/, 26];
17719
- case 21:
17720
- if (!TileMapServiceImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 23];
17809
+ return [3 /*break*/, 29];
17810
+ case 24:
17811
+ if (!TileMapServiceImageryProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 26];
17721
17812
  return [4 /*yield*/, CESIUM.TileMapServiceImageryProvider.fromUrl(settings_1.url, {
17722
17813
  fileExtension: prepareFileExt(settings_1.fileExtension),
17723
17814
  // Unused until tested properly. In the past these settings caused large lag.
@@ -17725,10 +17816,10 @@ var TileRenderEngine;
17725
17816
  // maximumLevel: hasLevels ? maxLevel : undefined,
17726
17817
  // minimumLevel: hasLevels ? minLevel : undefined,
17727
17818
  })];
17728
- case 22:
17819
+ case 25:
17729
17820
  provider = _d.sent();
17730
- return [3 /*break*/, 24];
17731
- case 23:
17821
+ return [3 /*break*/, 27];
17822
+ case 26:
17732
17823
  provider = new CESIUM.TileMapServiceImageryProvider({
17733
17824
  url: settings_1.url,
17734
17825
  fileExtension: prepareFileExt(settings_1.fileExtension),
@@ -17737,15 +17828,15 @@ var TileRenderEngine;
17737
17828
  // maximumLevel: hasLevels ? maxLevel : undefined,
17738
17829
  // minimumLevel: hasLevels ? minLevel : undefined,
17739
17830
  });
17740
- _d.label = 24;
17741
- case 24: return [3 /*break*/, 26];
17742
- case 25:
17831
+ _d.label = 27;
17832
+ case 27: return [3 /*break*/, 29];
17833
+ case 28:
17743
17834
  provider = new UrlTemplateImageryProvider({
17744
17835
  url: settings_1.url
17745
17836
  });
17746
- return [3 /*break*/, 26];
17747
- case 26: return [3 /*break*/, 28];
17748
- case 27:
17837
+ return [3 /*break*/, 29];
17838
+ case 29: return [3 /*break*/, 31];
17839
+ case 30:
17749
17840
  if (tileset.type === Tileset.EType.EntitiesMap) {
17750
17841
  provider = new UrlTemplateImageryProvider({
17751
17842
  url: Tileset.GetPublicFileUrl({
@@ -17763,8 +17854,8 @@ var TileRenderEngine;
17763
17854
  // maximumLevel: hasLevels ? maxLevel : undefined,
17764
17855
  });
17765
17856
  }
17766
- _d.label = 28;
17767
- case 28:
17857
+ _d.label = 31;
17858
+ case 31:
17768
17859
  if (provider) {
17769
17860
  layer = viewer.imageryLayers.addImageryProvider(provider);
17770
17861
  layer._bMeta = meta;
@@ -18020,7 +18111,7 @@ var TileRenderEngine;
18020
18111
  function Render(params) {
18021
18112
  var _a;
18022
18113
  return __awaiter(this, void 0, void 0, function () {
18023
- var iteration, CESIUM, enabledMeta, provider_1, leave, defaultTerr, provider, api, tileset, url, vertexes, settings;
18114
+ var iteration, CESIUM, enabledMeta, provider_1, leave, defaultTerr, provider, shouldCreate, api, tileset, url, vertexes, settings;
18024
18115
  return __generator(this, function (_b) {
18025
18116
  switch (_b.label) {
18026
18117
  case 0:
@@ -18054,18 +18145,27 @@ var TileRenderEngine;
18054
18145
  }
18055
18146
  defaultTerr = params.tile.accountId ? null : ProjectViewTile.DefaultTerrains.find(function (x) { return x.id === params.tile.tilesetId; });
18056
18147
  provider = null;
18057
- if (!defaultTerr) return [3 /*break*/, 2];
18058
- return [4 /*yield*/, renderDefaultTerrTile(defaultTerr.id)];
18148
+ if (!defaultTerr) return [3 /*break*/, 5];
18149
+ shouldCreate = true;
18150
+ if (!(defaultTerr.id == ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain)) return [3 /*break*/, 2];
18151
+ return [4 /*yield*/, ViewerUtils.AssertIonToken(Ion.defaultAccessToken)];
18059
18152
  case 1:
18060
- provider = (_b.sent());
18061
- return [3 /*break*/, 7];
18153
+ shouldCreate = _b.sent();
18154
+ _b.label = 2;
18062
18155
  case 2:
18156
+ if (!shouldCreate) return [3 /*break*/, 4];
18157
+ return [4 /*yield*/, renderDefaultTerrTile(defaultTerr.id)];
18158
+ case 3:
18159
+ provider = (_b.sent());
18160
+ _b.label = 4;
18161
+ case 4: return [3 /*break*/, 10];
18162
+ case 5:
18063
18163
  api = params.apiGetter.getApi(params.tile.accountId);
18064
18164
  // Ensure regional url is loaded.
18065
18165
  // When loading stuff in the same account as the default it's likely already loaded,
18066
18166
  // but if we just made an API instance for some external account then it won't be loaded yet.
18067
18167
  return [4 /*yield*/, api.Loading];
18068
- case 3:
18168
+ case 6:
18069
18169
  // Ensure regional url is loaded.
18070
18170
  // When loading stuff in the same account as the default it's likely already loaded,
18071
18171
  // but if we just made an API instance for some external account then it won't be loaded yet.
@@ -18077,7 +18177,7 @@ var TileRenderEngine;
18077
18177
  api: api,
18078
18178
  tilesetId: params.tile.tilesetId
18079
18179
  })];
18080
- case 4:
18180
+ case 7:
18081
18181
  tileset = (_b.sent()).tileset;
18082
18182
  if (!assertIteration(params.viewer, iteration)) {
18083
18183
  return [2 /*return*/];
@@ -18101,21 +18201,21 @@ var TileRenderEngine;
18101
18201
  else {
18102
18202
  console.error("Invalid tileset type.", tileset);
18103
18203
  }
18104
- if (!url) return [3 /*break*/, 7];
18105
- if (!CESIUM.CesiumTerrainProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 6];
18204
+ if (!url) return [3 /*break*/, 10];
18205
+ if (!CESIUM.CesiumTerrainProvider.hasOwnProperty("fromUrl")) return [3 /*break*/, 9];
18106
18206
  return [4 /*yield*/, CESIUM.CesiumTerrainProvider.fromUrl(url, {
18107
18207
  requestVertexNormals: vertexes
18108
18208
  })];
18109
- case 5:
18209
+ case 8:
18110
18210
  provider = (_b.sent());
18111
- return [3 /*break*/, 7];
18112
- case 6:
18211
+ return [3 /*break*/, 10];
18212
+ case 9:
18113
18213
  provider = new CESIUM.CesiumTerrainProvider({
18114
18214
  url: url,
18115
18215
  requestVertexNormals: vertexes
18116
18216
  });
18117
- _b.label = 7;
18118
- case 7:
18217
+ _b.label = 10;
18218
+ case 10:
18119
18219
  if (provider) {
18120
18220
  provider._bMeta = {
18121
18221
  accountId: params.tile.accountId,
@@ -18141,6 +18241,12 @@ var RELATION_MENU_ITEM_ID = "BOOKMARK_ENTITY_RELATIONS";
18141
18241
  // Used to track if a current in-progress render is the latest.
18142
18242
  // If we're midway through an async function that is rendering a bookmark and this changes, then we stop the function.
18143
18243
  var ITERATION_KEY$1 = "nextspace-view-render-engine-iteration";
18244
+ // Will be set when the account doesn't have its own key.
18245
+ // This can be safely nulled as the code will avoid using things it cannot do without it.
18246
+ // We should do either:
18247
+ // 1- new accounts get our token set.
18248
+ // 2- we reference to the template account's token.
18249
+ var CESIUM_DEFAULT_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiODI1OWQyZC0wYzdlLTRlOTctODFlOC1kYjIwOGYzOWE0NGIiLCJpZCI6MTE3NDg0LCJpYXQiOjE2NzAzODczOTR9.sx0EZdD-Y33FQ7gB_R3CkTsk3KhNpODoQGrnpvSH4UQ";
18144
18250
  /**
18145
18251
  * Creates a new iteration state.
18146
18252
  * This will stop any existing renders from processing to their end.
@@ -18315,15 +18421,60 @@ function renderLegacyNavigator(iteration, params, bookmark, view) {
18315
18421
  * @param bookmark
18316
18422
  * @param view
18317
18423
  */
18318
- function renderNavigator(iteration, params, bookmark, view) {
18424
+ function renderNavigator(iteration, params, bookmark, view, getters) {
18319
18425
  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;
18320
18426
  return __awaiter(this, void 0, void 0, function () {
18321
- 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;
18322
- return __generator(this, function (_7) {
18323
- switch (_7.label) {
18427
+ 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;
18428
+ return __generator(this, function (_8) {
18429
+ switch (_8.label) {
18324
18430
  case 0:
18325
18431
  viewer = params.manager.Viewer;
18326
18432
  scene = viewer.scene;
18433
+ if (!Ion.defaultAccessToken) return [3 /*break*/, 2];
18434
+ return [4 /*yield*/, ViewerUtils.AssertIonToken(Ion.defaultAccessToken)];
18435
+ case 1:
18436
+ _7 = _8.sent();
18437
+ return [3 /*break*/, 3];
18438
+ case 2:
18439
+ _7 = false;
18440
+ _8.label = 3;
18441
+ case 3:
18442
+ cTokenSet = _7;
18443
+ if (!!cTokenSet) return [3 /*break*/, 9];
18444
+ _8.label = 4;
18445
+ case 4:
18446
+ _8.trys.push([4, 8, , 9]);
18447
+ return [4 /*yield*/, ProgramKey.Get({
18448
+ programId: ProgramKey.EProgramId.CesiumIon,
18449
+ api: getters.GetBruceApi()
18450
+ })];
18451
+ case 5:
18452
+ programKey = (_8.sent()).programKey;
18453
+ if (!(programKey === null || programKey === void 0 ? void 0 : programKey.Key)) return [3 /*break*/, 7];
18454
+ return [4 /*yield*/, ViewerUtils.AssertIonToken(programKey.Key)];
18455
+ case 6:
18456
+ valid = _8.sent();
18457
+ if (valid) {
18458
+ Ion.defaultAccessToken = programKey.Key;
18459
+ cTokenSet = true;
18460
+ }
18461
+ _8.label = 7;
18462
+ case 7: return [3 /*break*/, 9];
18463
+ case 8:
18464
+ e_1 = _8.sent();
18465
+ console.error(e_1);
18466
+ return [3 /*break*/, 9];
18467
+ case 9:
18468
+ if (!!cTokenSet) return [3 /*break*/, 11];
18469
+ return [4 /*yield*/, ViewerUtils.AssertIonToken(CESIUM_DEFAULT_TOKEN)];
18470
+ case 10:
18471
+ valid = _8.sent();
18472
+ if (valid) {
18473
+ Ion.defaultAccessToken = CESIUM_DEFAULT_TOKEN;
18474
+ cTokenSet = true;
18475
+ }
18476
+ _8.label = 11;
18477
+ case 11:
18327
18478
  vSettings = view.Settings;
18328
18479
  bSettings = ((_a = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) !== null && _a !== void 0 ? _a : {});
18329
18480
  defaults = (_b = vSettings.defaults) !== null && _b !== void 0 ? _b : {};
@@ -18375,19 +18526,27 @@ function renderNavigator(iteration, params, bookmark, view) {
18375
18526
  }
18376
18527
  }
18377
18528
  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;
18378
- if (!terrain) return [3 /*break*/, 2];
18529
+ if (!terrain) return [3 /*break*/, 13];
18530
+ // If there is no Cesium token set then we'll swap cesium terrain to flat terrain.
18531
+ // This allows a scene to render even if it's not the correct one.
18532
+ if (terrain.tilesetId == ProjectViewTile.EDefaultTerrain.CesiumWorldTerrain && !cTokenSet) {
18533
+ terrain = {
18534
+ tilesetId: ProjectViewTile.EDefaultTerrain.FlatTerrain
18535
+ };
18536
+ console.warn("Cesium Ion token not set, using flat terrain instead of cesium world terrain.");
18537
+ }
18379
18538
  return [4 /*yield*/, TileRenderEngine.Terrain.Navigator.Render({
18380
18539
  apiGetter: params.apiGetter,
18381
18540
  tile: terrain,
18382
18541
  viewer: params.manager.Viewer,
18383
18542
  })];
18384
- case 1:
18385
- _7.sent();
18543
+ case 12:
18544
+ _8.sent();
18386
18545
  if (!assertIteration$1(params.viewer, iteration)) {
18387
18546
  return [2 /*return*/];
18388
18547
  }
18389
- _7.label = 2;
18390
- case 2:
18548
+ _8.label = 13;
18549
+ case 13:
18391
18550
  hillShades = (_o = bookmark === null || bookmark === void 0 ? void 0 : bookmark.Settings) === null || _o === void 0 ? void 0 : _o.hillShades;
18392
18551
  if (hillShades == null) {
18393
18552
  hillShades = (_p = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _p === void 0 ? void 0 : _p.hillShades;
@@ -18605,6 +18764,29 @@ function renderNavigator(iteration, params, bookmark, view) {
18605
18764
  }
18606
18765
  ];
18607
18766
  }
18767
+ else if (imagery === null || imagery === void 0 ? void 0 : imagery.length) {
18768
+ // If the Cesium token is not set then we'll avoid rendering Bing Maps since they won't work.
18769
+ // We'll swap them out to good enough alternatives.
18770
+ if (!cTokenSet) {
18771
+ // Deference the array so we don't modify the original.
18772
+ imagery = JSON.parse(JSON.stringify(imagery));
18773
+ for (i = 0; i < imagery.length; i++) {
18774
+ layer = imagery[i];
18775
+ if (layer.tilesetId == ProjectViewTile.EDefaultImagery.BingMapsAerial) {
18776
+ layer.tilesetId = ProjectViewTile.EDefaultImagery.MapboxSatellite;
18777
+ console.warn("Cesium Ion token not set, using mapbox satellite instead of bing maps aerial.");
18778
+ }
18779
+ else if (layer.tilesetId == ProjectViewTile.EDefaultImagery.BingMapsAerialWithLabels) {
18780
+ layer.tilesetId = ProjectViewTile.EDefaultImagery.MapboxSatellite;
18781
+ console.warn("Cesium Ion token not set, using mapbox satellite instead of bing maps aerial with labels.");
18782
+ }
18783
+ else if (layer.tilesetId == ProjectViewTile.EDefaultImagery.BingMapsRoads) {
18784
+ layer.tilesetId = ProjectViewTile.EDefaultImagery.MapBoxStreets;
18785
+ console.warn("Cesium Ion token not set, using mapbox streets instead of bing maps roads.");
18786
+ }
18787
+ }
18788
+ }
18789
+ }
18608
18790
  // We don't wait for imageries to load, this does not affect rendering other things.
18609
18791
  TileRenderEngine.Map.Navigator.Render({
18610
18792
  apiGetter: params.apiGetter,
@@ -18649,20 +18831,20 @@ function renderNavigator(iteration, params, bookmark, view) {
18649
18831
  });
18650
18832
  }
18651
18833
  }
18652
- if (!bookmark) return [3 /*break*/, 4];
18834
+ if (!bookmark) return [3 /*break*/, 15];
18653
18835
  return [4 /*yield*/, MenuItemCreator.RenderBookmarkItems({
18654
18836
  getters: params.getters,
18655
18837
  manager: params.manager,
18656
18838
  view: view,
18657
18839
  bookmark: bookmark
18658
18840
  })];
18659
- case 3:
18660
- _7.sent();
18841
+ case 14:
18842
+ _8.sent();
18661
18843
  if (!assertIteration$1(params.viewer, iteration)) {
18662
18844
  return [2 /*return*/];
18663
18845
  }
18664
- _7.label = 4;
18665
- case 4:
18846
+ _8.label = 15;
18847
+ case 15:
18666
18848
  if (legacyRelationIds.length || relations.length) {
18667
18849
  if (relations.length) {
18668
18850
  menuItem = {
@@ -18780,7 +18962,7 @@ var ViewRenderEngine;
18780
18962
  case 8:
18781
18963
  _d.sent();
18782
18964
  return [3 /*break*/, 11];
18783
- case 9: return [4 /*yield*/, renderNavigator(iteration, params, bookmark, view)];
18965
+ case 9: return [4 /*yield*/, renderNavigator(iteration, params, bookmark, view, params.getters)];
18784
18966
  case 10:
18785
18967
  _d.sent();
18786
18968
  _d.label = 11;
@@ -19217,7 +19399,7 @@ var CesiumViewMonitor;
19217
19399
  CesiumViewMonitor$$1.Monitor = Monitor;
19218
19400
  })(CesiumViewMonitor || (CesiumViewMonitor = {}));
19219
19401
 
19220
- var VERSION$1 = "3.2.0";
19402
+ var VERSION$1 = "3.2.2";
19221
19403
 
19222
19404
  export { VERSION$1 as VERSION, CesiumViewMonitor, ViewerUtils, MenuItemManager, EntityRenderEngine, MenuItemCreator, VisualsRegister, RenderManager, EntitiesIdsRenderManager, EntitiesLoadedRenderManager, EntitiesRenderManager, EntityRenderManager, TilesetCadRenderManager, TilesetArbRenderManager, TilesetEntitiesRenderManager, TilesetOsmRenderManager, TilesetPointcloudRenderManager, TilesetGooglePhotosRenderManager, DataSourceStaticKmlManager, RelationsRenderManager, SharedGetters, CesiumParabola, EntityLabel, ViewRenderEngine, TileRenderEngine, TilesetRenderEngine, CESIUM_INSPECTOR_KEY, ViewUtils, DrawingUtils, MeasureUtils, EntityUtils, Draw3dPolygon, Draw3dPolyline };
19223
19405
  //# sourceMappingURL=bruce-cesium.es5.js.map