@itwin/tree-widget-react 2.3.0 → 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 +10 -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/ModelsTree.js +2 -3
- package/lib/cjs/components/trees/models-tree/ModelsTree.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/ModelsVisibilityHandler.d.ts +1 -0
- package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js +13 -3
- package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.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/ModelsTree.js +2 -3
- package/lib/esm/components/trees/models-tree/ModelsTree.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/ModelsVisibilityHandler.d.ts +1 -0
- package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js +13 -3
- package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.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,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FocusedInstancesContextProvider = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
/*---------------------------------------------------------------------------------------------
|
|
6
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
7
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
8
|
+
*--------------------------------------------------------------------------------------------*/
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const unified_selection_1 = require("@itwin/unified-selection");
|
|
11
|
+
const FocusedInstancesContext_1 = require("./FocusedInstancesContext");
|
|
12
|
+
/** @internal */
|
|
13
|
+
function FocusedInstancesContextProvider({ selectionStorage, imodelKey, children, }) {
|
|
14
|
+
const [state, setState] = (0, react_1.useState)({
|
|
15
|
+
enabled: false,
|
|
16
|
+
toggle: () => {
|
|
17
|
+
setState((prev) => ({ ...prev, enabled: !prev.enabled }));
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const enabled = state.enabled;
|
|
21
|
+
(0, react_1.useEffect)(() => {
|
|
22
|
+
if (!enabled) {
|
|
23
|
+
setState((prev) => ({ ...prev, instanceKeys: undefined }));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const onSelectionChanged = () => {
|
|
27
|
+
const selection = selectionStorage.getSelection({ imodelKey, level: 0 });
|
|
28
|
+
const selectedInstanceKeys = [];
|
|
29
|
+
unified_selection_1.Selectables.forEach(selection, (key) => {
|
|
30
|
+
if (unified_selection_1.Selectable.isInstanceKey(key)) {
|
|
31
|
+
selectedInstanceKeys.push(key);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
setState((prev) => ({ ...prev, instanceKeys: selectedInstanceKeys.length === 0 ? undefined : selectedInstanceKeys }));
|
|
35
|
+
};
|
|
36
|
+
onSelectionChanged();
|
|
37
|
+
return selectionStorage.selectionChangeEvent.addListener(({ imodelKey: changeImodelKey, level }) => {
|
|
38
|
+
if (changeImodelKey !== imodelKey || level !== 0) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
onSelectionChanged();
|
|
42
|
+
});
|
|
43
|
+
}, [enabled, imodelKey, selectionStorage]);
|
|
44
|
+
return (0, jsx_runtime_1.jsx)(FocusedInstancesContext_1.focusedInstancesContext.Provider, { value: state, children: children });
|
|
45
|
+
}
|
|
46
|
+
exports.FocusedInstancesContextProvider = FocusedInstancesContextProvider;
|
|
47
|
+
//# sourceMappingURL=FocusedInstancesContextProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FocusedInstancesContextProvider.js","sourceRoot":"","sources":["../../../../../../src/components/trees/stateless/common/FocusedInstancesContextProvider.tsx"],"names":[],"mappings":";;;;AAAA;;;gGAGgG;AAEhG,iCAA4C;AAC5C,gEAAmE;AACnE,uEAAoE;AAOpE,gBAAgB;AAChB,SAAgB,+BAA+B,CAAC,EAC9C,gBAAgB,EAChB,SAAS,EACT,QAAQ,GACqE;IAC7E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAA0B;QAC1D,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,GAAG,EAAE;YACX,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAE9B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,EAAE;YACZ,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO;SACR;QAED,MAAM,kBAAkB,GAAG,GAAG,EAAE;YAC9B,MAAM,SAAS,GAAG,gBAAgB,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,oBAAoB,GAAkB,EAAE,CAAC;YAC/C,+BAAW,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;gBACrC,IAAI,8BAAU,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;oBACjC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAChC;YACH,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;QACxH,CAAC,CAAC;QAEF,kBAAkB,EAAE,CAAC;QACrB,OAAO,gBAAgB,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE;YACjG,IAAI,eAAe,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,EAAE;gBAChD,OAAO;aACR;YACD,kBAAkB,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE3C,OAAO,uBAAC,iDAAuB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAoC,CAAC;AACvG,CAAC;AAxCD,0EAwCC","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 { useEffect, useState } from \"react\";\nimport { Selectable, Selectables } from \"@itwin/unified-selection\";\nimport { focusedInstancesContext } from \"./FocusedInstancesContext\";\n\nimport type { PropsWithChildren } from \"react\";\nimport type { InstanceKey } from \"@itwin/presentation-common\";\nimport type { SelectionStorage } from \"@itwin/presentation-hierarchies-react\";\nimport type { FocusedInstancesContext } from \"./FocusedInstancesContext\";\n\n/** @internal */\nexport function FocusedInstancesContextProvider({\n selectionStorage,\n imodelKey,\n children,\n}: PropsWithChildren<{ selectionStorage: SelectionStorage; imodelKey: string }>) {\n const [state, setState] = useState<FocusedInstancesContext>({\n enabled: false,\n toggle: () => {\n setState((prev) => ({ ...prev, enabled: !prev.enabled }));\n },\n });\n const enabled = state.enabled;\n\n useEffect(() => {\n if (!enabled) {\n setState((prev) => ({ ...prev, instanceKeys: undefined }));\n return;\n }\n\n const onSelectionChanged = () => {\n const selection = selectionStorage.getSelection({ imodelKey, level: 0 });\n const selectedInstanceKeys: InstanceKey[] = [];\n Selectables.forEach(selection, (key) => {\n if (Selectable.isInstanceKey(key)) {\n selectedInstanceKeys.push(key);\n }\n });\n setState((prev) => ({ ...prev, instanceKeys: selectedInstanceKeys.length === 0 ? undefined : selectedInstanceKeys }));\n };\n\n onSelectionChanged();\n return selectionStorage.selectionChangeEvent.addListener(({ imodelKey: changeImodelKey, level }) => {\n if (changeImodelKey !== imodelKey || level !== 0) {\n return;\n }\n onSelectionChanged();\n });\n }, [enabled, imodelKey, selectionStorage]);\n\n return <focusedInstancesContext.Provider value={state}>{children}</focusedInstancesContext.Provider>;\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TreeRenderer, useTree } from "@itwin/presentation-hierarchies-react";
|
|
2
|
+
type UseTreeLocalizedStrings = Parameters<typeof useTree>[0]["localizedStrings"];
|
|
3
|
+
type TreeRendererLocalizedStrings = Parameters<typeof TreeRenderer>[0]["localizedStrings"];
|
|
4
|
+
type useHierarchiesLocalizationResult = UseTreeLocalizedStrings & TreeRendererLocalizedStrings;
|
|
5
|
+
/** @internal */
|
|
6
|
+
export declare function useHierarchiesLocalization(): useHierarchiesLocalizationResult;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=UseHierarchiesLocalization.d.ts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
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.useHierarchiesLocalization = void 0;
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const TreeWidget_1 = require("../../../../TreeWidget");
|
|
10
|
+
/** @internal */
|
|
11
|
+
function useHierarchiesLocalization() {
|
|
12
|
+
const stringValues = Object.values(getLocalizedStrings());
|
|
13
|
+
const localizedStrings = (0, react_1.useMemo)(getLocalizedStrings, stringValues);
|
|
14
|
+
return localizedStrings;
|
|
15
|
+
}
|
|
16
|
+
exports.useHierarchiesLocalization = useHierarchiesLocalization;
|
|
17
|
+
function getLocalizedStrings() {
|
|
18
|
+
return {
|
|
19
|
+
// strings for the `useUnifiedSelectionTree` hook
|
|
20
|
+
unspecified: TreeWidget_1.TreeWidget.translate("stateless.hierarchies.unspecified"),
|
|
21
|
+
other: TreeWidget_1.TreeWidget.translate("stateless.hierarchies.other"),
|
|
22
|
+
// strings for `TreeRenderer` and `TreeNodeRenderer`
|
|
23
|
+
loading: TreeWidget_1.TreeWidget.translate("stateless.hierarchies.loading"),
|
|
24
|
+
filterHierarchyLevel: TreeWidget_1.TreeWidget.translate("stateless.hierarchies.filterHierarchyLevel"),
|
|
25
|
+
clearHierarchyLevelFilter: TreeWidget_1.TreeWidget.translate("stateless.hierarchies.clearHierarchyLevelFilter"),
|
|
26
|
+
noFilteredChildren: TreeWidget_1.TreeWidget.translate("stateless.hierarchies.noFilteredChildren"),
|
|
27
|
+
resultLimitExceeded: TreeWidget_1.TreeWidget.translate("stateless.hierarchies.resultLimitExceeded"),
|
|
28
|
+
resultLimitExceededWithFiltering: TreeWidget_1.TreeWidget.translate("stateless.hierarchies.resultLimitExceededWithFiltering"),
|
|
29
|
+
increaseHierarchyLimit: TreeWidget_1.TreeWidget.translate("stateless.hierarchies.increaseHierarchyLimit"),
|
|
30
|
+
increaseHierarchyLimitWithFiltering: TreeWidget_1.TreeWidget.translate("stateless.hierarchies.increaseHierarchyLimitWithFiltering"),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=UseHierarchiesLocalization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseHierarchiesLocalization.js","sourceRoot":"","sources":["../../../../../../src/components/trees/stateless/common/UseHierarchiesLocalization.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAEhG,iCAAgC;AAChC,uDAAoD;AASpD,gBAAgB;AAChB,SAAgB,0BAA0B;IACxC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAG,CAAC,CAAC;IAC3D,MAAM,gBAAgB,GAAG,IAAA,eAAO,EAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;IAEpE,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AALD,gEAKC;AAED,SAAS,mBAAmB;IAC1B,OAAO;QACL,iDAAiD;QACjD,WAAW,EAAE,uBAAU,CAAC,SAAS,CAAC,mCAAmC,CAAC;QACtE,KAAK,EAAE,uBAAU,CAAC,SAAS,CAAC,6BAA6B,CAAC;QAE1D,oDAAoD;QACpD,OAAO,EAAE,uBAAU,CAAC,SAAS,CAAC,+BAA+B,CAAC;QAC9D,oBAAoB,EAAE,uBAAU,CAAC,SAAS,CAAC,4CAA4C,CAAC;QACxF,yBAAyB,EAAE,uBAAU,CAAC,SAAS,CAAC,iDAAiD,CAAC;QAClG,kBAAkB,EAAE,uBAAU,CAAC,SAAS,CAAC,0CAA0C,CAAC;QACpF,mBAAmB,EAAE,uBAAU,CAAC,SAAS,CAAC,2CAA2C,CAAC;QACtF,gCAAgC,EAAE,uBAAU,CAAC,SAAS,CAAC,wDAAwD,CAAC;QAChH,sBAAsB,EAAE,uBAAU,CAAC,SAAS,CAAC,8CAA8C,CAAC;QAC5F,mCAAmC,EAAE,uBAAU,CAAC,SAAS,CAAC,2DAA2D,CAAC;KACvH,CAAC;AACJ,CAAC","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 { useMemo } from \"react\";\nimport { TreeWidget } from \"../../../../TreeWidget\";\n\nimport type { TreeRenderer, useTree } from \"@itwin/presentation-hierarchies-react\";\n\ntype UseTreeLocalizedStrings = Parameters<typeof useTree>[0][\"localizedStrings\"];\ntype TreeRendererLocalizedStrings = Parameters<typeof TreeRenderer>[0][\"localizedStrings\"];\n\ntype useHierarchiesLocalizationResult = UseTreeLocalizedStrings & TreeRendererLocalizedStrings;\n\n/** @internal */\nexport function useHierarchiesLocalization(): useHierarchiesLocalizationResult {\n const stringValues = Object.values(getLocalizedStrings()!);\n const localizedStrings = useMemo(getLocalizedStrings, stringValues);\n\n return localizedStrings;\n}\n\nfunction getLocalizedStrings(): useHierarchiesLocalizationResult {\n return {\n // strings for the `useUnifiedSelectionTree` hook\n unspecified: TreeWidget.translate(\"stateless.hierarchies.unspecified\"),\n other: TreeWidget.translate(\"stateless.hierarchies.other\"),\n\n // strings for `TreeRenderer` and `TreeNodeRenderer`\n loading: TreeWidget.translate(\"stateless.hierarchies.loading\"),\n filterHierarchyLevel: TreeWidget.translate(\"stateless.hierarchies.filterHierarchyLevel\"),\n clearHierarchyLevelFilter: TreeWidget.translate(\"stateless.hierarchies.clearHierarchyLevelFilter\"),\n noFilteredChildren: TreeWidget.translate(\"stateless.hierarchies.noFilteredChildren\"),\n resultLimitExceeded: TreeWidget.translate(\"stateless.hierarchies.resultLimitExceeded\"),\n resultLimitExceededWithFiltering: TreeWidget.translate(\"stateless.hierarchies.resultLimitExceededWithFiltering\"),\n increaseHierarchyLimit: TreeWidget.translate(\"stateless.hierarchies.increaseHierarchyLimit\"),\n increaseHierarchyLimitWithFiltering: TreeWidget.translate(\"stateless.hierarchies.increaseHierarchyLimitWithFiltering\"),\n };\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { IModelConnection } from "@itwin/core-frontend";
|
|
3
|
+
import type { useTree } from "@itwin/presentation-hierarchies-react";
|
|
4
|
+
type UseTreeResult = ReturnType<typeof useTree>;
|
|
5
|
+
interface UseHierarchyLevelFilteringOwnProps {
|
|
6
|
+
imodel: IModelConnection;
|
|
7
|
+
defaultHierarchyLevelSizeLimit: number;
|
|
8
|
+
}
|
|
9
|
+
type UseHierarchyLevelFilteringProps = UseHierarchyLevelFilteringOwnProps & Pick<UseTreeResult, "getHierarchyLevelDetails">;
|
|
10
|
+
/** @internal */
|
|
11
|
+
export declare function useHierarchyLevelFiltering({ imodel, defaultHierarchyLevelSizeLimit, getHierarchyLevelDetails }: UseHierarchyLevelFilteringProps): {
|
|
12
|
+
onFilterClick: (nodeId: string | undefined) => void;
|
|
13
|
+
filteringDialog: JSX.Element;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=UseHierarchyFiltering.d.ts.map
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useHierarchyLevelFiltering = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
/*---------------------------------------------------------------------------------------------
|
|
6
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
7
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
8
|
+
*--------------------------------------------------------------------------------------------*/
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const components_react_1 = require("@itwin/components-react");
|
|
11
|
+
const presentation_common_1 = require("@itwin/presentation-common");
|
|
12
|
+
const presentation_components_1 = require("@itwin/presentation-components");
|
|
13
|
+
const presentation_frontend_1 = require("@itwin/presentation-frontend");
|
|
14
|
+
const presentation_hierarchies_1 = require("@itwin/presentation-hierarchies");
|
|
15
|
+
const TreeWidget_1 = require("../../../../TreeWidget");
|
|
16
|
+
/** @internal */
|
|
17
|
+
function useHierarchyLevelFiltering({ imodel, defaultHierarchyLevelSizeLimit, getHierarchyLevelDetails }) {
|
|
18
|
+
const [filteringOptions, setFilteringOptions] = (0, react_1.useState)();
|
|
19
|
+
const onFilterClick = (0, react_1.useCallback)((nodeId) => {
|
|
20
|
+
const hierarchyDetails = getHierarchyLevelDetails(nodeId);
|
|
21
|
+
setFilteringOptions(hierarchyDetails ? { nodeId, hierarchyDetails } : undefined);
|
|
22
|
+
}, [getHierarchyLevelDetails]);
|
|
23
|
+
const propertiesSource = (0, react_1.useMemo)(() => {
|
|
24
|
+
if (!filteringOptions) {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
return async () => {
|
|
28
|
+
const inputKeys = await collectInstanceKeys(filteringOptions.hierarchyDetails.getInstanceKeysIterator());
|
|
29
|
+
if (inputKeys.length === 0) {
|
|
30
|
+
throw new Error("Hierarchy level is empty - unable to create content descriptor.");
|
|
31
|
+
}
|
|
32
|
+
const descriptor = await presentation_frontend_1.Presentation.presentation.getContentDescriptor({
|
|
33
|
+
imodel,
|
|
34
|
+
rulesetOrId: {
|
|
35
|
+
id: `Hierarchy level descriptor ruleset`,
|
|
36
|
+
rules: [
|
|
37
|
+
{
|
|
38
|
+
ruleType: "Content",
|
|
39
|
+
specifications: [
|
|
40
|
+
{
|
|
41
|
+
specType: "SelectedNodeInstances",
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
displayType: presentation_common_1.DefaultContentDisplayTypes.PropertyPane,
|
|
48
|
+
keys: new presentation_common_1.KeySet(inputKeys),
|
|
49
|
+
});
|
|
50
|
+
if (!descriptor) {
|
|
51
|
+
throw new Error("Failed to create content descriptor");
|
|
52
|
+
}
|
|
53
|
+
return { descriptor, inputKeys };
|
|
54
|
+
};
|
|
55
|
+
}, [filteringOptions, imodel]);
|
|
56
|
+
const getInitialFilter = (0, react_1.useMemo)(() => {
|
|
57
|
+
const currentFilter = filteringOptions?.hierarchyDetails.instanceFilter;
|
|
58
|
+
if (!currentFilter) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
return (descriptor) => fromGenericFilter(descriptor, currentFilter);
|
|
62
|
+
}, [filteringOptions]);
|
|
63
|
+
const filteringDialog = ((0, jsx_runtime_1.jsx)(presentation_components_1.PresentationInstanceFilterDialog, { imodel: imodel, isOpen: !!filteringOptions, onApply: (info) => {
|
|
64
|
+
if (!filteringOptions) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
filteringOptions.hierarchyDetails.setInstanceFilter(toGenericFilter(info));
|
|
68
|
+
setFilteringOptions(undefined);
|
|
69
|
+
}, onClose: () => {
|
|
70
|
+
setFilteringOptions(undefined);
|
|
71
|
+
}, propertiesSource: propertiesSource, initialFilter: getInitialFilter, filterResultsCountRenderer: (filter) => {
|
|
72
|
+
if (!filteringOptions) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return ((0, jsx_runtime_1.jsx)(MatchingInstancesCount, { filter: filter, hierarchyLevelDetails: filteringOptions.hierarchyDetails, defaultHierarchyLevelSizeLimit: defaultHierarchyLevelSizeLimit }));
|
|
76
|
+
} }));
|
|
77
|
+
return {
|
|
78
|
+
onFilterClick,
|
|
79
|
+
filteringDialog,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
exports.useHierarchyLevelFiltering = useHierarchyLevelFiltering;
|
|
83
|
+
function MatchingInstancesCount({ filter, defaultHierarchyLevelSizeLimit, hierarchyLevelDetails }) {
|
|
84
|
+
const { value } = (0, components_react_1.useDebouncedAsyncValue)((0, react_1.useCallback)(async () => {
|
|
85
|
+
const instanceFilter = toGenericFilter(filter);
|
|
86
|
+
try {
|
|
87
|
+
const instanceKeys = await collectInstanceKeys(hierarchyLevelDetails.getInstanceKeysIterator({
|
|
88
|
+
instanceFilter,
|
|
89
|
+
hierarchyLevelSizeLimit: hierarchyLevelDetails.sizeLimit ?? defaultHierarchyLevelSizeLimit,
|
|
90
|
+
}));
|
|
91
|
+
return TreeWidget_1.TreeWidget.translate("stateless.matchingInstancesCount", { count: instanceKeys.length });
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
if (e instanceof presentation_hierarchies_1.RowsLimitExceededError) {
|
|
95
|
+
return TreeWidget_1.TreeWidget.translate("stateless.filterExceedsLimit", { limit: e.limit });
|
|
96
|
+
}
|
|
97
|
+
return TreeWidget_1.TreeWidget.translate("stateless.failedToCalculateMatchingInstances");
|
|
98
|
+
}
|
|
99
|
+
}, [filter, hierarchyLevelDetails, defaultHierarchyLevelSizeLimit]));
|
|
100
|
+
if (!value) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: value });
|
|
104
|
+
}
|
|
105
|
+
async function collectInstanceKeys(iterator) {
|
|
106
|
+
const inputKeys = [];
|
|
107
|
+
for await (const inputKey of iterator) {
|
|
108
|
+
inputKeys.push(inputKey);
|
|
109
|
+
}
|
|
110
|
+
return inputKeys;
|
|
111
|
+
}
|
|
112
|
+
function fromGenericFilter(descriptor, filter) {
|
|
113
|
+
const presentationFilter = presentation_hierarchies_1.GenericInstanceFilter.isFilterRuleGroup(filter.rules) && filter.rules.rules.length === 0
|
|
114
|
+
? undefined
|
|
115
|
+
: presentation_components_1.PresentationInstanceFilter.fromGenericInstanceFilter(descriptor, filter);
|
|
116
|
+
return {
|
|
117
|
+
filter: presentationFilter,
|
|
118
|
+
usedClasses: (filter.filteredClassNames ?? [])
|
|
119
|
+
.map((name) => descriptor.selectClasses.find((selectClass) => selectClass.selectClassInfo.name === name)?.selectClassInfo)
|
|
120
|
+
.filter((classInfo) => classInfo !== undefined),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
function toGenericFilter(filterInfo) {
|
|
124
|
+
if (!filterInfo) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
if (!filterInfo.filter) {
|
|
128
|
+
return filterInfo.usedClasses.length > 0
|
|
129
|
+
? {
|
|
130
|
+
propertyClassNames: [],
|
|
131
|
+
relatedInstances: [],
|
|
132
|
+
filteredClassNames: filterInfo.usedClasses.map((info) => info.name),
|
|
133
|
+
rules: { operator: "and", rules: [] },
|
|
134
|
+
}
|
|
135
|
+
: undefined;
|
|
136
|
+
}
|
|
137
|
+
return presentation_components_1.PresentationInstanceFilter.toGenericInstanceFilter(filterInfo.filter, filterInfo.usedClasses);
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=UseHierarchyFiltering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseHierarchyFiltering.js","sourceRoot":"","sources":["../../../../../../src/components/trees/stateless/common/UseHierarchyFiltering.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 { useCallback, useMemo, useState } from \"react\";\nimport { useDebouncedAsyncValue } from \"@itwin/components-react\";\nimport { DefaultContentDisplayTypes, KeySet } from \"@itwin/presentation-common\";\nimport { PresentationInstanceFilter, PresentationInstanceFilterDialog } from \"@itwin/presentation-components\";\nimport { Presentation } from \"@itwin/presentation-frontend\";\nimport { GenericInstanceFilter, RowsLimitExceededError } from \"@itwin/presentation-hierarchies\";\nimport { TreeWidget } from \"../../../../TreeWidget\";\n\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { ClassInfo, Descriptor } from \"@itwin/presentation-common\";\nimport type { PresentationInstanceFilterInfo, PresentationInstanceFilterPropertiesSource } from \"@itwin/presentation-components\";\nimport type { HierarchyLevelDetails, useTree } from \"@itwin/presentation-hierarchies-react\";\nimport type { InstanceKey } from \"@itwin/presentation-shared\";\n\ntype UseTreeResult = ReturnType<typeof useTree>;\n\ninterface UseHierarchyLevelFilteringOwnProps {\n imodel: IModelConnection;\n defaultHierarchyLevelSizeLimit: number;\n}\n\ntype UseHierarchyLevelFilteringProps = UseHierarchyLevelFilteringOwnProps & Pick<UseTreeResult, \"getHierarchyLevelDetails\">;\n\n/** @internal */\nexport function useHierarchyLevelFiltering({ imodel, defaultHierarchyLevelSizeLimit, getHierarchyLevelDetails }: UseHierarchyLevelFilteringProps) {\n const [filteringOptions, setFilteringOptions] = useState<{ nodeId: string | undefined; hierarchyDetails: HierarchyLevelDetails }>();\n const onFilterClick = useCallback(\n (nodeId: string | undefined) => {\n const hierarchyDetails = getHierarchyLevelDetails(nodeId);\n setFilteringOptions(hierarchyDetails ? { nodeId, hierarchyDetails } : undefined);\n },\n [getHierarchyLevelDetails],\n );\n\n const propertiesSource = useMemo<(() => Promise<PresentationInstanceFilterPropertiesSource>) | undefined>(() => {\n if (!filteringOptions) {\n return undefined;\n }\n\n return async () => {\n const inputKeys = await collectInstanceKeys(filteringOptions.hierarchyDetails.getInstanceKeysIterator());\n if (inputKeys.length === 0) {\n throw new Error(\"Hierarchy level is empty - unable to create content descriptor.\");\n }\n\n const descriptor = await Presentation.presentation.getContentDescriptor({\n imodel,\n rulesetOrId: {\n id: `Hierarchy level descriptor ruleset`,\n rules: [\n {\n ruleType: \"Content\",\n specifications: [\n {\n specType: \"SelectedNodeInstances\",\n },\n ],\n },\n ],\n },\n displayType: DefaultContentDisplayTypes.PropertyPane,\n keys: new KeySet(inputKeys),\n });\n if (!descriptor) {\n throw new Error(\"Failed to create content descriptor\");\n }\n\n return { descriptor, inputKeys };\n };\n }, [filteringOptions, imodel]);\n\n const getInitialFilter = useMemo(() => {\n const currentFilter = filteringOptions?.hierarchyDetails.instanceFilter;\n if (!currentFilter) {\n return undefined;\n }\n\n return (descriptor: Descriptor) => fromGenericFilter(descriptor, currentFilter);\n }, [filteringOptions]);\n\n const filteringDialog = (\n <PresentationInstanceFilterDialog\n imodel={imodel}\n isOpen={!!filteringOptions}\n onApply={(info) => {\n if (!filteringOptions) {\n return;\n }\n filteringOptions.hierarchyDetails.setInstanceFilter(toGenericFilter(info));\n setFilteringOptions(undefined);\n }}\n onClose={() => {\n setFilteringOptions(undefined);\n }}\n propertiesSource={propertiesSource}\n initialFilter={getInitialFilter}\n filterResultsCountRenderer={(filter) => {\n if (!filteringOptions) {\n return null;\n }\n\n return (\n <MatchingInstancesCount\n filter={filter}\n hierarchyLevelDetails={filteringOptions.hierarchyDetails}\n defaultHierarchyLevelSizeLimit={defaultHierarchyLevelSizeLimit}\n />\n );\n }}\n />\n );\n\n return {\n onFilterClick,\n filteringDialog,\n };\n}\n\ninterface MatchingInstancesCountProps {\n filter: PresentationInstanceFilterInfo;\n hierarchyLevelDetails: HierarchyLevelDetails;\n defaultHierarchyLevelSizeLimit: number;\n}\n\nfunction MatchingInstancesCount({ filter, defaultHierarchyLevelSizeLimit, hierarchyLevelDetails }: MatchingInstancesCountProps) {\n const { value } = useDebouncedAsyncValue(\n useCallback(async () => {\n const instanceFilter = toGenericFilter(filter);\n try {\n const instanceKeys = await collectInstanceKeys(\n hierarchyLevelDetails.getInstanceKeysIterator({\n instanceFilter,\n hierarchyLevelSizeLimit: hierarchyLevelDetails.sizeLimit ?? defaultHierarchyLevelSizeLimit,\n }),\n );\n return TreeWidget.translate(\"stateless.matchingInstancesCount\", { count: instanceKeys.length });\n } catch (e) {\n if (e instanceof RowsLimitExceededError) {\n return TreeWidget.translate(\"stateless.filterExceedsLimit\", { limit: e.limit });\n }\n return TreeWidget.translate(\"stateless.failedToCalculateMatchingInstances\");\n }\n }, [filter, hierarchyLevelDetails, defaultHierarchyLevelSizeLimit]),\n );\n\n if (!value) {\n return null;\n }\n\n return <>{value}</>;\n}\n\nasync function collectInstanceKeys(iterator: AsyncIterableIterator<InstanceKey>) {\n const inputKeys = [];\n for await (const inputKey of iterator) {\n inputKeys.push(inputKey);\n }\n return inputKeys;\n}\n\nfunction fromGenericFilter(descriptor: Descriptor, filter: GenericInstanceFilter): PresentationInstanceFilterInfo {\n const presentationFilter =\n GenericInstanceFilter.isFilterRuleGroup(filter.rules) && filter.rules.rules.length === 0\n ? undefined\n : PresentationInstanceFilter.fromGenericInstanceFilter(descriptor, filter);\n return {\n filter: presentationFilter,\n usedClasses: (filter.filteredClassNames ?? [])\n .map((name) => descriptor.selectClasses.find((selectClass) => selectClass.selectClassInfo.name === name)?.selectClassInfo)\n .filter((classInfo): classInfo is ClassInfo => classInfo !== undefined),\n };\n}\n\nfunction toGenericFilter(filterInfo?: PresentationInstanceFilterInfo): GenericInstanceFilter | undefined {\n if (!filterInfo) {\n return undefined;\n }\n\n if (!filterInfo.filter) {\n return filterInfo.usedClasses.length > 0\n ? {\n propertyClassNames: [],\n relatedInstances: [],\n filteredClassNames: filterInfo.usedClasses.map((info) => info.name),\n rules: { operator: \"and\", rules: [] },\n }\n : undefined;\n }\n\n return PresentationInstanceFilter.toGenericInstanceFilter(filterInfo.filter, filterInfo.usedClasses);\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BeEvent } from "@itwin/core-bentley";
|
|
2
|
+
import type { HierarchyNode } from "@itwin/presentation-hierarchies";
|
|
3
|
+
import type { PresentationHierarchyNode } from "@itwin/presentation-hierarchies-react";
|
|
4
|
+
import type { VisibilityStatus } from "../../VisibilityTreeEventHandler";
|
|
5
|
+
interface HierarchyVisibilityHandler {
|
|
6
|
+
getVisibilityStatus: (node: HierarchyNode) => Promise<VisibilityStatus>;
|
|
7
|
+
changeVisibility: (node: HierarchyNode, on: boolean) => Promise<void>;
|
|
8
|
+
onVisibilityChange: BeEvent<() => void>;
|
|
9
|
+
dispose: () => void;
|
|
10
|
+
}
|
|
11
|
+
interface UseHierarchyVisibilityProps {
|
|
12
|
+
visibilityHandlerFactory: () => HierarchyVisibilityHandler;
|
|
13
|
+
}
|
|
14
|
+
interface UseHierarchyVisibilityResult {
|
|
15
|
+
onCheckboxClicked: (node: PresentationHierarchyNode, checked: boolean) => void;
|
|
16
|
+
getCheckboxStatus: (node: PresentationHierarchyNode) => VisibilityStatus;
|
|
17
|
+
}
|
|
18
|
+
/** @internal */
|
|
19
|
+
export declare function useHierarchyVisibility({ visibilityHandlerFactory }: UseHierarchyVisibilityProps): UseHierarchyVisibilityResult;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=UseHierarchyVisibility.d.ts.map
|
|
@@ -0,0 +1,82 @@
|
|
|
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.useHierarchyVisibility = void 0;
|
|
8
|
+
const react_1 = require("react");
|
|
9
|
+
const rxjs_1 = require("rxjs");
|
|
10
|
+
/** @internal */
|
|
11
|
+
function useHierarchyVisibility({ visibilityHandlerFactory }) {
|
|
12
|
+
const statusMap = (0, react_1.useRef)(new Map());
|
|
13
|
+
const [state, setState] = (0, react_1.useState)({
|
|
14
|
+
getCheckboxStatus: (_node) => ({ state: "hidden", isDisabled: true }),
|
|
15
|
+
onCheckboxClicked: (_node, _checked) => { },
|
|
16
|
+
});
|
|
17
|
+
(0, react_1.useEffect)(() => {
|
|
18
|
+
statusMap.current.clear();
|
|
19
|
+
const handler = visibilityHandlerFactory();
|
|
20
|
+
const visibilityChanged = new rxjs_1.Subject();
|
|
21
|
+
const calculate = new rxjs_1.Subject();
|
|
22
|
+
const calculateNodeStatus = (node) => {
|
|
23
|
+
calculate.next(node);
|
|
24
|
+
};
|
|
25
|
+
const subscription = calculate
|
|
26
|
+
.pipe((0, rxjs_1.distinct)(undefined, visibilityChanged), (0, rxjs_1.mergeMap)((node) => (0, rxjs_1.defer)(async () => ({ node, status: await handler.getVisibilityStatus(node.nodeData) })).pipe((0, rxjs_1.takeUntil)(visibilityChanged))))
|
|
27
|
+
.subscribe({
|
|
28
|
+
next: ({ node, status }) => {
|
|
29
|
+
statusMap.current.set(node.id, { node, status, needsRefresh: false });
|
|
30
|
+
setState((prev) => ({
|
|
31
|
+
...prev,
|
|
32
|
+
getCheckboxStatus: createStatusGetter(statusMap, calculateNodeStatus),
|
|
33
|
+
}));
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
const changeVisibility = (node, checked) => {
|
|
37
|
+
void handler.changeVisibility(node.nodeData, checked);
|
|
38
|
+
const status = statusMap.current.get(node.id);
|
|
39
|
+
if (!status) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
status.status.state = checked ? "visible" : "hidden";
|
|
43
|
+
status.status.tooltip = undefined;
|
|
44
|
+
setState((prev) => ({ ...prev, getCheckboxStatus: createStatusGetter(statusMap, calculateNodeStatus) }));
|
|
45
|
+
};
|
|
46
|
+
setState({
|
|
47
|
+
onCheckboxClicked: changeVisibility,
|
|
48
|
+
getCheckboxStatus: createStatusGetter(statusMap, calculateNodeStatus),
|
|
49
|
+
});
|
|
50
|
+
const removeListener = handler.onVisibilityChange.addListener(() => {
|
|
51
|
+
statusMap.current.forEach((value) => {
|
|
52
|
+
value.needsRefresh = true;
|
|
53
|
+
});
|
|
54
|
+
visibilityChanged.next();
|
|
55
|
+
setState((prev) => ({
|
|
56
|
+
...prev,
|
|
57
|
+
getCheckboxStatus: createStatusGetter(statusMap, calculateNodeStatus),
|
|
58
|
+
}));
|
|
59
|
+
});
|
|
60
|
+
return () => {
|
|
61
|
+
subscription.unsubscribe();
|
|
62
|
+
removeListener();
|
|
63
|
+
handler.dispose();
|
|
64
|
+
};
|
|
65
|
+
}, [visibilityHandlerFactory]);
|
|
66
|
+
return state;
|
|
67
|
+
}
|
|
68
|
+
exports.useHierarchyVisibility = useHierarchyVisibility;
|
|
69
|
+
function createStatusGetter(map, calculateVisibility) {
|
|
70
|
+
return (node) => {
|
|
71
|
+
const status = map.current.get(node.id);
|
|
72
|
+
if (status === undefined) {
|
|
73
|
+
calculateVisibility(node);
|
|
74
|
+
return { state: "hidden", isDisabled: true };
|
|
75
|
+
}
|
|
76
|
+
if (status.needsRefresh) {
|
|
77
|
+
calculateVisibility(node);
|
|
78
|
+
}
|
|
79
|
+
return status.status;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=UseHierarchyVisibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseHierarchyVisibility.js","sourceRoot":"","sources":["../../../../../../src/components/trees/stateless/common/UseHierarchyVisibility.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 { useEffect, useRef, useState } from \"react\";\nimport { defer, distinct, mergeMap, Subject, takeUntil } from \"rxjs\";\n\nimport type { MutableRefObject } from \"react\";\nimport type { BeEvent } from \"@itwin/core-bentley\";\nimport type { HierarchyNode } from \"@itwin/presentation-hierarchies\";\nimport type { PresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\nimport type { VisibilityStatus } from \"../../VisibilityTreeEventHandler\";\n\ninterface HierarchyVisibilityHandler {\n getVisibilityStatus: (node: HierarchyNode) => Promise<VisibilityStatus>;\n changeVisibility: (node: HierarchyNode, on: boolean) => Promise<void>;\n onVisibilityChange: BeEvent<() => void>;\n dispose: () => void;\n}\n\ninterface UseHierarchyVisibilityProps {\n visibilityHandlerFactory: () => HierarchyVisibilityHandler;\n}\n\ninterface UseHierarchyVisibilityResult {\n onCheckboxClicked: (node: PresentationHierarchyNode, checked: boolean) => void;\n getCheckboxStatus: (node: PresentationHierarchyNode) => VisibilityStatus;\n}\n\n/** @internal */\nexport function useHierarchyVisibility({ visibilityHandlerFactory }: UseHierarchyVisibilityProps): UseHierarchyVisibilityResult {\n const statusMap = useRef(new Map<string, { node: PresentationHierarchyNode; status: VisibilityStatus; needsRefresh: boolean }>());\n const [state, setState] = useState({\n getCheckboxStatus: (_node: PresentationHierarchyNode): VisibilityStatus => ({ state: \"hidden\", isDisabled: true }),\n onCheckboxClicked: (_node: PresentationHierarchyNode, _checked: boolean): void => {},\n });\n\n useEffect(() => {\n statusMap.current.clear();\n const handler = visibilityHandlerFactory();\n\n const visibilityChanged = new Subject<void>();\n const calculate = new Subject<PresentationHierarchyNode>();\n const calculateNodeStatus = (node: PresentationHierarchyNode) => {\n calculate.next(node);\n };\n\n const subscription = calculate\n .pipe(\n distinct(undefined, visibilityChanged),\n mergeMap((node) => defer(async () => ({ node, status: await handler.getVisibilityStatus(node.nodeData) })).pipe(takeUntil(visibilityChanged))),\n )\n .subscribe({\n next: ({ node, status }) => {\n statusMap.current.set(node.id, { node, status, needsRefresh: false });\n setState((prev) => ({\n ...prev,\n getCheckboxStatus: createStatusGetter(statusMap, calculateNodeStatus),\n }));\n },\n });\n\n const changeVisibility = (node: PresentationHierarchyNode, checked: boolean) => {\n void handler.changeVisibility(node.nodeData, checked);\n const status = statusMap.current.get(node.id);\n if (!status) {\n return;\n }\n status.status.state = checked ? \"visible\" : \"hidden\";\n status.status.tooltip = undefined;\n setState((prev) => ({ ...prev, getCheckboxStatus: createStatusGetter(statusMap, calculateNodeStatus) }));\n };\n\n setState({\n onCheckboxClicked: changeVisibility,\n getCheckboxStatus: createStatusGetter(statusMap, calculateNodeStatus),\n });\n\n const removeListener = handler.onVisibilityChange.addListener(() => {\n statusMap.current.forEach((value) => {\n value.needsRefresh = true;\n });\n\n visibilityChanged.next();\n setState((prev) => ({\n ...prev,\n getCheckboxStatus: createStatusGetter(statusMap, calculateNodeStatus),\n }));\n });\n\n return () => {\n subscription.unsubscribe();\n removeListener();\n handler.dispose();\n };\n }, [visibilityHandlerFactory]);\n\n return state;\n}\n\nfunction createStatusGetter(\n map: MutableRefObject<Map<string, { node: PresentationHierarchyNode; status: VisibilityStatus; needsRefresh: boolean }>>,\n calculateVisibility: (node: PresentationHierarchyNode) => void,\n) {\n return (node: PresentationHierarchyNode): VisibilityStatus => {\n const status = map.current.get(node.id);\n if (status === undefined) {\n calculateVisibility(node);\n return { state: \"hidden\", isDisabled: true };\n }\n if (status.needsRefresh) {\n calculateVisibility(node);\n }\n\n return status.status;\n };\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PresentationHierarchyNode, PresentationTreeNode } from "@itwin/presentation-hierarchies-react";
|
|
2
|
+
interface UseMultiCheckboxHandlerProps {
|
|
3
|
+
rootNodes: PresentationTreeNode[] | undefined;
|
|
4
|
+
isNodeSelected: (nodeId: string) => boolean;
|
|
5
|
+
onClick: (node: PresentationHierarchyNode, checked: boolean) => void;
|
|
6
|
+
}
|
|
7
|
+
interface UseMultiCheckboxHandlerResult {
|
|
8
|
+
onCheckboxClicked: (node: PresentationHierarchyNode, checked: boolean) => void;
|
|
9
|
+
}
|
|
10
|
+
/** @internal */
|
|
11
|
+
export declare function useMultiCheckboxHandler({ rootNodes, isNodeSelected, onClick }: UseMultiCheckboxHandlerProps): UseMultiCheckboxHandlerResult;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=UseMultiCheckboxHandler.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
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.useMultiCheckboxHandler = void 0;
|
|
8
|
+
const presentation_hierarchies_react_1 = require("@itwin/presentation-hierarchies-react");
|
|
9
|
+
/** @internal */
|
|
10
|
+
function useMultiCheckboxHandler({ rootNodes, isNodeSelected, onClick }) {
|
|
11
|
+
const clickSelectedNodes = (nodes, checked) => {
|
|
12
|
+
nodes.forEach((node) => {
|
|
13
|
+
if (!(0, presentation_hierarchies_react_1.isPresentationHierarchyNode)(node)) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (isNodeSelected(node.id)) {
|
|
17
|
+
onClick(node, checked);
|
|
18
|
+
}
|
|
19
|
+
if (node.isExpanded && typeof node.children !== "boolean") {
|
|
20
|
+
clickSelectedNodes(node.children, checked);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
const onCheckboxClicked = (node, checked) => {
|
|
25
|
+
if (!isNodeSelected(node.id)) {
|
|
26
|
+
onClick(node, checked);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
rootNodes && clickSelectedNodes(rootNodes, checked);
|
|
30
|
+
};
|
|
31
|
+
return { onCheckboxClicked };
|
|
32
|
+
}
|
|
33
|
+
exports.useMultiCheckboxHandler = useMultiCheckboxHandler;
|
|
34
|
+
//# sourceMappingURL=UseMultiCheckboxHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseMultiCheckboxHandler.js","sourceRoot":"","sources":["../../../../../../src/components/trees/stateless/common/UseMultiCheckboxHandler.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAEhG,0FAAoF;AAcpF,gBAAgB;AAChB,SAAgB,uBAAuB,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAgC;IAC1G,MAAM,kBAAkB,GAAG,CAAC,KAAkC,EAAE,OAAgB,EAAE,EAAE;QAClF,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,IAAA,4DAA2B,EAAC,IAAI,CAAC,EAAE;gBACtC,OAAO;aACR;YACD,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAC3B,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aACxB;YACD,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;gBACzD,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;aAC5C;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,IAA+B,EAAE,OAAgB,EAAE,EAAE;QAC9E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC5B,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvB,OAAO;SACR;QACD,SAAS,IAAI,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC/B,CAAC;AAxBD,0DAwBC","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 { isPresentationHierarchyNode } from \"@itwin/presentation-hierarchies-react\";\n\nimport type { PresentationHierarchyNode, PresentationTreeNode } from \"@itwin/presentation-hierarchies-react\";\n\ninterface UseMultiCheckboxHandlerProps {\n rootNodes: PresentationTreeNode[] | undefined;\n isNodeSelected: (nodeId: string) => boolean;\n onClick: (node: PresentationHierarchyNode, checked: boolean) => void;\n}\n\ninterface UseMultiCheckboxHandlerResult {\n onCheckboxClicked: (node: PresentationHierarchyNode, checked: boolean) => void;\n}\n\n/** @internal */\nexport function useMultiCheckboxHandler({ rootNodes, isNodeSelected, onClick }: UseMultiCheckboxHandlerProps): UseMultiCheckboxHandlerResult {\n const clickSelectedNodes = (nodes: Array<PresentationTreeNode>, checked: boolean) => {\n nodes.forEach((node) => {\n if (!isPresentationHierarchyNode(node)) {\n return;\n }\n if (isNodeSelected(node.id)) {\n onClick(node, checked);\n }\n if (node.isExpanded && typeof node.children !== \"boolean\") {\n clickSelectedNodes(node.children, checked);\n }\n });\n };\n\n const onCheckboxClicked = (node: PresentationHierarchyNode, checked: boolean) => {\n if (!isNodeSelected(node.id)) {\n onClick(node, checked);\n return;\n }\n rootNodes && clickSelectedNodes(rootNodes, checked);\n };\n\n return { onCheckboxClicked };\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
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.createIdsSelector = void 0;
|
|
8
|
+
/** @internal */
|
|
9
|
+
function createIdsSelector(ids) {
|
|
10
|
+
// Note: `json_array` function only accepts up to 127 arguments and we may have more `ids` than that. As a workaround,
|
|
11
|
+
// we're creating an array of arrays
|
|
12
|
+
const slices = new Array();
|
|
13
|
+
for (let sliceStartIndex = 0; sliceStartIndex < ids.length; sliceStartIndex += 127) {
|
|
14
|
+
let sliceEndIndex = sliceStartIndex + 127;
|
|
15
|
+
if (sliceEndIndex > ids.length) {
|
|
16
|
+
sliceEndIndex = undefined;
|
|
17
|
+
}
|
|
18
|
+
slices.push(ids.slice(sliceStartIndex, sliceEndIndex));
|
|
19
|
+
}
|
|
20
|
+
return `json_array(${slices.map((sliceIds) => `json_array(${sliceIds.map((id) => `'${id}'`).join(",")})`).join(",")})`;
|
|
21
|
+
}
|
|
22
|
+
exports.createIdsSelector = createIdsSelector;
|
|
23
|
+
//# sourceMappingURL=Utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../../../../src/components/trees/stateless/common/Utils.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAIhG,gBAAgB;AAChB,SAAgB,iBAAiB,CAAC,GAAa;IAC7C,sHAAsH;IACtH,oCAAoC;IACpC,MAAM,MAAM,GAAG,IAAI,KAAK,EAAgB,CAAC;IACzC,KAAK,IAAI,eAAe,GAAG,CAAC,EAAE,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,IAAI,GAAG,EAAE;QAClF,IAAI,aAAa,GAAuB,eAAe,GAAG,GAAG,CAAC;QAC9D,IAAI,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE;YAC9B,aAAa,GAAG,SAAS,CAAC;SAC3B;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC;KACxD;IACD,OAAO,cAAc,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACzH,CAAC;AAZD,8CAYC","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 type { Id64String } from \"@itwin/core-bentley\";\n\n/** @internal */\nexport function createIdsSelector(ids: string[]): string {\n // Note: `json_array` function only accepts up to 127 arguments and we may have more `ids` than that. As a workaround,\n // we're creating an array of arrays\n const slices = new Array<Id64String[]>();\n for (let sliceStartIndex = 0; sliceStartIndex < ids.length; sliceStartIndex += 127) {\n let sliceEndIndex: number | undefined = sliceStartIndex + 127;\n if (sliceEndIndex > ids.length) {\n sliceEndIndex = undefined;\n }\n slices.push(ids.slice(sliceStartIndex, sliceEndIndex));\n }\n return `json_array(${slices.map((sliceIds) => `json_array(${sliceIds.map((id) => `'${id}'`).join(\",\")})`).join(\",\")})`;\n}\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Delayed = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
/*---------------------------------------------------------------------------------------------
|
|
6
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
7
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
8
|
+
*--------------------------------------------------------------------------------------------*/
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
/** @internal */
|
|
11
|
+
function Delayed({ show, children }) {
|
|
12
|
+
const [visible, setVisible] = (0, react_1.useState)(false);
|
|
13
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
14
|
+
if (!show) {
|
|
15
|
+
setVisible(false);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const timer = setTimeout(() => {
|
|
19
|
+
setVisible(show);
|
|
20
|
+
}, 250);
|
|
21
|
+
return () => {
|
|
22
|
+
clearTimeout(timer);
|
|
23
|
+
};
|
|
24
|
+
}, [show]);
|
|
25
|
+
if (!visible) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
|
|
29
|
+
}
|
|
30
|
+
exports.Delayed = Delayed;
|
|
31
|
+
//# sourceMappingURL=Delayed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Delayed.js","sourceRoot":"","sources":["../../../../../../../src/components/trees/stateless/common/components/Delayed.tsx"],"names":[],"mappings":";;;;AAAA;;;gGAGgG;AAEhG,iCAAkD;AAIlD,gBAAgB;AAChB,SAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAwC;IAC9E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IAE9C,IAAA,uBAAe,EAAC,GAAG,EAAE;QACnB,IAAI,CAAC,IAAI,EAAE;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,OAAO;SACR;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IAED,OAAO,2DAAG,QAAQ,GAAI,CAAC;AACzB,CAAC;AAtBD,0BAsBC","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 { useLayoutEffect, useState } from \"react\";\n\nimport type { PropsWithChildren } from \"react\";\n\n/** @internal */\nexport function Delayed({ show, children }: PropsWithChildren<{ show: boolean }>) {\n const [visible, setVisible] = useState(false);\n\n useLayoutEffect(() => {\n if (!show) {\n setVisible(false);\n return;\n }\n\n const timer = setTimeout(() => {\n setVisible(show);\n }, 250);\n return () => {\n clearTimeout(timer);\n };\n }, [show]);\n\n if (!visible) {\n return null;\n }\n\n return <>{children}</>;\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode } from "react";
|
|
2
|
+
import type { IModelConnection } from "@itwin/core-frontend";
|
|
3
|
+
import type { SchemaContext } from "@itwin/ecschema-metadata";
|
|
4
|
+
import type { PresentationHierarchyNode, useSelectionHandler, useTree } from "@itwin/presentation-hierarchies-react";
|
|
5
|
+
interface FilterableTreeOwnProps {
|
|
6
|
+
imodel: IModelConnection;
|
|
7
|
+
getSchemaContext: (imodel: IModelConnection) => SchemaContext;
|
|
8
|
+
height: number;
|
|
9
|
+
width: number;
|
|
10
|
+
treeName: string;
|
|
11
|
+
hierarchyLevelSizeLimit?: number;
|
|
12
|
+
getIcon?: (node: PresentationHierarchyNode) => ReactElement | undefined;
|
|
13
|
+
getSublabel?: (node: PresentationHierarchyNode) => ReactElement | undefined;
|
|
14
|
+
density?: "default" | "enlarged";
|
|
15
|
+
noDataMessage?: ReactNode;
|
|
16
|
+
}
|
|
17
|
+
type UseTreeProps = Parameters<typeof useTree>[0];
|
|
18
|
+
type UseSelectionHandlerProps = Parameters<typeof useSelectionHandler>[0];
|
|
19
|
+
type FilterableTreeProps = FilterableTreeOwnProps & Pick<UseTreeProps, "getFilteredPaths" | "getHierarchyDefinition" | "onPerformanceMeasured"> & Pick<Partial<UseSelectionHandlerProps>, "selectionMode">;
|
|
20
|
+
/** @internal */
|
|
21
|
+
export declare function FilterableTree({ imodel, getSchemaContext, hierarchyLevelSizeLimit, ...props }: FilterableTreeProps): JSX.Element | null;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=FilterableTree.d.ts.map
|