@itwin/tree-widget-react 2.3.2 → 3.0.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -2
- package/README.md +232 -147
- package/lib/cjs/TreeWidget.d.ts +2 -4
- package/lib/cjs/TreeWidget.js +0 -6
- package/lib/cjs/TreeWidget.js.map +1 -1
- package/lib/cjs/components/SelectableTree.d.ts +3 -9
- package/lib/cjs/components/SelectableTree.js +1 -1
- package/lib/cjs/components/SelectableTree.js.map +1 -1
- package/lib/cjs/components/TreeSelector.d.ts +2 -2
- package/lib/cjs/components/TreeSelector.js.map +1 -1
- package/lib/cjs/components/TreeWidgetUiItemsProvider.d.ts +14 -25
- package/lib/cjs/components/TreeWidgetUiItemsProvider.js +43 -45
- package/lib/cjs/components/TreeWidgetUiItemsProvider.js.map +1 -1
- package/lib/cjs/components/tree-header/TreeHeader.js +17 -9
- package/lib/cjs/components/tree-header/TreeHeader.js.map +1 -1
- package/lib/cjs/components/tree-header/TreeHeader.scss +7 -41
- package/lib/cjs/components/trees/Tree.scss +23 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTree.d.ts +22 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTree.js +78 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTree.js.map +1 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.d.ts +21 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.js +37 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.d.ts +55 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.js +75 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.d.ts +23 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.js +185 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.d.ts +36 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.js +94 -0
- package/lib/cjs/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
- package/lib/cjs/components/trees/categories-tree/UseCategories.d.ts +8 -0
- package/lib/cjs/components/trees/categories-tree/UseCategories.js +22 -0
- package/lib/cjs/components/trees/categories-tree/UseCategories.js.map +1 -0
- package/lib/cjs/components/trees/common/CategoriesVisibilityUtils.d.ts +46 -0
- package/lib/cjs/components/trees/{CategoriesVisibilityUtils.js → common/CategoriesVisibilityUtils.js} +56 -8
- package/lib/cjs/components/trees/common/CategoriesVisibilityUtils.js.map +1 -0
- package/lib/cjs/components/trees/common/FocusedInstancesContext.d.ts +14 -0
- package/lib/cjs/components/trees/common/FocusedInstancesContext.js +16 -0
- package/lib/cjs/components/trees/common/FocusedInstancesContext.js.map +1 -0
- package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.d.ts +8 -0
- package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.js +71 -0
- package/lib/cjs/components/trees/common/FocusedInstancesContextProvider.js.map +1 -0
- package/lib/cjs/components/trees/common/Rxjs.d.ts +10 -0
- package/lib/cjs/components/trees/common/Rxjs.js +46 -0
- package/lib/cjs/components/trees/common/Rxjs.js.map +1 -0
- package/lib/cjs/components/trees/common/UseFeatureReporting.d.ts +11 -0
- package/lib/cjs/components/trees/common/UseFeatureReporting.js +10 -1
- package/lib/cjs/components/trees/common/UseFeatureReporting.js.map +1 -1
- package/lib/cjs/components/trees/common/UseFiltering.d.ts +12 -0
- package/lib/cjs/components/trees/common/UseFiltering.js +29 -0
- package/lib/cjs/components/trees/common/UseFiltering.js.map +1 -0
- package/lib/cjs/components/trees/common/UseHierarchiesLocalization.d.ts +8 -0
- package/lib/cjs/components/trees/common/UseHierarchiesLocalization.js +33 -0
- package/lib/cjs/components/trees/common/UseHierarchiesLocalization.js.map +1 -0
- package/lib/cjs/components/trees/common/UseHierarchyFiltering.d.ts +19 -0
- package/lib/cjs/components/trees/common/UseHierarchyFiltering.js +157 -0
- package/lib/cjs/components/trees/common/UseHierarchyFiltering.js.map +1 -0
- package/lib/cjs/components/trees/common/UseHierarchyVisibility.d.ts +30 -0
- package/lib/cjs/components/trees/common/UseHierarchyVisibility.js +98 -0
- package/lib/cjs/components/trees/common/UseHierarchyVisibility.js.map +1 -0
- package/lib/cjs/components/trees/common/UseIModelChangeListener.d.ts +9 -0
- package/lib/cjs/components/trees/common/UseIModelChangeListener.js +20 -0
- package/lib/cjs/components/trees/common/UseIModelChangeListener.js.map +1 -0
- package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.d.ts +13 -0
- package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.js +35 -0
- package/lib/cjs/components/trees/common/UseMultiCheckboxHandler.js.map +1 -0
- package/lib/cjs/components/trees/common/UseNodeHighlighting.d.ts +16 -0
- package/lib/cjs/components/trees/common/UseNodeHighlighting.js +140 -0
- package/lib/cjs/components/trees/common/UseNodeHighlighting.js.map +1 -0
- package/lib/cjs/components/trees/common/Utils.d.ts +16 -6
- package/lib/cjs/components/trees/common/Utils.js +38 -34
- package/lib/cjs/components/trees/common/Utils.js.map +1 -1
- package/lib/cjs/components/trees/common/components/BaseTree.d.ts +34 -0
- package/lib/cjs/components/trees/common/components/BaseTree.js +77 -0
- package/lib/cjs/components/trees/common/components/BaseTree.js.map +1 -0
- package/lib/cjs/components/trees/common/components/Delayed.d.ts +6 -0
- package/lib/cjs/components/trees/common/components/Delayed.js +31 -0
- package/lib/cjs/components/trees/common/components/Delayed.js.map +1 -0
- package/lib/cjs/components/trees/common/components/ProgressOverlay.d.ts +5 -0
- package/lib/cjs/components/trees/common/components/ProgressOverlay.js +16 -0
- package/lib/cjs/components/trees/common/components/ProgressOverlay.js.map +1 -0
- package/lib/cjs/components/trees/common/components/ProgressOverlay.scss +21 -0
- package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.d.ts +20 -0
- package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.js +28 -0
- package/lib/cjs/components/trees/common/components/TreeNodeCheckbox.js.map +1 -0
- package/lib/cjs/components/trees/common/components/TreeNodeRenderer.d.ts +13 -0
- package/lib/cjs/components/trees/common/components/TreeNodeRenderer.js +20 -0
- package/lib/cjs/components/trees/common/components/TreeNodeRenderer.js.map +1 -0
- package/lib/cjs/components/trees/common/components/TreeRenderer.d.ts +19 -0
- package/lib/cjs/components/trees/common/components/TreeRenderer.js +30 -0
- package/lib/cjs/components/trees/common/components/TreeRenderer.js.map +1 -0
- package/lib/cjs/components/trees/common/components/TreeRenderer.scss +62 -0
- package/lib/cjs/components/trees/common/components/VisibilityTree.d.ts +14 -0
- package/lib/cjs/components/trees/common/components/VisibilityTree.js +41 -0
- package/lib/cjs/components/trees/common/components/VisibilityTree.js.map +1 -0
- package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +11 -35
- package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js +29 -83
- package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
- package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +14 -14
- package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +12 -12
- package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
- package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +24 -0
- package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js +262 -0
- package/lib/cjs/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
- package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.d.ts +11 -35
- package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js +41 -79
- package/lib/cjs/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
- package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +14 -14
- package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js +12 -12
- package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
- package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +28 -0
- package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +619 -0
- package/lib/cjs/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
- package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +26 -0
- package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +203 -0
- package/lib/cjs/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -0
- package/lib/cjs/components/trees/index.d.ts +4 -16
- package/lib/cjs/components/trees/index.js +9 -30
- package/lib/cjs/components/trees/index.js.map +1 -1
- package/lib/cjs/components/trees/models-tree/ModelsTree.d.ts +17 -72
- package/lib/cjs/components/trees/models-tree/ModelsTree.js +196 -135
- package/lib/cjs/components/trees/models-tree/ModelsTree.js.map +1 -1
- package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.d.ts +33 -0
- package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js +101 -0
- package/lib/cjs/components/trees/models-tree/ModelsTreeButtons.js.map +1 -0
- package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.d.ts +14 -35
- package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js +40 -83
- package/lib/cjs/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
- package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.d.ts +67 -0
- package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.js +617 -0
- package/lib/cjs/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -0
- package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +24 -0
- package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +121 -0
- package/lib/cjs/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
- package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +44 -0
- package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.js +325 -0
- package/lib/cjs/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -0
- package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.d.ts +31 -0
- package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.js +40 -0
- package/lib/cjs/components/trees/models-tree/internal/ModelsTreeNode.js.map +1 -0
- package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +122 -0
- package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +757 -0
- package/lib/cjs/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -0
- package/lib/cjs/components/trees/models-tree/internal/Tooltip.d.ts +13 -0
- package/lib/cjs/components/trees/models-tree/internal/Tooltip.js +29 -0
- package/lib/cjs/components/trees/models-tree/internal/Tooltip.js.map +1 -0
- package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +10 -0
- package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.js +43 -0
- package/lib/cjs/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -0
- package/lib/cjs/tree-widget-react.d.ts +3 -4
- package/lib/cjs/tree-widget-react.js +8 -4
- package/lib/cjs/tree-widget-react.js.map +1 -1
- package/lib/esm/TreeWidget.d.ts +2 -4
- package/lib/esm/TreeWidget.js +0 -6
- package/lib/esm/TreeWidget.js.map +1 -1
- package/lib/esm/components/SelectableTree.d.ts +3 -9
- package/lib/esm/components/SelectableTree.js +1 -1
- package/lib/esm/components/SelectableTree.js.map +1 -1
- package/lib/esm/components/TreeSelector.d.ts +2 -2
- package/lib/esm/components/TreeSelector.js.map +1 -1
- package/lib/esm/components/TreeWidgetUiItemsProvider.d.ts +14 -25
- package/lib/esm/components/TreeWidgetUiItemsProvider.js +42 -44
- package/lib/esm/components/TreeWidgetUiItemsProvider.js.map +1 -1
- package/lib/esm/components/tree-header/TreeHeader.js +17 -9
- package/lib/esm/components/tree-header/TreeHeader.js.map +1 -1
- package/lib/esm/components/tree-header/TreeHeader.scss +7 -41
- package/lib/esm/components/trees/Tree.scss +23 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTree.d.ts +22 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTree.js +74 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTree.js.map +1 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.d.ts +21 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.js +31 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTreeButtons.js.map +1 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.d.ts +55 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.js +68 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTreeComponent.js.map +1 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.d.ts +23 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.js +181 -0
- package/lib/esm/components/trees/categories-tree/CategoriesTreeDefinition.js.map +1 -0
- package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.d.ts +36 -0
- package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.js +90 -0
- package/lib/esm/components/trees/categories-tree/CategoriesVisibilityHandler.js.map +1 -0
- package/lib/esm/components/trees/categories-tree/UseCategories.d.ts +8 -0
- package/lib/esm/components/trees/categories-tree/UseCategories.js +18 -0
- package/lib/esm/components/trees/categories-tree/UseCategories.js.map +1 -0
- package/lib/esm/components/trees/common/CategoriesVisibilityUtils.d.ts +46 -0
- package/lib/esm/components/trees/{CategoriesVisibilityUtils.js → common/CategoriesVisibilityUtils.js} +51 -6
- package/lib/esm/components/trees/common/CategoriesVisibilityUtils.js.map +1 -0
- package/lib/esm/components/trees/common/FocusedInstancesContext.d.ts +14 -0
- package/lib/esm/components/trees/common/FocusedInstancesContext.js +12 -0
- package/lib/esm/components/trees/common/FocusedInstancesContext.js.map +1 -0
- package/lib/esm/components/trees/common/FocusedInstancesContextProvider.d.ts +8 -0
- package/lib/esm/components/trees/common/FocusedInstancesContextProvider.js +67 -0
- package/lib/esm/components/trees/common/FocusedInstancesContextProvider.js.map +1 -0
- package/lib/esm/components/trees/common/Rxjs.d.ts +10 -0
- package/lib/esm/components/trees/common/Rxjs.js +40 -0
- package/lib/esm/components/trees/common/Rxjs.js.map +1 -0
- package/lib/esm/components/trees/common/UseFeatureReporting.d.ts +11 -0
- package/lib/esm/components/trees/common/UseFeatureReporting.js +8 -0
- package/lib/esm/components/trees/common/UseFeatureReporting.js.map +1 -1
- package/lib/esm/components/trees/common/UseFiltering.d.ts +12 -0
- package/lib/esm/components/trees/common/UseFiltering.js +25 -0
- package/lib/esm/components/trees/common/UseFiltering.js.map +1 -0
- package/lib/esm/components/trees/common/UseHierarchiesLocalization.d.ts +8 -0
- package/lib/esm/components/trees/common/UseHierarchiesLocalization.js +29 -0
- package/lib/esm/components/trees/common/UseHierarchiesLocalization.js.map +1 -0
- package/lib/esm/components/trees/common/UseHierarchyFiltering.d.ts +19 -0
- package/lib/esm/components/trees/common/UseHierarchyFiltering.js +153 -0
- package/lib/esm/components/trees/common/UseHierarchyFiltering.js.map +1 -0
- package/lib/esm/components/trees/common/UseHierarchyVisibility.d.ts +30 -0
- package/lib/esm/components/trees/common/UseHierarchyVisibility.js +94 -0
- package/lib/esm/components/trees/common/UseHierarchyVisibility.js.map +1 -0
- package/lib/esm/components/trees/common/UseIModelChangeListener.d.ts +9 -0
- package/lib/esm/components/trees/common/UseIModelChangeListener.js +16 -0
- package/lib/esm/components/trees/common/UseIModelChangeListener.js.map +1 -0
- package/lib/esm/components/trees/common/UseMultiCheckboxHandler.d.ts +13 -0
- package/lib/esm/components/trees/common/UseMultiCheckboxHandler.js +31 -0
- package/lib/esm/components/trees/common/UseMultiCheckboxHandler.js.map +1 -0
- package/lib/esm/components/trees/common/UseNodeHighlighting.d.ts +16 -0
- package/lib/esm/components/trees/common/UseNodeHighlighting.js +136 -0
- package/lib/esm/components/trees/common/UseNodeHighlighting.js.map +1 -0
- package/lib/esm/components/trees/common/Utils.d.ts +16 -6
- package/lib/esm/components/trees/common/Utils.js +33 -29
- package/lib/esm/components/trees/common/Utils.js.map +1 -1
- package/lib/esm/components/trees/common/components/BaseTree.d.ts +34 -0
- package/lib/esm/components/trees/common/components/BaseTree.js +73 -0
- package/lib/esm/components/trees/common/components/BaseTree.js.map +1 -0
- package/lib/esm/components/trees/common/components/Delayed.d.ts +6 -0
- package/lib/esm/components/trees/common/components/Delayed.js +27 -0
- package/lib/esm/components/trees/common/components/Delayed.js.map +1 -0
- package/lib/esm/components/trees/common/components/ProgressOverlay.d.ts +5 -0
- package/lib/esm/components/trees/common/components/ProgressOverlay.js +12 -0
- package/lib/esm/components/trees/common/components/ProgressOverlay.js.map +1 -0
- package/lib/esm/components/trees/common/components/ProgressOverlay.scss +21 -0
- package/lib/esm/components/trees/common/components/TreeNodeCheckbox.d.ts +20 -0
- package/lib/esm/components/trees/common/components/TreeNodeCheckbox.js +21 -0
- package/lib/esm/components/trees/common/components/TreeNodeCheckbox.js.map +1 -0
- package/lib/esm/components/trees/common/components/TreeNodeRenderer.d.ts +13 -0
- package/lib/esm/components/trees/common/components/TreeNodeRenderer.js +13 -0
- package/lib/esm/components/trees/common/components/TreeNodeRenderer.js.map +1 -0
- package/lib/esm/components/trees/common/components/TreeRenderer.d.ts +19 -0
- package/lib/esm/components/trees/common/components/TreeRenderer.js +26 -0
- package/lib/esm/components/trees/common/components/TreeRenderer.js.map +1 -0
- package/lib/esm/components/trees/common/components/TreeRenderer.scss +62 -0
- package/lib/esm/components/trees/common/components/VisibilityTree.d.ts +14 -0
- package/lib/esm/components/trees/common/components/VisibilityTree.js +37 -0
- package/lib/esm/components/trees/common/components/VisibilityTree.js.map +1 -0
- package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.d.ts +11 -35
- package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js +27 -58
- package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTree.js.map +1 -1
- package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.d.ts +14 -14
- package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js +12 -12
- package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeComponent.js.map +1 -1
- package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.d.ts +24 -0
- package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js +258 -0
- package/lib/esm/components/trees/external-sources-tree/ExternalSourcesTreeDefinition.js.map +1 -0
- package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.d.ts +11 -35
- package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js +39 -54
- package/lib/esm/components/trees/imodel-content-tree/IModelContentTree.js.map +1 -1
- package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.d.ts +14 -14
- package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js +12 -12
- package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeComponent.js.map +1 -1
- package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.d.ts +28 -0
- package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.js +615 -0
- package/lib/esm/components/trees/imodel-content-tree/IModelContentTreeDefinition.js.map +1 -0
- package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.d.ts +26 -0
- package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js +199 -0
- package/lib/esm/components/trees/imodel-content-tree/internal/IModelContentTreeIdsCache.js.map +1 -0
- package/lib/esm/components/trees/index.d.ts +4 -16
- package/lib/esm/components/trees/index.js +4 -16
- package/lib/esm/components/trees/index.js.map +1 -1
- package/lib/esm/components/trees/models-tree/ModelsTree.d.ts +17 -72
- package/lib/esm/components/trees/models-tree/ModelsTree.js +196 -132
- package/lib/esm/components/trees/models-tree/ModelsTree.js.map +1 -1
- package/lib/esm/components/trees/models-tree/ModelsTreeButtons.d.ts +33 -0
- package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js +92 -0
- package/lib/esm/components/trees/models-tree/ModelsTreeButtons.js.map +1 -0
- package/lib/esm/components/trees/models-tree/ModelsTreeComponent.d.ts +14 -35
- package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js +38 -81
- package/lib/esm/components/trees/models-tree/ModelsTreeComponent.js.map +1 -1
- package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.d.ts +67 -0
- package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.js +613 -0
- package/lib/esm/components/trees/models-tree/ModelsTreeDefinition.js.map +1 -0
- package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.d.ts +24 -0
- package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js +117 -0
- package/lib/esm/components/trees/models-tree/internal/AlwaysAndNeverDrawnElementInfo.js.map +1 -0
- package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.d.ts +44 -0
- package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.js +321 -0
- package/lib/esm/components/trees/models-tree/internal/ModelsTreeIdsCache.js.map +1 -0
- package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.d.ts +31 -0
- package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.js +37 -0
- package/lib/esm/components/trees/models-tree/internal/ModelsTreeNode.js.map +1 -0
- package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.d.ts +122 -0
- package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js +748 -0
- package/lib/esm/components/trees/models-tree/internal/ModelsTreeVisibilityHandler.js.map +1 -0
- package/lib/esm/components/trees/models-tree/internal/Tooltip.d.ts +13 -0
- package/lib/esm/components/trees/models-tree/internal/Tooltip.js +24 -0
- package/lib/esm/components/trees/models-tree/internal/Tooltip.js.map +1 -0
- package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.d.ts +10 -0
- package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.js +39 -0
- package/lib/esm/components/trees/models-tree/internal/VisibilityChangeEventListener.js.map +1 -0
- package/lib/esm/tree-widget-react.d.ts +3 -4
- package/lib/esm/tree-widget-react.js +3 -4
- package/lib/esm/tree-widget-react.js.map +1 -1
- package/lib/public/locales/en/TreeWidget.json +126 -42
- package/package.json +19 -6
- package/lib/cjs/components/TreeFilteringState.d.ts +0 -18
- package/lib/cjs/components/TreeFilteringState.js +0 -46
- package/lib/cjs/components/TreeFilteringState.js.map +0 -1
- package/lib/cjs/components/trees/CategoriesVisibilityUtils.d.ts +0 -25
- package/lib/cjs/components/trees/CategoriesVisibilityUtils.js.map +0 -1
- package/lib/cjs/components/trees/VisibilityTreeBase.scss +0 -82
- package/lib/cjs/components/trees/VisibilityTreeEventHandler.d.ts +0 -67
- package/lib/cjs/components/trees/VisibilityTreeEventHandler.js +0 -158
- package/lib/cjs/components/trees/VisibilityTreeEventHandler.js.map +0 -1
- package/lib/cjs/components/trees/VisibilityTreeRenderer.d.ts +0 -100
- package/lib/cjs/components/trees/VisibilityTreeRenderer.js +0 -98
- package/lib/cjs/components/trees/VisibilityTreeRenderer.js.map +0 -1
- package/lib/cjs/components/trees/category-tree/Categories.json +0 -99
- package/lib/cjs/components/trees/category-tree/CategoriesTree.d.ts +0 -60
- package/lib/cjs/components/trees/category-tree/CategoriesTree.js +0 -141
- package/lib/cjs/components/trees/category-tree/CategoriesTree.js.map +0 -1
- package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.d.ts +0 -71
- package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js +0 -123
- package/lib/cjs/components/trees/category-tree/CategoriesTreeComponent.js.map +0 -1
- package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.d.ts +0 -72
- package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js +0 -172
- package/lib/cjs/components/trees/category-tree/CategoryVisibilityHandler.js.map +0 -1
- package/lib/cjs/components/trees/common/ContextMenu.d.ts +0 -39
- package/lib/cjs/components/trees/common/ContextMenu.js +0 -44
- package/lib/cjs/components/trees/common/ContextMenu.js.map +0 -1
- package/lib/cjs/components/trees/common/ReportingTreeEventHandler.d.ts +0 -27
- package/lib/cjs/components/trees/common/ReportingTreeEventHandler.js +0 -51
- package/lib/cjs/components/trees/common/ReportingTreeEventHandler.js.map +0 -1
- package/lib/cjs/components/trees/common/TreeNodeRenderer.d.ts +0 -61
- package/lib/cjs/components/trees/common/TreeNodeRenderer.js +0 -50
- package/lib/cjs/components/trees/common/TreeNodeRenderer.js.map +0 -1
- package/lib/cjs/components/trees/common/TreeRenderer.d.ts +0 -55
- package/lib/cjs/components/trees/common/TreeRenderer.js +0 -67
- package/lib/cjs/components/trees/common/TreeRenderer.js.map +0 -1
- package/lib/cjs/components/trees/common/TreeRenderer.scss +0 -149
- package/lib/cjs/components/trees/common/Types.d.ts +0 -57
- package/lib/cjs/components/trees/common/Types.js +0 -21
- package/lib/cjs/components/trees/common/Types.js.map +0 -1
- package/lib/cjs/components/trees/common/UseVisibilityTreeState.d.ts +0 -43
- package/lib/cjs/components/trees/common/UseVisibilityTreeState.js +0 -49
- package/lib/cjs/components/trees/common/UseVisibilityTreeState.js.map +0 -1
- package/lib/cjs/components/trees/external-sources-tree/ExternalSources.json +0 -228
- package/lib/cjs/components/trees/imodel-content-tree/IModelContent.json +0 -443
- package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.d.ts +0 -19
- package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js +0 -36
- package/lib/cjs/components/trees/models-tree/ModelsTreeEventHandler.js.map +0 -1
- package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.d.ts +0 -130
- package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js +0 -651
- package/lib/cjs/components/trees/models-tree/ModelsVisibilityHandler.js.map +0 -1
- package/lib/cjs/components/trees/models-tree/Utils.d.ts +0 -29
- package/lib/cjs/components/trees/models-tree/Utils.js +0 -556
- package/lib/cjs/components/trees/models-tree/Utils.js.map +0 -1
- package/lib/cjs/components/utils/UseTreeTransientState.d.ts +0 -19
- package/lib/cjs/components/utils/UseTreeTransientState.js +0 -33
- package/lib/cjs/components/utils/UseTreeTransientState.js.map +0 -1
- package/lib/esm/components/TreeFilteringState.d.ts +0 -18
- package/lib/esm/components/TreeFilteringState.js +0 -42
- package/lib/esm/components/TreeFilteringState.js.map +0 -1
- package/lib/esm/components/trees/CategoriesVisibilityUtils.d.ts +0 -25
- package/lib/esm/components/trees/CategoriesVisibilityUtils.js.map +0 -1
- package/lib/esm/components/trees/VisibilityTreeBase.scss +0 -82
- package/lib/esm/components/trees/VisibilityTreeEventHandler.d.ts +0 -67
- package/lib/esm/components/trees/VisibilityTreeEventHandler.js +0 -154
- package/lib/esm/components/trees/VisibilityTreeEventHandler.js.map +0 -1
- package/lib/esm/components/trees/VisibilityTreeRenderer.d.ts +0 -100
- package/lib/esm/components/trees/VisibilityTreeRenderer.js +0 -86
- package/lib/esm/components/trees/VisibilityTreeRenderer.js.map +0 -1
- package/lib/esm/components/trees/category-tree/Categories.json +0 -99
- package/lib/esm/components/trees/category-tree/CategoriesTree.d.ts +0 -60
- package/lib/esm/components/trees/category-tree/CategoriesTree.js +0 -111
- package/lib/esm/components/trees/category-tree/CategoriesTree.js.map +0 -1
- package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.d.ts +0 -71
- package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js +0 -116
- package/lib/esm/components/trees/category-tree/CategoriesTreeComponent.js.map +0 -1
- package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.d.ts +0 -72
- package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js +0 -164
- package/lib/esm/components/trees/category-tree/CategoryVisibilityHandler.js.map +0 -1
- package/lib/esm/components/trees/common/ContextMenu.d.ts +0 -39
- package/lib/esm/components/trees/common/ContextMenu.js +0 -39
- package/lib/esm/components/trees/common/ContextMenu.js.map +0 -1
- package/lib/esm/components/trees/common/ReportingTreeEventHandler.d.ts +0 -27
- package/lib/esm/components/trees/common/ReportingTreeEventHandler.js +0 -47
- package/lib/esm/components/trees/common/ReportingTreeEventHandler.js.map +0 -1
- package/lib/esm/components/trees/common/TreeNodeRenderer.d.ts +0 -61
- package/lib/esm/components/trees/common/TreeNodeRenderer.js +0 -44
- package/lib/esm/components/trees/common/TreeNodeRenderer.js.map +0 -1
- package/lib/esm/components/trees/common/TreeRenderer.d.ts +0 -55
- package/lib/esm/components/trees/common/TreeRenderer.js +0 -59
- package/lib/esm/components/trees/common/TreeRenderer.js.map +0 -1
- package/lib/esm/components/trees/common/TreeRenderer.scss +0 -149
- package/lib/esm/components/trees/common/Types.d.ts +0 -57
- package/lib/esm/components/trees/common/Types.js +0 -18
- package/lib/esm/components/trees/common/Types.js.map +0 -1
- package/lib/esm/components/trees/common/UseVisibilityTreeState.d.ts +0 -43
- package/lib/esm/components/trees/common/UseVisibilityTreeState.js +0 -45
- package/lib/esm/components/trees/common/UseVisibilityTreeState.js.map +0 -1
- package/lib/esm/components/trees/external-sources-tree/ExternalSources.json +0 -228
- package/lib/esm/components/trees/imodel-content-tree/IModelContent.json +0 -443
- package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.d.ts +0 -19
- package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js +0 -32
- package/lib/esm/components/trees/models-tree/ModelsTreeEventHandler.js.map +0 -1
- package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.d.ts +0 -130
- package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js +0 -641
- package/lib/esm/components/trees/models-tree/ModelsVisibilityHandler.js.map +0 -1
- package/lib/esm/components/trees/models-tree/Utils.d.ts +0 -29
- package/lib/esm/components/trees/models-tree/Utils.js +0 -548
- package/lib/esm/components/trees/models-tree/Utils.js.map +0 -1
- package/lib/esm/components/utils/UseTreeTransientState.d.ts +0 -19
- package/lib/esm/components/utils/UseTreeTransientState.js +0 -29
- package/lib/esm/components/utils/UseTreeTransientState.js.map +0 -1
|
@@ -0,0 +1,757 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.areAllModelsVisible = exports.toggleModels = exports.invertAllModels = exports.hideAllModels = exports.showAllModels = exports.createModelsTreeVisibilityHandler = exports.ELEMENT_CLASS_NAME = exports.CATEGORY_CLASS_NAME = exports.MODEL_CLASS_NAME = exports.SUBJECT_CLASS_NAME = void 0;
|
|
8
|
+
const rxjs_1 = require("rxjs");
|
|
9
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
10
|
+
const core_frontend_1 = require("@itwin/core-frontend");
|
|
11
|
+
const presentation_hierarchies_1 = require("@itwin/presentation-hierarchies");
|
|
12
|
+
const CategoriesVisibilityUtils_1 = require("../../common/CategoriesVisibilityUtils");
|
|
13
|
+
const Rxjs_1 = require("../../common/Rxjs");
|
|
14
|
+
const AlwaysAndNeverDrawnElementInfo_1 = require("./AlwaysAndNeverDrawnElementInfo");
|
|
15
|
+
const ModelsTreeNode_1 = require("./ModelsTreeNode");
|
|
16
|
+
const Tooltip_1 = require("./Tooltip");
|
|
17
|
+
const VisibilityChangeEventListener_1 = require("./VisibilityChangeEventListener");
|
|
18
|
+
exports.SUBJECT_CLASS_NAME = "BisCore.Subject";
|
|
19
|
+
exports.MODEL_CLASS_NAME = "BisCore.GeometricModel3d";
|
|
20
|
+
exports.CATEGORY_CLASS_NAME = "BisCore.SpatialCategory";
|
|
21
|
+
exports.ELEMENT_CLASS_NAME = "BisCore.GeometricElement3d";
|
|
22
|
+
function createCategoryKey(modelId, categoryId) {
|
|
23
|
+
return `${modelId}-${categoryId}`;
|
|
24
|
+
}
|
|
25
|
+
function parseCategoryKey(key) {
|
|
26
|
+
const [modelId, categoryId] = key.split("-");
|
|
27
|
+
return { modelId, categoryId };
|
|
28
|
+
}
|
|
29
|
+
function createElementKey(modelId, categoryId, elementId) {
|
|
30
|
+
return `${modelId}-${categoryId}-${elementId}`;
|
|
31
|
+
}
|
|
32
|
+
function parseElementKey(key) {
|
|
33
|
+
const [modelId, categoryId, elementId] = key.split("-");
|
|
34
|
+
return { modelId, categoryId, elementId };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates an instance if `ModelsTreeVisibilityHandler`.
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
function createModelsTreeVisibilityHandler(props) {
|
|
41
|
+
return new ModelsTreeVisibilityHandlerImpl(props);
|
|
42
|
+
}
|
|
43
|
+
exports.createModelsTreeVisibilityHandler = createModelsTreeVisibilityHandler;
|
|
44
|
+
class ModelsTreeVisibilityHandlerImpl {
|
|
45
|
+
constructor(_props) {
|
|
46
|
+
this._props = _props;
|
|
47
|
+
this._eventListener = (0, VisibilityChangeEventListener_1.createVisibilityChangeEventListener)(_props.viewport);
|
|
48
|
+
this._alwaysAndNeverDrawnElements = new AlwaysAndNeverDrawnElementInfo_1.AlwaysAndNeverDrawnElementInfo(_props.viewport);
|
|
49
|
+
this._idsCache = this._props.idsCache;
|
|
50
|
+
}
|
|
51
|
+
// istanbul ignore next
|
|
52
|
+
get onVisibilityChange() {
|
|
53
|
+
return this._eventListener.onVisibilityChange;
|
|
54
|
+
}
|
|
55
|
+
async getVisibilityStatus(node) {
|
|
56
|
+
return (0, rxjs_1.firstValueFrom)(this.getVisibilityStatusObs(node));
|
|
57
|
+
}
|
|
58
|
+
async changeVisibility(node, shouldDisplay) {
|
|
59
|
+
return (0, Rxjs_1.toVoidPromise)(this.changeVisibilityObs(node, shouldDisplay));
|
|
60
|
+
}
|
|
61
|
+
dispose() {
|
|
62
|
+
this._eventListener.dispose();
|
|
63
|
+
this._alwaysAndNeverDrawnElements.dispose();
|
|
64
|
+
}
|
|
65
|
+
getVisibilityStatusObs(node) {
|
|
66
|
+
if (node.filtering?.filteredChildrenIdentifierPaths?.length && !node.filtering.isFilterTarget) {
|
|
67
|
+
return this.getFilteredNodeVisibility({
|
|
68
|
+
parentKeys: [...node.parentKeys, node.key],
|
|
69
|
+
filterPaths: node.filtering.filteredChildrenIdentifierPaths,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
if (presentation_hierarchies_1.HierarchyNode.isClassGroupingNode(node)) {
|
|
73
|
+
return this.getClassGroupingNodeDisplayStatus(node);
|
|
74
|
+
}
|
|
75
|
+
if (!presentation_hierarchies_1.HierarchyNode.isInstancesNode(node)) {
|
|
76
|
+
return (0, rxjs_1.of)((0, Tooltip_1.createVisibilityStatus)("disabled"));
|
|
77
|
+
}
|
|
78
|
+
if (ModelsTreeNode_1.ModelsTreeNode.isSubjectNode(node)) {
|
|
79
|
+
// note: subject nodes may be merged to represent multiple subject instances
|
|
80
|
+
return this.getSubjectNodeVisibilityStatus(node.key.instanceKeys.map((key) => key.id));
|
|
81
|
+
}
|
|
82
|
+
if (ModelsTreeNode_1.ModelsTreeNode.isModelNode(node)) {
|
|
83
|
+
return this.getModelVisibilityStatus(node.key.instanceKeys[0].id);
|
|
84
|
+
}
|
|
85
|
+
const modelId = ModelsTreeNode_1.ModelsTreeNode.getModelId(node);
|
|
86
|
+
if (!modelId) {
|
|
87
|
+
return (0, rxjs_1.of)((0, Tooltip_1.createVisibilityStatus)("disabled"));
|
|
88
|
+
}
|
|
89
|
+
if (ModelsTreeNode_1.ModelsTreeNode.isCategoryNode(node)) {
|
|
90
|
+
return this.getCategoryDisplayStatus({
|
|
91
|
+
categoryId: node.key.instanceKeys[0].id,
|
|
92
|
+
modelId,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const categoryId = ModelsTreeNode_1.ModelsTreeNode.getCategoryId(node);
|
|
96
|
+
if (!categoryId) {
|
|
97
|
+
return (0, rxjs_1.of)((0, Tooltip_1.createVisibilityStatus)("disabled"));
|
|
98
|
+
}
|
|
99
|
+
return this.getElementDisplayStatus({
|
|
100
|
+
elementId: node.key.instanceKeys[0].id,
|
|
101
|
+
modelId,
|
|
102
|
+
categoryId,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
getFilteredNodeVisibility({ parentKeys, filterPaths }) {
|
|
106
|
+
return (0, rxjs_1.from)(this.getFilterTargets({ parentKeys, filterPaths })).pipe((0, rxjs_1.mergeMap)(({ subjects, models, categories, elements }) => {
|
|
107
|
+
const observables = new Array();
|
|
108
|
+
if (subjects?.size) {
|
|
109
|
+
observables.push(this.getSubjectNodeVisibilityStatus([...subjects]));
|
|
110
|
+
}
|
|
111
|
+
if (models?.size) {
|
|
112
|
+
observables.push((0, rxjs_1.from)(models).pipe((0, rxjs_1.mergeMap)((modelId) => this.getModelVisibilityStatus(modelId))));
|
|
113
|
+
}
|
|
114
|
+
if (categories?.size) {
|
|
115
|
+
observables.push((0, rxjs_1.from)(categories).pipe((0, rxjs_1.mergeMap)((key) => {
|
|
116
|
+
const { modelId, categoryId } = parseCategoryKey(key);
|
|
117
|
+
return this.getCategoryDisplayStatus({ modelId, categoryId });
|
|
118
|
+
})));
|
|
119
|
+
}
|
|
120
|
+
if (elements?.size) {
|
|
121
|
+
observables.push((0, rxjs_1.from)(elements).pipe((0, rxjs_1.mergeMap)((key) => {
|
|
122
|
+
const { modelId, categoryId, elementId } = parseElementKey(key);
|
|
123
|
+
return this.getElementDisplayStatus({ modelId, categoryId, elementId });
|
|
124
|
+
})));
|
|
125
|
+
}
|
|
126
|
+
return (0, rxjs_1.merge)(...observables);
|
|
127
|
+
}), (0, rxjs_1.map)((x) => x.state), getVisibilityFromTreeNodeChildren, (0, rxjs_1.map)((x) => {
|
|
128
|
+
(0, core_bentley_1.assert)(x !== "empty");
|
|
129
|
+
return (0, Tooltip_1.createVisibilityStatus)(x);
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
getSubjectNodeVisibilityStatus(subjectIds) {
|
|
133
|
+
const result = (0, rxjs_1.defer)(() => {
|
|
134
|
+
if (!this._props.viewport.view.isSpatialView()) {
|
|
135
|
+
return (0, rxjs_1.of)((0, Tooltip_1.createVisibilityStatus)("disabled", "subject.nonSpatialView"));
|
|
136
|
+
}
|
|
137
|
+
return (0, rxjs_1.from)(this._idsCache.getSubjectModelIds(subjectIds)).pipe((0, rxjs_1.concatAll)(), (0, rxjs_1.distinct)(), (0, rxjs_1.mergeMap)((modelId) => this.getModelVisibilityStatus(modelId)), (0, rxjs_1.map)((x) => x.state), getVisibilityStatusFromTreeNodeChildren({
|
|
138
|
+
visible: "subject.allModelsVisible",
|
|
139
|
+
hidden: "subject.allModelsHidden",
|
|
140
|
+
partial: "subject.someModelsHidden",
|
|
141
|
+
}));
|
|
142
|
+
});
|
|
143
|
+
const ovr = this._props.overrides?.getSubjectNodeVisibility;
|
|
144
|
+
return ovr ? (0, rxjs_1.from)(ovr(this.createOverrideProps({ ids: subjectIds }, result))) : result;
|
|
145
|
+
}
|
|
146
|
+
getModelVisibilityStatus(modelId) {
|
|
147
|
+
const result = (0, rxjs_1.defer)(() => {
|
|
148
|
+
const viewport = this._props.viewport;
|
|
149
|
+
if (!viewport.view.isSpatialView()) {
|
|
150
|
+
return (0, rxjs_1.of)((0, Tooltip_1.createVisibilityStatus)("disabled", "model.nonSpatialView"));
|
|
151
|
+
}
|
|
152
|
+
if (!viewport.view.viewsModel(modelId)) {
|
|
153
|
+
return (0, rxjs_1.of)((0, Tooltip_1.createVisibilityStatus)("hidden", "model.hiddenThroughModelSelector"));
|
|
154
|
+
}
|
|
155
|
+
return (0, rxjs_1.from)(this._idsCache.getModelCategories(modelId)).pipe((0, rxjs_1.concatAll)(), (0, rxjs_1.mergeMap)((categoryId) => this.getCategoryDisplayStatus({ modelId, categoryId })), (0, rxjs_1.map)((x) => x.state), getVisibilityFromTreeNodeChildren, (0, rxjs_1.map)((visibilityByCategories) => {
|
|
156
|
+
const state = visibilityByCategories === "empty" ? "visible" : visibilityByCategories;
|
|
157
|
+
return (0, Tooltip_1.createVisibilityStatus)(state, state === "partial" ? "model.someCategoriesHidden" : `model.allCategories${state ? "Visible" : "Hidden"}`);
|
|
158
|
+
}));
|
|
159
|
+
});
|
|
160
|
+
const ovr = this._props.overrides?.getModelDisplayStatus;
|
|
161
|
+
return ovr ? (0, rxjs_1.from)(ovr(this.createOverrideProps({ id: modelId }, result))) : result;
|
|
162
|
+
}
|
|
163
|
+
getDefaultCategoryVisibilityStatus({ modelId, categoryId }) {
|
|
164
|
+
const viewport = this._props.viewport;
|
|
165
|
+
if (!viewport.view.viewsModel(modelId)) {
|
|
166
|
+
return (0, Tooltip_1.createVisibilityStatus)("hidden", "category.hiddenThroughModel");
|
|
167
|
+
}
|
|
168
|
+
switch (this._props.viewport.perModelCategoryVisibility.getOverride(modelId, categoryId)) {
|
|
169
|
+
case core_frontend_1.PerModelCategoryVisibility.Override.Show:
|
|
170
|
+
return (0, Tooltip_1.createVisibilityStatus)("visible", "category.displayedThroughPerModelOverride");
|
|
171
|
+
case core_frontend_1.PerModelCategoryVisibility.Override.Hide:
|
|
172
|
+
return (0, Tooltip_1.createVisibilityStatus)("hidden", "category.hiddenThroughPerModelOverride");
|
|
173
|
+
}
|
|
174
|
+
const isVisible = viewport.view.viewsCategory(categoryId);
|
|
175
|
+
return isVisible
|
|
176
|
+
? (0, Tooltip_1.createVisibilityStatus)("visible", "category.displayedThroughCategorySelector")
|
|
177
|
+
: (0, Tooltip_1.createVisibilityStatus)("hidden", "category.hiddenThroughCategorySelector");
|
|
178
|
+
}
|
|
179
|
+
getCategoryDisplayStatus(props) {
|
|
180
|
+
const result = (0, rxjs_1.defer)(() => {
|
|
181
|
+
if (!this._props.viewport.view.viewsModel(props.modelId)) {
|
|
182
|
+
return (0, rxjs_1.of)((0, Tooltip_1.createVisibilityStatus)("hidden", "category.hiddenThroughModel"));
|
|
183
|
+
}
|
|
184
|
+
return this.getVisibilityFromAlwaysAndNeverDrawnElements({
|
|
185
|
+
queryProps: props,
|
|
186
|
+
tooltips: {
|
|
187
|
+
allElementsInAlwaysDrawnList: "category.allElementsVisible",
|
|
188
|
+
allElementsInNeverDrawnList: "category.allElementsHidden",
|
|
189
|
+
elementsInBothAlwaysAndNeverDrawn: "category.someElementsAreHidden",
|
|
190
|
+
noElementsInExclusiveAlwaysDrawnList: "category.allElementsHidden",
|
|
191
|
+
},
|
|
192
|
+
defaultStatus: () => this.getDefaultCategoryVisibilityStatus(props),
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
const ovr = this._props.overrides?.getCategoryDisplayStatus;
|
|
196
|
+
return ovr ? (0, rxjs_1.from)(ovr(this.createOverrideProps(props, result))) : result;
|
|
197
|
+
}
|
|
198
|
+
getClassGroupingNodeDisplayStatus(node) {
|
|
199
|
+
const result = (0, rxjs_1.defer)(() => {
|
|
200
|
+
const info = this.getGroupingNodeInfo(node);
|
|
201
|
+
const { modelId, categoryId, elementIds } = info;
|
|
202
|
+
if (!this._props.viewport.view.viewsModel(modelId)) {
|
|
203
|
+
return (0, rxjs_1.of)((0, Tooltip_1.createVisibilityStatus)("hidden"));
|
|
204
|
+
}
|
|
205
|
+
return this.getVisibilityFromAlwaysAndNeverDrawnElements({
|
|
206
|
+
elements: elementIds,
|
|
207
|
+
defaultStatus: () => {
|
|
208
|
+
const status = this.getDefaultCategoryVisibilityStatus({ categoryId, modelId });
|
|
209
|
+
return (0, Tooltip_1.createVisibilityStatus)(status.state, `groupingNode.${status.state}ThroughCategory`);
|
|
210
|
+
},
|
|
211
|
+
tooltips: {
|
|
212
|
+
allElementsInAlwaysDrawnList: "groupingNode.allElementsVisible",
|
|
213
|
+
allElementsInNeverDrawnList: "groupingNode.allElementsHidden",
|
|
214
|
+
elementsInBothAlwaysAndNeverDrawn: "groupingNode.someElementsAreHidden",
|
|
215
|
+
noElementsInExclusiveAlwaysDrawnList: "groupingNode.allElementsHidden",
|
|
216
|
+
},
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
const ovr = this._props.overrides?.getElementGroupingNodeDisplayStatus;
|
|
220
|
+
return ovr ? (0, rxjs_1.from)(ovr(this.createOverrideProps({ node }, result))) : result;
|
|
221
|
+
}
|
|
222
|
+
getElementOverriddenVisibility(elementId) {
|
|
223
|
+
const viewport = this._props.viewport;
|
|
224
|
+
if (viewport.neverDrawn?.has(elementId)) {
|
|
225
|
+
return (0, Tooltip_1.createVisibilityStatus)("hidden", "element.hiddenThroughNeverDrawnList");
|
|
226
|
+
}
|
|
227
|
+
if (viewport.alwaysDrawn?.size) {
|
|
228
|
+
if (viewport.alwaysDrawn.has(elementId)) {
|
|
229
|
+
return (0, Tooltip_1.createVisibilityStatus)("visible", "element.displayedThroughAlwaysDrawnList");
|
|
230
|
+
}
|
|
231
|
+
if (viewport.isAlwaysDrawnExclusive) {
|
|
232
|
+
return (0, Tooltip_1.createVisibilityStatus)("hidden", "element.hiddenDueToOtherElementsExclusivelyAlwaysDrawn");
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return undefined;
|
|
236
|
+
}
|
|
237
|
+
getElementDisplayStatus(props) {
|
|
238
|
+
const result = (0, rxjs_1.defer)(() => {
|
|
239
|
+
const viewport = this._props.viewport;
|
|
240
|
+
const { elementId, modelId, categoryId } = props;
|
|
241
|
+
if (!viewport.view.viewsModel(modelId)) {
|
|
242
|
+
return (0, rxjs_1.of)((0, Tooltip_1.createVisibilityStatus)("hidden", "element.hiddenThroughModel"));
|
|
243
|
+
}
|
|
244
|
+
let status = this.getElementOverriddenVisibility(elementId);
|
|
245
|
+
if (status) {
|
|
246
|
+
return (0, rxjs_1.of)(status);
|
|
247
|
+
}
|
|
248
|
+
status = this.getDefaultCategoryVisibilityStatus({ categoryId, modelId });
|
|
249
|
+
return (0, rxjs_1.of)((0, Tooltip_1.createVisibilityStatus)(status.state, status.state === "visible" ? undefined : "element.hiddenThroughCategory"));
|
|
250
|
+
});
|
|
251
|
+
const ovr = this._props.overrides?.getElementDisplayStatus;
|
|
252
|
+
return ovr ? (0, rxjs_1.from)(ovr(this.createOverrideProps(props, result))) : result;
|
|
253
|
+
}
|
|
254
|
+
/** Changes visibility of the items represented by the tree node. */
|
|
255
|
+
changeVisibilityObs(node, on) {
|
|
256
|
+
if (node.filtering?.filteredChildrenIdentifierPaths?.length && !node.filtering.isFilterTarget) {
|
|
257
|
+
return this.changeFilteredNodeVisibility({
|
|
258
|
+
parentKeys: [...node.parentKeys, node.key],
|
|
259
|
+
filterPaths: node.filtering.filteredChildrenIdentifierPaths,
|
|
260
|
+
on,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
if (presentation_hierarchies_1.HierarchyNode.isClassGroupingNode(node)) {
|
|
264
|
+
return this.changeElementGroupingNodeState(node, on);
|
|
265
|
+
}
|
|
266
|
+
// istanbul ignore if
|
|
267
|
+
if (!presentation_hierarchies_1.HierarchyNode.isInstancesNode(node)) {
|
|
268
|
+
return rxjs_1.EMPTY;
|
|
269
|
+
}
|
|
270
|
+
if (ModelsTreeNode_1.ModelsTreeNode.isSubjectNode(node)) {
|
|
271
|
+
return this.changeSubjectNodeState(node.key.instanceKeys.map((key) => key.id), on);
|
|
272
|
+
}
|
|
273
|
+
if (ModelsTreeNode_1.ModelsTreeNode.isModelNode(node)) {
|
|
274
|
+
return this.changeModelState({ ids: node.key.instanceKeys[0].id, on });
|
|
275
|
+
}
|
|
276
|
+
const modelId = ModelsTreeNode_1.ModelsTreeNode.getModelId(node);
|
|
277
|
+
// istanbul ignore if
|
|
278
|
+
if (!modelId) {
|
|
279
|
+
return rxjs_1.EMPTY;
|
|
280
|
+
}
|
|
281
|
+
if (ModelsTreeNode_1.ModelsTreeNode.isCategoryNode(node)) {
|
|
282
|
+
return this.changeCategoryState({
|
|
283
|
+
categoryId: node.key.instanceKeys[0].id,
|
|
284
|
+
modelId,
|
|
285
|
+
on,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
const categoryId = ModelsTreeNode_1.ModelsTreeNode.getCategoryId(node);
|
|
289
|
+
// istanbul ignore if
|
|
290
|
+
if (!categoryId) {
|
|
291
|
+
// istanbul ignore next
|
|
292
|
+
return rxjs_1.EMPTY;
|
|
293
|
+
}
|
|
294
|
+
return this.changeElementState({
|
|
295
|
+
elementId: node.key.instanceKeys[0].id,
|
|
296
|
+
modelId,
|
|
297
|
+
categoryId,
|
|
298
|
+
on,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
async getFilterTargets({ parentKeys, filterPaths }) {
|
|
302
|
+
const filterTargets = {};
|
|
303
|
+
function addFilterTarget(targetType, value) {
|
|
304
|
+
(filterTargets[targetType] ??= new Set()).add(value);
|
|
305
|
+
}
|
|
306
|
+
const imodelAccess = this._props.imodelAccess;
|
|
307
|
+
// Remove all paths such that there are paths to any of the ancestors of the filter target.
|
|
308
|
+
filterPaths = reduceFilterPaths(filterPaths);
|
|
309
|
+
await Promise.all(filterPaths.map(async (path) => {
|
|
310
|
+
const target = path[path.length - 1];
|
|
311
|
+
if (!presentation_hierarchies_1.HierarchyNodeIdentifier.isInstanceNodeIdentifier(target)) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const previousPath = path.slice(0, path.length - 1);
|
|
315
|
+
if (await imodelAccess.classDerivesFrom(target.className, exports.SUBJECT_CLASS_NAME)) {
|
|
316
|
+
addFilterTarget("subjects", target.id);
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
if (await imodelAccess.classDerivesFrom(target.className, exports.MODEL_CLASS_NAME)) {
|
|
320
|
+
addFilterTarget("models", target.id);
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
if (await imodelAccess.classDerivesFrom(target.className, exports.CATEGORY_CLASS_NAME)) {
|
|
324
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
325
|
+
const modelId = await this.findClassIdInFilterPath(previousPath, parentKeys, exports.MODEL_CLASS_NAME);
|
|
326
|
+
addFilterTarget("categories", createCategoryKey(modelId, target.id));
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
const [modelId, categoryId] = await Promise.all([
|
|
330
|
+
this.findClassIdInFilterPath(previousPath, parentKeys, exports.MODEL_CLASS_NAME),
|
|
331
|
+
this.findClassIdInFilterPath(previousPath, parentKeys, exports.CATEGORY_CLASS_NAME),
|
|
332
|
+
]);
|
|
333
|
+
addFilterTarget("elements", createElementKey(modelId, categoryId, target.id));
|
|
334
|
+
// Add parent elements to the filter targets as well
|
|
335
|
+
for (let idx = path.length - 1; idx >= 0; --idx) {
|
|
336
|
+
const pathIdentifier = path[idx];
|
|
337
|
+
if (!presentation_hierarchies_1.HierarchyNodeIdentifier.isInstanceNodeIdentifier(pathIdentifier)) {
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
if (!(await imodelAccess.classDerivesFrom(pathIdentifier.className, exports.ELEMENT_CLASS_NAME))) {
|
|
341
|
+
break;
|
|
342
|
+
}
|
|
343
|
+
addFilterTarget("elements", createElementKey(modelId, categoryId, pathIdentifier.id));
|
|
344
|
+
}
|
|
345
|
+
}));
|
|
346
|
+
return filterTargets;
|
|
347
|
+
}
|
|
348
|
+
changeFilteredNodeVisibility({ on, ...props }) {
|
|
349
|
+
return (0, rxjs_1.from)(this.getFilterTargets(props)).pipe((0, rxjs_1.mergeMap)(({ subjects, models, categories, elements }) => {
|
|
350
|
+
const observables = new Array();
|
|
351
|
+
if (subjects?.size) {
|
|
352
|
+
observables.push(this.changeSubjectNodeState([...subjects], on));
|
|
353
|
+
}
|
|
354
|
+
if (models?.size) {
|
|
355
|
+
observables.push(this.changeModelState({ ids: models, on }));
|
|
356
|
+
}
|
|
357
|
+
if (categories?.size) {
|
|
358
|
+
observables.push((0, rxjs_1.from)(categories).pipe((0, rxjs_1.mergeMap)((key) => {
|
|
359
|
+
const { modelId, categoryId } = parseCategoryKey(key);
|
|
360
|
+
return this.changeCategoryState({ modelId, categoryId, on });
|
|
361
|
+
})));
|
|
362
|
+
}
|
|
363
|
+
if (elements?.size) {
|
|
364
|
+
observables.push((0, rxjs_1.from)(elements).pipe((0, rxjs_1.mergeMap)((key) => {
|
|
365
|
+
const { modelId, categoryId, elementId } = parseElementKey(key);
|
|
366
|
+
return this.changeElementState({ modelId, categoryId, elementId, on });
|
|
367
|
+
})));
|
|
368
|
+
}
|
|
369
|
+
return (0, rxjs_1.merge)(...observables);
|
|
370
|
+
}));
|
|
371
|
+
}
|
|
372
|
+
changeSubjectNodeState(ids, on) {
|
|
373
|
+
const result = (0, rxjs_1.defer)(() => {
|
|
374
|
+
// istanbul ignore if
|
|
375
|
+
if (!this._props.viewport.view.isSpatialView()) {
|
|
376
|
+
return rxjs_1.EMPTY;
|
|
377
|
+
}
|
|
378
|
+
return (0, rxjs_1.from)(this._idsCache.getSubjectModelIds(ids)).pipe((0, rxjs_1.mergeMap)((modelIds) => this.changeModelState({ ids: modelIds, on })));
|
|
379
|
+
});
|
|
380
|
+
const ovr = this._props.overrides?.changeSubjectNodeState;
|
|
381
|
+
return ovr ? (0, rxjs_1.from)(ovr(this.createVoidOverrideProps({ ids, on }, result))) : result;
|
|
382
|
+
}
|
|
383
|
+
changeModelState(props) {
|
|
384
|
+
const result = (0, rxjs_1.defer)(() => {
|
|
385
|
+
const viewport = this._props.viewport;
|
|
386
|
+
// istanbul ignore if
|
|
387
|
+
if (!viewport.view.isSpatialView()) {
|
|
388
|
+
return rxjs_1.EMPTY;
|
|
389
|
+
}
|
|
390
|
+
const { ids, on } = props;
|
|
391
|
+
if (!on) {
|
|
392
|
+
viewport.changeModelDisplay(ids, false);
|
|
393
|
+
return rxjs_1.EMPTY;
|
|
394
|
+
}
|
|
395
|
+
return (0, rxjs_1.concat)((0, rxjs_1.defer)(() => {
|
|
396
|
+
viewport.perModelCategoryVisibility.clearOverrides(ids);
|
|
397
|
+
return (0, rxjs_1.from)(viewport.addViewedModels(ids));
|
|
398
|
+
}), (typeof ids === "string" ? (0, rxjs_1.of)(ids) : (0, rxjs_1.from)(ids)).pipe((0, rxjs_1.mergeMap)((modelId) => {
|
|
399
|
+
return (0, rxjs_1.from)(this._idsCache.getModelCategories(modelId)).pipe((0, rxjs_1.concatAll)(), (0, rxjs_1.mergeMap)((categoryId) => this.changeCategoryState({ categoryId, modelId, on: true })));
|
|
400
|
+
})));
|
|
401
|
+
});
|
|
402
|
+
const ovr = this._props.overrides?.changeModelState;
|
|
403
|
+
return ovr ? (0, rxjs_1.from)(ovr(this.createVoidOverrideProps(props, result))) : result;
|
|
404
|
+
}
|
|
405
|
+
showModelWithoutAnyCategoriesOrElements(modelId) {
|
|
406
|
+
const viewport = this._props.viewport;
|
|
407
|
+
return (0, rxjs_1.forkJoin)({
|
|
408
|
+
categories: this._idsCache.getModelCategories(modelId),
|
|
409
|
+
alwaysDrawnElements: this.getAlwaysDrawnElements({ modelId }),
|
|
410
|
+
}).pipe((0, rxjs_1.mergeMap)(async ({ categories, alwaysDrawnElements }) => {
|
|
411
|
+
const alwaysDrawn = this._props.viewport.alwaysDrawn;
|
|
412
|
+
if (alwaysDrawn && alwaysDrawnElements) {
|
|
413
|
+
viewport.setAlwaysDrawn(setDifference(alwaysDrawn, alwaysDrawnElements));
|
|
414
|
+
}
|
|
415
|
+
categories.forEach((categoryId) => {
|
|
416
|
+
this.changeCategoryStateInViewportAccordingToModelVisibility(modelId, categoryId, false);
|
|
417
|
+
});
|
|
418
|
+
await viewport.addViewedModels(modelId);
|
|
419
|
+
}));
|
|
420
|
+
}
|
|
421
|
+
changeCategoryStateInViewportAccordingToModelVisibility(modelId, categoryId, on) {
|
|
422
|
+
const viewport = this._props.viewport;
|
|
423
|
+
const isDisplayedInSelector = viewport.view.viewsCategory(categoryId);
|
|
424
|
+
const override = on === isDisplayedInSelector
|
|
425
|
+
? core_frontend_1.PerModelCategoryVisibility.Override.None
|
|
426
|
+
: on
|
|
427
|
+
? core_frontend_1.PerModelCategoryVisibility.Override.Show
|
|
428
|
+
: core_frontend_1.PerModelCategoryVisibility.Override.Hide;
|
|
429
|
+
viewport.perModelCategoryVisibility.setOverride(modelId, categoryId, override);
|
|
430
|
+
if (override === core_frontend_1.PerModelCategoryVisibility.Override.None && on) {
|
|
431
|
+
// we took off the override which means the category is displayed in selector, but
|
|
432
|
+
// doesn't mean all its subcategories are displayed - this call ensures that
|
|
433
|
+
viewport.changeCategoryDisplay(categoryId, true, true);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
changeCategoryState(props) {
|
|
437
|
+
const result = (0, rxjs_1.defer)(() => {
|
|
438
|
+
const viewport = this._props.viewport;
|
|
439
|
+
const { modelId, categoryId, on } = props;
|
|
440
|
+
return (0, rxjs_1.concat)(props.on && !viewport.view.viewsModel(modelId) ? this.showModelWithoutAnyCategoriesOrElements(modelId) : rxjs_1.EMPTY, (0, rxjs_1.defer)(() => {
|
|
441
|
+
this.changeCategoryStateInViewportAccordingToModelVisibility(modelId, categoryId, on);
|
|
442
|
+
return this.clearAlwaysAndNeverDrawnElements(props);
|
|
443
|
+
}));
|
|
444
|
+
});
|
|
445
|
+
const ovr = this._props.overrides?.changeCategoryState;
|
|
446
|
+
return ovr ? (0, rxjs_1.from)(ovr(this.createVoidOverrideProps(props, result))) : result;
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Updates visibility of all grouping node's elements.
|
|
450
|
+
* @see `changeElementState`
|
|
451
|
+
*/
|
|
452
|
+
changeElementGroupingNodeState(node, on) {
|
|
453
|
+
const result = (0, rxjs_1.defer)(() => {
|
|
454
|
+
const info = this.getGroupingNodeInfo(node);
|
|
455
|
+
const { modelId, categoryId, elementIds } = info;
|
|
456
|
+
const viewport = this._props.viewport;
|
|
457
|
+
return (0, rxjs_1.concat)(on && !viewport.view.viewsModel(modelId) ? this.showModelWithoutAnyCategoriesOrElements(modelId) : rxjs_1.EMPTY, (0, rxjs_1.defer)(() => {
|
|
458
|
+
const categoryVisibility = this.getDefaultCategoryVisibilityStatus({ categoryId, modelId });
|
|
459
|
+
const isDisplayedByDefault = categoryVisibility.state === "visible";
|
|
460
|
+
return (0, rxjs_1.from)(elementIds).pipe(this.changeElementStateNoChildrenOperator({ on, isDisplayedByDefault }));
|
|
461
|
+
}));
|
|
462
|
+
});
|
|
463
|
+
const ovr = this._props.overrides?.changeElementGroupingNodeState;
|
|
464
|
+
return ovr ? (0, rxjs_1.from)(ovr(this.createVoidOverrideProps({ node, on }, result))) : result;
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Updates visibility of an element and all its child elements by adding them to the always/never drawn list.
|
|
468
|
+
* @note If element is to be enabled and model is hidden, it will be enabled.
|
|
469
|
+
*/
|
|
470
|
+
changeElementState(props) {
|
|
471
|
+
const result = (0, rxjs_1.defer)(() => {
|
|
472
|
+
const { elementId, on, modelId, categoryId } = props;
|
|
473
|
+
const viewport = this._props.viewport;
|
|
474
|
+
return (0, rxjs_1.concat)(props.on && !viewport.view.viewsModel(modelId) ? this.showModelWithoutAnyCategoriesOrElements(modelId) : rxjs_1.EMPTY, (0, rxjs_1.defer)(() => {
|
|
475
|
+
const categoryVisibility = this.getDefaultCategoryVisibilityStatus({ categoryId, modelId });
|
|
476
|
+
const isDisplayedByDefault = categoryVisibility.state === "visible";
|
|
477
|
+
return (0, rxjs_1.of)(elementId).pipe(this.changeElementStateNoChildrenOperator({ on, isDisplayedByDefault }));
|
|
478
|
+
}));
|
|
479
|
+
});
|
|
480
|
+
const ovr = this._props.overrides?.changeElementState;
|
|
481
|
+
return ovr ? (0, rxjs_1.from)(ovr(this.createVoidOverrideProps(props, result))) : result;
|
|
482
|
+
}
|
|
483
|
+
changeElementStateNoChildrenOperator(props) {
|
|
484
|
+
return (elementIds) => {
|
|
485
|
+
const { on, isDisplayedByDefault } = props;
|
|
486
|
+
const isAlwaysDrawnExclusive = this._props.viewport.isAlwaysDrawnExclusive;
|
|
487
|
+
return elementIds.pipe((0, rxjs_1.reduce)((acc, elementId) => {
|
|
488
|
+
if (on) {
|
|
489
|
+
const wasRemoved = acc.neverDrawn.delete(elementId);
|
|
490
|
+
acc.changedNeverDrawn ||= wasRemoved;
|
|
491
|
+
// If exclusive mode is enabled, we must add the element to the always drawn list.
|
|
492
|
+
if ((!isDisplayedByDefault || isAlwaysDrawnExclusive) && !acc.alwaysDrawn.has(elementId)) {
|
|
493
|
+
acc.alwaysDrawn.add(elementId);
|
|
494
|
+
acc.changedAlwaysDrawn = true;
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
else {
|
|
498
|
+
const wasRemoved = acc.alwaysDrawn.delete(elementId);
|
|
499
|
+
acc.changedAlwaysDrawn ||= wasRemoved;
|
|
500
|
+
// If exclusive mode is not enabled, we have to add the element to the never drawn list.
|
|
501
|
+
if (isDisplayedByDefault && !isAlwaysDrawnExclusive && !acc.neverDrawn.has(elementId)) {
|
|
502
|
+
acc.neverDrawn.add(elementId);
|
|
503
|
+
acc.changedNeverDrawn = true;
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
return acc;
|
|
507
|
+
}, {
|
|
508
|
+
changedNeverDrawn: false,
|
|
509
|
+
changedAlwaysDrawn: false,
|
|
510
|
+
neverDrawn: new Set(this._props.viewport.neverDrawn || []),
|
|
511
|
+
alwaysDrawn: new Set(this._props.viewport.alwaysDrawn || []),
|
|
512
|
+
}), (0, rxjs_1.map)((state) => {
|
|
513
|
+
state.changedNeverDrawn && this._props.viewport.setNeverDrawn(state.neverDrawn);
|
|
514
|
+
state.changedAlwaysDrawn && this._props.viewport.setAlwaysDrawn(state.alwaysDrawn, this._props.viewport.isAlwaysDrawnExclusive);
|
|
515
|
+
}));
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
getVisibilityFromAlwaysAndNeverDrawnElementsImpl(props) {
|
|
519
|
+
const { alwaysDrawn, neverDrawn, totalCount } = props;
|
|
520
|
+
if (neverDrawn?.size === totalCount) {
|
|
521
|
+
return (0, Tooltip_1.createVisibilityStatus)("hidden", props.tooltips.allElementsInNeverDrawnList);
|
|
522
|
+
}
|
|
523
|
+
if (alwaysDrawn?.size === totalCount) {
|
|
524
|
+
return (0, Tooltip_1.createVisibilityStatus)("visible", props.tooltips.allElementsInAlwaysDrawnList);
|
|
525
|
+
}
|
|
526
|
+
const viewport = this._props.viewport;
|
|
527
|
+
if (viewport.isAlwaysDrawnExclusive && viewport.alwaysDrawn?.size) {
|
|
528
|
+
return alwaysDrawn?.size
|
|
529
|
+
? (0, Tooltip_1.createVisibilityStatus)("partial", props.tooltips.elementsInBothAlwaysAndNeverDrawn)
|
|
530
|
+
: (0, Tooltip_1.createVisibilityStatus)("hidden", props.tooltips.noElementsInExclusiveAlwaysDrawnList);
|
|
531
|
+
}
|
|
532
|
+
const status = props.defaultStatus();
|
|
533
|
+
if ((status.state === "visible" && neverDrawn?.size) || (status.state === "hidden" && alwaysDrawn?.size)) {
|
|
534
|
+
return (0, Tooltip_1.createVisibilityStatus)("partial");
|
|
535
|
+
}
|
|
536
|
+
return status;
|
|
537
|
+
}
|
|
538
|
+
getVisibilityFromAlwaysAndNeverDrawnElements(props) {
|
|
539
|
+
const viewport = this._props.viewport;
|
|
540
|
+
if (viewport.isAlwaysDrawnExclusive) {
|
|
541
|
+
if (!viewport?.alwaysDrawn?.size) {
|
|
542
|
+
return (0, rxjs_1.of)((0, Tooltip_1.createVisibilityStatus)("hidden", props.tooltips.noElementsInExclusiveAlwaysDrawnList));
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
else if (!viewport?.neverDrawn?.size && !viewport?.alwaysDrawn?.size) {
|
|
546
|
+
return (0, rxjs_1.of)(props.defaultStatus());
|
|
547
|
+
}
|
|
548
|
+
if ("elements" in props) {
|
|
549
|
+
return (0, rxjs_1.of)(this.getVisibilityFromAlwaysAndNeverDrawnElementsImpl({
|
|
550
|
+
...props,
|
|
551
|
+
alwaysDrawn: viewport.alwaysDrawn?.size ? setIntersection(props.elements, viewport.alwaysDrawn) : undefined,
|
|
552
|
+
neverDrawn: viewport.neverDrawn?.size ? setIntersection(props.elements, viewport.neverDrawn) : undefined,
|
|
553
|
+
totalCount: props.elements.size,
|
|
554
|
+
}));
|
|
555
|
+
}
|
|
556
|
+
const { modelId, categoryId } = props.queryProps;
|
|
557
|
+
const totalCount = categoryId ? this._idsCache.getCategoryElementsCount(modelId, categoryId) : this._idsCache.getModelElementCount(modelId);
|
|
558
|
+
return (0, rxjs_1.forkJoin)({
|
|
559
|
+
totalCount,
|
|
560
|
+
alwaysDrawn: this.getAlwaysDrawnElements(props.queryProps),
|
|
561
|
+
neverDrawn: this.getNeverDrawnElements(props.queryProps),
|
|
562
|
+
}).pipe((0, rxjs_1.map)((state) => {
|
|
563
|
+
return this.getVisibilityFromAlwaysAndNeverDrawnElementsImpl({
|
|
564
|
+
...props,
|
|
565
|
+
...state,
|
|
566
|
+
});
|
|
567
|
+
}));
|
|
568
|
+
}
|
|
569
|
+
getAlwaysDrawnElements(props) {
|
|
570
|
+
return this._alwaysAndNeverDrawnElements.getElements({ ...props, setType: "always" });
|
|
571
|
+
}
|
|
572
|
+
getNeverDrawnElements(props) {
|
|
573
|
+
return this._alwaysAndNeverDrawnElements.getElements({ ...props, setType: "never" });
|
|
574
|
+
}
|
|
575
|
+
clearAlwaysAndNeverDrawnElements(props) {
|
|
576
|
+
return (0, rxjs_1.forkJoin)({
|
|
577
|
+
alwaysDrawn: this.getAlwaysDrawnElements(props),
|
|
578
|
+
neverDrawn: this.getNeverDrawnElements(props),
|
|
579
|
+
}).pipe((0, rxjs_1.map)(({ alwaysDrawn, neverDrawn }) => {
|
|
580
|
+
const viewport = this._props.viewport;
|
|
581
|
+
if (viewport.alwaysDrawn?.size && alwaysDrawn.size) {
|
|
582
|
+
viewport.setAlwaysDrawn(setDifference(viewport.alwaysDrawn, alwaysDrawn));
|
|
583
|
+
}
|
|
584
|
+
if (viewport.neverDrawn?.size && neverDrawn.size) {
|
|
585
|
+
viewport.setNeverDrawn(setDifference(viewport.neverDrawn, neverDrawn));
|
|
586
|
+
}
|
|
587
|
+
}));
|
|
588
|
+
}
|
|
589
|
+
createVoidOverrideProps(props, obs) {
|
|
590
|
+
return {
|
|
591
|
+
...props,
|
|
592
|
+
originalImplementation: async () => (0, Rxjs_1.toVoidPromise)(obs),
|
|
593
|
+
handler: this,
|
|
594
|
+
};
|
|
595
|
+
}
|
|
596
|
+
createOverrideProps(props, obs) {
|
|
597
|
+
return {
|
|
598
|
+
...props,
|
|
599
|
+
originalImplementation: async () => (0, rxjs_1.firstValueFrom)(obs),
|
|
600
|
+
handler: this,
|
|
601
|
+
};
|
|
602
|
+
}
|
|
603
|
+
getGroupingNodeInfo(node) {
|
|
604
|
+
const modelId = ModelsTreeNode_1.ModelsTreeNode.getModelId(node);
|
|
605
|
+
const categoryId = ModelsTreeNode_1.ModelsTreeNode.getCategoryId(node);
|
|
606
|
+
(0, core_bentley_1.assert)(!!modelId && !!categoryId);
|
|
607
|
+
const elementIds = new Set(node.groupedInstanceKeys.map((key) => key.id));
|
|
608
|
+
return { modelId, categoryId, elementIds };
|
|
609
|
+
}
|
|
610
|
+
async findClassIdInFilterPath(path, parentKeys, className) {
|
|
611
|
+
function* keysToCheck() {
|
|
612
|
+
for (let i = path.length - 1; i >= 0; --i) {
|
|
613
|
+
const id = path[i];
|
|
614
|
+
if (presentation_hierarchies_1.HierarchyNodeIdentifier.isInstanceNodeIdentifier(id)) {
|
|
615
|
+
yield id;
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
for (let i = parentKeys.length - 1; i >= 0; --i) {
|
|
619
|
+
const key = parentKeys[i];
|
|
620
|
+
if (presentation_hierarchies_1.HierarchyNodeKey.isInstances(key)) {
|
|
621
|
+
yield* key.instanceKeys;
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
for (const parentKey of keysToCheck()) {
|
|
626
|
+
if (await this._props.imodelAccess.classDerivesFrom(parentKey.className, className)) {
|
|
627
|
+
return parentKey.id;
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
(0, core_bentley_1.assert)(false, () => `Cannot find an instance of ${className} in instance keys: ${JSON.stringify([...keysToCheck()], undefined, 2)}`);
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
function getVisibilityFromTreeNodeChildren(obs) {
|
|
634
|
+
return obs.pipe((0, Rxjs_1.reduceWhile)((x) => x.allVisible || x.allHidden, (acc, val) => {
|
|
635
|
+
acc.allVisible &&= val === "visible";
|
|
636
|
+
acc.allHidden &&= val === "hidden";
|
|
637
|
+
return acc;
|
|
638
|
+
}, { allVisible: true, allHidden: true }), (0, rxjs_1.map)((x) => {
|
|
639
|
+
if (!x) {
|
|
640
|
+
return "empty";
|
|
641
|
+
}
|
|
642
|
+
return x.allVisible ? "visible" : x.allHidden ? "hidden" : "partial";
|
|
643
|
+
}));
|
|
644
|
+
}
|
|
645
|
+
function getVisibilityStatusFromTreeNodeChildren(tooltipMap) {
|
|
646
|
+
return (obs) => {
|
|
647
|
+
return getVisibilityFromTreeNodeChildren(obs).pipe((0, rxjs_1.map)((visibility) => {
|
|
648
|
+
if (visibility === "empty") {
|
|
649
|
+
visibility = "visible";
|
|
650
|
+
}
|
|
651
|
+
return (0, Tooltip_1.createVisibilityStatus)(visibility, tooltipMap[visibility]);
|
|
652
|
+
}));
|
|
653
|
+
};
|
|
654
|
+
}
|
|
655
|
+
function setDifference(lhs, rhs) {
|
|
656
|
+
const result = new Set();
|
|
657
|
+
lhs.forEach((x) => !rhs.has(x) && result.add(x));
|
|
658
|
+
return result;
|
|
659
|
+
}
|
|
660
|
+
function setIntersection(lhs, rhs) {
|
|
661
|
+
const result = new Set();
|
|
662
|
+
lhs.forEach((x) => rhs.has(x) && result.add(x));
|
|
663
|
+
return result;
|
|
664
|
+
}
|
|
665
|
+
function reduceFilterPaths(paths) {
|
|
666
|
+
const sorted = [...paths].sort((a, b) => a.length - b.length);
|
|
667
|
+
paths = [];
|
|
668
|
+
for (const path of sorted) {
|
|
669
|
+
if (!arraySortedByLengthContainsPrefix(paths, path)) {
|
|
670
|
+
paths.push(path);
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
return paths;
|
|
674
|
+
}
|
|
675
|
+
function arraySortedByLengthContainsPrefix(targetArray, source) {
|
|
676
|
+
for (const targetVal of targetArray) {
|
|
677
|
+
if (targetVal.length >= source.length) {
|
|
678
|
+
break;
|
|
679
|
+
}
|
|
680
|
+
let isPrefix = true;
|
|
681
|
+
for (let i = 0; i < targetVal.length; ++i) {
|
|
682
|
+
if (!presentation_hierarchies_1.HierarchyNodeIdentifier.equal(targetVal[i], source[i])) {
|
|
683
|
+
isPrefix = false;
|
|
684
|
+
break;
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
if (isPrefix) {
|
|
688
|
+
return true;
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
return false;
|
|
692
|
+
}
|
|
693
|
+
/**
|
|
694
|
+
* Enables display of all given models. Also enables display of all categories and clears always and
|
|
695
|
+
* never drawn lists in the viewport.
|
|
696
|
+
* @public
|
|
697
|
+
*/
|
|
698
|
+
async function showAllModels(models, viewport) {
|
|
699
|
+
await viewport.addViewedModels(models);
|
|
700
|
+
viewport.clearNeverDrawn();
|
|
701
|
+
viewport.clearAlwaysDrawn();
|
|
702
|
+
await (0, CategoriesVisibilityUtils_1.toggleAllCategories)(core_frontend_1.IModelApp.viewManager, viewport.iModel, true, viewport, false);
|
|
703
|
+
}
|
|
704
|
+
exports.showAllModels = showAllModels;
|
|
705
|
+
/**
|
|
706
|
+
* Disables display of all given models.
|
|
707
|
+
* @public
|
|
708
|
+
*/
|
|
709
|
+
async function hideAllModels(models, viewport) {
|
|
710
|
+
viewport.changeModelDisplay(models, false);
|
|
711
|
+
}
|
|
712
|
+
exports.hideAllModels = hideAllModels;
|
|
713
|
+
/**
|
|
714
|
+
* Inverts display of all given models.
|
|
715
|
+
* @public
|
|
716
|
+
*/
|
|
717
|
+
async function invertAllModels(models, viewport) {
|
|
718
|
+
const notViewedModels = [];
|
|
719
|
+
const viewedModels = [];
|
|
720
|
+
models.forEach((modelId) => {
|
|
721
|
+
if (viewport.viewsModel(modelId)) {
|
|
722
|
+
viewedModels.push(modelId);
|
|
723
|
+
}
|
|
724
|
+
else {
|
|
725
|
+
notViewedModels.push(modelId);
|
|
726
|
+
}
|
|
727
|
+
});
|
|
728
|
+
await viewport.addViewedModels(notViewedModels);
|
|
729
|
+
viewport.changeModelDisplay(viewedModels, false);
|
|
730
|
+
}
|
|
731
|
+
exports.invertAllModels = invertAllModels;
|
|
732
|
+
/**
|
|
733
|
+
* Based on the value of `enable` argument, either enables or disables display of given models.
|
|
734
|
+
* @public
|
|
735
|
+
*/
|
|
736
|
+
async function toggleModels(models, enable, viewport) {
|
|
737
|
+
// istanbul ignore if
|
|
738
|
+
if (!models) {
|
|
739
|
+
return;
|
|
740
|
+
}
|
|
741
|
+
if (enable) {
|
|
742
|
+
viewport.changeModelDisplay(models, false);
|
|
743
|
+
}
|
|
744
|
+
else {
|
|
745
|
+
await viewport.addViewedModels(models);
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
exports.toggleModels = toggleModels;
|
|
749
|
+
/**
|
|
750
|
+
* Checks if all given models are displayed in given viewport.
|
|
751
|
+
* @public
|
|
752
|
+
*/
|
|
753
|
+
function areAllModelsVisible(models, viewport) {
|
|
754
|
+
return models.length !== 0 ? models.every((id) => viewport.viewsModel(id)) : false;
|
|
755
|
+
}
|
|
756
|
+
exports.areAllModelsVisible = areAllModelsVisible;
|
|
757
|
+
//# sourceMappingURL=ModelsTreeVisibilityHandler.js.map
|