bruce-cesium 4.7.5 → 4.7.7

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 (27) hide show
  1. package/dist/bruce-cesium.es5.js +245 -96
  2. package/dist/bruce-cesium.es5.js.map +1 -1
  3. package/dist/bruce-cesium.umd.js +244 -95
  4. package/dist/bruce-cesium.umd.js.map +1 -1
  5. package/dist/lib/bruce-cesium.js +1 -1
  6. package/dist/lib/rendering/entity-render-engine-point.js +81 -22
  7. package/dist/lib/rendering/entity-render-engine-point.js.map +1 -1
  8. package/dist/lib/rendering/getters/entity-filter-getter.js +8 -1
  9. package/dist/lib/rendering/getters/entity-filter-getter.js.map +1 -1
  10. package/dist/lib/rendering/render-managers/common/shared-getters.js +1 -0
  11. package/dist/lib/rendering/render-managers/common/shared-getters.js.map +1 -1
  12. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js +35 -21
  13. package/dist/lib/rendering/render-managers/entities/entities-render-manager.js.map +1 -1
  14. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js +17 -2
  15. package/dist/lib/rendering/render-managers/tilesets/tileset-arb-render-manager.js.map +1 -1
  16. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js +13 -3
  17. package/dist/lib/rendering/render-managers/tilesets/tileset-cad-render-manager.js.map +1 -1
  18. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js +11 -2
  19. package/dist/lib/rendering/render-managers/tilesets/tileset-entities-render-manager.js.map +1 -1
  20. package/dist/lib/rendering/tileset-render-engine.js +77 -43
  21. package/dist/lib/rendering/tileset-render-engine.js.map +1 -1
  22. package/dist/types/bruce-cesium.d.ts +1 -1
  23. package/dist/types/rendering/getters/entity-filter-getter.d.ts +2 -0
  24. package/dist/types/rendering/render-managers/common/shared-getters.d.ts +1 -0
  25. package/dist/types/rendering/render-managers/entities/entities-render-manager.d.ts +3 -0
  26. package/dist/types/rendering/tileset-render-engine.d.ts +15 -1
  27. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  import { BruceEvent, Cartes, Entity as Entity$1, Carto, Geometry, MathUtils, LRUCache, Api, Calculator, ClientFile, EntityTag, EntityType, ObjectUtils, Style, ProjectViewTile, DelayQueue, EntityLod, Bounds, ZoomControl, EntityRelationType, ENVIRONMENT, EntityHistoricData, Tileset, EntityCoords, DataLab, EntitySource, MenuItem, EntityRelation, ProgramKey, ProjectView, ProjectViewBookmark, Camera, ProjectViewLegacyTile, EntityAttribute, EntityAttachment, EntityAttachmentType, AbstractApi, Session } from 'bruce-models';
2
2
  import * as Cesium from 'cesium';
3
- import { Cartographic, Cartesian2, Math as Math$1, Cartesian3, CallbackProperty, Color, HeightReference, Rectangle, JulianDate, Entity, DistanceDisplayCondition, HorizontalOrigin, VerticalOrigin, ConstantProperty, ClassificationType, ConstantPositionProperty, ArcType, CornerType, ShadowMode, PolygonHierarchy, PolylineGraphics, ColorMaterialProperty, ColorBlendMode, HeadingPitchRoll, Transforms, Model, SceneMode, GeoJsonDataSource, Primitive, Cesium3DTileFeature, Cesium3DTileColorBlendMode, HeadingPitchRange, Cesium3DTileStyle, Ion, KmlDataSource, SceneTransforms, OrthographicFrustum, EasingFunction, NearFarScalar, EllipsoidTerrainProvider, CesiumInspector, defined, ClockRange, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, UrlTemplateImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, TileMapServiceImageryProvider, IonImageryProvider, CesiumTerrainProvider, EllipsoidGeodesic, sampleTerrainMostDetailed, Cesium3DTileset, PolygonPipeline, Matrix4, Matrix3, IonResource, BoundingSphere, GeometryInstance, Quaternion, ModelGraphics, PolygonGraphics, CorridorGraphics, PointGraphics, BillboardGraphics, EllipseGraphics, PolylineDashMaterialProperty, ScreenSpaceEventHandler, ScreenSpaceEventType, CzmlDataSource, Intersect, Fullscreen } from 'cesium';
3
+ import { Cartographic, Cartesian2, Math as Math$1, Cartesian3, CallbackProperty, Color, HeightReference, Rectangle, JulianDate, Entity, DistanceDisplayCondition, ClassificationType, ArcType, CornerType, ShadowMode, ConstantProperty, ConstantPositionProperty, PolygonHierarchy, PolylineGraphics, ColorMaterialProperty, HorizontalOrigin, VerticalOrigin, ColorBlendMode, HeadingPitchRoll, Transforms, Model, SceneMode, GeoJsonDataSource, Primitive, Cesium3DTileFeature, Cesium3DTileColorBlendMode, HeadingPitchRange, Cesium3DTileStyle, Ion, KmlDataSource, OrthographicFrustum, EasingFunction, NearFarScalar, SceneTransforms, EllipsoidTerrainProvider, BingMapsImageryProvider, BingMapsStyle, MapboxImageryProvider, MapboxStyleImageryProvider, ArcGisMapServerImageryProvider, OpenStreetMapImageryProvider, UrlTemplateImageryProvider, GridImageryProvider, GeographicTilingScheme, ImageryLayer, TileMapServiceImageryProvider, IonImageryProvider, CesiumTerrainProvider, CesiumInspector, defined, ClockRange, EllipsoidGeodesic, sampleTerrainMostDetailed, Cesium3DTileset, PolygonPipeline, Matrix4, Matrix3, IonResource, ModelGraphics, PolygonGraphics, CorridorGraphics, PointGraphics, BillboardGraphics, EllipseGraphics, PolylineDashMaterialProperty, BoundingSphere, GeometryInstance, Quaternion, ScreenSpaceEventHandler, ScreenSpaceEventType, CzmlDataSource, Intersect, Fullscreen } from 'cesium';
4
4
 
5
5
  /*! *****************************************************************************
6
6
  Copyright (c) Microsoft Corporation. All rights reserved.
@@ -4229,7 +4229,7 @@ var EntityRenderEnginePoint;
4229
4229
  function Render(params) {
4230
4230
  var _a, _b, _c, _d;
4231
4231
  return __awaiter(this, void 0, void 0, function () {
4232
- var entity, style, type, cEntity, siblings, heightRef, animatePosition, shouldShowTrack, prepareExistingGraphic, updateShouldShowTrack, iconUrlRows, icon, iconUrl, metadata, api, image, e_1, iconScale, disableDepthTest, bColor, cColor, animateColorIn_1, position, series, currentImgKey, series, pos3d, prevPos3d, radius, bFill, cFill, outline, cOutline, outlineWidth, bOutline, pos3d, extrusion, hasOutline, classification, outlineExtrusion, outlineEntity, bColor, cColor, size, circleBillboard, disableDepthTest, animateColorIn_2, position, series, imgKey, currentImgKey, series, pos3d, prevPos3d, lStyle, bColor, cColor, width, lHeightRef, trackEntity;
4232
+ var entity, style, type, cEntity, siblings, heightRef, animatePosition, shouldShowTrack, prepareExistingGraphic, updateShouldShowTrack, iconUrlRows, icon, iconUrl, metadata, api, image, e_1, iconScale, disableDepthTest, bColor, cColor, animateColorIn_1, position, series, currentImgKey, series, pos3d, prevPos3d, radius, bFill, cFill, outline, cOutline, outlineWidth, bOutline, pos3d, extrusion, hasOutline, outlineExtrusion, classification, height, curRadius, curHeightRef, curHeight, curExtHeightRef, curExtHeight, curClassification, outlineHeight, outlineEntity, curRadius, curHeightRef, curHeight, curExtHeightRef, curExtHeight, curClassification, bColor, cColor, size, circleBillboard, disableDepthTest, animateColorIn_2, position, series, imgKey, currentImgKey, series, pos3d, prevPos3d, lStyle, bColor, cColor, width, lHeightRef, trackEntity;
4233
4233
  return __generator(this, function (_e) {
4234
4234
  switch (_e.label) {
4235
4235
  case 0:
@@ -4504,10 +4504,27 @@ var EntityRenderEnginePoint;
4504
4504
  });
4505
4505
  extrusion = getCylinderExtrusion(entity, params.tags, heightRef, style.CylinderFillExtrusion);
4506
4506
  hasOutline = outline && outlineWidth > 0;
4507
+ outlineExtrusion = hasOutline ? getCylinderExtrusion(entity, params.tags, heightRef, style.CylinderBorderExtrusion) : null;
4508
+ // If this doesn't have its own extrusion, we must make it match the sibling.
4509
+ // This way they render in a uniform way.
4510
+ if (hasOutline) {
4511
+ if (outlineExtrusion.value == undefined && extrusion.value != undefined) {
4512
+ outlineExtrusion.exHeightRef = extrusion.exHeightRef;
4513
+ outlineExtrusion.value = 0;
4514
+ }
4515
+ else if (outlineExtrusion.value != undefined && extrusion.value == undefined) {
4516
+ extrusion.exHeightRef = outlineExtrusion.exHeightRef;
4517
+ extrusion.value = 0;
4518
+ }
4519
+ }
4507
4520
  classification = ClassificationType.TERRAIN;
4508
4521
  if (style["drapeOver"] == "ALL") {
4509
4522
  classification = ClassificationType.BOTH;
4510
4523
  }
4524
+ height = undefined;
4525
+ if (heightRef != HeightReference.CLAMP_TO_GROUND && extrusion.value != undefined) {
4526
+ height = Cartographic.fromCartesian(pos3d).height;
4527
+ }
4511
4528
  if (!params.rendered || !params.rendered.ellipse) {
4512
4529
  cEntity = new Entity({
4513
4530
  id: ObjectUtils.UId(10),
@@ -4519,7 +4536,7 @@ var EntityRenderEnginePoint;
4519
4536
  extrudedHeight: extrusion.value,
4520
4537
  heightReference: heightRef,
4521
4538
  extrudedHeightReference: extrusion.exHeightRef,
4522
- height: Cartographic.fromCartesian(pos3d).height,
4539
+ height: height,
4523
4540
  zIndex: 1,
4524
4541
  classificationType: classification,
4525
4542
  distanceDisplayCondition: EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance)
@@ -4531,16 +4548,38 @@ var EntityRenderEnginePoint;
4531
4548
  else {
4532
4549
  prepareExistingGraphic(params.rendered, hasOutline ? 1 : 0);
4533
4550
  cEntity = params.rendered;
4534
- cEntity.ellipse.semiMajorAxis = new ConstantProperty(radius);
4535
- cEntity.ellipse.semiMinorAxis = new ConstantProperty(radius);
4551
+ curRadius = GetCValue(params.viewer, cEntity.ellipse.semiMajorAxis);
4552
+ if (curRadius != radius) {
4553
+ cEntity.ellipse.semiMajorAxis = new ConstantProperty(radius);
4554
+ cEntity.ellipse.semiMinorAxis = new ConstantProperty(radius);
4555
+ }
4536
4556
  cEntity.ellipse.outlineWidth = undefined;
4537
- cEntity.ellipse.extrudedHeight = new ConstantProperty(extrusion.value);
4538
- cEntity.ellipse.heightReference = new ConstantProperty(heightRef);
4539
- cEntity.ellipse.extrudedHeightReference = new ConstantProperty(extrusion.exHeightRef);
4540
- cEntity.ellipse.height = new ConstantProperty(Cartographic.fromCartesian(pos3d).height);
4557
+ {
4558
+ curHeightRef = GetCValue(params.viewer, cEntity.ellipse.heightReference);
4559
+ if (curHeightRef != heightRef) {
4560
+ cEntity.ellipse.heightReference = new ConstantProperty(heightRef);
4561
+ }
4562
+ curHeight = GetCValue(params.viewer, cEntity.ellipse.height);
4563
+ if (curHeight != height) {
4564
+ cEntity.ellipse.height = new ConstantProperty(height);
4565
+ }
4566
+ }
4567
+ {
4568
+ curExtHeightRef = GetCValue(params.viewer, cEntity.ellipse.extrudedHeightReference);
4569
+ if (curExtHeightRef != extrusion.exHeightRef) {
4570
+ cEntity.ellipse.extrudedHeightReference = new ConstantProperty(extrusion.exHeightRef);
4571
+ }
4572
+ curExtHeight = GetCValue(params.viewer, cEntity.ellipse.extrudedHeight);
4573
+ if (curExtHeight != extrusion.value) {
4574
+ cEntity.ellipse.extrudedHeight = new ConstantProperty(extrusion.value);
4575
+ }
4576
+ }
4541
4577
  cEntity.ellipse.zIndex = new ConstantProperty(1);
4542
4578
  cEntity.ellipse.distanceDisplayCondition = new ConstantProperty(EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance));
4543
- cEntity.ellipse.classificationType = new ConstantProperty(classification);
4579
+ curClassification = GetCValue(params.viewer, cEntity.ellipse.classificationType);
4580
+ if (curClassification != classification) {
4581
+ cEntity.ellipse.classificationType = new ConstantProperty(classification);
4582
+ }
4544
4583
  cEntity.position = new ConstantPositionProperty(pos3d === null || pos3d === void 0 ? void 0 : pos3d.clone());
4545
4584
  // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
4546
4585
  // WARNING: ellipse does not support animation (yet?).
@@ -4554,23 +4593,43 @@ var EntityRenderEnginePoint;
4554
4593
  cEntity.show = true;
4555
4594
  }
4556
4595
  if (hasOutline) {
4557
- outlineExtrusion = getCylinderExtrusion(entity, params.tags, heightRef, style.CylinderBorderExtrusion);
4558
- // If this doesn't have its own extrusion, we must make it match the sibling.
4559
- // This way they render in a uniform way.
4560
- if (!outlineExtrusion.value && extrusion.value) {
4561
- outlineExtrusion.exHeightRef = extrusion.exHeightRef;
4596
+ outlineHeight = undefined;
4597
+ if (outlineExtrusion.exHeightRef != HeightReference.CLAMP_TO_GROUND && outlineExtrusion.value != undefined) {
4598
+ outlineHeight = Cartographic.fromCartesian(pos3d).height;
4562
4599
  }
4563
4600
  outlineEntity = siblings === null || siblings === void 0 ? void 0 : siblings[0];
4564
4601
  if (outlineEntity && outlineEntity.ellipse) {
4565
- outlineEntity.ellipse.semiMajorAxis = new ConstantProperty(radius + outlineWidth);
4566
- outlineEntity.ellipse.semiMinorAxis = new ConstantProperty(radius + outlineWidth);
4567
- outlineEntity.ellipse.extrudedHeight = new ConstantProperty(outlineExtrusion.value);
4568
- outlineEntity.ellipse.heightReference = new ConstantProperty(heightRef);
4569
- outlineEntity.ellipse.extrudedHeightReference = new ConstantProperty(outlineExtrusion.exHeightRef);
4570
- outlineEntity.ellipse.height = new ConstantProperty(Cartographic.fromCartesian(pos3d).height);
4602
+ curRadius = GetCValue(params.viewer, outlineEntity.ellipse.semiMajorAxis);
4603
+ if (curRadius != radius + outlineWidth) {
4604
+ outlineEntity.ellipse.semiMajorAxis = new ConstantProperty(radius + outlineWidth);
4605
+ outlineEntity.ellipse.semiMinorAxis = new ConstantProperty(radius + outlineWidth);
4606
+ }
4607
+ {
4608
+ curHeightRef = GetCValue(params.viewer, outlineEntity.ellipse.heightReference);
4609
+ if (curHeightRef != heightRef) {
4610
+ outlineEntity.ellipse.heightReference = new ConstantProperty(heightRef);
4611
+ }
4612
+ curHeight = GetCValue(params.viewer, outlineEntity.ellipse.height);
4613
+ if (curHeight != outlineHeight) {
4614
+ outlineEntity.ellipse.height = new ConstantProperty(outlineHeight);
4615
+ }
4616
+ }
4617
+ {
4618
+ curExtHeightRef = GetCValue(params.viewer, outlineEntity.ellipse.extrudedHeightReference);
4619
+ if (curExtHeightRef != outlineExtrusion.exHeightRef) {
4620
+ outlineEntity.ellipse.extrudedHeightReference = new ConstantProperty(outlineExtrusion.exHeightRef);
4621
+ }
4622
+ curExtHeight = GetCValue(params.viewer, outlineEntity.ellipse.extrudedHeight);
4623
+ if (curExtHeight != outlineExtrusion.value) {
4624
+ outlineEntity.ellipse.extrudedHeight = new ConstantProperty(outlineExtrusion.value);
4625
+ }
4626
+ }
4571
4627
  outlineEntity.ellipse.zIndex = new ConstantProperty(2);
4572
4628
  outlineEntity.ellipse.distanceDisplayCondition = new ConstantProperty(EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance));
4573
- outlineEntity.ellipse.classificationType = new ConstantProperty(classification);
4629
+ curClassification = GetCValue(params.viewer, outlineEntity.ellipse.classificationType);
4630
+ if (curClassification != classification) {
4631
+ outlineEntity.ellipse.classificationType = new ConstantProperty(classification);
4632
+ }
4574
4633
  // We'll use "SetDefaultColor" to updating the internal reference and to allow for an animation.
4575
4634
  // WARNING: ellipse does not support animation (yet?).
4576
4635
  CesiumEntityStyler.SetDefaultColor({
@@ -4593,7 +4652,7 @@ var EntityRenderEnginePoint;
4593
4652
  extrudedHeight: outlineExtrusion.value,
4594
4653
  heightReference: heightRef,
4595
4654
  extrudedHeightReference: outlineExtrusion.exHeightRef,
4596
- height: Cartographic.fromCartesian(pos3d).height,
4655
+ height: outlineHeight,
4597
4656
  zIndex: 2,
4598
4657
  classificationType: classification,
4599
4658
  distanceDisplayCondition: EntityRenderEngine.GetDisplayCondition(params.minDistance, params.maxDistance)
@@ -11909,6 +11968,10 @@ var EntitiesRenderManager;
11909
11968
  // Highly experimental flag to try improve rendering large sets of polygons and polylines.
11910
11969
  // Many things are not supported when this is enabled.
11911
11970
  this.useGeojson = false;
11971
+ // Zoom control to reference.
11972
+ this.zoomControl = [];
11973
+ // Scenario for retrieving Entities.
11974
+ this.scenario = null;
11912
11975
  var viewer = params.viewer, apiGetter = params.apiGetter, monitor = params.monitor, item = params.item, visualsManager = params.register, sharedGetters = params.sharedGetters;
11913
11976
  this.viewer = viewer;
11914
11977
  this.sharedGetters = sharedGetters;
@@ -11930,15 +11993,16 @@ var EntitiesRenderManager;
11930
11993
  });
11931
11994
  Manager.prototype.Init = function (params) {
11932
11995
  var _this = this;
11933
- var _a, _b, _c, _d, _e, _f;
11996
+ var _a, _b, _c, _d, _e, _f, _g;
11934
11997
  if (this.disposed) {
11935
11998
  throw (new Error("This item is disposed."));
11936
11999
  }
11937
12000
  if (params === null || params === void 0 ? void 0 : params.item) {
11938
12001
  this.item = params.item;
11939
12002
  }
11940
- if (!((_a = this.item.CameraZoomSettings) === null || _a === void 0 ? void 0 : _a.length)) {
11941
- this.item.CameraZoomSettings = [
12003
+ this.zoomControl = this.item.CameraZoomSettings;
12004
+ if (!((_a = this.zoomControl) === null || _a === void 0 ? void 0 : _a.length)) {
12005
+ this.zoomControl = [
11942
12006
  {
11943
12007
  MinZoom: 0,
11944
12008
  MaxZoom: 200000,
@@ -11949,10 +12013,11 @@ var EntitiesRenderManager;
11949
12013
  }
11950
12014
  ];
11951
12015
  }
11952
- if (this.useGeojson && this.item.CameraZoomSettings.length > 1) {
12016
+ if (this.useGeojson && this.zoomControl.length > 1) {
11953
12017
  console.warn("Geojson rendering does not support multiple zoom controls. Only the first one will be used.");
11954
- this.item.CameraZoomSettings = [this.item.CameraZoomSettings[0]];
12018
+ this.zoomControl = [this.zoomControl[0]];
11955
12019
  }
12020
+ this.scenario = (_b = this.item.BruceEntity) === null || _b === void 0 ? void 0 : _b["Scenario.ID"];
11956
12021
  var isTagItem = Boolean(this.item.BruceEntity.ExpandLayers);
11957
12022
  var tagsToRender = isTagItem ? this.item.BruceEntity.SelectedExpandLayers : null;
11958
12023
  if (!tagsToRender) {
@@ -11961,9 +12026,9 @@ var EntitiesRenderManager;
11961
12026
  tagsToRender = [].concat(tagsToRender);
11962
12027
  var shouldRender = !isTagItem || tagsToRender.length > 0;
11963
12028
  this.unsetGetter();
11964
- (_b = this.viewMonitorRemoval) === null || _b === void 0 ? void 0 : _b.call(this);
12029
+ (_c = this.viewMonitorRemoval) === null || _c === void 0 ? void 0 : _c.call(this);
11965
12030
  this.viewMonitorRemoval = null;
11966
- (_c = this.entityCheckQueue) === null || _c === void 0 ? void 0 : _c.Dispose();
12031
+ (_d = this.entityCheckQueue) === null || _d === void 0 ? void 0 : _d.Dispose();
11967
12032
  this.entityCheckQueue = null;
11968
12033
  clearInterval(this.renderQueueInterval);
11969
12034
  this.renderQueueInterval = null;
@@ -11975,27 +12040,26 @@ var EntitiesRenderManager;
11975
12040
  menuItemId: this.item.id,
11976
12041
  retainTagIds: tagsToRender
11977
12042
  });
11978
- (_d = this.clustering) === null || _d === void 0 ? void 0 : _d.Dispose();
12043
+ (_e = this.clustering) === null || _e === void 0 ? void 0 : _e.Dispose();
11979
12044
  }
11980
12045
  else {
11981
12046
  this.visualsManager.RemoveRegos({
11982
12047
  menuItemId: this.item.id
11983
12048
  });
11984
- (_e = this.clustering) === null || _e === void 0 ? void 0 : _e.Dispose();
12049
+ (_f = this.clustering) === null || _f === void 0 ? void 0 : _f.Dispose();
11985
12050
  return;
11986
12051
  }
11987
12052
  if (this.item.enableClustering) {
11988
- this.clustering = new PointClustering(this.visualsManager, this.item.id, (_f = this.item) === null || _f === void 0 ? void 0 : _f.clustering);
12053
+ this.clustering = new PointClustering(this.visualsManager, this.item.id, (_g = this.item) === null || _g === void 0 ? void 0 : _g.clustering);
11989
12054
  }
11990
12055
  this.setGetter();
11991
12056
  this.viewMonitorRemoval = this.monitor.Updated().Subscribe(function () {
11992
12057
  _this.entityCheckQueue.Call();
11993
12058
  });
11994
12059
  this.entityCheckQueue = new DelayQueue(function () {
11995
- var _a;
11996
12060
  // Don't bother checking for zoom control changes if we only have 1 item.
11997
12061
  // We'll let Cesium handle hide/show at max zoom range.
11998
- var shouldCheck = ((_a = _this.item) === null || _a === void 0 ? void 0 : _a.CameraZoomSettings) && _this.item.CameraZoomSettings.length > 1;
12062
+ var shouldCheck = _this.zoomControl && _this.zoomControl.length > 1;
11999
12063
  if (shouldCheck) {
12000
12064
  _this.doEntityCheck(Object.keys(_this.renderedEntities));
12001
12065
  }
@@ -12025,10 +12089,11 @@ var EntitiesRenderManager;
12025
12089
  cdn: this.item.cdnEnabled,
12026
12090
  historicAttrKey: this.item.BruceEntity.historicAttrKey,
12027
12091
  historicInterpolation: this.item.historicInterpolation,
12028
- schemaId: (_b = this.item.BruceEntity) === null || _b === void 0 ? void 0 : _b.schemaId
12092
+ schemaId: (_b = this.item.BruceEntity) === null || _b === void 0 ? void 0 : _b.schemaId,
12093
+ scenario: this.scenario
12029
12094
  });
12030
12095
  var minMax = RenderManager.GetZoomMinMax({
12031
- zoomControl: this.item.CameraZoomSettings
12096
+ zoomControl: this.zoomControl
12032
12097
  });
12033
12098
  this.getter.IncludeMenuItem(this.item.id, (tagsToRender === null || tagsToRender === void 0 ? void 0 : tagsToRender.length) ? tagsToRender : [], minMax[0], minMax[1]);
12034
12099
  this.getterSub = this.getter.OnUpdate.Subscribe(function (entities) {
@@ -12138,16 +12203,24 @@ var EntitiesRenderManager;
12138
12203
  });
12139
12204
  };
12140
12205
  Manager.prototype.UpdateSettings = function (params) {
12141
- var CameraZoomSettings = params.zoomControl, queueRerender = params.queueRerender;
12206
+ var CameraZoomSettings = params.zoomControl, queueRerender = params.queueRerender, scenario = params.scenario;
12142
12207
  if (this.disposed) {
12143
12208
  return;
12144
12209
  }
12210
+ var changed = false;
12145
12211
  if (CameraZoomSettings === null || CameraZoomSettings === void 0 ? void 0 : CameraZoomSettings.length) {
12146
- this.item.CameraZoomSettings = CameraZoomSettings;
12147
- if (this.renderAsGeojson && this.item.CameraZoomSettings.length > 1) {
12212
+ this.zoomControl = CameraZoomSettings;
12213
+ if (this.renderAsGeojson && this.zoomControl.length > 1) {
12148
12214
  console.warn("Geojson rendering does not support multiple zoom controls. Only the first one will be used.");
12149
- this.item.CameraZoomSettings = [this.item.CameraZoomSettings[0]];
12215
+ this.zoomControl = [this.zoomControl[0]];
12150
12216
  }
12217
+ changed = true;
12218
+ }
12219
+ if (scenario != null) {
12220
+ this.scenario = scenario;
12221
+ changed = true;
12222
+ }
12223
+ if (changed) {
12151
12224
  this.setGetter();
12152
12225
  }
12153
12226
  if (queueRerender != false) {
@@ -12260,7 +12333,7 @@ var EntitiesRenderManager;
12260
12333
  entities = entities.filter(function (x) { var _a; return ((_a = x.Bruce) === null || _a === void 0 ? void 0 : _a["EntityType.ID"]) == typeId_1; });
12261
12334
  }
12262
12335
  if (!this.useGeojson) return [3 /*break*/, 5];
12263
- zoomItem = this.item.CameraZoomSettings[0];
12336
+ zoomItem = this.zoomControl[0];
12264
12337
  if (!(zoomItem.DisplayType == ZoomControl.EDisplayType.Point)) return [3 /*break*/, 2];
12265
12338
  // We'll just render these as individuals since we don't support point geojson.
12266
12339
  return [4 /*yield*/, this.renderAsIndividuals(entities, force)];
@@ -12310,7 +12383,7 @@ var EntitiesRenderManager;
12310
12383
  var _a;
12311
12384
  _this.renderedEntities[(_a = entity.Bruce) === null || _a === void 0 ? void 0 : _a.ID] = true;
12312
12385
  });
12313
- zoomItem = this.item.CameraZoomSettings[0];
12386
+ zoomItem = this.zoomControl[0];
12314
12387
  if (!(zoomItem.DisplayType == ZoomControl.EDisplayType.Model3D && entities.length)) return [3 /*break*/, 2];
12315
12388
  return [4 /*yield*/, EntityLod.GetLods({
12316
12389
  api: this.apiGetter.getApi(),
@@ -12708,7 +12781,7 @@ var EntitiesRenderManager;
12708
12781
  entities: entities,
12709
12782
  menuItemId: this.item.id,
12710
12783
  visualRegister: this.visualsManager,
12711
- zoomControl: this.item.CameraZoomSettings,
12784
+ zoomControl: this.zoomControl,
12712
12785
  entitiesHistoric: entitiesHistoric,
12713
12786
  entityHistoricDrawTrack: this.item.historicDrawTrack,
12714
12787
  force: force,
@@ -15026,9 +15099,10 @@ var TilesetRenderEngine;
15026
15099
  }
15027
15100
  TilesetRenderEngine.RenderLegacy = RenderLegacy;
15028
15101
  var Styler = /** @class */ (function () {
15029
- function Styler(viewer, api, cTileset, fallbackStyleId, styleMapping, expandSources, menuItemId, register) {
15030
- var _a;
15102
+ function Styler() {
15031
15103
  this.disposed = false;
15104
+ // Indicates if the styler has been loaded/initialized and is ready to style.
15105
+ this.loaded = false;
15032
15106
  this.styleMappingLoaded = false;
15033
15107
  this.styleMappingsLoaded = {};
15034
15108
  this.fallbackStyle = null;
@@ -15037,6 +15111,7 @@ var TilesetRenderEngine;
15037
15111
  // Dictionary of Entity ID -> boolean to indicate which Entities have been styled.
15038
15112
  // This is used to determine if the Style colour needs to be overriden or not.
15039
15113
  this.styledEntityIds = {};
15114
+ this.scenario = 0;
15040
15115
  this.runningQueues = 0;
15041
15116
  this.recordLoadQueue = [];
15042
15117
  this.recordCheckQueue = [];
@@ -15045,30 +15120,6 @@ var TilesetRenderEngine;
15045
15120
  this._styleProgress = 0;
15046
15121
  // Event for when the style progress changes.
15047
15122
  this.OnStyleProgress = new BruceEvent();
15048
- this.viewer = viewer;
15049
- this.api = api;
15050
- this.cTileset = cTileset;
15051
- this.expandSources = expandSources;
15052
- this.fallbackStyleId = fallbackStyleId;
15053
- this.styleMapping = styleMapping;
15054
- if (styleMapping) {
15055
- // Dereference.
15056
- styleMapping = JSON.parse(JSON.stringify(styleMapping));
15057
- }
15058
- // ND-1641. BOOKMARKS - (DEMO) View does not match bookmark.
15059
- // We have some evil hard-coded style mappings that need to be fixed.
15060
- // These exist within legacy project views.
15061
- // Update: This now also lets people have a style mapping without a real style record.
15062
- if ((_a = this.styleMapping) === null || _a === void 0 ? void 0 : _a.length) {
15063
- for (var i = 0; i < this.styleMapping.length; i++) {
15064
- var mapItem = this.styleMapping[i];
15065
- var mapStyle = mapItem.style ? mapItem.style : mapItem.Style;
15066
- this.styleMapping[i].style = correctStyle(mapStyle);
15067
- }
15068
- }
15069
- this.register = register;
15070
- this.menuItemId = menuItemId;
15071
- this.loadStyles();
15072
15123
  }
15073
15124
  Object.defineProperty(Styler.prototype, "Disposed", {
15074
15125
  get: function () {
@@ -15077,6 +15128,13 @@ var TilesetRenderEngine;
15077
15128
  enumerable: false,
15078
15129
  configurable: true
15079
15130
  });
15131
+ Object.defineProperty(Styler.prototype, "Loaded", {
15132
+ get: function () {
15133
+ return this.loaded;
15134
+ },
15135
+ enumerable: false,
15136
+ configurable: true
15137
+ });
15080
15138
  Object.defineProperty(Styler.prototype, "StyleProgress", {
15081
15139
  get: function () {
15082
15140
  return this._styleProgress;
@@ -15084,6 +15142,44 @@ var TilesetRenderEngine;
15084
15142
  enumerable: false,
15085
15143
  configurable: true
15086
15144
  });
15145
+ Styler.prototype.Init = function (params) {
15146
+ var _a;
15147
+ var viewer = params.viewer, api = params.api, cTileset = params.cTileset, fallbackStyleId = params.fallbackStyleId, styleMapping = params.styleMapping, expandSources = params.expandSources, menuItemId = params.menuItemId, register = params.register, scenario = params.scenario;
15148
+ this.viewer = viewer;
15149
+ this.api = api;
15150
+ this.cTileset = cTileset;
15151
+ this.register = register;
15152
+ this.menuItemId = menuItemId;
15153
+ if (expandSources != null) {
15154
+ this.expandSources = expandSources;
15155
+ }
15156
+ if (fallbackStyleId != null) {
15157
+ this.fallbackStyleId = fallbackStyleId;
15158
+ }
15159
+ if (this.styleMapping) {
15160
+ this.styleMapping = styleMapping;
15161
+ if (this.styleMapping) {
15162
+ // Dereference.
15163
+ this.styleMapping = JSON.parse(JSON.stringify(this.styleMapping));
15164
+ }
15165
+ // ND-1641. BOOKMARKS - (DEMO) View does not match bookmark.
15166
+ // We have some evil hard-coded style mappings that need to be fixed.
15167
+ // These exist within legacy project views.
15168
+ // Update: This now also lets people have a style mapping without a real style record.
15169
+ if ((_a = this.styleMapping) === null || _a === void 0 ? void 0 : _a.length) {
15170
+ for (var i = 0; i < this.styleMapping.length; i++) {
15171
+ var mapItem = this.styleMapping[i];
15172
+ var mapStyle = mapItem.style ? mapItem.style : mapItem.Style;
15173
+ this.styleMapping[i].style = correctStyle(mapStyle);
15174
+ }
15175
+ }
15176
+ }
15177
+ if (scenario != null) {
15178
+ this.scenario = scenario;
15179
+ }
15180
+ this.loadStyles();
15181
+ this.loaded = true;
15182
+ };
15087
15183
  /**
15088
15184
  * Updates style mapping and fallback style.
15089
15185
  * This will trigger a re-style of all entities, and will stop existing style loads.
@@ -15119,22 +15215,30 @@ var TilesetRenderEngine;
15119
15215
  if (params.expandSources != null) {
15120
15216
  this.expandSources = params.expandSources;
15121
15217
  }
15122
- // Empty queues.
15123
- // Requeue all.
15124
- this.recordLoadQueue = [];
15125
- this.recordCheckQueue = [];
15126
- var regos = this.register.GetRegos({
15127
- menuItemId: this.menuItemId
15128
- });
15129
- // Reset progress.
15130
- this.updateStyleProgress();
15131
- this.styleMappingLoaded = false;
15132
- this.styleMappingsLoaded = {};
15133
- this.QueueEntities(regos);
15134
- this.loadStyles();
15218
+ if (params.scenario != null) {
15219
+ this.scenario = params.scenario;
15220
+ }
15221
+ if (this.loaded) {
15222
+ // Empty queues.
15223
+ // Requeue all.
15224
+ this.recordLoadQueue = [];
15225
+ this.recordCheckQueue = [];
15226
+ var regos = this.register.GetRegos({
15227
+ menuItemId: this.menuItemId
15228
+ });
15229
+ // Reset progress.
15230
+ this.updateStyleProgress();
15231
+ this.styleMappingLoaded = false;
15232
+ this.styleMappingsLoaded = {};
15233
+ this.QueueEntities(regos);
15234
+ this.loadStyles();
15235
+ }
15135
15236
  };
15136
15237
  Styler.prototype.QueueEntities = function (entities, highPriority) {
15137
15238
  if (highPriority === void 0) { highPriority = false; }
15239
+ if (!this.loaded) {
15240
+ return;
15241
+ }
15138
15242
  // We set a default colour right away to avoid race conditions at later times.
15139
15243
  for (var i = 0; i < entities.length; i++) {
15140
15244
  var entity = entities[i];
@@ -15181,7 +15285,8 @@ var TilesetRenderEngine;
15181
15285
  api: this.api,
15182
15286
  entityIds: batch,
15183
15287
  migrated: true,
15184
- expandSources: this.expandSources
15288
+ expandSources: this.expandSources,
15289
+ scenario: this.scenario
15185
15290
  })];
15186
15291
  case 2:
15187
15292
  entities = (_c.sent()).entities;
@@ -15430,8 +15535,10 @@ var TilesetRenderEngine;
15430
15535
  _c.label = 19;
15431
15536
  case 19:
15432
15537
  this.styleMappingsLoaded[styleMap.EntityTypeID] = true;
15433
- this.processTilesetFeatureCheckQueue();
15434
- this.processQueue();
15538
+ if (this.loaded) {
15539
+ this.processTilesetFeatureCheckQueue();
15540
+ this.processQueue();
15541
+ }
15435
15542
  _c.label = 20;
15436
15543
  case 20:
15437
15544
  i++;
@@ -15441,7 +15548,7 @@ var TilesetRenderEngine;
15441
15548
  return [2 /*return*/];
15442
15549
  }
15443
15550
  this.styleMappingLoaded = true;
15444
- if (!!this.disposed) return [3 /*break*/, 23];
15551
+ if (!(!this.disposed && this.loaded)) return [3 /*break*/, 23];
15445
15552
  return [4 /*yield*/, this.processTilesetFeatureCheckQueue()];
15446
15553
  case 22:
15447
15554
  _c.sent();
@@ -15719,7 +15826,7 @@ var TilesetCadRenderManager;
15719
15826
  function Manager(params) {
15720
15827
  this.disposed = false;
15721
15828
  this.cTileset = null;
15722
- this.styler = null;
15829
+ this.styler = new TilesetRenderEngine.Styler();
15723
15830
  // Indicates the hierarchy depth limit has been hit.
15724
15831
  // This likely means poor data so we have to disable drilling otherwise lag would be too bad.
15725
15832
  // The result is no entity type IDs are known so most styles fail.
@@ -15805,13 +15912,23 @@ var TilesetCadRenderManager;
15805
15912
  }
15806
15913
  this.viewer.scene.requestRender();
15807
15914
  TilesetRenderEngine.OnTilesetReady(this.cTileset).then(function () {
15808
- var _a;
15915
+ var _a, _b;
15809
15916
  try {
15810
15917
  if (_this.disposed || cTileset.isDestroyed()) {
15811
15918
  return;
15812
15919
  }
15813
15920
  _this.onCTilesetLoad();
15814
- _this.styler = new TilesetRenderEngine.Styler(_this.viewer, api, _this.cTileset, _this.item.styleId, _this.item.StyleMapping, (_a = _this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.ExpandSources, _this.item.id, _this.visualsManager);
15921
+ _this.styler.Init({
15922
+ viewer: _this.viewer,
15923
+ api: api,
15924
+ cTileset: _this.cTileset,
15925
+ fallbackStyleId: _this.item.styleId,
15926
+ styleMapping: _this.item.StyleMapping,
15927
+ expandSources: (_a = _this.item.BruceEntity) === null || _a === void 0 ? void 0 : _a.ExpandSources,
15928
+ menuItemId: _this.item.id,
15929
+ register: _this.visualsManager,
15930
+ scenario: (_b = _this.item.BruceEntity) === null || _b === void 0 ? void 0 : _b["Scenario.ID"]
15931
+ });
15815
15932
  _this.viewer.scene.requestRender();
15816
15933
  }
15817
15934
  catch (e) {
@@ -16473,12 +16590,13 @@ var EntityFilterGetter;
16473
16590
  this.maxHeight = 100000;
16474
16591
  this.viewRect = null;
16475
16592
  this.viewCenter = null;
16593
+ this.scenario = 0;
16476
16594
  this.historicRefreshAbortController = null;
16477
16595
  // Entity IDs found for the latest integrity.
16478
16596
  // We use this for refreshing historic data without having to repeat geographic queries.
16479
16597
  this.gatheredIntegrity = null;
16480
16598
  this.gatheredEntityIds = [];
16481
- var api = params.api, viewer = params.viewer, viewPort = params.viewPort, typeId = params.typeId, schemaId = params.schemaId, batchSize = params.batchSize, attrFilter = params.attrFilter, historicAttrKey = params.historicAttrKey, historicInterpolation = params.historicInterpolation, viaCdn = params.viaCdn;
16599
+ var api = params.api, viewer = params.viewer, viewPort = params.viewPort, typeId = params.typeId, schemaId = params.schemaId, batchSize = params.batchSize, attrFilter = params.attrFilter, historicAttrKey = params.historicAttrKey, historicInterpolation = params.historicInterpolation, viaCdn = params.viaCdn, scenario = params.scenario;
16482
16600
  this.api = api;
16483
16601
  this.typeId = typeId;
16484
16602
  this.schemaId = schemaId;
@@ -16489,6 +16607,7 @@ var EntityFilterGetter;
16489
16607
  this.viewPort = viewPort;
16490
16608
  this.attrFilter = attrFilter;
16491
16609
  this.viewer = viewer;
16610
+ this.scenario = scenario ? scenario : 0;
16492
16611
  this.updateBounds();
16493
16612
  }
16494
16613
  Object.defineProperty(Getter.prototype, "OnUpdate", {
@@ -16531,6 +16650,9 @@ var EntityFilterGetter;
16531
16650
  if (this.historicAttrKey) {
16532
16651
  integrity += this.historicAttrKey;
16533
16652
  }
16653
+ if (this.scenario) {
16654
+ integrity += this.scenario;
16655
+ }
16534
16656
  return integrity;
16535
16657
  };
16536
16658
  Getter.prototype.viewAreaSub = function () {
@@ -16809,6 +16931,7 @@ var EntityFilterGetter;
16809
16931
  }
16810
16932
  return [4 /*yield*/, Entity$1.GetList({
16811
16933
  api: this.api,
16934
+ scenario: this.scenario,
16812
16935
  historicKey: this.historicAttrKey,
16813
16936
  historicPoint: this.historicAttrDateTime,
16814
16937
  schemaId: this.schemaId,
@@ -16993,6 +17116,7 @@ var EntityFilterGetter;
16993
17116
  }
16994
17117
  return [4 /*yield*/, Entity$1.GetList({
16995
17118
  api: this.api,
17119
+ scenario: this.scenario,
16996
17120
  historicKey: this.historicAttrKey,
16997
17121
  historicPoint: historicAttrDateTime,
16998
17122
  schemaId: this.schemaId,
@@ -17090,6 +17214,7 @@ function createFilterGetterCacheKey(params) {
17090
17214
  cacheKey += params.schemaId ? params.schemaId : "";
17091
17215
  cacheKey += JSON.stringify(params.tagIds ? params.tagIds : []);
17092
17216
  cacheKey += params.historicAttrKey ? params.historicAttrKey : "";
17217
+ cacheKey += params.scenario ? params.scenario : 0;
17093
17218
  if (params.historicAttrKey) {
17094
17219
  cacheKey += params.historicInterpolation ? "true" : "false";
17095
17220
  }
@@ -17718,7 +17843,7 @@ var TilesetEntitiesRenderManager;
17718
17843
  this.initCounter = 0;
17719
17844
  this.disposed = false;
17720
17845
  this.cTileset = null;
17721
- this.styler = null;
17846
+ this.styler = new TilesetRenderEngine.Styler();
17722
17847
  var viewer = params.viewer, visualsManager = params.register, apiGetter = params.getters, item = params.item;
17723
17848
  this.viewer = viewer;
17724
17849
  this.getters = apiGetter;
@@ -17847,7 +17972,16 @@ var TilesetEntitiesRenderManager;
17847
17972
  }
17848
17973
  if (_this.item.ApplyStyles) {
17849
17974
  var api_1 = _this.getters.GetBruceApi();
17850
- _this.styler = new TilesetRenderEngine.Styler(_this.viewer, api_1, _this.cTileset, +_this.item.styleId, [], false, _this.item.id, _this.visualsManager);
17975
+ _this.styler.Init({
17976
+ viewer: _this.viewer,
17977
+ api: api_1,
17978
+ cTileset: _this.cTileset,
17979
+ fallbackStyleId: +_this.item.styleId,
17980
+ styleMapping: [],
17981
+ expandSources: false,
17982
+ menuItemId: _this.item.id,
17983
+ register: _this.visualsManager
17984
+ });
17851
17985
  }
17852
17986
  _this.onCTilesetLoad();
17853
17987
  _this.viewer.scene.requestRender();
@@ -18311,7 +18445,7 @@ var TilesetArbRenderManager;
18311
18445
  function Manager(params) {
18312
18446
  this.disposed = false;
18313
18447
  this.cTileset = null;
18314
- this.styler = null;
18448
+ this.styler = new TilesetRenderEngine.Styler();
18315
18449
  this.tilesetType = null;
18316
18450
  this.viewer = params.viewer;
18317
18451
  this.getters = params.getters;
@@ -18494,6 +18628,9 @@ var TilesetArbRenderManager;
18494
18628
  }
18495
18629
  this.viewer.scene.requestRender();
18496
18630
  TilesetRenderEngine.OnTilesetReady(this.cTileset).then(function () {
18631
+ if (_this.disposed || _this.viewer.isDestroyed()) {
18632
+ return;
18633
+ }
18497
18634
  // Colour mask to apply to the Tileset as a whole.
18498
18635
  // Individual Entities can override this.
18499
18636
  // This is typically used for Tilesets without Entities to allow some sort of basic styling per-bookmark.
@@ -18516,7 +18653,16 @@ var TilesetArbRenderManager;
18516
18653
  if (_this.item.ApplyStyles ||
18517
18654
  _this.item.Type == MenuItem.EType.IonTileset) {
18518
18655
  var api = _this.getters.GetBruceApi();
18519
- _this.styler = new TilesetRenderEngine.Styler(_this.viewer, api, _this.cTileset, _this.item.styleId, _this.item.StyleMapping, false, _this.item.id, _this.visualsManager);
18656
+ _this.styler.Init({
18657
+ viewer: _this.viewer,
18658
+ api: api,
18659
+ cTileset: _this.cTileset,
18660
+ fallbackStyleId: _this.item.styleId,
18661
+ styleMapping: _this.item.StyleMapping,
18662
+ expandSources: false,
18663
+ menuItemId: _this.item.id,
18664
+ register: _this.visualsManager
18665
+ });
18520
18666
  }
18521
18667
  _this.onCTilesetLoad();
18522
18668
  _this.viewer.scene.requestRender();
@@ -18526,6 +18672,9 @@ var TilesetArbRenderManager;
18526
18672
  }
18527
18673
  });
18528
18674
  this.cTileset.tileLoad.addEventListener(function (tile) {
18675
+ if (_this.disposed || _this.viewer.isDestroyed()) {
18676
+ return;
18677
+ }
18529
18678
  try {
18530
18679
  _this.mapCTile(tile);
18531
18680
  }
@@ -28477,7 +28626,7 @@ var WidgetViewBar = /** @class */ (function (_super) {
28477
28626
  return WidgetViewBar;
28478
28627
  }(Widget.AWidget));
28479
28628
 
28480
- var VERSION = "4.7.5";
28629
+ var VERSION = "4.7.7";
28481
28630
 
28482
28631
  export { VERSION, CesiumViewMonitor, ViewerUtils, ViewerEventTracker, MenuItemManager, EntityRenderEngine, EntityRenderEnginePoint, EntityRenderEnginePolyline, EntityRenderEnginePolygon, EntityRenderEngineModel3d, MenuItemCreator, VisualsRegister, RenderManager, EntitiesIdsRenderManager, DataLabRenderManager, EntitiesLoadedRenderManager, EntitiesRenderManager, EntityRenderManager, TilesetCadRenderManager, TilesetArbRenderManager, TilesetEntitiesRenderManager, TilesetOsmRenderManager, TilesetPointcloudRenderManager, TilesetGooglePhotosRenderManager, DataSourceStaticKmlManager, GoogleSearchRenderManager, RelationsRenderManager, SharedGetters, CesiumParabola, EntityLabel, ViewRenderEngine, TileRenderEngine, TilesetRenderEngine, CESIUM_INSPECTOR_KEY, CESIUM_TIMELINE_KEY, ViewUtils, DrawingUtils, MeasureUtils, EntityUtils, CesiumEntityStyler, CesiumAnimatedProperty, CesiumAnimatedInOut, Draw3dPolygon, Draw3dPolyline, MeasureCreator, Widget, VIEWER_BOOKMARKS_WIDGET_KEY, WidgetBookmarks, WidgetBranding, WidgetCursorBar, WidgetEmbeddedInfoView, WidgetInfoView, WidgetNavCompass$$1 as WidgetNavCompass, VIEWER_VIEW_BAR_WIDGET_KEY, WidgetViewBar, WidgetControlViewBar, WidgetControlViewBarSearch, VIEWER_LEFT_PANEL_WIDGET_KEY, VIEWER_LEFT_PANEL_CSS_VAR_LEFT, WidgetLeftPanel, WidgetLeftPanelTab, WidgetLeftPanelTabBookmarks };
28483
28632
  //# sourceMappingURL=bruce-cesium.es5.js.map