@itwin/grouping-mapping-widget 0.25.2 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/WidgetShell/GroupingMapping.d.ts +5 -5
- package/lib/cjs/WidgetShell/GroupingMapping.js.map +1 -1
- package/lib/cjs/WidgetShell/GroupingMappingWidget.d.ts +4 -0
- package/lib/cjs/WidgetShell/GroupingMappingWidget.js +4 -0
- package/lib/cjs/WidgetShell/GroupingMappingWidget.js.map +1 -1
- package/lib/cjs/components/GroupingMappingContext.d.ts +19 -3
- package/lib/cjs/components/GroupingMappingContext.js +27 -9
- package/lib/cjs/components/GroupingMappingContext.js.map +1 -1
- package/lib/cjs/components/Groups/Editing/GroupAction.d.ts +10 -2
- package/lib/cjs/components/Groups/Editing/GroupAction.js +9 -5
- package/lib/cjs/components/Groups/Editing/GroupAction.js.map +1 -1
- package/lib/cjs/components/Groups/GroupColorLegend.d.ts +3 -3
- package/lib/cjs/components/Groups/GroupColorLegend.js.map +1 -1
- package/lib/cjs/components/Groups/GroupListItem.d.ts +4 -4
- package/lib/cjs/components/Groups/GroupListItem.js +6 -3
- package/lib/cjs/components/Groups/GroupListItem.js.map +1 -1
- package/lib/cjs/components/Groups/GroupListItem.scss +14 -0
- package/lib/cjs/components/Groups/GroupMenuActions.d.ts +4 -4
- package/lib/cjs/components/Groups/GroupMenuActions.js.map +1 -1
- package/lib/cjs/components/Groups/GroupMenuActions.scss +2 -0
- package/lib/cjs/components/Groups/GroupOverlapProgressBar.d.ts +2 -2
- package/lib/cjs/components/Groups/GroupOverlapProgressBar.js.map +1 -1
- package/lib/cjs/components/Groups/Groups.d.ts +12 -4
- package/lib/cjs/components/Groups/Groups.js +4 -0
- package/lib/cjs/components/Groups/Groups.js.map +1 -1
- package/lib/cjs/components/Groups/GroupsShowHideButtons.d.ts +4 -4
- package/lib/cjs/components/Groups/GroupsShowHideButtons.js.map +1 -1
- package/lib/cjs/components/Groups/GroupsView.d.ts +19 -11
- package/lib/cjs/components/Groups/GroupsView.js +4 -0
- package/lib/cjs/components/Groups/GroupsView.js.map +1 -1
- package/lib/cjs/components/Groups/GroupsVisualization.d.ts +8 -0
- package/lib/cjs/components/Groups/GroupsVisualization.js +8 -4
- package/lib/cjs/components/Groups/GroupsVisualization.js.map +1 -1
- package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.d.ts +3 -3
- package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.js.map +1 -1
- package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.d.ts +2 -2
- package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.js.map +1 -1
- package/lib/cjs/components/Groups/groupsHelpers.d.ts +2 -2
- package/lib/cjs/components/Groups/groupsHelpers.js.map +1 -1
- package/lib/cjs/components/Groups/hooks/useFetchGroups.d.ts +3 -3
- package/lib/cjs/components/Groups/hooks/useFetchGroups.js +6 -5
- package/lib/cjs/components/Groups/hooks/useFetchGroups.js.map +1 -1
- package/lib/cjs/components/Groups/hooks/useGroupsOperations.d.ts +15 -7
- package/lib/cjs/components/Groups/hooks/useGroupsOperations.js +9 -5
- package/lib/cjs/components/Groups/hooks/useGroupsOperations.js.map +1 -1
- package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.d.ts +4 -4
- package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -1
- package/lib/cjs/components/Mappings/Editing/MappingAction.d.ts +8 -0
- package/lib/cjs/components/Mappings/Editing/MappingAction.js +7 -2
- package/lib/cjs/components/Mappings/Editing/MappingAction.js.map +1 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js +3 -1
- package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
- package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.d.ts +1 -2
- package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js +4 -3
- package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
- package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js +1 -1
- package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
- package/lib/cjs/components/Mappings/Mappings.d.ts +8 -0
- package/lib/cjs/components/Mappings/Mappings.js +4 -0
- package/lib/cjs/components/Mappings/Mappings.js.map +1 -1
- package/lib/cjs/components/Mappings/MappingsView.d.ts +7 -0
- package/lib/cjs/components/Mappings/MappingsView.js +4 -0
- package/lib/cjs/components/Mappings/MappingsView.js.map +1 -1
- package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.d.ts +1 -2
- package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js +9 -8
- package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
- package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js +5 -4
- package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
- package/lib/cjs/components/Mappings/hooks/useFetchMappings.js +1 -1
- package/lib/cjs/components/Mappings/hooks/useFetchMappings.js.map +1 -1
- package/lib/cjs/components/Mappings/hooks/useMappingsOperations.d.ts +9 -2
- package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js +12 -8
- package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
- package/lib/cjs/components/Mappings/hooks/useRunExtraction.d.ts +1 -1
- package/lib/cjs/components/Mappings/hooks/useRunExtraction.js +20 -14
- package/lib/cjs/components/Mappings/hooks/useRunExtraction.js.map +1 -1
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +10 -2
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +20 -7
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.d.ts +11 -3
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +19 -7
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.d.ts +3 -3
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +6 -4
- package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +1 -1
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +10 -2
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js +52 -34
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.d.ts +3 -3
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js +6 -4
- package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js.map +1 -1
- package/lib/cjs/components/Properties/GroupColorToggle.d.ts +2 -2
- package/lib/cjs/components/Properties/GroupColorToggle.js.map +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.d.ts +12 -4
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js +24 -18
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.d.ts +3 -3
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js +6 -4
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyUtils.d.ts +3 -5
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyUtils.js +0 -26
- package/lib/cjs/components/Properties/GroupProperties/GroupPropertyUtils.js.map +1 -1
- package/lib/cjs/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js +3 -3
- package/lib/cjs/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js.map +1 -1
- package/lib/cjs/components/Properties/PropertyMenu.d.ts +13 -5
- package/lib/cjs/components/Properties/PropertyMenu.js +12 -14
- package/lib/cjs/components/Properties/PropertyMenu.js.map +1 -1
- package/lib/cjs/components/Properties/PropertyMenuWithVisualization.d.ts +8 -0
- package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js +4 -0
- package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
- package/lib/cjs/components/Properties/hooks/useFormulaValidation.d.ts +2 -1
- package/lib/cjs/components/Properties/hooks/useFormulaValidation.js +8 -4
- package/lib/cjs/components/Properties/hooks/useFormulaValidation.js.map +1 -1
- package/lib/cjs/components/Properties/hooks/usePropertiesQuery.d.ts +4 -0
- package/lib/cjs/components/Properties/hooks/usePropertiesQuery.js +12 -0
- package/lib/cjs/components/Properties/hooks/usePropertiesQuery.js.map +1 -0
- package/lib/cjs/components/context/ExtractionClientContext.js +3 -3
- package/lib/cjs/components/context/ExtractionClientContext.js.map +1 -1
- package/lib/cjs/components/context/GroupingApiConfigContext.d.ts +16 -0
- package/lib/cjs/components/context/GroupingApiConfigContext.js +7 -0
- package/lib/cjs/components/context/GroupingApiConfigContext.js.map +1 -1
- package/lib/cjs/components/context/GroupsClientContext.d.ts +20 -0
- package/lib/cjs/components/context/GroupsClientContext.js +45 -0
- package/lib/cjs/components/context/GroupsClientContext.js.map +1 -0
- package/lib/cjs/components/context/MappingClientContext.d.ts +12 -0
- package/lib/cjs/components/context/MappingClientContext.js +14 -2
- package/lib/cjs/components/context/MappingClientContext.js.map +1 -1
- package/lib/cjs/components/context/PropertiesClientContext.d.ts +20 -0
- package/lib/cjs/components/context/PropertiesClientContext.js +45 -0
- package/lib/cjs/components/context/PropertiesClientContext.js.map +1 -0
- package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.d.ts +4 -0
- package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js +4 -0
- package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
- package/lib/cjs/components/customUI/GroupingMappingCustomUI.d.ts +15 -3
- package/lib/cjs/components/customUI/GroupingMappingCustomUI.js +3 -0
- package/lib/cjs/components/customUI/GroupingMappingCustomUI.js.map +1 -1
- package/lib/cjs/components/customUI/ManualGroupingCustomUI.d.ts +4 -0
- package/lib/cjs/components/customUI/ManualGroupingCustomUI.js +4 -0
- package/lib/cjs/components/customUI/ManualGroupingCustomUI.js.map +1 -1
- package/lib/cjs/components/customUI/SearchGroupingCustomUI.d.ts +4 -0
- package/lib/cjs/components/customUI/SearchGroupingCustomUI.js +4 -0
- package/lib/cjs/components/customUI/SearchGroupingCustomUI.js.map +1 -1
- package/lib/cjs/formula/FormulaDataTypeResolver.d.ts +1 -0
- package/lib/cjs/formula/FormulaDataTypeResolver.js +1 -0
- package/lib/cjs/formula/FormulaDataTypeResolver.js.map +1 -1
- package/lib/cjs/formula/FormulaFunctionProvider.js +41 -41
- package/lib/cjs/formula/FormulaFunctionProvider.js.map +1 -1
- package/lib/cjs/formula/FormulaOperatorsProvider.js +3 -3
- package/lib/cjs/formula/FormulaOperatorsProvider.js.map +1 -1
- package/lib/cjs/formula/FormulaTokensDataTypeResolver.js +2 -2
- package/lib/cjs/formula/FormulaTokensDataTypeResolver.js.map +1 -1
- package/lib/cjs/formula/IResult.d.ts +3 -0
- package/lib/cjs/formula/IResult.js.map +1 -1
- package/lib/cjs/formula/Types.d.ts +16 -1
- package/lib/cjs/formula/Types.js.map +1 -1
- package/lib/cjs/grouping-mapping-widget.d.ts +2 -0
- package/lib/cjs/grouping-mapping-widget.js +11 -1
- package/lib/cjs/grouping-mapping-widget.js.map +1 -1
- package/lib/cjs/test/GroupPropertyUtils.test.js +0 -39
- package/lib/cjs/test/GroupPropertyUtils.test.js.map +1 -1
- package/lib/cjs/test/GroupingMappingCustomUI.test.js +19 -8
- package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -1
- package/lib/esm/WidgetShell/GroupingMapping.d.ts +5 -5
- package/lib/esm/WidgetShell/GroupingMapping.js.map +1 -1
- package/lib/esm/WidgetShell/GroupingMappingWidget.d.ts +4 -0
- package/lib/esm/WidgetShell/GroupingMappingWidget.js +4 -0
- package/lib/esm/WidgetShell/GroupingMappingWidget.js.map +1 -1
- package/lib/esm/components/GroupingMappingContext.d.ts +19 -3
- package/lib/esm/components/GroupingMappingContext.js +27 -9
- package/lib/esm/components/GroupingMappingContext.js.map +1 -1
- package/lib/esm/components/Groups/Editing/GroupAction.d.ts +10 -2
- package/lib/esm/components/Groups/Editing/GroupAction.js +9 -5
- package/lib/esm/components/Groups/Editing/GroupAction.js.map +1 -1
- package/lib/esm/components/Groups/GroupColorLegend.d.ts +3 -3
- package/lib/esm/components/Groups/GroupColorLegend.js.map +1 -1
- package/lib/esm/components/Groups/GroupListItem.d.ts +4 -4
- package/lib/esm/components/Groups/GroupListItem.js +6 -3
- package/lib/esm/components/Groups/GroupListItem.js.map +1 -1
- package/lib/esm/components/Groups/GroupListItem.scss +14 -0
- package/lib/esm/components/Groups/GroupMenuActions.d.ts +4 -4
- package/lib/esm/components/Groups/GroupMenuActions.js.map +1 -1
- package/lib/esm/components/Groups/GroupMenuActions.scss +2 -0
- package/lib/esm/components/Groups/GroupOverlapProgressBar.d.ts +2 -2
- package/lib/esm/components/Groups/GroupOverlapProgressBar.js.map +1 -1
- package/lib/esm/components/Groups/Groups.d.ts +12 -4
- package/lib/esm/components/Groups/Groups.js +4 -0
- package/lib/esm/components/Groups/Groups.js.map +1 -1
- package/lib/esm/components/Groups/GroupsShowHideButtons.d.ts +4 -4
- package/lib/esm/components/Groups/GroupsShowHideButtons.js.map +1 -1
- package/lib/esm/components/Groups/GroupsView.d.ts +19 -11
- package/lib/esm/components/Groups/GroupsView.js +4 -0
- package/lib/esm/components/Groups/GroupsView.js.map +1 -1
- package/lib/esm/components/Groups/GroupsVisualization.d.ts +8 -0
- package/lib/esm/components/Groups/GroupsVisualization.js +8 -4
- package/lib/esm/components/Groups/GroupsVisualization.js.map +1 -1
- package/lib/esm/components/Groups/OverlappedElementsInformationPanel.d.ts +3 -3
- package/lib/esm/components/Groups/OverlappedElementsInformationPanel.js.map +1 -1
- package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.d.ts +2 -2
- package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.js.map +1 -1
- package/lib/esm/components/Groups/groupsHelpers.d.ts +2 -2
- package/lib/esm/components/Groups/groupsHelpers.js.map +1 -1
- package/lib/esm/components/Groups/hooks/useFetchGroups.d.ts +3 -3
- package/lib/esm/components/Groups/hooks/useFetchGroups.js +6 -5
- package/lib/esm/components/Groups/hooks/useFetchGroups.js.map +1 -1
- package/lib/esm/components/Groups/hooks/useGroupsOperations.d.ts +15 -7
- package/lib/esm/components/Groups/hooks/useGroupsOperations.js +9 -5
- package/lib/esm/components/Groups/hooks/useGroupsOperations.js.map +1 -1
- package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.d.ts +4 -4
- package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -1
- package/lib/esm/components/Mappings/Editing/MappingAction.d.ts +8 -0
- package/lib/esm/components/Mappings/Editing/MappingAction.js +7 -2
- package/lib/esm/components/Mappings/Editing/MappingAction.js.map +1 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js +3 -1
- package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
- package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.d.ts +1 -2
- package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js +4 -3
- package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
- package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js +1 -1
- package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
- package/lib/esm/components/Mappings/Mappings.d.ts +8 -0
- package/lib/esm/components/Mappings/Mappings.js +4 -0
- package/lib/esm/components/Mappings/Mappings.js.map +1 -1
- package/lib/esm/components/Mappings/MappingsView.d.ts +7 -0
- package/lib/esm/components/Mappings/MappingsView.js +4 -0
- package/lib/esm/components/Mappings/MappingsView.js.map +1 -1
- package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.d.ts +1 -2
- package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js +9 -8
- package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
- package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js +6 -5
- package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
- package/lib/esm/components/Mappings/hooks/useFetchMappings.js +1 -1
- package/lib/esm/components/Mappings/hooks/useFetchMappings.js.map +1 -1
- package/lib/esm/components/Mappings/hooks/useMappingsOperations.d.ts +9 -2
- package/lib/esm/components/Mappings/hooks/useMappingsOperations.js +13 -9
- package/lib/esm/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
- package/lib/esm/components/Mappings/hooks/useRunExtraction.d.ts +1 -1
- package/lib/esm/components/Mappings/hooks/useRunExtraction.js +20 -14
- package/lib/esm/components/Mappings/hooks/useRunExtraction.js.map +1 -1
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +10 -2
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +21 -8
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.d.ts +11 -3
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +20 -8
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.d.ts +3 -3
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +6 -4
- package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +1 -1
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +10 -2
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js +53 -35
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.d.ts +3 -3
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js +6 -4
- package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js.map +1 -1
- package/lib/esm/components/Properties/GroupColorToggle.d.ts +2 -2
- package/lib/esm/components/Properties/GroupColorToggle.js.map +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.d.ts +12 -4
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js +24 -18
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.d.ts +3 -3
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js +6 -4
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.d.ts +3 -5
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.js +0 -26
- package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.js.map +1 -1
- package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js +3 -3
- package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js.map +1 -1
- package/lib/esm/components/Properties/PropertyMenu.d.ts +13 -5
- package/lib/esm/components/Properties/PropertyMenu.js +12 -14
- package/lib/esm/components/Properties/PropertyMenu.js.map +1 -1
- package/lib/esm/components/Properties/PropertyMenuWithVisualization.d.ts +8 -0
- package/lib/esm/components/Properties/PropertyMenuWithVisualization.js +4 -0
- package/lib/esm/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
- package/lib/esm/components/Properties/hooks/useFormulaValidation.d.ts +2 -1
- package/lib/esm/components/Properties/hooks/useFormulaValidation.js +8 -4
- package/lib/esm/components/Properties/hooks/useFormulaValidation.js.map +1 -1
- package/lib/esm/components/Properties/hooks/usePropertiesQuery.d.ts +4 -0
- package/lib/esm/components/Properties/hooks/usePropertiesQuery.js +8 -0
- package/lib/esm/components/Properties/hooks/usePropertiesQuery.js.map +1 -0
- package/lib/esm/components/context/ExtractionClientContext.js +3 -3
- package/lib/esm/components/context/ExtractionClientContext.js.map +1 -1
- package/lib/esm/components/context/GroupingApiConfigContext.d.ts +16 -0
- package/lib/esm/components/context/GroupingApiConfigContext.js +7 -0
- package/lib/esm/components/context/GroupingApiConfigContext.js.map +1 -1
- package/lib/esm/components/context/GroupsClientContext.d.ts +20 -0
- package/lib/esm/components/context/GroupsClientContext.js +39 -0
- package/lib/esm/components/context/GroupsClientContext.js.map +1 -0
- package/lib/esm/components/context/MappingClientContext.d.ts +12 -0
- package/lib/esm/components/context/MappingClientContext.js +15 -3
- package/lib/esm/components/context/MappingClientContext.js.map +1 -1
- package/lib/esm/components/context/PropertiesClientContext.d.ts +20 -0
- package/lib/esm/components/context/PropertiesClientContext.js +39 -0
- package/lib/esm/components/context/PropertiesClientContext.js.map +1 -0
- package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.d.ts +4 -0
- package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js +4 -0
- package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
- package/lib/esm/components/customUI/GroupingMappingCustomUI.d.ts +15 -3
- package/lib/esm/components/customUI/GroupingMappingCustomUI.js +3 -0
- package/lib/esm/components/customUI/GroupingMappingCustomUI.js.map +1 -1
- package/lib/esm/components/customUI/ManualGroupingCustomUI.d.ts +4 -0
- package/lib/esm/components/customUI/ManualGroupingCustomUI.js +4 -0
- package/lib/esm/components/customUI/ManualGroupingCustomUI.js.map +1 -1
- package/lib/esm/components/customUI/SearchGroupingCustomUI.d.ts +4 -0
- package/lib/esm/components/customUI/SearchGroupingCustomUI.js +4 -0
- package/lib/esm/components/customUI/SearchGroupingCustomUI.js.map +1 -1
- package/lib/esm/formula/FormulaDataTypeResolver.d.ts +1 -0
- package/lib/esm/formula/FormulaDataTypeResolver.js +1 -0
- package/lib/esm/formula/FormulaDataTypeResolver.js.map +1 -1
- package/lib/esm/formula/FormulaFunctionProvider.js +41 -41
- package/lib/esm/formula/FormulaFunctionProvider.js.map +1 -1
- package/lib/esm/formula/FormulaOperatorsProvider.js +3 -3
- package/lib/esm/formula/FormulaOperatorsProvider.js.map +1 -1
- package/lib/esm/formula/FormulaTokensDataTypeResolver.js +2 -2
- package/lib/esm/formula/FormulaTokensDataTypeResolver.js.map +1 -1
- package/lib/esm/formula/IResult.d.ts +3 -0
- package/lib/esm/formula/IResult.js.map +1 -1
- package/lib/esm/formula/Types.d.ts +16 -1
- package/lib/esm/formula/Types.js.map +1 -1
- package/lib/esm/grouping-mapping-widget.d.ts +2 -0
- package/lib/esm/grouping-mapping-widget.js +2 -0
- package/lib/esm/grouping-mapping-widget.js.map +1 -1
- package/lib/esm/test/GroupPropertyUtils.test.js +0 -39
- package/lib/esm/test/GroupPropertyUtils.test.js.map +1 -1
- package/lib/esm/test/GroupingMappingCustomUI.test.js +19 -8
- package/lib/esm/test/GroupingMappingCustomUI.test.js.map +1 -1
- package/package.json +3 -2
- package/lib/cjs/components/Properties/hooks/useCalculatedPropertiesQuery.d.ts +0 -4
- package/lib/cjs/components/Properties/hooks/useCalculatedPropertiesQuery.js +0 -12
- package/lib/cjs/components/Properties/hooks/useCalculatedPropertiesQuery.js.map +0 -1
- package/lib/cjs/components/Properties/hooks/useCustomCalculationsQuery.d.ts +0 -4
- package/lib/cjs/components/Properties/hooks/useCustomCalculationsQuery.js +0 -12
- package/lib/cjs/components/Properties/hooks/useCustomCalculationsQuery.js.map +0 -1
- package/lib/cjs/components/Properties/hooks/useGroupPropertiesQuery.d.ts +0 -4
- package/lib/cjs/components/Properties/hooks/useGroupPropertiesQuery.js +0 -12
- package/lib/cjs/components/Properties/hooks/useGroupPropertiesQuery.js.map +0 -1
- package/lib/esm/components/Properties/hooks/useCalculatedPropertiesQuery.d.ts +0 -4
- package/lib/esm/components/Properties/hooks/useCalculatedPropertiesQuery.js +0 -8
- package/lib/esm/components/Properties/hooks/useCalculatedPropertiesQuery.js.map +0 -1
- package/lib/esm/components/Properties/hooks/useCustomCalculationsQuery.d.ts +0 -4
- package/lib/esm/components/Properties/hooks/useCustomCalculationsQuery.js +0 -8
- package/lib/esm/components/Properties/hooks/useCustomCalculationsQuery.js.map +0 -1
- package/lib/esm/components/Properties/hooks/useGroupPropertiesQuery.d.ts +0 -4
- package/lib/esm/components/Properties/hooks/useGroupPropertiesQuery.js +0 -8
- package/lib/esm/components/Properties/hooks/useGroupPropertiesQuery.js.map +0 -1
|
@@ -15,8 +15,11 @@ export const GroupListItem = ({ onClickGroupTitle, disableActions, group, ...res
|
|
|
15
15
|
React.createElement(ListItem.Content, null,
|
|
16
16
|
onClickGroupTitle ? React.createElement(Anchor, { onClick: onTitleClick }, group.groupName) : group.groupName,
|
|
17
17
|
React.createElement(ListItem.Description, null, group.description)),
|
|
18
|
-
|
|
19
|
-
React.createElement(
|
|
20
|
-
|
|
18
|
+
React.createElement("div", { className: "gmw-group-list-end" },
|
|
19
|
+
React.createElement("div", { className: "gmw-group-menu-actions" },
|
|
20
|
+
React.createElement(GroupMenuActions, { group: group, disableActions: disableActions, ...rest })),
|
|
21
|
+
showGroupColor && overlappedElementsInfo.size > 0 &&
|
|
22
|
+
React.createElement("div", { className: "gmw-overlap-progress" },
|
|
23
|
+
React.createElement(OverlapProgress, { group: group, overlappedElementsInfo: overlappedElementsInfo, groupElementsInfo: groupElementsInfo })))));
|
|
21
24
|
};
|
|
22
25
|
//# sourceMappingURL=GroupListItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupListItem.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupListItem.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAM3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,sBAAsB,CAAC;AAY9B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,iBAAiB,EACjB,cAAc,EACd,KAAK,EACL,GAAG,IAAI,EACY,EAAE,EAAE;IACvB,MAAM,EAAE,0BAA0B,EAAE,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,EAAE,cAAc,EAAE,GAAG,8BAA8B,EAAE,CAAC;IAEvI,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,IAAI,iBAAiB,EAAE;YACrB,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAC1B;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE/B,OAAO,CACL,oBAAC,QAAQ,IACP,KAAK,EAAE,KAAK,CAAC,SAAS,EACtB,GAAG,EAAE,KAAK,CAAC,EAAE,EACb,SAAS,EAAC,qBAAqB,iBACnB,iBAAiB;QAE7B,oBAAC,QAAQ,CAAC,OAAO;YACd,iBAAiB,CAAC,CAAC,CAAC,oBAAC,MAAM,IAAC,OAAO,EAAE,YAAY,IAAG,KAAK,CAAC,SAAS,CAAU,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS;YAChG,oBAAC,QAAQ,CAAC,WAAW,QAClB,KAAK,CAAC,WAAW,CACG,CACN;
|
|
1
|
+
{"version":3,"file":"GroupListItem.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupListItem.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAM3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,sBAAsB,CAAC;AAY9B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,iBAAiB,EACjB,cAAc,EACd,KAAK,EACL,GAAG,IAAI,EACY,EAAE,EAAE;IACvB,MAAM,EAAE,0BAA0B,EAAE,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,EAAE,cAAc,EAAE,GAAG,8BAA8B,EAAE,CAAC;IAEvI,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,IAAI,iBAAiB,EAAE;YACrB,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAC1B;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE/B,OAAO,CACL,oBAAC,QAAQ,IACP,KAAK,EAAE,KAAK,CAAC,SAAS,EACtB,GAAG,EAAE,KAAK,CAAC,EAAE,EACb,SAAS,EAAC,qBAAqB,iBACnB,iBAAiB;QAE7B,oBAAC,QAAQ,CAAC,OAAO;YACd,iBAAiB,CAAC,CAAC,CAAC,oBAAC,MAAM,IAAC,OAAO,EAAE,YAAY,IAAG,KAAK,CAAC,SAAS,CAAU,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS;YAChG,oBAAC,QAAQ,CAAC,WAAW,QAClB,KAAK,CAAC,WAAW,CACG,CACN;QACnB,6BAAK,SAAS,EAAC,oBAAoB;YACjC,6BAAK,SAAS,EAAC,wBAAwB;gBACrC,oBAAC,gBAAgB,IACf,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,KAC1B,IAAI,GACR,CACE;YACL,cAAc,IAAI,sBAAsB,CAAC,IAAI,GAAG,CAAC;gBAChD,6BAAK,SAAS,EAAC,sBAAsB;oBACnC,oBAAC,eAAe,IACd,KAAK,EAAE,KAAK,EACZ,sBAAsB,EAAE,sBAAsB,EAC9C,iBAAiB,EAAE,iBAAiB,GACpC,CACE,CAEJ,CACG,CACZ,CAAC;AACJ,CAAC,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*--------------------------------------------------------------------------------------------*/\nimport type { GroupMinimal } from \"@itwin/insights-client\";\nimport React, { useCallback } from \"react\";\nimport type {\n ContextCustomUI,\n GroupingCustomUI,\n} from \"../customUI/GroupingMappingCustomUI\";\nimport type { GroupsProps } from \"./Groups\";\nimport { GroupMenuActions } from \"./GroupMenuActions\";\nimport { useGroupHilitedElementsContext } from \"../context/GroupHilitedElementsContext\";\nimport { OverlapProgress } from \"./GroupOverlapProgressBar\";\nimport { Anchor, ListItem } from \"@itwin/itwinui-react\";\nimport \"./GroupListItem.scss\";\n\nexport interface GroupListItemProps extends Omit<GroupsProps, \"onClickAddGroup\"> {\n group: GroupMinimal;\n groupUIs: GroupingCustomUI[];\n contextUIs: ContextCustomUI[];\n setShowDeleteModal: (showDeleteModal: GroupMinimal) => void;\n setActiveOverlapInfoPanelGroup?: (\n activeOverlapInfoPanelGroup: GroupMinimal\n ) => void;\n}\n\nexport const GroupListItem = ({\n onClickGroupTitle,\n disableActions,\n group,\n ...rest\n}: GroupListItemProps) => {\n const { overlappedElementsMetadata: { groupElementsInfo, overlappedElementsInfo }, showGroupColor } = useGroupHilitedElementsContext();\n\n const onTitleClick = useCallback(() => {\n if (onClickGroupTitle) {\n onClickGroupTitle(group);\n }\n }, [group, onClickGroupTitle]);\n\n return (\n <ListItem\n title={group.groupName}\n key={group.id}\n className=\"gmw-group-list-item\"\n data-testid=\"group-list-item\"\n >\n <ListItem.Content>\n {onClickGroupTitle ? <Anchor onClick={onTitleClick}>{group.groupName}</Anchor> : group.groupName}\n <ListItem.Description>\n {group.description}\n </ListItem.Description>\n </ListItem.Content>\n <div className=\"gmw-group-list-end\">\n <div className=\"gmw-group-menu-actions\">\n <GroupMenuActions\n group={group}\n disableActions={disableActions}\n {...rest}\n />\n </div>\n {showGroupColor && overlappedElementsInfo.size > 0 &&\n <div className=\"gmw-overlap-progress\">\n <OverlapProgress\n group={group}\n overlappedElementsInfo={overlappedElementsInfo}\n groupElementsInfo={groupElementsInfo}\n />\n </div>\n }\n </div>\n </ListItem>\n );\n};\n"]}
|
|
@@ -11,3 +11,17 @@
|
|
|
11
11
|
padding-bottom: 2px var(--iui-size-xs);
|
|
12
12
|
padding-top: 2px var(--iui-size-xs);
|
|
13
13
|
}
|
|
14
|
+
|
|
15
|
+
.gmw-group-list-end {
|
|
16
|
+
height: 100%;
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
justify-content: center;
|
|
20
|
+
.gmw-group-menu-actions {
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-grow: 1
|
|
23
|
+
}
|
|
24
|
+
.gmw-overlap-progress {
|
|
25
|
+
width: 100%
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type {
|
|
2
|
+
import type { GroupMinimal } from "@itwin/insights-client";
|
|
3
3
|
import type { ContextCustomUI, GroupingCustomUI } from "../customUI/GroupingMappingCustomUI";
|
|
4
4
|
import type { GroupsProps } from "./Groups";
|
|
5
5
|
import "./GroupMenuActions.scss";
|
|
6
6
|
export interface GroupMenuActionsProps extends Omit<GroupsProps, "onClickAddGroup" | "onClickGroupTitle"> {
|
|
7
|
-
group:
|
|
7
|
+
group: GroupMinimal;
|
|
8
8
|
groupUIs: GroupingCustomUI[];
|
|
9
9
|
contextUIs: ContextCustomUI[];
|
|
10
|
-
setShowDeleteModal: (showDeleteModal:
|
|
11
|
-
setActiveOverlapInfoPanelGroup?: (activeOverlapInfoPanelGroup:
|
|
10
|
+
setShowDeleteModal: (showDeleteModal: GroupMinimal) => void;
|
|
11
|
+
setActiveOverlapInfoPanelGroup?: (activeOverlapInfoPanelGroup: GroupMinimal) => void;
|
|
12
12
|
}
|
|
13
13
|
export declare const GroupMenuActions: ({ mapping, group, actionButtonRenderers, onClickGroupModify, onClickRenderContextCustomUI, groupUIs, contextUIs, disableActions, setShowDeleteModal, setActiveOverlapInfoPanelGroup, }: GroupMenuActionsProps) => JSX.Element;
|
|
14
14
|
//# sourceMappingURL=GroupMenuActions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupMenuActions.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupMenuActions.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AAUxF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,OAAO,EACP,KAAK,EACL,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,EAC5B,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,8BAA8B,GACR,EAAE,EAAE;IAC1B,MAAM,EAAE,QAAQ,EAAE,GAAG,2BAA2B,EAAE,CAAC;IACnD,MAAM,EAAE,cAAc,EAAE,GAAG,8BAA8B,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"GroupMenuActions.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupMenuActions.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*--------------------------------------------------------------------------------------------*/\nimport type { GroupMinimal } from \"@itwin/insights-client\";\nimport { SvgDelete, SvgEdit, SvgInfo, SvgMore } from \"@itwin/itwinui-icons-react\";\nimport { DropdownMenu, IconButton, MenuItem } from \"@itwin/itwinui-react\";\nimport React, { useCallback } from \"react\";\nimport type { ContextCustomUI, GroupingCustomUI } from \"../customUI/GroupingMappingCustomUI\";\nimport type { GroupsProps } from \"./Groups\";\nimport { useGroupingMappingApiConfig } from \"../context/GroupingApiConfigContext\";\nimport \"./GroupMenuActions.scss\";\nimport { useGroupHilitedElementsContext } from \"../context/GroupHilitedElementsContext\";\n\nexport interface GroupMenuActionsProps extends Omit<GroupsProps, \"onClickAddGroup\" | \"onClickGroupTitle\"> {\n group: GroupMinimal;\n groupUIs: GroupingCustomUI[];\n contextUIs: ContextCustomUI[];\n setShowDeleteModal: (showDeleteModal: GroupMinimal) => void;\n setActiveOverlapInfoPanelGroup?: (activeOverlapInfoPanelGroup: GroupMinimal) => void;\n}\n\nexport const GroupMenuActions = ({\n mapping,\n group,\n actionButtonRenderers,\n onClickGroupModify,\n onClickRenderContextCustomUI,\n groupUIs,\n contextUIs,\n disableActions,\n setShowDeleteModal,\n setActiveOverlapInfoPanelGroup,\n}: GroupMenuActionsProps) => {\n const { iModelId } = useGroupingMappingApiConfig();\n const { showGroupColor } = useGroupHilitedElementsContext();\n const onModify = useCallback(async (group: GroupMinimal, type: string) => {\n if (!onClickGroupModify) return;\n onClickGroupModify(group, type);\n }, [onClickGroupModify]);\n\n const createMenuItems = useCallback((close: () => void) => {\n const menuItems = [\n ...(groupUIs.length > 0 && onClickGroupModify\n ? [\n <MenuItem\n key={0}\n icon={<SvgEdit />}\n disabled={disableActions}\n data-testid=\"gmw-context-menu-item\"\n subMenuItems={groupUIs.map((p, index) => (\n <MenuItem\n key={p.name}\n className=\"gmw-menu-item\"\n data-testid={`gmw-edit-${index}`}\n onClick={async () => {\n await onModify(group, p.name);\n close();\n }}\n icon={p.icon}\n >\n {p.displayLabel}\n </MenuItem>\n ))}\n >\n Edit\n </MenuItem>,\n ]\n : []),\n ...contextUIs.map((p) => {\n return (\n <MenuItem\n key={p.name}\n onClick={async () => {\n if (\n p.uiComponent &&\n onClickRenderContextCustomUI\n ) {\n onClickRenderContextCustomUI(\n p.uiComponent,\n group,\n p.displayLabel\n );\n }\n if (p.onClick) {\n p.onClick(group, mapping, iModelId);\n }\n close();\n }}\n icon={p.icon}\n data-testid=\"gmw-context-menu-item\"\n >\n {p.displayLabel}\n </MenuItem>\n );\n }),\n <MenuItem\n key={2}\n onClick={() => {\n setShowDeleteModal(group);\n close();\n }}\n icon={<SvgDelete />}\n data-testid=\"gmw-context-menu-item\"\n >\n Remove\n </MenuItem>,\n ];\n\n if (showGroupColor && setActiveOverlapInfoPanelGroup) {\n menuItems.push(\n <MenuItem\n key={3}\n onClick={() => {\n setActiveOverlapInfoPanelGroup(group);\n close();\n }}\n icon={<SvgInfo />}\n data-testid=\"gmw-overlap-menu-item\"\n >\n Overlap Info\n </MenuItem>);\n }\n\n return menuItems;\n }, [groupUIs, disableActions, group, contextUIs, mapping, iModelId, showGroupColor, onModify, setActiveOverlapInfoPanelGroup, setShowDeleteModal, onClickGroupModify, onClickRenderContextCustomUI]);\n\n return (\n <div className=\"gmw-actions\">\n {actionButtonRenderers &&\n actionButtonRenderers.map((actionButton, index) =>\n <React.Fragment key={index}>{actionButton({ group })}</React.Fragment>\n )}\n <DropdownMenu\n className=\"gmw-action-dropdown\"\n disabled={disableActions}\n menuItems={createMenuItems}\n >\n <IconButton\n disabled={disableActions}\n styleType=\"borderless\"\n data-testid=\"gmw-more-button\"\n title='Group Options'\n >\n <SvgMore />\n </IconButton>\n </DropdownMenu>\n </div>\n );\n};\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type {
|
|
2
|
+
import type { GroupMinimal } from "@itwin/insights-client";
|
|
3
3
|
import type { OverlappedInfo } from "../context/GroupHilitedElementsContext";
|
|
4
4
|
interface OverlapProgressProps {
|
|
5
|
-
group:
|
|
5
|
+
group: GroupMinimal;
|
|
6
6
|
groupElementsInfo: Map<string, number>;
|
|
7
7
|
overlappedElementsInfo: Map<string, OverlappedInfo[]>;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupOverlapProgressBar.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupOverlapProgressBar.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAwB,EAAE,EAAE;IAC5G,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACjE,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnG,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAEzF,OAAO,CACL,oBAAC,cAAc,IACb,KAAK,EAAE,GAAG,kBAAkB,WAAW,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,uBAAuB,aAAa,GAAG,EACjH,KAAK,EAAE,iBAAiB,EACxB,UAAU,QACV,MAAM,EAAC,UAAU,GACjB,CACH,CAAC;AACJ,CAAC,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*--------------------------------------------------------------------------------------------*/\nimport type {
|
|
1
|
+
{"version":3,"file":"GroupOverlapProgressBar.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupOverlapProgressBar.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAwB,EAAE,EAAE;IAC5G,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACjE,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnG,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IAEzF,OAAO,CACL,oBAAC,cAAc,IACb,KAAK,EAAE,GAAG,kBAAkB,WAAW,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,uBAAuB,aAAa,GAAG,EACjH,KAAK,EAAE,iBAAiB,EACxB,UAAU,QACV,MAAM,EAAC,UAAU,GACjB,CACH,CAAC;AACJ,CAAC,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*--------------------------------------------------------------------------------------------*/\nimport type { GroupMinimal } from \"@itwin/insights-client\";\nimport { ProgressLinear } from \"@itwin/itwinui-react\";\nimport React from \"react\";\nimport type { OverlappedInfo } from \"../context/GroupHilitedElementsContext\";\n\ninterface OverlapProgressProps {\n group: GroupMinimal;\n groupElementsInfo: Map<string, number>;\n overlappedElementsInfo: Map<string, OverlappedInfo[]>;\n}\n\nexport const OverlapProgress = ({ group, groupElementsInfo, overlappedElementsInfo }: OverlapProgressProps) => {\n const groupId = group.id;\n const totalElements = groupElementsInfo.get(groupId) || 0;\n const overlappedInfo = overlappedElementsInfo.get(groupId) || [];\n const overlappedElements = overlappedInfo.reduce((count, info) => count + info.elements.length, 0);\n const overlapPercentage = (totalElements ? overlappedElements / totalElements : 0) * 100;\n\n return (\n <ProgressLinear\n title={`${overlappedElements} element${overlappedElements === 1 ? \"\" : \"s\"} overlapping out of ${totalElements} `}\n value={overlapPercentage}\n isAnimated\n status=\"negative\"\n />\n );\n};\n"]}
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import type {
|
|
2
|
+
import type { GroupMinimal, Mapping } from "@itwin/insights-client";
|
|
3
3
|
import type { ContextCustomUI } from "../customUI/GroupingMappingCustomUI";
|
|
4
4
|
import type { ActionButtonRenderer, ProgressConfig } from "./GroupsView";
|
|
5
5
|
import { Alert } from "@itwin/itwinui-react";
|
|
6
|
+
/**
|
|
7
|
+
* Props for the {@link Groups} component.
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
6
10
|
export interface GroupsProps {
|
|
7
11
|
mapping: Mapping;
|
|
8
12
|
actionButtonRenderers?: ActionButtonRenderer[];
|
|
9
13
|
onClickAddGroup?: (queryGenerationType: string) => void;
|
|
10
|
-
onClickGroupTitle?: (group:
|
|
11
|
-
onClickGroupModify?: (group:
|
|
12
|
-
onClickRenderContextCustomUI?: (contextCustomUI: Exclude<ContextCustomUI["uiComponent"], undefined>, group:
|
|
14
|
+
onClickGroupTitle?: (group: GroupMinimal) => void;
|
|
15
|
+
onClickGroupModify?: (group: GroupMinimal, queryGenerationType: string) => void;
|
|
16
|
+
onClickRenderContextCustomUI?: (contextCustomUI: Exclude<ContextCustomUI["uiComponent"], undefined>, group: GroupMinimal, displayLabel: string) => void;
|
|
13
17
|
disableActions?: boolean;
|
|
14
18
|
isVisualizing?: boolean;
|
|
15
19
|
progressConfig?: ProgressConfig;
|
|
16
20
|
alert?: React.ReactElement<typeof Alert>;
|
|
17
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Component to list groups and handle basic operations.
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
18
26
|
export declare const Groups: ({ mapping, actionButtonRenderers, onClickAddGroup, onClickGroupTitle, onClickGroupModify, onClickRenderContextCustomUI, disableActions, progressConfig, alert, }: GroupsProps) => JSX.Element;
|
|
19
27
|
//# sourceMappingURL=Groups.d.ts.map
|
|
@@ -6,6 +6,10 @@ import React, { useCallback } from "react";
|
|
|
6
6
|
import { GroupsView } from "./GroupsView";
|
|
7
7
|
import { useGroupsOperations } from "./hooks/useGroupsOperations";
|
|
8
8
|
import { Alert } from "@itwin/itwinui-react";
|
|
9
|
+
/**
|
|
10
|
+
* Component to list groups and handle basic operations.
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
9
13
|
export const Groups = ({ mapping, actionButtonRenderers, onClickAddGroup, onClickGroupTitle, onClickGroupModify, onClickRenderContextCustomUI, disableActions, progressConfig, alert, }) => {
|
|
10
14
|
const { groups, isLoading, refresh, onDeleteGroup, setShowDeleteModal, showDeleteModal, groupUIs, contextUIs, errorMessage, setErrorMessage, activeOverlapInfoPanelGroup, setActiveOverlapInfoPanelGroup, overlappedElementsInfo, } = useGroupsOperations({ mappingId: mapping.id });
|
|
11
15
|
const addGroup = useCallback((type) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Groups.js","sourceRoot":"","sources":["../../../../src/components/Groups/Groups.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAM3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"Groups.js","sourceRoot":"","sources":["../../../../src/components/Groups/Groups.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAM3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAuB7C;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EACrB,OAAO,EACP,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,4BAA4B,EAC5B,cAAc,EACd,cAAc,EACd,KAAK,GACO,EAAE,EAAE;IAChB,MAAM,EACJ,MAAM,EACN,SAAS,EACT,OAAO,EACP,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,eAAe,EACf,2BAA2B,EAC3B,8BAA8B,EAC9B,sBAAsB,GACvB,GAAG,mBAAmB,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,IAAY,EAAE,EAAE;QAC5C,IAAI,CAAC,eAAe;YAAE,OAAO;QAC7B,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,CACL,oBAAC,KAAK,IAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,IAC7D,YAAY,CACP,CACT,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC,CAAC;IAE3C,OAAO,CACL,oBAAC,UAAU,IACT,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,IAAI,EAAE,EACpB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,QAAQ,EAClB,qBAAqB,EAAE,qBAAqB,EAC5C,eAAe,EAAE,QAAQ,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,kBAAkB,EAAE,kBAAkB,EACtC,4BAA4B,EAAE,4BAA4B,EAC1D,cAAc,EAAE,cAAc,EAC9B,wBAAwB,EAAE,eAAe,EACzC,2BAA2B,EAAE,kBAAkB,EAC/C,aAAa,EAAE,aAAa,EAC5B,kBAAkB,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC,EACvD,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,WAAW,EAAE,EACpB,8BAA8B,EAAE,8BAA8B,EAC9D,2BAA2B,EAAE,2BAA2B,EACxD,sBAAsB,EAAE,sBAAsB,GAC9C,CACH,CAAC;AACJ,CAAC,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*--------------------------------------------------------------------------------------------*/\nimport React, { useCallback } from \"react\";\nimport type { GroupMinimal, Mapping } from \"@itwin/insights-client\";\nimport type {\n ContextCustomUI,\n} from \"../customUI/GroupingMappingCustomUI\";\nimport type { ActionButtonRenderer, ProgressConfig } from \"./GroupsView\";\nimport { GroupsView } from \"./GroupsView\";\nimport { useGroupsOperations } from \"./hooks/useGroupsOperations\";\nimport { Alert } from \"@itwin/itwinui-react\";\n\n/**\n * Props for the {@link Groups} component.\n * @public\n */\nexport interface GroupsProps {\n mapping: Mapping;\n actionButtonRenderers?: ActionButtonRenderer[];\n onClickAddGroup?: (queryGenerationType: string) => void;\n onClickGroupTitle?: (group: GroupMinimal) => void;\n onClickGroupModify?: (group: GroupMinimal, queryGenerationType: string) => void;\n onClickRenderContextCustomUI?: (\n contextCustomUI: Exclude<ContextCustomUI[\"uiComponent\"], undefined>,\n group: GroupMinimal,\n displayLabel: string,\n ) => void;\n disableActions?: boolean;\n isVisualizing?: boolean;\n progressConfig?: ProgressConfig;\n alert?: React.ReactElement<typeof Alert>;\n}\n\n/**\n * Component to list groups and handle basic operations.\n * @public\n */\nexport const Groups = ({\n mapping,\n actionButtonRenderers,\n onClickAddGroup,\n onClickGroupTitle,\n onClickGroupModify,\n onClickRenderContextCustomUI,\n disableActions,\n progressConfig,\n alert,\n}: GroupsProps) => {\n const {\n groups,\n isLoading,\n refresh,\n onDeleteGroup,\n setShowDeleteModal,\n showDeleteModal,\n groupUIs,\n contextUIs,\n errorMessage,\n setErrorMessage,\n activeOverlapInfoPanelGroup,\n setActiveOverlapInfoPanelGroup,\n overlappedElementsInfo,\n } = useGroupsOperations({ mappingId: mapping.id });\n\n const addGroup = useCallback((type: string) => {\n if (!onClickAddGroup) return;\n onClickAddGroup(type);\n }, [onClickAddGroup]);\n\n const renderAlert = useCallback(() => {\n if (!errorMessage) {\n return alert;\n }\n return (\n <Alert type=\"negative\" onClose={() => setErrorMessage(undefined)}>\n {errorMessage}\n </Alert>\n );\n }, [alert, errorMessage, setErrorMessage]);\n\n return (\n <GroupsView\n mapping={mapping}\n groups={groups ?? []}\n isLoading={isLoading}\n onRefresh={refresh}\n groupUIs={groupUIs}\n actionButtonRenderers={actionButtonRenderers}\n onClickAddGroup={addGroup}\n onClickGroupTitle={onClickGroupTitle}\n onClickGroupModify={onClickGroupModify}\n onClickRenderContextCustomUI={onClickRenderContextCustomUI}\n disableActions={disableActions}\n selectedGroupForDeletion={showDeleteModal}\n setSelectedGroupForDeletion={setShowDeleteModal}\n onDeleteGroup={onDeleteGroup}\n onCloseDeleteModal={() => setShowDeleteModal(undefined)}\n contextUIs={contextUIs}\n progressConfig={progressConfig}\n alert={renderAlert()}\n setActiveOverlapInfoPanelGroup={setActiveOverlapInfoPanelGroup}\n activeOverlapInfoPanelGroup={activeOverlapInfoPanelGroup}\n overlappedElementsInfo={overlappedElementsInfo}\n />\n );\n};\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type {
|
|
2
|
+
import type { GroupMinimal } from "@itwin/insights-client";
|
|
3
3
|
interface GroupsShowHideButtonsProps {
|
|
4
|
-
group:
|
|
4
|
+
group: GroupMinimal;
|
|
5
5
|
isLoadingQuery: boolean;
|
|
6
|
-
showGroup: (group:
|
|
7
|
-
hideGroup: (group:
|
|
6
|
+
showGroup: (group: GroupMinimal) => void;
|
|
7
|
+
hideGroup: (group: GroupMinimal) => void;
|
|
8
8
|
}
|
|
9
9
|
export declare const GroupsShowHideButtons: ({ group, isLoadingQuery, showGroup, hideGroup, }: GroupsShowHideButtonsProps) => JSX.Element;
|
|
10
10
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupsShowHideButtons.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupsShowHideButtons.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AASxF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,KAAK,EACL,cAAc,EACd,SAAS,EACT,SAAS,GACkB,EAAE,EAAE;IAC/B,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,8BAA8B,EAAE,CAAC;IACjF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAE5G,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7C,IAAI,aAAa,EAAE;YACjB,SAAS,CAAC,KAAK,CAAC,CAAC;YACjB,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;SACnF;aAAM;YACL,SAAS,CAAC,KAAK,CAAC,CAAC;YACjB,IAAI,KAAK,CAAC,EAAE,EAAE;gBACZ,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC7D;SACF;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtF,OAAO,CACL,oBAAC,UAAU,IACT,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAC,YAAY,EACtB,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAC,yBAAyB,IAE9B,aAAa,CAAC,CAAC,CAAC,oBAAC,iBAAiB,OAAG,CAAC,CAAC,CAAC,oBAAC,iBAAiB,OAAG,CACnD,CACd,CAAC;AACJ,CAAC,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*--------------------------------------------------------------------------------------------*/\nimport type {
|
|
1
|
+
{"version":3,"file":"GroupsShowHideButtons.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupsShowHideButtons.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AASxF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,KAAK,EACL,cAAc,EACd,SAAS,EACT,SAAS,GACkB,EAAE,EAAE;IAC/B,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,8BAA8B,EAAE,CAAC;IACjF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAE5G,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7C,IAAI,aAAa,EAAE;YACjB,SAAS,CAAC,KAAK,CAAC,CAAC;YACjB,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;SACnF;aAAM;YACL,SAAS,CAAC,KAAK,CAAC,CAAC;YACjB,IAAI,KAAK,CAAC,EAAE,EAAE;gBACZ,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC7D;SACF;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtF,OAAO,CACL,oBAAC,UAAU,IACT,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAC,YAAY,EACtB,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAC,yBAAyB,IAE9B,aAAa,CAAC,CAAC,CAAC,oBAAC,iBAAiB,OAAG,CAAC,CAAC,CAAC,oBAAC,iBAAiB,OAAG,CACnD,CACd,CAAC;AACJ,CAAC,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*--------------------------------------------------------------------------------------------*/\nimport type { GroupMinimal } from \"@itwin/insights-client\";\nimport { SvgVisibilityHide, SvgVisibilityShow } from \"@itwin/itwinui-icons-react\";\nimport { IconButton } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useMemo } from \"react\";\nimport { useGroupHilitedElementsContext } from \"../context/GroupHilitedElementsContext\";\n\ninterface GroupsShowHideButtonsProps {\n group: GroupMinimal;\n isLoadingQuery: boolean;\n showGroup: (group: GroupMinimal) => void;\n hideGroup: (group: GroupMinimal) => void;\n}\n\nexport const GroupsShowHideButtons = ({\n group,\n isLoadingQuery,\n showGroup,\n hideGroup,\n}: GroupsShowHideButtonsProps) => {\n const { hiddenGroupsIds, setHiddenGroupsIds } = useGroupHilitedElementsContext();\n const isGroupHidden = useMemo(() => group.id && hiddenGroupsIds.has(group.id), [group.id, hiddenGroupsIds]);\n\n const toggleGroupVisibility = useCallback(() => {\n if (isGroupHidden) {\n showGroup(group);\n setHiddenGroupsIds(new Set([...hiddenGroupsIds].filter((id) => group.id !== id)));\n } else {\n hideGroup(group);\n if (group.id) {\n setHiddenGroupsIds(new Set([...hiddenGroupsIds, group.id]));\n }\n }\n }, [group, hiddenGroupsIds, hideGroup, isGroupHidden, setHiddenGroupsIds, showGroup]);\n\n return (\n <IconButton\n disabled={isLoadingQuery}\n styleType=\"borderless\"\n onClick={toggleGroupVisibility}\n title='Toggle Group Visibility'\n >\n {isGroupHidden ? <SvgVisibilityHide /> : <SvgVisibilityShow />}\n </IconButton>\n );\n};\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { Alert } from "@itwin/itwinui-react";
|
|
3
3
|
import "./GroupsView.scss";
|
|
4
|
-
import type {
|
|
4
|
+
import type { GroupMinimal, Mapping } from "@itwin/insights-client";
|
|
5
5
|
import type { ContextCustomUI, GroupingCustomUI } from "../customUI/GroupingMappingCustomUI";
|
|
6
6
|
import type { OverlappedInfo } from "../context/GroupHilitedElementsContext";
|
|
7
7
|
export interface ActionButtonRendererProps {
|
|
8
|
-
group:
|
|
8
|
+
group: GroupMinimal;
|
|
9
9
|
}
|
|
10
10
|
export declare type ActionButtonRenderer = (props: ActionButtonRendererProps) => React.ReactNode;
|
|
11
11
|
export interface ProgressConfig {
|
|
@@ -16,28 +16,36 @@ export interface ProgressConfig {
|
|
|
16
16
|
baseProgress?: number;
|
|
17
17
|
maxDynamicProgress?: number;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Props for the {@link GroupsView} component.
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
19
23
|
export interface GroupsViewProps {
|
|
20
24
|
mapping: Mapping;
|
|
21
|
-
groups:
|
|
25
|
+
groups: GroupMinimal[];
|
|
22
26
|
isLoading: boolean;
|
|
23
27
|
onRefresh: () => Promise<void>;
|
|
24
28
|
groupUIs: GroupingCustomUI[];
|
|
25
29
|
actionButtonRenderers?: ActionButtonRenderer[];
|
|
26
30
|
contextUIs: ContextCustomUI[];
|
|
27
31
|
onClickAddGroup?: (queryGenerationType: string) => void;
|
|
28
|
-
onClickGroupTitle?: (group:
|
|
29
|
-
onClickGroupModify?: (group:
|
|
30
|
-
onClickRenderContextCustomUI?: (contextCustomUI: Exclude<ContextCustomUI["uiComponent"], undefined>, group:
|
|
32
|
+
onClickGroupTitle?: (group: GroupMinimal) => void;
|
|
33
|
+
onClickGroupModify?: (group: GroupMinimal, queryGenerationType: string) => void;
|
|
34
|
+
onClickRenderContextCustomUI?: (contextCustomUI: Exclude<ContextCustomUI["uiComponent"], undefined>, group: GroupMinimal, displayLabel: string) => void;
|
|
31
35
|
disableActions?: boolean;
|
|
32
|
-
selectedGroupForDeletion?:
|
|
33
|
-
setSelectedGroupForDeletion: (group:
|
|
34
|
-
onDeleteGroup: (group:
|
|
36
|
+
selectedGroupForDeletion?: GroupMinimal;
|
|
37
|
+
setSelectedGroupForDeletion: (group: GroupMinimal) => void;
|
|
38
|
+
onDeleteGroup: (group: GroupMinimal) => Promise<void>;
|
|
35
39
|
onCloseDeleteModal: () => void;
|
|
36
40
|
alert?: React.ReactElement<typeof Alert>;
|
|
37
|
-
setActiveOverlapInfoPanelGroup?: (activeOverlapInfoPanelGroup:
|
|
38
|
-
activeOverlapInfoPanelGroup?:
|
|
41
|
+
setActiveOverlapInfoPanelGroup?: (activeOverlapInfoPanelGroup: GroupMinimal | undefined) => void;
|
|
42
|
+
activeOverlapInfoPanelGroup?: GroupMinimal | undefined;
|
|
39
43
|
overlappedElementsInfo?: Map<string, OverlappedInfo[]>;
|
|
40
44
|
progressConfig?: ProgressConfig;
|
|
41
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Component to list groups.
|
|
48
|
+
* @internal
|
|
49
|
+
*/
|
|
42
50
|
export declare const GroupsView: ({ mapping, groups, isLoading, onRefresh, groupUIs, actionButtonRenderers, onClickAddGroup, onClickGroupTitle, onClickGroupModify, onClickRenderContextCustomUI, disableActions, selectedGroupForDeletion, onDeleteGroup, onCloseDeleteModal, setSelectedGroupForDeletion, contextUIs, alert, setActiveOverlapInfoPanelGroup, activeOverlapInfoPanelGroup, overlappedElementsInfo, progressConfig, }: GroupsViewProps) => JSX.Element;
|
|
43
51
|
//# sourceMappingURL=GroupsView.d.ts.map
|
|
@@ -12,6 +12,10 @@ import { LoadingOverlay } from "../SharedComponents/LoadingOverlay";
|
|
|
12
12
|
import { GroupListItem } from "./GroupListItem";
|
|
13
13
|
import { GroupsAddButton } from "./GroupsAddButton";
|
|
14
14
|
import { OverlappedElementsInformationPanel } from "./OverlappedElementsInformationPanel";
|
|
15
|
+
/**
|
|
16
|
+
* Component to list groups.
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
15
19
|
export const GroupsView = ({ mapping, groups, isLoading, onRefresh, groupUIs, actionButtonRenderers, onClickAddGroup, onClickGroupTitle, onClickGroupModify, onClickRenderContextCustomUI, disableActions, selectedGroupForDeletion, onDeleteGroup, onCloseDeleteModal, setSelectedGroupForDeletion, contextUIs, alert, setActiveOverlapInfoPanelGroup, activeOverlapInfoPanelGroup, overlappedElementsInfo, progressConfig, }) => {
|
|
16
20
|
/**
|
|
17
21
|
* UX Progress Bar Logic:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupsView.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupsView.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EACL,WAAW,EACX,UAAU,EACV,uBAAuB,EACvB,IAAI,EACJ,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,UAAU,GACX,MAAM,4BAA4B,CAAC;AACpC,OAAO,WAAW,MAAM,iCAAiC,CAAC;AAC1D,OAAO,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"GroupsView.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupsView.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*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport type {\n Alert,\n} from \"@itwin/itwinui-react\";\nimport {\n ButtonGroup,\n IconButton,\n InformationPanelWrapper,\n List,\n ProgressLinear,\n} from \"@itwin/itwinui-react\";\nimport {\n SvgRefresh,\n} from \"@itwin/itwinui-icons-react\";\nimport DeleteModal from \"../SharedComponents/DeleteModal\";\nimport \"./GroupsView.scss\";\nimport { EmptyMessage } from \"../SharedComponents/EmptyMessage\";\nimport { LoadingOverlay } from \"../SharedComponents/LoadingOverlay\";\nimport type { GroupMinimal, Mapping } from \"@itwin/insights-client\";\nimport { GroupListItem } from \"./GroupListItem\";\nimport type { ContextCustomUI, GroupingCustomUI } from \"../customUI/GroupingMappingCustomUI\";\nimport { GroupsAddButton } from \"./GroupsAddButton\";\nimport { OverlappedElementsInformationPanel } from \"./OverlappedElementsInformationPanel\";\nimport type { OverlappedInfo } from \"../context/GroupHilitedElementsContext\";\n\nexport interface ActionButtonRendererProps {\n group: GroupMinimal;\n}\n\nexport type ActionButtonRenderer = (\n props: ActionButtonRendererProps\n) => React.ReactNode;\n\nexport interface ProgressConfig {\n hilitedGroupsProgress?: {\n currentHilitedGroups: number;\n totalNumberOfGroups: number;\n };\n baseProgress?: number;\n maxDynamicProgress?: number;\n}\n\n/**\n * Props for the {@link GroupsView} component.\n * @internal\n */\nexport interface GroupsViewProps {\n mapping: Mapping;\n groups: GroupMinimal[];\n isLoading: boolean;\n onRefresh: () => Promise<void>;\n groupUIs: GroupingCustomUI[];\n actionButtonRenderers?: ActionButtonRenderer[];\n contextUIs: ContextCustomUI[];\n onClickAddGroup?: (queryGenerationType: string) => void;\n onClickGroupTitle?: (group: GroupMinimal) => void;\n onClickGroupModify?: (group: GroupMinimal, queryGenerationType: string) => void;\n onClickRenderContextCustomUI?: (\n contextCustomUI: Exclude<ContextCustomUI[\"uiComponent\"], undefined>,\n group: GroupMinimal,\n displayLabel: string,\n ) => void;\n disableActions?: boolean;\n selectedGroupForDeletion?: GroupMinimal;\n setSelectedGroupForDeletion: (group: GroupMinimal) => void;\n onDeleteGroup: (group: GroupMinimal) => Promise<void>;\n onCloseDeleteModal: () => void;\n alert?: React.ReactElement<typeof Alert>;\n setActiveOverlapInfoPanelGroup?: (activeOverlapInfoPanelGroup: GroupMinimal | undefined) => void;\n activeOverlapInfoPanelGroup?: GroupMinimal | undefined;\n overlappedElementsInfo?: Map<string, OverlappedInfo[]>;\n progressConfig?: ProgressConfig;\n}\n\n/**\n * Component to list groups.\n * @internal\n */\nexport const GroupsView = ({\n mapping,\n groups,\n isLoading,\n onRefresh,\n groupUIs,\n actionButtonRenderers,\n onClickAddGroup,\n onClickGroupTitle,\n onClickGroupModify,\n onClickRenderContextCustomUI,\n disableActions,\n selectedGroupForDeletion,\n onDeleteGroup,\n onCloseDeleteModal,\n setSelectedGroupForDeletion,\n contextUIs,\n alert,\n setActiveOverlapInfoPanelGroup,\n activeOverlapInfoPanelGroup,\n overlappedElementsInfo,\n progressConfig,\n}: GroupsViewProps) => {\n /**\n * UX Progress Bar Logic:\n * - Start non-zero for immediate feedback.\n * - Restrict motion to a range (e.g., 25-90%) for perceived continuity.\n * - Disappear when compplete.\n * Goal: Smooth experience for unpredictable durations.\n */\n const { baseProgress = 25, maxDynamicProgress = 65, hilitedGroupsProgress } = progressConfig || {};\n\n return (\n <InformationPanelWrapper className=\"gmw-groups-container\">\n <div className=\"gmw-toolbar\">\n {onClickAddGroup && groupUIs.length > 0 && (\n <GroupsAddButton\n disabled={disableActions}\n groupUIs={groupUIs}\n onClickAddGroup={onClickAddGroup}\n />\n )}\n <ButtonGroup className=\"gmw-toolbar-buttons\">\n <IconButton\n title=\"Refresh\"\n onClick={onRefresh}\n disabled={isLoading || disableActions}\n styleType=\"borderless\"\n >\n <SvgRefresh />\n </IconButton>\n </ButtonGroup>\n </div>\n {alert}\n <div className='gmw-groups-border' />\n {!!hilitedGroupsProgress &&\n <div className=\"gmw-group-progress-bar\">\n <ProgressLinear\n value={baseProgress + (hilitedGroupsProgress.currentHilitedGroups / hilitedGroupsProgress.totalNumberOfGroups * maxDynamicProgress)}\n />\n </div>}\n {isLoading ? (\n <LoadingOverlay />\n ) : groups.length === 0 ? (\n <EmptyMessage message=\"No Groups available.\" />\n ) : (\n <List className=\"gmw-group-list\">\n {groups.map((group) => (\n <GroupListItem\n key={group.id}\n mapping={mapping}\n group={group}\n groupUIs={groupUIs}\n actionButtonRenderers={actionButtonRenderers}\n onClickGroupTitle={onClickGroupTitle}\n onClickGroupModify={onClickGroupModify}\n onClickRenderContextCustomUI={onClickRenderContextCustomUI}\n disableActions={disableActions}\n setShowDeleteModal={setSelectedGroupForDeletion}\n contextUIs={contextUIs}\n setActiveOverlapInfoPanelGroup={setActiveOverlapInfoPanelGroup}\n />\n ))}\n </List>\n )}\n {overlappedElementsInfo && setActiveOverlapInfoPanelGroup &&\n <OverlappedElementsInformationPanel\n group={activeOverlapInfoPanelGroup}\n onClose={() => setActiveOverlapInfoPanelGroup(undefined)}\n overlappedElementsInfo={overlappedElementsInfo}\n groups={groups}\n />}\n {selectedGroupForDeletion && (\n <DeleteModal\n entityName={selectedGroupForDeletion.groupName}\n onClose={onCloseDeleteModal}\n onDelete={async () => {\n await onDeleteGroup(selectedGroupForDeletion);\n }}\n />\n )}\n </InformationPanelWrapper>\n );\n};\n"]}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { GroupsProps } from "./Groups";
|
|
3
3
|
import "./GroupsVisualization.scss";
|
|
4
|
+
/**
|
|
5
|
+
* Props for the {@link GroupsVisualization} component.
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
4
8
|
export interface GroupsVisualizationProps extends GroupsProps {
|
|
5
9
|
isNonEmphasizedSelectable?: boolean;
|
|
6
10
|
emphasizeElements?: boolean;
|
|
7
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Component to visualize groups and their elements.
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
8
16
|
export declare const GroupsVisualization: ({ emphasizeElements, isNonEmphasizedSelectable, onClickGroupModify, onClickAddGroup, mapping, ...rest }: GroupsVisualizationProps) => JSX.Element;
|
|
9
17
|
//# sourceMappingURL=GroupsVisualization.d.ts.map
|
|
@@ -10,11 +10,15 @@ import "./GroupsVisualization.scss";
|
|
|
10
10
|
import { useGroupingMappingApiConfig } from "../context/GroupingApiConfigContext";
|
|
11
11
|
import { Alert, Icon, Text } from "@itwin/itwinui-react";
|
|
12
12
|
import { SvgMore } from "@itwin/itwinui-icons-react";
|
|
13
|
-
import { useMappingClient } from "../context/MappingClientContext";
|
|
14
13
|
import { useMutation } from "@tanstack/react-query";
|
|
15
14
|
import { useIsMounted } from "../../common/hooks/useIsMounted";
|
|
16
15
|
import { useFetchGroups } from "./hooks/useFetchGroups";
|
|
17
16
|
import { useKeySetHiliteQueries } from "./hooks/useKeySetHiliteQueries";
|
|
17
|
+
import { useGroupsClient } from "../context/GroupsClientContext";
|
|
18
|
+
/**
|
|
19
|
+
* Component to visualize groups and their elements.
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
18
22
|
export const GroupsVisualization = ({ emphasizeElements = true, isNonEmphasizedSelectable = false, onClickGroupModify, onClickAddGroup, mapping, ...rest }) => {
|
|
19
23
|
const { iModelConnection } = useGroupingMappingApiConfig();
|
|
20
24
|
if (!iModelConnection) {
|
|
@@ -23,9 +27,9 @@ export const GroupsVisualization = ({ emphasizeElements = true, isNonEmphasizedS
|
|
|
23
27
|
const [isAlertClosed, setIsAlertClosed] = useState(true);
|
|
24
28
|
const [isAlertExpanded, setIsAlertExpanded] = useState(false);
|
|
25
29
|
const { hiddenGroupsIds, showGroupColor, setShowGroupColor, isOverlappedColored, setHiddenGroupsIds, setNumberOfVisualizedGroups, isVisualizationsEnabled, setIsVisualizationsEnabled, overlappedElementsMetadata, setOverlappedElementsMetadata, } = useGroupHilitedElementsContext();
|
|
26
|
-
const { getAccessToken
|
|
27
|
-
const
|
|
28
|
-
const { data: groups, isFetched: isGroupsFetched, isFetching: isGroupsFetching } = useFetchGroups(
|
|
30
|
+
const { getAccessToken } = useGroupingMappingApiConfig();
|
|
31
|
+
const groupsClient = useGroupsClient();
|
|
32
|
+
const { data: groups, isFetched: isGroupsFetched, isFetching: isGroupsFetching } = useFetchGroups(mapping.id, getAccessToken, groupsClient);
|
|
29
33
|
const isMounted = useIsMounted();
|
|
30
34
|
const [enableGroupQueries, setEnableGroupQueries] = useState(false);
|
|
31
35
|
const { groupQueries } = useKeySetHiliteQueries(groups ?? [], enableGroupQueries, iModelConnection);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupsVisualization.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupsVisualization.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*--------------------------------------------------------------------------------------------*/\nimport type { Group } from \"@itwin/insights-client\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { OverlappedElementGroupPairs } from \"../context/GroupHilitedElementsContext\";\nimport { useGroupHilitedElementsContext } from \"../context/GroupHilitedElementsContext\";\nimport {\n generateOverlappedGroups,\n hideGroupConsideringOverlaps,\n hideGroupIds,\n visualizeGroupColors,\n} from \"./groupsHelpers\";\nimport {\n clearEmphasizedElements,\n clearEmphasizedOverriddenElements,\n clearHiddenElements,\n hideElements,\n zoomToElements,\n} from \"../../common/viewerUtils\";\nimport type { GroupsProps } from \"./Groups\";\nimport { Groups } from \"./Groups\";\nimport { GroupColorLegend } from \"./GroupColorLegend\";\nimport { GroupVisualizationActions } from \"./GroupsVisualizationActions\";\nimport { GroupsShowHideButtons } from \"./GroupsShowHideButtons\";\nimport \"./GroupsVisualization.scss\";\nimport { useGroupingMappingApiConfig } from \"../context/GroupingApiConfigContext\";\nimport type { ActionButtonRenderer, ActionButtonRendererProps } from \"./GroupsView\";\nimport { Alert, Icon, Text } from \"@itwin/itwinui-react\";\nimport { SvgMore } from \"@itwin/itwinui-icons-react\";\nimport { useMappingClient } from \"../context/MappingClientContext\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useIsMounted } from \"../../common/hooks/useIsMounted\";\nimport { useFetchGroups } from \"./hooks/useFetchGroups\";\nimport { useKeySetHiliteQueries } from \"./hooks/useKeySetHiliteQueries\";\n\nexport interface GroupsVisualizationProps extends GroupsProps {\n isNonEmphasizedSelectable?: boolean;\n emphasizeElements?: boolean;\n}\n\nexport const GroupsVisualization = ({\n emphasizeElements = true,\n isNonEmphasizedSelectable = false,\n onClickGroupModify,\n onClickAddGroup,\n mapping,\n ...rest\n}: GroupsVisualizationProps) => {\n const { iModelConnection } = useGroupingMappingApiConfig();\n if (!iModelConnection) {\n throw new Error(\"This component requires an active iModelConnection.\");\n }\n const [isAlertClosed, setIsAlertClosed] = useState<boolean>(true);\n const [isAlertExpanded, setIsAlertExpanded] = useState<boolean>(false);\n const {\n hiddenGroupsIds,\n showGroupColor,\n setShowGroupColor,\n isOverlappedColored,\n setHiddenGroupsIds,\n setNumberOfVisualizedGroups,\n isVisualizationsEnabled,\n setIsVisualizationsEnabled,\n overlappedElementsMetadata,\n setOverlappedElementsMetadata,\n } = useGroupHilitedElementsContext();\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const { data: groups, isFetched: isGroupsFetched, isFetching: isGroupsFetching } = useFetchGroups(iModelId, mapping.id, getAccessToken, mappingClient);\n const isMounted = useIsMounted();\n const [enableGroupQueries, setEnableGroupQueries] = useState<boolean>(false);\n const { groupQueries } = useKeySetHiliteQueries(groups ?? [], enableGroupQueries, iModelConnection);\n\n const triggerVisualization = useCallback(async (groupsWithGroupedOverlaps: OverlappedElementGroupPairs[]) =>\n visualizeGroupColors(\n hiddenGroupsIds,\n groupsWithGroupedOverlaps,\n setNumberOfVisualizedGroups,\n emphasizeElements,\n ), [emphasizeElements, hiddenGroupsIds, setNumberOfVisualizedGroups]);\n\n const zoomToElementsMutation = useMutation({\n mutationFn: zoomToElements,\n onSuccess: () => {\n if (isMounted) {\n isNonEmphasizedSelectable && clearEmphasizedElements();\n }\n },\n });\n\n const visualizationMutation = useMutation({\n mutationFn: triggerVisualization,\n onSuccess: (allIds) => {\n if (isMounted) {\n zoomToElementsMutation.mutate(allIds);\n }\n },\n });\n\n const isGroupsQueriesReady = useMemo(() =>\n groupQueries.every((query) => query.isFetched && query.data) && groupQueries.length > 0, [groupQueries]\n );\n const groupQueriesProgressCount = useMemo(() => groupQueries.filter((query) => query.isFetched).length, [groupQueries]);\n const isResolvingGroupQueries = useMemo(() => groupQueries.some((query) => query.isFetching), [groupQueries]);\n\n const hiliteIds = useMemo(() => {\n if (!isGroupsQueriesReady || !groups) return [];\n\n // Map to track which groups have been processed for each query to ensure unique associations between groups and queries\n const processedGroupIds = new Map<string, string[]>();\n\n return groupQueries.flatMap((query) => {\n // Find all groups that match the current query and haven't been processed yet for this query\n const matchingGroups = groups.filter((group) => {\n const isMatch = group.query === query.data!.query;\n const isProcessed = processedGroupIds.get(query.data!.query)?.includes(group.id);\n return isMatch && !isProcessed;\n });\n\n matchingGroups.forEach((group) => {\n const existingGroupIds = processedGroupIds.get(query.data!.query);\n if (existingGroupIds) {\n existingGroupIds.push(group.id);\n } else {\n processedGroupIds.set(query.data!.query, [group.id]);\n }\n });\n\n // Map each matching group to an object with groupId and elementIds\n return matchingGroups.map((group) => ({\n groupId: group.id,\n elementIds: query.data!.result.ids,\n }));\n });\n }, [groupQueries, isGroupsQueriesReady, groups]);\n\n const getHiliteIdsFromGroupsWrapper = useCallback(\n (groups: Group[]) =>\n hiliteIds.filter((id) => groups.some((group) => group.id === id.groupId)).flatMap((id) => id.elementIds),\n [hiliteIds]\n );\n\n useEffect(() => {\n const processOverlappedGroups = async () => {\n const results = generateOverlappedGroups(hiliteIds);\n const { groupsWithGroupedOverlaps, overlappedElementsInfo, numberOfElementsInGroups } = results;\n\n setOverlappedElementsMetadata({\n overlappedElementsInfo,\n groupElementsInfo: numberOfElementsInGroups,\n overlappedElementGroupPairs: groupsWithGroupedOverlaps,\n });\n\n if (showGroupColor) {\n await visualizationMutation.mutateAsync(groupsWithGroupedOverlaps);\n } else {\n clearEmphasizedOverriddenElements();\n }\n\n clearHiddenElements();\n hideGroupIds(hiddenGroupsIds, groupsWithGroupedOverlaps);\n };\n\n const shouldProcessOverlappedGroups = () => !isOverlappedColored && hiliteIds.length > 0 && !isGroupsFetching;\n\n if (shouldProcessOverlappedGroups()) {\n void processOverlappedGroups();\n }\n // We don't want to trigger full visualization when toggling individual groups.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showGroupColor, isOverlappedColored, hiliteIds]);\n\n useEffect(() => {\n if (isVisualizationsEnabled) {\n setEnableGroupQueries(true);\n } else {\n setShowGroupColor(false);\n clearHiddenElements();\n setHiddenGroupsIds(new Set());\n }\n }, [isVisualizationsEnabled, setHiddenGroupsIds, setIsVisualizationsEnabled, setShowGroupColor]);\n\n const hideAllGroups = useCallback(\n () => {\n if (!groups) return;\n hideElements(getHiliteIdsFromGroupsWrapper(groups));\n },\n [getHiliteIdsFromGroupsWrapper, groups]\n );\n\n const hideSingleGroupWrapper = useCallback(\n (groupToHide: Group) => {\n hideGroupConsideringOverlaps(overlappedElementsMetadata.overlappedElementGroupPairs, groupToHide.id, hiddenGroupsIds);\n },\n [hiddenGroupsIds, overlappedElementsMetadata.overlappedElementGroupPairs]\n );\n\n const showGroup = useCallback(\n (viewGroup: Group) => {\n if (!groups) return;\n clearHiddenElements();\n\n // hide group Ids filter\n const newHiddenGroups: Group[] = groups.filter((g) => hiddenGroupsIds.has(g.id) && g.id !== viewGroup.id);\n\n // view group Ids filter\n const viewGroups = groups.filter((g) => !hiddenGroupsIds.has(g.id) || g.id === viewGroup.id);\n const viewIds = getHiliteIdsFromGroupsWrapper(viewGroups);\n\n let hiddenIds = getHiliteIdsFromGroupsWrapper(newHiddenGroups);\n hiddenIds = hiddenIds.filter((id) => !viewIds.includes(id));\n hideElements(hiddenIds);\n },\n [groups, hiddenGroupsIds, getHiliteIdsFromGroupsWrapper]\n );\n\n const showAll = useCallback(() => {\n clearHiddenElements();\n setHiddenGroupsIds(new Set());\n }, [setHiddenGroupsIds]);\n\n const hideAll = useCallback(() => {\n if (!groups) return;\n hideAllGroups();\n setHiddenGroupsIds(\n new Set(groups.map((g) => g.id))\n );\n\n }, [\n setHiddenGroupsIds,\n groups,\n hideAllGroups,\n ]);\n\n const onModify = useCallback(\n (group: Group, type: string) => {\n if (!onClickGroupModify) return;\n if (group.id && hiddenGroupsIds.has(group.id)) {\n showGroup(group);\n setHiddenGroupsIds(new Set([...hiddenGroupsIds].filter((id) => id !== group.id)));\n }\n clearEmphasizedElements();\n onClickGroupModify(group, type);\n },\n [hiddenGroupsIds, onClickGroupModify, setHiddenGroupsIds, showGroup]\n );\n\n const onAddGroup = useCallback(\n (type: string) => {\n if (!onClickAddGroup) return;\n onClickAddGroup(type);\n clearEmphasizedElements();\n },\n [onClickAddGroup]\n );\n\n const groupActionButtonRenderers: ActionButtonRenderer[] = useMemo(() => isVisualizationsEnabled ? [\n (props: ActionButtonRendererProps) =>\n showGroupColor ? <GroupColorLegend {...props} groups={groups ?? []} /> : [],\n (props: ActionButtonRendererProps) => (\n <GroupsShowHideButtons\n {...props}\n isLoadingQuery={!(isVisualizationsEnabled && isGroupsFetched && isGroupsQueriesReady)}\n showGroup={showGroup}\n hideGroup={hideSingleGroupWrapper}\n />\n ),\n ].flat() : [], [groups, hideSingleGroupWrapper, isGroupsFetched, isGroupsQueriesReady, isVisualizationsEnabled, showGroup, showGroupColor]);\n\n const overlappedAlert = useMemo(() =>\n overlappedElementsMetadata.overlappedElementsInfo.size > 0 && isAlertClosed && showGroupColor ?\n <Alert\n onClose={() => setIsAlertClosed(false)}\n clickableText={isAlertExpanded ? \"Less Details\" : \"More Details\"}\n clickableTextProps={{ onClick: () => setIsAlertExpanded(!isAlertExpanded) }}\n >\n Overlapping elements are colored <Text className=\"gmw-red-text\">red</Text> in the viewer.\n {isAlertExpanded ? (\n <>\n <br />\n To get overlap info in detail, click the <Icon><SvgMore /></Icon> button then “Overlap Info”\n </>\n ) : undefined}\n </Alert> : undefined, [isAlertClosed, isAlertExpanded, overlappedElementsMetadata.overlappedElementsInfo.size, showGroupColor]\n );\n\n const progressConfig = useMemo(\n () =>\n isVisualizationsEnabled && isResolvingGroupQueries\n ? {\n hilitedGroupsProgress: {\n currentHilitedGroups: groupQueriesProgressCount,\n totalNumberOfGroups: groups?.length ?? 0,\n },\n }\n : undefined,\n [groupQueriesProgressCount, groups, isResolvingGroupQueries, isVisualizationsEnabled],\n );\n\n return (\n <div className=\"gmw-groups-vis-container\">\n <GroupVisualizationActions\n disabled={!(isVisualizationsEnabled && isGroupsFetched && isGroupsQueriesReady)}\n isVisualizationEnabled={isVisualizationsEnabled}\n onClickVisualizationButton={() => setIsVisualizationsEnabled((b) => !b)}\n showAll={showAll}\n hideAll={hideAll}\n />\n <Groups\n onClickGroupModify={onModify}\n onClickAddGroup={onAddGroup}\n actionButtonRenderers={groupActionButtonRenderers}\n mapping={mapping}\n {...rest}\n progressConfig={progressConfig}\n alert={overlappedAlert}\n />\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"GroupsVisualization.js","sourceRoot":"","sources":["../../../../src/components/Groups/GroupsVisualization.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*--------------------------------------------------------------------------------------------*/\nimport type { GroupMinimal } from \"@itwin/insights-client\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { OverlappedElementGroupPairs } from \"../context/GroupHilitedElementsContext\";\nimport { useGroupHilitedElementsContext } from \"../context/GroupHilitedElementsContext\";\nimport {\n generateOverlappedGroups,\n hideGroupConsideringOverlaps,\n hideGroupIds,\n visualizeGroupColors,\n} from \"./groupsHelpers\";\nimport {\n clearEmphasizedElements,\n clearEmphasizedOverriddenElements,\n clearHiddenElements,\n hideElements,\n zoomToElements,\n} from \"../../common/viewerUtils\";\nimport type { GroupsProps } from \"./Groups\";\nimport { Groups } from \"./Groups\";\nimport { GroupColorLegend } from \"./GroupColorLegend\";\nimport { GroupVisualizationActions } from \"./GroupsVisualizationActions\";\nimport { GroupsShowHideButtons } from \"./GroupsShowHideButtons\";\nimport \"./GroupsVisualization.scss\";\nimport { useGroupingMappingApiConfig } from \"../context/GroupingApiConfigContext\";\nimport type { ActionButtonRenderer, ActionButtonRendererProps } from \"./GroupsView\";\nimport { Alert, Icon, Text } from \"@itwin/itwinui-react\";\nimport { SvgMore } from \"@itwin/itwinui-icons-react\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useIsMounted } from \"../../common/hooks/useIsMounted\";\nimport { useFetchGroups } from \"./hooks/useFetchGroups\";\nimport { useKeySetHiliteQueries } from \"./hooks/useKeySetHiliteQueries\";\nimport { useGroupsClient } from \"../context/GroupsClientContext\";\n\n/**\n * Props for the {@link GroupsVisualization} component.\n * @public\n */\nexport interface GroupsVisualizationProps extends GroupsProps {\n isNonEmphasizedSelectable?: boolean;\n emphasizeElements?: boolean;\n}\n\n/**\n * Component to visualize groups and their elements.\n * @public\n */\nexport const GroupsVisualization = ({\n emphasizeElements = true,\n isNonEmphasizedSelectable = false,\n onClickGroupModify,\n onClickAddGroup,\n mapping,\n ...rest\n}: GroupsVisualizationProps) => {\n const { iModelConnection } = useGroupingMappingApiConfig();\n if (!iModelConnection) {\n throw new Error(\"This component requires an active iModelConnection.\");\n }\n const [isAlertClosed, setIsAlertClosed] = useState<boolean>(true);\n const [isAlertExpanded, setIsAlertExpanded] = useState<boolean>(false);\n const {\n hiddenGroupsIds,\n showGroupColor,\n setShowGroupColor,\n isOverlappedColored,\n setHiddenGroupsIds,\n setNumberOfVisualizedGroups,\n isVisualizationsEnabled,\n setIsVisualizationsEnabled,\n overlappedElementsMetadata,\n setOverlappedElementsMetadata,\n } = useGroupHilitedElementsContext();\n const { getAccessToken} = useGroupingMappingApiConfig();\n const groupsClient = useGroupsClient();\n const { data: groups, isFetched: isGroupsFetched, isFetching: isGroupsFetching } = useFetchGroups(mapping.id, getAccessToken, groupsClient);\n const isMounted = useIsMounted();\n const [enableGroupQueries, setEnableGroupQueries] = useState<boolean>(false);\n const { groupQueries } = useKeySetHiliteQueries(groups ?? [], enableGroupQueries, iModelConnection);\n\n const triggerVisualization = useCallback(async (groupsWithGroupedOverlaps: OverlappedElementGroupPairs[]) =>\n visualizeGroupColors(\n hiddenGroupsIds,\n groupsWithGroupedOverlaps,\n setNumberOfVisualizedGroups,\n emphasizeElements,\n ), [emphasizeElements, hiddenGroupsIds, setNumberOfVisualizedGroups]);\n\n const zoomToElementsMutation = useMutation({\n mutationFn: zoomToElements,\n onSuccess: () => {\n if (isMounted) {\n isNonEmphasizedSelectable && clearEmphasizedElements();\n }\n },\n });\n\n const visualizationMutation = useMutation({\n mutationFn: triggerVisualization,\n onSuccess: (allIds) => {\n if (isMounted) {\n zoomToElementsMutation.mutate(allIds);\n }\n },\n });\n\n const isGroupsQueriesReady = useMemo(() =>\n groupQueries.every((query) => query.isFetched && query.data) && groupQueries.length > 0, [groupQueries]\n );\n const groupQueriesProgressCount = useMemo(() => groupQueries.filter((query) => query.isFetched).length, [groupQueries]);\n const isResolvingGroupQueries = useMemo(() => groupQueries.some((query) => query.isFetching), [groupQueries]);\n\n const hiliteIds = useMemo(() => {\n if (!isGroupsQueriesReady || !groups) return [];\n\n // Map to track which groups have been processed for each query to ensure unique associations between groups and queries\n const processedGroupIds = new Map<string, string[]>();\n\n return groupQueries.flatMap((query) => {\n // Find all groups that match the current query and haven't been processed yet for this query\n const matchingGroups = groups.filter((group) => {\n const isMatch = group.query === query.data!.query;\n const isProcessed = processedGroupIds.get(query.data!.query)?.includes(group.id);\n return isMatch && !isProcessed;\n });\n\n matchingGroups.forEach((group) => {\n const existingGroupIds = processedGroupIds.get(query.data!.query);\n if (existingGroupIds) {\n existingGroupIds.push(group.id);\n } else {\n processedGroupIds.set(query.data!.query, [group.id]);\n }\n });\n\n // Map each matching group to an object with groupId and elementIds\n return matchingGroups.map((group) => ({\n groupId: group.id,\n elementIds: query.data!.result.ids,\n }));\n });\n }, [groupQueries, isGroupsQueriesReady, groups]);\n\n const getHiliteIdsFromGroupsWrapper = useCallback(\n (groups: GroupMinimal[]) =>\n hiliteIds.filter((id) => groups.some((group) => group.id === id.groupId)).flatMap((id) => id.elementIds),\n [hiliteIds]\n );\n\n useEffect(() => {\n const processOverlappedGroups = async () => {\n const results = generateOverlappedGroups(hiliteIds);\n const { groupsWithGroupedOverlaps, overlappedElementsInfo, numberOfElementsInGroups } = results;\n\n setOverlappedElementsMetadata({\n overlappedElementsInfo,\n groupElementsInfo: numberOfElementsInGroups,\n overlappedElementGroupPairs: groupsWithGroupedOverlaps,\n });\n\n if (showGroupColor) {\n await visualizationMutation.mutateAsync(groupsWithGroupedOverlaps);\n } else {\n clearEmphasizedOverriddenElements();\n }\n\n clearHiddenElements();\n hideGroupIds(hiddenGroupsIds, groupsWithGroupedOverlaps);\n };\n\n const shouldProcessOverlappedGroups = () => !isOverlappedColored && hiliteIds.length > 0 && !isGroupsFetching;\n\n if (shouldProcessOverlappedGroups()) {\n void processOverlappedGroups();\n }\n // We don't want to trigger full visualization when toggling individual groups.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showGroupColor, isOverlappedColored, hiliteIds]);\n\n useEffect(() => {\n if (isVisualizationsEnabled) {\n setEnableGroupQueries(true);\n } else {\n setShowGroupColor(false);\n clearHiddenElements();\n setHiddenGroupsIds(new Set());\n }\n }, [isVisualizationsEnabled, setHiddenGroupsIds, setIsVisualizationsEnabled, setShowGroupColor]);\n\n const hideAllGroups = useCallback(\n () => {\n if (!groups) return;\n hideElements(getHiliteIdsFromGroupsWrapper(groups));\n },\n [getHiliteIdsFromGroupsWrapper, groups]\n );\n\n const hideSingleGroupWrapper = useCallback(\n (groupToHide: GroupMinimal) => {\n hideGroupConsideringOverlaps(overlappedElementsMetadata.overlappedElementGroupPairs, groupToHide.id, hiddenGroupsIds);\n },\n [hiddenGroupsIds, overlappedElementsMetadata.overlappedElementGroupPairs]\n );\n\n const showGroup = useCallback(\n (viewGroup: GroupMinimal) => {\n if (!groups) return;\n clearHiddenElements();\n\n // hide group Ids filter\n const newHiddenGroups: GroupMinimal[] = groups.filter((g) => hiddenGroupsIds.has(g.id) && g.id !== viewGroup.id);\n\n // view group Ids filter\n const viewGroups = groups.filter((g) => !hiddenGroupsIds.has(g.id) || g.id === viewGroup.id);\n const viewIds = getHiliteIdsFromGroupsWrapper(viewGroups);\n\n let hiddenIds = getHiliteIdsFromGroupsWrapper(newHiddenGroups);\n hiddenIds = hiddenIds.filter((id) => !viewIds.includes(id));\n hideElements(hiddenIds);\n },\n [groups, hiddenGroupsIds, getHiliteIdsFromGroupsWrapper]\n );\n\n const showAll = useCallback(() => {\n clearHiddenElements();\n setHiddenGroupsIds(new Set());\n }, [setHiddenGroupsIds]);\n\n const hideAll = useCallback(() => {\n if (!groups) return;\n hideAllGroups();\n setHiddenGroupsIds(\n new Set(groups.map((g) => g.id))\n );\n\n }, [\n setHiddenGroupsIds,\n groups,\n hideAllGroups,\n ]);\n\n const onModify = useCallback(\n (group: GroupMinimal, type: string) => {\n if (!onClickGroupModify) return;\n if (group.id && hiddenGroupsIds.has(group.id)) {\n showGroup(group);\n setHiddenGroupsIds(new Set([...hiddenGroupsIds].filter((id) => id !== group.id)));\n }\n clearEmphasizedElements();\n onClickGroupModify(group, type);\n },\n [hiddenGroupsIds, onClickGroupModify, setHiddenGroupsIds, showGroup]\n );\n\n const onAddGroup = useCallback(\n (type: string) => {\n if (!onClickAddGroup) return;\n onClickAddGroup(type);\n clearEmphasizedElements();\n },\n [onClickAddGroup]\n );\n\n const groupActionButtonRenderers: ActionButtonRenderer[] = useMemo(() => isVisualizationsEnabled ? [\n (props: ActionButtonRendererProps) =>\n showGroupColor ? <GroupColorLegend {...props} groups={groups ?? []} /> : [],\n (props: ActionButtonRendererProps) => (\n <GroupsShowHideButtons\n {...props}\n isLoadingQuery={!(isVisualizationsEnabled && isGroupsFetched && isGroupsQueriesReady)}\n showGroup={showGroup}\n hideGroup={hideSingleGroupWrapper}\n />\n ),\n ].flat() : [], [groups, hideSingleGroupWrapper, isGroupsFetched, isGroupsQueriesReady, isVisualizationsEnabled, showGroup, showGroupColor]);\n\n const overlappedAlert = useMemo(() =>\n overlappedElementsMetadata.overlappedElementsInfo.size > 0 && isAlertClosed && showGroupColor ?\n <Alert\n onClose={() => setIsAlertClosed(false)}\n clickableText={isAlertExpanded ? \"Less Details\" : \"More Details\"}\n clickableTextProps={{ onClick: () => setIsAlertExpanded(!isAlertExpanded) }}\n >\n Overlapping elements are colored <Text className=\"gmw-red-text\">red</Text> in the viewer.\n {isAlertExpanded ? (\n <>\n <br />\n To get overlap info in detail, click the <Icon><SvgMore /></Icon> button then “Overlap Info”\n </>\n ) : undefined}\n </Alert> : undefined, [isAlertClosed, isAlertExpanded, overlappedElementsMetadata.overlappedElementsInfo.size, showGroupColor]\n );\n\n const progressConfig = useMemo(\n () =>\n isVisualizationsEnabled && isResolvingGroupQueries\n ? {\n hilitedGroupsProgress: {\n currentHilitedGroups: groupQueriesProgressCount,\n totalNumberOfGroups: groups?.length ?? 0,\n },\n }\n : undefined,\n [groupQueriesProgressCount, groups, isResolvingGroupQueries, isVisualizationsEnabled],\n );\n\n return (\n <div className=\"gmw-groups-vis-container\">\n <GroupVisualizationActions\n disabled={!(isVisualizationsEnabled && isGroupsFetched && isGroupsQueriesReady)}\n isVisualizationEnabled={isVisualizationsEnabled}\n onClickVisualizationButton={() => setIsVisualizationsEnabled((b) => !b)}\n showAll={showAll}\n hideAll={hideAll}\n />\n <Groups\n onClickGroupModify={onModify}\n onClickAddGroup={onAddGroup}\n actionButtonRenderers={groupActionButtonRenderers}\n mapping={mapping}\n {...rest}\n progressConfig={progressConfig}\n alert={overlappedAlert}\n />\n </div>\n );\n};\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import "./OverlappedElementsInformationPanel.scss";
|
|
3
|
-
import type {
|
|
3
|
+
import type { GroupMinimal } from "@itwin/insights-client";
|
|
4
4
|
import type { OverlappedInfo } from "../context/GroupHilitedElementsContext";
|
|
5
5
|
export interface OverlappedElementsInformationPanelProps {
|
|
6
|
-
group?:
|
|
6
|
+
group?: GroupMinimal;
|
|
7
7
|
onClose: () => void;
|
|
8
8
|
overlappedElementsInfo: Map<string, OverlappedInfo[]>;
|
|
9
|
-
groups:
|
|
9
|
+
groups: GroupMinimal[];
|
|
10
10
|
}
|
|
11
11
|
export interface OverlappedElementsDisplayProps {
|
|
12
12
|
overlappedElements: string;
|