@itwin/tree-widget-react 4.0.0-alpha.2 → 4.0.0-alpha.20
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 +281 -1
- package/README.md +190 -63
- package/lib/esm/tree-widget-react/TreeWidget.d.ts +7 -4
- package/lib/esm/tree-widget-react/TreeWidget.js +32 -12
- package/lib/esm/tree-widget-react/TreeWidget.js.map +1 -1
- package/lib/esm/tree-widget-react/components/TreeWidgetComponentImpl.d.ts +7 -1
- package/lib/esm/tree-widget-react/components/TreeWidgetComponentImpl.js +22 -23
- package/lib/esm/tree-widget-react/components/TreeWidgetComponentImpl.js.map +1 -1
- package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js +4 -3
- package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js.map +1 -1
- package/lib/esm/tree-widget-react/components/tree-header/ErrorState.js +4 -3
- package/lib/esm/tree-widget-react/components/tree-header/ErrorState.js.map +1 -1
- package/lib/esm/tree-widget-react/components/tree-header/SearchBox.d.ts +1 -1
- package/lib/esm/tree-widget-react/components/tree-header/SearchBox.js +6 -6
- package/lib/esm/tree-widget-react/components/tree-header/SearchBox.js.map +1 -1
- package/lib/esm/tree-widget-react/components/tree-header/SelectableTree.css +3 -2
- package/lib/esm/tree-widget-react/components/tree-header/SelectableTree.d.ts +4 -4
- package/lib/esm/tree-widget-react/components/tree-header/SelectableTree.js +1 -1
- package/lib/esm/tree-widget-react/components/tree-header/SelectableTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.css +1 -0
- package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.d.ts +12 -5
- package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js +13 -9
- package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.d.ts +3 -3
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js +3 -2
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.d.ts +11 -7
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js +64 -14
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.d.ts +8 -6
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js +4 -4
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.d.ts +41 -8
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js +700 -125
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.d.ts +18 -7
- package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js +124 -83
- package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.d.ts +70 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.js +504 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNode.d.ts +41 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNode.js +50 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeNode.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseFilteredPaths.d.ts +27 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseFilteredPaths.js +136 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseFilteredPaths.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.d.ts +54 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.js +291 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHandler.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHelper.d.ts +64 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHelper.js +94 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/CategoriesTreeVisibilityHelper.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/FilteredTree.d.ts +36 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/FilteredTree.js +219 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/visibility/FilteredTree.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTree.d.ts +12 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTree.js +19 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTree.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeComponent.d.ts +30 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeComponent.js +47 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeComponent.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeDefinition.d.ts +45 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeDefinition.js +569 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeDefinition.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeIcon.d.ts +6 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeIcon.js +33 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/ClassificationsTreeIcon.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTree.d.ts +24 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTree.js +115 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTree.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTreeDefinition.d.ts +44 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTreeDefinition.js +61 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/UseClassificationsTreeDefinition.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.d.ts +50 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.js +364 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeIdsCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNode.d.ts +19 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNode.js +32 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/ClassificationsTreeNode.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/UseFilteredPaths.d.ts +20 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/UseFilteredPaths.js +53 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/UseFilteredPaths.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHandler.d.ts +37 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHandler.js +177 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHandler.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHelper.d.ts +55 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHelper.js +53 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/ClassificationsTreeVisibilityHelper.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/FilteredTree.d.ts +32 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/FilteredTree.js +168 -0
- package/lib/esm/tree-widget-react/components/trees/classifications-tree/internal/visibility/FilteredTree.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/CategoriesVisibilityUtils.d.ts +11 -23
- package/lib/esm/tree-widget-react/components/trees/common/CategoriesVisibilityUtils.js +22 -76
- package/lib/esm/tree-widget-react/components/trees/common/CategoriesVisibilityUtils.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/FocusedInstancesContext.d.ts +28 -4
- package/lib/esm/tree-widget-react/components/trees/common/FocusedInstancesContext.js +73 -2
- package/lib/esm/tree-widget-react/components/trees/common/FocusedInstancesContext.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/TreeErrors.js +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/TreeErrors.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/TreeWidgetViewport.d.ts +186 -0
- package/lib/esm/tree-widget-react/components/trees/common/TreeWidgetViewport.js +79 -0
- package/lib/esm/tree-widget-react/components/trees/common/TreeWidgetViewport.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.d.ts +15 -7
- package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.js +33 -22
- package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/UseTelemetryContext.d.ts +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/UseTelemetryContext.js +2 -1
- package/lib/esm/tree-widget-react/components/trees/common/UseTelemetryContext.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/Utils.d.ts +45 -23
- package/lib/esm/tree-widget-react/components/trees/common/Utils.js +110 -44
- package/lib/esm/tree-widget-react/components/trees/common/Utils.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/BaseTreeRenderer.d.ts +2 -3
- package/lib/esm/tree-widget-react/components/trees/common/components/BaseTreeRenderer.js +4 -5
- package/lib/esm/tree-widget-react/components/trees/common/components/BaseTreeRenderer.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/Delayed.d.ts +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/Delayed.js +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/Delayed.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/EmptyTree.css +25 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/EmptyTree.d.ts +27 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/EmptyTree.js +47 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/EmptyTree.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/ProgressOverlay.d.ts +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/ProgressOverlay.js +4 -3
- package/lib/esm/tree-widget-react/components/trees/common/components/ProgressOverlay.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/SkeletonTree.css +16 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/SkeletonTree.d.ts +7 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/SkeletonTree.js +19 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/SkeletonTree.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/Tree.css +11 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/Tree.d.ts +9 -12
- package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js +55 -38
- package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.css +2 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.d.ts +24 -8
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.js +41 -25
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.d.ts +6 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js +13 -4
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.d.ts +6 -5
- package/lib/esm/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.js +7 -7
- package/lib/esm/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTree.d.ts +5 -5
- package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTree.js +10 -6
- package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.d.ts +5 -3
- package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js +17 -15
- package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/internal/AlwaysAndNeverDrawnElementInfo.d.ts +74 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/AlwaysAndNeverDrawnElementInfo.js +207 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/ClassNameDefinitions.d.ts +43 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/ClassNameDefinitions.js +47 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/ClassNameDefinitions.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/ModelCategoryElementsCountCache.d.ts +12 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/ModelCategoryElementsCountCache.js +112 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/ModelCategoryElementsCountCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/{Rxjs.d.ts → internal/Rxjs.d.ts} +9 -2
- package/lib/esm/tree-widget-react/components/trees/common/{Rxjs.js → internal/Rxjs.js} +10 -2
- package/lib/esm/tree-widget-react/components/trees/common/internal/Rxjs.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/{Tooltip.d.ts → internal/Tooltip.d.ts} +4 -8
- package/lib/esm/tree-widget-react/components/trees/common/internal/Tooltip.js +18 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/Tooltip.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/Types.d.ts +14 -0
- package/lib/esm/tree-widget-react/components/{tree-header/SearchBox.css → trees/common/internal/Types.js} +2 -4
- package/lib/esm/tree-widget-react/components/trees/common/internal/Types.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseActiveTreeWidgetViewport.d.ts +6 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseActiveTreeWidgetViewport.js +24 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseActiveTreeWidgetViewport.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/{UseHierarchiesLocalization.d.ts → internal/UseHierarchiesLocalization.d.ts} +3 -2
- package/lib/esm/tree-widget-react/components/trees/common/{UseHierarchiesLocalization.js → internal/UseHierarchiesLocalization.js} +6 -2
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseHierarchiesLocalization.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/{UseHierarchyFiltering.d.ts → internal/UseHierarchyFiltering.d.ts} +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/{UseHierarchyFiltering.js → internal/UseHierarchyFiltering.js} +5 -4
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseHierarchyFiltering.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelAccess.d.ts +17 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelAccess.js +32 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelAccess.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/{UseIModelChangeListener.d.ts → internal/UseIModelChangeListener.d.ts} +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/{UseIModelChangeListener.js → internal/UseIModelChangeListener.js} +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelChangeListener.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.d.ts +70 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.js +172 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityChangeEventListener.d.ts +20 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityChangeEventListener.js +60 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityChangeEventListener.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.d.ts +39 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.js +160 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/useGuid.d.ts +3 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/useGuid.js +12 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/useGuid.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseCachedVisibility.d.ts +68 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseCachedVisibility.js +170 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseCachedVisibility.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseIdsCache.d.ts +20 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseIdsCache.js +46 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/useTreeHooks/UseIdsCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseFilteredTree.d.ts +91 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseFilteredTree.js +112 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseFilteredTree.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseVisibilityHelper.d.ts +236 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseVisibilityHelper.js +600 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/visibility/BaseVisibilityHelper.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/useGuid.d.ts +2 -0
- package/lib/esm/tree-widget-react/components/trees/common/useGuid.js +11 -0
- package/lib/esm/tree-widget-react/components/trees/common/useGuid.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +7 -2
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.js +29 -20
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +2 -6
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +2 -2
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +5 -6
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js +36 -21
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.d.ts +9 -2
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.js +48 -36
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +2 -6
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.js +2 -2
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +13 -4
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +80 -74
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +7 -10
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +45 -36
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/index.d.ts +16 -5
- package/lib/esm/tree-widget-react/components/trees/index.js +16 -4
- package/lib/esm/tree-widget-react/components/trees/index.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.d.ts +3 -3
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.js +3 -2
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.d.ts +3 -3
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js +34 -24
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.d.ts +14 -7
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js +11 -7
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.d.ts +24 -20
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js +193 -154
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.d.ts +60 -10
- package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js +97 -238
- package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +22 -25
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js +280 -298
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNode.d.ts +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeNode.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseFilteredPaths.d.ts +41 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseFilteredPaths.js +253 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseFilteredPaths.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/FilteredTree.d.ts +27 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/FilteredTree.js +148 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/FilteredTree.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.d.ts +76 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.js +269 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHandler.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHelper.d.ts +53 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHelper.js +71 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/visibility/ModelsTreeVisibilityHelper.js.map +1 -0
- package/lib/esm/tree-widget-react-internal.d.ts +12 -0
- package/lib/esm/tree-widget-react-internal.js +18 -0
- package/lib/esm/tree-widget-react-internal.js.map +1 -0
- package/lib/public/locales/en/TreeWidget.json +41 -54
- package/package.json +76 -79
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesVisibilityHandler.d.ts +0 -28
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesVisibilityHandler.js +0 -87
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/FocusedInstancesContextProvider.d.ts +0 -7
- package/lib/esm/tree-widget-react/components/trees/common/FocusedInstancesContextProvider.js +0 -66
- package/lib/esm/tree-widget-react/components/trees/common/FocusedInstancesContextProvider.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/Rxjs.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/Tooltip.js +0 -24
- package/lib/esm/tree-widget-react/components/trees/common/Tooltip.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/UseActiveViewport.d.ts +0 -7
- package/lib/esm/tree-widget-react/components/trees/common/UseActiveViewport.js +0 -21
- package/lib/esm/tree-widget-react/components/trees/common/UseActiveViewport.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/UseFiltering.d.ts +0 -11
- package/lib/esm/tree-widget-react/components/trees/common/UseFiltering.js +0 -24
- package/lib/esm/tree-widget-react/components/trees/common/UseFiltering.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/UseHierarchiesLocalization.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyFiltering.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/UseIModelChangeListener.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/UseNodeHighlighting.d.ts +0 -20
- package/lib/esm/tree-widget-react/components/trees/common/UseNodeHighlighting.js +0 -127
- package/lib/esm/tree-widget-react/components/trees/common/UseNodeHighlighting.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/EmptyTreeContent.d.ts +0 -7
- package/lib/esm/tree-widget-react/components/trees/common/components/EmptyTreeContent.js +0 -12
- package/lib/esm/tree-widget-react/components/trees/common/components/EmptyTreeContent.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/Utils.d.ts +0 -7
- package/lib/esm/tree-widget-react/components/trees/models-tree/Utils.js +0 -21
- package/lib/esm/tree-widget-react/components/trees/models-tree/Utils.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +0 -29
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +0 -138
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/FilteredTree.d.ts +0 -25
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/FilteredTree.js +0 -173
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/FilteredTree.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +0 -106
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +0 -663
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +0 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +0 -12
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/VisibilityChangeEventListener.js +0 -48
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Id64String } from "@itwin/core-bentley";
|
|
2
|
+
/** @internal */
|
|
3
|
+
export type SubjectId = Id64String;
|
|
4
|
+
/** @internal */
|
|
5
|
+
export type ModelId = Id64String;
|
|
6
|
+
/** @internal */
|
|
7
|
+
export type CategoryId = Id64String;
|
|
8
|
+
/** @internal */
|
|
9
|
+
export type SubCategoryId = Id64String;
|
|
10
|
+
/** @internal */
|
|
11
|
+
export type DefinitionContainerId = Id64String;
|
|
12
|
+
/** @internal */
|
|
13
|
+
export type ElementId = Id64String;
|
|
14
|
+
//# sourceMappingURL=Types.d.ts.map
|
|
@@ -2,7 +2,5 @@
|
|
|
2
2
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
|
|
6
|
-
.
|
|
7
|
-
margin-left: var(--iui-size-xs);
|
|
8
|
-
}
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=Types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Types.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/Types.ts"],"names":[],"mappings":"AAAA;;;gGAGgG","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 type SubjectId = Id64String;\n\n/** @internal */\nexport type ModelId = Id64String;\n\n/** @internal */\nexport type CategoryId = Id64String;\n\n/** @internal */\nexport type SubCategoryId = Id64String;\n\n/** @internal */\nexport type DefinitionContainerId = Id64String;\n\n/** @internal */\nexport type ElementId = Id64String;\n"]}
|
package/lib/esm/tree-widget-react/components/trees/common/internal/UseActiveTreeWidgetViewport.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { TreeWidgetViewport } from "../TreeWidgetViewport.js";
|
|
2
|
+
/** @internal */
|
|
3
|
+
export declare function useActiveTreeWidgetViewport({ treeWidgetViewport }: {
|
|
4
|
+
treeWidgetViewport?: TreeWidgetViewport;
|
|
5
|
+
}): TreeWidgetViewport | undefined;
|
|
6
|
+
//# sourceMappingURL=UseActiveTreeWidgetViewport.d.ts.map
|
package/lib/esm/tree-widget-react/components/trees/common/internal/UseActiveTreeWidgetViewport.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { useEffect, useState } from "react";
|
|
6
|
+
import { useActiveViewport } from "@itwin/appui-react";
|
|
7
|
+
import { createTreeWidgetViewport } from "../TreeWidgetViewport.js";
|
|
8
|
+
/** @internal */
|
|
9
|
+
export function useActiveTreeWidgetViewport({ treeWidgetViewport }) {
|
|
10
|
+
const viewport = useActiveViewport();
|
|
11
|
+
const [activeViewport, setActiveViewport] = useState(treeWidgetViewport ?? createTreeWidgetViewportInternal(viewport));
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (treeWidgetViewport) {
|
|
14
|
+
setActiveViewport(treeWidgetViewport);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
setActiveViewport(createTreeWidgetViewportInternal(viewport));
|
|
18
|
+
}, [treeWidgetViewport, viewport]);
|
|
19
|
+
return activeViewport;
|
|
20
|
+
}
|
|
21
|
+
function createTreeWidgetViewportInternal(viewport) {
|
|
22
|
+
return viewport ? createTreeWidgetViewport(viewport) : undefined;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=UseActiveTreeWidgetViewport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseActiveTreeWidgetViewport.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/UseActiveTreeWidgetViewport.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAKpE,gBAAgB;AAChB,MAAM,UAAU,2BAA2B,CAAC,EAAE,kBAAkB,EAA+C;IAC7G,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,kBAAkB,IAAI,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,kBAAkB,EAAE,CAAC;YACvB,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QACD,iBAAiB,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEnC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,gCAAgC,CAAC,QAA8B;IACtE,OAAO,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,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 { useEffect, useState } from \"react\";\nimport { useActiveViewport } from \"@itwin/appui-react\";\nimport { createTreeWidgetViewport } from \"../TreeWidgetViewport.js\";\n\nimport type { Viewport } from \"@itwin/core-frontend\";\nimport type { TreeWidgetViewport } from \"../TreeWidgetViewport.js\";\n\n/** @internal */\nexport function useActiveTreeWidgetViewport({ treeWidgetViewport }: { treeWidgetViewport?: TreeWidgetViewport }): TreeWidgetViewport | undefined {\n const viewport = useActiveViewport();\n const [activeViewport, setActiveViewport] = useState(treeWidgetViewport ?? createTreeWidgetViewportInternal(viewport));\n useEffect(() => {\n if (treeWidgetViewport) {\n setActiveViewport(treeWidgetViewport);\n return;\n }\n setActiveViewport(createTreeWidgetViewportInternal(viewport));\n }, [treeWidgetViewport, viewport]);\n\n return activeViewport;\n}\n\nfunction createTreeWidgetViewportInternal(viewport: Viewport | undefined): TreeWidgetViewport | undefined {\n return viewport ? createTreeWidgetViewport(viewport) : undefined;\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { StrataKitTreeRenderer, useIModelTree } from "@itwin/presentation-hierarchies-react";
|
|
2
2
|
type UseTreeLocalizedStrings = NonNullable<Parameters<typeof useIModelTree>[0]["localizedStrings"]>;
|
|
3
|
-
type TreeRendererLocalizedStrings = NonNullable<Parameters<typeof
|
|
3
|
+
type TreeRendererLocalizedStrings = NonNullable<Parameters<typeof StrataKitTreeRenderer>[0]["localizedStrings"]>;
|
|
4
4
|
type UseHierarchiesLocalizationResult = UseTreeLocalizedStrings & TreeRendererLocalizedStrings;
|
|
5
|
+
/** @internal */
|
|
5
6
|
export declare function useHierarchiesLocalization(): UseHierarchiesLocalizationResult;
|
|
6
7
|
export {};
|
|
7
8
|
//# sourceMappingURL=UseHierarchiesLocalization.d.ts.map
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { useMemo } from "react";
|
|
6
|
-
import { TreeWidget } from "
|
|
6
|
+
import { TreeWidget } from "../../../../TreeWidget.js";
|
|
7
|
+
/** @internal */
|
|
7
8
|
export function useHierarchiesLocalization() {
|
|
8
9
|
const stringValues = Object.values(getLocalizedStrings());
|
|
9
10
|
const localizedStrings = useMemo(getLocalizedStrings, stringValues);
|
|
@@ -17,10 +18,13 @@ function getLocalizedStrings() {
|
|
|
17
18
|
// strings for `TreeRenderer` and `TreeNodeRenderer`
|
|
18
19
|
loading: TreeWidget.translate("presentation-hierarchies.loading"),
|
|
19
20
|
filterHierarchyLevel: TreeWidget.translate("presentation-hierarchies.filterHierarchyLevel"),
|
|
21
|
+
filterHierarchyLevelActiveDescription: TreeWidget.translate("presentation-hierarchies.filterHierarchyLevelActiveDescription"),
|
|
22
|
+
noFilteredChildrenChangeFilter: TreeWidget.translate("presentation-hierarchies.noFilteredChildrenChangeFilter"),
|
|
23
|
+
failedToCreateHierarchy: TreeWidget.translate("presentation-hierarchies.failedToCreateHierarchy"),
|
|
20
24
|
clearHierarchyLevelFilter: TreeWidget.translate("presentation-hierarchies.clearHierarchyLevelFilter"),
|
|
21
25
|
noFilteredChildren: TreeWidget.translate("presentation-hierarchies.noFilteredChildren"),
|
|
22
26
|
resultLimitExceeded: TreeWidget.translate("presentation-hierarchies.resultLimitExceeded"),
|
|
23
|
-
|
|
27
|
+
issuesFound: TreeWidget.translate("presentation-hierarchies.issuesFound"),
|
|
24
28
|
increaseHierarchyLimit: TreeWidget.translate("presentation-hierarchies.increaseHierarchyLimit"),
|
|
25
29
|
increaseHierarchyLimitWithFiltering: TreeWidget.translate("presentation-hierarchies.increaseHierarchyLimitWithFiltering"),
|
|
26
30
|
retry: TreeWidget.translate("presentation-hierarchies.retry"),
|
package/lib/esm/tree-widget-react/components/trees/common/internal/UseHierarchiesLocalization.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseHierarchiesLocalization.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/UseHierarchiesLocalization.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AASvD,gBAAgB;AAChB,MAAM,UAAU,0BAA0B;IACxC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;IACpE,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO;QACL,iDAAiD;QACjD,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,sCAAsC,CAAC;QACzE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,gCAAgC,CAAC;QAE7D,oDAAoD;QACpD,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,kCAAkC,CAAC;QACjE,oBAAoB,EAAE,UAAU,CAAC,SAAS,CAAC,+CAA+C,CAAC;QAC3F,qCAAqC,EAAE,UAAU,CAAC,SAAS,CAAC,gEAAgE,CAAC;QAC7H,8BAA8B,EAAE,UAAU,CAAC,SAAS,CAAC,yDAAyD,CAAC;QAC/G,uBAAuB,EAAE,UAAU,CAAC,SAAS,CAAC,kDAAkD,CAAC;QACjG,yBAAyB,EAAE,UAAU,CAAC,SAAS,CAAC,oDAAoD,CAAC;QACrG,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,6CAA6C,CAAC;QACvF,mBAAmB,EAAE,UAAU,CAAC,SAAS,CAAC,8CAA8C,CAAC;QACzF,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,sCAAsC,CAAC;QACzE,sBAAsB,EAAE,UAAU,CAAC,SAAS,CAAC,iDAAiD,CAAC;QAC/F,mCAAmC,EAAE,UAAU,CAAC,SAAS,CAAC,8DAA8D,CAAC;QACzH,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,gCAAgC,CAAC;KAC9D,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.js\";\n\nimport type { StrataKitTreeRenderer, useIModelTree } from \"@itwin/presentation-hierarchies-react\";\n\ntype UseTreeLocalizedStrings = NonNullable<Parameters<typeof useIModelTree>[0][\"localizedStrings\"]>;\ntype TreeRendererLocalizedStrings = NonNullable<Parameters<typeof StrataKitTreeRenderer>[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 return localizedStrings;\n}\n\nfunction getLocalizedStrings(): UseHierarchiesLocalizationResult {\n return {\n // strings for the `useUnifiedSelectionTree` hook\n unspecified: TreeWidget.translate(\"presentation-hierarchies.unspecified\"),\n other: TreeWidget.translate(\"presentation-hierarchies.other\"),\n\n // strings for `TreeRenderer` and `TreeNodeRenderer`\n loading: TreeWidget.translate(\"presentation-hierarchies.loading\"),\n filterHierarchyLevel: TreeWidget.translate(\"presentation-hierarchies.filterHierarchyLevel\"),\n filterHierarchyLevelActiveDescription: TreeWidget.translate(\"presentation-hierarchies.filterHierarchyLevelActiveDescription\"),\n noFilteredChildrenChangeFilter: TreeWidget.translate(\"presentation-hierarchies.noFilteredChildrenChangeFilter\"),\n failedToCreateHierarchy: TreeWidget.translate(\"presentation-hierarchies.failedToCreateHierarchy\"),\n clearHierarchyLevelFilter: TreeWidget.translate(\"presentation-hierarchies.clearHierarchyLevelFilter\"),\n noFilteredChildren: TreeWidget.translate(\"presentation-hierarchies.noFilteredChildren\"),\n resultLimitExceeded: TreeWidget.translate(\"presentation-hierarchies.resultLimitExceeded\"),\n issuesFound: TreeWidget.translate(\"presentation-hierarchies.issuesFound\"),\n increaseHierarchyLimit: TreeWidget.translate(\"presentation-hierarchies.increaseHierarchyLimit\"),\n increaseHierarchyLimitWithFiltering: TreeWidget.translate(\"presentation-hierarchies.increaseHierarchyLimitWithFiltering\"),\n retry: TreeWidget.translate(\"presentation-hierarchies.retry\"),\n };\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import type { IModelConnection } from "@itwin/core-frontend";
|
|
3
2
|
import type { HierarchyLevelDetails } from "@itwin/presentation-hierarchies-react";
|
|
4
3
|
interface UseHierarchyLevelFilteringProps {
|
|
5
4
|
imodel: IModelConnection;
|
|
6
5
|
defaultHierarchyLevelSizeLimit: number;
|
|
7
6
|
}
|
|
7
|
+
/** @internal */
|
|
8
8
|
export declare function useHierarchyLevelFiltering({ imodel, defaultHierarchyLevelSizeLimit }: UseHierarchyLevelFilteringProps): {
|
|
9
9
|
onFilterClick: import("react").Dispatch<import("react").SetStateAction<HierarchyLevelDetails | undefined>>;
|
|
10
10
|
filteringDialog: import("react/jsx-runtime").JSX.Element;
|
|
@@ -6,14 +6,15 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
6
6
|
import { useCallback, useMemo, useState } from "react";
|
|
7
7
|
import { useDebouncedAsyncValue } from "@itwin/components-react";
|
|
8
8
|
import { CompressedId64Set } from "@itwin/core-bentley";
|
|
9
|
-
import { Spinner } from "@itwin/itwinui-react/bricks";
|
|
10
9
|
import { DefaultContentDisplayTypes, KeySet } from "@itwin/presentation-common";
|
|
11
10
|
import { PresentationInstanceFilter, PresentationInstanceFilterDialog } from "@itwin/presentation-components";
|
|
12
11
|
import { Presentation } from "@itwin/presentation-frontend";
|
|
13
12
|
import { GenericInstanceFilter, RowsLimitExceededError } from "@itwin/presentation-hierarchies";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
13
|
+
import { Spinner } from "@stratakit/bricks";
|
|
14
|
+
import { TreeWidget } from "../../../../TreeWidget.js";
|
|
15
|
+
import { Delayed } from "../components/Delayed.js";
|
|
16
|
+
import { useTelemetryContext } from "../UseTelemetryContext.js";
|
|
17
|
+
/** @internal */
|
|
17
18
|
export function useHierarchyLevelFiltering({ imodel, defaultHierarchyLevelSizeLimit }) {
|
|
18
19
|
const [filteringOptions, setFilteringOptions] = useState();
|
|
19
20
|
const { onFeatureUsed } = useTelemetryContext();
|
package/lib/esm/tree-widget-react/components/trees/common/internal/UseHierarchyFiltering.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseHierarchyFiltering.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/UseHierarchyFiltering.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAC9G,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAchE,gBAAgB;AAChB,MAAM,UAAU,0BAA0B,CAAC,EAAE,MAAM,EAAE,8BAA8B,EAAmC;IACpH,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,EAAyB,CAAC;IAClF,MAAM,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAEhD,MAAM,gBAAgB,GAAG,OAAO,CAA0E,GAAG,EAAE;QAC7G,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,CAAC,CAAC;YACrF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACrF,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,oBAAoB,CAAC;gBACtE,MAAM;gBACN,WAAW,EAAE;oBACX,EAAE,EAAE,oCAAoC;oBACxC,KAAK,EAAE;wBACL;4BACE,QAAQ,EAAE,SAAS;4BACnB,cAAc,EAAE;gCACd;oCACE,QAAQ,EAAE,uBAAuB;iCAClC;6BACF;yBACF;qBACF;iBACF;gBACD,WAAW,EAAE,0BAA0B,CAAC,YAAY;gBACpD,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YAED,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAC3C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IAE/B,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,MAAM,aAAa,GAAG,gBAAgB,EAAE,cAAc,CAAC;QACvD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,CAAC,UAAsB,EAAE,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAClF,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,MAAM,eAAe,GAAG,CACtB,KAAC,gCAAgC,IAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,CAAC,CAAC,gBAAgB,EAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YACD,aAAa,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;YACtG,gBAAgB,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1D,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC,EACD,OAAO,EAAE,GAAG,EAAE;YACZ,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC,EACD,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,gBAAgB,EAC/B,0BAA0B,EAAE,CAAC,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,CACL,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,8BAA8B,EAAE,8BAA8B,GAAI,CACpJ,CAAC;QACJ,CAAC,GACD,CACH,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,mBAAmB;QAClC,eAAe;KAChB,CAAC;AACJ,CAAC;AAQD,SAAS,sBAAsB,CAAC,EAAE,MAAM,EAAE,8BAA8B,EAAE,qBAAqB,EAA+B;IAC5H,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,sBAAsB,CAClD,WAAW,CAAC,KAAK,IAAI,EAAE;QACrB,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAC3C,qBAAqB,CAAC,uBAAuB,CAAC;gBAC5C,cAAc;gBACd,uBAAuB,EAAE,qBAAqB,CAAC,SAAS,IAAI,8BAA8B;aAC3F,CAAC,CACH,CAAC;YACF,OAAO,UAAU,CAAC,SAAS,CAAC,wCAAwC,EAAE;gBACpE,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;aAC9E,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,sBAAsB,EAAE,CAAC;gBACxC,OAAO,UAAU,CAAC,SAAS,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YACzI,CAAC;YACD,OAAO,UAAU,CAAC,SAAS,CAAC,yDAAyD,CAAC,CAAC;QACzF,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,8BAA8B,CAAC,CAAC,CACpE,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CACL,MAAC,OAAO,IAAC,IAAI,EAAE,IAAI,aAChB,UAAU,CAAC,SAAS,CAAC,wCAAwC,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,EACtF,KAAC,OAAO,IAAC,IAAI,EAAC,OAAO,GAAG,IAChB,CACX,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,CAAC,4BAAG,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,QAA4C;IAC3E,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,EAAE,CAAC;IACX,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,QAA4C;IAC7E,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;IACxD,IAAI,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC/C,IAAI,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,EAAE,CAAC;YACX,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,KAAK,EAAyD,CAAC;IACxF,KAAK,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC;QAC9C,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,iBAAiB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAsB,EAAE,MAA6B;IAC9E,MAAM,kBAAkB,GACtB,qBAAqB,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QACtF,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/E,OAAO;QACL,MAAM,EAAE,kBAAkB;QAC1B,WAAW,EAAE,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE,CAAC;aAC3C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,eAAe,CAAC;aACzH,MAAM,CAAC,CAAC,SAAS,EAA0B,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,UAA2C;IAClE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACtC,CAAC,CAAC;gBACE,kBAAkB,EAAE,EAAE;gBACtB,gBAAgB,EAAE,EAAE;gBACpB,kBAAkB,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;aACtC;YACH,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,OAAO,0BAA0B,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;AACvG,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 { useCallback, useMemo, useState } from \"react\";\nimport { useDebouncedAsyncValue } from \"@itwin/components-react\";\nimport { CompressedId64Set } from \"@itwin/core-bentley\";\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 { Spinner } from \"@stratakit/bricks\";\nimport { TreeWidget } from \"../../../../TreeWidget.js\";\nimport { Delayed } from \"../components/Delayed.js\";\nimport { useTelemetryContext } from \"../UseTelemetryContext.js\";\n\nimport type { Id64Array, Id64String } from \"@itwin/core-bentley\";\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 } from \"@itwin/presentation-hierarchies-react\";\nimport type { InstanceKey } from \"@itwin/presentation-shared\";\n\ninterface UseHierarchyLevelFilteringProps {\n imodel: IModelConnection;\n defaultHierarchyLevelSizeLimit: number;\n}\n\n/** @internal */\nexport function useHierarchyLevelFiltering({ imodel, defaultHierarchyLevelSizeLimit }: UseHierarchyLevelFilteringProps) {\n const [filteringOptions, setFilteringOptions] = useState<HierarchyLevelDetails>();\n const { onFeatureUsed } = useTelemetryContext();\n\n const propertiesSource = useMemo<(() => Promise<PresentationInstanceFilterPropertiesSource>) | undefined>(() => {\n if (!filteringOptions) {\n return undefined;\n }\n\n return async () => {\n const keySet = await collectInstanceKeys(filteringOptions.getInstanceKeysIterator());\n if (keySet.isEmpty) {\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: keySet,\n });\n if (!descriptor) {\n throw new Error(\"Failed to create content descriptor\");\n }\n\n return { descriptor, inputKeys: keySet };\n };\n }, [filteringOptions, imodel]);\n\n const getInitialFilter = useMemo(() => {\n const currentFilter = filteringOptions?.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 onFeatureUsed({ featureId: info ? \"hierarchy-level-filtering\" : undefined, reportInteraction: true });\n filteringOptions.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 filter={filter} hierarchyLevelDetails={filteringOptions} defaultHierarchyLevelSizeLimit={defaultHierarchyLevelSizeLimit} />\n );\n }}\n />\n );\n\n return {\n onFilterClick: setFilteringOptions,\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, inProgress } = useDebouncedAsyncValue(\n useCallback(async () => {\n const instanceFilter = toGenericFilter(filter);\n try {\n const instanceCount = await countInstanceKeys(\n hierarchyLevelDetails.getInstanceKeysIterator({\n instanceFilter,\n hierarchyLevelSizeLimit: hierarchyLevelDetails.sizeLimit ?? defaultHierarchyLevelSizeLimit,\n }),\n );\n return TreeWidget.translate(\"filteringDialog.matchingInstancesCount\", {\n instanceCount: instanceCount.toLocaleString(undefined, { useGrouping: true }),\n });\n } catch (e) {\n if (e instanceof RowsLimitExceededError) {\n return TreeWidget.translate(\"filteringDialog.filterExceedsLimit\", { limit: e.limit.toLocaleString(undefined, { useGrouping: true }) });\n }\n return TreeWidget.translate(\"filteringDialog.failedToCalculateMatchingInstancesCount\");\n }\n }, [filter, hierarchyLevelDetails, defaultHierarchyLevelSizeLimit]),\n );\n\n if (inProgress) {\n return (\n <Delayed show={true}>\n {TreeWidget.translate(\"filteringDialog.matchingInstancesCount\", { instanceCount: \"\" })}\n <Spinner size=\"small\" />\n </Delayed>\n );\n }\n\n return value ? <>{value}</> : null;\n}\n\nasync function countInstanceKeys(iterator: AsyncIterableIterator<InstanceKey>) {\n let result = 0;\n for await (const _ of iterator) {\n result++;\n }\n return result;\n}\n\nasync function collectInstanceKeys(iterator: AsyncIterableIterator<InstanceKey>) {\n const idsByClassName = new Map<Id64String, Id64Array>();\n for await (const { className, id } of iterator) {\n let idSet = idsByClassName.get(className);\n if (!idSet) {\n idSet = [];\n idsByClassName.set(className, idSet);\n }\n idSet.push(id);\n }\n\n const instanceKeys = new Array<[className: string, compressedIds: CompressedId64Set]>();\n for (const [className, ids] of idsByClassName) {\n instanceKeys.push([className.toLowerCase(), CompressedId64Set.sortAndCompress(ids)]);\n }\n return KeySet.fromJSON({ instanceKeys, nodeKeys: [] });\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,17 @@
|
|
|
1
|
+
import type { IModelConnection } from "@itwin/core-frontend";
|
|
2
|
+
import type { useIModelTree } from "@itwin/presentation-hierarchies-react";
|
|
3
|
+
import type { FunctionProps } from "../Utils.js";
|
|
4
|
+
type IModelAccess = FunctionProps<typeof useIModelTree>["imodelAccess"];
|
|
5
|
+
export interface UseIModelAccessProps {
|
|
6
|
+
imodel: IModelConnection;
|
|
7
|
+
treeName: string;
|
|
8
|
+
imodelAccess?: IModelAccess;
|
|
9
|
+
hierarchyLevelSizeLimit?: number;
|
|
10
|
+
}
|
|
11
|
+
/** @internal */
|
|
12
|
+
export declare function useIModelAccess({ imodel, treeName, imodelAccess: providedIModelAccess, hierarchyLevelSizeLimit }: UseIModelAccessProps): {
|
|
13
|
+
imodelAccess: IModelAccess;
|
|
14
|
+
currentHierarchyLevelSizeLimit: number;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=UseIModelAccess.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { useMemo } from "react";
|
|
6
|
+
import { createECSchemaProvider, createECSqlQueryExecutor } from "@itwin/presentation-core-interop";
|
|
7
|
+
import { createLimitingECSqlQueryExecutor } from "@itwin/presentation-hierarchies";
|
|
8
|
+
import { createCachingECClassHierarchyInspector } from "@itwin/presentation-shared";
|
|
9
|
+
import { TreeWidget } from "../../../../TreeWidget.js";
|
|
10
|
+
import { LOGGING_NAMESPACE } from "../Utils.js";
|
|
11
|
+
/** @internal */
|
|
12
|
+
export function useIModelAccess({ imodel, treeName, imodelAccess: providedIModelAccess, hierarchyLevelSizeLimit }) {
|
|
13
|
+
const defaultHierarchyLevelSizeLimit = hierarchyLevelSizeLimit ?? 1000;
|
|
14
|
+
const imodelAccess = useMemo(() => {
|
|
15
|
+
TreeWidget.logger.logInfo(`${LOGGING_NAMESPACE}.${treeName}`, `iModel changed, now using ${providedIModelAccess ? "provided imodel access" : `"${imodel.name}"`}`);
|
|
16
|
+
return providedIModelAccess ?? createIModelAccess({ imodel, hierarchyLevelSizeLimit: defaultHierarchyLevelSizeLimit });
|
|
17
|
+
}, [providedIModelAccess, imodel, treeName, defaultHierarchyLevelSizeLimit]);
|
|
18
|
+
return {
|
|
19
|
+
imodelAccess,
|
|
20
|
+
currentHierarchyLevelSizeLimit: defaultHierarchyLevelSizeLimit,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function createIModelAccess({ imodel, hierarchyLevelSizeLimit }) {
|
|
24
|
+
const schemaProvider = createECSchemaProvider(imodel.schemaContext);
|
|
25
|
+
return {
|
|
26
|
+
imodelKey: imodel.key,
|
|
27
|
+
...schemaProvider,
|
|
28
|
+
...createCachingECClassHierarchyInspector({ schemaProvider, cacheSize: 100 }),
|
|
29
|
+
...createLimitingECSqlQueryExecutor(createECSqlQueryExecutor(imodel), hierarchyLevelSizeLimit),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=UseIModelAccess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseIModelAccess.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/UseIModelAccess.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACpG,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,sCAAsC,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAehD,gBAAgB;AAChB,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAwB;IAIrI,MAAM,8BAA8B,GAAG,uBAAuB,IAAI,IAAI,CAAC;IACvE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,UAAU,CAAC,MAAM,CAAC,OAAO,CACvB,GAAG,iBAAiB,IAAI,QAAQ,EAAE,EAClC,6BAA6B,oBAAoB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,EAAE,CACpG,CAAC;QACF,OAAO,oBAAoB,IAAI,kBAAkB,CAAC,EAAE,MAAM,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,CAAC,CAAC;IACzH,CAAC,EAAE,CAAC,oBAAoB,EAAE,MAAM,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAE7E,OAAO;QACL,YAAY;QACZ,8BAA8B,EAAE,8BAA8B;KAC/D,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,MAAM,EAAE,uBAAuB,EAAiE;IAC5H,MAAM,cAAc,GAAG,sBAAsB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACpE,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,GAAG;QACrB,GAAG,cAAc;QACjB,GAAG,sCAAsC,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;QAC7E,GAAG,gCAAgC,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,uBAAuB,CAAC;KAC/F,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 { createECSchemaProvider, createECSqlQueryExecutor } from \"@itwin/presentation-core-interop\";\nimport { createLimitingECSqlQueryExecutor } from \"@itwin/presentation-hierarchies\";\nimport { createCachingECClassHierarchyInspector } from \"@itwin/presentation-shared\";\nimport { TreeWidget } from \"../../../../TreeWidget.js\";\nimport { LOGGING_NAMESPACE } from \"../Utils.js\";\n\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { useIModelTree } from \"@itwin/presentation-hierarchies-react\";\nimport type { FunctionProps } from \"../Utils.js\";\n\ntype IModelAccess = FunctionProps<typeof useIModelTree>[\"imodelAccess\"];\n\nexport interface UseIModelAccessProps {\n imodel: IModelConnection;\n treeName: string;\n imodelAccess?: IModelAccess;\n hierarchyLevelSizeLimit?: number;\n}\n\n/** @internal */\nexport function useIModelAccess({ imodel, treeName, imodelAccess: providedIModelAccess, hierarchyLevelSizeLimit }: UseIModelAccessProps): {\n imodelAccess: IModelAccess;\n currentHierarchyLevelSizeLimit: number;\n} {\n const defaultHierarchyLevelSizeLimit = hierarchyLevelSizeLimit ?? 1000;\n const imodelAccess = useMemo(() => {\n TreeWidget.logger.logInfo(\n `${LOGGING_NAMESPACE}.${treeName}`,\n `iModel changed, now using ${providedIModelAccess ? \"provided imodel access\" : `\"${imodel.name}\"`}`,\n );\n return providedIModelAccess ?? createIModelAccess({ imodel, hierarchyLevelSizeLimit: defaultHierarchyLevelSizeLimit });\n }, [providedIModelAccess, imodel, treeName, defaultHierarchyLevelSizeLimit]);\n\n return {\n imodelAccess,\n currentHierarchyLevelSizeLimit: defaultHierarchyLevelSizeLimit,\n };\n}\n\nfunction createIModelAccess({ imodel, hierarchyLevelSizeLimit }: { imodel: IModelConnection; hierarchyLevelSizeLimit: number }) {\n const schemaProvider = createECSchemaProvider(imodel.schemaContext);\n return {\n imodelKey: imodel.key,\n ...schemaProvider,\n ...createCachingECClassHierarchyInspector({ schemaProvider, cacheSize: 100 }),\n ...createLimitingECSqlQueryExecutor(createECSqlQueryExecutor(imodel), hierarchyLevelSizeLimit),\n };\n}\n"]}
|
|
@@ -3,6 +3,7 @@ interface UseIModelChangeListenerProps {
|
|
|
3
3
|
imodel: IModelConnection;
|
|
4
4
|
action: () => void;
|
|
5
5
|
}
|
|
6
|
+
/** @internal */
|
|
6
7
|
export declare function useIModelChangeListener({ imodel, action }: UseIModelChangeListenerProps): void;
|
|
7
8
|
export {};
|
|
8
9
|
//# sourceMappingURL=UseIModelChangeListener.d.ts.map
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
import { useEffect } from "react";
|
|
6
6
|
import { registerTxnListeners } from "@itwin/presentation-core-interop";
|
|
7
|
+
/** @internal */
|
|
7
8
|
export function useIModelChangeListener({ imodel, action }) {
|
|
8
9
|
useEffect(() => {
|
|
9
10
|
if (!imodel.isBriefcaseConnection()) {
|
package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelChangeListener.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseIModelChangeListener.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/UseIModelChangeListener.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AASxE,gBAAgB;AAChB,MAAM,UAAU,uBAAuB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAgC;IACtF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QACD,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACvB,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 { useEffect } from \"react\";\nimport { registerTxnListeners } from \"@itwin/presentation-core-interop\";\n\nimport type { IModelConnection } from \"@itwin/core-frontend\";\n\ninterface UseIModelChangeListenerProps {\n imodel: IModelConnection;\n action: () => void;\n}\n\n/** @internal */\nexport function useIModelChangeListener({ imodel, action }: UseIModelChangeListenerProps) {\n useEffect(() => {\n if (!imodel.isBriefcaseConnection()) {\n return;\n }\n return registerTxnListeners(imodel.txns, action);\n }, [imodel, action]);\n}\n"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ProcessedHierarchyNode } from "@itwin/presentation-hierarchies";
|
|
2
|
+
import type { Observable } from "rxjs";
|
|
3
|
+
import type { Id64Arg, Id64Array, Id64String } from "@itwin/core-bentley";
|
|
4
|
+
/** @internal */
|
|
5
|
+
export declare function setDifference<T>(lhs: Readonly<Iterable<T>>, rhs: ReadonlySet<T>): Set<T>;
|
|
6
|
+
/** @internal */
|
|
7
|
+
export declare function setIntersection<T>(lhs: Readonly<Iterable<T>>, rhs: ReadonlySet<T>): Set<T>;
|
|
8
|
+
/** @internal */
|
|
9
|
+
export declare function getOptimalBatchSize({ totalSize, maximumBatchSize }: {
|
|
10
|
+
totalSize: number;
|
|
11
|
+
maximumBatchSize: number;
|
|
12
|
+
}): number;
|
|
13
|
+
/** @internal */
|
|
14
|
+
export declare function getDistinctMapValues(map: Map<any, Array<string> | Set<string>>): Set<string>;
|
|
15
|
+
/** @internal */
|
|
16
|
+
export declare function createIdsSelector(ids: Id64Array): string;
|
|
17
|
+
/** @internal */
|
|
18
|
+
export declare function parseIdsSelectorResult(selectorResult: any): Id64Array;
|
|
19
|
+
/** @internal */
|
|
20
|
+
export declare function pushToMap<TKey, TValue>(targetMap: Map<TKey, Set<TValue>>, key: TKey, value: TValue): void;
|
|
21
|
+
/** @internal */
|
|
22
|
+
export declare function useLatest<T>(value: T): import("react").MutableRefObject<T>;
|
|
23
|
+
/** @internal */
|
|
24
|
+
export declare function releaseMainThreadOnItemsCount<T>(elementCount: number): (obs: Observable<T>) => Observable<T>;
|
|
25
|
+
/** @internal */
|
|
26
|
+
export declare function getClassesByView(viewType: "2d" | "3d"): {
|
|
27
|
+
readonly categoryClass: "BisCore.DrawingCategory";
|
|
28
|
+
readonly elementClass: "BisCore.GeometricElement2d";
|
|
29
|
+
readonly modelClass: "BisCore.GeometricModel2d";
|
|
30
|
+
} | {
|
|
31
|
+
readonly categoryClass: "BisCore.SpatialCategory";
|
|
32
|
+
readonly elementClass: "BisCore.GeometricElement3d";
|
|
33
|
+
readonly modelClass: "BisCore.GeometricModel3d";
|
|
34
|
+
};
|
|
35
|
+
/** @internal */
|
|
36
|
+
export declare function joinId64Arg(arg: Id64Arg, separator: string): string;
|
|
37
|
+
/** @internal */
|
|
38
|
+
export declare function getSetFromId64Arg(arg: Id64Arg): Set<Id64String>;
|
|
39
|
+
/** @internal */
|
|
40
|
+
export type ChildrenTree<T extends object = {}> = Map<string, T & {
|
|
41
|
+
children?: ChildrenTree<T>;
|
|
42
|
+
}>;
|
|
43
|
+
/** @internal */
|
|
44
|
+
export declare function getIdsFromChildrenTree<T extends object = {}>({ tree, predicate, }: {
|
|
45
|
+
tree: ChildrenTree<T>;
|
|
46
|
+
predicate?: (props: {
|
|
47
|
+
depth: number;
|
|
48
|
+
treeEntry: T;
|
|
49
|
+
}) => boolean;
|
|
50
|
+
}): Set<string>;
|
|
51
|
+
/**
|
|
52
|
+
* Updates children tree with provided `idsToAdd`:
|
|
53
|
+
* - All Ids are added (if they are not yet added) to children tree in the same order they appear in `idsToAdd` array.
|
|
54
|
+
* - `T` is assigned to each entry using the `additionalPropsGetter` function.
|
|
55
|
+
* @internal
|
|
56
|
+
*/
|
|
57
|
+
export declare function updateChildrenTree<T extends object = {}>({ tree, additionalPropsGetter, idsToAdd, }: {
|
|
58
|
+
tree: ChildrenTree<T>;
|
|
59
|
+
idsToAdd: Id64Array;
|
|
60
|
+
additionalPropsGetter: (id: Id64String, additionalProps?: T) => T;
|
|
61
|
+
}): void;
|
|
62
|
+
/** @internal */
|
|
63
|
+
export declare function groupingNodeHasFilterTargets(children: ProcessedHierarchyNode[]): {
|
|
64
|
+
hasFilterTargetAncestor: true;
|
|
65
|
+
hasDirectNonFilteredTargets: undefined;
|
|
66
|
+
} | {
|
|
67
|
+
hasFilterTargetAncestor: false;
|
|
68
|
+
hasDirectNonFilteredTargets: boolean;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=Utils.d.ts.map
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { useEffect, useRef } from "react";
|
|
6
|
+
import { bufferCount, concatAll, concatMap, delay, of } from "rxjs";
|
|
7
|
+
import { assert, Id64 } from "@itwin/core-bentley";
|
|
8
|
+
import { ProcessedHierarchyNode } from "@itwin/presentation-hierarchies";
|
|
9
|
+
import { CLASS_NAME_DrawingCategory, CLASS_NAME_GeometricElement2d, CLASS_NAME_GeometricElement3d, CLASS_NAME_GeometricModel2d, CLASS_NAME_GeometricModel3d, CLASS_NAME_SpatialCategory, } from "./ClassNameDefinitions.js";
|
|
10
|
+
/** @internal */
|
|
11
|
+
export function setDifference(lhs, rhs) {
|
|
12
|
+
const result = new Set();
|
|
13
|
+
for (const x of lhs) {
|
|
14
|
+
if (!rhs.has(x)) {
|
|
15
|
+
result.add(x);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
/** @internal */
|
|
21
|
+
export function setIntersection(lhs, rhs) {
|
|
22
|
+
const result = new Set();
|
|
23
|
+
for (const x of lhs) {
|
|
24
|
+
if (rhs.has(x)) {
|
|
25
|
+
result.add(x);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
/** @internal */
|
|
31
|
+
export function getOptimalBatchSize({ totalSize, maximumBatchSize }) {
|
|
32
|
+
return Math.ceil(totalSize / Math.ceil(totalSize / maximumBatchSize));
|
|
33
|
+
}
|
|
34
|
+
/** @internal */
|
|
35
|
+
export function getDistinctMapValues(map) {
|
|
36
|
+
const result = new Set();
|
|
37
|
+
for (const values of map.values()) {
|
|
38
|
+
values.forEach((value) => result.add(value));
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
/** @internal */
|
|
43
|
+
export function createIdsSelector(ids) {
|
|
44
|
+
// Note: `json_array` function only accepts up to 127 arguments and we may have more `ids` than that. As a workaround,
|
|
45
|
+
// we're creating an array of arrays
|
|
46
|
+
const slices = new Array();
|
|
47
|
+
for (let sliceStartIndex = 0; sliceStartIndex < ids.length; sliceStartIndex += 127) {
|
|
48
|
+
let sliceEndIndex = sliceStartIndex + 127;
|
|
49
|
+
if (sliceEndIndex > ids.length) {
|
|
50
|
+
sliceEndIndex = undefined;
|
|
51
|
+
}
|
|
52
|
+
slices.push(ids.slice(sliceStartIndex, sliceEndIndex));
|
|
53
|
+
}
|
|
54
|
+
return `json_array(${slices.map((sliceIds) => `json_array(${sliceIds.map((id) => `'${id}'`).join(",")})`).join(",")})`;
|
|
55
|
+
}
|
|
56
|
+
/** @internal */
|
|
57
|
+
export function parseIdsSelectorResult(selectorResult) {
|
|
58
|
+
if (!Array.isArray(selectorResult)) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
return selectorResult.reduce((arr, ids) => [...arr, ...(Array.isArray(ids) ? ids : [ids])], new Array());
|
|
62
|
+
}
|
|
63
|
+
/** @internal */
|
|
64
|
+
export function pushToMap(targetMap, key, value) {
|
|
65
|
+
let set = targetMap.get(key);
|
|
66
|
+
if (!set) {
|
|
67
|
+
set = new Set();
|
|
68
|
+
targetMap.set(key, set);
|
|
69
|
+
}
|
|
70
|
+
set.add(value);
|
|
71
|
+
}
|
|
72
|
+
/** @internal */
|
|
73
|
+
export function useLatest(value) {
|
|
74
|
+
const ref = useRef(value);
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
ref.current = value;
|
|
77
|
+
}, [value]);
|
|
78
|
+
return ref;
|
|
79
|
+
}
|
|
80
|
+
/** @internal */
|
|
81
|
+
export function releaseMainThreadOnItemsCount(elementCount) {
|
|
82
|
+
return (obs) => {
|
|
83
|
+
return obs.pipe(bufferCount(elementCount), concatMap((buff, i) => {
|
|
84
|
+
const out = of(buff);
|
|
85
|
+
if (i === 0 && buff.length < elementCount) {
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
return out.pipe(delay(0));
|
|
89
|
+
}), concatAll());
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/** @internal */
|
|
93
|
+
export function getClassesByView(viewType) {
|
|
94
|
+
return viewType === "2d"
|
|
95
|
+
? { categoryClass: CLASS_NAME_DrawingCategory, elementClass: CLASS_NAME_GeometricElement2d, modelClass: CLASS_NAME_GeometricModel2d }
|
|
96
|
+
: { categoryClass: CLASS_NAME_SpatialCategory, elementClass: CLASS_NAME_GeometricElement3d, modelClass: CLASS_NAME_GeometricModel3d };
|
|
97
|
+
}
|
|
98
|
+
/** @internal */
|
|
99
|
+
export function joinId64Arg(arg, separator) {
|
|
100
|
+
let joined = "";
|
|
101
|
+
for (const argItem of Id64.iterable(arg)) {
|
|
102
|
+
if (joined !== "") {
|
|
103
|
+
joined += separator;
|
|
104
|
+
}
|
|
105
|
+
joined += argItem;
|
|
106
|
+
}
|
|
107
|
+
return joined;
|
|
108
|
+
}
|
|
109
|
+
/** @internal */
|
|
110
|
+
export function getSetFromId64Arg(arg) {
|
|
111
|
+
return typeof arg === "string" ? new Set([arg]) : Array.isArray(arg) ? new Set(arg) : arg;
|
|
112
|
+
}
|
|
113
|
+
/** @internal */
|
|
114
|
+
export function getIdsFromChildrenTree({ tree, predicate, }) {
|
|
115
|
+
function getIdsInternal({ childrenTree, depth }) {
|
|
116
|
+
const result = new Set();
|
|
117
|
+
childrenTree.forEach((entry, id) => {
|
|
118
|
+
if (!predicate || predicate({ depth, treeEntry: entry })) {
|
|
119
|
+
result.add(id);
|
|
120
|
+
}
|
|
121
|
+
if (entry.children) {
|
|
122
|
+
const childrenIds = getIdsInternal({ childrenTree: entry.children, depth: depth + 1 });
|
|
123
|
+
childrenIds.forEach((childId) => result.add(childId));
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
return getIdsInternal({ childrenTree: tree, depth: 0 });
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Updates children tree with provided `idsToAdd`:
|
|
132
|
+
* - All Ids are added (if they are not yet added) to children tree in the same order they appear in `idsToAdd` array.
|
|
133
|
+
* - `T` is assigned to each entry using the `additionalPropsGetter` function.
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
export function updateChildrenTree({ tree, additionalPropsGetter, idsToAdd, }) {
|
|
137
|
+
let currentTree = tree;
|
|
138
|
+
for (let i = 0; i < idsToAdd.length; ++i) {
|
|
139
|
+
const id = idsToAdd[i];
|
|
140
|
+
let entry = currentTree.get(id);
|
|
141
|
+
entry = {
|
|
142
|
+
// Whoever calls this function knows how to assign the `T` to entry.
|
|
143
|
+
...additionalPropsGetter(id, entry),
|
|
144
|
+
// If children already exists, we reuse it.
|
|
145
|
+
// If children do not exist and there are still ids left in the `idsToAdd` array, create a new Map, it will have the next id.
|
|
146
|
+
...(entry?.children || i + 1 < idsToAdd.length ? { children: entry?.children ?? new Map() } : {}),
|
|
147
|
+
};
|
|
148
|
+
// Always update the set with updated entry.
|
|
149
|
+
currentTree.set(id, entry);
|
|
150
|
+
// This will only happen if it's the last id in `idsToAdd` array. In such case loop can be exited.
|
|
151
|
+
if (!entry.children) {
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
currentTree = entry.children;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/** @internal */
|
|
158
|
+
export function groupingNodeHasFilterTargets(children) {
|
|
159
|
+
for (const child of children) {
|
|
160
|
+
assert(!ProcessedHierarchyNode.isGroupingNode(child), "Expected only non-grouping nodes as children");
|
|
161
|
+
if (child.filtering) {
|
|
162
|
+
if (child.filtering.hasFilterTargetAncestor) {
|
|
163
|
+
return { hasFilterTargetAncestor: true, hasDirectNonFilteredTargets: undefined };
|
|
164
|
+
}
|
|
165
|
+
if (!child.filtering.isFilterTarget) {
|
|
166
|
+
return { hasFilterTargetAncestor: false, hasDirectNonFilteredTargets: true };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return { hasFilterTargetAncestor: false, hasDirectNonFilteredTargets: false };
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=Utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../../../../../src/tree-widget-react/components/trees/common/internal/Utils.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 } from \"react\";\nimport { bufferCount, concatAll, concatMap, delay, of } from \"rxjs\";\nimport { assert, Id64 } from \"@itwin/core-bentley\";\nimport { ProcessedHierarchyNode } from \"@itwin/presentation-hierarchies\";\nimport {\n CLASS_NAME_DrawingCategory,\n CLASS_NAME_GeometricElement2d,\n CLASS_NAME_GeometricElement3d,\n CLASS_NAME_GeometricModel2d,\n CLASS_NAME_GeometricModel3d,\n CLASS_NAME_SpatialCategory,\n} from \"./ClassNameDefinitions.js\";\n\nimport type { Observable } from \"rxjs\";\nimport type { Id64Arg, Id64Array, Id64String } from \"@itwin/core-bentley\";\n\n/** @internal */\nexport function setDifference<T>(lhs: Readonly<Iterable<T>>, rhs: ReadonlySet<T>): Set<T> {\n const result = new Set<T>();\n for (const x of lhs) {\n if (!rhs.has(x)) {\n result.add(x);\n }\n }\n return result;\n}\n\n/** @internal */\nexport function setIntersection<T>(lhs: Readonly<Iterable<T>>, rhs: ReadonlySet<T>): Set<T> {\n const result = new Set<T>();\n for (const x of lhs) {\n if (rhs.has(x)) {\n result.add(x);\n }\n }\n return result;\n}\n\n/** @internal */\nexport function getOptimalBatchSize({ totalSize, maximumBatchSize }: { totalSize: number; maximumBatchSize: number }): number {\n return Math.ceil(totalSize / Math.ceil(totalSize / maximumBatchSize));\n}\n\n/** @internal */\nexport function getDistinctMapValues(map: Map<any, Array<string> | Set<string>>): Set<string> {\n const result = new Set<string>();\n for (const values of map.values()) {\n values.forEach((value) => result.add(value));\n }\n return result;\n}\n\n/** @internal */\nexport function createIdsSelector(ids: Id64Array): 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\n/** @internal */\nexport function parseIdsSelectorResult(selectorResult: any): Id64Array {\n if (!Array.isArray(selectorResult)) {\n return [];\n }\n return selectorResult.reduce((arr, ids: Id64String | Id64String[]) => [...arr, ...(Array.isArray(ids) ? ids : [ids])], new Array<Id64String>());\n}\n\n/** @internal */\nexport function pushToMap<TKey, TValue>(targetMap: Map<TKey, Set<TValue>>, key: TKey, value: TValue) {\n let set = targetMap.get(key);\n if (!set) {\n set = new Set();\n targetMap.set(key, set);\n }\n set.add(value);\n}\n\n/** @internal */\nexport function useLatest<T>(value: T) {\n const ref = useRef(value);\n useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref;\n}\n\n/** @internal */\nexport function releaseMainThreadOnItemsCount<T>(elementCount: number) {\n return (obs: Observable<T>): Observable<T> => {\n return obs.pipe(\n bufferCount(elementCount),\n concatMap((buff, i) => {\n const out = of(buff);\n if (i === 0 && buff.length < elementCount) {\n return out;\n }\n return out.pipe(delay(0));\n }),\n concatAll(),\n );\n };\n}\n\n/** @internal */\nexport function getClassesByView(viewType: \"2d\" | \"3d\") {\n return viewType === \"2d\"\n ? ({ categoryClass: CLASS_NAME_DrawingCategory, elementClass: CLASS_NAME_GeometricElement2d, modelClass: CLASS_NAME_GeometricModel2d } as const)\n : ({ categoryClass: CLASS_NAME_SpatialCategory, elementClass: CLASS_NAME_GeometricElement3d, modelClass: CLASS_NAME_GeometricModel3d } as const);\n}\n\n/** @internal */\nexport function joinId64Arg(arg: Id64Arg, separator: string): string {\n let joined = \"\";\n for (const argItem of Id64.iterable(arg)) {\n if (joined !== \"\") {\n joined += separator;\n }\n\n joined += argItem;\n }\n return joined;\n}\n\n/** @internal */\nexport function getSetFromId64Arg(arg: Id64Arg): Set<Id64String> {\n return typeof arg === \"string\" ? new Set([arg]) : Array.isArray(arg) ? new Set(arg) : arg;\n}\n\n/** @internal */\nexport type ChildrenTree<T extends object = {}> = Map<string, T & { children?: ChildrenTree<T> }>;\n\n/** @internal */\nexport function getIdsFromChildrenTree<T extends object = {}>({\n tree,\n predicate,\n}: {\n tree: ChildrenTree<T>;\n predicate?: (props: { depth: number; treeEntry: T }) => boolean;\n}): Set<string> {\n function getIdsInternal({ childrenTree, depth }: { childrenTree: ChildrenTree<T>; depth: number }): Set<string> {\n const result = new Set<string>();\n childrenTree.forEach((entry, id) => {\n if (!predicate || predicate({ depth, treeEntry: entry })) {\n result.add(id);\n }\n if (entry.children) {\n const childrenIds = getIdsInternal({ childrenTree: entry.children, depth: depth + 1 });\n childrenIds.forEach((childId) => result.add(childId));\n }\n });\n return result;\n }\n return getIdsInternal({ childrenTree: tree, depth: 0 });\n}\n\n/**\n * Updates children tree with provided `idsToAdd`:\n * - All Ids are added (if they are not yet added) to children tree in the same order they appear in `idsToAdd` array.\n * - `T` is assigned to each entry using the `additionalPropsGetter` function.\n * @internal\n */\nexport function updateChildrenTree<T extends object = {}>({\n tree,\n additionalPropsGetter,\n idsToAdd,\n}: {\n tree: ChildrenTree<T>;\n idsToAdd: Id64Array;\n additionalPropsGetter: (id: Id64String, additionalProps?: T) => T;\n}) {\n let currentTree: ChildrenTree<T> = tree;\n for (let i = 0; i < idsToAdd.length; ++i) {\n const id = idsToAdd[i];\n let entry = currentTree.get(id);\n entry = {\n // Whoever calls this function knows how to assign the `T` to entry.\n ...additionalPropsGetter(id, entry),\n // If children already exists, we reuse it.\n // If children do not exist and there are still ids left in the `idsToAdd` array, create a new Map, it will have the next id.\n ...(entry?.children || i + 1 < idsToAdd.length ? { children: entry?.children ?? new Map() } : {}),\n };\n // Always update the set with updated entry.\n currentTree.set(id, entry);\n // This will only happen if it's the last id in `idsToAdd` array. In such case loop can be exited.\n if (!entry.children) {\n break;\n }\n currentTree = entry.children;\n }\n}\n\n/** @internal */\nexport function groupingNodeHasFilterTargets(children: ProcessedHierarchyNode[]):\n | {\n hasFilterTargetAncestor: true;\n hasDirectNonFilteredTargets: undefined;\n }\n | {\n hasFilterTargetAncestor: false;\n hasDirectNonFilteredTargets: boolean;\n } {\n for (const child of children) {\n assert(!ProcessedHierarchyNode.isGroupingNode(child), \"Expected only non-grouping nodes as children\");\n if (child.filtering) {\n if (child.filtering.hasFilterTargetAncestor) {\n return { hasFilterTargetAncestor: true, hasDirectNonFilteredTargets: undefined };\n }\n if (!child.filtering.isFilterTarget) {\n return { hasFilterTargetAncestor: false, hasDirectNonFilteredTargets: true };\n }\n }\n }\n\n return { hasFilterTargetAncestor: false, hasDirectNonFilteredTargets: false };\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BeEvent } from "@itwin/core-bentley";
|
|
2
|
+
import type { TreeWidgetViewport } from "../TreeWidgetViewport.js";
|
|
3
|
+
/** @internal */
|
|
4
|
+
export interface IVisibilityChangeEventListener extends Disposable {
|
|
5
|
+
onVisibilityChange: BeEvent<() => void>;
|
|
6
|
+
suppressChangeEvents(): void;
|
|
7
|
+
resumeChangeEvents(): void;
|
|
8
|
+
isVisibilityChangePending: () => boolean;
|
|
9
|
+
}
|
|
10
|
+
/** @internal */
|
|
11
|
+
export declare function createVisibilityChangeEventListener(props: {
|
|
12
|
+
viewport: TreeWidgetViewport;
|
|
13
|
+
listeners: {
|
|
14
|
+
elements?: boolean;
|
|
15
|
+
categories?: boolean;
|
|
16
|
+
displayStyle?: boolean;
|
|
17
|
+
models?: boolean;
|
|
18
|
+
};
|
|
19
|
+
}): IVisibilityChangeEventListener;
|
|
20
|
+
//# sourceMappingURL=VisibilityChangeEventListener.d.ts.map
|