bruce-cesium 2.9.1 → 2.9.3

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.
@@ -9774,6 +9774,534 @@
9774
9774
  })(exports.TilesetArbRenderManager || (exports.TilesetArbRenderManager = {}));
9775
9775
 
9776
9776
  (function (RelationsRenderManager) {
9777
+ var Manager = /** @class */ (function () {
9778
+ function Manager(params) {
9779
+ // If true, this menu item is disposed and should not be used.
9780
+ // Any rendering will be ignored.
9781
+ this.disposed = false;
9782
+ var apiGetter = params.apiGetter, item = params.item, register = params.register, viewer = params.viewer;
9783
+ this.apiGetter = apiGetter;
9784
+ this.item = item;
9785
+ this.register = register;
9786
+ this.viewer = viewer;
9787
+ }
9788
+ Object.defineProperty(Manager.prototype, "Disposed", {
9789
+ get: function () {
9790
+ return this.disposed;
9791
+ },
9792
+ enumerable: false,
9793
+ configurable: true
9794
+ });
9795
+ /**
9796
+ * Starts rendering the menu item.
9797
+ * Re-call with an updated menu item to re-render. It will auto-cleanup old relations.
9798
+ * @param params
9799
+ * @returns
9800
+ */
9801
+ Manager.prototype.Init = function (params) {
9802
+ if (this.disposed) {
9803
+ return;
9804
+ }
9805
+ if (params === null || params === void 0 ? void 0 : params.item) {
9806
+ this.item = params.item;
9807
+ }
9808
+ // Remove relationships we no longer want to render.
9809
+ // We'll have to get regos by the menu item ID then run a check on the related rego relationship.
9810
+ var regos = this.register.GetRegos({
9811
+ menuItemId: this.item.id
9812
+ });
9813
+ for (var i = 0; i < regos.length; i++) {
9814
+ var rego = regos[i];
9815
+ if (!this.shouldRenderRelation(rego.relation)) {
9816
+ this.register.RemoveRegos({
9817
+ relation: rego.relation,
9818
+ entityId: rego.entityId,
9819
+ menuItemId: this.item.id,
9820
+ requestRender: false
9821
+ });
9822
+ }
9823
+ }
9824
+ this.viewer.scene.requestRender();
9825
+ this.queueRenderRelations({
9826
+ relations: this.item.relations
9827
+ });
9828
+ };
9829
+ /**
9830
+ * Constructs the rendered state of the menu item from the visuals register.
9831
+ * This will let us see the difference between what the menu item should render vs has rendered.
9832
+ */
9833
+ Manager.prototype.getRenderedState = function () {
9834
+ var items = [];
9835
+ var regos = this.register.GetRegos({
9836
+ menuItemId: this.item.id
9837
+ });
9838
+ var _loop_1 = function (i) {
9839
+ var rego = regos[i];
9840
+ if (!(rego === null || rego === void 0 ? void 0 : rego.relation)) {
9841
+ return "continue";
9842
+ }
9843
+ var relationTypeId = rego.relation["Relation.Type.ID"];
9844
+ if (!relationTypeId) {
9845
+ return "continue";
9846
+ }
9847
+ var group = items.find(function (x) { return x.relationTypeId == relationTypeId; });
9848
+ var entityId = rego.relation["Principal.Entity.ID"];
9849
+ if (!group) {
9850
+ items.push({
9851
+ relationTypeId: relationTypeId,
9852
+ entityIds: [entityId]
9853
+ });
9854
+ }
9855
+ else if (!group.entityIds.includes(entityId)) {
9856
+ group.entityIds.push(entityId);
9857
+ }
9858
+ };
9859
+ for (var i = 0; i < regos.length; i++) {
9860
+ _loop_1(i);
9861
+ }
9862
+ return items;
9863
+ };
9864
+ Manager.prototype.Dispose = function () {
9865
+ if (this.disposed) {
9866
+ return;
9867
+ }
9868
+ this.disposed = true;
9869
+ this.register.RemoveRegos({
9870
+ menuItemId: this.item.id
9871
+ });
9872
+ };
9873
+ /**
9874
+ * Re-renders specific entity relationships.
9875
+ * @param params
9876
+ */
9877
+ Manager.prototype.ReRender = function (params) {
9878
+ var _a;
9879
+ return __awaiter(this, void 0, void 0, function () {
9880
+ var entityIds, force, toReRender, toReRenderDataIds, regos, groups, _loop_2, i;
9881
+ return __generator(this, function (_b) {
9882
+ switch (_b.label) {
9883
+ case 0:
9884
+ entityIds = params.entityIds, force = params.force;
9885
+ toReRenderDataIds = [];
9886
+ if (entityIds == null) {
9887
+ toReRender = this.item.relations;
9888
+ }
9889
+ else {
9890
+ toReRender = [];
9891
+ regos = this.register.GetRegos({
9892
+ menuItemId: this.item.id
9893
+ });
9894
+ groups = this.item.relations;
9895
+ _loop_2 = function (i) {
9896
+ var group = groups[i];
9897
+ var toRenderEntityIds = [];
9898
+ if ((_a = group.entityIds) === null || _a === void 0 ? void 0 : _a.length) {
9899
+ for (var i_1 = 0; i_1 < group.entityIds.length; i_1++) {
9900
+ var groupEntityId = group.entityIds[i_1];
9901
+ // Primary ID matches a re-render entity ID.
9902
+ if (entityIds.includes(groupEntityId)) {
9903
+ toRenderEntityIds.push(groupEntityId);
9904
+ }
9905
+ }
9906
+ }
9907
+ var groupRegos = regos.filter(function (x) { var _a; return ((_a = x.relation) === null || _a === void 0 ? void 0 : _a["Relation.Type.ID"]) == group.relationTypeId; });
9908
+ if (groupRegos.length) {
9909
+ for (var i_2 = 0; i_2 < groupRegos.length; i_2++) {
9910
+ var rego = groupRegos[i_2];
9911
+ var dataEntityId = rego.entityId;
9912
+ // Data ID matches a re-render entity ID.
9913
+ if (dataEntityId && entityIds.includes(dataEntityId) && rego.relation) {
9914
+ // toRenderEntityIds.push(rego.relation["Principal.Entity.ID"]);
9915
+ toReRenderDataIds.push(dataEntityId);
9916
+ }
9917
+ }
9918
+ }
9919
+ if (toRenderEntityIds.length) {
9920
+ toReRender.push({
9921
+ relationTypeId: group.relationTypeId,
9922
+ entityIds: toRenderEntityIds
9923
+ });
9924
+ }
9925
+ };
9926
+ for (i = 0; i < groups.length; i++) {
9927
+ _loop_2(i);
9928
+ }
9929
+ }
9930
+ if (!toReRenderDataIds.length) return [3 /*break*/, 2];
9931
+ return [4 /*yield*/, this.queueRenderDataIds({
9932
+ dataEntityIds: toReRenderDataIds
9933
+ })];
9934
+ case 1:
9935
+ _b.sent();
9936
+ _b.label = 2;
9937
+ case 2:
9938
+ if (!toReRender.length) return [3 /*break*/, 4];
9939
+ return [4 /*yield*/, this.queueRenderRelations({
9940
+ relations: toReRender,
9941
+ force: true
9942
+ })];
9943
+ case 3:
9944
+ _b.sent();
9945
+ _b.label = 4;
9946
+ case 4: return [2 /*return*/];
9947
+ }
9948
+ });
9949
+ });
9950
+ };
9951
+ Manager.prototype.queueRenderDataIds = function (params) {
9952
+ return __awaiter(this, void 0, void 0, function () {
9953
+ var dataEntityIds, i, data, e_1;
9954
+ return __generator(this, function (_a) {
9955
+ switch (_a.label) {
9956
+ case 0:
9957
+ dataEntityIds = params.dataEntityIds;
9958
+ i = 0;
9959
+ _a.label = 1;
9960
+ case 1:
9961
+ if (!(i < dataEntityIds.length)) return [3 /*break*/, 6];
9962
+ _a.label = 2;
9963
+ case 2:
9964
+ _a.trys.push([2, 4, , 5]);
9965
+ return [4 /*yield*/, bruceModels.EntityRelation.GetByDataEntityId({
9966
+ entityId: dataEntityIds[i],
9967
+ api: this.apiGetter.getApi()
9968
+ })];
9969
+ case 3:
9970
+ data = _a.sent();
9971
+ if (data.relation) {
9972
+ if (this.shouldRenderRelation(data.relation)) {
9973
+ this.onGetterUpdate([data.relation]);
9974
+ }
9975
+ }
9976
+ return [3 /*break*/, 5];
9977
+ case 4:
9978
+ e_1 = _a.sent();
9979
+ console.error(e_1);
9980
+ return [3 /*break*/, 5];
9981
+ case 5:
9982
+ i++;
9983
+ return [3 /*break*/, 1];
9984
+ case 6: return [2 /*return*/];
9985
+ }
9986
+ });
9987
+ });
9988
+ };
9989
+ Manager.prototype.queueRenderRelations = function (params) {
9990
+ var _a;
9991
+ return __awaiter(this, void 0, void 0, function () {
9992
+ var relations, force, renderedState, toRender, _loop_3, i, allIds_1, _i, relations_1, relation, entityIds, i, entityId, data, toRender, j, relation, rego, e_2;
9993
+ return __generator(this, function (_b) {
9994
+ switch (_b.label) {
9995
+ case 0:
9996
+ _b.trys.push([0, 5, , 6]);
9997
+ relations = params.relations, force = params.force;
9998
+ if (force != true) {
9999
+ renderedState = this.getRenderedState();
10000
+ toRender = [];
10001
+ _loop_3 = function (i) {
10002
+ var typeId = relations[i].relationTypeId;
10003
+ var group = renderedState.find(function (x) { return x.relationTypeId == typeId; });
10004
+ if (!group || !((_a = group.entityIds) === null || _a === void 0 ? void 0 : _a.length)) {
10005
+ toRender.push(relations[i]);
10006
+ return "continue";
10007
+ }
10008
+ var entityIds = relations[i].entityIds;
10009
+ if (!(entityIds === null || entityIds === void 0 ? void 0 : entityIds.length)) {
10010
+ return "continue";
10011
+ }
10012
+ var toRenderEntityIds = [];
10013
+ for (var j = 0; j < entityIds.length; j++) {
10014
+ var entityId = entityIds[j];
10015
+ if (!group.entityIds.includes(entityId) && !toRenderEntityIds.includes(entityId)) {
10016
+ toRenderEntityIds.push(entityId);
10017
+ }
10018
+ }
10019
+ if (toRenderEntityIds.length) {
10020
+ toRender.push({
10021
+ relationTypeId: typeId,
10022
+ entityIds: toRenderEntityIds
10023
+ });
10024
+ }
10025
+ };
10026
+ for (i = 0; i < relations.length; i++) {
10027
+ _loop_3(i);
10028
+ }
10029
+ if (!toRender.length) {
10030
+ return [2 /*return*/];
10031
+ }
10032
+ relations = toRender;
10033
+ }
10034
+ allIds_1 = [];
10035
+ for (_i = 0, relations_1 = relations; _i < relations_1.length; _i++) {
10036
+ relation = relations_1[_i];
10037
+ entityIds = relation.entityIds;
10038
+ allIds_1.push.apply(allIds_1, entityIds);
10039
+ }
10040
+ allIds_1 = allIds_1.filter(function (id, index) {
10041
+ return allIds_1.indexOf(id) === index;
10042
+ });
10043
+ i = 0;
10044
+ _b.label = 1;
10045
+ case 1:
10046
+ if (!(i < allIds_1.length)) return [3 /*break*/, 4];
10047
+ entityId = allIds_1[i];
10048
+ return [4 /*yield*/, bruceModels.EntityRelation.GetList({
10049
+ entityId: entityId,
10050
+ filter: {
10051
+ oneWayOnly: true,
10052
+ loadEntityData: false
10053
+ },
10054
+ api: this.apiGetter.getApi()
10055
+ })];
10056
+ case 2:
10057
+ data = _b.sent();
10058
+ if (this.disposed || this.viewer.isDestroyed()) {
10059
+ return [2 /*return*/];
10060
+ }
10061
+ toRender = [];
10062
+ for (j = 0; j < data.relations.length; j++) {
10063
+ relation = data.relations[j];
10064
+ if (this.shouldRenderRelation(relation)) {
10065
+ if (force != true) {
10066
+ rego = this.register.GetRego({
10067
+ relation: relation,
10068
+ menuItemId: this.item.id
10069
+ });
10070
+ if (rego === null || rego === void 0 ? void 0 : rego.visual) {
10071
+ continue;
10072
+ }
10073
+ }
10074
+ toRender.push(relation);
10075
+ }
10076
+ }
10077
+ if (toRender.length) {
10078
+ this.onGetterUpdate(toRender);
10079
+ }
10080
+ _b.label = 3;
10081
+ case 3:
10082
+ i++;
10083
+ return [3 /*break*/, 1];
10084
+ case 4: return [3 /*break*/, 6];
10085
+ case 5:
10086
+ e_2 = _b.sent();
10087
+ console.error(e_2);
10088
+ return [3 /*break*/, 6];
10089
+ case 6: return [2 /*return*/];
10090
+ }
10091
+ });
10092
+ });
10093
+ };
10094
+ Manager.prototype.shouldRenderRelation = function (relation) {
10095
+ var _a, _b;
10096
+ var typeId = relation === null || relation === void 0 ? void 0 : relation["Relation.Type.ID"];
10097
+ if (!typeId || !((_b = (_a = this.item) === null || _a === void 0 ? void 0 : _a.relations) === null || _b === void 0 ? void 0 : _b.length)) {
10098
+ return false;
10099
+ }
10100
+ var group = this.item.relations.find(function (x) { return x.relationTypeId == typeId; });
10101
+ if (!(group === null || group === void 0 ? void 0 : group.entityIds)) {
10102
+ return false;
10103
+ }
10104
+ return group.entityIds.includes(relation["Principal.Entity.ID"]);
10105
+ };
10106
+ /**
10107
+ * Renders batch of entity relationships.
10108
+ * This will check if a relationship SHOULD be rendered before rendering it.
10109
+ * It will also handle already rendered relations to avoid re-rendering them.
10110
+ * @param relations
10111
+ */
10112
+ Manager.prototype.onGetterUpdate = function (relations) {
10113
+ var _a, _b;
10114
+ return __awaiter(this, void 0, void 0, function () {
10115
+ var killCEntity, cEntities, key, i, relation, rego, key, cEntity, visual, e_3;
10116
+ var _this = this;
10117
+ return __generator(this, function (_c) {
10118
+ switch (_c.label) {
10119
+ case 0:
10120
+ _c.trys.push([0, 2, , 3]);
10121
+ if (this.disposed || this.viewer.isDestroyed()) {
10122
+ return [2 /*return*/];
10123
+ }
10124
+ relations = relations.filter(function (x) { return _this.shouldRenderRelation(x); });
10125
+ killCEntity = function (cEntity) {
10126
+ if (cEntity && !_this.viewer.isDestroyed() && _this.viewer.entities.contains(cEntity)) {
10127
+ _this.viewer.entities.remove(cEntity);
10128
+ }
10129
+ };
10130
+ return [4 /*yield*/, RelationRenderEngine.Render({
10131
+ apiGetter: this.apiGetter,
10132
+ menuItemId: this.item.id,
10133
+ relations: relations,
10134
+ viewer: this.viewer,
10135
+ visualRegister: this.register
10136
+ })];
10137
+ case 1:
10138
+ cEntities = _c.sent();
10139
+ if (this.disposed) {
10140
+ this.register.RemoveRegos({
10141
+ menuItemId: this.item.id
10142
+ });
10143
+ for (key in cEntities) {
10144
+ killCEntity(cEntities[key]);
10145
+ }
10146
+ return [2 /*return*/];
10147
+ }
10148
+ for (i = 0; i < relations.length; i++) {
10149
+ relation = relations[i];
10150
+ rego = this.register.GetRego({
10151
+ menuItemId: this.item.id,
10152
+ relation: relation
10153
+ });
10154
+ if (rego) {
10155
+ this.register.RemoveRegos({
10156
+ entityId: rego.entityId,
10157
+ menuItemId: this.item.id,
10158
+ relation: relation,
10159
+ requestRender: false,
10160
+ doUpdate: true
10161
+ });
10162
+ }
10163
+ key = RelationRenderEngine.GetRenderGroupId(relation);
10164
+ cEntity = cEntities[key];
10165
+ if (cEntity && this.shouldRenderRelation(relation)) {
10166
+ visual = (_a = this.register.GetRego({
10167
+ relation: relation,
10168
+ menuItemId: this.item.id
10169
+ })) === null || _a === void 0 ? void 0 : _a.visual;
10170
+ if (!visual || visual != cEntity) {
10171
+ this.register.AddRego({
10172
+ rego: {
10173
+ entityId: (_b = relation["Data.Entity.ID"]) !== null && _b !== void 0 ? _b : bruceModels.ObjectUtils.UId(),
10174
+ menuItemId: this.item.id,
10175
+ relation: relation,
10176
+ visual: cEntity,
10177
+ priority: 0,
10178
+ accountId: this.apiGetter.accountId
10179
+ },
10180
+ requestRender: false
10181
+ });
10182
+ }
10183
+ }
10184
+ else {
10185
+ this.register.RemoveRegos({
10186
+ entityId: relation["Data.Entity.ID"],
10187
+ relation: relation,
10188
+ menuItemId: this.item.id,
10189
+ requestRender: false
10190
+ });
10191
+ killCEntity(cEntity);
10192
+ }
10193
+ }
10194
+ this.viewer.scene.requestRender();
10195
+ return [3 /*break*/, 3];
10196
+ case 2:
10197
+ e_3 = _c.sent();
10198
+ console.error(e_3);
10199
+ return [3 /*break*/, 3];
10200
+ case 3: return [2 /*return*/];
10201
+ }
10202
+ });
10203
+ });
10204
+ };
10205
+ return Manager;
10206
+ }());
10207
+ RelationsRenderManager.Manager = Manager;
10208
+ })(exports.RelationsRenderManager || (exports.RelationsRenderManager = {}));
10209
+
10210
+ (function (TilesetGooglePhotosRenderManager) {
10211
+ var Manager = /** @class */ (function () {
10212
+ function Manager(params) {
10213
+ this.disposed = false;
10214
+ this.cTileset = null;
10215
+ var viewer = params.viewer, item = params.item;
10216
+ this.viewer = viewer;
10217
+ this.item = item;
10218
+ }
10219
+ Object.defineProperty(Manager.prototype, "Disposed", {
10220
+ get: function () {
10221
+ return this.disposed;
10222
+ },
10223
+ enumerable: false,
10224
+ configurable: true
10225
+ });
10226
+ Object.defineProperty(Manager.prototype, "Tileset", {
10227
+ get: function () {
10228
+ return this.cTileset;
10229
+ },
10230
+ enumerable: false,
10231
+ configurable: true
10232
+ });
10233
+ Manager.prototype.Dispose = function () {
10234
+ if (this.disposed) {
10235
+ return;
10236
+ }
10237
+ this.doDispose();
10238
+ };
10239
+ Manager.prototype.doDispose = function () {
10240
+ if (this.cTileset) {
10241
+ var viewer = this.viewer;
10242
+ if (!(viewer === null || viewer === void 0 ? void 0 : viewer.isDestroyed()) && this.viewer.scene.primitives.contains(this.cTileset)) {
10243
+ this.cTileset.show = false;
10244
+ this.viewer.scene.primitives.remove(this.cTileset);
10245
+ this.viewer.scene.requestRender();
10246
+ }
10247
+ this.cTileset = null;
10248
+ }
10249
+ };
10250
+ Manager.prototype.Init = function () {
10251
+ var _this = this;
10252
+ (function () { return __awaiter(_this, void 0, void 0, function () {
10253
+ var _a, colorCss;
10254
+ var _b, _c;
10255
+ return __generator(this, function (_d) {
10256
+ switch (_d.label) {
10257
+ case 0:
10258
+ // Using as any to be OK with older versions.
10259
+ _a = this;
10260
+ return [4 /*yield*/, ((_c = (_b = Cesium).createGooglePhotorealistic3DTileset) === null || _c === void 0 ? void 0 : _c.call(_b))];
10261
+ case 1:
10262
+ // Using as any to be OK with older versions.
10263
+ _a.cTileset = _d.sent();
10264
+ if (this.disposed) {
10265
+ this.doDispose();
10266
+ return [2 /*return*/];
10267
+ }
10268
+ this.viewer.scene.primitives.add(this.cTileset);
10269
+ colorCss = this.item.colorMask;
10270
+ if (colorCss) {
10271
+ this.cTileset.style = new Cesium.Cesium3DTileStyle({
10272
+ color: {
10273
+ conditions: [
10274
+ ["true", "color(\"".concat(colorCss, "\")")]
10275
+ ]
10276
+ }
10277
+ });
10278
+ }
10279
+ this.viewer.scene.requestRender();
10280
+ return [2 /*return*/];
10281
+ }
10282
+ });
10283
+ }); })();
10284
+ };
10285
+ Manager.prototype.ReRender = function (params) {
10286
+ return __awaiter(this, void 0, void 0, function () {
10287
+ var entityIds, force;
10288
+ return __generator(this, function (_a) {
10289
+ entityIds = params.entityIds, force = params.force;
10290
+ return [2 /*return*/];
10291
+ });
10292
+ });
10293
+ };
10294
+ return Manager;
10295
+ }());
10296
+ TilesetGooglePhotosRenderManager.Manager = Manager;
10297
+ })(exports.TilesetGooglePhotosRenderManager || (exports.TilesetGooglePhotosRenderManager = {}));
10298
+
10299
+ /**
10300
+ * Deprecated relations render manager.
10301
+ * This follows original navigator logic that renders both up/downstream relationships and ALL relationship types.
10302
+ */
10303
+ var OldRelationsRenderManager;
10304
+ (function (OldRelationsRenderManager) {
9777
10305
  var Manager = /** @class */ (function () {
9778
10306
  function Manager(params) {
9779
10307
  // If true, this menu item is disposed and should not be used.
@@ -10074,97 +10602,8 @@
10074
10602
  };
10075
10603
  return Manager;
10076
10604
  }());
10077
- RelationsRenderManager.Manager = Manager;
10078
- })(exports.RelationsRenderManager || (exports.RelationsRenderManager = {}));
10079
-
10080
- (function (TilesetGooglePhotosRenderManager) {
10081
- var Manager = /** @class */ (function () {
10082
- function Manager(params) {
10083
- this.disposed = false;
10084
- this.cTileset = null;
10085
- var viewer = params.viewer, item = params.item;
10086
- this.viewer = viewer;
10087
- this.item = item;
10088
- }
10089
- Object.defineProperty(Manager.prototype, "Disposed", {
10090
- get: function () {
10091
- return this.disposed;
10092
- },
10093
- enumerable: false,
10094
- configurable: true
10095
- });
10096
- Object.defineProperty(Manager.prototype, "Tileset", {
10097
- get: function () {
10098
- return this.cTileset;
10099
- },
10100
- enumerable: false,
10101
- configurable: true
10102
- });
10103
- Manager.prototype.Dispose = function () {
10104
- if (this.disposed) {
10105
- return;
10106
- }
10107
- this.doDispose();
10108
- };
10109
- Manager.prototype.doDispose = function () {
10110
- if (this.cTileset) {
10111
- var viewer = this.viewer;
10112
- if (!(viewer === null || viewer === void 0 ? void 0 : viewer.isDestroyed()) && this.viewer.scene.primitives.contains(this.cTileset)) {
10113
- this.cTileset.show = false;
10114
- this.viewer.scene.primitives.remove(this.cTileset);
10115
- this.viewer.scene.requestRender();
10116
- }
10117
- this.cTileset = null;
10118
- }
10119
- };
10120
- Manager.prototype.Init = function () {
10121
- var _this = this;
10122
- (function () { return __awaiter(_this, void 0, void 0, function () {
10123
- var _a, colorCss;
10124
- var _b, _c;
10125
- return __generator(this, function (_d) {
10126
- switch (_d.label) {
10127
- case 0:
10128
- // Using as any to be OK with older versions.
10129
- _a = this;
10130
- return [4 /*yield*/, ((_c = (_b = Cesium).createGooglePhotorealistic3DTileset) === null || _c === void 0 ? void 0 : _c.call(_b))];
10131
- case 1:
10132
- // Using as any to be OK with older versions.
10133
- _a.cTileset = _d.sent();
10134
- if (this.disposed) {
10135
- this.doDispose();
10136
- return [2 /*return*/];
10137
- }
10138
- this.viewer.scene.primitives.add(this.cTileset);
10139
- colorCss = this.item.colorMask;
10140
- if (colorCss) {
10141
- this.cTileset.style = new Cesium.Cesium3DTileStyle({
10142
- color: {
10143
- conditions: [
10144
- ["true", "color(\"".concat(colorCss, "\")")]
10145
- ]
10146
- }
10147
- });
10148
- }
10149
- this.viewer.scene.requestRender();
10150
- return [2 /*return*/];
10151
- }
10152
- });
10153
- }); })();
10154
- };
10155
- Manager.prototype.ReRender = function (params) {
10156
- return __awaiter(this, void 0, void 0, function () {
10157
- var entityIds, force;
10158
- return __generator(this, function (_a) {
10159
- entityIds = params.entityIds, force = params.force;
10160
- return [2 /*return*/];
10161
- });
10162
- });
10163
- };
10164
- return Manager;
10165
- }());
10166
- TilesetGooglePhotosRenderManager.Manager = Manager;
10167
- })(exports.TilesetGooglePhotosRenderManager || (exports.TilesetGooglePhotosRenderManager = {}));
10605
+ OldRelationsRenderManager.Manager = Manager;
10606
+ })(OldRelationsRenderManager || (OldRelationsRenderManager = {}));
10168
10607
 
10169
10608
  (function (MenuItemManager) {
10170
10609
  var Manager = /** @class */ (function () {
@@ -10273,12 +10712,21 @@
10273
10712
  }
10274
10713
  // This means we're updating a rendered relationships menu item.
10275
10714
  // Eg: different entities need to be rendered, or one of the relationship data entities changed.
10715
+ // Deprecated: this relationships item is dead and being phased out. Use 'relationships' one instead.
10276
10716
  else if (rItem.type == bruceModels.MenuItem.EType.Relations && params.item.Type == bruceModels.MenuItem.EType.Relations) {
10277
10717
  rItem.renderManager.Init({
10278
10718
  item: params.item,
10279
10719
  });
10280
10720
  rItem.item = params.item;
10281
10721
  }
10722
+ // This means we're updating a rendered relationships menu item.
10723
+ // Eg: different entities need to be rendered, or one of the relationship data entities changed.
10724
+ else if (rItem.type == bruceModels.MenuItem.EType.Relationships && params.item.Type == bruceModels.MenuItem.EType.Relationships) {
10725
+ rItem.renderManager.Init({
10726
+ item: params.item,
10727
+ });
10728
+ rItem.item = params.item;
10729
+ }
10282
10730
  }
10283
10731
  else {
10284
10732
  rItem = {
@@ -10379,7 +10827,17 @@
10379
10827
  register: this.visualsRegister
10380
10828
  });
10381
10829
  break;
10830
+ // Deprecated to support a few demos until new one is phased in.
10831
+ // Use Relationships instead.
10382
10832
  case bruceModels.MenuItem.EType.Relations:
10833
+ rItem.renderManager = new OldRelationsRenderManager.Manager({
10834
+ apiGetter: params.apiGetter,
10835
+ item: params.item,
10836
+ register: this.visualsRegister,
10837
+ viewer: this.viewer
10838
+ });
10839
+ break;
10840
+ case bruceModels.MenuItem.EType.Relationships:
10383
10841
  rItem.renderManager = new exports.RelationsRenderManager.Manager({
10384
10842
  apiGetter: params.apiGetter,
10385
10843
  item: params.item,
@@ -12747,6 +13205,7 @@
12747
13205
  }
12748
13206
  /**
12749
13207
  * Renders DATA_VERSION = 1 navigator.
13208
+ * param iteration
12750
13209
  * @param params
12751
13210
  * @param bookmark
12752
13211
  * @param view
@@ -12870,33 +13329,32 @@
12870
13329
  }
12871
13330
  _f.label = 3;
12872
13331
  case 3:
12873
- if (!((_e = bSettings === null || bSettings === void 0 ? void 0 : bSettings.drawnRelationEntityIDs) === null || _e === void 0 ? void 0 : _e.length)) return [3 /*break*/, 5];
12874
- menuItem = {
12875
- id: RELATION_MENU_ITEM_ID,
12876
- Caption: "Entity relations",
12877
- BruceEntity: {
12878
- EntityIds: bSettings.drawnRelationEntityIDs
12879
- },
12880
- Type: bruceModels.MenuItem.EType.Relations
12881
- };
12882
- return [4 /*yield*/, params.manager.RenderItem({
13332
+ if ((_e = bSettings === null || bSettings === void 0 ? void 0 : bSettings.drawnRelationEntityIDs) === null || _e === void 0 ? void 0 : _e.length) {
13333
+ menuItem = {
13334
+ id: RELATION_MENU_ITEM_ID,
13335
+ Caption: "Entity relations",
13336
+ BruceEntity: {
13337
+ EntityIds: bSettings.drawnRelationEntityIDs
13338
+ },
13339
+ Type: bruceModels.MenuItem.EType.Relations
13340
+ };
13341
+ params.manager.RenderItem({
12883
13342
  apiGetter: params.apiGetter,
12884
13343
  getters: params.getters,
12885
13344
  item: menuItem
12886
- })];
12887
- case 4:
12888
- _f.sent();
12889
- if (!assertIteration$1(params.viewer, iteration)) {
12890
- return [2 /*return*/];
13345
+ });
13346
+ if (!assertIteration$1(params.viewer, iteration)) {
13347
+ return [2 /*return*/];
13348
+ }
12891
13349
  }
12892
- _f.label = 5;
12893
- case 5: return [2 /*return*/];
13350
+ return [2 /*return*/];
12894
13351
  }
12895
13352
  });
12896
13353
  });
12897
13354
  }
12898
13355
  /**
12899
13356
  * Renders DATA_VERSION > 1 navigator.
13357
+ * @param iteration
12900
13358
  * @param params
12901
13359
  * @param bookmark
12902
13360
  * @param view
@@ -12904,7 +13362,7 @@
12904
13362
  function renderNavigator(iteration, params, bookmark, view) {
12905
13363
  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;
12906
13364
  return __awaiter(this, void 0, void 0, function () {
12907
- 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, renderedRelationEntityIds, curEnabled, newItemIds, _i, curEnabled_1, id, menuItem, gOcclusion;
13365
+ 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;
12908
13366
  return __generator(this, function (_7) {
12909
13367
  switch (_7.label) {
12910
13368
  case 0:
@@ -13190,16 +13648,38 @@
13190
13648
  tiles: imagery,
13191
13649
  viewer: params.manager.Viewer,
13192
13650
  });
13193
- renderedRelationEntityIds = bSettings === null || bSettings === void 0 ? void 0 : bSettings.renderedEntityRelations;
13194
- if (!renderedRelationEntityIds) {
13195
- renderedRelationEntityIds = [];
13651
+ legacyRelationIds = bSettings === null || bSettings === void 0 ? void 0 : bSettings.renderedEntityRelations;
13652
+ if (!legacyRelationIds) {
13653
+ legacyRelationIds = [];
13654
+ }
13655
+ relations = bSettings === null || bSettings === void 0 ? void 0 : bSettings.renderedRelations;
13656
+ if (!relations) {
13657
+ relations = [];
13196
13658
  }
13197
13659
  curEnabled = params.manager.GetEnabledItemIds();
13198
13660
  newItemIds = (_5 = bSettings === null || bSettings === void 0 ? void 0 : bSettings.menuItemIds) !== null && _5 !== void 0 ? _5 : [];
13199
13661
  for (_i = 0, curEnabled_1 = curEnabled; _i < curEnabled_1.length; _i++) {
13200
13662
  id = curEnabled_1[_i];
13201
- if (newItemIds.indexOf(id) === -1 ||
13202
- (id == RELATION_MENU_ITEM_ID && !renderedRelationEntityIds.length)) {
13663
+ shouldRemove = void 0;
13664
+ if (id == RELATION_MENU_ITEM_ID) {
13665
+ rendered = params.manager.GetEnabledItem(id);
13666
+ shouldRemove = false;
13667
+ if (!legacyRelationIds.length && !relations.length) {
13668
+ shouldRemove = true;
13669
+ }
13670
+ // If we're about to render legacy relationships but a non-legacy item is currently enabled then we remove it.
13671
+ else if (legacyRelationIds.length && (rendered === null || rendered === void 0 ? void 0 : rendered.type) != bruceModels.MenuItem.EType.Relations) {
13672
+ shouldRemove = true;
13673
+ }
13674
+ // If we're about to render non-legacy relationships but a legacy item is currently enabled then we remove it.
13675
+ else if (relations.length && (rendered === null || rendered === void 0 ? void 0 : rendered.type) != bruceModels.MenuItem.EType.Relationships) {
13676
+ shouldRemove = true;
13677
+ }
13678
+ }
13679
+ else {
13680
+ shouldRemove = newItemIds.indexOf(id) === -1;
13681
+ }
13682
+ if (shouldRemove) {
13203
13683
  params.manager.RemoveItemById({
13204
13684
  menuItemId: id
13205
13685
  });
@@ -13219,26 +13699,37 @@
13219
13699
  }
13220
13700
  _7.label = 4;
13221
13701
  case 4:
13222
- if (!renderedRelationEntityIds.length) return [3 /*break*/, 6];
13223
- menuItem = {
13224
- id: RELATION_MENU_ITEM_ID,
13225
- Caption: "Entity relations",
13226
- BruceEntity: {
13227
- EntityIds: renderedRelationEntityIds
13228
- },
13229
- Type: bruceModels.MenuItem.EType.Relations
13230
- };
13231
- return [4 /*yield*/, params.manager.RenderItem({
13232
- getters: params.getters,
13233
- item: menuItem
13234
- })];
13235
- case 5:
13236
- _7.sent();
13237
- if (!assertIteration$1(params.viewer, iteration)) {
13238
- return [2 /*return*/];
13702
+ if (legacyRelationIds.length || relations.length) {
13703
+ if (relations.length) {
13704
+ menuItem = {
13705
+ id: RELATION_MENU_ITEM_ID,
13706
+ Caption: "Entity relations",
13707
+ relations: relations,
13708
+ Type: bruceModels.MenuItem.EType.Relationships
13709
+ };
13710
+ params.manager.RenderItem({
13711
+ getters: params.getters,
13712
+ item: menuItem
13713
+ });
13714
+ }
13715
+ else if (legacyRelationIds.length) {
13716
+ menuItem = {
13717
+ id: RELATION_MENU_ITEM_ID,
13718
+ Caption: "Entity relations",
13719
+ BruceEntity: {
13720
+ EntityIds: legacyRelationIds
13721
+ },
13722
+ Type: bruceModels.MenuItem.EType.Relations
13723
+ };
13724
+ params.manager.RenderItem({
13725
+ getters: params.getters,
13726
+ item: menuItem
13727
+ });
13728
+ }
13729
+ if (!assertIteration$1(params.viewer, iteration)) {
13730
+ return [2 /*return*/];
13731
+ }
13239
13732
  }
13240
- _7.label = 6;
13241
- case 6:
13242
13733
  gOcclusion = bSettings === null || bSettings === void 0 ? void 0 : bSettings.groundOcclusion;
13243
13734
  if (gOcclusion == null) {
13244
13735
  gOcclusion = (_6 = defaults === null || defaults === void 0 ? void 0 : defaults.settings) === null || _6 === void 0 ? void 0 : _6.groundOcclusion;
@@ -16150,7 +16641,7 @@
16150
16641
  ViewerUtils.CreateWidgets = CreateWidgets;
16151
16642
  })(exports.ViewerUtils || (exports.ViewerUtils = {}));
16152
16643
 
16153
- var VERSION$1 = "2.9.1";
16644
+ var VERSION$1 = "2.9.3";
16154
16645
 
16155
16646
  exports.VERSION = VERSION$1;
16156
16647
  exports.CesiumViewMonitor = CesiumViewMonitor;