@itwin/tree-widget-react 1.2.1 → 2.0.0-dev.0

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 (173) hide show
  1. package/CHANGELOG.md +11 -2
  2. package/README.md +1 -1
  3. package/lib/cjs/TreeWidget.d.ts +0 -1
  4. package/lib/cjs/TreeWidget.js +9 -10
  5. package/lib/cjs/TreeWidget.js.map +1 -1
  6. package/lib/cjs/components/SelectableTree.js +24 -13
  7. package/lib/cjs/components/SelectableTree.js.map +1 -1
  8. package/lib/cjs/components/TreeFilteringState.js +3 -3
  9. package/lib/cjs/components/TreeFilteringState.js.map +1 -1
  10. package/lib/cjs/components/TreeWidgetUiItemsProvider.js +7 -5
  11. package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +1 -1
  12. package/lib/cjs/components/TreeWidgetUiItemsProvider.scss +1 -1
  13. package/lib/cjs/components/tree-header/TreeHeader.js +15 -12
  14. package/lib/cjs/components/tree-header/TreeHeader.js.map +1 -1
  15. package/lib/cjs/components/tree-header/TreeHeader.scss +1 -1
  16. package/lib/cjs/components/trees/CategoriesVisibilityUtils.js +13 -8
  17. package/lib/cjs/components/trees/CategoriesVisibilityUtils.js.map +1 -1
  18. package/lib/cjs/components/trees/VisibilityTreeBase.scss +1 -1
  19. package/lib/cjs/components/trees/VisibilityTreeEventHandler.d.ts +1 -1
  20. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js +25 -28
  21. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js.map +1 -1
  22. package/lib/cjs/components/trees/VisibilityTreeRenderer.d.ts +20 -4
  23. package/lib/cjs/components/trees/VisibilityTreeRenderer.js +28 -10
  24. package/lib/cjs/components/trees/VisibilityTreeRenderer.js.map +1 -1
  25. package/lib/cjs/components/trees/category-tree/CategoriesTree.d.ts +7 -2
  26. package/lib/cjs/components/trees/category-tree/CategoriesTree.js +47 -30
  27. package/lib/cjs/components/trees/category-tree/CategoriesTree.js.map +1 -1
  28. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js +14 -10
  29. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -1
  30. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js +18 -13
  31. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -1
  32. package/lib/cjs/components/trees/common/ContextMenu.js +4 -4
  33. package/lib/cjs/components/trees/common/ContextMenu.js.map +1 -1
  34. package/lib/cjs/components/trees/common/TreeNodeRenderer.d.ts +1 -1
  35. package/lib/cjs/components/trees/common/TreeNodeRenderer.js +4 -4
  36. package/lib/cjs/components/trees/common/TreeNodeRenderer.js.map +1 -1
  37. package/lib/cjs/components/trees/common/TreeRenderer.d.ts +15 -1
  38. package/lib/cjs/components/trees/common/TreeRenderer.js +17 -7
  39. package/lib/cjs/components/trees/common/TreeRenderer.js.map +1 -1
  40. package/lib/cjs/components/trees/common/TreeRenderer.scss +7 -2
  41. package/lib/cjs/components/trees/common/Types.d.ts +8 -0
  42. package/lib/cjs/components/trees/common/Types.js +3 -3
  43. package/lib/cjs/components/trees/common/Types.js.map +1 -1
  44. package/lib/cjs/components/trees/common/UseVisibilityTreeState.d.ts +36 -0
  45. package/lib/cjs/components/trees/common/UseVisibilityTreeState.js +47 -0
  46. package/lib/cjs/components/trees/common/UseVisibilityTreeState.js.map +1 -0
  47. package/lib/cjs/components/trees/common/Utils.js +7 -5
  48. package/lib/cjs/components/trees/common/Utils.js.map +1 -1
  49. package/lib/cjs/components/trees/external-sources-tree/ExternalSources.json +1 -3
  50. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +9 -3
  51. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js +19 -7
  52. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  53. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +4 -4
  54. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  55. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.d.ts +9 -3
  56. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js +16 -12
  57. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  58. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js +6 -5
  59. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  60. package/lib/cjs/components/trees/index.js +3 -3
  61. package/lib/cjs/components/trees/index.js.map +1 -1
  62. package/lib/cjs/components/trees/models-tree/ModelsTree.d.ts +7 -2
  63. package/lib/cjs/components/trees/models-tree/ModelsTree.js +76 -62
  64. package/lib/cjs/components/trees/models-tree/ModelsTree.js.map +1 -1
  65. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js +11 -18
  66. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  67. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.d.ts +9 -0
  68. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js +31 -0
  69. package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js.map +1 -0
  70. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js +125 -66
  71. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js.map +1 -1
  72. package/lib/cjs/components/trees/models-tree/Utils.d.ts +4 -0
  73. package/lib/cjs/components/trees/models-tree/Utils.js +52 -58
  74. package/lib/cjs/components/trees/models-tree/Utils.js.map +1 -1
  75. package/lib/cjs/components/utils/AutoSizer.js +7 -5
  76. package/lib/cjs/components/utils/AutoSizer.js.map +1 -1
  77. package/lib/cjs/components/utils/IsPromiseLike.js +4 -4
  78. package/lib/cjs/components/utils/IsPromiseLike.js.map +1 -1
  79. package/lib/cjs/components/utils/UseTreeTransientState.js +3 -3
  80. package/lib/cjs/components/utils/UseTreeTransientState.js.map +1 -1
  81. package/lib/cjs/e2e-tests/TreeWidget.test.js +55 -1
  82. package/lib/cjs/e2e-tests/TreeWidget.test.js.map +1 -1
  83. package/lib/cjs/e2e-tests/utils.d.ts +1 -0
  84. package/lib/cjs/e2e-tests/utils.js +4 -5
  85. package/lib/cjs/e2e-tests/utils.js.map +1 -1
  86. package/lib/cjs/tree-widget-react.js +3 -3
  87. package/lib/cjs/tree-widget-react.js.map +1 -1
  88. package/lib/esm/TreeWidget.d.ts +0 -1
  89. package/lib/esm/TreeWidget.js +9 -10
  90. package/lib/esm/TreeWidget.js.map +1 -1
  91. package/lib/esm/components/SelectableTree.js +24 -13
  92. package/lib/esm/components/SelectableTree.js.map +1 -1
  93. package/lib/esm/components/TreeFilteringState.js +3 -3
  94. package/lib/esm/components/TreeFilteringState.js.map +1 -1
  95. package/lib/esm/components/TreeWidgetUiItemsProvider.js +7 -5
  96. package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +1 -1
  97. package/lib/esm/components/TreeWidgetUiItemsProvider.scss +1 -1
  98. package/lib/esm/components/tree-header/TreeHeader.js +15 -12
  99. package/lib/esm/components/tree-header/TreeHeader.js.map +1 -1
  100. package/lib/esm/components/tree-header/TreeHeader.scss +1 -1
  101. package/lib/esm/components/trees/CategoriesVisibilityUtils.js +13 -8
  102. package/lib/esm/components/trees/CategoriesVisibilityUtils.js.map +1 -1
  103. package/lib/esm/components/trees/VisibilityTreeBase.scss +1 -1
  104. package/lib/esm/components/trees/VisibilityTreeEventHandler.d.ts +1 -1
  105. package/lib/esm/components/trees/VisibilityTreeEventHandler.js +22 -25
  106. package/lib/esm/components/trees/VisibilityTreeEventHandler.js.map +1 -1
  107. package/lib/esm/components/trees/VisibilityTreeRenderer.d.ts +20 -4
  108. package/lib/esm/components/trees/VisibilityTreeRenderer.js +27 -10
  109. package/lib/esm/components/trees/VisibilityTreeRenderer.js.map +1 -1
  110. package/lib/esm/components/trees/category-tree/CategoriesTree.d.ts +7 -2
  111. package/lib/esm/components/trees/category-tree/CategoriesTree.js +51 -34
  112. package/lib/esm/components/trees/category-tree/CategoriesTree.js.map +1 -1
  113. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js +14 -10
  114. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -1
  115. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js +18 -13
  116. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -1
  117. package/lib/esm/components/trees/common/ContextMenu.js +4 -4
  118. package/lib/esm/components/trees/common/ContextMenu.js.map +1 -1
  119. package/lib/esm/components/trees/common/TreeNodeRenderer.d.ts +1 -1
  120. package/lib/esm/components/trees/common/TreeNodeRenderer.js +4 -4
  121. package/lib/esm/components/trees/common/TreeNodeRenderer.js.map +1 -1
  122. package/lib/esm/components/trees/common/TreeRenderer.d.ts +15 -1
  123. package/lib/esm/components/trees/common/TreeRenderer.js +15 -6
  124. package/lib/esm/components/trees/common/TreeRenderer.js.map +1 -1
  125. package/lib/esm/components/trees/common/TreeRenderer.scss +7 -2
  126. package/lib/esm/components/trees/common/Types.d.ts +8 -0
  127. package/lib/esm/components/trees/common/Types.js +3 -3
  128. package/lib/esm/components/trees/common/Types.js.map +1 -1
  129. package/lib/esm/components/trees/common/UseVisibilityTreeState.d.ts +36 -0
  130. package/lib/esm/components/trees/common/UseVisibilityTreeState.js +43 -0
  131. package/lib/esm/components/trees/common/UseVisibilityTreeState.js.map +1 -0
  132. package/lib/esm/components/trees/common/Utils.js +7 -5
  133. package/lib/esm/components/trees/common/Utils.js.map +1 -1
  134. package/lib/esm/components/trees/external-sources-tree/ExternalSources.json +1 -3
  135. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +9 -3
  136. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js +22 -10
  137. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
  138. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +4 -4
  139. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
  140. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.d.ts +9 -3
  141. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js +19 -15
  142. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
  143. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js +6 -5
  144. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
  145. package/lib/esm/components/trees/index.js +3 -3
  146. package/lib/esm/components/trees/index.js.map +1 -1
  147. package/lib/esm/components/trees/models-tree/ModelsTree.d.ts +7 -2
  148. package/lib/esm/components/trees/models-tree/ModelsTree.js +80 -66
  149. package/lib/esm/components/trees/models-tree/ModelsTree.js.map +1 -1
  150. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js +12 -19
  151. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  152. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.d.ts +9 -0
  153. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js +27 -0
  154. package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js.map +1 -0
  155. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js +125 -66
  156. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js.map +1 -1
  157. package/lib/esm/components/trees/models-tree/Utils.d.ts +4 -0
  158. package/lib/esm/components/trees/models-tree/Utils.js +50 -57
  159. package/lib/esm/components/trees/models-tree/Utils.js.map +1 -1
  160. package/lib/esm/components/utils/AutoSizer.js +7 -5
  161. package/lib/esm/components/utils/AutoSizer.js.map +1 -1
  162. package/lib/esm/components/utils/IsPromiseLike.js +4 -4
  163. package/lib/esm/components/utils/IsPromiseLike.js.map +1 -1
  164. package/lib/esm/components/utils/UseTreeTransientState.js +3 -3
  165. package/lib/esm/components/utils/UseTreeTransientState.js.map +1 -1
  166. package/lib/esm/e2e-tests/TreeWidget.test.js +56 -2
  167. package/lib/esm/e2e-tests/TreeWidget.test.js.map +1 -1
  168. package/lib/esm/e2e-tests/utils.d.ts +1 -0
  169. package/lib/esm/e2e-tests/utils.js +2 -4
  170. package/lib/esm/e2e-tests/utils.js.map +1 -1
  171. package/lib/esm/tree-widget-react.js +3 -3
  172. package/lib/esm/tree-widget-react.js.map +1 -1
  173. package/package.json +88 -87
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.areAllModelsVisible = exports.toggleModels = exports.invertAllModels = exports.hideAllModels = exports.showAllModels = exports.SubjectModelIdsCache = exports.ModelsVisibilityHandler = exports.ModelsTreeNodeType = void 0;
8
8
  const core_bentley_1 = require("@itwin/core-bentley");
@@ -64,20 +64,28 @@ class ModelsVisibilityHandler {
64
64
  clearTimeout(this._pendingVisibilityChange);
65
65
  }
66
66
  /** Sets data provider that is used to get filtered tree hierarchy. */
67
- setFilteredDataProvider(provider) { this._filteredDataProvider = provider; }
67
+ setFilteredDataProvider(provider) {
68
+ this._filteredDataProvider = provider;
69
+ }
68
70
  static getNodeType(item) {
69
- if (!(0, presentation_components_1.isPresentationTreeNodeItem)(item))
71
+ if (!(0, presentation_components_1.isPresentationTreeNodeItem)(item)) {
70
72
  return ModelsTreeNodeType.Unknown;
71
- if (presentation_common_1.NodeKey.isClassGroupingNodeKey(item.key))
73
+ }
74
+ if (presentation_common_1.NodeKey.isClassGroupingNodeKey(item.key)) {
72
75
  return ModelsTreeNodeType.Grouping;
73
- if (!item.extendedData)
76
+ }
77
+ if (!item.extendedData) {
74
78
  return ModelsTreeNodeType.Unknown;
75
- if (this.isSubjectNode(item))
79
+ }
80
+ if (this.isSubjectNode(item)) {
76
81
  return ModelsTreeNodeType.Subject;
77
- if (this.isModelNode(item))
82
+ }
83
+ if (this.isModelNode(item)) {
78
84
  return ModelsTreeNodeType.Model;
79
- if (this.isCategoryNode(item))
85
+ }
86
+ if (this.isCategoryNode(item)) {
80
87
  return ModelsTreeNodeType.Category;
88
+ }
81
89
  return ModelsTreeNodeType.Element;
82
90
  }
83
91
  static isSubjectNode(node) {
@@ -92,33 +100,40 @@ class ModelsVisibilityHandler {
92
100
  /** Returns visibility status of the tree node. */
93
101
  getVisibilityStatus(node) {
94
102
  const nodeKey = (0, presentation_components_1.isPresentationTreeNodeItem)(node) ? node.key : undefined;
95
- if (!nodeKey)
103
+ if (!nodeKey) {
96
104
  return { state: "hidden", isDisabled: true };
97
- if (presentation_common_1.NodeKey.isClassGroupingNodeKey(nodeKey))
105
+ }
106
+ if (presentation_common_1.NodeKey.isClassGroupingNodeKey(nodeKey)) {
98
107
  return this.getElementGroupingNodeDisplayStatus(node.id, nodeKey);
99
- if (!presentation_common_1.NodeKey.isInstancesNodeKey(nodeKey))
108
+ }
109
+ if (!presentation_common_1.NodeKey.isInstancesNodeKey(nodeKey)) {
100
110
  return { state: "hidden", isDisabled: true };
111
+ }
101
112
  if (ModelsVisibilityHandler.isSubjectNode(node)) {
102
113
  // note: subject nodes may be merged to represent multiple subject instances
103
114
  return this.getSubjectNodeVisibility(nodeKey.instanceKeys.map((key) => key.id), node);
104
115
  }
105
- if (ModelsVisibilityHandler.isModelNode(node))
116
+ if (ModelsVisibilityHandler.isModelNode(node)) {
106
117
  return this.getModelDisplayStatus(nodeKey.instanceKeys[0].id);
107
- if (ModelsVisibilityHandler.isCategoryNode(node))
118
+ }
119
+ if (ModelsVisibilityHandler.isCategoryNode(node)) {
108
120
  return this.getCategoryDisplayStatus(nodeKey.instanceKeys[0].id, this.getCategoryParentModelId(node));
121
+ }
109
122
  return this.getElementDisplayStatus(nodeKey.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node));
110
123
  }
111
124
  /** Changes visibility of the items represented by the tree node. */
112
125
  async changeVisibility(node, on) {
113
126
  const nodeKey = (0, presentation_components_1.isPresentationTreeNodeItem)(node) ? node.key : undefined;
114
- if (!nodeKey)
127
+ if (!nodeKey) {
115
128
  return;
129
+ }
116
130
  if (presentation_common_1.NodeKey.isClassGroupingNodeKey(nodeKey)) {
117
131
  await this.changeElementGroupingNodeState(nodeKey, on);
118
132
  return;
119
133
  }
120
- if (!presentation_common_1.NodeKey.isInstancesNodeKey(nodeKey))
134
+ if (!presentation_common_1.NodeKey.isInstancesNodeKey(nodeKey)) {
121
135
  return;
136
+ }
122
137
  if (ModelsVisibilityHandler.isSubjectNode(node)) {
123
138
  await this.changeSubjectNodeState(nodeKey.instanceKeys.map((key) => key.id), node, on);
124
139
  }
@@ -133,38 +148,45 @@ class ModelsVisibilityHandler {
133
148
  }
134
149
  }
135
150
  async getSubjectNodeVisibility(ids, node) {
136
- if (!this._props.viewport.view.isSpatialView())
151
+ if (!this._props.viewport.view.isSpatialView()) {
137
152
  return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "subject.nonSpatialView") };
138
- if (this._filteredDataProvider)
153
+ }
154
+ if (this._filteredDataProvider) {
139
155
  return this.getFilteredSubjectDisplayStatus(this._filteredDataProvider, ids, node);
156
+ }
140
157
  return this.getSubjectDisplayStatus(ids);
141
158
  }
142
159
  async getSubjectDisplayStatus(ids) {
143
160
  const modelIds = await this.getSubjectModelIds(ids);
144
161
  const isDisplayed = modelIds.some((modelId) => this.getModelDisplayStatus(modelId).state === "visible");
145
- if (isDisplayed)
162
+ if (isDisplayed) {
146
163
  return { state: "visible", tooltip: createTooltip("visible", "subject.atLeastOneModelVisible") };
164
+ }
147
165
  return { state: "hidden", tooltip: createTooltip("hidden", "subject.allModelsHidden") };
148
166
  }
149
167
  async getFilteredSubjectDisplayStatus(provider, ids, node) {
150
- if (provider.nodeMatchesFilter(node))
168
+ if (provider.nodeMatchesFilter(node)) {
151
169
  return this.getSubjectDisplayStatus(ids);
170
+ }
152
171
  const children = await provider.getNodes(node);
153
172
  const childrenDisplayStatuses = await Promise.all(children.map(async (childNode) => this.getVisibilityStatus(childNode)));
154
- if (childrenDisplayStatuses.some((status) => status.state === "visible"))
173
+ if (childrenDisplayStatuses.some((status) => status.state === "visible")) {
155
174
  return { state: "visible", tooltip: createTooltip("visible", "subject.atLeastOneModelVisible") };
175
+ }
156
176
  return { state: "hidden", tooltip: createTooltip("hidden", "subject.allModelsHidden") };
157
177
  }
158
178
  getModelDisplayStatus(id) {
159
- if (!this._props.viewport.view.isSpatialView())
179
+ if (!this._props.viewport.view.isSpatialView()) {
160
180
  return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "model.nonSpatialView") };
181
+ }
161
182
  const isDisplayed = this._props.viewport.view.viewsModel(id);
162
183
  return { state: isDisplayed ? "visible" : "hidden", tooltip: createTooltip(isDisplayed ? "visible" : "hidden", undefined) };
163
184
  }
164
185
  getCategoryDisplayStatus(id, parentModelId) {
165
186
  if (parentModelId) {
166
- if (this.getModelDisplayStatus(parentModelId).state === "hidden")
187
+ if (this.getModelDisplayStatus(parentModelId).state === "hidden") {
167
188
  return { state: "hidden", isDisabled: true, tooltip: createTooltip("disabled", "category.modelNotDisplayed") };
189
+ }
168
190
  const override = this._props.viewport.perModelCategoryVisibility.getOverride(parentModelId, id);
169
191
  switch (override) {
170
192
  case core_frontend_1.PerModelCategoryVisibility.Override.Show:
@@ -183,8 +205,9 @@ class ModelsVisibilityHandler {
183
205
  }
184
206
  async getElementGroupingNodeDisplayStatus(_id, key) {
185
207
  const { modelId, categoryId, elementIds } = await this.getGroupedElementIds(key);
186
- if (!modelId || !this._props.viewport.view.viewsModel(modelId))
208
+ if (!modelId || !this._props.viewport.view.viewsModel(modelId)) {
187
209
  return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "element.modelNotDisplayed") };
210
+ }
188
211
  if (this._props.viewport.alwaysDrawn !== undefined && this._props.viewport.alwaysDrawn.size > 0) {
189
212
  let atLeastOneElementForceDisplayed = false;
190
213
  for await (const elementId of elementIds.getElementIds()) {
@@ -193,11 +216,13 @@ class ModelsVisibilityHandler {
193
216
  break;
194
217
  }
195
218
  }
196
- if (atLeastOneElementForceDisplayed)
219
+ if (atLeastOneElementForceDisplayed) {
197
220
  return { state: "visible", tooltip: createTooltip("visible", "element.displayedThroughAlwaysDrawnList") };
221
+ }
198
222
  }
199
- if (this._props.viewport.alwaysDrawn !== undefined && this._props.viewport.alwaysDrawn.size !== 0 && this._props.viewport.isAlwaysDrawnExclusive)
223
+ if (this._props.viewport.alwaysDrawn !== undefined && this._props.viewport.alwaysDrawn.size !== 0 && this._props.viewport.isAlwaysDrawnExclusive) {
200
224
  return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn") };
225
+ }
201
226
  // istanbul ignore else
202
227
  if (this._props.viewport.neverDrawn !== undefined && this._props.viewport.neverDrawn.size > 0) {
203
228
  let allElementsForceHidden = true;
@@ -207,38 +232,48 @@ class ModelsVisibilityHandler {
207
232
  break;
208
233
  }
209
234
  }
210
- if (allElementsForceHidden)
235
+ if (allElementsForceHidden) {
211
236
  return { state: "hidden", tooltip: createTooltip("visible", "element.hiddenThroughNeverDrawnList") };
237
+ }
212
238
  }
213
- if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === "visible")
239
+ if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === "visible") {
214
240
  return { state: "visible", tooltip: createTooltip("visible", undefined) };
241
+ }
215
242
  return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenThroughCategory") };
216
243
  }
217
244
  getElementDisplayStatus(elementId, modelId, categoryId) {
218
- if (!modelId || !this._props.viewport.view.viewsModel(modelId))
245
+ if (!modelId || !this._props.viewport.view.viewsModel(modelId)) {
219
246
  return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "element.modelNotDisplayed") };
220
- if (this._props.viewport.neverDrawn !== undefined && this._props.viewport.neverDrawn.has(elementId))
247
+ }
248
+ if (this._props.viewport.neverDrawn !== undefined && this._props.viewport.neverDrawn.has(elementId)) {
221
249
  return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenThroughNeverDrawnList") };
250
+ }
222
251
  if (this._props.viewport.alwaysDrawn !== undefined) {
223
- if (this._props.viewport.alwaysDrawn.has(elementId))
252
+ if (this._props.viewport.alwaysDrawn.has(elementId)) {
224
253
  return { state: "visible", tooltip: createTooltip("visible", "element.displayedThroughAlwaysDrawnList") };
225
- if (this._props.viewport.alwaysDrawn.size !== 0 && this._props.viewport.isAlwaysDrawnExclusive)
254
+ }
255
+ if (this._props.viewport.alwaysDrawn.size !== 0 && this._props.viewport.isAlwaysDrawnExclusive) {
226
256
  return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn") };
257
+ }
227
258
  }
228
- if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === "visible")
259
+ if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === "visible") {
229
260
  return { state: "visible", tooltip: createTooltip("visible", undefined) };
261
+ }
230
262
  return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenThroughCategory") };
231
263
  }
232
264
  async changeSubjectNodeState(ids, node, on) {
233
- if (!this._props.viewport.view.isSpatialView())
265
+ if (!this._props.viewport.view.isSpatialView()) {
234
266
  return;
235
- if (this._filteredDataProvider)
267
+ }
268
+ if (this._filteredDataProvider) {
236
269
  return this.changeFilteredSubjectState(this._filteredDataProvider, ids, node, on);
270
+ }
237
271
  return this.changeSubjectState(ids, on);
238
272
  }
239
273
  async changeFilteredSubjectState(provider, ids, node, on) {
240
- if (provider.nodeMatchesFilter(node))
274
+ if (provider.nodeMatchesFilter(node)) {
241
275
  return this.changeSubjectState(ids, on);
276
+ }
242
277
  const children = await provider.getNodes(node);
243
278
  return Promise.all(children.map(async (childNode) => this.changeVisibility(childNode, on)));
244
279
  }
@@ -247,21 +282,27 @@ class ModelsVisibilityHandler {
247
282
  return this.changeModelsVisibility(modelIds, on);
248
283
  }
249
284
  async changeModelState(id, on) {
250
- if (!this._props.viewport.view.isSpatialView())
285
+ if (!this._props.viewport.view.isSpatialView()) {
251
286
  return;
287
+ }
252
288
  return this.changeModelsVisibility([id], on);
253
289
  }
254
290
  async changeModelsVisibility(ids, visible) {
255
- if (visible)
291
+ if (visible) {
256
292
  return this._props.viewport.addViewedModels(ids);
257
- else
293
+ }
294
+ else {
258
295
  this._props.viewport.changeModelDisplay(ids, false);
296
+ }
259
297
  }
260
298
  changeCategoryState(categoryId, parentModelId, on) {
261
299
  if (parentModelId) {
262
300
  const isDisplayedInSelector = this._props.viewport.view.viewsCategory(categoryId);
263
- const ovr = (on === isDisplayedInSelector) ? core_frontend_1.PerModelCategoryVisibility.Override.None
264
- : on ? core_frontend_1.PerModelCategoryVisibility.Override.Show : core_frontend_1.PerModelCategoryVisibility.Override.Hide;
301
+ const ovr = on === isDisplayedInSelector
302
+ ? core_frontend_1.PerModelCategoryVisibility.Override.None
303
+ : on
304
+ ? core_frontend_1.PerModelCategoryVisibility.Override.Show
305
+ : core_frontend_1.PerModelCategoryVisibility.Override.Hide;
265
306
  this._props.viewport.perModelCategoryVisibility.setOverride(parentModelId, categoryId, ovr);
266
307
  if (ovr === core_frontend_1.PerModelCategoryVisibility.Override.None && on) {
267
308
  // we took off the override which means the category is displayed in selector, but
@@ -280,36 +321,41 @@ class ModelsVisibilityHandler {
280
321
  const childIdsContainer = this.getAssemblyElementIds(id);
281
322
  async function* elementIds() {
282
323
  yield id;
283
- for await (const childId of childIdsContainer.getElementIds())
324
+ for await (const childId of childIdsContainer.getElementIds()) {
284
325
  yield childId;
326
+ }
285
327
  }
286
328
  await this.changeElementsState(modelId, categoryId, elementIds(), on);
287
329
  }
288
330
  async changeElementsState(modelId, categoryId, elementIds, on) {
289
- const isDisplayedByDefault = modelId && this.getModelDisplayStatus(modelId).state === "visible"
290
- && categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === "visible";
331
+ const isDisplayedByDefault = modelId &&
332
+ this.getModelDisplayStatus(modelId).state === "visible" &&
333
+ categoryId &&
334
+ this.getCategoryDisplayStatus(categoryId, modelId).state === "visible";
291
335
  const isHiddenDueToExclusiveAlwaysDrawnElements = this._props.viewport.isAlwaysDrawnExclusive && this._props.viewport.alwaysDrawn && 0 !== this._props.viewport.alwaysDrawn.size;
292
336
  const currNeverDrawn = new Set(this._props.viewport.neverDrawn ? this._props.viewport.neverDrawn : []);
293
- const currAlwaysDrawn = new Set(this._props.viewport.alwaysDrawn ?
294
- this._props.viewport.alwaysDrawn : /* istanbul ignore next */ []);
337
+ const currAlwaysDrawn = new Set(this._props.viewport.alwaysDrawn ? this._props.viewport.alwaysDrawn : /* istanbul ignore next */ []);
295
338
  for await (const elementId of elementIds) {
296
339
  if (on) {
297
340
  currNeverDrawn.delete(elementId);
298
- if (!isDisplayedByDefault || isHiddenDueToExclusiveAlwaysDrawnElements)
341
+ if (!isDisplayedByDefault || isHiddenDueToExclusiveAlwaysDrawnElements) {
299
342
  currAlwaysDrawn.add(elementId);
343
+ }
300
344
  }
301
345
  else {
302
346
  currAlwaysDrawn.delete(elementId);
303
- if (isDisplayedByDefault && !isHiddenDueToExclusiveAlwaysDrawnElements)
347
+ if (isDisplayedByDefault && !isHiddenDueToExclusiveAlwaysDrawnElements) {
304
348
  currNeverDrawn.add(elementId);
349
+ }
305
350
  }
306
351
  }
307
352
  this._props.viewport.setNeverDrawn(currNeverDrawn);
308
353
  this._props.viewport.setAlwaysDrawn(currAlwaysDrawn, this._props.viewport.isAlwaysDrawnExclusive);
309
354
  }
310
355
  onVisibilityChangeInternal() {
311
- if (this._pendingVisibilityChange)
356
+ if (this._pendingVisibilityChange) {
312
357
  return;
358
+ }
313
359
  this._pendingVisibilityChange = setTimeout(() => {
314
360
  this.onVisibilityChange.raiseEvent();
315
361
  this._pendingVisibilityChange = undefined;
@@ -325,8 +371,7 @@ class ModelsVisibilityHandler {
325
371
  return elementNode.extendedData ? elementNode.extendedData.categoryId : /* istanbul ignore next */ undefined;
326
372
  }
327
373
  async getSubjectModelIds(subjectIds) {
328
- return (await Promise.all(subjectIds.map(async (id) => this._subjectModelIdsCache.getSubjectModelIds(id))))
329
- .reduce((allModelIds, curr) => [...allModelIds, ...curr], []);
374
+ return (await Promise.all(subjectIds.map(async (id) => this._subjectModelIdsCache.getSubjectModelIds(id)))).reduce((allModelIds, curr) => [...allModelIds, ...curr], []);
330
375
  }
331
376
  // istanbul ignore next
332
377
  getAssemblyElementIds(assemblyId) {
@@ -372,19 +417,22 @@ class SubjectModelIdsCache {
372
417
  const targetPartitionSubjects = new Map();
373
418
  for (const subject of await querySubjects()) {
374
419
  // istanbul ignore else
375
- if (subject.parentId)
420
+ if (subject.parentId) {
376
421
  pushToMap(this._subjectsHierarchy, subject.parentId, subject.id);
422
+ }
377
423
  // istanbul ignore if
378
- if (subject.targetPartitionId)
424
+ if (subject.targetPartitionId) {
379
425
  pushToMap(targetPartitionSubjects, subject.targetPartitionId, subject.id);
426
+ }
380
427
  }
381
428
  this._subjectModels = new Map();
382
429
  for (const model of await queryModels()) {
383
430
  // istanbul ignore next
384
431
  const subjectIds = targetPartitionSubjects.get(model.id) ?? [];
385
432
  // istanbul ignore else
386
- if (!subjectIds.includes(model.parentId))
433
+ if (!subjectIds.includes(model.parentId)) {
387
434
  subjectIds.push(model.parentId);
435
+ }
388
436
  subjectIds.forEach((subjectId) => {
389
437
  pushToMap(this._subjectModels, subjectId, model.id);
390
438
  });
@@ -398,11 +446,13 @@ class SubjectModelIdsCache {
398
446
  }
399
447
  appendSubjectModelsRecursively(modelIds, subjectId) {
400
448
  const subjectModelIds = this._subjectModels.get(subjectId);
401
- if (subjectModelIds)
449
+ if (subjectModelIds) {
402
450
  modelIds.push(...subjectModelIds);
451
+ }
403
452
  const childSubjectIds = this._subjectsHierarchy.get(subjectId);
404
- if (childSubjectIds)
453
+ if (childSubjectIds) {
405
454
  childSubjectIds.forEach((cs) => this.appendSubjectModelsRecursively(modelIds, cs));
455
+ }
406
456
  }
407
457
  async getSubjectModelIds(subjectId) {
408
458
  await this.initCache();
@@ -426,8 +476,9 @@ class ElementIdsCache {
426
476
  }
427
477
  getAssemblyElementIds(assemblyId) {
428
478
  const ids = this._assemblyElementIdsCache.get(assemblyId);
429
- if (ids)
479
+ if (ids) {
430
480
  return ids;
481
+ }
431
482
  const container = createAssemblyElementIdsContainer(this._imodel, this._rulesetId, assemblyId);
432
483
  this._assemblyElementIdsCache.set(assemblyId, container);
433
484
  return container;
@@ -435,8 +486,9 @@ class ElementIdsCache {
435
486
  async getGroupedElementIds(groupingNodeKey) {
436
487
  const keyString = JSON.stringify(groupingNodeKey);
437
488
  const ids = this._groupedElementIdsCache.get(keyString);
438
- if (ids)
489
+ if (ids) {
439
490
  return ids;
491
+ }
440
492
  const info = await createGroupedElementsInfo(this._imodel, this._rulesetId, groupingNodeKey);
441
493
  this._groupedElementIdsCache.set(keyString, info);
442
494
  return info;
@@ -462,8 +514,9 @@ function createAssemblyElementIdsContainer(imodel, rulesetId, assemblyId) {
462
514
  async function createGroupedElementsInfo(imodel, rulesetId, groupingNodeKey) {
463
515
  const groupedElementIdsContainer = new Utils_1.CachingElementIdsContainer(createInstanceIdsGenerator(imodel, rulesetId, "AssemblyElementsRequest", [groupingNodeKey]));
464
516
  const elementId = await groupedElementIdsContainer.getElementIds().next();
465
- if (elementId.done)
517
+ if (elementId.done) {
466
518
  throw new Error("Invalid grouping node key");
519
+ }
467
520
  let modelId, categoryId;
468
521
  const query = `SELECT Model.Id AS modelId, Category.Id AS categoryId FROM bis.GeometricElement3d WHERE ECInstanceId = ? LIMIT 1`;
469
522
  const reader = imodel.createQueryReader(query, core_common_1.QueryBinder.from([elementId.value]), { rowFormat: core_common_1.QueryRowFormat.UseJsPropertyNames });
@@ -476,8 +529,9 @@ async function createGroupedElementsInfo(imodel, rulesetId, groupingNodeKey) {
476
529
  const createTooltip = (status, tooltipStringId) => {
477
530
  const statusStringId = `modelTree.status.${status}`;
478
531
  const statusString = TreeWidget_1.TreeWidget.translate(statusStringId);
479
- if (!tooltipStringId)
532
+ if (!tooltipStringId) {
480
533
  return statusString;
534
+ }
481
535
  tooltipStringId = `modelTree.tooltips.${tooltipStringId}`;
482
536
  const tooltipString = TreeWidget_1.TreeWidget.translate(tooltipStringId);
483
537
  return `${statusString}: ${tooltipString}`;
@@ -510,10 +564,12 @@ async function invertAllModels(models, viewport) {
510
564
  const notViewedModels = [];
511
565
  const viewedModels = [];
512
566
  models.forEach((modelId) => {
513
- if (viewport.viewsModel(modelId))
567
+ if (viewport.viewsModel(modelId)) {
514
568
  viewedModels.push(modelId);
515
- else
569
+ }
570
+ else {
516
571
  notViewedModels.push(modelId);
572
+ }
517
573
  });
518
574
  await viewport.addViewedModels(notViewedModels);
519
575
  viewport.changeModelDisplay(viewedModels, false);
@@ -525,12 +581,15 @@ exports.invertAllModels = invertAllModels;
525
581
  */
526
582
  async function toggleModels(models, enable, viewport) {
527
583
  // istanbul ignore if
528
- if (!models)
584
+ if (!models) {
529
585
  return;
530
- if (enable)
586
+ }
587
+ if (enable) {
531
588
  viewport.changeModelDisplay(models, false);
532
- else
589
+ }
590
+ else {
533
591
  await viewport.addViewedModels(models);
592
+ }
534
593
  }
535
594
  exports.toggleModels = toggleModels;
536
595
  /**