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