bruce-cesium 5.8.8 → 5.8.9

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.
@@ -3382,11 +3382,31 @@ function calcEntityLocation(entity, modelSpace) {
3382
3382
  if (!worldPosition) {
3383
3383
  return null;
3384
3384
  }
3385
- let offset = new Cartesian3(+worldPosition[0][3], +worldPosition[1][3], +worldPosition[2][3]);
3385
+ let offset;
3386
+ {
3387
+ // Check if we have rotation/scale components (non-identity 3x3 upper-left matrix).
3388
+ const hasRotationOrScale = Math.abs(+worldPosition[0][0] - 1) > 1e-6 || Math.abs(+worldPosition[0][1]) > 1e-6 || Math.abs(+worldPosition[0][2]) > 1e-6 ||
3389
+ Math.abs(+worldPosition[1][0]) > 1e-6 || Math.abs(+worldPosition[1][1] - 1) > 1e-6 || Math.abs(+worldPosition[1][2]) > 1e-6 ||
3390
+ Math.abs(+worldPosition[2][0]) > 1e-6 || Math.abs(+worldPosition[2][1]) > 1e-6 || Math.abs(+worldPosition[2][2] - 1) > 1e-6;
3391
+ if (hasRotationOrScale) {
3392
+ // Extract translation first.
3393
+ const translation = new Cartesian3(+worldPosition[0][3], +worldPosition[1][3], +worldPosition[2][3]);
3394
+ // Extract rotation matrix.
3395
+ const mawp = new Matrix4(+worldPosition[0][0], +worldPosition[0][1], +worldPosition[0][2], +worldPosition[0][3], +worldPosition[1][0], +worldPosition[1][1], +worldPosition[1][2], +worldPosition[1][3], +worldPosition[2][0], +worldPosition[2][1], +worldPosition[2][2], +worldPosition[2][3], +worldPosition[3][0], +worldPosition[3][1], +worldPosition[3][2], +worldPosition[3][3]);
3396
+ let rotmat = new Matrix3();
3397
+ rotmat = Matrix4.getRotation(mawp, rotmat);
3398
+ const inverseRotmat = Matrix3.transpose(rotmat, new Matrix3());
3399
+ offset = Matrix3.multiplyByVector(inverseRotmat, translation, new Cartesian3());
3400
+ }
3401
+ // For translation-only matrices, extract translation directly.
3402
+ else {
3403
+ offset = new Cartesian3(+worldPosition[0][3], +worldPosition[1][3], +worldPosition[2][3]);
3404
+ }
3405
+ }
3386
3406
  let heading = 0;
3387
3407
  let pitch = 0;
3388
3408
  let roll = 0;
3389
- {
3409
+ if (!modelSpace) {
3390
3410
  const eTransform = entity.Bruce.Transform;
3391
3411
  if (eTransform) {
3392
3412
  if (eTransform.heading) {
@@ -16580,9 +16600,21 @@ var TilesetRenderEngine;
16580
16600
  if (transform.scale <= 0) {
16581
16601
  transform.scale = 0.000001;
16582
16602
  }
16583
- // If we're in model-space we'll just go at 0,0 lat/lon.
16603
+ // If we're in model-space we'll just go at 0,0 lat/lon and no h/p/r from the coords.
16584
16604
  if (params.modelSpace) {
16585
16605
  location = null;
16606
+ transform = {
16607
+ heading: 0,
16608
+ pitch: 0,
16609
+ roll: 0,
16610
+ scale: EnsureNumber(transform.scale, 1),
16611
+ x: 0,
16612
+ y: 0,
16613
+ z: 0
16614
+ };
16615
+ if (transform.scale <= 0) {
16616
+ transform.scale = 0.000001;
16617
+ }
16586
16618
  }
16587
16619
  /**
16588
16620
  * Very cursed.
@@ -22455,7 +22487,7 @@ var AssemblyRenderManager;
22455
22487
  continue;
22456
22488
  }
22457
22489
  const pos3d = calcEntityLocation$1(entity, this.modelSpace);
22458
- const orient = calcEntityOrientation(entity, pos3d);
22490
+ const orient = calcEntityOrientation(entity, pos3d, this.modelSpace);
22459
22491
  if (!pos3d || !orient) {
22460
22492
  continue;
22461
22493
  }
@@ -22473,9 +22505,15 @@ var AssemblyRenderManager;
22473
22505
  position: pos3d,
22474
22506
  orientation: new ConstantProperty(orient)
22475
22507
  });
22508
+ const geometryRadius = Entity$1.GetValue({
22509
+ entity: entity,
22510
+ path: ["Bruce", "GeometryRadius"]
22511
+ });
22512
+ cEntity.model["_radius"] = geometryRadius;
22513
+ cEntity.model["_radiusLoaded"] = true;
22476
22514
  this.visualsManager.AddRego({
22477
22515
  rego: {
22478
- canEdit: false,
22516
+ canEdit: true,
22479
22517
  entityId: entity.Bruce.ID,
22480
22518
  menuItemId: this.item.id,
22481
22519
  menuItemType: this.item.Type,
@@ -22736,7 +22774,7 @@ function calcEntityLocation$1(entity, modelSpace) {
22736
22774
  let heading = 0;
22737
22775
  let pitch = 0;
22738
22776
  let roll = 0;
22739
- {
22777
+ if (!modelSpace) {
22740
22778
  const eTransform = entity.Bruce.Transform;
22741
22779
  if (eTransform) {
22742
22780
  if (eTransform.heading) {
@@ -22758,12 +22796,29 @@ function calcEntityLocation$1(entity, modelSpace) {
22758
22796
  pos3d = Matrix4.multiplyByPoint(m1, transformedOffset, new Cartesian3());
22759
22797
  return pos3d;
22760
22798
  }
22761
- function calcEntityOrientation(entity, pos3d) {
22762
- var _a, _b, _c;
22799
+ function calcEntityOrientation(entity, pos3d, modelSpace) {
22763
22800
  if (!entity.Bruce || !pos3d) {
22764
22801
  return null;
22765
22802
  }
22766
- let hpr = HeadingPitchRoll.fromDegrees(((_a = entity.Bruce.Transform) === null || _a === void 0 ? void 0 : _a.heading) || 90, ((_b = entity.Bruce.Transform) === null || _b === void 0 ? void 0 : _b.pitch) || 0, ((_c = entity.Bruce.Transform) === null || _c === void 0 ? void 0 : _c.roll) || 0);
22803
+ // 0 or 90 for these?
22804
+ let heading = 90;
22805
+ let pitch = 0;
22806
+ let roll = 0;
22807
+ if (!modelSpace) {
22808
+ const eTransform = entity.Bruce.Transform;
22809
+ if (eTransform) {
22810
+ if (eTransform.heading) {
22811
+ heading = eTransform.heading;
22812
+ }
22813
+ if (eTransform.pitch) {
22814
+ pitch = eTransform.pitch;
22815
+ }
22816
+ if (eTransform.roll) {
22817
+ roll = eTransform.roll;
22818
+ }
22819
+ }
22820
+ }
22821
+ let hpr = HeadingPitchRoll.fromDegrees(EnsureNumber(heading), EnsureNumber(pitch), EnsureNumber(roll));
22767
22822
  let orientation = Transforms.headingPitchRollQuaternion(pos3d, hpr);
22768
22823
  if (entity.Bruce.AssemblyWorldPosition) {
22769
22824
  // extract rot, scale
@@ -31059,6 +31114,7 @@ var EMode;
31059
31114
  EMode["ShowAvailable"] = "AV";
31060
31115
  EMode["ShowImportantAndAvailable"] = "IMP_AV";
31061
31116
  })(EMode || (EMode = {}));
31117
+ const DISPLAY_ASSEMBLY_INFO = false;
31062
31118
  const OPEN_STORAGE_KEY = "EntityViewSummary_open_";
31063
31119
  const EXCLUDED_PROPERTIES = ["Bruce", "geometry", "position", "boundaries"];
31064
31120
  function isAttributeImportant(mode, entity, path, field) {
@@ -31295,7 +31351,7 @@ class WidgetInfoView extends Widget.AWidget {
31295
31351
  flex-shrink: 1;
31296
31352
  margin-top: 12px;
31297
31353
  overflow: auto;
31298
- padding: 25px;
31354
+ padding: 20px;
31299
31355
  width: 100%;
31300
31356
  }
31301
31357
 
@@ -31306,32 +31362,42 @@ class WidgetInfoView extends Widget.AWidget {
31306
31362
  width: 100%;
31307
31363
  }
31308
31364
 
31365
+ .NextspaceInfoViewLabel {
31366
+ align-items: center;
31367
+ column-gap: 8px;
31368
+ display: flex;
31369
+ flex-wrap: wrap;
31370
+ margin-top: 12px;
31371
+ max-width: 100%;
31372
+ row-gap: 5px;
31373
+ text-align: left;
31374
+ white-space: nowrap;
31375
+ }
31376
+
31309
31377
  .NextspaceInfoViewName {
31310
31378
  font-family: Arial;
31311
31379
  font-style: normal;
31312
31380
  font-weight: 400;
31313
- text-align: center;
31314
- width: 100%;
31381
+ font-size: 12px;
31382
+ letter-spacing: .05em;
31315
31383
  color: #40c4ff;
31316
- font-size: 13px;
31317
- letter-spacing: .01em;
31318
- line-height: 16px;
31319
- margin-bottom: 5px;
31384
+ overflow: hidden;
31385
+ text-overflow: ellipsis;
31386
+ transition: .3s ease;
31387
+ max-width: 100%;
31388
+ width: 100%;
31389
+ width: -webkit-max-content !important;
31390
+ width: max-content !important;
31320
31391
  }
31321
31392
 
31322
31393
  .NextspaceInfoViewType {
31323
31394
  font-family: Arial;
31324
31395
  font-style: normal;
31325
31396
  font-weight: 400;
31326
- text-align: center;
31327
- width: 100%;
31328
- color: #c1c7cd;
31329
- font-size: 10px;
31397
+ font-size: 12px;
31330
31398
  letter-spacing: .05em;
31331
- line-height: 10px;
31332
- margin-bottom: 12px;
31333
- -webkit-user-select: none;
31334
- user-select: none;
31399
+ color: #fff;
31400
+ opacity: .7;
31335
31401
  }
31336
31402
 
31337
31403
  .NextspaceInfoViewTitle {
@@ -31345,7 +31411,7 @@ class WidgetInfoView extends Widget.AWidget {
31345
31411
  -webkit-touch-callout: none;
31346
31412
  -webkit-user-select: none;
31347
31413
  user-select: none;
31348
- margin-top: 20px;
31414
+ margin-top: 10px;
31349
31415
  margin-bottom: 10px;
31350
31416
  }
31351
31417
 
@@ -31367,8 +31433,8 @@ class WidgetInfoView extends Widget.AWidget {
31367
31433
 
31368
31434
  .NextspaceAttributesGroupToggle {
31369
31435
  align-items: center;
31370
- background-color: #343a3f;
31371
- border: 1px solid #343a3f;
31436
+ background-color: #293034;
31437
+ border: 1px solid #494949;
31372
31438
  border-radius: 5px;
31373
31439
  cursor: pointer;
31374
31440
  display: flex;
@@ -31387,13 +31453,11 @@ class WidgetInfoView extends Widget.AWidget {
31387
31453
  .NextspaceAttributesGroupToggleIcon {
31388
31454
  align-items: center;
31389
31455
  display: flex;
31390
- height: 20px;
31456
+ height: 15px;
31391
31457
  justify-content: center;
31392
- margin-left: auto;
31393
31458
  margin-right: 8px;
31394
- width: 20px;
31395
- cursor: pointer;
31396
- white-space: nowrap;
31459
+ position: relative;
31460
+ width: 15px;
31397
31461
  }
31398
31462
 
31399
31463
  .NextspaceAttributesGroup[is-opened="false"] .NextspaceAttributesGroupToggleIconOpened {
@@ -31489,6 +31553,40 @@ class WidgetInfoView extends Widget.AWidget {
31489
31553
  width: 100%;
31490
31554
  user-select: none;
31491
31555
  }
31556
+
31557
+ .NextspaceInputRow {
31558
+ display: flex;
31559
+ flex-direction: row;
31560
+ align-items: center;
31561
+ margin-bottom: 4px;
31562
+ }
31563
+
31564
+ .NextspaceInputRow > label {
31565
+ flex-grow: 0;
31566
+ flex-shrink: 0;
31567
+ width: 120px;
31568
+ margin-right: 5px;
31569
+ color: #f2f4f8;
31570
+ font-family: Arial;
31571
+ font-size: 14px;
31572
+ font-style: normal;
31573
+ font-weight: 500;
31574
+ line-height: 20px;
31575
+ }
31576
+
31577
+ .NextspaceInputRow > input {
31578
+ width: 100px;
31579
+ flex-grow: 1;
31580
+ flex-shrink: 1;
31581
+ background-color: #121619;
31582
+ border: 1px solid #434343;
31583
+ border-radius: 5px;
31584
+ display: flex;
31585
+ height: 35px;
31586
+ color: #fff;
31587
+ font-size: 12px;
31588
+ outline: none;
31589
+ }
31492
31590
  `;
31493
31591
  document.head.appendChild(style);
31494
31592
  }
@@ -31527,13 +31625,16 @@ class WidgetInfoView extends Widget.AWidget {
31527
31625
  const scrollBox = document.createElement("div");
31528
31626
  scrollBox.className = "NextspaceInfoViewScrollBox";
31529
31627
  content.appendChild(scrollBox);
31628
+ const label = document.createElement("div");
31629
+ label.className = "NextspaceInfoViewLabel";
31630
+ scrollBox.appendChild(label);
31530
31631
  const name = document.createElement("div");
31531
31632
  name.className = "NextspaceInfoViewName";
31532
- scrollBox.appendChild(name);
31633
+ label.appendChild(name);
31533
31634
  this._name = name;
31534
31635
  const type = document.createElement("div");
31535
31636
  type.className = "NextspaceInfoViewType";
31536
- scrollBox.appendChild(type);
31637
+ label.appendChild(type);
31537
31638
  this._type = type;
31538
31639
  const imageContainer = document.createElement("div");
31539
31640
  imageContainer.className = "NextspaceDefaultImageContainer";
@@ -31543,11 +31644,6 @@ class WidgetInfoView extends Widget.AWidget {
31543
31644
  scrollBox.appendChild(imageContainer);
31544
31645
  this._imageContainer = imageContainer;
31545
31646
  this._image = image;
31546
- const title = document.createElement("div");
31547
- title.className = "NextspaceInfoViewTitle";
31548
- title.innerText = "Details";
31549
- scrollBox.appendChild(title);
31550
- this._title = title;
31551
31647
  const summary = document.createElement("div");
31552
31648
  summary.className = "NextspaceInfoViewSummary";
31553
31649
  scrollBox.appendChild(summary);
@@ -31571,7 +31667,7 @@ class WidgetInfoView extends Widget.AWidget {
31571
31667
  }
31572
31668
  }
31573
31669
  async _updateInfoView() {
31574
- var _a, _b, _c;
31670
+ var _b, _c, _d;
31575
31671
  const selectedIds = this._manager.VisualsRegister.GetSelected();
31576
31672
  if (selectedIds.length <= 0) {
31577
31673
  this._element.style.display = "none";
@@ -31587,9 +31683,8 @@ class WidgetInfoView extends Widget.AWidget {
31587
31683
  }
31588
31684
  this._lastSelectedId = firstId;
31589
31685
  try {
31590
- this._title.style.display = "none";
31591
31686
  this._flyTo.style.display = "none";
31592
- this._name.innerText = "Loading...";
31687
+ this._name.innerText = "Loading..";
31593
31688
  this._type.innerText = "";
31594
31689
  this._summary.innerHTML = "";
31595
31690
  this._imageContainer.style.display = "none";
@@ -31597,13 +31692,14 @@ class WidgetInfoView extends Widget.AWidget {
31597
31692
  const { entity } = await Entity$1.Get({
31598
31693
  entityId: firstId,
31599
31694
  api: api,
31600
- migrated: true
31695
+ migrated: true,
31696
+ expandLocation: DISPLAY_ASSEMBLY_INFO
31601
31697
  });
31602
31698
  if (!entity) {
31603
31699
  throw (new Error("Could not get entity."));
31604
31700
  }
31605
31701
  const { entityType } = await EntityType.Get({
31606
- entityTypeId: (_a = entity.Bruce) === null || _a === void 0 ? void 0 : _a["EntityType.ID"],
31702
+ entityTypeId: (_b = entity.Bruce) === null || _b === void 0 ? void 0 : _b["EntityType.ID"],
31607
31703
  api: api
31608
31704
  });
31609
31705
  let name = Entity$1.CalculateName({
@@ -31614,7 +31710,6 @@ class WidgetInfoView extends Widget.AWidget {
31614
31710
  if (!name) {
31615
31711
  name = "Unnamed Entity";
31616
31712
  }
31617
- this._title.style.display = "block";
31618
31713
  this._flyTo.style.display = "flex";
31619
31714
  this._name.innerText = name;
31620
31715
  this._type.innerText = (entityType === null || entityType === void 0 ? void 0 : entityType.Name) ? entityType.Name : "Unknown type";
@@ -31634,9 +31729,13 @@ class WidgetInfoView extends Widget.AWidget {
31634
31729
  });
31635
31730
  this._image.style.backgroundImage = `url(${url})`;
31636
31731
  }
31732
+ const detailsTitle = document.createElement("div");
31733
+ detailsTitle.className = "NextspaceInfoViewTitle";
31734
+ detailsTitle.innerText = "Details";
31735
+ this._summary.appendChild(detailsTitle);
31637
31736
  // TODO: Selection for what mode instead of always doing "all".
31638
31737
  const attributes = gatherAttributes(EMode.ShowAll, entity, entityType);
31639
- const groups = groupAttributes(attributes, (_c = (_b = entityType.DataSchema) === null || _b === void 0 ? void 0 : _b.Structure) !== null && _c !== void 0 ? _c : []);
31738
+ const groups = groupAttributes(attributes, (_d = (_c = entityType.DataSchema) === null || _c === void 0 ? void 0 : _c.Structure) !== null && _d !== void 0 ? _d : []);
31640
31739
  for (const group of groups) {
31641
31740
  this._generateAttrGroup(entityType, entity, group);
31642
31741
  }
@@ -31644,7 +31743,7 @@ class WidgetInfoView extends Widget.AWidget {
31644
31743
  catch (e) {
31645
31744
  console.error(e);
31646
31745
  this._name.innerText = "";
31647
- this._summary.innerHTML = "<p>Could not read entity information</p>";
31746
+ this._summary.innerHTML = "<p>Could not read Entity information</p>";
31648
31747
  }
31649
31748
  }
31650
31749
  _generateAttrGroup(type, entity, group) {
@@ -31655,11 +31754,11 @@ class WidgetInfoView extends Widget.AWidget {
31655
31754
  const toggle = document.createElement("div");
31656
31755
  toggle.className = "NextspaceAttributesGroupToggle";
31657
31756
  toggle.innerHTML = `
31658
- ${group.group.Key}
31659
31757
  <div class="NextspaceAttributesGroupToggleIcon">
31660
31758
  <svg class="NextspaceAttributesGroupToggleIconOpened" width="16" height="9" viewBox="0 0 16 9" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15 1L8 8L1 1" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>
31661
- <svg class="NextspaceAttributesGroupToggleIconClosed" width="10" height="17" viewBox="0 0 10 17" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.5 15.5L1.5 8.5L8.5 1.5" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>
31759
+ <svg class="NextspaceAttributesGroupToggleIconClosed" width="10" height="17" viewBox="0 0 10 17" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1.5 1.5L8.5 8.5L1.5 15.5" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg>
31662
31760
  </div>
31761
+ ${group.group.Name ? group.group.Name : group.group.Key}
31663
31762
  `;
31664
31763
  toggle.addEventListener("click", () => {
31665
31764
  const isOpened = groupDiv.getAttribute("is-opened") == "true";
@@ -31669,17 +31768,24 @@ class WidgetInfoView extends Widget.AWidget {
31669
31768
  groupDiv.appendChild(toggle);
31670
31769
  }
31671
31770
  for (const attr of group.attributes) {
31672
- const attrDiv = this._generateAttr(groupDiv, type, entity, attr);
31673
- if (group.group.Key != "ROOT") {
31674
- attrDiv.style.marginLeft = "12px";
31675
- }
31771
+ this._generateAttr(groupDiv, type, entity, attr, group.group.Key != "ROOT");
31676
31772
  }
31677
31773
  this._summary.appendChild(groupDiv);
31678
31774
  }
31679
- _generateAttr(container, type, entity, path) {
31775
+ _generateAttr(container, type, entity, path, nested) {
31680
31776
  var _a, _b, _c;
31681
31777
  const attrDiv = document.createElement("div");
31682
31778
  attrDiv.className = "NextspaceAttribute";
31779
+ if (nested) {
31780
+ const nestedIconStr = `
31781
+ <svg width="11" height="13" viewBox="0 0 11 13" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1V10C1 11.1046 1.89543 12 3 12H10" stroke="#4D5358" stroke-linecap="round" stroke-linejoin="round"></path></svg>
31782
+ `;
31783
+ const nestedIcon = document.createElement("div");
31784
+ nestedIcon.style.marginLeft = "12px";
31785
+ nestedIcon.style.marginRight = "5px";
31786
+ nestedIcon.innerHTML = nestedIconStr;
31787
+ attrDiv.appendChild(nestedIcon);
31788
+ }
31683
31789
  const typeItem = digTypeItem(path, (_b = (_a = type.DataSchema) === null || _a === void 0 ? void 0 : _a.Structure) !== null && _b !== void 0 ? _b : []);
31684
31790
  const attrType = (_c = typeItem === null || typeItem === void 0 ? void 0 : typeItem.Type) !== null && _c !== void 0 ? _c : EntityAttribute.EType.String;
31685
31791
  const input = document.createElement("div");
@@ -32986,7 +33092,7 @@ class WidgetViewBar extends Widget.AWidget {
32986
33092
  }
32987
33093
  }
32988
33094
 
32989
- const VERSION = "5.8.8";
33095
+ const VERSION = "5.8.9";
32990
33096
 
32991
33097
  export { VERSION, CesiumViewMonitor, ViewerUtils, ViewerEventTracker, MenuItemManager, isOutlineChanged, EntityRenderEngine, EntityRenderEnginePoint, EntityRenderEnginePolyline, EntityRenderEnginePolygon, EntityRenderEngineModel3d, MenuItemCreator, VisualsRegister, RenderManager, EntitiesIdsRenderManager, DataLabRenderManager, EntitiesLoadedRenderManager, EntitiesRenderManager, EntityRenderManager, TilesetCadRenderManager, TilesetArbRenderManager, TilesetEntitiesRenderManager, TilesetOsmRenderManager, TilesetPointcloudRenderManager, TilesetGooglePhotosRenderManager, DataSourceStaticKmlManager, GoogleSearchRenderManager, AssemblyRenderManager, RelationsRenderManager, SharedGetters, CesiumParabola, EntityLabel, ViewRenderEngine, TileRenderEngine, TilesetRenderEngine, CESIUM_INSPECTOR_KEY, CESIUM_TIMELINE_KEY, CESIUM_TIMELINE_LIVE_KEY, CESIUM_TIMELINE_LIVE_PADDING_KEY, CESIUM_TIMELINE_INTERVAL_KEY, DEFAULT_LIVE_PADDING_SECONDS, ViewUtils, DrawingUtils, MeasureUtils, EntityUtils, CesiumEntityStyler, CesiumAnimatedProperty, CesiumAnimatedInOut, Draw3dPolygon, Draw3dPolyline, MeasureCreator, Walkthrough, 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 };
32992
33098
  //# sourceMappingURL=bruce-cesium.es5.js.map