@itwin/tree-widget-react 4.0.0-alpha.0 → 4.0.0-alpha.10
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 +84 -1
- package/README.md +3 -4
- package/lib/esm/tree-widget-react/TreeWidget.d.ts +7 -2
- package/lib/esm/tree-widget-react/TreeWidget.js +22 -2
- package/lib/esm/tree-widget-react/TreeWidget.js.map +1 -1
- package/lib/esm/tree-widget-react/components/{SelectableTree.scss → TreeWidgetComponentImpl.css} +0 -1
- package/lib/esm/tree-widget-react/components/{SelectableTree.d.ts → TreeWidgetComponentImpl.d.ts} +18 -14
- package/lib/esm/tree-widget-react/components/{SelectableTree.js → TreeWidgetComponentImpl.js} +28 -28
- package/lib/esm/tree-widget-react/components/TreeWidgetComponentImpl.js.map +1 -0
- package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.d.ts +4 -6
- package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js +9 -10
- package/lib/esm/tree-widget-react/components/TreeWidgetUiItemsProvider.js.map +1 -1
- package/lib/esm/tree-widget-react/components/tree-header/ErrorState.d.ts +4 -0
- package/lib/esm/tree-widget-react/components/tree-header/ErrorState.js +14 -0
- package/lib/esm/tree-widget-react/components/tree-header/ErrorState.js.map +1 -0
- package/lib/esm/tree-widget-react/components/tree-header/SearchBox.d.ts +11 -0
- package/lib/esm/tree-widget-react/components/tree-header/SearchBox.js +33 -0
- package/lib/esm/tree-widget-react/components/tree-header/SearchBox.js.map +1 -0
- package/lib/esm/tree-widget-react/components/tree-header/{TreeWithHeader.scss → SelectableTree.css} +9 -8
- package/lib/esm/tree-widget-react/components/tree-header/SelectableTree.d.ts +16 -0
- package/lib/esm/tree-widget-react/components/tree-header/SelectableTree.js +14 -0
- package/lib/esm/tree-widget-react/components/tree-header/SelectableTree.js.map +1 -0
- package/lib/esm/tree-widget-react/components/{TreeSelector.scss → tree-header/WidgetHeader.css} +12 -5
- package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.d.ts +36 -0
- package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js +31 -0
- package/lib/esm/tree-widget-react/components/tree-header/WidgetHeader.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.d.ts +3 -2
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTree.js +4 -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 -5
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeButtons.js +60 -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 +1 -6
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeComponent.js +4 -10
- 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 +39 -4
- package/lib/esm/tree-widget-react/components/trees/categories-tree/CategoriesTreeDefinition.js +658 -114
- 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 +19 -6
- package/lib/esm/tree-widget-react/components/trees/categories-tree/UseCategoriesTree.js +83 -82
- 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 +68 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeIdsCache.js +442 -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/CategoriesTreeVisibilityHandler.d.ts +23 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeVisibilityHandler.js +708 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/CategoriesTreeVisibilityHandler.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/FilteredTree.d.ts +39 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/FilteredTree.js +221 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/FilteredTree.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseFilteredPaths.d.ts +25 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseFilteredPaths.js +133 -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/UseIdsCache.d.ts +8 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseIdsCache.js +48 -0
- package/lib/esm/tree-widget-react/components/trees/categories-tree/internal/UseIdsCache.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/CategoriesVisibilityUtils.d.ts +5 -21
- package/lib/esm/tree-widget-react/components/trees/common/CategoriesVisibilityUtils.js +5 -62
- 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/UseHierarchyVisibility.d.ts +4 -4
- package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.js +12 -6
- package/lib/esm/tree-widget-react/components/trees/common/UseHierarchyVisibility.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/UseNodeHighlighting.d.ts +1 -1
- package/lib/esm/tree-widget-react/components/trees/common/UseNodeHighlighting.js +13 -11
- package/lib/esm/tree-widget-react/components/trees/common/UseNodeHighlighting.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 +38 -23
- package/lib/esm/tree-widget-react/components/trees/common/Utils.js +65 -47
- 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 +6 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/BaseTreeRenderer.js +14 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/BaseTreeRenderer.js.map +1 -0
- 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 +21 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/EmptyTree.js +43 -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 +2 -1
- package/lib/esm/tree-widget-react/components/trees/common/components/ProgressOverlay.js +5 -4
- 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 +4 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/SkeletonTree.js +16 -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 +12 -8
- package/lib/esm/tree-widget-react/components/trees/common/components/Tree.js +36 -21
- 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 +5 -10
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeNodeVisibilityButton.js +14 -20
- 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 +2 -8
- package/lib/esm/tree-widget-react/components/trees/common/components/TreeRenderer.js +11 -7
- 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 +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/components/UseVisibilityButtonHandler.js +7 -3
- 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 +2 -2
- package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTree.js +12 -7
- 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 +3 -3
- package/lib/esm/tree-widget-react/components/trees/common/components/VisibilityTreeRenderer.js +13 -9
- 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 +43 -0
- package/lib/esm/tree-widget-react/components/trees/{models-tree → common}/internal/AlwaysAndNeverDrawnElementInfo.js +91 -34
- 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 +33 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/ClassNameDefinitions.js +37 -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 +15 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/ModelCategoryElementsCountCache.js +75 -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/{Tooltip.js → internal/Tooltip.js} +4 -10
- 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/trees/common/internal/Types.js +6 -0
- 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/UseActiveViewport.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/common/{UseHierarchiesLocalization.d.ts → internal/UseHierarchiesLocalization.d.ts} +1 -0
- 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 +19 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/UseIModelAccess.js +33 -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 +46 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/Utils.js +101 -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 +19 -0
- package/lib/esm/tree-widget-react/components/trees/{models-tree → common}/internal/VisibilityChangeEventListener.js +17 -9
- 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 +63 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.js +210 -0
- package/lib/esm/tree-widget-react/components/trees/common/internal/VisibilityUtils.js.map +1 -0
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +8 -2
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTree.js +26 -16
- 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 +1 -5
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +2 -1
- 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 +1 -0
- package/lib/esm/tree-widget-react/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js +6 -0
- 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 +10 -2
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTree.js +46 -31
- 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 +1 -5
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeComponent.js +2 -1
- 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 -1
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +47 -76
- 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 +5 -5
- package/lib/esm/tree-widget-react/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +29 -24
- 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 +6 -2
- package/lib/esm/tree-widget-react/components/trees/index.js +5 -2
- 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 -2
- 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 +4 -4
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeButtons.js +38 -30
- 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 +7 -7
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeComponent.js +16 -19
- 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 +10 -3
- package/lib/esm/tree-widget-react/components/trees/models-tree/ModelsTreeDefinition.js +91 -114
- 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 +9 -3
- package/lib/esm/tree-widget-react/components/trees/models-tree/UseModelsTree.js +70 -239
- 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/FilteredTree.d.ts +7 -9
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/FilteredTree.js +4 -6
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/FilteredTree.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +10 -7
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeIdsCache.js +106 -104
- 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.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +3 -29
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +177 -333
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -1
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseFilteredPaths.d.ts +27 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseFilteredPaths.js +170 -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/UseIdsCache.d.ts +8 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseIdsCache.js +47 -0
- package/lib/esm/tree-widget-react/components/trees/models-tree/internal/UseIdsCache.js.map +1 -0
- package/lib/esm/tree-widget-react-internal.d.ts +9 -0
- package/lib/esm/tree-widget-react-internal.js +15 -0
- package/lib/esm/tree-widget-react-internal.js.map +1 -0
- package/lib/esm/tree-widget-react.d.ts +2 -2
- package/lib/esm/tree-widget-react.js +1 -2
- package/lib/esm/tree-widget-react.js.map +1 -1
- package/lib/public/locales/en/TreeWidget.json +33 -56
- package/package.json +74 -71
- package/lib/esm/tree-widget-react/components/SelectableTree.js.map +0 -1
- package/lib/esm/tree-widget-react/components/TreeSelector.d.ts +0 -30
- package/lib/esm/tree-widget-react/components/TreeSelector.js +0 -23
- package/lib/esm/tree-widget-react/components/TreeSelector.js.map +0 -1
- package/lib/esm/tree-widget-react/components/tree-header/TreeHeader.d.ts +0 -32
- package/lib/esm/tree-widget-react/components/tree-header/TreeHeader.js +0 -25
- package/lib/esm/tree-widget-react/components/tree-header/TreeHeader.js.map +0 -1
- package/lib/esm/tree-widget-react/components/tree-header/TreeHeader.scss +0 -56
- package/lib/esm/tree-widget-react/components/tree-header/TreeWithHeader.d.ts +0 -13
- package/lib/esm/tree-widget-react/components/tree-header/TreeWithHeader.js +0 -13
- package/lib/esm/tree-widget-react/components/tree-header/TreeWithHeader.js.map +0 -1
- 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.map +0 -1
- 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/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.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.map +0 -1
- /package/lib/esm/tree-widget-react/components/{TreeWidgetUiItemsProvider.scss → TreeWidgetUiItemsProvider.css} +0 -0
- /package/lib/esm/tree-widget-react/components/trees/common/components/{ProgressOverlay.scss → ProgressOverlay.css} +0 -0
- /package/lib/esm/tree-widget-react/components/trees/common/{UseActiveViewport.d.ts → internal/UseActiveViewport.d.ts} +0 -0
- /package/lib/esm/tree-widget-react/components/trees/common/{UseActiveViewport.js → internal/UseActiveViewport.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,9 +1,92 @@
|
|
|
1
1
|
# Change Log - @itwin/tree-widget-react
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Thu, 15 May 2025 05:33:32 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 3.8.0
|
|
8
|
+
|
|
9
|
+
Thu, 15 May 2025 05:33:32 GMT
|
|
10
|
+
|
|
11
|
+
### Minor changes
|
|
12
|
+
|
|
13
|
+
- Fixed merged (categories and models) nodes visibility. Changed `@beta` APIs in a **breaking** way: `ModelsTreeVisibilityHandlerOverrides.getModelDisplayStatus` and `ModelsTreeVisibilityHandlerOverrides.getCategoryDisplayStatus` - `id` and `categoryId` props are now of `Id64Arg` type instead of `Id64String`. Use `Id64` from `@itwin/core-bentley` to access individual IDs. ([#1311](https://github.com/iTwin/viewer-components-react/pull/1311))
|
|
14
|
+
|
|
15
|
+
### Patches
|
|
16
|
+
|
|
17
|
+
- update presentation deps to versions that properly support core @ 5.0-rc ([#1304](https://github.com/iTwin/viewer-components-react/pull/1304))
|
|
18
|
+
|
|
19
|
+
## 3.7.0
|
|
20
|
+
|
|
21
|
+
Mon, 28 Apr 2025 16:18:43 GMT
|
|
22
|
+
|
|
23
|
+
### Minor changes
|
|
24
|
+
|
|
25
|
+
- Added ability to disabled hierarchy level filtering in `ModelsTree`. ([#1297](https://github.com/iTwin/viewer-components-react/pull/1297))
|
|
26
|
+
|
|
27
|
+
## 3.6.1
|
|
28
|
+
|
|
29
|
+
Fri, 18 Apr 2025 17:06:22 GMT
|
|
30
|
+
|
|
31
|
+
### Patches
|
|
32
|
+
|
|
33
|
+
- Fixed Categories tree not reacting to Category display changes from Models tree, when they're made on per-model category overrides. ([#1284](https://github.com/iTwin/viewer-components-react/pull/1284))
|
|
34
|
+
- Fixed `ModelsTree` and `CategoriesTree` not applying custom hierarchy level size limit. ([#1292](https://github.com/iTwin/viewer-components-react/pull/1292))
|
|
35
|
+
|
|
36
|
+
## 3.6.0
|
|
37
|
+
|
|
38
|
+
Fri, 21 Mar 2025 11:37:20 GMT
|
|
39
|
+
|
|
40
|
+
### Minor changes
|
|
41
|
+
|
|
42
|
+
- Add ability to remove root Subject node from Models and iModel content trees by setting `hideRootSubject: true` in the `hierarchyConfig` prop. ([#1251](https://github.com/iTwin/viewer-components-react/pull/1251))
|
|
43
|
+
|
|
44
|
+
### Patches
|
|
45
|
+
|
|
46
|
+
- Fixed Models tree showing that modeled elements have children, when their sub model is private or when sub model does not have any elements. Now it shows that modeled element has children only when it's sub model has children and is not private. ([#1253](https://github.com/iTwin/viewer-components-react/pull/1253))
|
|
47
|
+
- Fixed Categories tree showing definition containers that contain categories without elements. Now it displays definition containers only when they have categories that contain elements. ([#1248](https://github.com/iTwin/viewer-components-react/pull/1248))
|
|
48
|
+
|
|
49
|
+
## 3.5.1
|
|
50
|
+
|
|
51
|
+
Thu, 06 Mar 2025 12:37:44 GMT
|
|
52
|
+
|
|
53
|
+
### Patches
|
|
54
|
+
|
|
55
|
+
- Update import to use `@itwin/core-bentley` for types that are reexported by `@itwin/core-common` ([#1232](https://github.com/iTwin/viewer-components-react/pull/1232))
|
|
56
|
+
|
|
57
|
+
## 3.5.0
|
|
58
|
+
|
|
59
|
+
Wed, 19 Feb 2025 21:08:10 GMT
|
|
60
|
+
|
|
61
|
+
### Minor changes
|
|
62
|
+
|
|
63
|
+
- `CategoriesTree` component rendered `Categories` as a flat list, where each `Category` had zero or more child `SubCategories`. Some iTwin.js applications started to group `Categories` under `DefinitionContainers` and wanted to see them displayed in `CategoriesTree` component. Added `DefinitionContainers` to `CategoriesTree` component. This change doesn't affect applications that don't have `DefinitionContainers`. ([#1172](https://github.com/iTwin/viewer-components-react/pull/1172))
|
|
64
|
+
|
|
65
|
+
## 3.4.2
|
|
66
|
+
|
|
67
|
+
Fri, 14 Feb 2025 15:54:49 GMT
|
|
68
|
+
|
|
69
|
+
### Patches
|
|
70
|
+
|
|
71
|
+
- Adjusted modeled element / sub-model visibility controls. Now, if visibility of modeled element is changed, visibility of sub-model is adjusted accordingly and vice versa. ([#1183](https://github.com/iTwin/viewer-components-react/pull/1183))
|
|
72
|
+
|
|
73
|
+
## 3.4.1
|
|
74
|
+
|
|
75
|
+
Thu, 06 Feb 2025 13:36:20 GMT
|
|
76
|
+
|
|
77
|
+
### Patches
|
|
78
|
+
|
|
79
|
+
- Removed horizontal scroll from trees. ([#1180](https://github.com/iTwin/viewer-components-react/pull/1180))
|
|
80
|
+
|
|
81
|
+
## 3.4.0
|
|
82
|
+
|
|
83
|
+
Tue, 04 Feb 2025 15:29:52 GMT
|
|
84
|
+
|
|
85
|
+
### Minor changes
|
|
86
|
+
|
|
87
|
+
- Expose `FocusedInstancesContextProvider` and `useFocusedInstancesContext` to allow using `ModelsTreeComponent.ToggleInstancesFocusButton` from outside of `ModelsTreeComponent` and accesing the context from other React components. ([#1175](https://github.com/iTwin/viewer-components-react/pull/1175))
|
|
88
|
+
- Add `filterButtonsVisibility` prop to `TreeRenderer`. The prop allows to control visibility of hierarchy level filtering buttons in the tree: `show-on-hover` (default) shows them on hover or focus, `hide` only shows them when a node is filtered. ([#1178](https://github.com/iTwin/viewer-components-react/pull/1178))
|
|
89
|
+
|
|
7
90
|
## 3.3.0
|
|
8
91
|
|
|
9
92
|
Mon, 27 Jan 2025 18:30:40 GMT
|
package/README.md
CHANGED
|
@@ -144,6 +144,7 @@ This package provides building blocks for custom models tree:
|
|
|
144
144
|
Example:
|
|
145
145
|
|
|
146
146
|
```tsx
|
|
147
|
+
import { useCallback } from "react";
|
|
147
148
|
import { TreeWithHeader, useModelsTree, useModelsTreeButtonProps, VisibilityTree, VisibilityTreeRenderer } from "@itwin/tree-widget-react";
|
|
148
149
|
import type { SelectionStorage } from "@itwin/unified-selection";
|
|
149
150
|
import type { IModelConnection, Viewport } from "@itwin/core-frontend";
|
|
@@ -161,7 +162,8 @@ function CustomModelsTreeRenderer(props: CustomModelsTreeRendererProps) {
|
|
|
161
162
|
},
|
|
162
163
|
[getLabel],
|
|
163
164
|
);
|
|
164
|
-
|
|
165
|
+
const getSublabelCallback = useCallback<Required<VisibilityTreeRendererProps>["getSublabel"]>((node) => <>Sublabel - {node.label}</>, []);
|
|
166
|
+
return <VisibilityTreeRenderer {...props} getLabel={getLabelCallback} getSublabel={getSublabelCallback} />;
|
|
165
167
|
}
|
|
166
168
|
|
|
167
169
|
interface CustomModelsTreeProps {
|
|
@@ -291,11 +293,9 @@ function CustomCategoriesTreeRenderer(props: CustomCategoriesTreeRendererProps)
|
|
|
291
293
|
},
|
|
292
294
|
[getLabel],
|
|
293
295
|
);
|
|
294
|
-
|
|
295
296
|
const getSublabel = useCallback<Required<VisibilityTreeRendererProps>["getSublabel"]>(() => {
|
|
296
297
|
return <>Custom sub label</>;
|
|
297
298
|
}, []);
|
|
298
|
-
|
|
299
299
|
return <VisibilityTreeRenderer {...props} getLabel={getLabelCallback} getSublabel={getSublabel} />;
|
|
300
300
|
}
|
|
301
301
|
|
|
@@ -309,7 +309,6 @@ interface CustomCategoriesTreeProps {
|
|
|
309
309
|
function CustomCategoriesTreeComponent({ imodel, viewport, getSchemaContext, selectionStorage }: CustomCategoriesTreeProps) {
|
|
310
310
|
const { buttonProps } = useCategoriesTreeButtonProps({ viewport });
|
|
311
311
|
const { categoriesTreeProps, rendererProps } = useCategoriesTree({ activeView: viewport, filter: "" });
|
|
312
|
-
|
|
313
312
|
return (
|
|
314
313
|
<TreeWithHeader
|
|
315
314
|
buttons={[
|
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
import type { Localization, TranslationOptions } from "@itwin/core-common";
|
|
2
|
+
import type { ILogger } from "@itwin/presentation-shared";
|
|
2
3
|
/**
|
|
3
4
|
* Entry point for static initialization required by various components used in the package.
|
|
4
5
|
* @public
|
|
5
6
|
*/
|
|
6
7
|
export declare class TreeWidget {
|
|
7
8
|
private static _i18n?;
|
|
9
|
+
private static _logger?;
|
|
8
10
|
private static _initialized?;
|
|
9
11
|
/**
|
|
10
12
|
* Called by IModelApp to initialize the Tree Widget
|
|
11
13
|
* @param i18n - The internationalization service created by the IModelApp.
|
|
14
|
+
* @param logger - The logger to use for logging messages. Defaults to `Logger` from `@itwin/core-bentley`.
|
|
12
15
|
*/
|
|
13
|
-
static initialize(i18n?: Localization): Promise<void>;
|
|
16
|
+
static initialize(i18n?: Localization, logger?: ILogger): Promise<void>;
|
|
14
17
|
/** Unregisters the TreeWidget internationalization service namespace */
|
|
15
18
|
static terminate(): void;
|
|
19
|
+
/** The logger used by this components in this package. */
|
|
20
|
+
static get logger(): ILogger;
|
|
16
21
|
/** The internationalization service created by the IModelApp. */
|
|
17
22
|
static get i18n(): Localization;
|
|
18
23
|
/** The internationalization service namespace. */
|
|
19
24
|
static get i18nNamespace(): string;
|
|
20
25
|
/** Calls i18n.translateWithNamespace with the "TreeWidget" namespace. Do NOT include the namespace in the key.
|
|
21
26
|
*/
|
|
22
|
-
static translate(key: string
|
|
27
|
+
static translate(key: string, options?: TranslationOptions): string;
|
|
23
28
|
}
|
|
24
29
|
//# sourceMappingURL=TreeWidget.d.ts.map
|
|
@@ -2,22 +2,32 @@
|
|
|
2
2
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { BentleyError, BentleyStatus } from "@itwin/core-
|
|
5
|
+
import { BentleyError, BentleyStatus, Logger } from "@itwin/core-bentley";
|
|
6
6
|
import { IModelApp } from "@itwin/core-frontend";
|
|
7
|
+
import { createLogger } from "@itwin/presentation-core-interop";
|
|
8
|
+
import { setLogger as setHierarchiesLogger } from "@itwin/presentation-hierarchies";
|
|
9
|
+
import { setLogger as setHierarchiesReactLogger } from "@itwin/presentation-hierarchies-react";
|
|
7
10
|
/**
|
|
8
11
|
* Entry point for static initialization required by various components used in the package.
|
|
9
12
|
* @public
|
|
10
13
|
*/
|
|
11
14
|
export class TreeWidget {
|
|
15
|
+
static _i18n;
|
|
16
|
+
static _logger;
|
|
17
|
+
static _initialized;
|
|
12
18
|
/**
|
|
13
19
|
* Called by IModelApp to initialize the Tree Widget
|
|
14
20
|
* @param i18n - The internationalization service created by the IModelApp.
|
|
21
|
+
* @param logger - The logger to use for logging messages. Defaults to `Logger` from `@itwin/core-bentley`.
|
|
15
22
|
*/
|
|
16
|
-
static async initialize(i18n) {
|
|
23
|
+
static async initialize(i18n, logger) {
|
|
17
24
|
if (this._initialized) {
|
|
18
25
|
return;
|
|
19
26
|
}
|
|
20
27
|
TreeWidget._initialized = true;
|
|
28
|
+
TreeWidget._logger = logger ?? createLogger(Logger);
|
|
29
|
+
setHierarchiesLogger(TreeWidget._logger);
|
|
30
|
+
setHierarchiesReactLogger(TreeWidget._logger);
|
|
21
31
|
TreeWidget._i18n = i18n ?? IModelApp.localization;
|
|
22
32
|
return TreeWidget._i18n.registerNamespace(TreeWidget.i18nNamespace);
|
|
23
33
|
}
|
|
@@ -27,8 +37,18 @@ export class TreeWidget {
|
|
|
27
37
|
TreeWidget._i18n.unregisterNamespace(TreeWidget.i18nNamespace);
|
|
28
38
|
TreeWidget._i18n = undefined;
|
|
29
39
|
}
|
|
40
|
+
TreeWidget._logger = undefined;
|
|
41
|
+
setHierarchiesLogger(undefined);
|
|
42
|
+
setHierarchiesReactLogger(undefined);
|
|
30
43
|
TreeWidget._initialized = false;
|
|
31
44
|
}
|
|
45
|
+
/** The logger used by this components in this package. */
|
|
46
|
+
static get logger() {
|
|
47
|
+
if (!TreeWidget._logger) {
|
|
48
|
+
throw new BentleyError(BentleyStatus.ERROR, "TreeWidget not initialized");
|
|
49
|
+
}
|
|
50
|
+
return TreeWidget._logger;
|
|
51
|
+
}
|
|
32
52
|
/** The internationalization service created by the IModelApp. */
|
|
33
53
|
static get i18n() {
|
|
34
54
|
if (!TreeWidget._i18n) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeWidget.js","sourceRoot":"","sources":["../../../src/tree-widget-react/TreeWidget.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"TreeWidget.js","sourceRoot":"","sources":["../../../src/tree-widget-react/TreeWidget.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,SAAS,IAAI,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,SAAS,IAAI,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAK/F;;;GAGG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,CAAC,KAAK,CAAgB;IAC5B,MAAM,CAAC,OAAO,CAAW;IACzB,MAAM,CAAC,YAAY,CAAW;IAEtC;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAmB,EAAE,MAAgB;QAClE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;QAE/B,UAAU,CAAC,OAAO,GAAG,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QACpD,oBAAoB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACzC,yBAAyB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE9C,UAAU,CAAC,KAAK,GAAG,IAAI,IAAI,SAAS,CAAC,YAAY,CAAC;QAClD,OAAO,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;IAED,wEAAwE;IACjE,MAAM,CAAC,SAAS;QACrB,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC/D,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,UAAU,CAAC,OAAO,GAAG,SAAS,CAAC;QAC/B,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAChC,yBAAyB,CAAC,SAAS,CAAC,CAAC;QAErC,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC;IAClC,CAAC;IAED,0DAA0D;IACnD,MAAM,KAAK,MAAM;QACtB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,UAAU,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,iEAAiE;IAC1D,MAAM,KAAK,IAAI;QACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,IAAI,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,4BAA4B,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,kDAAkD;IAC3C,MAAM,KAAK,aAAa;QAC7B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;OACG;IACI,MAAM,CAAC,SAAS,CAAC,GAAW,EAAE,OAA4B;QAC/D,MAAM,SAAS,GAAG,GAAG,UAAU,CAAC,aAAa,IAAI,GAAG,EAAE,CAAC;QACvD,OAAO,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { BentleyError, BentleyStatus, Logger } from \"@itwin/core-bentley\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { createLogger } from \"@itwin/presentation-core-interop\";\nimport { setLogger as setHierarchiesLogger } from \"@itwin/presentation-hierarchies\";\nimport { setLogger as setHierarchiesReactLogger } from \"@itwin/presentation-hierarchies-react\";\n\nimport type { Localization, TranslationOptions } from \"@itwin/core-common\";\nimport type { ILogger } from \"@itwin/presentation-shared\";\n\n/**\n * Entry point for static initialization required by various components used in the package.\n * @public\n */\nexport class TreeWidget {\n private static _i18n?: Localization;\n private static _logger?: ILogger;\n private static _initialized?: boolean;\n\n /**\n * Called by IModelApp to initialize the Tree Widget\n * @param i18n - The internationalization service created by the IModelApp.\n * @param logger - The logger to use for logging messages. Defaults to `Logger` from `@itwin/core-bentley`.\n */\n public static async initialize(i18n?: Localization, logger?: ILogger): Promise<void> {\n if (this._initialized) {\n return;\n }\n\n TreeWidget._initialized = true;\n\n TreeWidget._logger = logger ?? createLogger(Logger);\n setHierarchiesLogger(TreeWidget._logger);\n setHierarchiesReactLogger(TreeWidget._logger);\n\n TreeWidget._i18n = i18n ?? IModelApp.localization;\n return TreeWidget._i18n.registerNamespace(TreeWidget.i18nNamespace);\n }\n\n /** Unregisters the TreeWidget internationalization service namespace */\n public static terminate() {\n if (TreeWidget._i18n) {\n TreeWidget._i18n.unregisterNamespace(TreeWidget.i18nNamespace);\n TreeWidget._i18n = undefined;\n }\n\n TreeWidget._logger = undefined;\n setHierarchiesLogger(undefined);\n setHierarchiesReactLogger(undefined);\n\n TreeWidget._initialized = false;\n }\n\n /** The logger used by this components in this package. */\n public static get logger(): ILogger {\n if (!TreeWidget._logger) {\n throw new BentleyError(BentleyStatus.ERROR, \"TreeWidget not initialized\");\n }\n return TreeWidget._logger;\n }\n\n /** The internationalization service created by the IModelApp. */\n public static get i18n(): Localization {\n if (!TreeWidget._i18n) {\n throw new BentleyError(BentleyStatus.ERROR, \"TreeWidget not initialized\");\n }\n return TreeWidget._i18n;\n }\n\n /** The internationalization service namespace. */\n public static get i18nNamespace(): string {\n return \"TreeWidget\";\n }\n\n /** Calls i18n.translateWithNamespace with the \"TreeWidget\" namespace. Do NOT include the namespace in the key.\n */\n public static translate(key: string, options?: TranslationOptions): string {\n const stringKey = `${TreeWidget.i18nNamespace}:${key}`;\n return TreeWidget.i18n.getLocalizedString(stringKey, options);\n }\n}\n"]}
|
package/lib/esm/tree-widget-react/components/{SelectableTree.d.ts → TreeWidgetComponentImpl.d.ts}
RENAMED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import "./SelectableTree.scss";
|
|
1
|
+
import "./TreeWidgetComponentImpl.css";
|
|
3
2
|
import type { IModelConnection } from "@itwin/core-frontend";
|
|
4
3
|
/**
|
|
5
4
|
* Props for rendering trees
|
|
6
5
|
* @public
|
|
7
6
|
*/
|
|
8
|
-
export interface
|
|
9
|
-
|
|
7
|
+
export interface TreeRenderProps {
|
|
8
|
+
filter?: string;
|
|
10
9
|
onPerformanceMeasured?: (featureId: string, elapsedTime: number) => void;
|
|
11
10
|
onFeatureUsed?: (feature: string) => void;
|
|
12
11
|
}
|
|
@@ -14,34 +13,39 @@ export interface SelectableTreeRenderProps {
|
|
|
14
13
|
* Definition of a tree component displayed in `SelectableTree`.
|
|
15
14
|
* @public
|
|
16
15
|
*/
|
|
17
|
-
export interface
|
|
16
|
+
export interface TreeDefinition {
|
|
18
17
|
/** Id of the tree */
|
|
19
18
|
id: string;
|
|
20
19
|
/** Callback that is used to get tree label */
|
|
21
20
|
getLabel: () => string;
|
|
22
21
|
/** Callback that is used to render tree component */
|
|
23
|
-
render: (props:
|
|
22
|
+
render: (props: TreeRenderProps) => React.ReactNode;
|
|
24
23
|
/**
|
|
25
24
|
* Callback that is used to determine if tree should be shown for current active iModel connection.
|
|
26
25
|
* If callback is `undefined` tree is shown for all iModel connections.
|
|
27
26
|
*/
|
|
28
27
|
shouldShow?: (imodel: IModelConnection) => Promise<boolean>;
|
|
28
|
+
/**
|
|
29
|
+
* Flag to determine if search box should be rendered.
|
|
30
|
+
* - false or undefined, the search box will not be rendered.
|
|
31
|
+
* - true, the search box will be rendered.
|
|
32
|
+
*/
|
|
33
|
+
isSearchable?: boolean;
|
|
29
34
|
/** Icon to render before tree label in tree selector */
|
|
30
35
|
startIcon?: React.ReactNode;
|
|
31
36
|
}
|
|
32
37
|
/**
|
|
33
|
-
* Props for `
|
|
34
|
-
* @
|
|
38
|
+
* Props for `TreeWidgetComponent`
|
|
39
|
+
* @internal
|
|
35
40
|
*/
|
|
36
|
-
export interface
|
|
37
|
-
trees:
|
|
38
|
-
density?: "enlarged" | "default";
|
|
41
|
+
export interface TreeWidgetComponentImplProps {
|
|
42
|
+
trees: TreeDefinition[];
|
|
39
43
|
onPerformanceMeasured?: (feature: string, elapsedTime: number) => void;
|
|
40
44
|
onFeatureUsed?: (feature: string) => void;
|
|
41
45
|
}
|
|
42
46
|
/**
|
|
43
47
|
* A component that renders a tree (combo box) selector and the selected tree component.
|
|
44
|
-
* @
|
|
48
|
+
* @internal
|
|
45
49
|
*/
|
|
46
|
-
export declare function
|
|
47
|
-
//# sourceMappingURL=
|
|
50
|
+
export declare function TreeWidgetComponentImpl(props: TreeWidgetComponentImplProps): import("react/jsx-runtime").JSX.Element | null;
|
|
51
|
+
//# sourceMappingURL=TreeWidgetComponentImpl.d.ts.map
|
package/lib/esm/tree-widget-react/components/{SelectableTree.js → TreeWidgetComponentImpl.js}
RENAMED
|
@@ -1,29 +1,38 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
/*---------------------------------------------------------------------------------------------
|
|
3
3
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
4
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
import "./
|
|
7
|
-
import { useEffect, useState } from "react";
|
|
6
|
+
import "./TreeWidgetComponentImpl.css";
|
|
7
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
8
8
|
import { useActiveIModelConnection } from "@itwin/appui-react";
|
|
9
|
-
import {
|
|
9
|
+
import { Skeleton } from "@stratakit/bricks";
|
|
10
10
|
import { TreeWidget } from "../TreeWidget.js";
|
|
11
|
-
import {
|
|
11
|
+
import { SelectableTree } from "./tree-header/SelectableTree.js";
|
|
12
|
+
import { WidgetHeader } from "./tree-header/WidgetHeader.js";
|
|
13
|
+
import { SkeletonTree } from "./trees/common/components/SkeletonTree.js";
|
|
12
14
|
/**
|
|
13
15
|
* A component that renders a tree (combo box) selector and the selected tree component.
|
|
14
|
-
* @
|
|
16
|
+
* @internal
|
|
15
17
|
*/
|
|
16
|
-
export function
|
|
18
|
+
export function TreeWidgetComponentImpl(props) {
|
|
17
19
|
const imodel = useActiveIModelConnection();
|
|
18
20
|
if (!imodel) {
|
|
19
21
|
return null;
|
|
20
22
|
}
|
|
21
23
|
return _jsx(SelectableTreeContent, { ...props, imodel: imodel });
|
|
22
24
|
}
|
|
23
|
-
function SelectableTreeContent(
|
|
24
|
-
const
|
|
25
|
-
const trees =
|
|
26
|
-
|
|
25
|
+
function SelectableTreeContent({ onPerformanceMeasured, onFeatureUsed, trees: treeDefinitions, imodel, }) {
|
|
26
|
+
const activeTrees = useActiveTrees(treeDefinitions, imodel);
|
|
27
|
+
const { trees, defaultSelectedContentId } = useMemo(() => getWidgetWithHeaderProps(activeTrees), [activeTrees]);
|
|
28
|
+
const [searchValue, setSearchValue] = useState(undefined);
|
|
29
|
+
const [selectedContentId, setSelectedContentId] = useState(defaultSelectedContentId);
|
|
30
|
+
const selectedContent = useMemo(() => trees.find((c) => c.id === selectedContentId) ?? trees[0], [selectedContentId, trees]);
|
|
31
|
+
const onSelect = useCallback((treeId) => {
|
|
32
|
+
onFeatureUsed?.(`choose-${treeId}`);
|
|
33
|
+
setSelectedContentId(treeId);
|
|
34
|
+
}, [onFeatureUsed]);
|
|
35
|
+
return (_jsx("div", { className: "tree-widget-selectable-tree", children: _jsxs("div", { className: "tw-content", children: [_jsx(WidgetHeader, { trees: trees, defaultSelectedContentId: defaultSelectedContentId, onSearch: setSearchValue, onSelect: onSelect, isLoading: selectedContent.id === "loading" }), _jsx("div", { className: "tw-content-wrapper", children: selectedContent?.render({ onPerformanceMeasured, onFeatureUsed, filter: searchValue }) })] }) }));
|
|
27
36
|
}
|
|
28
37
|
function useActiveTrees(treeDefinitions, imodel) {
|
|
29
38
|
const [trees, setTrees] = useState();
|
|
@@ -48,6 +57,7 @@ async function getActiveTrees(treeDefinitions, imodel) {
|
|
|
48
57
|
}
|
|
49
58
|
return {
|
|
50
59
|
id: treeDef.id,
|
|
60
|
+
isSearchable: treeDef.isSearchable,
|
|
51
61
|
label: treeDef.getLabel(),
|
|
52
62
|
render: treeDef.render,
|
|
53
63
|
startIcon: treeDef.startIcon,
|
|
@@ -55,7 +65,7 @@ async function getActiveTrees(treeDefinitions, imodel) {
|
|
|
55
65
|
};
|
|
56
66
|
return (await Promise.all(treeDefinitions.map(handleDefinition))).filter((tree) => tree !== undefined);
|
|
57
67
|
}
|
|
58
|
-
function
|
|
68
|
+
function getWidgetWithHeaderProps(trees) {
|
|
59
69
|
if (trees === undefined) {
|
|
60
70
|
return {
|
|
61
71
|
defaultSelectedContentId: "loading",
|
|
@@ -63,7 +73,8 @@ function getTreeSelectorProps(trees) {
|
|
|
63
73
|
{
|
|
64
74
|
id: "loading",
|
|
65
75
|
label: "",
|
|
66
|
-
|
|
76
|
+
isSearchable: false,
|
|
77
|
+
render: () => _jsx(LoadingTree, {}),
|
|
67
78
|
},
|
|
68
79
|
],
|
|
69
80
|
};
|
|
@@ -74,6 +85,7 @@ function getTreeSelectorProps(trees) {
|
|
|
74
85
|
trees: [
|
|
75
86
|
{
|
|
76
87
|
id: "no-trees",
|
|
88
|
+
isSearchable: false,
|
|
77
89
|
label: "",
|
|
78
90
|
render: () => (_jsx("div", { style: { display: "flex", justifyContent: "center", alignItems: "center" }, className: "tree-widget-no-trees-container", children: TreeWidget.translate("selectableTree.noTrees") })),
|
|
79
91
|
},
|
|
@@ -85,19 +97,7 @@ function getTreeSelectorProps(trees) {
|
|
|
85
97
|
trees,
|
|
86
98
|
};
|
|
87
99
|
}
|
|
88
|
-
function
|
|
89
|
-
|
|
90
|
-
useEffect(() => {
|
|
91
|
-
const id = setTimeout(() => {
|
|
92
|
-
setShow(true);
|
|
93
|
-
}, delay);
|
|
94
|
-
return () => {
|
|
95
|
-
clearTimeout(id);
|
|
96
|
-
};
|
|
97
|
-
}, [delay]);
|
|
98
|
-
if (!show) {
|
|
99
|
-
return null;
|
|
100
|
-
}
|
|
101
|
-
return _jsx(_Fragment, { children: children });
|
|
100
|
+
function LoadingTree() {
|
|
101
|
+
return (_jsx(SelectableTree, { buttons: _jsxs(_Fragment, { children: [_jsx(Skeleton, { variant: "object", size: "medium" }), _jsx(Skeleton, { variant: "object", size: "medium" }), _jsx(Skeleton, { variant: "object", size: "medium" }), _jsx(Skeleton, { variant: "object", size: "medium" }), _jsx(Skeleton, { variant: "object", size: "medium" }), _jsx(Skeleton, { variant: "object", size: "medium" })] }), children: _jsx(SkeletonTree, {}) }));
|
|
102
102
|
}
|
|
103
|
-
//# sourceMappingURL=
|
|
103
|
+
//# sourceMappingURL=TreeWidgetComponentImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeWidgetComponentImpl.js","sourceRoot":"","sources":["../../../../src/tree-widget-react/components/TreeWidgetComponentImpl.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 \"./TreeWidgetComponentImpl.css\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { Skeleton } from \"@stratakit/bricks\";\nimport { TreeWidget } from \"../TreeWidget.js\";\nimport { SelectableTree } from \"./tree-header/SelectableTree.js\";\nimport { WidgetHeader } from \"./tree-header/WidgetHeader.js\";\nimport { SkeletonTree } from \"./trees/common/components/SkeletonTree.js\";\n\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport type { TreeContentDefinition, TreeSelectionProps } from \"./tree-header/WidgetHeader.js\";\n/**\n * Props for rendering trees\n * @public\n */\nexport interface TreeRenderProps {\n filter?: string;\n onPerformanceMeasured?: (featureId: string, elapsedTime: number) => void;\n onFeatureUsed?: (feature: string) => void;\n}\n\n// TODO: fix interface so startIcon type is taken from this interface for `TreeSelector`\n/**\n * Definition of a tree component displayed in `SelectableTree`.\n * @public\n */\nexport interface TreeDefinition {\n /** Id of the tree */\n id: string;\n /** Callback that is used to get tree label */\n getLabel: () => string;\n /** Callback that is used to render tree component */\n render: (props: TreeRenderProps) => React.ReactNode;\n /**\n * Callback that is used to determine if tree should be shown for current active iModel connection.\n * If callback is `undefined` tree is shown for all iModel connections.\n */\n shouldShow?: (imodel: IModelConnection) => Promise<boolean>;\n /**\n * Flag to determine if search box should be rendered.\n * - false or undefined, the search box will not be rendered.\n * - true, the search box will be rendered.\n */\n isSearchable?: boolean;\n /** Icon to render before tree label in tree selector */\n startIcon?: React.ReactNode;\n}\n\n/**\n * Props for `TreeWidgetComponent`\n * @internal\n */\nexport interface TreeWidgetComponentImplProps {\n trees: TreeDefinition[];\n onPerformanceMeasured?: (feature: string, elapsedTime: number) => void;\n onFeatureUsed?: (feature: string) => void;\n}\n\n/**\n * A component that renders a tree (combo box) selector and the selected tree component.\n * @internal\n */\nexport function TreeWidgetComponentImpl(props: TreeWidgetComponentImplProps) {\n const imodel = useActiveIModelConnection();\n if (!imodel) {\n return null;\n }\n return <SelectableTreeContent {...props} imodel={imodel} />;\n}\n\nfunction SelectableTreeContent({\n onPerformanceMeasured,\n onFeatureUsed,\n trees: treeDefinitions,\n imodel,\n}: TreeWidgetComponentImplProps & { imodel: IModelConnection }) {\n const activeTrees = useActiveTrees(treeDefinitions, imodel);\n const { trees, defaultSelectedContentId } = useMemo(() => getWidgetWithHeaderProps(activeTrees), [activeTrees]);\n const [searchValue, setSearchValue] = useState<string | undefined>(undefined);\n const [selectedContentId, setSelectedContentId] = useState<string | undefined>(defaultSelectedContentId);\n const selectedContent = useMemo(() => trees.find((c) => c.id === selectedContentId) ?? trees[0], [selectedContentId, trees]);\n\n const onSelect = useCallback(\n (treeId: string) => {\n onFeatureUsed?.(`choose-${treeId}`);\n setSelectedContentId(treeId);\n },\n [onFeatureUsed],\n );\n\n return (\n <div className=\"tree-widget-selectable-tree\">\n <div className=\"tw-content\">\n <WidgetHeader\n trees={trees}\n defaultSelectedContentId={defaultSelectedContentId}\n onSearch={setSearchValue}\n onSelect={onSelect}\n isLoading={selectedContent.id === \"loading\"}\n />\n <div className=\"tw-content-wrapper\">{selectedContent?.render({ onPerformanceMeasured, onFeatureUsed, filter: searchValue })}</div>\n </div>\n </div>\n );\n}\n\nfunction useActiveTrees(treeDefinitions: TreeDefinition[], imodel: IModelConnection) {\n const [trees, setTrees] = useState<TreeContentDefinition[]>();\n\n useEffect(() => {\n let disposed = false;\n void (async () => {\n const visibleTrees = await getActiveTrees(treeDefinitions, imodel);\n if (!disposed) {\n setTrees(visibleTrees);\n }\n })();\n\n return () => {\n disposed = true;\n };\n }, [treeDefinitions, imodel]);\n\n return trees;\n}\n\nasync function getActiveTrees(treeDefinitions: TreeDefinition[], imodel: IModelConnection): Promise<TreeContentDefinition[]> {\n const handleDefinition = async (treeDef: TreeDefinition) => {\n if (treeDef.shouldShow !== undefined && !(await treeDef.shouldShow(imodel))) {\n return undefined;\n }\n return {\n id: treeDef.id,\n isSearchable: treeDef.isSearchable,\n label: treeDef.getLabel(),\n render: treeDef.render,\n startIcon: treeDef.startIcon,\n };\n };\n\n return (await Promise.all(treeDefinitions.map(handleDefinition))).filter((tree) => tree !== undefined) as TreeContentDefinition[];\n}\n\nfunction getWidgetWithHeaderProps(trees?: TreeContentDefinition[]): TreeSelectionProps {\n if (trees === undefined) {\n return {\n defaultSelectedContentId: \"loading\",\n trees: [\n {\n id: \"loading\",\n label: \"\",\n isSearchable: false,\n render: () => <LoadingTree />,\n },\n ],\n };\n }\n\n if (trees.length === 0) {\n return {\n defaultSelectedContentId: \"no-trees\",\n trees: [\n {\n id: \"no-trees\",\n isSearchable: false,\n label: \"\",\n render: () => (\n <div style={{ display: \"flex\", justifyContent: \"center\", alignItems: \"center\" }} className=\"tree-widget-no-trees-container\">\n {TreeWidget.translate(\"selectableTree.noTrees\")}\n </div>\n ),\n },\n ],\n };\n }\n\n return {\n defaultSelectedContentId: trees[0].id,\n trees,\n };\n}\n\nfunction LoadingTree() {\n return (\n <SelectableTree\n buttons={\n <>\n <Skeleton variant={\"object\"} size={\"medium\"} />\n <Skeleton variant={\"object\"} size={\"medium\"} />\n <Skeleton variant={\"object\"} size={\"medium\"} />\n <Skeleton variant={\"object\"} size={\"medium\"} />\n <Skeleton variant={\"object\"} size={\"medium\"} />\n <Skeleton variant={\"object\"} size={\"medium\"} />\n </>\n }\n >\n <SkeletonTree />\n </SelectableTree>\n );\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "./TreeWidgetUiItemsProvider.
|
|
1
|
+
import "./TreeWidgetUiItemsProvider.css";
|
|
2
2
|
import type { Widget } from "@itwin/appui-react";
|
|
3
|
-
import type {
|
|
3
|
+
import type { TreeDefinition } from "./TreeWidgetComponentImpl.js";
|
|
4
4
|
/**
|
|
5
5
|
* Props for `createWidget`.
|
|
6
6
|
* @public
|
|
@@ -13,9 +13,7 @@ interface TreeWidgetProps {
|
|
|
13
13
|
* @see ExternalSourcesTreeComponent
|
|
14
14
|
* @see IModelContentTreeComponent
|
|
15
15
|
*/
|
|
16
|
-
trees:
|
|
17
|
-
/** Modifies the density of the tree widget. `enlarged` widget contains larger content */
|
|
18
|
-
density?: "enlarged" | "default";
|
|
16
|
+
trees: TreeDefinition[];
|
|
19
17
|
/** Callback that is invoked when performance of tracked feature is measured. */
|
|
20
18
|
onPerformanceMeasured?: (feature: string, elapsedTime: number) => void;
|
|
21
19
|
/** Callback that is invoked when a tracked feature is used. */
|
|
@@ -30,6 +28,6 @@ export declare function createTreeWidget(props: TreeWidgetProps): Widget;
|
|
|
30
28
|
* Tree widget component which allows selecting which tree to render.
|
|
31
29
|
* @public
|
|
32
30
|
*/
|
|
33
|
-
export declare function TreeWidgetComponent(props:
|
|
31
|
+
export declare function TreeWidgetComponent(props: TreeWidgetProps): import("react/jsx-runtime").JSX.Element;
|
|
34
32
|
export {};
|
|
35
33
|
//# sourceMappingURL=TreeWidgetUiItemsProvider.d.ts.map
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
/*---------------------------------------------------------------------------------------------
|
|
3
3
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
4
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
import "./TreeWidgetUiItemsProvider.
|
|
6
|
+
import "./TreeWidgetUiItemsProvider.css";
|
|
7
7
|
import { useRef } from "react";
|
|
8
8
|
import { ErrorBoundary } from "react-error-boundary";
|
|
9
9
|
import { StagePanelLocation, StagePanelSection, useTransientState } from "@itwin/appui-react";
|
|
10
|
-
import {
|
|
10
|
+
import { Icon } from "@stratakit/foundations";
|
|
11
|
+
import hierarchyTreeSvg from "@stratakit/icons/hierarchy-tree.svg";
|
|
11
12
|
import { TreeWidget } from "../TreeWidget.js";
|
|
12
|
-
import {
|
|
13
|
+
import { ErrorState } from "./tree-header/ErrorState.js";
|
|
14
|
+
import { TreeWidgetComponentImpl } from "./TreeWidgetComponentImpl.js";
|
|
13
15
|
/**
|
|
14
16
|
* Creates a tree widget definition that should be returned from `UiItemsProvider.getWidgets()`.
|
|
15
17
|
* @public
|
|
@@ -18,14 +20,14 @@ export function createTreeWidget(props) {
|
|
|
18
20
|
return {
|
|
19
21
|
id: "tree-widget-react:trees",
|
|
20
22
|
label: TreeWidget.translate("widget.label"),
|
|
21
|
-
icon: _jsx(
|
|
23
|
+
icon: _jsx(Icon, { href: hierarchyTreeSvg }),
|
|
22
24
|
layouts: {
|
|
23
25
|
standard: {
|
|
24
26
|
section: StagePanelSection.Start,
|
|
25
27
|
location: StagePanelLocation.Right,
|
|
26
28
|
},
|
|
27
29
|
},
|
|
28
|
-
content:
|
|
30
|
+
content: _jsx(TreeWidgetComponent, { trees: props.trees, onPerformanceMeasured: props.onPerformanceMeasured, onFeatureUsed: props.onFeatureUsed }),
|
|
29
31
|
};
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
@@ -34,10 +36,7 @@ export function createTreeWidget(props) {
|
|
|
34
36
|
*/
|
|
35
37
|
export function TreeWidgetComponent(props) {
|
|
36
38
|
const ref = useTreeWidgetTransientState();
|
|
37
|
-
return (_jsx("div", { ref: ref, className: "tree-widget", children: _jsx(ErrorBoundary, { FallbackComponent: ErrorState, children: _jsx(
|
|
38
|
-
}
|
|
39
|
-
function ErrorState({}) {
|
|
40
|
-
return _jsx(_Fragment, { children: " ERROR WINDOW TBD " });
|
|
39
|
+
return (_jsx("div", { ref: ref, className: "tree-widget", children: _jsx(ErrorBoundary, { FallbackComponent: ErrorState, children: _jsx(TreeWidgetComponentImpl, { ...props }) }) }));
|
|
41
40
|
}
|
|
42
41
|
function useTreeWidgetTransientState() {
|
|
43
42
|
const { ref, persist, restore } = useTreeStorage();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeWidgetUiItemsProvider.js","sourceRoot":"","sources":["../../../../src/tree-widget-react/components/TreeWidgetUiItemsProvider.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,
|
|
1
|
+
{"version":3,"file":"TreeWidgetUiItemsProvider.js","sourceRoot":"","sources":["../../../../src/tree-widget-react/components/TreeWidgetUiItemsProvider.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,iCAAiC,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAyBvE;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,OAAO;QACL,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC;QAC3C,IAAI,EAAE,KAAC,IAAI,IAAC,IAAI,EAAE,gBAAgB,GAAI;QACtC,OAAO,EAAE;YACP,QAAQ,EAAE;gBACR,OAAO,EAAE,iBAAiB,CAAC,KAAK;gBAChC,QAAQ,EAAE,kBAAkB,CAAC,KAAK;aACnC;SACF;QACD,OAAO,EAAE,KAAC,mBAAmB,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,GAAI;KAC7I,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAsB;IACxD,MAAM,GAAG,GAAG,2BAA2B,EAAE,CAAC;IAC1C,OAAO,CACL,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,aAAa,YACpC,KAAC,aAAa,IAAC,iBAAiB,EAAE,UAAU,YAC1C,KAAC,uBAAuB,OAAK,KAAK,GAAI,GACxB,GACZ,CACP,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B;IAClC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IACnD,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC;AAQD,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,EAAsB,CAAC;IAE/C,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,OAAO,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,6BAA6B,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,SAAS,CAAC,OAAO,GAAG,SAAS,EAAE,SAAS,CAAC;IAC3C,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;YACjC,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBACnC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACnC,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 \"./TreeWidgetUiItemsProvider.css\";\nimport { useRef } from \"react\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport { StagePanelLocation, StagePanelSection, useTransientState } from \"@itwin/appui-react\";\nimport { Icon } from \"@stratakit/foundations\";\nimport hierarchyTreeSvg from \"@stratakit/icons/hierarchy-tree.svg\";\nimport { TreeWidget } from \"../TreeWidget.js\";\nimport { ErrorState } from \"./tree-header/ErrorState.js\";\nimport { TreeWidgetComponentImpl } from \"./TreeWidgetComponentImpl.js\";\n\nimport type { Ref } from \"react\";\nimport type { Widget } from \"@itwin/appui-react\";\nimport type { TreeDefinition } from \"./TreeWidgetComponentImpl.js\";\n/**\n * Props for `createWidget`.\n * @public\n */\ninterface TreeWidgetProps {\n /**\n * Trees to show in the widget.\n * @see ModelsTreeComponent\n * @see CategoriesTreeComponent\n * @see ExternalSourcesTreeComponent\n * @see IModelContentTreeComponent\n */\n trees: TreeDefinition[];\n /** Callback that is invoked when performance of tracked feature is measured. */\n onPerformanceMeasured?: (feature: string, elapsedTime: number) => void;\n /** Callback that is invoked when a tracked feature is used. */\n onFeatureUsed?: (feature: string) => void;\n}\n\n\n/**\n * Creates a tree widget definition that should be returned from `UiItemsProvider.getWidgets()`.\n * @public\n */\nexport function createTreeWidget(props: TreeWidgetProps): Widget {\n return {\n id: \"tree-widget-react:trees\",\n label: TreeWidget.translate(\"widget.label\"),\n icon: <Icon href={hierarchyTreeSvg} />,\n layouts: {\n standard: {\n section: StagePanelSection.Start,\n location: StagePanelLocation.Right,\n },\n },\n content: <TreeWidgetComponent trees={props.trees} onPerformanceMeasured={props.onPerformanceMeasured} onFeatureUsed={props.onFeatureUsed} />,\n };\n}\n\n/**\n * Tree widget component which allows selecting which tree to render.\n * @public\n */\nexport function TreeWidgetComponent(props: TreeWidgetProps) {\n const ref = useTreeWidgetTransientState();\n return (\n <div ref={ref} className=\"tree-widget\">\n <ErrorBoundary FallbackComponent={ErrorState}>\n <TreeWidgetComponentImpl {...props} />\n </ErrorBoundary>\n </div>\n );\n}\n\nfunction useTreeWidgetTransientState() {\n const { ref, persist, restore } = useTreeStorage();\n useTransientState(persist, restore);\n return ref;\n}\n\ninterface UseTreeStorageResult {\n ref: Ref<HTMLDivElement>;\n persist: () => void;\n restore: () => void;\n}\n\nfunction useTreeStorage(): UseTreeStorageResult {\n const ref = useRef<HTMLDivElement>(null);\n const scrollTop = useRef<number | undefined>();\n\n const getContainer = () => {\n return ref.current?.querySelector(\"#tw-tree-renderer-container\");\n };\n\n const persist = () => {\n const container = getContainer();\n scrollTop.current = container?.scrollTop;\n };\n\n const restore = () => {\n setTimeout(() => {\n const container = getContainer();\n if (container && scrollTop.current) {\n container.scrollTop = scrollTop.current;\n }\n });\n };\n\n return { ref, persist, restore };\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
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
|
+
import { Button, Text } from "@stratakit/bricks";
|
|
7
|
+
import { Icon } from "@stratakit/foundations";
|
|
8
|
+
import errorSvg from "@stratakit/icons/status-error.svg";
|
|
9
|
+
import { TreeWidget } from "../../TreeWidget.js";
|
|
10
|
+
/** @internal */
|
|
11
|
+
export function ErrorState({ resetErrorBoundary }) {
|
|
12
|
+
return (_jsxs("div", { style: { display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", height: "100%", gap: "0.5rem" }, children: [_jsx(Icon, { href: errorSvg, size: "large" }), _jsx(Text, { variant: "body-sm", children: TreeWidget.translate("errorState.description") }), _jsx(Button, { onClick: resetErrorBoundary, children: TreeWidget.translate("errorState.retryButtonLabel") })] }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ErrorState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorState.js","sourceRoot":"","sources":["../../../../../src/tree-widget-react/components/tree-header/ErrorState.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAEhG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,QAAQ,MAAM,mCAAmC,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIjD,gBAAgB;AAChB,MAAM,UAAU,UAAU,CAAC,EAAE,kBAAkB,EAAiB;IAC9D,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,aACrI,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,OAAO,GAAG,EACrC,KAAC,IAAI,IAAC,OAAO,EAAE,SAAS,YAAG,UAAU,CAAC,SAAS,CAAC,wBAAwB,CAAC,GAAQ,EACjF,KAAC,MAAM,IAAC,OAAO,EAAE,kBAAkB,YAAG,UAAU,CAAC,SAAS,CAAC,6BAA6B,CAAC,GAAU,IAC/F,CACP,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 { Button, Text } from \"@stratakit/bricks\";\nimport { Icon } from \"@stratakit/foundations\";\nimport errorSvg from \"@stratakit/icons/status-error.svg\";\nimport { TreeWidget } from \"../../TreeWidget.js\";\n\nimport type { FallbackProps } from \"react-error-boundary\";\n\n/** @internal */\nexport function ErrorState({ resetErrorBoundary }: FallbackProps) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", justifyContent: \"center\", height: \"100%\", gap: \"0.5rem\" }}>\n <Icon href={errorSvg} size=\"large\" />\n <Text variant={\"body-sm\"}>{TreeWidget.translate(\"errorState.description\")}</Text>\n <Button onClick={resetErrorBoundary}>{TreeWidget.translate(\"errorState.retryButtonLabel\")}</Button>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface DebouncedSearchBoxProps {
|
|
2
|
+
isOpened: boolean;
|
|
3
|
+
setIsOpened: (value: boolean) => void;
|
|
4
|
+
onSearch: (value?: string) => void;
|
|
5
|
+
delay: number;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
/** @internal */
|
|
9
|
+
export declare function DebouncedSearchBox({ isOpened, onSearch, setIsOpened, delay, className }: DebouncedSearchBoxProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=SearchBox.d.ts.map
|