@itwin/tree-widget-react 0.1.2 → 0.3.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 (46) hide show
  1. package/README.md +30 -1
  2. package/lib/cjs/components/IconButton.scss +2 -2
  3. package/lib/cjs/components/TreeWidgetComponent.d.ts +1 -0
  4. package/lib/cjs/components/TreeWidgetComponent.scss +1 -1
  5. package/lib/cjs/components/header/TreeHeader.d.ts +1 -0
  6. package/lib/cjs/components/header/TreeHeader.scss +1 -1
  7. package/lib/cjs/components/rulesets/IModelContent.json +435 -0
  8. package/lib/cjs/components/search-bar/Popup.scss +1 -1
  9. package/lib/cjs/components/search-bar/SearchBar.scss +1 -1
  10. package/lib/cjs/components/search-bar/SearchBox.scss +1 -1
  11. package/lib/cjs/components/trees/CategoriesTree.d.ts +1 -0
  12. package/lib/cjs/components/trees/CategoriesTree.scss +1 -1
  13. package/lib/cjs/components/trees/ClassificationsTree.d.ts +1 -0
  14. package/lib/cjs/components/trees/IModelContentTree.d.ts +7 -0
  15. package/lib/cjs/components/trees/IModelContentTree.js +56 -0
  16. package/lib/cjs/components/trees/IModelContentTree.js.map +1 -0
  17. package/lib/cjs/components/trees/ModelsTree.d.ts +1 -0
  18. package/lib/cjs/components/trees/ModelsTree.scss +1 -1
  19. package/lib/cjs/components/trees/SpatialTree.d.ts +1 -0
  20. package/lib/cjs/components/trees/TreeWithRulesetTree.scss +1 -1
  21. package/lib/cjs/components/trees/index.d.ts +1 -0
  22. package/lib/cjs/components/trees/index.js +5 -4
  23. package/lib/cjs/components/trees/index.js.map +1 -1
  24. package/lib/esm/components/IconButton.scss +2 -2
  25. package/lib/esm/components/TreeWidgetComponent.d.ts +1 -0
  26. package/lib/esm/components/TreeWidgetComponent.scss +1 -1
  27. package/lib/esm/components/header/TreeHeader.d.ts +1 -0
  28. package/lib/esm/components/header/TreeHeader.scss +1 -1
  29. package/lib/esm/components/rulesets/IModelContent.json +435 -0
  30. package/lib/esm/components/search-bar/Popup.scss +1 -1
  31. package/lib/esm/components/search-bar/SearchBar.scss +1 -1
  32. package/lib/esm/components/search-bar/SearchBox.scss +1 -1
  33. package/lib/esm/components/trees/CategoriesTree.d.ts +1 -0
  34. package/lib/esm/components/trees/CategoriesTree.scss +1 -1
  35. package/lib/esm/components/trees/ClassificationsTree.d.ts +1 -0
  36. package/lib/esm/components/trees/IModelContentTree.d.ts +7 -0
  37. package/lib/esm/components/trees/IModelContentTree.js +30 -0
  38. package/lib/esm/components/trees/IModelContentTree.js.map +1 -0
  39. package/lib/esm/components/trees/ModelsTree.d.ts +1 -0
  40. package/lib/esm/components/trees/ModelsTree.scss +1 -1
  41. package/lib/esm/components/trees/SpatialTree.d.ts +1 -0
  42. package/lib/esm/components/trees/TreeWithRulesetTree.scss +1 -1
  43. package/lib/esm/components/trees/index.d.ts +1 -0
  44. package/lib/esm/components/trees/index.js +1 -0
  45. package/lib/esm/components/trees/index.js.map +1 -1
  46. package/package.json +25 -25
package/README.md CHANGED
@@ -27,6 +27,35 @@ import { UiItemsManager } from "@itwin/appui-abstract";
27
27
  import { TreeWidgetUiItemsProvider } from "@itwin/tree-widget-react";
28
28
  ...
29
29
  UiItemsManager.register(
30
- new TreeWidgetUiItemsProvider({ ...TreeWidgetControlOptions })
30
+ new TreeWidgetUiItemsProvider({ ...TreeWidgetOptions })
31
31
  );
32
32
  ```
33
+
34
+ ### Additional trees avaialable
35
+
36
+ #### IModelContentTree
37
+
38
+ Component that displays a hierarchy with content of a given `IModelConnection`.
39
+
40
+ ##### Resulting hierarchy
41
+
42
+ - Root Subject
43
+ - Child Subjects
44
+ - Target Model
45
+ - Spatial Categories of top-assemblies in the Model (if model is a GeometricModel3d)
46
+ - Top-assemblies in the model and category
47
+ - Child elements of the assembly
48
+ - Drawing Categories of top-assemblies in the Model (if model is a GeometricModel2d)
49
+ - Top-assemblies in the model and category
50
+ - Child elements of the assembly
51
+ - Top-assemblies in the Model (if model is neither GeometricModel3d nor GeometricModel2d)
52
+ - Child elements of the assembly
53
+
54
+ In addition, for every modeled element we show content of the model as children for the element's node.
55
+
56
+ More details about Subjects and Models can be found here:
57
+
58
+ - <https://www.imodeljs.org/bis/intro/information-hierarchy/>
59
+ - <https://www.imodeljs.org/bis/intro/organizing-models-and-elements/>
60
+
61
+ More details about the hierarchy can be found in the [presentation ruleset JSON file](./src/components/rulesets/IModelContent.json).
@@ -2,8 +2,8 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/core-react/lib/esm/core-react/index";
6
- @import "~@itwin/appui-layout-react/lib/esm/appui-layout-react/footer/_variables";
5
+ @import "~@itwin/core-react/lib/cjs/core-react/index";
6
+ @import "~@itwin/appui-layout-react/lib/cjs/appui-layout-react/footer/_variables";
7
7
 
8
8
  .tree-widget-icon-button {
9
9
  display: inline-block;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import "./TreeWidgetComponent.scss";
2
3
  import type { SelectableContentDefinition } from "@itwin/components-react";
3
4
  interface TreeWidgetComponentProps {
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/core-react/lib/esm/core-react/index";
5
+ @import "~@itwin/core-react/lib/cjs/core-react/index";
6
6
 
7
7
  .tree-widget-visibility-widget {
8
8
  padding: $uicore-s;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import type { SearchOptions } from "../TreeFilteringState";
2
3
  import "./TreeHeader.scss";
3
4
  export interface TreeHeaderComponentProps {
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/core-react/lib/esm/core-react/index";
5
+ @import "~@itwin/core-react/lib/cjs/core-react/index";
6
6
 
7
7
  .tree-widget-header-tree-search-bar {
8
8
  margin-bottom: $uicore-s;
@@ -0,0 +1,435 @@
1
+ {
2
+ "$schema": "../../node_modules/@itwin/presentation-common/Ruleset.schema.json",
3
+ "id": "tree-widget-react/imodel-content",
4
+ "requiredSchemas": [
5
+ {
6
+ "name": "BisCore"
7
+ }
8
+ ],
9
+ "rules": [
10
+ {
11
+ "ruleType": "RootNodes",
12
+ "autoExpand": true,
13
+ "specifications": [
14
+ {
15
+ "specType": "InstanceNodesOfSpecificClasses",
16
+ "classes": [
17
+ {
18
+ "schemaName": "BisCore",
19
+ "classNames": ["Subject"],
20
+ "arePolymorphic": false
21
+ }
22
+ ],
23
+ "instanceFilter": "this.Parent = NULL",
24
+ "groupByClass": false,
25
+ "groupByLabel": false
26
+ }
27
+ ]
28
+ },
29
+ {
30
+ "ruleType": "ChildNodes",
31
+ "condition": "ParentNode.IsOfClass(\"Subject\", \"BisCore\")",
32
+ "specifications": [
33
+ {
34
+ "specType": "RelatedInstanceNodes",
35
+ "relationshipPaths": [
36
+ {
37
+ "relationship": {
38
+ "schemaName": "BisCore",
39
+ "className": "SubjectOwnsSubjects"
40
+ },
41
+ "direction": "Forward",
42
+ "targetClass": {
43
+ "schemaName": "BisCore",
44
+ "className": "Subject"
45
+ }
46
+ }
47
+ ],
48
+ "instanceFilter": "json_extract(this.JsonProperties, \"$.Subject.Job.Bridge\") <> NULL OR ifnull(json_extract(this.JsonProperties, \"$.Subject.Model.Type\"), \"\") = \"Hierarchy\"",
49
+ "hideNodesInHierarchy": true,
50
+ "groupByClass": false,
51
+ "groupByLabel": false
52
+ },
53
+ {
54
+ "specType": "RelatedInstanceNodes",
55
+ "relationshipPaths": [
56
+ {
57
+ "relationship": {
58
+ "schemaName": "BisCore",
59
+ "className": "SubjectOwnsSubjects"
60
+ },
61
+ "direction": "Forward",
62
+ "targetClass": {
63
+ "schemaName": "BisCore",
64
+ "className": "Subject"
65
+ }
66
+ }
67
+ ],
68
+ "instanceFilter": "json_extract(this.JsonProperties, \"$.Subject.Job.Bridge\") = NULL AND ifnull(json_extract(this.JsonProperties, \"$.Subject.Model.Type\"), \"\") <> \"Hierarchy\"",
69
+ "groupByClass": false,
70
+ "groupByLabel": false
71
+ }
72
+ ]
73
+ },
74
+ {
75
+ "ruleType": "ChildNodes",
76
+ "condition": "ParentNode.IsOfClass(\"Subject\", \"BisCore\")",
77
+ "specifications": [
78
+ {
79
+ "specType": "InstanceNodesOfSpecificClasses",
80
+ "classes": {
81
+ "schemaName": "BisCore",
82
+ "classNames": ["Model"],
83
+ "arePolymorphic": true
84
+ },
85
+ "relatedInstances": [
86
+ {
87
+ "relationshipPath": {
88
+ "relationship": {
89
+ "schemaName": "BisCore",
90
+ "className": "ModelModelsElement"
91
+ },
92
+ "direction": "Forward",
93
+ "targetClass": {
94
+ "schemaName": "BisCore",
95
+ "className": "InformationPartitionElement"
96
+ }
97
+ },
98
+ "alias": "partition",
99
+ "isRequired": true
100
+ }
101
+ ],
102
+ "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",
103
+ "groupByClass": false,
104
+ "groupByLabel": false
105
+ },
106
+ {
107
+ "specType": "InstanceNodesOfSpecificClasses",
108
+ "classes": {
109
+ "schemaName": "BisCore",
110
+ "classNames": ["Model"],
111
+ "arePolymorphic": true
112
+ },
113
+ "relatedInstances": [
114
+ {
115
+ "relationshipPath": {
116
+ "relationship": {
117
+ "schemaName": "BisCore",
118
+ "className": "ModelModelsElement"
119
+ },
120
+ "direction": "Forward",
121
+ "targetClass": {
122
+ "schemaName": "BisCore",
123
+ "className": "InformationPartitionElement"
124
+ }
125
+ },
126
+ "alias": "partition",
127
+ "isRequired": true
128
+ }
129
+ ],
130
+ "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)",
131
+ "hideNodesInHierarchy": true,
132
+ "groupByClass": false,
133
+ "groupByLabel": false
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ "ruleType": "ChildNodes",
139
+ "condition": "ParentNode.IsOfClass(\"ISubModeledElement\", \"BisCore\")",
140
+ "specifications": [
141
+ {
142
+ "specType": "RelatedInstanceNodes",
143
+ "relationshipPaths": [
144
+ {
145
+ "relationship": {
146
+ "schemaName": "BisCore",
147
+ "className": "ModelModelsElement"
148
+ },
149
+ "direction": "Backward"
150
+ }
151
+ ],
152
+ "instanceFilter": "NOT this.IsPrivate",
153
+ "hideNodesInHierarchy": true,
154
+ "groupByClass": false,
155
+ "groupByLabel": false
156
+ }
157
+ ]
158
+ },
159
+ {
160
+ "ruleType": "ChildNodes",
161
+ "condition": "ParentNode.IsOfClass(\"GeometricModel3d\", \"BisCore\")",
162
+ "specifications": [
163
+ {
164
+ "specType": "RelatedInstanceNodes",
165
+ "relationshipPaths": [
166
+ [
167
+ {
168
+ "relationship": {
169
+ "schemaName": "BisCore",
170
+ "className": "ModelContainsElements"
171
+ },
172
+ "direction": "Forward"
173
+ },
174
+ {
175
+ "relationship": {
176
+ "schemaName": "BisCore",
177
+ "className": "GeometricElement3dIsInCategory"
178
+ },
179
+ "direction": "Forward"
180
+ }
181
+ ]
182
+ ],
183
+ "suppressSimilarAncestorsCheck": true,
184
+ "groupByClass": false,
185
+ "groupByLabel": false,
186
+ "nestedRules": [
187
+ {
188
+ "ruleType": "ChildNodes",
189
+ "condition": "ParentNode.IsOfClass(\"SpatialCategory\", \"BisCore\")",
190
+ "specifications": [
191
+ {
192
+ "specType": "RelatedInstanceNodes",
193
+ "relationshipPaths": [
194
+ {
195
+ "relationship": {
196
+ "schemaName": "BisCore",
197
+ "className": "GeometricElement3dIsInCategory"
198
+ },
199
+ "direction": "Backward"
200
+ }
201
+ ],
202
+ "instanceFilter": "this.Model.Id = parent.parent.ECInstanceId ANDALSO this.Parent = NULL",
203
+ "groupByClass": true,
204
+ "groupByLabel": false
205
+ }
206
+ ]
207
+ }
208
+ ]
209
+ },
210
+ {
211
+ "specType": "RelatedInstanceNodes",
212
+ "relationshipPaths": [
213
+ {
214
+ "relationship": {
215
+ "schemaName": "BisCore",
216
+ "className": "ModelContainsElements"
217
+ },
218
+ "direction": "Forward",
219
+ "targetClass": {
220
+ "schemaName": "BisCore",
221
+ "className": "InformationContentElement"
222
+ }
223
+ }
224
+ ],
225
+ "groupByClass": true,
226
+ "groupByLabel": false
227
+ }
228
+ ]
229
+ },
230
+ {
231
+ "ruleType": "ChildNodes",
232
+ "condition": "ParentNode.IsOfClass(\"GeometricModel2d\", \"BisCore\")",
233
+ "specifications": [
234
+ {
235
+ "specType": "RelatedInstanceNodes",
236
+ "relationshipPaths": [
237
+ [
238
+ {
239
+ "relationship": {
240
+ "schemaName": "BisCore",
241
+ "className": "ModelContainsElements"
242
+ },
243
+ "direction": "Forward"
244
+ },
245
+ {
246
+ "relationship": {
247
+ "schemaName": "BisCore",
248
+ "className": "GeometricElement2dIsInCategory"
249
+ },
250
+ "direction": "Forward"
251
+ }
252
+ ]
253
+ ],
254
+ "suppressSimilarAncestorsCheck": true,
255
+ "groupByClass": false,
256
+ "groupByLabel": false,
257
+ "nestedRules": [
258
+ {
259
+ "ruleType": "ChildNodes",
260
+ "condition": "ParentNode.IsOfClass(\"DrawingCategory\", \"BisCore\")",
261
+ "specifications": [
262
+ {
263
+ "specType": "RelatedInstanceNodes",
264
+ "relationshipPaths": [
265
+ {
266
+ "relationship": {
267
+ "schemaName": "BisCore",
268
+ "className": "GeometricElement2dIsInCategory"
269
+ },
270
+ "direction": "Backward"
271
+ }
272
+ ],
273
+ "instanceFilter": "this.Model.Id = parent.parent.ECInstanceId ANDALSO this.Parent = NULL",
274
+ "groupByClass": true,
275
+ "groupByLabel": false
276
+ }
277
+ ]
278
+ }
279
+ ]
280
+ },
281
+ {
282
+ "specType": "RelatedInstanceNodes",
283
+ "relationshipPaths": [
284
+ {
285
+ "relationship": {
286
+ "schemaName": "BisCore",
287
+ "className": "ModelContainsElements"
288
+ },
289
+ "direction": "Forward",
290
+ "targetClass": {
291
+ "schemaName": "BisCore",
292
+ "className": "InformationContentElement"
293
+ }
294
+ }
295
+ ],
296
+ "groupByClass": true,
297
+ "groupByLabel": false
298
+ }
299
+ ]
300
+ },
301
+ {
302
+ "ruleType": "ChildNodes",
303
+ "condition": "ParentNode.IsOfClass(\"Model\", \"BisCore\")",
304
+ "onlyIfNotHandled": true,
305
+ "specifications": [
306
+ {
307
+ "specType": "RelatedInstanceNodes",
308
+ "relationshipPaths": [
309
+ [
310
+ {
311
+ "relationship": {
312
+ "schemaName": "BisCore",
313
+ "className": "ModelContainsElements"
314
+ },
315
+ "direction": "Forward"
316
+ }
317
+ ]
318
+ ],
319
+ "instanceFilter": "this.Parent = NULL",
320
+ "groupByClass": true,
321
+ "groupByLabel": false
322
+ }
323
+ ]
324
+ },
325
+ {
326
+ "ruleType": "ChildNodes",
327
+ "condition": "ParentNode.IsOfClass(\"GroupInformationElement\", \"BisCore\")",
328
+ "onlyIfNotHandled": true,
329
+ "specifications": [
330
+ {
331
+ "specType": "CustomNode",
332
+ "type": "T_CHILDREN",
333
+ "label": "Children",
334
+ "imageId": "icon-hierarchy-tree",
335
+ "hideIfNoChildren": true,
336
+ "nestedRules": [
337
+ {
338
+ "ruleType": "ChildNodes",
339
+ "specifications": [
340
+ {
341
+ "specType": "RelatedInstanceNodes",
342
+ "relationshipPaths": [
343
+ {
344
+ "relationship": {
345
+ "schemaName": "BisCore",
346
+ "className": "ElementOwnsChildElements"
347
+ },
348
+ "direction": "Forward"
349
+ }
350
+ ],
351
+ "groupByClass": true,
352
+ "groupByLabel": false
353
+ }
354
+ ]
355
+ }
356
+ ]
357
+ },
358
+ {
359
+ "specType": "CustomNode",
360
+ "type": "T_GROUPED_MEMBERS",
361
+ "label": "Members",
362
+ "imageId": "icon-group",
363
+ "hideIfNoChildren": true,
364
+ "nestedRules": [
365
+ {
366
+ "ruleType": "ChildNodes",
367
+ "specifications": [
368
+ {
369
+ "specType": "RelatedInstanceNodes",
370
+ "relationshipPaths": [
371
+ {
372
+ "relationship": {
373
+ "schemaName": "BisCore",
374
+ "className": "ElementGroupsMembers"
375
+ },
376
+ "direction": "Forward"
377
+ }
378
+ ],
379
+ "groupByClass": true,
380
+ "groupByLabel": false
381
+ }
382
+ ]
383
+ }
384
+ ]
385
+ }
386
+ ]
387
+ },
388
+ {
389
+ "ruleType": "ChildNodes",
390
+ "condition": "ParentNode.IsOfClass(\"Element\", \"BisCore\")",
391
+ "onlyIfNotHandled": true,
392
+ "specifications": [
393
+ {
394
+ "specType": "RelatedInstanceNodes",
395
+ "relationshipPaths": [
396
+ {
397
+ "relationship": {
398
+ "schemaName": "BisCore",
399
+ "className": "ElementOwnsChildElements"
400
+ },
401
+ "direction": "Forward"
402
+ }
403
+ ],
404
+ "groupByClass": true,
405
+ "groupByLabel": false
406
+ }
407
+ ]
408
+ },
409
+ {
410
+ "ruleType": "ImageIdOverride",
411
+ "condition": "ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass(\"Subject\", \"BisCore\")",
412
+ "imageIdExpression": "IIF(this.Parent.Id = NULL, \"icon-imodel-hollow-2\", \"icon-folder\")"
413
+ },
414
+ {
415
+ "ruleType": "ImageIdOverride",
416
+ "condition": "ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass(\"Model\", \"BisCore\")",
417
+ "imageIdExpression": "\"icon-model\""
418
+ },
419
+ {
420
+ "ruleType": "ImageIdOverride",
421
+ "condition": "ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass(\"Category\", \"BisCore\")",
422
+ "imageIdExpression": "\"icon-layers\""
423
+ },
424
+ {
425
+ "ruleType": "ImageIdOverride",
426
+ "condition": "ThisNode.IsInstanceNode ANDALSO ThisNode.IsOfClass(\"Element\", \"BisCore\")",
427
+ "imageIdExpression": "\"icon-item\""
428
+ },
429
+ {
430
+ "ruleType": "ImageIdOverride",
431
+ "condition": "ThisNode.IsClassGroupingNode",
432
+ "imageIdExpression": "\"icon-ec-class\""
433
+ }
434
+ ]
435
+ }
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/core-react/lib/esm/core-react/index";
5
+ @import "~@itwin/core-react/lib/cjs/core-react/index";
6
6
 
7
7
  .tree-widget-search-popup {
8
8
  display: block;
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/core-react/lib/esm/core-react/index";
5
+ @import "~@itwin/core-react/lib/cjs/core-react/index";
6
6
 
7
7
  .tree-widget-search-bar {
8
8
  display: flex;
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/core-react/lib/esm/core-react/index";
5
+ @import "~@itwin/core-react/lib/cjs/core-react/index";
6
6
 
7
7
  .tree-widget-searchbox {
8
8
  @include uicore-font-family;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import type { IModelConnection, Viewport } from "@itwin/core-frontend";
2
3
  import "./CategoriesTree.scss";
3
4
  export interface CategoriesTreeComponentProps {
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/core-react/lib/esm/core-react/index";
5
+ @import "~@itwin/core-react/lib/cjs/core-react/index";
6
6
 
7
7
  .tree-widget-category-tree-search-bar {
8
8
  margin-bottom: $uicore-s;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import type { IModelConnection } from "@itwin/core-frontend";
2
3
  export interface ClassificationsTreeComponentProps {
3
4
  iModel: IModelConnection;
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import type { IModelConnection } from "@itwin/core-frontend";
3
+ export interface IModelContentTreeProps extends Omit<React.AllHTMLAttributes<HTMLDivElement>, "children"> {
4
+ iModel: IModelConnection;
5
+ }
6
+ export declare const IModelContentTree: (props: IModelContentTreeProps) => JSX.Element;
7
+ //# sourceMappingURL=IModelContentTree.d.ts.map
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.IModelContentTree = void 0;
26
+ /*---------------------------------------------------------------------------------------------
27
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
28
+ * See LICENSE.md in the project root for license terms and full copyright notice.
29
+ *--------------------------------------------------------------------------------------------*/
30
+ const classnames_1 = __importDefault(require("classnames"));
31
+ const react_1 = __importStar(require("react"));
32
+ const presentation_components_1 = require("@itwin/presentation-components");
33
+ const components_react_1 = require("@itwin/components-react");
34
+ const IModelContent_json_1 = __importDefault(require("../rulesets/IModelContent.json"));
35
+ const core_react_1 = require("@itwin/core-react");
36
+ const IModelContentTree = (props) => {
37
+ const { iModel, className, ...divProps } = props;
38
+ const [height, setHeight] = react_1.useState(0);
39
+ const [width, setWidth] = react_1.useState(0);
40
+ const handleResize = react_1.useCallback((w, h) => {
41
+ setHeight(h);
42
+ setWidth(w);
43
+ }, []);
44
+ const ref = core_react_1.useResizeObserver(handleResize);
45
+ const { nodeLoader } = presentation_components_1.usePresentationTreeNodeLoader({
46
+ imodel: iModel,
47
+ ruleset: IModelContent_json_1.default,
48
+ pagingSize: 20,
49
+ appendChildrenCountForGroupingNodes: true,
50
+ });
51
+ const eventHandler = components_react_1.useTreeEventsHandler(react_1.useMemo(() => ({ nodeLoader, modelSource: nodeLoader.modelSource, collapsedChildrenDisposalEnabled: true }), [nodeLoader]));
52
+ return (react_1.default.createElement("div", { ref: ref, style: { width: "100%", height: "100%" }, ...divProps, className: classnames_1.default("imodel-content-tree", className) },
53
+ react_1.default.createElement(components_react_1.ControlledTree, { width: width, height: height, nodeLoader: nodeLoader, selectionMode: components_react_1.SelectionMode.None, eventsHandler: eventHandler, model: components_react_1.useTreeModel(nodeLoader.modelSource), iconsEnabled: true })));
54
+ };
55
+ exports.IModelContentTree = IModelContentTree;
56
+ //# sourceMappingURL=IModelContentTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IModelContentTree.js","sourceRoot":"","sources":["../../../../src/components/trees/IModelContentTree.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;+FAG+F;AAC/F,4DAAoC;AACpC,+CAA8D;AAG9D,4EAA+E;AAC/E,8DAA4G;AAC5G,wFAAoE;AACpE,kDAAsD;AAM/C,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAE,EAAE;IACjE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEjD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,gBAAQ,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,gBAAQ,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,mBAAW,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;QACxD,SAAS,CAAC,CAAC,CAAC,CAAC;QACb,QAAQ,CAAC,CAAC,CAAC,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,GAAG,GAAG,8BAAiB,CAAiB,YAAY,CAAC,CAAC;IAE5D,MAAM,EAAE,UAAU,EAAE,GAAG,uDAA6B,CAAC;QACnD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,4BAAiC;QAC1C,UAAU,EAAE,EAAE;QACd,mCAAmC,EAAE,IAAI;KAC1C,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,uCAAoB,CAAC,eAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,WAAW,EAAE,gCAAgC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEtK,OAAO,CACL,uCAAK,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAM,QAAQ,EAAE,SAAS,EAAE,oBAAU,CAAC,qBAAqB,EAAE,SAAS,CAAC;QAC5H,8BAAC,iCAAc,IACb,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,gCAAa,CAAC,IAAI,EACjC,aAAa,EAAE,YAAY,EAC3B,KAAK,EAAE,+BAAY,CAAC,UAAU,CAAC,WAAW,CAAC,EAC3C,YAAY,EAAE,IAAI,GAClB,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAhCW,QAAA,iBAAiB,qBAgC5B","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport classNames from \"classnames\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { Ruleset } from \"@itwin/presentation-common\";\nimport { usePresentationTreeNodeLoader } from \"@itwin/presentation-components\";\nimport { ControlledTree, SelectionMode, useTreeEventsHandler, useTreeModel } from \"@itwin/components-react\";\nimport IMODEL_CONTENT_RULESET from \"../rulesets/IModelContent.json\";\nimport { useResizeObserver } from \"@itwin/core-react\";\n\nexport interface IModelContentTreeProps extends Omit<React.AllHTMLAttributes<HTMLDivElement>, \"children\"> {\n iModel: IModelConnection;\n}\n\nexport const IModelContentTree = (props: IModelContentTreeProps) => {\n const { iModel, className, ...divProps } = props;\n\n const [height, setHeight] = useState(0);\n const [width, setWidth] = useState(0);\n const handleResize = useCallback((w: number, h: number) => {\n setHeight(h);\n setWidth(w);\n }, []);\n const ref = useResizeObserver<HTMLDivElement>(handleResize);\n\n const { nodeLoader } = usePresentationTreeNodeLoader({\n imodel: iModel,\n ruleset: IMODEL_CONTENT_RULESET as Ruleset,\n pagingSize: 20,\n appendChildrenCountForGroupingNodes: true,\n });\n const eventHandler = useTreeEventsHandler(useMemo(() => ({ nodeLoader, modelSource: nodeLoader.modelSource, collapsedChildrenDisposalEnabled: true }), [nodeLoader]));\n\n return (\n <div ref={ref} style={{ width: \"100%\", height: \"100%\" }} {...divProps} className={classNames(\"imodel-content-tree\", className)}>\n <ControlledTree\n width={width}\n height={height}\n nodeLoader={nodeLoader}\n selectionMode={SelectionMode.None}\n eventsHandler={eventHandler}\n model={useTreeModel(nodeLoader.modelSource)}\n iconsEnabled={true}\n />\n </div>\n );\n};\n"]}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import type { IModelConnection, Viewport } from "@itwin/core-frontend";
2
3
  import "./ModelsTree.scss";
3
4
  export interface ModelTreeProps {