@itwin/tree-widget-react 0.10.0 → 1.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 (194) hide show
  1. package/CHANGELOG.md +331 -0
  2. package/README.md +146 -29
  3. package/lib/cjs/TreeWidget.d.ts +0 -1
  4. package/lib/cjs/TreeWidget.js +1 -6
  5. package/lib/cjs/TreeWidget.js.map +1 -1
  6. package/lib/cjs/components/TreeFilteringState.d.ts +3 -1
  7. package/lib/cjs/components/TreeFilteringState.js +19 -40
  8. package/lib/cjs/components/TreeFilteringState.js.map +1 -1
  9. package/lib/cjs/components/TreeWidgetComponent.d.ts +29 -5
  10. package/lib/cjs/components/TreeWidgetComponent.js +85 -29
  11. package/lib/cjs/components/TreeWidgetComponent.js.map +1 -1
  12. package/lib/cjs/components/TreeWidgetComponent.scss +4 -24
  13. package/lib/cjs/components/TreeWidgetUiItemsProvider.d.ts +25 -2
  14. package/lib/cjs/components/TreeWidgetUiItemsProvider.js +31 -46
  15. package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +1 -1
  16. package/lib/cjs/components/tree-header/TreeHeader.d.ts +26 -0
  17. package/lib/cjs/components/tree-header/TreeHeader.js +43 -0
  18. package/lib/cjs/components/tree-header/TreeHeader.js.map +1 -0
  19. package/lib/cjs/components/tree-header/TreeHeader.scss +69 -0
  20. package/lib/cjs/components/trees/CategoriesVisibilityUtils.d.ts +12 -6
  21. package/lib/cjs/components/trees/CategoriesVisibilityUtils.js +10 -4
  22. package/lib/cjs/components/trees/CategoriesVisibilityUtils.js.map +1 -1
  23. package/lib/cjs/components/trees/Common.d.ts +2 -2
  24. package/lib/cjs/components/trees/Common.js +1 -1
  25. package/lib/cjs/components/trees/Common.js.map +1 -1
  26. package/lib/cjs/components/trees/VisibilityTreeBase.scss +66 -10
  27. package/lib/cjs/components/trees/VisibilityTreeEventHandler.d.ts +13 -12
  28. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js +6 -17
  29. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js.map +1 -1
  30. package/lib/cjs/components/trees/VisibilityTreeRenderer.d.ts +38 -14
  31. package/lib/cjs/components/trees/VisibilityTreeRenderer.js +35 -41
  32. package/lib/cjs/components/trees/VisibilityTreeRenderer.js.map +1 -1
  33. package/lib/cjs/components/trees/category-tree/CategoriesTree.d.ts +12 -11
  34. package/lib/cjs/components/trees/category-tree/CategoriesTree.js +17 -41
  35. package/lib/cjs/components/trees/category-tree/CategoriesTree.js.map +1 -1
  36. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.d.ts +67 -6
  37. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js +61 -72
  38. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -1
  39. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.d.ts +30 -8
  40. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js +61 -34
  41. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -1
  42. package/lib/cjs/components/trees/external-sources-tree/ExternalSources.json +230 -0
  43. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +27 -0
  44. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js +61 -0
  45. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -0
  46. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +20 -0
  47. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +39 -0
  48. package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -0
  49. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.d.ts +30 -0
  50. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js +39 -0
  51. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -0
  52. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +26 -0
  53. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js +35 -0
  54. package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -0
  55. package/lib/cjs/components/trees/index.d.ts +5 -1
  56. package/lib/cjs/components/trees/index.js +10 -2
  57. package/lib/cjs/components/trees/index.js.map +1 -1
  58. package/lib/cjs/components/trees/models-tree/ModelsTree.d.ts +26 -18
  59. package/lib/cjs/components/trees/models-tree/ModelsTree.js +22 -50
  60. package/lib/cjs/components/trees/models-tree/ModelsTree.js.map +1 -1
  61. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.d.ts +70 -2
  62. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js +68 -105
  63. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  64. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.d.ts +40 -12
  65. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js +65 -5
  66. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js.map +1 -1
  67. package/lib/cjs/components/trees/models-tree/Utils.d.ts +12 -0
  68. package/lib/cjs/components/trees/models-tree/Utils.js +625 -1
  69. package/lib/cjs/components/trees/models-tree/Utils.js.map +1 -1
  70. package/lib/cjs/components/utils/AutoSizer.d.ts +6 -3
  71. package/lib/cjs/components/utils/AutoSizer.js +9 -29
  72. package/lib/cjs/components/utils/AutoSizer.js.map +1 -1
  73. package/lib/cjs/components/utils/IsPromiseLike.d.ts +4 -1
  74. package/lib/cjs/components/utils/IsPromiseLike.js +6 -3
  75. package/lib/cjs/components/utils/IsPromiseLike.js.map +1 -1
  76. package/lib/cjs/tree-widget-react.d.ts +0 -1
  77. package/lib/cjs/tree-widget-react.js +5 -2
  78. package/lib/cjs/tree-widget-react.js.map +1 -1
  79. package/lib/esm/TreeWidget.d.ts +0 -1
  80. package/lib/esm/TreeWidget.js +2 -7
  81. package/lib/esm/TreeWidget.js.map +1 -1
  82. package/lib/esm/components/TreeFilteringState.d.ts +3 -1
  83. package/lib/esm/components/TreeFilteringState.js +17 -19
  84. package/lib/esm/components/TreeFilteringState.js.map +1 -1
  85. package/lib/esm/components/TreeWidgetComponent.d.ts +29 -5
  86. package/lib/esm/components/TreeWidgetComponent.js +82 -7
  87. package/lib/esm/components/TreeWidgetComponent.js.map +1 -1
  88. package/lib/esm/components/TreeWidgetComponent.scss +4 -24
  89. package/lib/esm/components/TreeWidgetUiItemsProvider.d.ts +25 -2
  90. package/lib/esm/components/TreeWidgetUiItemsProvider.js +29 -41
  91. package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +1 -1
  92. package/lib/esm/components/tree-header/TreeHeader.d.ts +26 -0
  93. package/lib/esm/components/tree-header/TreeHeader.js +36 -0
  94. package/lib/esm/components/tree-header/TreeHeader.js.map +1 -0
  95. package/lib/esm/components/tree-header/TreeHeader.scss +69 -0
  96. package/lib/esm/components/trees/CategoriesVisibilityUtils.d.ts +12 -6
  97. package/lib/esm/components/trees/CategoriesVisibilityUtils.js +10 -4
  98. package/lib/esm/components/trees/CategoriesVisibilityUtils.js.map +1 -1
  99. package/lib/esm/components/trees/Common.d.ts +2 -2
  100. package/lib/esm/components/trees/Common.js +1 -1
  101. package/lib/esm/components/trees/Common.js.map +1 -1
  102. package/lib/esm/components/trees/VisibilityTreeBase.scss +66 -10
  103. package/lib/esm/components/trees/VisibilityTreeEventHandler.d.ts +13 -12
  104. package/lib/esm/components/trees/VisibilityTreeEventHandler.js +6 -17
  105. package/lib/esm/components/trees/VisibilityTreeEventHandler.js.map +1 -1
  106. package/lib/esm/components/trees/VisibilityTreeRenderer.d.ts +38 -14
  107. package/lib/esm/components/trees/VisibilityTreeRenderer.js +29 -19
  108. package/lib/esm/components/trees/VisibilityTreeRenderer.js.map +1 -1
  109. package/lib/esm/components/trees/category-tree/CategoriesTree.d.ts +12 -11
  110. package/lib/esm/components/trees/category-tree/CategoriesTree.js +16 -21
  111. package/lib/esm/components/trees/category-tree/CategoriesTree.js.map +1 -1
  112. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.d.ts +67 -6
  113. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js +60 -52
  114. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -1
  115. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.d.ts +30 -8
  116. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js +57 -14
  117. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -1
  118. package/lib/esm/components/trees/external-sources-tree/ExternalSources.json +230 -0
  119. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +27 -0
  120. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js +34 -0
  121. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -0
  122. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +20 -0
  123. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +35 -0
  124. package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -0
  125. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.d.ts +30 -0
  126. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js +32 -0
  127. package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -0
  128. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +26 -0
  129. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js +31 -0
  130. package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -0
  131. package/lib/esm/components/trees/index.d.ts +5 -1
  132. package/lib/esm/components/trees/index.js +5 -1
  133. package/lib/esm/components/trees/index.js.map +1 -1
  134. package/lib/esm/components/trees/models-tree/ModelsTree.d.ts +26 -18
  135. package/lib/esm/components/trees/models-tree/ModelsTree.js +23 -32
  136. package/lib/esm/components/trees/models-tree/ModelsTree.js.map +1 -1
  137. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.d.ts +70 -2
  138. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js +66 -84
  139. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
  140. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.d.ts +40 -12
  141. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js +60 -5
  142. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js.map +1 -1
  143. package/lib/esm/components/trees/models-tree/Utils.d.ts +12 -0
  144. package/lib/esm/components/trees/models-tree/Utils.js +622 -0
  145. package/lib/esm/components/trees/models-tree/Utils.js.map +1 -1
  146. package/lib/esm/components/utils/AutoSizer.d.ts +6 -3
  147. package/lib/esm/components/utils/AutoSizer.js +9 -10
  148. package/lib/esm/components/utils/AutoSizer.js.map +1 -1
  149. package/lib/esm/components/utils/IsPromiseLike.d.ts +4 -1
  150. package/lib/esm/components/utils/IsPromiseLike.js +4 -1
  151. package/lib/esm/components/utils/IsPromiseLike.js.map +1 -1
  152. package/lib/esm/tree-widget-react.d.ts +0 -1
  153. package/lib/esm/tree-widget-react.js +0 -1
  154. package/lib/esm/tree-widget-react.js.map +1 -1
  155. package/lib/public/locales/en/TreeWidget.json +13 -4
  156. package/package.json +42 -47
  157. package/lib/cjs/components/rulesets/ClassificationSystems.json +0 -122
  158. package/lib/cjs/components/search-bar/SearchBar.d.ts +0 -48
  159. package/lib/cjs/components/search-bar/SearchBar.js +0 -86
  160. package/lib/cjs/components/search-bar/SearchBar.js.map +0 -1
  161. package/lib/cjs/components/search-bar/SearchBar.scss +0 -118
  162. package/lib/cjs/components/search-bar/SearchBox.d.ts +0 -70
  163. package/lib/cjs/components/search-bar/SearchBox.js +0 -186
  164. package/lib/cjs/components/search-bar/SearchBox.js.map +0 -1
  165. package/lib/cjs/components/search-bar/SearchBox.scss +0 -70
  166. package/lib/cjs/components/trees/IModelContentTree.d.ts +0 -4
  167. package/lib/cjs/components/trees/IModelContentTree.js +0 -50
  168. package/lib/cjs/components/trees/IModelContentTree.js.map +0 -1
  169. package/lib/cjs/components/trees/models-tree/Hierarchy.GroupedByClass.json +0 -391
  170. package/lib/cjs/components/trees/models-tree/Hierarchy.json +0 -386
  171. package/lib/cjs/components/trees/models-tree/ModelsTreeSearch.json +0 -239
  172. package/lib/cjs/types.d.ts +0 -44
  173. package/lib/cjs/types.js +0 -11
  174. package/lib/cjs/types.js.map +0 -1
  175. package/lib/esm/components/rulesets/ClassificationSystems.json +0 -122
  176. package/lib/esm/components/search-bar/SearchBar.d.ts +0 -48
  177. package/lib/esm/components/search-bar/SearchBar.js +0 -60
  178. package/lib/esm/components/search-bar/SearchBar.js.map +0 -1
  179. package/lib/esm/components/search-bar/SearchBar.scss +0 -118
  180. package/lib/esm/components/search-bar/SearchBox.d.ts +0 -70
  181. package/lib/esm/components/search-bar/SearchBox.js +0 -160
  182. package/lib/esm/components/search-bar/SearchBox.js.map +0 -1
  183. package/lib/esm/components/search-bar/SearchBox.scss +0 -70
  184. package/lib/esm/components/trees/IModelContentTree.d.ts +0 -4
  185. package/lib/esm/components/trees/IModelContentTree.js +0 -24
  186. package/lib/esm/components/trees/IModelContentTree.js.map +0 -1
  187. package/lib/esm/components/trees/models-tree/Hierarchy.GroupedByClass.json +0 -391
  188. package/lib/esm/components/trees/models-tree/Hierarchy.json +0 -386
  189. package/lib/esm/components/trees/models-tree/ModelsTreeSearch.json +0 -239
  190. package/lib/esm/types.d.ts +0 -44
  191. package/lib/esm/types.js +0 -8
  192. package/lib/esm/types.js.map +0 -1
  193. /package/lib/cjs/components/{rulesets → trees/imodel-content-tree}/IModelContent.json +0 -0
  194. /package/lib/esm/components/{rulesets → trees/imodel-content-tree}/IModelContent.json +0 -0
@@ -4,7 +4,7 @@
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.CachingElementIdsContainer = void 0;
7
+ exports.createSearchRuleset = exports.createRuleset = exports.CachingElementIdsContainer = void 0;
8
8
  /** @internal */
9
9
  class CachingElementIdsContainer {
10
10
  constructor(_generator) {
@@ -24,4 +24,628 @@ class CachingElementIdsContainer {
24
24
  }
25
25
  }
26
26
  exports.CachingElementIdsContainer = CachingElementIdsContainer;
27
+ /** @internal */
28
+ function createRuleset(props) {
29
+ const elementClassSpecification = props.elementClassSpecification ?? { schemaName: "BisCore", className: "GeometricElement3d" };
30
+ return {
31
+ id: "tree-widget-react/ModelsTree",
32
+ requiredSchemas: [
33
+ {
34
+ name: "BisCore",
35
+ },
36
+ ],
37
+ rules: [
38
+ {
39
+ ruleType: "RootNodes",
40
+ autoExpand: true,
41
+ specifications: [
42
+ {
43
+ specType: "InstanceNodesOfSpecificClasses",
44
+ classes: [
45
+ {
46
+ schemaName: "BisCore",
47
+ classNames: [
48
+ "Subject",
49
+ ],
50
+ },
51
+ ],
52
+ instanceFilter: `this.Parent = NULL`,
53
+ groupByClass: false,
54
+ groupByLabel: false,
55
+ },
56
+ ],
57
+ customizationRules: [
58
+ {
59
+ ruleType: "ExtendedData",
60
+ items: {
61
+ isSubject: "true",
62
+ },
63
+ },
64
+ ],
65
+ },
66
+ {
67
+ ruleType: "ChildNodes",
68
+ condition: `ParentNode.IsOfClass("Subject", "BisCore")`,
69
+ specifications: [
70
+ {
71
+ specType: "RelatedInstanceNodes",
72
+ relationshipPaths: [
73
+ {
74
+ relationship: {
75
+ schemaName: "BisCore",
76
+ className: "SubjectOwnsSubjects",
77
+ },
78
+ direction: "Forward",
79
+ targetClass: {
80
+ schemaName: "BisCore",
81
+ className: "Subject",
82
+ },
83
+ },
84
+ ],
85
+ instanceFilter: `json_extract(this.JsonProperties, "$.Subject.Job.Bridge") <> NULL OR ifnull(json_extract(this.JsonProperties, "$.Subject.Model.Type"), "") = "Hierarchy"`,
86
+ hideNodesInHierarchy: true,
87
+ groupByClass: false,
88
+ groupByLabel: false,
89
+ },
90
+ {
91
+ specType: "RelatedInstanceNodes",
92
+ relationshipPaths: [
93
+ {
94
+ relationship: {
95
+ schemaName: "BisCore",
96
+ className: "SubjectOwnsSubjects",
97
+ },
98
+ direction: "Forward",
99
+ targetClass: {
100
+ schemaName: "BisCore",
101
+ className: "Subject",
102
+ },
103
+ },
104
+ ],
105
+ instanceFilter: `json_extract(this.JsonProperties, "$.Subject.Job.Bridge") = NULL AND ifnull(json_extract(this.JsonProperties, "$.Subject.Model.Type"), "") <> "Hierarchy"`,
106
+ hideIfNoChildren: true,
107
+ groupByClass: false,
108
+ groupByLabel: false,
109
+ },
110
+ ],
111
+ customizationRules: [
112
+ {
113
+ ruleType: "ExtendedData",
114
+ items: {
115
+ isSubject: "true",
116
+ },
117
+ },
118
+ ],
119
+ },
120
+ {
121
+ ruleType: "ChildNodes",
122
+ condition: `ParentNode.IsOfClass("Subject", "BisCore")`,
123
+ specifications: [
124
+ {
125
+ specType: "InstanceNodesOfSpecificClasses",
126
+ classes: {
127
+ schemaName: "BisCore",
128
+ classNames: [
129
+ "GeometricModel3d",
130
+ ],
131
+ arePolymorphic: true,
132
+ },
133
+ relatedInstances: [
134
+ {
135
+ relationshipPath: {
136
+ relationship: {
137
+ schemaName: "BisCore",
138
+ className: "ModelModelsElement",
139
+ },
140
+ direction: "Forward",
141
+ targetClass: {
142
+ schemaName: "BisCore",
143
+ className: "InformationPartitionElement",
144
+ },
145
+ },
146
+ alias: "partition",
147
+ isRequired: true,
148
+ },
149
+ ],
150
+ instanceFilter: `(parent.ECInstanceId = partition.Parent.Id OR json_extract(parent.JsonProperties, "$.Subject.Model.TargetPartition") = printf("0x%x", partition.ECInstanceId)) AND NOT this.IsPrivate AND json_extract(partition.JsonProperties, "$.PhysicalPartition.Model.Content") = NULL AND json_extract(partition.JsonProperties, "$.GraphicalPartition3d.Model.Content") = NULL AND this.HasRelatedInstance("BisCore:ModelContainsElements", "Forward", "${elementClassSpecification.schemaName}:${elementClassSpecification.className}")`,
151
+ hasChildren: "Always",
152
+ hideIfNoChildren: true,
153
+ groupByClass: false,
154
+ groupByLabel: false,
155
+ },
156
+ {
157
+ specType: "InstanceNodesOfSpecificClasses",
158
+ classes: {
159
+ schemaName: "BisCore",
160
+ classNames: [
161
+ "GeometricModel3d",
162
+ ],
163
+ arePolymorphic: true,
164
+ },
165
+ relatedInstances: [
166
+ {
167
+ relationshipPath: {
168
+ relationship: {
169
+ schemaName: "BisCore",
170
+ className: "ModelModelsElement",
171
+ },
172
+ direction: "Forward",
173
+ targetClass: {
174
+ schemaName: "BisCore",
175
+ className: "InformationPartitionElement",
176
+ },
177
+ },
178
+ alias: "partition",
179
+ isRequired: true,
180
+ },
181
+ ],
182
+ instanceFilter: `(parent.ECInstanceId = partition.Parent.Id OR json_extract(parent.JsonProperties, "$.Subject.Model.TargetPartition") = printf("0x%x", partition.ECInstanceId)) AND NOT this.IsPrivate AND (json_extract(partition.JsonProperties, "$.PhysicalPartition.Model.Content") <> NULL OR json_extract(partition.JsonProperties, "$.GraphicalPartition3d.Model.Content") <> NULL) AND this.HasRelatedInstance("BisCore:ModelContainsElements", "Forward", "${elementClassSpecification.schemaName}:${elementClassSpecification.className}")`,
183
+ hasChildren: "Always",
184
+ hideNodesInHierarchy: true,
185
+ groupByClass: false,
186
+ groupByLabel: false,
187
+ },
188
+ ],
189
+ customizationRules: [
190
+ {
191
+ ruleType: "ExtendedData",
192
+ items: {
193
+ isModel: "true",
194
+ },
195
+ },
196
+ ],
197
+ },
198
+ {
199
+ ruleType: "ChildNodes",
200
+ condition: `ParentNode.IsOfClass("ISubModeledElement", "BisCore")`,
201
+ specifications: [
202
+ {
203
+ specType: "RelatedInstanceNodes",
204
+ relationshipPaths: [
205
+ {
206
+ relationship: {
207
+ schemaName: "BisCore",
208
+ className: "ModelModelsElement",
209
+ },
210
+ direction: "Backward",
211
+ },
212
+ ],
213
+ instanceFilter: `NOT this.IsPrivate AND this.HasRelatedInstance("BisCore:ModelContainsElements", "Forward", "${elementClassSpecification.schemaName}:${elementClassSpecification.className}")`,
214
+ hideNodesInHierarchy: true,
215
+ groupByClass: false,
216
+ groupByLabel: false,
217
+ },
218
+ ],
219
+ customizationRules: [
220
+ {
221
+ ruleType: "ExtendedData",
222
+ items: {
223
+ isModel: "true",
224
+ },
225
+ },
226
+ ],
227
+ },
228
+ {
229
+ ruleType: "ChildNodes",
230
+ condition: `ParentNode.IsOfClass("GeometricModel3d", "BisCore")`,
231
+ specifications: [
232
+ {
233
+ specType: "RelatedInstanceNodes",
234
+ relationshipPaths: [
235
+ [
236
+ {
237
+ relationship: {
238
+ schemaName: "BisCore",
239
+ className: "ModelContainsElements",
240
+ },
241
+ direction: "Forward",
242
+ targetClass: elementClassSpecification,
243
+ },
244
+ {
245
+ relationship: {
246
+ schemaName: "BisCore",
247
+ className: "GeometricElement3dIsInCategory",
248
+ },
249
+ direction: "Forward",
250
+ },
251
+ ],
252
+ ],
253
+ instanceFilter: `NOT this.IsPrivate`,
254
+ suppressSimilarAncestorsCheck: true,
255
+ hideIfNoChildren: true,
256
+ groupByClass: false,
257
+ groupByLabel: false,
258
+ },
259
+ ],
260
+ customizationRules: [
261
+ {
262
+ ruleType: "ExtendedData",
263
+ items: {
264
+ isCategory: "true",
265
+ modelId: "ParentNode.InstanceId",
266
+ },
267
+ },
268
+ ],
269
+ },
270
+ {
271
+ ruleType: "ChildNodes",
272
+ condition: `ParentNode.IsOfClass("SpatialCategory", "BisCore")`,
273
+ specifications: [
274
+ {
275
+ specType: "RelatedInstanceNodes",
276
+ relationshipPaths: [
277
+ {
278
+ relationship: {
279
+ schemaName: "BisCore",
280
+ className: "GeometricElement3dIsInCategory",
281
+ },
282
+ direction: "Backward",
283
+ targetClass: elementClassSpecification,
284
+ },
285
+ ],
286
+ instanceFilter: `this.Model.Id = parent.parent.ECInstanceId ANDALSO this.Parent = NULL`,
287
+ groupByClass: !!props.enableElementsClassGrouping,
288
+ groupByLabel: false,
289
+ },
290
+ ],
291
+ customizationRules: [
292
+ {
293
+ ruleType: "ExtendedData",
294
+ items: {
295
+ modelId: "this.Model.Id",
296
+ categoryId: "this.Category.Id",
297
+ },
298
+ },
299
+ ],
300
+ },
301
+ {
302
+ ruleType: "ChildNodes",
303
+ condition: `ParentNode.IsOfClass("GeometricElement3d", "BisCore")`,
304
+ specifications: [
305
+ {
306
+ specType: "RelatedInstanceNodes",
307
+ relationshipPaths: [
308
+ {
309
+ relationship: {
310
+ schemaName: "BisCore",
311
+ className: "ElementOwnsChildElements",
312
+ },
313
+ direction: "Forward",
314
+ targetClass: elementClassSpecification,
315
+ },
316
+ ],
317
+ groupByClass: !!props.enableElementsClassGrouping,
318
+ groupByLabel: false,
319
+ },
320
+ ],
321
+ customizationRules: [
322
+ {
323
+ ruleType: "ExtendedData",
324
+ items: {
325
+ modelId: "this.Model.Id",
326
+ categoryId: "this.Category.Id",
327
+ },
328
+ },
329
+ ],
330
+ },
331
+ {
332
+ ruleType: "Grouping",
333
+ class: {
334
+ schemaName: "BisCore",
335
+ className: "Subject",
336
+ },
337
+ groups: [
338
+ {
339
+ specType: "SameLabelInstance",
340
+ applicationStage: "PostProcess",
341
+ },
342
+ ],
343
+ },
344
+ {
345
+ ruleType: "Grouping",
346
+ class: {
347
+ schemaName: "BisCore",
348
+ className: "SpatialCategory",
349
+ },
350
+ groups: [
351
+ {
352
+ specType: "SameLabelInstance",
353
+ applicationStage: "PostProcess",
354
+ },
355
+ ],
356
+ },
357
+ {
358
+ ruleType: "ImageIdOverride",
359
+ condition: `ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass("Subject", "BisCore")`,
360
+ imageIdExpression: `IIF(this.Parent.Id = NULL, "icon-imodel-hollow-2", "icon-folder")`,
361
+ },
362
+ {
363
+ ruleType: "ImageIdOverride",
364
+ condition: `ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass("Model", "BisCore")`,
365
+ imageIdExpression: `"icon-model"`,
366
+ },
367
+ {
368
+ ruleType: "ImageIdOverride",
369
+ condition: `ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass("Category", "BisCore")`,
370
+ imageIdExpression: `"icon-layers"`,
371
+ },
372
+ {
373
+ ruleType: "ImageIdOverride",
374
+ condition: `ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass("Element", "BisCore")`,
375
+ imageIdExpression: `"icon-item"`,
376
+ },
377
+ {
378
+ ruleType: "ImageIdOverride",
379
+ condition: `ThisNode.IsClassGroupingNode`,
380
+ imageIdExpression: `"icon-ec-class"`,
381
+ },
382
+ {
383
+ ruleType: "Content",
384
+ condition: `ContentDisplayType = "AssemblyElementsRequest"`,
385
+ specifications: [
386
+ {
387
+ specType: "SelectedNodeInstances",
388
+ },
389
+ {
390
+ specType: "ContentRelatedInstances",
391
+ relationshipPaths: [
392
+ {
393
+ relationship: {
394
+ schemaName: "BisCore",
395
+ className: "ElementOwnsChildElements",
396
+ },
397
+ direction: "Forward",
398
+ count: "*",
399
+ },
400
+ ],
401
+ },
402
+ ],
403
+ },
404
+ ],
405
+ };
406
+ }
407
+ exports.createRuleset = createRuleset;
408
+ /** @internal */
409
+ function createSearchRuleset(props) {
410
+ const elementClassSpecification = props.elementClassSpecification ?? { schemaName: "BisCore", className: "GeometricElement3d" };
411
+ return {
412
+ id: "tree-widget-react/ModelsTreeSearch",
413
+ rules: [
414
+ {
415
+ ruleType: "RootNodes",
416
+ specifications: [
417
+ {
418
+ specType: "InstanceNodesOfSpecificClasses",
419
+ classes: [
420
+ {
421
+ schemaName: "BisCore",
422
+ classNames: [
423
+ "Subject",
424
+ ],
425
+ },
426
+ ],
427
+ instanceFilter: "this.Parent = NULL",
428
+ arePolymorphic: false,
429
+ groupByClass: false,
430
+ groupByLabel: false,
431
+ },
432
+ ],
433
+ customizationRules: [
434
+ {
435
+ ruleType: "ExtendedData",
436
+ items: {
437
+ isSubject: "true",
438
+ },
439
+ },
440
+ ],
441
+ },
442
+ {
443
+ ruleType: "ChildNodes",
444
+ condition: `ParentNode.IsOfClass("Subject", "BisCore")`,
445
+ specifications: [
446
+ {
447
+ specType: "RelatedInstanceNodes",
448
+ relationshipPaths: [
449
+ {
450
+ relationship: {
451
+ schemaName: "BisCore",
452
+ className: "SubjectOwnsSubjects",
453
+ },
454
+ direction: "Forward",
455
+ targetClass: {
456
+ schemaName: "BisCore",
457
+ className: "Subject",
458
+ },
459
+ },
460
+ ],
461
+ instanceFilter: `json_extract(this.JsonProperties, "$.Subject.Job.Bridge") <> NULL OR ifnull(json_extract(this.JsonProperties, "$.Subject.Model.Type"), "") = "Hierarchy"`,
462
+ hideNodesInHierarchy: true,
463
+ groupByClass: false,
464
+ groupByLabel: false,
465
+ },
466
+ {
467
+ specType: "RelatedInstanceNodes",
468
+ relationshipPaths: [
469
+ {
470
+ relationship: {
471
+ schemaName: "BisCore",
472
+ className: "SubjectOwnsSubjects",
473
+ },
474
+ direction: "Forward",
475
+ targetClass: {
476
+ schemaName: "BisCore",
477
+ className: "Subject",
478
+ },
479
+ },
480
+ ],
481
+ instanceFilter: `json_extract(this.JsonProperties, "$.Subject.Job.Bridge") = NULL AND ifnull(json_extract(this.JsonProperties, "$.Subject.Model.Type"), "") <> "Hierarchy"`,
482
+ hideExpression: `NOT ThisNode.HasChildren ANDALSO NOT ThisNode.ChildrenArtifacts.AnyMatches(x => x.isContentModel)`,
483
+ groupByClass: false,
484
+ groupByLabel: false,
485
+ },
486
+ ],
487
+ customizationRules: [
488
+ {
489
+ ruleType: "ExtendedData",
490
+ items: {
491
+ isSubject: "true",
492
+ },
493
+ },
494
+ {
495
+ ruleType: "Grouping",
496
+ class: {
497
+ schemaName: "BisCore",
498
+ className: "Subject",
499
+ },
500
+ groups: [
501
+ {
502
+ specType: "SameLabelInstance",
503
+ applicationStage: "PostProcess",
504
+ },
505
+ ],
506
+ },
507
+ ],
508
+ },
509
+ {
510
+ ruleType: "ChildNodes",
511
+ condition: `ParentNode.IsOfClass("Subject", "BisCore")`,
512
+ specifications: [
513
+ {
514
+ specType: "InstanceNodesOfSpecificClasses",
515
+ classes: {
516
+ schemaName: "BisCore",
517
+ classNames: [
518
+ "GeometricModel3d",
519
+ ],
520
+ },
521
+ arePolymorphic: true,
522
+ relatedInstances: [
523
+ {
524
+ relationshipPath: {
525
+ relationship: {
526
+ schemaName: "BisCore",
527
+ className: "ModelModelsElement",
528
+ },
529
+ direction: "Forward",
530
+ targetClass: {
531
+ schemaName: "BisCore",
532
+ className: "InformationPartitionElement",
533
+ },
534
+ },
535
+ alias: "partition",
536
+ isRequired: true,
537
+ },
538
+ ],
539
+ instanceFilter: `(parent.ECInstanceId = partition.Parent.Id OR json_extract(parent.JsonProperties, "$.Subject.Model.TargetPartition") = printf("0x%x", partition.ECInstanceId)) AND NOT this.IsPrivate AND json_extract(partition.JsonProperties, "$.PhysicalPartition.Model.Content") = NULL AND json_extract(partition.JsonProperties, "$.GraphicalPartition3d.Model.Content") = NULL AND this.HasRelatedInstance("BisCore:ModelContainsElements", "Forward", "${elementClassSpecification.schemaName}:${elementClassSpecification.className}")`,
540
+ groupByClass: false,
541
+ groupByLabel: false,
542
+ },
543
+ ],
544
+ customizationRules: [
545
+ {
546
+ ruleType: "ExtendedData",
547
+ items: {
548
+ isModel: "true",
549
+ },
550
+ },
551
+ ],
552
+ },
553
+ {
554
+ ruleType: "ChildNodes",
555
+ condition: `ParentNode.IsOfClass("Subject", "BisCore")`,
556
+ specifications: [
557
+ {
558
+ specType: "InstanceNodesOfSpecificClasses",
559
+ classes: {
560
+ schemaName: "BisCore",
561
+ classNames: [
562
+ "GeometricModel3d",
563
+ ],
564
+ },
565
+ arePolymorphic: true,
566
+ relatedInstances: [
567
+ {
568
+ relationshipPath: {
569
+ relationship: {
570
+ schemaName: "BisCore",
571
+ className: "ModelModelsElement",
572
+ },
573
+ direction: "Forward",
574
+ targetClass: {
575
+ schemaName: "BisCore",
576
+ className: "InformationPartitionElement",
577
+ },
578
+ },
579
+ alias: "partition",
580
+ isRequired: true,
581
+ },
582
+ ],
583
+ instanceFilter: `(parent.ECInstanceId = partition.Parent.Id OR json_extract(parent.JsonProperties, "$.Subject.Model.TargetPartition") = printf("0x%x", partition.ECInstanceId)) AND NOT this.IsPrivate AND (json_extract(partition.JsonProperties, "$.PhysicalPartition.Model.Content") <> NULL OR json_extract(partition.JsonProperties, "$.GraphicalPartition3d.Model.Content") <> NULL) AND this.HasRelatedInstance("BisCore:ModelContainsElements", "Forward", "${elementClassSpecification.schemaName}:${elementClassSpecification.className}")`,
584
+ hideNodesInHierarchy: true,
585
+ groupByClass: false,
586
+ groupByLabel: false,
587
+ },
588
+ ],
589
+ customizationRules: [
590
+ {
591
+ ruleType: "NodeArtifacts",
592
+ items: {
593
+ isContentModel: "true",
594
+ },
595
+ },
596
+ {
597
+ ruleType: "ExtendedData",
598
+ items: {
599
+ isModel: "true",
600
+ },
601
+ },
602
+ ],
603
+ },
604
+ {
605
+ ruleType: "ChildNodes",
606
+ condition: `ParentNode.IsOfClass("GeometricModel3d", "BisCore")`,
607
+ specifications: [
608
+ {
609
+ specType: "RelatedInstanceNodes",
610
+ relationshipPaths: [
611
+ {
612
+ relationship: {
613
+ schemaName: "BisCore",
614
+ className: "ModelOwnsSubModel",
615
+ },
616
+ direction: "Forward",
617
+ targetClass: {
618
+ schemaName: "BisCore",
619
+ className: "GeometricModel3d",
620
+ },
621
+ },
622
+ ],
623
+ instanceFilter: `NOT this.IsPrivate AND this.HasRelatedInstance("BisCore:ModelContainsElements", "Forward", "${elementClassSpecification.schemaName}:${elementClassSpecification.className}")`,
624
+ groupByClass: false,
625
+ groupByLabel: false,
626
+ },
627
+ ],
628
+ customizationRules: [
629
+ {
630
+ ruleType: "ExtendedData",
631
+ items: {
632
+ isModel: "true",
633
+ },
634
+ },
635
+ ],
636
+ },
637
+ {
638
+ ruleType: "ImageIdOverride",
639
+ condition: `ThisNode.IsOfClass("Subject", "BisCore")`,
640
+ imageIdExpression: `IIF(this.Parent.Id = NULL, "icon-imodel-hollow-2", "icon-folder")`,
641
+ },
642
+ {
643
+ ruleType: "ImageIdOverride",
644
+ condition: `ThisNode.IsOfClass("Model", "BisCore")`,
645
+ imageIdExpression: `"icon-model"`,
646
+ },
647
+ ],
648
+ };
649
+ }
650
+ exports.createSearchRuleset = createSearchRuleset;
27
651
  //# sourceMappingURL=Utils.js.map