@itwin/tree-widget-react 2.3.1 → 3.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.
- package/CHANGELOG.md +2 -2
- package/lib/cjs/TreeWidget.d.ts +2 -3
- package/lib/cjs/TreeWidget.js.map +1 -1
- package/lib/cjs/components/tree-header/TreeHeader.js +11 -3
- package/lib/cjs/components/tree-header/TreeHeader.js.map +1 -1
- package/lib/cjs/components/trees/CategoriesVisibilityUtils.d.ts +1 -1
- package/lib/cjs/components/trees/CategoriesVisibilityUtils.js.map +1 -1
- package/lib/cjs/components/trees/category-tree/CategoriesTree.d.ts +1 -1
- package/lib/cjs/components/trees/category-tree/CategoriesTree.js.map +1 -1
- package/lib/cjs/components/trees/category-tree/CategoriesTreeButtons.d.ts +28 -0
- package/lib/cjs/components/trees/category-tree/CategoriesTreeButtons.js +38 -0
- package/lib/cjs/components/trees/category-tree/CategoriesTreeButtons.js.map +1 -0
- package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.d.ts +2 -17
- package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js +7 -26
- package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -1
- package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.d.ts +1 -8
- package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -1
- package/lib/cjs/components/trees/index.d.ts +3 -0
- package/lib/cjs/components/trees/index.js +1 -0
- package/lib/cjs/components/trees/index.js.map +1 -1
- package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.d.ts +33 -0
- package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js +86 -0
- package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js.map +1 -0
- package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.d.ts +2 -24
- package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js +24 -76
- package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
- package/lib/cjs/components/trees/models-tree/Utils.d.ts +2 -2
- package/lib/cjs/components/trees/models-tree/Utils.js.map +1 -1
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTree.d.ts +20 -0
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTree.js +61 -0
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTree.js.map +1 -0
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTreeComponent.d.ts +16 -0
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTreeComponent.js +43 -0
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTreeComponent.js.map +1 -0
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTreeDefinition.d.ts +23 -0
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTreeDefinition.js +180 -0
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesTreeDefinition.js.map +1 -0
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesVisibilityHandler.d.ts +36 -0
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesVisibilityHandler.js +94 -0
- package/lib/cjs/components/trees/stateless/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/FocusedInstancesContext.d.ts +13 -0
- package/lib/cjs/components/trees/stateless/common/FocusedInstancesContext.js +16 -0
- package/lib/cjs/components/trees/stateless/common/FocusedInstancesContext.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/FocusedInstancesContextProvider.d.ts +8 -0
- package/lib/cjs/components/trees/stateless/common/FocusedInstancesContextProvider.js +47 -0
- package/lib/cjs/components/trees/stateless/common/FocusedInstancesContextProvider.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/UseHierarchiesLocalization.d.ts +8 -0
- package/lib/cjs/components/trees/stateless/common/UseHierarchiesLocalization.js +33 -0
- package/lib/cjs/components/trees/stateless/common/UseHierarchiesLocalization.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/UseHierarchyFiltering.d.ts +16 -0
- package/lib/cjs/components/trees/stateless/common/UseHierarchyFiltering.js +139 -0
- package/lib/cjs/components/trees/stateless/common/UseHierarchyFiltering.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/UseHierarchyVisibility.d.ts +21 -0
- package/lib/cjs/components/trees/stateless/common/UseHierarchyVisibility.js +82 -0
- package/lib/cjs/components/trees/stateless/common/UseHierarchyVisibility.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/UseMultiCheckboxHandler.d.ts +13 -0
- package/lib/cjs/components/trees/stateless/common/UseMultiCheckboxHandler.js +34 -0
- package/lib/cjs/components/trees/stateless/common/UseMultiCheckboxHandler.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/Utils.d.ts +3 -0
- package/lib/cjs/components/trees/stateless/common/Utils.js +23 -0
- package/lib/cjs/components/trees/stateless/common/Utils.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/components/Delayed.d.ts +6 -0
- package/lib/cjs/components/trees/stateless/common/components/Delayed.js +31 -0
- package/lib/cjs/components/trees/stateless/common/components/Delayed.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/components/FilterableTree.d.ts +23 -0
- package/lib/cjs/components/trees/stateless/common/components/FilterableTree.js +66 -0
- package/lib/cjs/components/trees/stateless/common/components/FilterableTree.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/components/ProgressOverlay.d.ts +5 -0
- package/lib/cjs/components/trees/stateless/common/components/ProgressOverlay.js +16 -0
- package/lib/cjs/components/trees/stateless/common/components/ProgressOverlay.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/components/ProgressOverlay.scss +21 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTree.d.ts +26 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTree.js +68 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTree.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeNodeCheckbox.d.ts +12 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeNodeCheckbox.js +24 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeNodeCheckbox.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeNodeRenderer.d.ts +10 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeNodeRenderer.js +20 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeNodeRenderer.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeRenderer.d.ts +16 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeRenderer.js +23 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeRenderer.js.map +1 -0
- package/lib/cjs/components/trees/stateless/common/components/VisibilityTreeRenderer.scss +41 -0
- package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTree.d.ts +13 -0
- package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTree.js +40 -0
- package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTree.js.map +1 -0
- package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.d.ts +14 -0
- package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.js +25 -0
- package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -0
- package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +20 -0
- package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTreeDefinition.js +244 -0
- package/lib/cjs/components/trees/stateless/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
- package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTree.d.ts +13 -0
- package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTree.js +48 -0
- package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTree.js.map +1 -0
- package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.d.ts +14 -0
- package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.js +25 -0
- package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.js.map +1 -0
- package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTreeDefinition.d.ts +25 -0
- package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTreeDefinition.js +639 -0
- package/lib/cjs/components/trees/stateless/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
- package/lib/cjs/components/trees/stateless/index.d.ts +5 -0
- package/lib/cjs/components/trees/stateless/index.js +16 -0
- package/lib/cjs/components/trees/stateless/index.js.map +1 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsTree.d.ts +16 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsTree.js +77 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsTree.js.map +1 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsTreeComponent.d.ts +17 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsTreeComponent.js +55 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsTreeComponent.js.map +1 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsTreeDefinition.d.ts +35 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsTreeDefinition.js +856 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsTreeDefinition.js.map +1 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsVisibilityHandler.d.ts +48 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsVisibilityHandler.js +470 -0
- package/lib/cjs/components/trees/stateless/models-tree/ModelsVisibilityHandler.js.map +1 -0
- package/lib/esm/TreeWidget.d.ts +2 -3
- package/lib/esm/TreeWidget.js.map +1 -1
- package/lib/esm/components/tree-header/TreeHeader.js +11 -3
- package/lib/esm/components/tree-header/TreeHeader.js.map +1 -1
- package/lib/esm/components/trees/CategoriesVisibilityUtils.d.ts +1 -1
- package/lib/esm/components/trees/CategoriesVisibilityUtils.js.map +1 -1
- package/lib/esm/components/trees/category-tree/CategoriesTree.d.ts +1 -1
- package/lib/esm/components/trees/category-tree/CategoriesTree.js.map +1 -1
- package/lib/esm/components/trees/category-tree/CategoriesTreeButtons.d.ts +28 -0
- package/lib/esm/components/trees/category-tree/CategoriesTreeButtons.js +32 -0
- package/lib/esm/components/trees/category-tree/CategoriesTreeButtons.js.map +1 -0
- package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.d.ts +2 -17
- package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js +2 -21
- package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js.map +1 -1
- package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.d.ts +1 -8
- package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js.map +1 -1
- package/lib/esm/components/trees/index.d.ts +3 -0
- package/lib/esm/components/trees/index.js +1 -0
- package/lib/esm/components/trees/index.js.map +1 -1
- package/lib/esm/components/trees/models-tree/ModelsTreeButtons.d.ts +33 -0
- package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js +77 -0
- package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js.map +1 -0
- package/lib/esm/components/trees/models-tree/ModelsTreeComponent.d.ts +2 -24
- package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js +20 -72
- package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
- package/lib/esm/components/trees/models-tree/Utils.d.ts +2 -2
- package/lib/esm/components/trees/models-tree/Utils.js.map +1 -1
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesTree.d.ts +20 -0
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesTree.js +57 -0
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesTree.js.map +1 -0
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesTreeComponent.d.ts +16 -0
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesTreeComponent.js +39 -0
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesTreeComponent.js.map +1 -0
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesTreeDefinition.d.ts +23 -0
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesTreeDefinition.js +176 -0
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesTreeDefinition.js.map +1 -0
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesVisibilityHandler.d.ts +36 -0
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesVisibilityHandler.js +90 -0
- package/lib/esm/components/trees/stateless/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/FocusedInstancesContext.d.ts +13 -0
- package/lib/esm/components/trees/stateless/common/FocusedInstancesContext.js +12 -0
- package/lib/esm/components/trees/stateless/common/FocusedInstancesContext.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/FocusedInstancesContextProvider.d.ts +8 -0
- package/lib/esm/components/trees/stateless/common/FocusedInstancesContextProvider.js +43 -0
- package/lib/esm/components/trees/stateless/common/FocusedInstancesContextProvider.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/UseHierarchiesLocalization.d.ts +8 -0
- package/lib/esm/components/trees/stateless/common/UseHierarchiesLocalization.js +29 -0
- package/lib/esm/components/trees/stateless/common/UseHierarchiesLocalization.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/UseHierarchyFiltering.d.ts +16 -0
- package/lib/esm/components/trees/stateless/common/UseHierarchyFiltering.js +135 -0
- package/lib/esm/components/trees/stateless/common/UseHierarchyFiltering.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/UseHierarchyVisibility.d.ts +21 -0
- package/lib/esm/components/trees/stateless/common/UseHierarchyVisibility.js +78 -0
- package/lib/esm/components/trees/stateless/common/UseHierarchyVisibility.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/UseMultiCheckboxHandler.d.ts +13 -0
- package/lib/esm/components/trees/stateless/common/UseMultiCheckboxHandler.js +30 -0
- package/lib/esm/components/trees/stateless/common/UseMultiCheckboxHandler.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/Utils.d.ts +3 -0
- package/lib/esm/components/trees/stateless/common/Utils.js +19 -0
- package/lib/esm/components/trees/stateless/common/Utils.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/components/Delayed.d.ts +6 -0
- package/lib/esm/components/trees/stateless/common/components/Delayed.js +27 -0
- package/lib/esm/components/trees/stateless/common/components/Delayed.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/components/FilterableTree.d.ts +23 -0
- package/lib/esm/components/trees/stateless/common/components/FilterableTree.js +62 -0
- package/lib/esm/components/trees/stateless/common/components/FilterableTree.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/components/ProgressOverlay.d.ts +5 -0
- package/lib/esm/components/trees/stateless/common/components/ProgressOverlay.js +12 -0
- package/lib/esm/components/trees/stateless/common/components/ProgressOverlay.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/components/ProgressOverlay.scss +21 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTree.d.ts +26 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTree.js +64 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTree.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTreeNodeCheckbox.d.ts +12 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTreeNodeCheckbox.js +20 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTreeNodeCheckbox.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTreeNodeRenderer.d.ts +10 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTreeNodeRenderer.js +13 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTreeNodeRenderer.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTreeRenderer.d.ts +16 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTreeRenderer.js +19 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTreeRenderer.js.map +1 -0
- package/lib/esm/components/trees/stateless/common/components/VisibilityTreeRenderer.scss +41 -0
- package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTree.d.ts +13 -0
- package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTree.js +36 -0
- package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTree.js.map +1 -0
- package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.d.ts +14 -0
- package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.js +21 -0
- package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -0
- package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +20 -0
- package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTreeDefinition.js +240 -0
- package/lib/esm/components/trees/stateless/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
- package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTree.d.ts +13 -0
- package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTree.js +44 -0
- package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTree.js.map +1 -0
- package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.d.ts +14 -0
- package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.js +21 -0
- package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTreeComponent.js.map +1 -0
- package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTreeDefinition.d.ts +25 -0
- package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTreeDefinition.js +635 -0
- package/lib/esm/components/trees/stateless/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
- package/lib/esm/components/trees/stateless/index.d.ts +5 -0
- package/lib/esm/components/trees/stateless/index.js +9 -0
- package/lib/esm/components/trees/stateless/index.js.map +1 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsTree.d.ts +16 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsTree.js +73 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsTree.js.map +1 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsTreeComponent.d.ts +17 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsTreeComponent.js +51 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsTreeComponent.js.map +1 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsTreeDefinition.d.ts +35 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsTreeDefinition.js +852 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsTreeDefinition.js.map +1 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsVisibilityHandler.d.ts +48 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsVisibilityHandler.js +466 -0
- package/lib/esm/components/trees/stateless/models-tree/ModelsVisibilityHandler.js.map +1 -0
- package/lib/public/locales/en/TreeWidget.json +21 -0
- package/package.json +7 -1
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.StatelessModelsVisibilityHandler = void 0;
|
|
8
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
9
|
+
const core_common_1 = require("@itwin/core-common");
|
|
10
|
+
const core_frontend_1 = require("@itwin/core-frontend");
|
|
11
|
+
const presentation_common_1 = require("@itwin/presentation-common");
|
|
12
|
+
const presentation_frontend_1 = require("@itwin/presentation-frontend");
|
|
13
|
+
const presentation_hierarchies_1 = require("@itwin/presentation-hierarchies");
|
|
14
|
+
const TreeWidget_1 = require("../../../../TreeWidget");
|
|
15
|
+
const Utils_1 = require("../../models-tree/Utils");
|
|
16
|
+
/** @internal */
|
|
17
|
+
class StatelessModelsVisibilityHandler {
|
|
18
|
+
constructor(props) {
|
|
19
|
+
this._listeners = new Array();
|
|
20
|
+
this.onVisibilityChange = new core_bentley_1.BeEvent();
|
|
21
|
+
this._viewport = props.viewport;
|
|
22
|
+
this._subjectModelIdsCache = new SubjectModelIdsCache(props.viewport.iModel);
|
|
23
|
+
this._elementIdsCache = new ElementIdsCache(props.viewport.iModel);
|
|
24
|
+
this._listeners.push(this._viewport.onViewedCategoriesPerModelChanged.addListener(() => this.onVisibilityChangeInternal()));
|
|
25
|
+
this._listeners.push(this._viewport.onViewedCategoriesChanged.addListener(() => this.onVisibilityChangeInternal()));
|
|
26
|
+
this._listeners.push(this._viewport.onViewedModelsChanged.addListener(() => this.onVisibilityChangeInternal()));
|
|
27
|
+
this._listeners.push(this._viewport.onAlwaysDrawnChanged.addListener(() => this.onVisibilityChangeInternal()));
|
|
28
|
+
this._listeners.push(this._viewport.onNeverDrawnChanged.addListener(() => this.onVisibilityChangeInternal()));
|
|
29
|
+
}
|
|
30
|
+
dispose() {
|
|
31
|
+
this._listeners.forEach((remove) => remove());
|
|
32
|
+
clearTimeout(this._pendingVisibilityChange);
|
|
33
|
+
}
|
|
34
|
+
/** Returns visibility status of the tree node. */
|
|
35
|
+
getVisibilityStatus(node) {
|
|
36
|
+
if (presentation_hierarchies_1.HierarchyNode.isClassGroupingNode(node)) {
|
|
37
|
+
return this.getElementGroupingNodeDisplayStatus(node);
|
|
38
|
+
}
|
|
39
|
+
if (!presentation_hierarchies_1.HierarchyNode.isInstancesNode(node)) {
|
|
40
|
+
return { state: "hidden", isDisabled: true };
|
|
41
|
+
}
|
|
42
|
+
if (isSubjectNode(node)) {
|
|
43
|
+
// note: subject nodes may be merged to represent multiple subject instances
|
|
44
|
+
return this.getSubjectNodeVisibility(node.key.instanceKeys.map((key) => key.id));
|
|
45
|
+
}
|
|
46
|
+
if (isModelNode(node)) {
|
|
47
|
+
return this.getModelDisplayStatus(node.key.instanceKeys[0].id);
|
|
48
|
+
}
|
|
49
|
+
if (isCategoryNode(node)) {
|
|
50
|
+
return this.getCategoryDisplayStatus(node.key.instanceKeys[0].id, this.getCategoryParentModelId(node));
|
|
51
|
+
}
|
|
52
|
+
return this.getElementDisplayStatus(node.key.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node));
|
|
53
|
+
}
|
|
54
|
+
/** Changes visibility of the items represented by the tree node. */
|
|
55
|
+
async changeVisibility(node, on) {
|
|
56
|
+
if (presentation_hierarchies_1.HierarchyNode.isClassGroupingNode(node)) {
|
|
57
|
+
await this.changeElementGroupingNodeState(node, on);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (!presentation_hierarchies_1.HierarchyNode.isInstancesNode(node)) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (isSubjectNode(node)) {
|
|
64
|
+
await this.changeSubjectNodeState(node.key.instanceKeys.map((key) => key.id), on);
|
|
65
|
+
}
|
|
66
|
+
else if (isModelNode(node)) {
|
|
67
|
+
await this.changeModelState(node.key.instanceKeys[0].id, on);
|
|
68
|
+
}
|
|
69
|
+
else if (isCategoryNode(node)) {
|
|
70
|
+
this.changeCategoryState(node.key.instanceKeys[0].id, this.getCategoryParentModelId(node), on);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
await this.changeElementState(node.key.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node), on, node.children);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async getSubjectNodeVisibility(ids) {
|
|
77
|
+
if (!this._viewport.view.isSpatialView()) {
|
|
78
|
+
return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "subject.nonSpatialView") };
|
|
79
|
+
}
|
|
80
|
+
return this.getSubjectDisplayStatus(ids);
|
|
81
|
+
}
|
|
82
|
+
async getSubjectDisplayStatus(ids) {
|
|
83
|
+
const modelIds = await this.getSubjectModelIds(ids);
|
|
84
|
+
const isDisplayed = modelIds.some((modelId) => this.getModelDisplayStatus(modelId).state === "visible");
|
|
85
|
+
if (isDisplayed) {
|
|
86
|
+
return { state: "visible", tooltip: createTooltip("visible", "subject.atLeastOneModelVisible") };
|
|
87
|
+
}
|
|
88
|
+
return { state: "hidden", tooltip: createTooltip("hidden", "subject.allModelsHidden") };
|
|
89
|
+
}
|
|
90
|
+
getModelDisplayStatus(id) {
|
|
91
|
+
if (!this._viewport.view.isSpatialView()) {
|
|
92
|
+
return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "model.nonSpatialView") };
|
|
93
|
+
}
|
|
94
|
+
const isDisplayed = this._viewport.view.viewsModel(id);
|
|
95
|
+
return { state: isDisplayed ? "visible" : "hidden", tooltip: createTooltip(isDisplayed ? "visible" : "hidden", undefined) };
|
|
96
|
+
}
|
|
97
|
+
getCategoryDisplayStatus(id, parentModelId) {
|
|
98
|
+
if (parentModelId) {
|
|
99
|
+
if (this.getModelDisplayStatus(parentModelId).state === "hidden") {
|
|
100
|
+
return { state: "hidden", isDisabled: true, tooltip: createTooltip("disabled", "category.modelNotDisplayed") };
|
|
101
|
+
}
|
|
102
|
+
const override = this._viewport.perModelCategoryVisibility.getOverride(parentModelId, id);
|
|
103
|
+
switch (override) {
|
|
104
|
+
case core_frontend_1.PerModelCategoryVisibility.Override.Show:
|
|
105
|
+
return { state: "visible", tooltip: createTooltip("visible", "category.displayedThroughPerModelOverride") };
|
|
106
|
+
case core_frontend_1.PerModelCategoryVisibility.Override.Hide:
|
|
107
|
+
return { state: "hidden", tooltip: createTooltip("hidden", "category.hiddenThroughPerModelOverride") };
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const isDisplayed = this._viewport.view.viewsCategory(id);
|
|
111
|
+
return {
|
|
112
|
+
state: isDisplayed ? "visible" : "hidden",
|
|
113
|
+
tooltip: isDisplayed
|
|
114
|
+
? createTooltip("visible", "category.displayedThroughCategorySelector")
|
|
115
|
+
: createTooltip("hidden", "category.hiddenThroughCategorySelector"),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
async getElementGroupingNodeDisplayStatus(node) {
|
|
119
|
+
const { modelId, categoryId, elementIds } = this.getGroupedElementIds(node);
|
|
120
|
+
if (!modelId || !this._viewport.view.viewsModel(modelId)) {
|
|
121
|
+
return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "element.modelNotDisplayed") };
|
|
122
|
+
}
|
|
123
|
+
if (this._viewport.alwaysDrawn !== undefined && this._viewport.alwaysDrawn.size > 0) {
|
|
124
|
+
let atLeastOneElementForceDisplayed = false;
|
|
125
|
+
for await (const elementId of elementIds()) {
|
|
126
|
+
if (this._viewport.alwaysDrawn.has(elementId)) {
|
|
127
|
+
atLeastOneElementForceDisplayed = true;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (atLeastOneElementForceDisplayed) {
|
|
132
|
+
return { state: "visible", tooltip: createTooltip("visible", "element.displayedThroughAlwaysDrawnList") };
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (this._viewport.alwaysDrawn !== undefined && this._viewport.alwaysDrawn.size !== 0 && this._viewport.isAlwaysDrawnExclusive) {
|
|
136
|
+
return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn") };
|
|
137
|
+
}
|
|
138
|
+
// istanbul ignore else
|
|
139
|
+
if (this._viewport.neverDrawn !== undefined && this._viewport.neverDrawn.size > 0) {
|
|
140
|
+
let allElementsForceHidden = true;
|
|
141
|
+
for await (const elementId of elementIds()) {
|
|
142
|
+
if (!this._viewport.neverDrawn.has(elementId)) {
|
|
143
|
+
allElementsForceHidden = false;
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (allElementsForceHidden) {
|
|
148
|
+
return { state: "hidden", tooltip: createTooltip("visible", "element.hiddenThroughNeverDrawnList") };
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === "visible") {
|
|
152
|
+
return { state: "visible", tooltip: createTooltip("visible", undefined) };
|
|
153
|
+
}
|
|
154
|
+
return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenThroughCategory") };
|
|
155
|
+
}
|
|
156
|
+
getElementDisplayStatus(elementId, modelId, categoryId) {
|
|
157
|
+
if (!modelId || !this._viewport.view.viewsModel(modelId)) {
|
|
158
|
+
return { isDisabled: true, state: "hidden", tooltip: createTooltip("disabled", "element.modelNotDisplayed") };
|
|
159
|
+
}
|
|
160
|
+
if (this._viewport.neverDrawn !== undefined && this._viewport.neverDrawn.has(elementId)) {
|
|
161
|
+
return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenThroughNeverDrawnList") };
|
|
162
|
+
}
|
|
163
|
+
if (this._viewport.alwaysDrawn !== undefined) {
|
|
164
|
+
if (this._viewport.alwaysDrawn.has(elementId)) {
|
|
165
|
+
return { state: "visible", tooltip: createTooltip("visible", "element.displayedThroughAlwaysDrawnList") };
|
|
166
|
+
}
|
|
167
|
+
if (this._viewport.alwaysDrawn.size !== 0 && this._viewport.isAlwaysDrawnExclusive) {
|
|
168
|
+
return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn") };
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === "visible") {
|
|
172
|
+
return { state: "visible", tooltip: createTooltip("visible", undefined) };
|
|
173
|
+
}
|
|
174
|
+
return { state: "hidden", tooltip: createTooltip("hidden", "element.hiddenThroughCategory") };
|
|
175
|
+
}
|
|
176
|
+
async changeSubjectNodeState(ids, on) {
|
|
177
|
+
if (!this._viewport.view.isSpatialView()) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
return this.changeSubjectState(ids, on);
|
|
181
|
+
}
|
|
182
|
+
async changeSubjectState(ids, on) {
|
|
183
|
+
const modelIds = await this.getSubjectModelIds(ids);
|
|
184
|
+
return this.changeModelsVisibility(modelIds, on);
|
|
185
|
+
}
|
|
186
|
+
async changeModelState(id, on) {
|
|
187
|
+
if (!this._viewport.view.isSpatialView()) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
return this.changeModelsVisibility([id], on);
|
|
191
|
+
}
|
|
192
|
+
async changeModelsVisibility(ids, visible) {
|
|
193
|
+
if (visible) {
|
|
194
|
+
return this._viewport.addViewedModels(ids);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
this._viewport.changeModelDisplay(ids, false);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
changeCategoryState(categoryId, parentModelId, on) {
|
|
201
|
+
if (parentModelId) {
|
|
202
|
+
const isDisplayedInSelector = this._viewport.view.viewsCategory(categoryId);
|
|
203
|
+
const ovr = on === isDisplayedInSelector
|
|
204
|
+
? core_frontend_1.PerModelCategoryVisibility.Override.None
|
|
205
|
+
: on
|
|
206
|
+
? core_frontend_1.PerModelCategoryVisibility.Override.Show
|
|
207
|
+
: core_frontend_1.PerModelCategoryVisibility.Override.Hide;
|
|
208
|
+
this._viewport.perModelCategoryVisibility.setOverride(parentModelId, categoryId, ovr);
|
|
209
|
+
if (ovr === core_frontend_1.PerModelCategoryVisibility.Override.None && on) {
|
|
210
|
+
// we took off the override which means the category is displayed in selector, but
|
|
211
|
+
// doesn't mean all its subcategories are displayed - this call ensures that
|
|
212
|
+
this._viewport.changeCategoryDisplay([categoryId], true, true);
|
|
213
|
+
}
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
this._viewport.changeCategoryDisplay([categoryId], on, on ? true : false);
|
|
217
|
+
}
|
|
218
|
+
async changeElementGroupingNodeState(node, on) {
|
|
219
|
+
const { modelId, categoryId, elementIds } = this.getGroupedElementIds(node);
|
|
220
|
+
await this.changeElementsState(modelId, categoryId, elementIds(), on);
|
|
221
|
+
}
|
|
222
|
+
async changeElementState(id, modelId, categoryId, on, hasChildren) {
|
|
223
|
+
const isDisplayedByDefault = this.isElementDisplayedByDefault(modelId, categoryId);
|
|
224
|
+
const isHiddenDueToExclusiveAlwaysDrawnElements = this.hasExclusiveAlwaysDrawnElements();
|
|
225
|
+
this.changeElementStateInternal(id, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);
|
|
226
|
+
if (!hasChildren) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const childElements = this.getAssemblyElementIds(id);
|
|
230
|
+
for await (const elementId of childElements.getElementIds()) {
|
|
231
|
+
this.changeElementStateInternal(elementId, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
async changeElementsState(modelId, categoryId, elementIds, on) {
|
|
235
|
+
const isDisplayedByDefault = this.isElementDisplayedByDefault(modelId, categoryId);
|
|
236
|
+
const isHiddenDueToExclusiveAlwaysDrawnElements = this.hasExclusiveAlwaysDrawnElements();
|
|
237
|
+
for await (const elementId of elementIds) {
|
|
238
|
+
this.changeElementStateInternal(elementId, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
changeElementStateInternal(elementId, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements) {
|
|
242
|
+
let changedNeverDraw = false;
|
|
243
|
+
let changedAlwaysDrawn = false;
|
|
244
|
+
const currNeverDrawn = new Set(this._viewport.neverDrawn ? this._viewport.neverDrawn : []);
|
|
245
|
+
const currAlwaysDrawn = new Set(this._viewport.alwaysDrawn ? this._viewport.alwaysDrawn : /* istanbul ignore next */ []);
|
|
246
|
+
if (on) {
|
|
247
|
+
changedNeverDraw = changedNeverDraw || currNeverDrawn.delete(elementId);
|
|
248
|
+
if ((!isDisplayedByDefault || isHiddenDueToExclusiveAlwaysDrawnElements) && !currAlwaysDrawn.has(elementId)) {
|
|
249
|
+
currAlwaysDrawn.add(elementId);
|
|
250
|
+
changedAlwaysDrawn = true;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
changedAlwaysDrawn = changedAlwaysDrawn || currAlwaysDrawn.delete(elementId);
|
|
255
|
+
if (isDisplayedByDefault && !isHiddenDueToExclusiveAlwaysDrawnElements && !currNeverDrawn.has(elementId)) {
|
|
256
|
+
currNeverDrawn.add(elementId);
|
|
257
|
+
changedNeverDraw = true;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
changedNeverDraw && this._viewport.setNeverDrawn(currNeverDrawn);
|
|
261
|
+
changedAlwaysDrawn && this._viewport.setAlwaysDrawn(currAlwaysDrawn, this._viewport.isAlwaysDrawnExclusive);
|
|
262
|
+
}
|
|
263
|
+
isElementDisplayedByDefault(modelId, categoryId) {
|
|
264
|
+
return (!!modelId &&
|
|
265
|
+
this.getModelDisplayStatus(modelId).state === "visible" &&
|
|
266
|
+
!!categoryId &&
|
|
267
|
+
this.getCategoryDisplayStatus(categoryId, modelId).state === "visible");
|
|
268
|
+
}
|
|
269
|
+
hasExclusiveAlwaysDrawnElements() {
|
|
270
|
+
return this._viewport.isAlwaysDrawnExclusive && 0 !== this._viewport.alwaysDrawn?.size;
|
|
271
|
+
}
|
|
272
|
+
onVisibilityChangeInternal() {
|
|
273
|
+
if (this._pendingVisibilityChange) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
this._pendingVisibilityChange = setTimeout(() => {
|
|
277
|
+
this.onVisibilityChange.raiseEvent();
|
|
278
|
+
this._pendingVisibilityChange = undefined;
|
|
279
|
+
}, 0);
|
|
280
|
+
}
|
|
281
|
+
getCategoryParentModelId(categoryNode) {
|
|
282
|
+
return categoryNode.extendedData && categoryNode.extendedData.modelIds[0] ? categoryNode.extendedData.modelIds[0][0] : /* istanbul ignore next */ undefined;
|
|
283
|
+
}
|
|
284
|
+
getElementModelId(elementNode) {
|
|
285
|
+
return elementNode.extendedData ? elementNode.extendedData.modelId : /* istanbul ignore next */ undefined;
|
|
286
|
+
}
|
|
287
|
+
getElementCategoryId(elementNode) {
|
|
288
|
+
return elementNode.extendedData ? elementNode.extendedData.categoryId : /* istanbul ignore next */ undefined;
|
|
289
|
+
}
|
|
290
|
+
async getSubjectModelIds(subjectIds) {
|
|
291
|
+
return (await Promise.all(subjectIds.map(async (id) => this._subjectModelIdsCache.getSubjectModelIds(id)))).reduce((allModelIds, curr) => [...allModelIds, ...curr], []);
|
|
292
|
+
}
|
|
293
|
+
getAssemblyElementIds(assemblyId) {
|
|
294
|
+
return this._elementIdsCache.getAssemblyElementIds(assemblyId);
|
|
295
|
+
}
|
|
296
|
+
// istanbul ignore next
|
|
297
|
+
getGroupedElementIds(node) {
|
|
298
|
+
const modelId = this.getElementModelId(node);
|
|
299
|
+
const categoryId = this.getElementCategoryId(node);
|
|
300
|
+
const getAssemblyElementIds = (id) => this.getAssemblyElementIds(id);
|
|
301
|
+
return {
|
|
302
|
+
modelId,
|
|
303
|
+
categoryId,
|
|
304
|
+
async *elementIds() {
|
|
305
|
+
for (const key of node.groupedInstanceKeys) {
|
|
306
|
+
yield key.id;
|
|
307
|
+
const assemblyElements = getAssemblyElementIds(key.id);
|
|
308
|
+
for await (const elementId of assemblyElements.getElementIds()) {
|
|
309
|
+
yield elementId;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
exports.StatelessModelsVisibilityHandler = StatelessModelsVisibilityHandler;
|
|
317
|
+
class SubjectModelIdsCache {
|
|
318
|
+
constructor(imodel) {
|
|
319
|
+
this._imodel = imodel;
|
|
320
|
+
}
|
|
321
|
+
async initSubjectModels() {
|
|
322
|
+
const querySubjects = async () => {
|
|
323
|
+
const subjectsQuery = `
|
|
324
|
+
SELECT ECInstanceId id, Parent.Id parentId, json_extract(JsonProperties, '$.Subject.Model.TargetPartition') targetPartitionId
|
|
325
|
+
FROM bis.Subject
|
|
326
|
+
`;
|
|
327
|
+
return this._imodel.createQueryReader(subjectsQuery, undefined, { rowFormat: core_common_1.QueryRowFormat.UseJsPropertyNames }).toArray();
|
|
328
|
+
};
|
|
329
|
+
const queryModels = async () => {
|
|
330
|
+
const modelsQuery = `
|
|
331
|
+
SELECT p.ECInstanceId id, p.Parent.Id parentId
|
|
332
|
+
FROM bis.InformationPartitionElement p
|
|
333
|
+
INNER JOIN bis.GeometricModel3d m ON m.ModeledElement.Id = p.ECInstanceId
|
|
334
|
+
WHERE NOT m.IsPrivate
|
|
335
|
+
`;
|
|
336
|
+
return this._imodel.createQueryReader(modelsQuery, undefined, { rowFormat: core_common_1.QueryRowFormat.UseJsPropertyNames }).toArray();
|
|
337
|
+
};
|
|
338
|
+
function pushToMap(map, key, value) {
|
|
339
|
+
let list = map.get(key);
|
|
340
|
+
if (!list) {
|
|
341
|
+
list = [];
|
|
342
|
+
map.set(key, list);
|
|
343
|
+
}
|
|
344
|
+
list.push(value);
|
|
345
|
+
}
|
|
346
|
+
this._subjectsHierarchy = new Map();
|
|
347
|
+
const targetPartitionSubjects = new Map();
|
|
348
|
+
for (const subject of await querySubjects()) {
|
|
349
|
+
// istanbul ignore else
|
|
350
|
+
if (subject.parentId) {
|
|
351
|
+
pushToMap(this._subjectsHierarchy, subject.parentId, subject.id);
|
|
352
|
+
}
|
|
353
|
+
// istanbul ignore if
|
|
354
|
+
if (subject.targetPartitionId) {
|
|
355
|
+
pushToMap(targetPartitionSubjects, subject.targetPartitionId, subject.id);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
this._subjectModels = new Map();
|
|
359
|
+
for (const model of await queryModels()) {
|
|
360
|
+
// istanbul ignore next
|
|
361
|
+
const subjectIds = targetPartitionSubjects.get(model.id) ?? [];
|
|
362
|
+
// istanbul ignore else
|
|
363
|
+
if (!subjectIds.includes(model.parentId)) {
|
|
364
|
+
subjectIds.push(model.parentId);
|
|
365
|
+
}
|
|
366
|
+
subjectIds.forEach((subjectId) => {
|
|
367
|
+
pushToMap(this._subjectModels, subjectId, model.id);
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
async initCache() {
|
|
372
|
+
if (!this._init) {
|
|
373
|
+
this._init = this.initSubjectModels().then(() => { });
|
|
374
|
+
}
|
|
375
|
+
return this._init;
|
|
376
|
+
}
|
|
377
|
+
appendSubjectModelsRecursively(modelIds, subjectId) {
|
|
378
|
+
const subjectModelIds = this._subjectModels.get(subjectId);
|
|
379
|
+
if (subjectModelIds) {
|
|
380
|
+
modelIds.push(...subjectModelIds);
|
|
381
|
+
}
|
|
382
|
+
const childSubjectIds = this._subjectsHierarchy.get(subjectId);
|
|
383
|
+
if (childSubjectIds) {
|
|
384
|
+
childSubjectIds.forEach((cs) => this.appendSubjectModelsRecursively(modelIds, cs));
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
async getSubjectModelIds(subjectId) {
|
|
388
|
+
await this.initCache();
|
|
389
|
+
const modelIds = new Array();
|
|
390
|
+
this.appendSubjectModelsRecursively(modelIds, subjectId);
|
|
391
|
+
return modelIds;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
// istanbul ignore next
|
|
395
|
+
class ElementIdsCache {
|
|
396
|
+
constructor(_imodel) {
|
|
397
|
+
this._imodel = _imodel;
|
|
398
|
+
this._assemblyElementIdsCache = new Map();
|
|
399
|
+
}
|
|
400
|
+
clear() {
|
|
401
|
+
this._assemblyElementIdsCache.clear();
|
|
402
|
+
}
|
|
403
|
+
getAssemblyElementIds(assemblyId) {
|
|
404
|
+
const ids = this._assemblyElementIdsCache.get(assemblyId);
|
|
405
|
+
if (ids) {
|
|
406
|
+
return ids;
|
|
407
|
+
}
|
|
408
|
+
const container = createAssemblyElementIdsContainer(this._imodel, assemblyId);
|
|
409
|
+
this._assemblyElementIdsCache.set(assemblyId, container);
|
|
410
|
+
return container;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
// istanbul ignore next
|
|
414
|
+
async function* createInstanceIdsGenerator(imodel, displayType, inputKeys) {
|
|
415
|
+
const res = await presentation_frontend_1.Presentation.presentation.getContentInstanceKeys({
|
|
416
|
+
imodel,
|
|
417
|
+
rulesetOrId: {
|
|
418
|
+
id: "AssemblyElements",
|
|
419
|
+
rules: [
|
|
420
|
+
{
|
|
421
|
+
ruleType: "Content",
|
|
422
|
+
specifications: [
|
|
423
|
+
{
|
|
424
|
+
specType: "ContentRelatedInstances",
|
|
425
|
+
relationshipPaths: [
|
|
426
|
+
{
|
|
427
|
+
direction: "Forward",
|
|
428
|
+
relationship: {
|
|
429
|
+
schemaName: "BisCore",
|
|
430
|
+
className: "ElementOwnsChildElements",
|
|
431
|
+
},
|
|
432
|
+
count: "*",
|
|
433
|
+
},
|
|
434
|
+
],
|
|
435
|
+
},
|
|
436
|
+
],
|
|
437
|
+
},
|
|
438
|
+
],
|
|
439
|
+
},
|
|
440
|
+
displayType,
|
|
441
|
+
keys: new presentation_common_1.KeySet(inputKeys),
|
|
442
|
+
});
|
|
443
|
+
for await (const key of res.items()) {
|
|
444
|
+
yield key.id;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
// istanbul ignore next
|
|
448
|
+
function createAssemblyElementIdsContainer(imodel, assemblyId) {
|
|
449
|
+
return new Utils_1.CachingElementIdsContainer(createInstanceIdsGenerator(imodel, "AssemblyElementsRequest", [{ className: "BisCore:Element", id: assemblyId }]));
|
|
450
|
+
}
|
|
451
|
+
const createTooltip = (status, tooltipStringId) => {
|
|
452
|
+
const statusStringId = `modelTree.status.${status}`;
|
|
453
|
+
const statusString = TreeWidget_1.TreeWidget.translate(statusStringId);
|
|
454
|
+
if (!tooltipStringId) {
|
|
455
|
+
return statusString;
|
|
456
|
+
}
|
|
457
|
+
tooltipStringId = `modelTree.tooltips.${tooltipStringId}`;
|
|
458
|
+
const tooltipString = TreeWidget_1.TreeWidget.translate(tooltipStringId);
|
|
459
|
+
return `${statusString}: ${tooltipString}`;
|
|
460
|
+
};
|
|
461
|
+
function isSubjectNode(node) {
|
|
462
|
+
return node.extendedData && node.extendedData.isSubject;
|
|
463
|
+
}
|
|
464
|
+
function isModelNode(node) {
|
|
465
|
+
return node.extendedData && node.extendedData.isModel;
|
|
466
|
+
}
|
|
467
|
+
function isCategoryNode(node) {
|
|
468
|
+
return node.extendedData && node.extendedData.isCategory;
|
|
469
|
+
}
|
|
470
|
+
//# sourceMappingURL=ModelsVisibilityHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelsVisibilityHandler.js","sourceRoot":"","sources":["../../../../../../src/components/trees/stateless/models-tree/ModelsVisibilityHandler.ts"],"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 { BeEvent } from \"@itwin/core-bentley\";\nimport { QueryRowFormat } from \"@itwin/core-common\";\nimport { PerModelCategoryVisibility } from \"@itwin/core-frontend\";\nimport { KeySet } from \"@itwin/presentation-common\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { HierarchyNode } from \"@itwin/presentation-hierarchies\";\nimport { TreeWidget } from \"../../../../TreeWidget\";\nimport { CachingElementIdsContainer } from \"../../models-tree/Utils\";\n\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport type { IModelConnection, Viewport } from \"@itwin/core-frontend\";\nimport type { Keys } from \"@itwin/presentation-common\";\nimport type { GroupingHierarchyNode, GroupingNodeKey } from \"@itwin/presentation-hierarchies\";\nimport type { VisibilityChangeListener, VisibilityStatus } from \"../../VisibilityTreeEventHandler\";\n\ninterface StatelessModelsVisibilityHandlerProps {\n viewport: Viewport;\n}\n\n/** @internal */\nexport class StatelessModelsVisibilityHandler {\n private _viewport: Viewport;\n private _pendingVisibilityChange: any | undefined;\n private _subjectModelIdsCache: SubjectModelIdsCache;\n private _elementIdsCache: ElementIdsCache;\n private _listeners = new Array<() => void>();\n\n constructor(props: StatelessModelsVisibilityHandlerProps) {\n this._viewport = props.viewport;\n this._subjectModelIdsCache = new SubjectModelIdsCache(props.viewport.iModel);\n this._elementIdsCache = new ElementIdsCache(props.viewport.iModel);\n this._listeners.push(this._viewport.onViewedCategoriesPerModelChanged.addListener(() => this.onVisibilityChangeInternal()));\n this._listeners.push(this._viewport.onViewedCategoriesChanged.addListener(() => this.onVisibilityChangeInternal()));\n this._listeners.push(this._viewport.onViewedModelsChanged.addListener(() => this.onVisibilityChangeInternal()));\n this._listeners.push(this._viewport.onAlwaysDrawnChanged.addListener(() => this.onVisibilityChangeInternal()));\n this._listeners.push(this._viewport.onNeverDrawnChanged.addListener(() => this.onVisibilityChangeInternal()));\n }\n\n public dispose() {\n this._listeners.forEach((remove) => remove());\n clearTimeout(this._pendingVisibilityChange);\n }\n\n public onVisibilityChange = new BeEvent<VisibilityChangeListener>();\n\n /** Returns visibility status of the tree node. */\n public getVisibilityStatus(node: HierarchyNode): Promise<VisibilityStatus> | VisibilityStatus {\n if (HierarchyNode.isClassGroupingNode(node)) {\n return this.getElementGroupingNodeDisplayStatus(node);\n }\n\n if (!HierarchyNode.isInstancesNode(node)) {\n return { state: \"hidden\", isDisabled: true };\n }\n\n if (isSubjectNode(node)) {\n // note: subject nodes may be merged to represent multiple subject instances\n return this.getSubjectNodeVisibility(node.key.instanceKeys.map((key) => key.id));\n }\n if (isModelNode(node)) {\n return this.getModelDisplayStatus(node.key.instanceKeys[0].id);\n }\n if (isCategoryNode(node)) {\n return this.getCategoryDisplayStatus(node.key.instanceKeys[0].id, this.getCategoryParentModelId(node));\n }\n return this.getElementDisplayStatus(node.key.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node));\n }\n\n /** Changes visibility of the items represented by the tree node. */\n public async changeVisibility(node: HierarchyNode, on: boolean) {\n if (HierarchyNode.isClassGroupingNode(node)) {\n await this.changeElementGroupingNodeState(node, on);\n return;\n }\n\n if (!HierarchyNode.isInstancesNode(node)) {\n return;\n }\n\n if (isSubjectNode(node)) {\n await this.changeSubjectNodeState(\n node.key.instanceKeys.map((key) => key.id),\n on,\n );\n } else if (isModelNode(node)) {\n await this.changeModelState(node.key.instanceKeys[0].id, on);\n } else if (isCategoryNode(node)) {\n this.changeCategoryState(node.key.instanceKeys[0].id, this.getCategoryParentModelId(node), on);\n } else {\n await this.changeElementState(node.key.instanceKeys[0].id, this.getElementModelId(node), this.getElementCategoryId(node), on, node.children);\n }\n }\n\n private async getSubjectNodeVisibility(ids: Id64String[]): Promise<VisibilityStatus> {\n if (!this._viewport.view.isSpatialView()) {\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"subject.nonSpatialView\") };\n }\n\n return this.getSubjectDisplayStatus(ids);\n }\n\n private async getSubjectDisplayStatus(ids: Id64String[]): Promise<VisibilityStatus> {\n const modelIds = await this.getSubjectModelIds(ids);\n const isDisplayed = modelIds.some((modelId) => this.getModelDisplayStatus(modelId).state === \"visible\");\n if (isDisplayed) {\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"subject.atLeastOneModelVisible\") };\n }\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"subject.allModelsHidden\") };\n }\n\n private getModelDisplayStatus(id: Id64String): VisibilityStatus {\n if (!this._viewport.view.isSpatialView()) {\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"model.nonSpatialView\") };\n }\n const isDisplayed = this._viewport.view.viewsModel(id);\n return { state: isDisplayed ? \"visible\" : \"hidden\", tooltip: createTooltip(isDisplayed ? \"visible\" : \"hidden\", undefined) };\n }\n\n private getCategoryDisplayStatus(id: Id64String, parentModelId: Id64String | undefined): VisibilityStatus {\n if (parentModelId) {\n if (this.getModelDisplayStatus(parentModelId).state === \"hidden\") {\n return { state: \"hidden\", isDisabled: true, tooltip: createTooltip(\"disabled\", \"category.modelNotDisplayed\") };\n }\n\n const override = this._viewport.perModelCategoryVisibility.getOverride(parentModelId, id);\n switch (override) {\n case PerModelCategoryVisibility.Override.Show:\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"category.displayedThroughPerModelOverride\") };\n case PerModelCategoryVisibility.Override.Hide:\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"category.hiddenThroughPerModelOverride\") };\n }\n }\n const isDisplayed = this._viewport.view.viewsCategory(id);\n return {\n state: isDisplayed ? \"visible\" : \"hidden\",\n tooltip: isDisplayed\n ? createTooltip(\"visible\", \"category.displayedThroughCategorySelector\")\n : createTooltip(\"hidden\", \"category.hiddenThroughCategorySelector\"),\n };\n }\n\n private async getElementGroupingNodeDisplayStatus(node: GroupingHierarchyNode & { key: GroupingNodeKey }): Promise<VisibilityStatus> {\n const { modelId, categoryId, elementIds } = this.getGroupedElementIds(node);\n\n if (!modelId || !this._viewport.view.viewsModel(modelId)) {\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"element.modelNotDisplayed\") };\n }\n\n if (this._viewport.alwaysDrawn !== undefined && this._viewport.alwaysDrawn.size > 0) {\n let atLeastOneElementForceDisplayed = false;\n for await (const elementId of elementIds()) {\n if (this._viewport.alwaysDrawn.has(elementId)) {\n atLeastOneElementForceDisplayed = true;\n break;\n }\n }\n if (atLeastOneElementForceDisplayed) {\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"element.displayedThroughAlwaysDrawnList\") };\n }\n }\n\n if (this._viewport.alwaysDrawn !== undefined && this._viewport.alwaysDrawn.size !== 0 && this._viewport.isAlwaysDrawnExclusive) {\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn\") };\n }\n\n // istanbul ignore else\n if (this._viewport.neverDrawn !== undefined && this._viewport.neverDrawn.size > 0) {\n let allElementsForceHidden = true;\n for await (const elementId of elementIds()) {\n if (!this._viewport.neverDrawn.has(elementId)) {\n allElementsForceHidden = false;\n break;\n }\n }\n if (allElementsForceHidden) {\n return { state: \"hidden\", tooltip: createTooltip(\"visible\", \"element.hiddenThroughNeverDrawnList\") };\n }\n }\n\n if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\") {\n return { state: \"visible\", tooltip: createTooltip(\"visible\", undefined) };\n }\n\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughCategory\") };\n }\n\n private getElementDisplayStatus(elementId: Id64String, modelId: Id64String | undefined, categoryId: Id64String | undefined): VisibilityStatus {\n if (!modelId || !this._viewport.view.viewsModel(modelId)) {\n return { isDisabled: true, state: \"hidden\", tooltip: createTooltip(\"disabled\", \"element.modelNotDisplayed\") };\n }\n if (this._viewport.neverDrawn !== undefined && this._viewport.neverDrawn.has(elementId)) {\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughNeverDrawnList\") };\n }\n if (this._viewport.alwaysDrawn !== undefined) {\n if (this._viewport.alwaysDrawn.has(elementId)) {\n return { state: \"visible\", tooltip: createTooltip(\"visible\", \"element.displayedThroughAlwaysDrawnList\") };\n }\n if (this._viewport.alwaysDrawn.size !== 0 && this._viewport.isAlwaysDrawnExclusive) {\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn\") };\n }\n }\n if (categoryId && this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\") {\n return { state: \"visible\", tooltip: createTooltip(\"visible\", undefined) };\n }\n return { state: \"hidden\", tooltip: createTooltip(\"hidden\", \"element.hiddenThroughCategory\") };\n }\n\n private async changeSubjectNodeState(ids: Id64String[], on: boolean) {\n if (!this._viewport.view.isSpatialView()) {\n return;\n }\n\n return this.changeSubjectState(ids, on);\n }\n\n private async changeSubjectState(ids: Id64String[], on: boolean) {\n const modelIds = await this.getSubjectModelIds(ids);\n return this.changeModelsVisibility(modelIds, on);\n }\n\n private async changeModelState(id: Id64String, on: boolean) {\n if (!this._viewport.view.isSpatialView()) {\n return;\n }\n\n return this.changeModelsVisibility([id], on);\n }\n\n private async changeModelsVisibility(ids: Id64String[], visible: boolean) {\n if (visible) {\n return this._viewport.addViewedModels(ids);\n } else {\n this._viewport.changeModelDisplay(ids, false);\n }\n }\n\n private changeCategoryState(categoryId: Id64String, parentModelId: Id64String | undefined, on: boolean) {\n if (parentModelId) {\n const isDisplayedInSelector = this._viewport.view.viewsCategory(categoryId);\n const ovr =\n on === isDisplayedInSelector\n ? PerModelCategoryVisibility.Override.None\n : on\n ? PerModelCategoryVisibility.Override.Show\n : PerModelCategoryVisibility.Override.Hide;\n this._viewport.perModelCategoryVisibility.setOverride(parentModelId, categoryId, ovr);\n if (ovr === PerModelCategoryVisibility.Override.None && on) {\n // we took off the override which means the category is displayed in selector, but\n // doesn't mean all its subcategories are displayed - this call ensures that\n this._viewport.changeCategoryDisplay([categoryId], true, true);\n }\n return;\n }\n this._viewport.changeCategoryDisplay([categoryId], on, on ? true : false);\n }\n\n private async changeElementGroupingNodeState(node: GroupingHierarchyNode & { key: GroupingNodeKey }, on: boolean) {\n const { modelId, categoryId, elementIds } = this.getGroupedElementIds(node);\n await this.changeElementsState(modelId, categoryId, elementIds(), on);\n }\n\n private async changeElementState(id: Id64String, modelId: Id64String | undefined, categoryId: Id64String | undefined, on: boolean, hasChildren: boolean) {\n const isDisplayedByDefault = this.isElementDisplayedByDefault(modelId, categoryId);\n const isHiddenDueToExclusiveAlwaysDrawnElements = this.hasExclusiveAlwaysDrawnElements();\n this.changeElementStateInternal(id, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);\n\n if (!hasChildren) {\n return;\n }\n\n const childElements = this.getAssemblyElementIds(id);\n for await (const elementId of childElements.getElementIds()) {\n this.changeElementStateInternal(elementId, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);\n }\n }\n\n private async changeElementsState(modelId: Id64String | undefined, categoryId: Id64String | undefined, elementIds: AsyncGenerator<Id64String>, on: boolean) {\n const isDisplayedByDefault = this.isElementDisplayedByDefault(modelId, categoryId);\n const isHiddenDueToExclusiveAlwaysDrawnElements = this.hasExclusiveAlwaysDrawnElements();\n for await (const elementId of elementIds) {\n this.changeElementStateInternal(elementId, on, isDisplayedByDefault, isHiddenDueToExclusiveAlwaysDrawnElements);\n }\n }\n\n private changeElementStateInternal(elementId: Id64String, on: boolean, isDisplayedByDefault: boolean, isHiddenDueToExclusiveAlwaysDrawnElements: boolean) {\n let changedNeverDraw = false;\n let changedAlwaysDrawn = false;\n\n const currNeverDrawn = new Set(this._viewport.neverDrawn ? this._viewport.neverDrawn : []);\n const currAlwaysDrawn = new Set(this._viewport.alwaysDrawn ? this._viewport.alwaysDrawn : /* istanbul ignore next */ []);\n\n if (on) {\n changedNeverDraw = changedNeverDraw || currNeverDrawn.delete(elementId);\n if ((!isDisplayedByDefault || isHiddenDueToExclusiveAlwaysDrawnElements) && !currAlwaysDrawn.has(elementId)) {\n currAlwaysDrawn.add(elementId);\n changedAlwaysDrawn = true;\n }\n } else {\n changedAlwaysDrawn = changedAlwaysDrawn || currAlwaysDrawn.delete(elementId);\n if (isDisplayedByDefault && !isHiddenDueToExclusiveAlwaysDrawnElements && !currNeverDrawn.has(elementId)) {\n currNeverDrawn.add(elementId);\n changedNeverDraw = true;\n }\n }\n\n changedNeverDraw && this._viewport.setNeverDrawn(currNeverDrawn);\n changedAlwaysDrawn && this._viewport.setAlwaysDrawn(currAlwaysDrawn, this._viewport.isAlwaysDrawnExclusive);\n }\n\n private isElementDisplayedByDefault(modelId: Id64String | undefined, categoryId: Id64String | undefined) {\n return (\n !!modelId &&\n this.getModelDisplayStatus(modelId).state === \"visible\" &&\n !!categoryId &&\n this.getCategoryDisplayStatus(categoryId, modelId).state === \"visible\"\n );\n }\n\n private hasExclusiveAlwaysDrawnElements() {\n return this._viewport.isAlwaysDrawnExclusive && 0 !== this._viewport.alwaysDrawn?.size;\n }\n\n private onVisibilityChangeInternal() {\n if (this._pendingVisibilityChange) {\n return;\n }\n\n this._pendingVisibilityChange = setTimeout(() => {\n this.onVisibilityChange.raiseEvent();\n this._pendingVisibilityChange = undefined;\n }, 0);\n }\n\n private getCategoryParentModelId(categoryNode: HierarchyNode): Id64String | undefined {\n return categoryNode.extendedData && categoryNode.extendedData.modelIds[0] ? categoryNode.extendedData.modelIds[0][0] : /* istanbul ignore next */ undefined;\n }\n\n private getElementModelId(elementNode: HierarchyNode): Id64String | undefined {\n return elementNode.extendedData ? elementNode.extendedData.modelId : /* istanbul ignore next */ undefined;\n }\n\n private getElementCategoryId(elementNode: HierarchyNode): Id64String | undefined {\n return elementNode.extendedData ? elementNode.extendedData.categoryId : /* istanbul ignore next */ undefined;\n }\n\n private async getSubjectModelIds(subjectIds: Id64String[]) {\n return (await Promise.all(subjectIds.map(async (id) => this._subjectModelIdsCache.getSubjectModelIds(id)))).reduce(\n (allModelIds: Id64String[], curr: Id64String[]) => [...allModelIds, ...curr],\n [],\n );\n }\n\n private getAssemblyElementIds(assemblyId: Id64String) {\n return this._elementIdsCache.getAssemblyElementIds(assemblyId);\n }\n\n // istanbul ignore next\n private getGroupedElementIds(node: GroupingHierarchyNode) {\n const modelId = this.getElementModelId(node);\n const categoryId = this.getElementCategoryId(node);\n\n const getAssemblyElementIds = (id: Id64String) => this.getAssemblyElementIds(id);\n\n return {\n modelId,\n categoryId,\n async *elementIds() {\n for (const key of node.groupedInstanceKeys) {\n yield key.id;\n const assemblyElements = getAssemblyElementIds(key.id);\n for await (const elementId of assemblyElements.getElementIds()) {\n yield elementId;\n }\n }\n },\n };\n }\n}\n\nclass SubjectModelIdsCache {\n private _imodel: IModelConnection;\n private _subjectsHierarchy: Map<Id64String, Id64String[]> | undefined;\n private _subjectModels: Map<Id64String, Id64String[]> | undefined;\n private _init: Promise<void> | undefined;\n\n constructor(imodel: IModelConnection) {\n this._imodel = imodel;\n }\n\n private async initSubjectModels() {\n const querySubjects = async (): Promise<Array<{ id: Id64String; parentId?: Id64String; targetPartitionId?: Id64String }>> => {\n const subjectsQuery = `\n SELECT ECInstanceId id, Parent.Id parentId, json_extract(JsonProperties, '$.Subject.Model.TargetPartition') targetPartitionId\n FROM bis.Subject\n `;\n return this._imodel.createQueryReader(subjectsQuery, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }).toArray();\n };\n const queryModels = async (): Promise<Array<{ id: Id64String; parentId: Id64String }>> => {\n const modelsQuery = `\n SELECT p.ECInstanceId id, p.Parent.Id parentId\n FROM bis.InformationPartitionElement p\n INNER JOIN bis.GeometricModel3d m ON m.ModeledElement.Id = p.ECInstanceId\n WHERE NOT m.IsPrivate\n `;\n return this._imodel.createQueryReader(modelsQuery, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames }).toArray();\n };\n\n function pushToMap<TKey, TValue>(map: Map<TKey, TValue[]>, key: TKey, value: TValue) {\n let list = map.get(key);\n if (!list) {\n list = [];\n map.set(key, list);\n }\n list.push(value);\n }\n\n this._subjectsHierarchy = new Map();\n const targetPartitionSubjects = new Map<Id64String, Id64String[]>();\n for (const subject of await querySubjects()) {\n // istanbul ignore else\n if (subject.parentId) {\n pushToMap(this._subjectsHierarchy, subject.parentId, subject.id);\n }\n // istanbul ignore if\n if (subject.targetPartitionId) {\n pushToMap(targetPartitionSubjects, subject.targetPartitionId, subject.id);\n }\n }\n\n this._subjectModels = new Map();\n for (const model of await queryModels()) {\n // istanbul ignore next\n const subjectIds = targetPartitionSubjects.get(model.id) ?? [];\n // istanbul ignore else\n if (!subjectIds.includes(model.parentId)) {\n subjectIds.push(model.parentId);\n }\n\n subjectIds.forEach((subjectId) => {\n pushToMap(this._subjectModels!, subjectId, model.id);\n });\n }\n }\n\n private async initCache() {\n if (!this._init) {\n this._init = this.initSubjectModels().then(() => {});\n }\n return this._init;\n }\n\n private appendSubjectModelsRecursively(modelIds: Id64String[], subjectId: Id64String) {\n const subjectModelIds = this._subjectModels!.get(subjectId);\n if (subjectModelIds) {\n modelIds.push(...subjectModelIds);\n }\n\n const childSubjectIds = this._subjectsHierarchy!.get(subjectId);\n if (childSubjectIds) {\n childSubjectIds.forEach((cs) => this.appendSubjectModelsRecursively(modelIds, cs));\n }\n }\n\n public async getSubjectModelIds(subjectId: Id64String): Promise<Id64String[]> {\n await this.initCache();\n const modelIds = new Array<Id64String>();\n this.appendSubjectModelsRecursively(modelIds, subjectId);\n return modelIds;\n }\n}\n\n// istanbul ignore next\nclass ElementIdsCache {\n private _assemblyElementIdsCache = new Map<string, CachingElementIdsContainer>();\n\n constructor(private _imodel: IModelConnection) {}\n\n public clear() {\n this._assemblyElementIdsCache.clear();\n }\n\n public getAssemblyElementIds(assemblyId: Id64String) {\n const ids = this._assemblyElementIdsCache.get(assemblyId);\n if (ids) {\n return ids;\n }\n\n const container = createAssemblyElementIdsContainer(this._imodel, assemblyId);\n this._assemblyElementIdsCache.set(assemblyId, container);\n return container;\n }\n}\n\n// istanbul ignore next\nasync function* createInstanceIdsGenerator(imodel: IModelConnection, displayType: string, inputKeys: Keys) {\n const res = await Presentation.presentation.getContentInstanceKeys({\n imodel,\n rulesetOrId: {\n id: \"AssemblyElements\",\n rules: [\n {\n ruleType: \"Content\",\n specifications: [\n {\n specType: \"ContentRelatedInstances\",\n relationshipPaths: [\n {\n direction: \"Forward\",\n relationship: {\n schemaName: \"BisCore\",\n className: \"ElementOwnsChildElements\",\n },\n count: \"*\",\n },\n ],\n },\n ],\n },\n ],\n },\n displayType,\n keys: new KeySet(inputKeys),\n });\n for await (const key of res.items()) {\n yield key.id;\n }\n}\n\n// istanbul ignore next\nfunction createAssemblyElementIdsContainer(imodel: IModelConnection, assemblyId: Id64String) {\n return new CachingElementIdsContainer(createInstanceIdsGenerator(imodel, \"AssemblyElementsRequest\", [{ className: \"BisCore:Element\", id: assemblyId }]));\n}\n\nconst createTooltip = (status: \"visible\" | \"hidden\" | \"disabled\", tooltipStringId: string | undefined): string => {\n const statusStringId = `modelTree.status.${status}`;\n const statusString = TreeWidget.translate(statusStringId);\n if (!tooltipStringId) {\n return statusString;\n }\n\n tooltipStringId = `modelTree.tooltips.${tooltipStringId}`;\n const tooltipString = TreeWidget.translate(tooltipStringId);\n return `${statusString}: ${tooltipString}`;\n};\n\nfunction isSubjectNode(node: HierarchyNode) {\n return node.extendedData && node.extendedData.isSubject;\n}\n\nfunction isModelNode(node: HierarchyNode) {\n return node.extendedData && node.extendedData.isModel;\n}\n\nfunction isCategoryNode(node: HierarchyNode) {\n return node.extendedData && node.extendedData.isCategory;\n}\n"]}
|
package/lib/esm/TreeWidget.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { Localization } from "@itwin/core-common";
|
|
2
|
-
import type { LocalizationOptions } from "@itwin/core-i18n";
|
|
1
|
+
import type { Localization, TranslationOptions } from "@itwin/core-common";
|
|
3
2
|
/**
|
|
4
3
|
* Entry point for static initialization required by various components used in the package.
|
|
5
4
|
* @public
|
|
@@ -21,6 +20,6 @@ export declare class TreeWidget {
|
|
|
21
20
|
static get i18nNamespace(): string;
|
|
22
21
|
/** Calls i18n.translateWithNamespace with the "TreeWidget" namespace. Do NOT include the namespace in the key.
|
|
23
22
|
*/
|
|
24
|
-
static translate(key: string | string[], options?:
|
|
23
|
+
static translate(key: string | string[], options?: TranslationOptions): string;
|
|
25
24
|
}
|
|
26
25
|
//# sourceMappingURL=TreeWidget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeWidget.js","sourceRoot":"","sources":["../../src/TreeWidget.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;
|
|
1
|
+
{"version":3,"file":"TreeWidget.js","sourceRoot":"","sources":["../../src/TreeWidget.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAIpE;;;GAGG;AACH,MAAM,OAAO,UAAU;IAKrB;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAmB;QAChD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO;SACR;QAED,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;QAC/B,UAAU,CAAC,KAAK,GAAG,IAAI,IAAI,SAAS,CAAC,YAAY,CAAC;QAClD,UAAU,CAAC,QAAQ,GAAG,iBAAiB,EAAE,CAAC;QAC1C,OAAO,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;IAED,wEAAwE;IACjE,MAAM,CAAC,SAAS;QACrB,IAAI,UAAU,CAAC,KAAK,EAAE;YACpB,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC/D,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;SAC9B;QAED,IAAI,UAAU,CAAC,QAAQ,EAAE;YACvB,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,UAAU,CAAC,QAAQ,GAAG,SAAS,CAAC;SACjC;QAED,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,iEAAiE;IAC1D,MAAM,KAAK,IAAI;QACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACrB,MAAM,IAAI,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;SAC3E;QACD,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,aAAa;QAC7B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;OACG;IACI,MAAM,CAAC,SAAS,CAAC,GAAsB,EAAE,OAA4B;QAC1E,MAAM,SAAS,GAAG,GAAG,UAAU,CAAC,aAAa,IAAI,GAAG,EAAE,CAAC;QACvD,OAAO,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF","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 { BentleyError, BentleyStatus } from \"@itwin/core-common\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { registerRenderers } from \"./components/trees/common/Utils\";\n\nimport type { Localization, TranslationOptions } from \"@itwin/core-common\";\n\n/**\n * Entry point for static initialization required by various components used in the package.\n * @public\n */\nexport class TreeWidget {\n private static _i18n?: Localization;\n private static _initialized?: boolean;\n private static _dispose?: () => void;\n\n /**\n * Called by IModelApp to initialize the Tree Widget\n * @param i18n - The internationalization service created by the IModelApp.\n */\n public static async initialize(i18n?: Localization): Promise<void> {\n if (this._initialized) {\n return;\n }\n\n TreeWidget._initialized = true;\n TreeWidget._i18n = i18n ?? IModelApp.localization;\n TreeWidget._dispose = registerRenderers();\n return TreeWidget._i18n.registerNamespace(TreeWidget.i18nNamespace);\n }\n\n /** Unregisters the TreeWidget internationalization service namespace */\n public static terminate() {\n if (TreeWidget._i18n) {\n TreeWidget._i18n.unregisterNamespace(TreeWidget.i18nNamespace);\n TreeWidget._i18n = undefined;\n }\n\n if (TreeWidget._dispose) {\n TreeWidget._dispose();\n TreeWidget._dispose = undefined;\n }\n\n TreeWidget._initialized = false;\n }\n\n /** The internationalization service created by the IModelApp. */\n public static get i18n(): Localization {\n if (!TreeWidget._i18n) {\n throw new BentleyError(BentleyStatus.ERROR, \"TreeWidget not initialized\");\n }\n return TreeWidget._i18n;\n }\n\n /** The internationalization service namespace. */\n public static get i18nNamespace(): string {\n return \"TreeWidget\";\n }\n\n /** Calls i18n.translateWithNamespace with the \"TreeWidget\" namespace. Do NOT include the namespace in the key.\n */\n public static translate(key: string | string[], options?: TranslationOptions): string {\n const stringKey = `${TreeWidget.i18nNamespace}:${key}`;\n return TreeWidget.i18n.getLocalizedString(stringKey, options);\n }\n}\n"]}
|
|
@@ -9,14 +9,22 @@ import { Children, useEffect, useRef, useState } from "react";
|
|
|
9
9
|
import { SvgCaretDownSmall, SvgCaretUpSmall, SvgMore } from "@itwin/itwinui-icons-react";
|
|
10
10
|
import { ButtonGroup, Divider, DropdownMenu, IconButton, SearchBox } from "@itwin/itwinui-react";
|
|
11
11
|
import { TreeWidget } from "../../TreeWidget";
|
|
12
|
+
import { useFocusedInstancesContext } from "../trees/stateless/common/FocusedInstancesContext";
|
|
12
13
|
/** @internal */
|
|
13
14
|
export function TreeHeader(props) {
|
|
14
15
|
const { onFilterStart, onFilterClear, resultCount, selectedIndex, onSelectedChanged, children, density, className } = props;
|
|
15
16
|
const [isSearchOpen, setIsSearchOpen] = useState(false);
|
|
17
|
+
const { enabled: instanceFocusEnabled } = useFocusedInstancesContext();
|
|
16
18
|
const isEnlarged = density === "enlarged";
|
|
17
|
-
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
// istanbul ignore if
|
|
21
|
+
if (instanceFocusEnabled) {
|
|
22
|
+
setIsSearchOpen(false);
|
|
23
|
+
}
|
|
24
|
+
}, [instanceFocusEnabled]);
|
|
25
|
+
return (_jsxs("div", { className: classnames("tree-widget-tree-header", className, isEnlarged && "enlarge"), children: [_jsx(HeaderButtons, { contracted: isSearchOpen, isEnlarged: isEnlarged, children: children }), _jsx(DebouncedSearchBox, { isOpened: isSearchOpen, onOpen: () => setIsSearchOpen(true), onClose: () => setIsSearchOpen(false), onChange: (value) => (value ? onFilterStart(value) : onFilterClear()), delay: 500, selectedResultIndex: selectedIndex, resultCount: resultCount, onSelectedResultChanged: onSelectedChanged, size: isEnlarged ? "large" : "small", isDisabled: instanceFocusEnabled })] }));
|
|
18
26
|
}
|
|
19
|
-
function DebouncedSearchBox({ isOpened, selectedResultIndex, resultCount, onSelectedResultChanged, onChange, onOpen, onClose, delay, size, }) {
|
|
27
|
+
function DebouncedSearchBox({ isOpened, selectedResultIndex, resultCount, onSelectedResultChanged, onChange, onOpen, onClose, delay, size, isDisabled, }) {
|
|
20
28
|
const [inputValue, setInputValue] = useState("");
|
|
21
29
|
const onChangeRef = useRef(onChange);
|
|
22
30
|
// save latest `onChange` reference into `useRef` to avoid restarting timeout when `onChange` reference changes.
|
|
@@ -33,7 +41,7 @@ function DebouncedSearchBox({ isOpened, selectedResultIndex, resultCount, onSele
|
|
|
33
41
|
clearTimeout(timeoutId);
|
|
34
42
|
};
|
|
35
43
|
}, [inputValue, delay]);
|
|
36
|
-
return (_jsxs(SearchBox, { expandable: true, onExpand: onOpen, onCollapse: onClose, size: size, className: classnames("tree-widget-search-box", !isOpened && "contracted"), children: [_jsx(SearchBox.CollapsedState, { children: _jsx(SearchBox.ExpandButton, { title: TreeWidget.translate("searchBox.searchForSomething"), "aria-label": TreeWidget.translate("searchBox.open"), size: size, styleType: "borderless" }) }), _jsxs(SearchBox.ExpandedState, { children: [_jsx(SearchBox.Input, { placeholder: TreeWidget.translate("searchBox.search"), onChange: (e) => setInputValue(e.currentTarget.value) }), _jsx(SearchResultStepper, { selectedIndex: selectedResultIndex, total: resultCount, onStep: onSelectedResultChanged, size: size }), _jsx(SearchBox.CollapseButton, { onClick: () => {
|
|
44
|
+
return (_jsxs(SearchBox, { expandable: true, isExpanded: isOpened, onExpand: onOpen, onCollapse: onClose, size: size, className: classnames("tree-widget-search-box", !isOpened && "contracted"), isDisabled: isDisabled, children: [_jsx(SearchBox.CollapsedState, { children: _jsx(SearchBox.ExpandButton, { title: TreeWidget.translate("searchBox.searchForSomething"), "aria-label": TreeWidget.translate("searchBox.open"), size: size, styleType: "borderless" }) }), _jsxs(SearchBox.ExpandedState, { children: [_jsx(SearchBox.Input, { placeholder: TreeWidget.translate("searchBox.search"), onChange: (e) => setInputValue(e.currentTarget.value) }), _jsx(SearchResultStepper, { selectedIndex: selectedResultIndex, total: resultCount, onStep: onSelectedResultChanged, size: size }), _jsx(SearchBox.CollapseButton, { onClick: () => {
|
|
37
45
|
setInputValue("");
|
|
38
46
|
onClose();
|
|
39
47
|
}, size: size, "aria-label": TreeWidget.translate("searchBox.close") })] })] }));
|