@itwin/tree-widget-react 0.5.0 → 0.6.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 (114) hide show
  1. package/lib/cjs/TreeWidget.js +4 -2
  2. package/lib/cjs/TreeWidget.js.map +1 -1
  3. package/lib/cjs/components/TreeWidgetUiItemsProvider.js +6 -6
  4. package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +1 -1
  5. package/lib/cjs/components/rulesets/ClassificationSystems.json +122 -0
  6. package/lib/cjs/components/rulesets/IModelContent.json +407 -407
  7. package/lib/cjs/components/trees/Common.d.ts +21 -0
  8. package/lib/cjs/components/trees/Common.js +21 -0
  9. package/lib/cjs/components/trees/Common.js.map +1 -0
  10. package/lib/cjs/components/trees/VisibilityTreeBase.scss +53 -0
  11. package/lib/cjs/components/trees/VisibilityTreeEventHandler.d.ts +67 -0
  12. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js +147 -0
  13. package/lib/cjs/components/trees/VisibilityTreeEventHandler.js.map +1 -0
  14. package/lib/cjs/components/trees/VisibilityTreeRenderer.d.ts +43 -0
  15. package/lib/cjs/components/trees/VisibilityTreeRenderer.js +81 -0
  16. package/lib/cjs/components/trees/VisibilityTreeRenderer.js.map +1 -0
  17. package/lib/cjs/components/trees/category-tree/Categories.json +102 -0
  18. package/lib/cjs/components/trees/category-tree/CategoriesTree.d.ts +65 -0
  19. package/lib/cjs/components/trees/category-tree/CategoriesTree.js +121 -0
  20. package/lib/cjs/components/trees/category-tree/CategoriesTree.js.map +1 -0
  21. package/lib/{esm/components/trees → cjs/components/trees/category-tree}/CategoriesTree.scss +5 -0
  22. package/lib/cjs/components/trees/{CategoriesTree.d.ts → category-tree/CategoriesTreeComponent.d.ts} +2 -2
  23. package/lib/cjs/components/trees/{CategoriesTree.js → category-tree/CategoriesTreeComponent.js} +14 -13
  24. package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -0
  25. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.d.ts +54 -0
  26. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js +213 -0
  27. package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -0
  28. package/lib/cjs/components/trees/index.d.ts +10 -3
  29. package/lib/cjs/components/trees/index.js +13 -6
  30. package/lib/cjs/components/trees/index.js.map +1 -1
  31. package/lib/cjs/components/trees/models-tree/Hierarchy.GroupedByClass.json +392 -0
  32. package/lib/cjs/components/trees/models-tree/Hierarchy.json +387 -0
  33. package/lib/cjs/components/trees/models-tree/ModelsTree.d.ts +82 -0
  34. package/lib/cjs/components/trees/models-tree/ModelsTree.js +144 -0
  35. package/lib/cjs/components/trees/models-tree/ModelsTree.js.map +1 -0
  36. package/lib/cjs/components/trees/{ModelsTree.scss → models-tree/ModelsTree.scss} +5 -1
  37. package/lib/{esm/components/trees/ModelsTree.d.ts → cjs/components/trees/models-tree/ModelsTreeComponent.d.ts} +2 -2
  38. package/lib/cjs/components/trees/{ModelsTree.js → models-tree/ModelsTreeComponent.js} +6 -5
  39. package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +1 -0
  40. package/lib/cjs/components/trees/models-tree/ModelsTreeSearch.json +239 -0
  41. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.d.ts +100 -0
  42. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js +477 -0
  43. package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js.map +1 -0
  44. package/lib/cjs/components/trees/models-tree/Utils.d.ts +10 -0
  45. package/lib/cjs/components/trees/models-tree/Utils.js +27 -0
  46. package/lib/cjs/components/trees/models-tree/Utils.js.map +1 -0
  47. package/lib/cjs/components/trees/{SpatialTree.d.ts → spatial-tree/SpatialTreeComponent.d.ts} +2 -2
  48. package/lib/cjs/components/trees/{SpatialTree.js → spatial-tree/SpatialTreeComponent.js} +2 -2
  49. package/lib/cjs/components/trees/spatial-tree/SpatialTreeComponent.js.map +1 -0
  50. package/lib/cjs/tree-widget-react.js +3 -3
  51. package/lib/cjs/tree-widget-react.js.map +1 -1
  52. package/lib/cjs/types.d.ts +3 -1
  53. package/lib/cjs/types.js.map +1 -1
  54. package/lib/esm/TreeWidget.js +4 -2
  55. package/lib/esm/TreeWidget.js.map +1 -1
  56. package/lib/esm/components/TreeWidgetUiItemsProvider.js +3 -3
  57. package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +1 -1
  58. package/lib/esm/components/rulesets/ClassificationSystems.json +122 -0
  59. package/lib/esm/components/rulesets/IModelContent.json +407 -407
  60. package/lib/esm/components/trees/Common.d.ts +21 -0
  61. package/lib/esm/components/trees/Common.js +18 -0
  62. package/lib/esm/components/trees/Common.js.map +1 -0
  63. package/lib/esm/components/trees/VisibilityTreeBase.scss +53 -0
  64. package/lib/esm/components/trees/VisibilityTreeEventHandler.d.ts +67 -0
  65. package/lib/esm/components/trees/VisibilityTreeEventHandler.js +143 -0
  66. package/lib/esm/components/trees/VisibilityTreeEventHandler.js.map +1 -0
  67. package/lib/esm/components/trees/VisibilityTreeRenderer.d.ts +43 -0
  68. package/lib/esm/components/trees/VisibilityTreeRenderer.js +54 -0
  69. package/lib/esm/components/trees/VisibilityTreeRenderer.js.map +1 -0
  70. package/lib/esm/components/trees/category-tree/Categories.json +102 -0
  71. package/lib/esm/components/trees/category-tree/CategoriesTree.d.ts +65 -0
  72. package/lib/esm/components/trees/category-tree/CategoriesTree.js +96 -0
  73. package/lib/esm/components/trees/category-tree/CategoriesTree.js.map +1 -0
  74. package/lib/{cjs/components/trees → esm/components/trees/category-tree}/CategoriesTree.scss +5 -0
  75. package/lib/esm/components/trees/{CategoriesTree.d.ts → category-tree/CategoriesTreeComponent.d.ts} +2 -2
  76. package/lib/esm/components/trees/{CategoriesTree.js → category-tree/CategoriesTreeComponent.js} +8 -7
  77. package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -0
  78. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.d.ts +54 -0
  79. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js +188 -0
  80. package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -0
  81. package/lib/esm/components/trees/index.d.ts +10 -3
  82. package/lib/esm/components/trees/index.js +13 -6
  83. package/lib/esm/components/trees/index.js.map +1 -1
  84. package/lib/esm/components/trees/models-tree/Hierarchy.GroupedByClass.json +392 -0
  85. package/lib/esm/components/trees/models-tree/Hierarchy.json +387 -0
  86. package/lib/esm/components/trees/models-tree/ModelsTree.d.ts +82 -0
  87. package/lib/esm/components/trees/models-tree/ModelsTree.js +121 -0
  88. package/lib/esm/components/trees/models-tree/ModelsTree.js.map +1 -0
  89. package/lib/esm/components/trees/{ModelsTree.scss → models-tree/ModelsTree.scss} +5 -1
  90. package/lib/{cjs/components/trees/ModelsTree.d.ts → esm/components/trees/models-tree/ModelsTreeComponent.d.ts} +2 -2
  91. package/lib/esm/components/trees/{ModelsTree.js → models-tree/ModelsTreeComponent.js} +6 -5
  92. package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +1 -0
  93. package/lib/esm/components/trees/models-tree/ModelsTreeSearch.json +239 -0
  94. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.d.ts +100 -0
  95. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js +472 -0
  96. package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js.map +1 -0
  97. package/lib/esm/components/trees/models-tree/Utils.d.ts +10 -0
  98. package/lib/esm/components/trees/models-tree/Utils.js +23 -0
  99. package/lib/esm/components/trees/models-tree/Utils.js.map +1 -0
  100. package/lib/esm/components/trees/{SpatialTree.d.ts → spatial-tree/SpatialTreeComponent.d.ts} +2 -2
  101. package/lib/esm/components/trees/{SpatialTree.js → spatial-tree/SpatialTreeComponent.js} +2 -2
  102. package/lib/esm/components/trees/spatial-tree/SpatialTreeComponent.js.map +1 -0
  103. package/lib/esm/tree-widget-react.js +3 -3
  104. package/lib/esm/tree-widget-react.js.map +1 -1
  105. package/lib/esm/types.d.ts +3 -1
  106. package/lib/esm/types.js.map +1 -1
  107. package/lib/public/locales/en/TreeWidget.json +38 -1
  108. package/package.json +54 -32
  109. package/lib/cjs/components/trees/CategoriesTree.js.map +0 -1
  110. package/lib/cjs/components/trees/ModelsTree.js.map +0 -1
  111. package/lib/cjs/components/trees/SpatialTree.js.map +0 -1
  112. package/lib/esm/components/trees/CategoriesTree.js.map +0 -1
  113. package/lib/esm/components/trees/ModelsTree.js.map +0 -1
  114. package/lib/esm/components/trees/SpatialTree.js.map +0 -1
@@ -26,10 +26,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.ModelsTreeComponent = void 0;
27
27
  const react_1 = __importStar(require("react"));
28
28
  const appui_react_1 = require("@itwin/appui-react");
29
- const TreeFilteringState_1 = require("../TreeFilteringState");
29
+ const TreeFilteringState_1 = require("../../TreeFilteringState");
30
30
  require("./ModelsTree.scss");
31
- const TreeHeader_1 = require("../header/TreeHeader");
32
- const AutoSizer_1 = require("../utils/AutoSizer");
31
+ const TreeHeader_1 = require("../../header/TreeHeader");
32
+ const AutoSizer_1 = require("../../utils/AutoSizer");
33
+ const ModelsTree_1 = require("./ModelsTree");
33
34
  const ModelsTreeComponent = (props) => {
34
35
  const [is2dToggleActive, setIs2dToggleActive] = react_1.useState(false);
35
36
  const [is3dToggleActive, setIs3dToggleActive] = react_1.useState(false);
@@ -121,7 +122,7 @@ const ModelsTreeComponent = (props) => {
121
122
  return (react_1.default.createElement(react_1.default.Fragment, null, iModel && viewport &&
122
123
  react_1.default.createElement(react_1.default.Fragment, null,
123
124
  react_1.default.createElement(TreeHeader_1.TreeHeaderComponent, { searchOptions: searchOptions, showAll: showAll, hideAll: hideAll, invert: invert, toggle2D: viewToggle2D, toggle2DIcon: icon2dToggle, toggle3D: viewToggle3D, toggle3DIcon: icon3dToggle }),
124
- react_1.default.createElement(AutoSizer_1.AutoSizer, null, ({ width, height }) => (react_1.default.createElement(appui_react_1.ModelsTree, { ...props, iModel: iModel, activeView: viewport, width: width, height: height, filterInfo: { filter: filterString, activeMatchIndex }, onFilterApplied: onFilterApplied }))))));
125
+ react_1.default.createElement(AutoSizer_1.AutoSizer, null, ({ width, height }) => (react_1.default.createElement(ModelsTree_1.ModelsTree, { ...props, iModel: iModel, activeView: viewport, width: width, height: height, filterInfo: { filter: filterString, activeMatchIndex }, onFilterApplied: onFilterApplied }))))));
125
126
  };
126
127
  exports.ModelsTreeComponent = ModelsTreeComponent;
127
- //# sourceMappingURL=ModelsTree.js.map
128
+ //# sourceMappingURL=ModelsTreeComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelsTreeComponent.js","sourceRoot":"","sources":["../../../../../src/components/trees/models-tree/ModelsTreeComponent.tsx"],"names":[],"mappings":"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","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*--------------------------------------------------------------------------------------------*/\n\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport type { Viewport } from \"@itwin/core-frontend\";\nimport { useActiveIModelConnection, useActiveViewport } from \"@itwin/appui-react\";\nimport { useTreeFilteringState } from \"../../TreeFilteringState\";\nimport \"./ModelsTree.scss\";\nimport type {\n GeometricModel3dProps,\n ModelQueryParams,\n} from \"@itwin/core-common\";\nimport { TreeHeaderComponent } from \"../../header/TreeHeader\";\nimport type { ModelTreeProps } from \"../../../types\";\nimport { AutoSizer } from \"../../utils/AutoSizer\";\nimport { ModelsTree } from \"./ModelsTree\";\n\ninterface TreeViewModelInfo {\n id: string;\n isPlanProjection?: boolean;\n}\n\nexport const ModelsTreeComponent = (props: ModelTreeProps) => {\n const [is2dToggleActive, setIs2dToggleActive] = useState<boolean>(false);\n const [is3dToggleActive, setIs3dToggleActive] = useState<boolean>(false);\n const [icon2dToggle, setIcon2dToggle] = useState<string>(\"icon-visibility\");\n const [icon3dToggle, setIcon3dToggle] = useState<string>(\"icon-visibility\");\n\n const [available2dModels, setAvailable2dModels] = useState<string[]>([]);\n const [available3dModels, setAvailable3dModels] = useState<string[]>([]);\n const [availableModels, setAvailableModels] = useState<string[]>([]);\n\n const iModel = useActiveIModelConnection();\n const viewport = useActiveViewport();\n\n const { searchOptions, filterString, activeMatchIndex, onFilterApplied } =\n useTreeFilteringState();\n\n const queryModels = useCallback(async (\n vp: Viewport | undefined\n ): Promise<TreeViewModelInfo[]> => {\n if (vp === undefined) return [];\n\n const queryParams: ModelQueryParams = {\n from: \"BisCore.GeometricModel3d\",\n wantPrivate: false,\n };\n const modelProps = await iModel?.models.queryProps(queryParams) ?? [];\n return modelProps\n .map(({ id, isPlanProjection }: GeometricModel3dProps) => ({ id, isPlanProjection }))\n .filter(({ id }) => id) as TreeViewModelInfo[];\n }, [iModel]);\n\n useEffect(() => {\n queryModels(viewport)\n .then((modelInfos: TreeViewModelInfo[]) => {\n setAvailableModels(modelInfos.map(({ id }) => id));\n\n const { models2d, models3d } = modelInfos.reduce((acc, { id, isPlanProjection }) => {\n isPlanProjection ? acc.models2d.push(id) : acc.models3d.push(id);\n return acc;\n }, { models2d: [] as string[], models3d: [] as string[] });\n\n setAvailable2dModels(models2d);\n setAvailable3dModels(models3d);\n })\n .catch((_e) => {\n setAvailableModels([]);\n });\n }, [queryModels, viewport]);\n\n const invert = useCallback(async () => {\n if (availableModels.length === 0) return;\n const notViewedModels: string[] = [];\n const models: string[] = [];\n availableModels.forEach((id: string) => {\n if (viewport?.viewsModel(id)) models.push(id);\n else notViewedModels.push(id);\n });\n await viewport?.addViewedModels(notViewedModels);\n viewport?.changeModelDisplay(models, false);\n viewport?.invalidateScene();\n }, [viewport, availableModels]);\n\n const hideAll = useCallback(() => {\n viewport?.changeModelDisplay(availableModels, false);\n viewport?.invalidateScene();\n }, [viewport, availableModels]);\n\n const showAll = useCallback(async () => {\n await viewport?.addViewedModels(availableModels);\n viewport?.invalidateScene();\n }, [viewport, availableModels]);\n\n const viewToggle2D = useCallback(async () => {\n if (is2dToggleActive) {\n viewport?.changeModelDisplay(available2dModels, false);\n setIs2dToggleActive(false);\n setIcon2dToggle(\"icon-visibility-hide-2\");\n } else {\n await viewport?.addViewedModels(available2dModels);\n setIs2dToggleActive(true);\n setIcon2dToggle(\"icon-visibility\");\n }\n viewport?.invalidateScene();\n }, [is2dToggleActive, viewport, available2dModels]);\n\n const viewToggle3D = useCallback(async () => {\n if (is3dToggleActive) {\n viewport?.changeModelDisplay(available3dModels, false);\n setIs3dToggleActive(false);\n setIcon3dToggle(\"icon-visibility-hide-2\");\n } else {\n await viewport?.addViewedModels(available3dModels);\n setIs3dToggleActive(true);\n setIcon3dToggle(\"icon-visibility\");\n }\n viewport?.invalidateScene();\n }, [is3dToggleActive, viewport, available3dModels]);\n\n return (\n <>\n {iModel && viewport &&\n <>\n <TreeHeaderComponent\n searchOptions={searchOptions}\n showAll={showAll}\n hideAll={hideAll}\n invert={invert}\n toggle2D={viewToggle2D}\n toggle2DIcon={icon2dToggle}\n toggle3D={viewToggle3D}\n toggle3DIcon={icon3dToggle}\n />\n <AutoSizer>\n {({ width, height }) => (\n <ModelsTree\n {...props}\n iModel={iModel}\n activeView={viewport}\n width={width}\n height={height}\n filterInfo={{ filter: filterString, activeMatchIndex }}\n onFilterApplied={onFilterApplied}\n />\n )}\n </AutoSizer>\n </>\n }\n </>\n );\n};\n"]}
@@ -0,0 +1,239 @@
1
+ {
2
+ "$schema": "../../../../node_modules/@itwin/presentation-common/Ruleset.schema.json",
3
+ "id": "tree-widget-react/ModelsTreeSearch",
4
+ "rules": [
5
+ {
6
+ "ruleType": "RootNodes",
7
+ "specifications": [
8
+ {
9
+ "specType": "InstanceNodesOfSpecificClasses",
10
+ "classes": [
11
+ {
12
+ "schemaName": "BisCore",
13
+ "classNames": [
14
+ "Subject"
15
+ ]
16
+ }
17
+ ],
18
+ "instanceFilter": "this.Parent = NULL",
19
+ "arePolymorphic": false,
20
+ "groupByClass": false,
21
+ "groupByLabel": false
22
+ }
23
+ ],
24
+ "customizationRules": [
25
+ {
26
+ "ruleType": "ExtendedData",
27
+ "items": {
28
+ "isSubject": "true"
29
+ }
30
+ }
31
+ ]
32
+ },
33
+ {
34
+ "ruleType": "ChildNodes",
35
+ "condition": "ParentNode.IsOfClass(\"Subject\", \"BisCore\")",
36
+ "specifications": [
37
+ {
38
+ "specType": "RelatedInstanceNodes",
39
+ "relationshipPaths": [
40
+ {
41
+ "relationship": {
42
+ "schemaName": "BisCore",
43
+ "className": "SubjectOwnsSubjects"
44
+ },
45
+ "direction": "Forward",
46
+ "targetClass": {
47
+ "schemaName": "BisCore",
48
+ "className": "Subject"
49
+ }
50
+ }
51
+ ],
52
+ "instanceFilter": "json_extract(this.JsonProperties, \"$.Subject.Job.Bridge\") <> NULL OR ifnull(json_extract(this.JsonProperties, \"$.Subject.Model.Type\"), \"\") = \"Hierarchy\"",
53
+ "hideNodesInHierarchy": true,
54
+ "groupByClass": false,
55
+ "groupByLabel": false
56
+ },
57
+ {
58
+ "specType": "RelatedInstanceNodes",
59
+ "relationshipPaths": [
60
+ {
61
+ "relationship": {
62
+ "schemaName": "BisCore",
63
+ "className": "SubjectOwnsSubjects"
64
+ },
65
+ "direction": "Forward",
66
+ "targetClass": {
67
+ "schemaName": "BisCore",
68
+ "className": "Subject"
69
+ }
70
+ }
71
+ ],
72
+ "instanceFilter": "json_extract(this.JsonProperties, \"$.Subject.Job.Bridge\") = NULL AND ifnull(json_extract(this.JsonProperties, \"$.Subject.Model.Type\"), \"\") <> \"Hierarchy\"",
73
+ "hideExpression": "NOT ThisNode.HasChildren ANDALSO NOT ThisNode.ChildrenArtifacts.AnyMatches(x => x.isContentModel)",
74
+ "groupByClass": false,
75
+ "groupByLabel": false
76
+ }
77
+ ],
78
+ "customizationRules": [
79
+ {
80
+ "ruleType": "ExtendedData",
81
+ "items": {
82
+ "isSubject": "true"
83
+ }
84
+ },
85
+ {
86
+ "ruleType": "Grouping",
87
+ "class": {
88
+ "schemaName": "BisCore",
89
+ "className": "Subject"
90
+ },
91
+ "groups": [
92
+ {
93
+ "specType": "SameLabelInstance",
94
+ "applicationStage": "PostProcess"
95
+ }
96
+ ]
97
+ }
98
+ ]
99
+ },
100
+ {
101
+ "ruleType": "ChildNodes",
102
+ "condition": "ParentNode.IsOfClass(\"Subject\", \"BisCore\")",
103
+ "specifications": [
104
+ {
105
+ "specType": "InstanceNodesOfSpecificClasses",
106
+ "classes": {
107
+ "schemaName": "BisCore",
108
+ "classNames": [
109
+ "GeometricModel3d"
110
+ ]
111
+ },
112
+ "arePolymorphic": true,
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 AND json_extract(partition.JsonProperties, \"$.GraphicalPartition3d.Model.Content\") = NULL AND this.HasRelatedInstance(\"BisCore:ModelContainsElements\", \"Forward\", \"BisCore:Element\")",
131
+ "groupByClass": false,
132
+ "groupByLabel": false
133
+ }
134
+ ],
135
+ "customizationRules": [
136
+ {
137
+ "ruleType": "ExtendedData",
138
+ "items": {
139
+ "isModel": "true"
140
+ }
141
+ }
142
+ ]
143
+ },
144
+ {
145
+ "ruleType": "ChildNodes",
146
+ "condition": "ParentNode.IsOfClass(\"Subject\", \"BisCore\")",
147
+ "specifications": [
148
+ {
149
+ "specType": "InstanceNodesOfSpecificClasses",
150
+ "classes": {
151
+ "schemaName": "BisCore",
152
+ "classNames": [
153
+ "GeometricModel3d"
154
+ ]
155
+ },
156
+ "arePolymorphic": true,
157
+ "relatedInstances": [
158
+ {
159
+ "relationshipPath": {
160
+ "relationship": {
161
+ "schemaName": "BisCore",
162
+ "className": "ModelModelsElement"
163
+ },
164
+ "direction": "Forward",
165
+ "targetClass": {
166
+ "schemaName": "BisCore",
167
+ "className": "InformationPartitionElement"
168
+ }
169
+ },
170
+ "alias": "partition",
171
+ "isRequired": true
172
+ }
173
+ ],
174
+ "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\", \"BisCore:Element\")",
175
+ "hideNodesInHierarchy": true,
176
+ "groupByClass": false,
177
+ "groupByLabel": false
178
+ }
179
+ ],
180
+ "customizationRules": [
181
+ {
182
+ "ruleType": "NodeArtifacts",
183
+ "items": {
184
+ "isContentModel": "true"
185
+ }
186
+ },
187
+ {
188
+ "ruleType": "ExtendedData",
189
+ "items": {
190
+ "isModel": "true"
191
+ }
192
+ }
193
+ ]
194
+ },
195
+ {
196
+ "ruleType": "ChildNodes",
197
+ "condition": "ParentNode.IsOfClass(\"GeometricModel3d\", \"BisCore\")",
198
+ "specifications": [
199
+ {
200
+ "specType": "RelatedInstanceNodes",
201
+ "relationshipPaths": [
202
+ {
203
+ "relationship": {
204
+ "schemaName": "BisCore",
205
+ "className": "ModelOwnsSubModel"
206
+ },
207
+ "direction": "Forward",
208
+ "targetClass": {
209
+ "schemaName": "BisCore",
210
+ "className": "GeometricModel3d"
211
+ }
212
+ }
213
+ ],
214
+ "instanceFilter": "NOT this.IsPrivate AND this.HasRelatedInstance(\"BisCore:ModelContainsElements\", \"Forward\", \"BisCore:Element\")",
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": "ImageIdOverride",
230
+ "condition": "ThisNode.IsOfClass(\"Subject\", \"BisCore\")",
231
+ "imageIdExpression": "IIF(this.Parent.Id = NULL, \"icon-imodel-hollow-2\", \"icon-folder\")"
232
+ },
233
+ {
234
+ "ruleType": "ImageIdOverride",
235
+ "condition": "ThisNode.IsOfClass(\"Model\", \"BisCore\")",
236
+ "imageIdExpression": "\"icon-model\""
237
+ }
238
+ ]
239
+ }
@@ -0,0 +1,100 @@
1
+ import type { TreeNodeItem } from "@itwin/components-react";
2
+ import type { Id64String } from "@itwin/core-bentley";
3
+ import { BeEvent } from "@itwin/core-bentley";
4
+ import { NodeKey } from "@itwin/presentation-common";
5
+ import type { IModelConnection, Viewport } from "@itwin/core-frontend";
6
+ import type { ECClassGroupingNodeKey } from "@itwin/presentation-common";
7
+ import type { IFilteredPresentationTreeDataProvider, IPresentationTreeDataProvider } from "@itwin/presentation-components";
8
+ import type { IVisibilityHandler, VisibilityChangeListener, VisibilityStatus } from "../VisibilityTreeEventHandler";
9
+ /**
10
+ * Visibility tree node types.
11
+ * @beta
12
+ */
13
+ export declare enum ModelsTreeNodeType {
14
+ Unknown = 0,
15
+ Subject = 1,
16
+ Model = 2,
17
+ Category = 3,
18
+ Element = 4,
19
+ Grouping = 5
20
+ }
21
+ /**
22
+ * Type definition of predicate used to decide if node can be selected
23
+ * @beta
24
+ */
25
+ export declare type ModelsTreeSelectionPredicate = (key: NodeKey, type: ModelsTreeNodeType) => boolean;
26
+ /**
27
+ * Props for [[ModelsVisibilityHandler]]
28
+ * @alpha
29
+ */
30
+ export interface ModelsVisibilityHandlerProps {
31
+ rulesetId: string;
32
+ viewport: Viewport;
33
+ hierarchyAutoUpdateEnabled?: boolean;
34
+ /** @internal */
35
+ subjectModelIdsCache?: SubjectModelIdsCache;
36
+ }
37
+ /**
38
+ * Visibility handler used by [[ModelsTree]] to control visibility of the tree items.
39
+ * @alpha
40
+ */
41
+ export declare class ModelsVisibilityHandler implements IVisibilityHandler {
42
+ private _props;
43
+ private _pendingVisibilityChange;
44
+ private _subjectModelIdsCache;
45
+ private _filteredDataProvider?;
46
+ private _elementIdsCache;
47
+ private _listeners;
48
+ constructor(props: ModelsVisibilityHandlerProps);
49
+ dispose(): void;
50
+ onVisibilityChange: BeEvent<VisibilityChangeListener>;
51
+ /** Sets data provider that is used to get filtered tree hierarchy. */
52
+ setFilteredDataProvider(provider: IFilteredPresentationTreeDataProvider | undefined): void;
53
+ static getNodeType(item: TreeNodeItem, dataProvider: IPresentationTreeDataProvider): ModelsTreeNodeType;
54
+ static isSubjectNode(node: TreeNodeItem): any;
55
+ static isModelNode(node: TreeNodeItem): any;
56
+ static isCategoryNode(node: TreeNodeItem): any;
57
+ /** Returns visibility status of the tree node. */
58
+ getVisibilityStatus(node: TreeNodeItem, nodeKey: NodeKey): VisibilityStatus | Promise<VisibilityStatus>;
59
+ /** Changes visibility of the items represented by the tree node. */
60
+ changeVisibility(node: TreeNodeItem, nodeKey: NodeKey, on: boolean): Promise<void>;
61
+ protected getSubjectNodeVisibility(ids: Id64String[], node: TreeNodeItem): Promise<VisibilityStatus>;
62
+ private getSubjectDisplayStatus;
63
+ private getFilteredSubjectDisplayStatus;
64
+ protected getModelDisplayStatus(id: Id64String): VisibilityStatus;
65
+ protected getCategoryDisplayStatus(id: Id64String, parentModelId: Id64String | undefined): VisibilityStatus;
66
+ protected getElementGroupingNodeDisplayStatus(_id: string, key: ECClassGroupingNodeKey): Promise<VisibilityStatus>;
67
+ protected getElementDisplayStatus(elementId: Id64String, modelId: Id64String | undefined, categoryId: Id64String | undefined): VisibilityStatus;
68
+ protected changeSubjectNodeState(ids: Id64String[], node: TreeNodeItem, on: boolean): Promise<void | void[]>;
69
+ private changeFilteredSubjectState;
70
+ private changeSubjectState;
71
+ protected changeModelState(id: Id64String, on: boolean): Promise<void>;
72
+ protected changeModelsVisibility(ids: Id64String[], visible: boolean): Promise<void>;
73
+ protected changeCategoryState(categoryId: Id64String, parentModelId: Id64String | undefined, on: boolean): void;
74
+ protected changeElementGroupingNodeState(key: ECClassGroupingNodeKey, on: boolean): Promise<void>;
75
+ protected changeElementState(id: Id64String, modelId: Id64String | undefined, categoryId: Id64String | undefined, on: boolean): Promise<void>;
76
+ protected changeElementsState(modelId: Id64String | undefined, categoryId: Id64String | undefined, elementIds: AsyncGenerator<Id64String>, on: boolean): Promise<void>;
77
+ private onVisibilityChangeInternal;
78
+ private onViewChanged;
79
+ private onElementAlwaysDrawnChanged;
80
+ private onElementNeverDrawnChanged;
81
+ private getCategoryParentModelId;
82
+ private getElementModelId;
83
+ private getElementCategoryId;
84
+ private getSubjectModelIds;
85
+ private getAssemblyElementIds;
86
+ private getGroupedElementIds;
87
+ }
88
+ /** @internal */
89
+ export declare class SubjectModelIdsCache {
90
+ private _imodel;
91
+ private _subjectsHierarchy;
92
+ private _subjectModels;
93
+ private _init;
94
+ constructor(imodel: IModelConnection);
95
+ private initSubjectModels;
96
+ private initCache;
97
+ private appendSubjectModelsRecursively;
98
+ getSubjectModelIds(subjectId: Id64String): Promise<Id64String[]>;
99
+ }
100
+ //# sourceMappingURL=ModelsVisibilityHandler.d.ts.map