@itwin/components-react 3.6.0-dev.8 → 3.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -1
- package/LICENSE.md +1 -1
- package/lib/cjs/components-react/breadcrumb/Breadcrumb.d.ts +5 -5
- package/lib/cjs/components-react/breadcrumb/Breadcrumb.js +3 -3
- package/lib/cjs/components-react/breadcrumb/Breadcrumb.js.map +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbDetails.d.ts +2 -2
- package/lib/cjs/components-react/breadcrumb/BreadcrumbDetails.js +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbDetails.js.map +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbPath.d.ts +3 -3
- package/lib/cjs/components-react/breadcrumb/BreadcrumbPath.js +2 -2
- package/lib/cjs/components-react/breadcrumb/BreadcrumbPath.js.map +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbTreeUtils.d.ts +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbTreeUtils.js +1 -1
- package/lib/cjs/components-react/breadcrumb/BreadcrumbTreeUtils.js.map +1 -1
- package/lib/cjs/components-react/common/UseDebouncedAsyncValue.d.ts +4 -1
- package/lib/cjs/components-react/common/UseDebouncedAsyncValue.d.ts.map +1 -1
- package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js +4 -1
- package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
- package/lib/cjs/components-react/common/showhide/ShowHideDialog.d.ts +2 -2
- package/lib/cjs/components-react/common/showhide/ShowHideDialog.js +1 -1
- package/lib/cjs/components-react/common/showhide/ShowHideDialog.js.map +1 -1
- package/lib/cjs/components-react/common/showhide/ShowHideItem.d.ts +2 -2
- package/lib/cjs/components-react/common/showhide/ShowHideItem.js.map +1 -1
- package/lib/cjs/components-react/common/showhide/ShowHideMenu.d.ts +2 -2
- package/lib/cjs/components-react/common/showhide/ShowHideMenu.js +1 -1
- package/lib/cjs/components-react/common/showhide/ShowHideMenu.js.map +1 -1
- package/lib/cjs/components-react/converters/TypeConverterManager.d.ts.map +1 -1
- package/lib/cjs/components-react/converters/TypeConverterManager.js +3 -4
- package/lib/cjs/components-react/converters/TypeConverterManager.js.map +1 -1
- package/lib/cjs/components-react/editors/ThemedEnumEditor.d.ts +3 -3
- package/lib/cjs/components-react/editors/ThemedEnumEditor.js +2 -2
- package/lib/cjs/components-react/editors/ThemedEnumEditor.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts +22 -24
- package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilder.js +24 -83
- package/lib/cjs/components-react/filter-builder/FilterBuilder.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts +80 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js +83 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js.map +1 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts +14 -3
- package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js +22 -12
- package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +4 -0
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +25 -16
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js +22 -14
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +14 -2
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +11 -5
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +16 -2
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js +11 -5
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts +14 -2
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +11 -5
- package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts +52 -8
- package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/FilterBuilderState.js +102 -12
- package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/Operators.d.ts +23 -5
- package/lib/cjs/components-react/filter-builder/Operators.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/Operators.js +25 -7
- package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
- package/lib/cjs/components-react/filter-builder/Types.d.ts +24 -4
- package/lib/cjs/components-react/filter-builder/Types.d.ts.map +1 -1
- package/lib/cjs/components-react/filter-builder/Types.js +11 -1
- package/lib/cjs/components-react/filter-builder/Types.js.map +1 -1
- package/lib/cjs/components-react/filtering/FilteringInput.js +1 -1
- package/lib/cjs/components-react/filtering/FilteringInput.js.map +1 -1
- package/lib/cjs/components-react/iconpicker/IconPickerButton.d.ts +2 -2
- package/lib/cjs/components-react/iconpicker/IconPickerButton.js +2 -2
- package/lib/cjs/components-react/iconpicker/IconPickerButton.js.map +1 -1
- package/lib/cjs/components-react/properties/LinkHandler.d.ts +2 -2
- package/lib/cjs/components-react/properties/LinkHandler.js +1 -1
- package/lib/cjs/components-react/properties/LinkHandler.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.d.ts +3 -3
- package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js +1 -1
- package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/PropertyDataProvider.d.ts +2 -2
- package/lib/cjs/components-react/propertygrid/PropertyDataProvider.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/PropertyGrid.d.ts +3 -1
- package/lib/cjs/components-react/propertygrid/component/PropertyGrid.d.ts.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/PropertyGrid.js +1 -0
- package/lib/cjs/components-react/propertygrid/component/PropertyGrid.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.d.ts +5 -10
- package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.d.ts.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +3 -3
- package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js +1 -1
- package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +11 -0
- package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts +2 -2
- package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js +1 -1
- package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridEventHandler.d.ts +2 -2
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridEventHandler.js +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridEventHandler.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.d.ts +3 -3
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.js +3 -3
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModel.d.ts +3 -3
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModel.js +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModel.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelChangeEvent.d.ts +2 -2
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelChangeEvent.js +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelChangeEvent.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelSource.d.ts +2 -2
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelSource.d.ts.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelSource.js +1 -1
- package/lib/cjs/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts +6 -6
- package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.d.ts +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.d.ts +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.js +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.d.ts +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.d.ts +10 -10
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +3 -3
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.d.ts +2 -2
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.d.ts +2 -2
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts +3 -6
- package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts.map +1 -1
- package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
- package/lib/cjs/components-react/table/SimpleTableDataProvider.d.ts +1 -1
- package/lib/cjs/components-react/table/SimpleTableDataProvider.js +1 -1
- package/lib/cjs/components-react/table/SimpleTableDataProvider.js.map +1 -1
- package/lib/cjs/components-react/table/TableDataProvider.d.ts +8 -8
- package/lib/cjs/components-react/table/TableDataProvider.js +2 -2
- package/lib/cjs/components-react/table/TableDataProvider.js.map +1 -1
- package/lib/cjs/components-react/table/columnfiltering/ColumnFiltering.d.ts +16 -16
- package/lib/cjs/components-react/table/columnfiltering/ColumnFiltering.js +6 -6
- package/lib/cjs/components-react/table/columnfiltering/ColumnFiltering.js.map +1 -1
- package/lib/cjs/components-react/table/component/ColumnDragLayer.d.ts +1 -1
- package/lib/cjs/components-react/table/component/ColumnDragLayer.js +1 -1
- package/lib/cjs/components-react/table/component/ColumnDragLayer.js.map +1 -1
- package/lib/cjs/components-react/table/component/Table.d.ts +9 -9
- package/lib/cjs/components-react/table/component/Table.d.ts.map +1 -1
- package/lib/cjs/components-react/table/component/Table.js +2 -2
- package/lib/cjs/components-react/table/component/Table.js.map +1 -1
- package/lib/cjs/components-react/table/component/TableCell.d.ts +6 -6
- package/lib/cjs/components-react/table/component/TableCell.js +3 -3
- package/lib/cjs/components-react/table/component/TableCell.js.map +1 -1
- package/lib/cjs/components-react/table/component/TableColumn.d.ts +1 -1
- package/lib/cjs/components-react/table/component/TableColumn.js.map +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/BeDragDropContext.d.ts +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/BeDragDropContext.js +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/BeDragDropContext.js.map +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/DragDropDef.d.ts +8 -8
- package/lib/cjs/components-react/table/component/dragdrop/DragDropDef.js +2 -2
- package/lib/cjs/components-react/table/component/dragdrop/DragDropDef.js.map +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/withDragSource.d.ts +2 -2
- package/lib/cjs/components-react/table/component/dragdrop/withDragSource.js +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/withDragSource.js.map +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/withDropTarget.d.ts +2 -2
- package/lib/cjs/components-react/table/component/dragdrop/withDropTarget.js +1 -1
- package/lib/cjs/components-react/table/component/dragdrop/withDropTarget.js.map +1 -1
- package/lib/cjs/components-react/toolbar/Toolbar.d.ts +1 -1
- package/lib/cjs/components-react/toolbar/Toolbar.d.ts.map +1 -1
- package/lib/cjs/components-react/toolbar/Toolbar.js.map +1 -1
- package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts +2 -2
- package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
- package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
- package/lib/cjs/components-react/tree/TreeDataProvider.d.ts +2 -2
- package/lib/cjs/components-react/tree/TreeDataProvider.d.ts.map +1 -1
- package/lib/cjs/components-react/tree/TreeDataProvider.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts +1 -4
- package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
- package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
- package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.d.ts +2 -5
- package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.d.ts.map +1 -1
- package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
- package/lib/cjs/components-react.d.ts +4 -6
- package/lib/cjs/components-react.d.ts.map +1 -1
- package/lib/cjs/components-react.js +4 -6
- package/lib/cjs/components-react.js.map +1 -1
- package/lib/esm/components-react/breadcrumb/Breadcrumb.d.ts +5 -5
- package/lib/esm/components-react/breadcrumb/Breadcrumb.js +3 -3
- package/lib/esm/components-react/breadcrumb/Breadcrumb.js.map +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbDetails.d.ts +2 -2
- package/lib/esm/components-react/breadcrumb/BreadcrumbDetails.js +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbDetails.js.map +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbPath.d.ts +3 -3
- package/lib/esm/components-react/breadcrumb/BreadcrumbPath.js +2 -2
- package/lib/esm/components-react/breadcrumb/BreadcrumbPath.js.map +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbTreeUtils.d.ts +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbTreeUtils.js +1 -1
- package/lib/esm/components-react/breadcrumb/BreadcrumbTreeUtils.js.map +1 -1
- package/lib/esm/components-react/common/UseDebouncedAsyncValue.d.ts +4 -1
- package/lib/esm/components-react/common/UseDebouncedAsyncValue.d.ts.map +1 -1
- package/lib/esm/components-react/common/UseDebouncedAsyncValue.js +4 -1
- package/lib/esm/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
- package/lib/esm/components-react/common/showhide/ShowHideDialog.d.ts +2 -2
- package/lib/esm/components-react/common/showhide/ShowHideDialog.js +1 -1
- package/lib/esm/components-react/common/showhide/ShowHideDialog.js.map +1 -1
- package/lib/esm/components-react/common/showhide/ShowHideItem.d.ts +2 -2
- package/lib/esm/components-react/common/showhide/ShowHideItem.js.map +1 -1
- package/lib/esm/components-react/common/showhide/ShowHideMenu.d.ts +2 -2
- package/lib/esm/components-react/common/showhide/ShowHideMenu.js +1 -1
- package/lib/esm/components-react/common/showhide/ShowHideMenu.js.map +1 -1
- package/lib/esm/components-react/converters/TypeConverterManager.d.ts.map +1 -1
- package/lib/esm/components-react/converters/TypeConverterManager.js +3 -4
- package/lib/esm/components-react/converters/TypeConverterManager.js.map +1 -1
- package/lib/esm/components-react/editors/ThemedEnumEditor.d.ts +3 -3
- package/lib/esm/components-react/editors/ThemedEnumEditor.js +2 -2
- package/lib/esm/components-react/editors/ThemedEnumEditor.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts +22 -24
- package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilder.js +17 -75
- package/lib/esm/components-react/filter-builder/FilterBuilder.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts +80 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderContext.js +60 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderContext.js.map +1 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts +14 -3
- package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRule.js +17 -7
- package/lib/esm/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +4 -0
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +25 -16
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js +15 -7
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +14 -2
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +7 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +16 -2
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js +7 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts +14 -2
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +7 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts +52 -8
- package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/FilterBuilderState.js +96 -7
- package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
- package/lib/esm/components-react/filter-builder/Operators.d.ts +23 -5
- package/lib/esm/components-react/filter-builder/Operators.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/Operators.js +23 -5
- package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
- package/lib/esm/components-react/filter-builder/Types.d.ts +24 -4
- package/lib/esm/components-react/filter-builder/Types.d.ts.map +1 -1
- package/lib/esm/components-react/filter-builder/Types.js +11 -1
- package/lib/esm/components-react/filter-builder/Types.js.map +1 -1
- package/lib/esm/components-react/filtering/FilteringInput.js +1 -1
- package/lib/esm/components-react/filtering/FilteringInput.js.map +1 -1
- package/lib/esm/components-react/iconpicker/IconPickerButton.d.ts +2 -2
- package/lib/esm/components-react/iconpicker/IconPickerButton.js +2 -2
- package/lib/esm/components-react/iconpicker/IconPickerButton.js.map +1 -1
- package/lib/esm/components-react/properties/LinkHandler.d.ts +2 -2
- package/lib/esm/components-react/properties/LinkHandler.js +1 -1
- package/lib/esm/components-react/properties/LinkHandler.js.map +1 -1
- package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.d.ts +3 -3
- package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js +1 -1
- package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
- package/lib/esm/components-react/propertygrid/PropertyDataProvider.d.ts +2 -2
- package/lib/esm/components-react/propertygrid/PropertyDataProvider.js.map +1 -1
- package/lib/esm/components-react/propertygrid/component/PropertyGrid.d.ts +3 -1
- package/lib/esm/components-react/propertygrid/component/PropertyGrid.d.ts.map +1 -1
- package/lib/esm/components-react/propertygrid/component/PropertyGrid.js +1 -0
- package/lib/esm/components-react/propertygrid/component/PropertyGrid.js.map +1 -1
- package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.d.ts +5 -10
- package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.d.ts.map +1 -1
- package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
- package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +3 -3
- package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js +1 -1
- package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
- package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +11 -0
- package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts +2 -2
- package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js +1 -1
- package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridEventHandler.d.ts +2 -2
- package/lib/esm/components-react/propertygrid/internal/PropertyGridEventHandler.js +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridEventHandler.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.d.ts +3 -3
- package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.js +3 -3
- package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModel.d.ts +3 -3
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModel.js +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModel.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModelChangeEvent.d.ts +2 -2
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModelChangeEvent.js +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModelChangeEvent.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModelSource.d.ts +2 -2
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModelSource.d.ts.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModelSource.js +1 -1
- package/lib/esm/components-react/propertygrid/internal/PropertyGridModelSource.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts +6 -6
- package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.d.ts.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/FlatGridItem.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.d.ts +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedArrayProperty.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.d.ts +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.js +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedPrimitiveProperty.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.d.ts +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCategorizedStructProperty.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.d.ts +10 -10
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +3 -3
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.d.ts +2 -2
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.d.ts +2 -2
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts +3 -6
- package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts.map +1 -1
- package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
- package/lib/esm/components-react/table/SimpleTableDataProvider.d.ts +1 -1
- package/lib/esm/components-react/table/SimpleTableDataProvider.js +1 -1
- package/lib/esm/components-react/table/SimpleTableDataProvider.js.map +1 -1
- package/lib/esm/components-react/table/TableDataProvider.d.ts +8 -8
- package/lib/esm/components-react/table/TableDataProvider.js +2 -2
- package/lib/esm/components-react/table/TableDataProvider.js.map +1 -1
- package/lib/esm/components-react/table/columnfiltering/ColumnFiltering.d.ts +16 -16
- package/lib/esm/components-react/table/columnfiltering/ColumnFiltering.js +6 -6
- package/lib/esm/components-react/table/columnfiltering/ColumnFiltering.js.map +1 -1
- package/lib/esm/components-react/table/component/ColumnDragLayer.d.ts +1 -1
- package/lib/esm/components-react/table/component/ColumnDragLayer.js +1 -1
- package/lib/esm/components-react/table/component/ColumnDragLayer.js.map +1 -1
- package/lib/esm/components-react/table/component/Table.d.ts +9 -9
- package/lib/esm/components-react/table/component/Table.d.ts.map +1 -1
- package/lib/esm/components-react/table/component/Table.js +2 -2
- package/lib/esm/components-react/table/component/Table.js.map +1 -1
- package/lib/esm/components-react/table/component/TableCell.d.ts +6 -6
- package/lib/esm/components-react/table/component/TableCell.js +3 -3
- package/lib/esm/components-react/table/component/TableCell.js.map +1 -1
- package/lib/esm/components-react/table/component/TableColumn.d.ts +1 -1
- package/lib/esm/components-react/table/component/TableColumn.js.map +1 -1
- package/lib/esm/components-react/table/component/dragdrop/BeDragDropContext.d.ts +1 -1
- package/lib/esm/components-react/table/component/dragdrop/BeDragDropContext.js +1 -1
- package/lib/esm/components-react/table/component/dragdrop/BeDragDropContext.js.map +1 -1
- package/lib/esm/components-react/table/component/dragdrop/DragDropDef.d.ts +8 -8
- package/lib/esm/components-react/table/component/dragdrop/DragDropDef.js +2 -2
- package/lib/esm/components-react/table/component/dragdrop/DragDropDef.js.map +1 -1
- package/lib/esm/components-react/table/component/dragdrop/withDragSource.d.ts +2 -2
- package/lib/esm/components-react/table/component/dragdrop/withDragSource.js +1 -1
- package/lib/esm/components-react/table/component/dragdrop/withDragSource.js.map +1 -1
- package/lib/esm/components-react/table/component/dragdrop/withDropTarget.d.ts +2 -2
- package/lib/esm/components-react/table/component/dragdrop/withDropTarget.js +1 -1
- package/lib/esm/components-react/table/component/dragdrop/withDropTarget.js.map +1 -1
- package/lib/esm/components-react/toolbar/Toolbar.d.ts +1 -1
- package/lib/esm/components-react/toolbar/Toolbar.d.ts.map +1 -1
- package/lib/esm/components-react/toolbar/Toolbar.js.map +1 -1
- package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts +2 -2
- package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
- package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
- package/lib/esm/components-react/tree/TreeDataProvider.d.ts +2 -2
- package/lib/esm/components-react/tree/TreeDataProvider.d.ts.map +1 -1
- package/lib/esm/components-react/tree/TreeDataProvider.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts +1 -4
- package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
- package/lib/esm/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
- package/lib/esm/components-react/tree/controlled/component/TreeRenderer.d.ts +2 -5
- package/lib/esm/components-react/tree/controlled/component/TreeRenderer.d.ts.map +1 -1
- package/lib/esm/components-react/tree/controlled/component/TreeRenderer.js.map +1 -1
- package/lib/esm/components-react.d.ts +4 -6
- package/lib/esm/components-react.d.ts.map +1 -1
- package/lib/esm/components-react.js +4 -6
- package/lib/esm/components-react.js.map +1 -1
- package/package.json +23 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,56 @@
|
|
|
1
1
|
# Change Log - @itwin/components-react
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Fri, 24 Feb 2023 22:00:48 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 3.6.1
|
|
6
|
+
Fri, 24 Feb 2023 22:00:48 GMT
|
|
7
|
+
|
|
8
|
+
### Updates
|
|
9
|
+
|
|
10
|
+
- Update `@itwin/itwinui-icons-react` dependency to version `^1.15`
|
|
11
|
+
|
|
12
|
+
## 3.6.0
|
|
13
|
+
Wed, 08 Feb 2023 14:58:39 GMT
|
|
14
|
+
|
|
15
|
+
### Updates
|
|
16
|
+
|
|
17
|
+
- Use EmptyLocalization for localization in tests to increase test performance
|
|
18
|
+
- API promotion
|
|
19
|
+
- API promotion
|
|
20
|
+
- Fixed rule rendering in 'PropertyFilterBuilder' component to not render symbol '0' with 'IS TRUE' operator.
|
|
21
|
+
- `PropertyFilterBuilder`: Do not show rule group operator if there are less than 2 rules
|
|
22
|
+
- Replace inline require with a top-level import
|
|
23
|
+
- Fixed 'FilteringInput' placeholder text localization
|
|
24
|
+
|
|
25
|
+
## 3.5.6
|
|
26
|
+
Fri, 24 Feb 2023 16:02:47 GMT
|
|
27
|
+
|
|
28
|
+
_Version update only_
|
|
29
|
+
|
|
30
|
+
## 3.5.5
|
|
31
|
+
Thu, 26 Jan 2023 22:53:27 GMT
|
|
32
|
+
|
|
33
|
+
_Version update only_
|
|
34
|
+
|
|
35
|
+
## 3.5.4
|
|
36
|
+
Wed, 18 Jan 2023 15:27:15 GMT
|
|
37
|
+
|
|
38
|
+
_Version update only_
|
|
39
|
+
|
|
40
|
+
## 3.5.3
|
|
41
|
+
Fri, 13 Jan 2023 17:23:07 GMT
|
|
42
|
+
|
|
43
|
+
_Version update only_
|
|
44
|
+
|
|
45
|
+
## 3.5.2
|
|
46
|
+
Wed, 11 Jan 2023 16:46:30 GMT
|
|
47
|
+
|
|
48
|
+
_Version update only_
|
|
49
|
+
|
|
50
|
+
## 3.5.1
|
|
51
|
+
Thu, 15 Dec 2022 16:38:28 GMT
|
|
52
|
+
|
|
53
|
+
_Version update only_
|
|
4
54
|
|
|
5
55
|
## 3.5.0
|
|
6
56
|
Wed, 07 Dec 2022 19:12:36 GMT
|
package/LICENSE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# MIT License
|
|
2
2
|
|
|
3
|
-
Copyright © 2017-
|
|
3
|
+
Copyright © 2017-2023 Bentley Systems, Incorporated. All rights reserved.
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ import { BreadcrumbPath } from "./BreadcrumbPath";
|
|
|
12
12
|
export declare type BreadcrumbNodeRenderer = (props: BreadcrumbNodeProps, node?: TreeNodeItem, parent?: TreeNodeItem) => React.ReactNode;
|
|
13
13
|
/** Properties for [[Breadcrumb]] component
|
|
14
14
|
* @beta
|
|
15
|
-
* @deprecated
|
|
15
|
+
* @deprecated in 3.0.
|
|
16
16
|
*/
|
|
17
17
|
export interface BreadcrumbProps extends CommonProps {
|
|
18
18
|
/** Manager to coordinate state between Breadcrumb element and BreadcrumbDetails element. */
|
|
@@ -50,7 +50,7 @@ export interface BreadcrumbProps extends CommonProps {
|
|
|
50
50
|
}
|
|
51
51
|
/** Enum for Breadcrumb Mode
|
|
52
52
|
* @beta
|
|
53
|
-
* @deprecated
|
|
53
|
+
* @deprecated in 3.0.
|
|
54
54
|
*/
|
|
55
55
|
export declare enum BreadcrumbMode {
|
|
56
56
|
Dropdown = "dropdown",
|
|
@@ -74,7 +74,7 @@ interface BreadcrumbState {
|
|
|
74
74
|
* Text mode includes autocomplete suggestions.
|
|
75
75
|
* Both dropdown and text mode support arrow and tab navigation.
|
|
76
76
|
* @beta
|
|
77
|
-
* @deprecated Use Breadcrumbs from itwinui-react instead
|
|
77
|
+
* @deprecated in 3.0. Use Breadcrumbs from itwinui-react instead
|
|
78
78
|
*/
|
|
79
79
|
export declare class Breadcrumb extends React.Component<BreadcrumbProps, BreadcrumbState> {
|
|
80
80
|
private _mounted;
|
|
@@ -174,7 +174,7 @@ export declare class BreadcrumbInput extends React.Component<BreadcrumbInputProp
|
|
|
174
174
|
}
|
|
175
175
|
/** Properties for [[BreadcrumbNode]] component
|
|
176
176
|
* @beta
|
|
177
|
-
* @deprecated
|
|
177
|
+
* @deprecated in 3.0.
|
|
178
178
|
*/
|
|
179
179
|
export interface BreadcrumbNodeProps {
|
|
180
180
|
/** Icon class string */
|
|
@@ -186,7 +186,7 @@ export interface BreadcrumbNodeProps {
|
|
|
186
186
|
}
|
|
187
187
|
/** Default BreadcrumbNode component
|
|
188
188
|
* @beta
|
|
189
|
-
* @deprecated
|
|
189
|
+
* @deprecated in 3.0.
|
|
190
190
|
*/
|
|
191
191
|
export declare class BreadcrumbNode extends React.Component<BreadcrumbNodeProps> {
|
|
192
192
|
constructor(props: BreadcrumbNodeProps);
|
|
@@ -43,7 +43,7 @@ const BeInspireTree_1 = require("./BeInspireTree");
|
|
|
43
43
|
const BreadcrumbTreeUtils_1 = require("./BreadcrumbTreeUtils");
|
|
44
44
|
/** Enum for Breadcrumb Mode
|
|
45
45
|
* @beta
|
|
46
|
-
* @deprecated
|
|
46
|
+
* @deprecated in 3.0.
|
|
47
47
|
*/
|
|
48
48
|
var BreadcrumbMode;
|
|
49
49
|
(function (BreadcrumbMode) {
|
|
@@ -55,7 +55,7 @@ var BreadcrumbMode;
|
|
|
55
55
|
* Text mode includes autocomplete suggestions.
|
|
56
56
|
* Both dropdown and text mode support arrow and tab navigation.
|
|
57
57
|
* @beta
|
|
58
|
-
* @deprecated Use Breadcrumbs from itwinui-react instead
|
|
58
|
+
* @deprecated in 3.0. Use Breadcrumbs from itwinui-react instead
|
|
59
59
|
*/
|
|
60
60
|
class Breadcrumb extends React.Component {
|
|
61
61
|
/** @internal */
|
|
@@ -625,7 +625,7 @@ class BreadcrumbDropdownNode extends React.Component {
|
|
|
625
625
|
}
|
|
626
626
|
/** Default BreadcrumbNode component
|
|
627
627
|
* @beta
|
|
628
|
-
* @deprecated
|
|
628
|
+
* @deprecated in 3.0.
|
|
629
629
|
*/
|
|
630
630
|
class BreadcrumbNode extends React.Component {
|
|
631
631
|
constructor(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Breadcrumb.js","sourceRoot":"","sources":["../../../../src/components-react/breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Breadcrumb\r\n */\r\n\r\nimport \"./Breadcrumb.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { using } from \"@itwin/core-bentley\";\r\nimport { MessageSeverity, PropertyRecord, SpecialKey } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, ContextMenu, ContextMenuItem, DialogButtonType, MessageBox, SplitButton, withOnOutsideClick } from \"@itwin/core-react\";\r\nimport { PropertyValueRendererManager } from \"../properties/ValueRendererManager\";\r\nimport {\r\n DelayLoadedTreeNodeItem, ImmediatelyLoadedTreeNodeItem, isTreeDataProviderInterface, TreeDataProvider, TreeNodeItem,\r\n} from \"../tree/TreeDataProvider\";\r\nimport { UiComponents } from \"../UiComponents\";\r\nimport {\r\n BeInspireTree, BeInspireTreeEvent, BeInspireTreeNode, BeInspireTreeNodeConfig, BeInspireTreeNodes, MapPayloadToInspireNodeCallback, toNodes,\r\n} from \"./BeInspireTree\";\r\nimport { BreadcrumbPath, BreadcrumbUpdateEventArgs } from \"./BreadcrumbPath\";\r\nimport { getPropertyRecordAsString } from \"./BreadcrumbTreeUtils\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n// cspell:ignore itree autocompleting\r\n\r\n/** @internal */\r\nexport type BreadcrumbNodeRenderer = (props: BreadcrumbNodeProps, node?: TreeNodeItem, parent?: TreeNodeItem) => React.ReactNode;\r\n\r\n/** Properties for [[Breadcrumb]] component\r\n * @beta\r\n * @deprecated\r\n */\r\nexport interface BreadcrumbProps extends CommonProps {\r\n /** Manager to coordinate state between Breadcrumb element and BreadcrumbDetails element. */\r\n path?: BreadcrumbPath;\r\n /** Data provider for tree content */\r\n dataProvider: TreeDataProvider;\r\n /** Initial current node */\r\n initialCurrent?: TreeNodeItem;\r\n /** Character used to separate discrete tree nodes in Breadcrumb text mode. Default: \"\\\\\" */\r\n delimiter?: string;\r\n /** Width in pixels, if number, and in specified css units, if string. Default: \"15em\" */\r\n width?: number | string;\r\n /** Whether to show up-dir directory pop button on the left. Default: true */\r\n showUpDir?: boolean;\r\n /** Which BreadcrumbMode to initially start with. Default: BreadcrumbMode.Dropdown */\r\n initialBreadcrumbMode?: BreadcrumbMode;\r\n /** Whether to show white background and border. Default: true */\r\n background?: boolean;\r\n /** Static breadcrumb element. Default: false */\r\n staticOnly?: boolean;\r\n /** Disable plain-text input for the breadcrumb navigation. Default: false */\r\n dropdownOnly?: boolean;\r\n /** Whether to disallow navigation to leaf nodes (nodes with no children). Default: true */\r\n parentsOnly?: boolean;\r\n /** Callback triggered when child node is loaded with an asynchronous dataProvider. */\r\n onChildrenLoaded?: (parent: TreeNodeItem, children: TreeNodeItem[]) => void;\r\n /** Callback triggered when root nodes are loaded with an asynchronous dataProvider. */\r\n onRootNodesLoaded?: (nodes: TreeNodeItem[]) => void;\r\n\r\n /** @internal */\r\n renderNode?: BreadcrumbNodeRenderer;\r\n /** @internal */\r\n onRender?: () => void;\r\n /** @internal */\r\n expandedNodes?: boolean;\r\n}\r\n\r\n/** Enum for Breadcrumb Mode\r\n * @beta\r\n * @deprecated\r\n */\r\nexport enum BreadcrumbMode {\r\n Dropdown = \"dropdown\",\r\n Input = \"input\",\r\n}\r\n\r\n/** @internal */\r\ninterface BreadcrumbState {\r\n prev: {\r\n dataProvider: TreeDataProvider;\r\n modelReady: boolean;\r\n };\r\n model: BeInspireTree<TreeNodeItem>;\r\n modelReady: boolean;\r\n width: number | string;\r\n current?: TreeNodeItem;\r\n currentMode: BreadcrumbMode;\r\n pathString: string;\r\n}\r\n\r\n/**\r\n * Breadcrumb navigation component, with two discrete modes: text mode and dropdown mode.\r\n * Text mode includes autocomplete suggestions.\r\n * Both dropdown and text mode support arrow and tab navigation.\r\n * @beta\r\n * @deprecated Use Breadcrumbs from itwinui-react instead\r\n */\r\nexport class Breadcrumb extends React.Component<BreadcrumbProps, BreadcrumbState> {\r\n private _mounted: boolean = false;\r\n\r\n /** @internal */\r\n public static defaultProps: Partial<BreadcrumbProps> = {\r\n delimiter: \"\\\\\",\r\n background: true,\r\n initialBreadcrumbMode: BreadcrumbMode.Dropdown,\r\n showUpDir: true,\r\n parentsOnly: true,\r\n width: \"\",\r\n };\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<BreadcrumbState>;\r\n\r\n /** @internal */\r\n constructor(props: BreadcrumbProps) {\r\n super(props);\r\n\r\n this.state = {\r\n prev: {\r\n dataProvider: props.dataProvider,\r\n modelReady: false,\r\n },\r\n model: Breadcrumb.createModel(props),\r\n modelReady: false,\r\n width: props.width!,\r\n currentMode: props.initialBreadcrumbMode!,\r\n current: props.initialCurrent,\r\n pathString: \"\",\r\n };\r\n }\r\n\r\n private static createModel(props: BreadcrumbProps) {\r\n return new BeInspireTree<TreeNodeItem>({\r\n dataProvider: props.dataProvider,\r\n mapPayloadToInspireNodeConfig: Breadcrumb.inspireNodeFromTreeNodeItem,\r\n });\r\n }\r\n\r\n /** @internal */\r\n public static getDerivedStateFromProps(props: BreadcrumbProps, state: BreadcrumbState): BreadcrumbState | null {\r\n const providerChanged = (props.dataProvider !== state.prev.dataProvider);\r\n\r\n // create derived state that just updates `prev` values\r\n const derivedState: BreadcrumbState = {\r\n ...state,\r\n prev: {\r\n ...state.prev,\r\n dataProvider: props.dataProvider,\r\n modelReady: state.modelReady,\r\n },\r\n };\r\n\r\n // in case provider changed, have to re-create `model` and reset `modelReady`\r\n if (providerChanged) {\r\n derivedState.model = Breadcrumb.createModel(props);\r\n derivedState.modelReady = false;\r\n }\r\n\r\n return derivedState;\r\n }\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._mounted = true;\r\n this.assignModelListeners(this.state.model);\r\n this.assignDataProviderListeners(this.props.dataProvider);\r\n\r\n if (this.props.path) {\r\n this.props.path.setDataProvider(this.props.dataProvider);\r\n this.props.path.BreadcrumbUpdateEvent.addListener(this._handleUpdate);\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n if (this.props.path)\r\n this.props.path.BreadcrumbUpdateEvent.removeListener(this._handleUpdate);\r\n this.dropModelListeners(this.state.model);\r\n this.dropDataProviderListeners(this.props.dataProvider);\r\n this._mounted = false;\r\n }\r\n\r\n /** @internal */\r\n public override shouldComponentUpdate(nextProps: BreadcrumbProps, nextState: BreadcrumbState): boolean {\r\n if (this.state.modelReady !== nextState.modelReady || this.state.model !== nextState.model) {\r\n // always render when modelReady or model changes\r\n return true;\r\n }\r\n\r\n if (!nextState.modelReady) {\r\n // if we got here and model is not ready - don't render\r\n return false;\r\n }\r\n\r\n // otherwise, render when any of the following props / state change\r\n return this.props.renderNode !== nextProps.renderNode\r\n || this.props.dataProvider !== nextProps.dataProvider\r\n || this.props.background !== nextProps.background\r\n || this.props.dropdownOnly !== nextProps.dropdownOnly\r\n || this.props.parentsOnly !== nextProps.parentsOnly\r\n || this.props.showUpDir !== nextProps.showUpDir\r\n || this.state.current !== nextState.current\r\n || this.state.pathString !== nextState.pathString\r\n || this.state.currentMode !== nextState.currentMode\r\n || this.state.model.visible().some((n) => n.isDirty());\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(prevProps: BreadcrumbProps, prevState: BreadcrumbState) {\r\n if (this.state.model !== prevState.model) {\r\n this.dropModelListeners(prevState.model);\r\n this.assignModelListeners(this.state.model);\r\n }\r\n\r\n if (this.props.dataProvider !== prevProps.dataProvider) {\r\n this.dropDataProviderListeners(prevProps.dataProvider);\r\n this.assignDataProviderListeners(this.props.dataProvider);\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n }\r\n\r\n private assignModelListeners(model: BeInspireTree<TreeNodeItem>) {\r\n model.on(BeInspireTreeEvent.ChangesApplied, this._onModelChanged);\r\n model.on(BeInspireTreeEvent.ModelLoaded, this._onModelLoaded);\r\n model.on(BeInspireTreeEvent.ChildrenLoaded, this._onChildrenLoaded);\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n model.ready.then(() => {\r\n // istanbul ignore else\r\n if (model === this.state.model)\r\n this._onModelReady();\r\n });\r\n }\r\n\r\n private dropModelListeners(model: BeInspireTree<TreeNodeItem>) {\r\n model.removeAllListeners();\r\n }\r\n\r\n private assignDataProviderListeners(provider: TreeDataProvider) {\r\n if (isTreeDataProviderInterface(provider) && provider.onTreeNodeChanged) {\r\n provider.onTreeNodeChanged.addListener(this._onTreeNodeChanged);\r\n }\r\n }\r\n\r\n private dropDataProviderListeners(provider: TreeDataProvider) {\r\n if (isTreeDataProviderInterface(provider) && provider.onTreeNodeChanged) {\r\n provider.onTreeNodeChanged.removeListener(this._onTreeNodeChanged);\r\n }\r\n }\r\n\r\n private _handleUpdate = (args: BreadcrumbUpdateEventArgs) => {\r\n if (args.currentNode && this._mounted) {\r\n const current = this.state.model.node(args.currentNode.id);\r\n if (current) {\r\n const p = current.getTextualHierarchy().join(this.props.delimiter);\r\n this.setState({ current: args.currentNode, pathString: p });\r\n }\r\n } else {\r\n this.setState({ current: undefined, pathString: \"\" });\r\n }\r\n };\r\n\r\n private _onModelLoaded = (rootNodes: BeInspireTreeNodes<TreeNodeItem>) => {\r\n if (this.props.onRootNodesLoaded)\r\n this.props.onRootNodesLoaded(rootNodes.map((n) => n.payload!));\r\n const current = this.state.current ? this.state.model.node(this.state.current.id) : undefined;\r\n const p = current ? current.getTextualHierarchy().join(this.props.delimiter) : \"\";\r\n if (p !== this.state.pathString)\r\n this.setState({ pathString: p });\r\n };\r\n\r\n private _onChildrenLoaded = (parentNode: BeInspireTreeNode<TreeNodeItem>) => {\r\n const children = parentNode.getChildren();\r\n if (this.props.onChildrenLoaded)\r\n this.props.onChildrenLoaded(parentNode.payload!, toNodes<TreeNodeItem>(children).map((c) => c.payload!));\r\n const current = this.state.current ? this.state.model.node(this.state.current.id) : undefined;\r\n const p = current ? current.getTextualHierarchy().join(this.props.delimiter) : \"\";\r\n if (p !== this.state.pathString)\r\n this.setState({ pathString: p });\r\n };\r\n\r\n private _onModelChanged = () => {\r\n // just re-set the model to initiate update\r\n this.setState((prev) => ({ model: prev.model }));\r\n };\r\n\r\n private _onModelReady = () => {\r\n // istanbul ignore else\r\n if (this._mounted) {\r\n const current = this.state.current ? this.state.model.node(this.state.current.id) : undefined;\r\n this.setState((_prevState, props) => ({ modelReady: true, pathString: current ? current.getTextualHierarchy().join(props.delimiter) : \"\" }));\r\n }\r\n };\r\n\r\n private _onTreeNodeChanged = (_items: Array<TreeNodeItem | undefined>) => {\r\n using(this.state.model.pauseRendering(), async (_r) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n await this.state.model.reload();\r\n });\r\n };\r\n\r\n private static inspireNodeFromTreeNodeItem(item: TreeNodeItem, remapper: MapPayloadToInspireNodeCallback<TreeNodeItem>): BeInspireTreeNodeConfig {\r\n const node: BeInspireTreeNodeConfig = {\r\n id: item.id,\r\n text: getPropertyRecordAsString(item.label),\r\n itree: {\r\n state: { collapsed: false },\r\n },\r\n };\r\n if (item.icon)\r\n node.itree!.icon = item.icon;\r\n if ((item as DelayLoadedTreeNodeItem).hasChildren)\r\n node.children = true;\r\n else if ((item as ImmediatelyLoadedTreeNodeItem).children)\r\n node.children = (item as ImmediatelyLoadedTreeNodeItem).children!.map((p) => remapper(p, remapper));\r\n return node;\r\n }\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const classNames = classnames(\"components-breadcrumb\", this.props.background && \"background\", this.props.className);\r\n\r\n if (!this.state.modelReady) {\r\n return (\r\n <div className={classNames} style={this.props.style} />\r\n );\r\n }\r\n const node = this.state.current ? this.state.model.node(this.state.current.id) : undefined;\r\n return (\r\n <div\r\n className={classNames} style={this.props.style}>\r\n <div className=\"components-breadcrumb-head\"\r\n data-testid=\"components-breadcrumb-dropdown-input-parent\">\r\n {this.props.dropdownOnly || this.props.staticOnly ?\r\n <BreadcrumbDropdown\r\n tree={this.state.model}\r\n node={node}\r\n onNodeChange={this._handleNodeChange}\r\n onInputStart={this._setInput}\r\n renderNode={this.props.renderNode}\r\n staticOnly={this.props.staticOnly}\r\n showUpDir={this.props.showUpDir}\r\n parentsOnly={this.props.parentsOnly}\r\n width={this.props.width!}\r\n expandedNode={this.props.expandedNodes} /> :\r\n <InputSwitch\r\n tree={this.state.model}\r\n node={node}\r\n pathString={this.state.pathString}\r\n currentMode={this.state.currentMode}\r\n onInputStart={this._setInput}\r\n onInputCancel={this._setDropdown}\r\n onNodeChange={this._handleNodeChange}\r\n width={this.props.width!}\r\n showUpDir={this.props.showUpDir}\r\n parentsOnly={this.props.parentsOnly}\r\n delimiter={this.props.delimiter!}\r\n onOutsideClick={this._setDropdown}\r\n renderNode={this.props.renderNode}\r\n expandedNode={this.props.expandedNodes} />\r\n }\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n private _setDropdown = () => this.setState({ currentMode: BreadcrumbMode.Dropdown });\r\n private _setInput = () => this.setState({ currentMode: BreadcrumbMode.Input });\r\n\r\n private _handleNodeChange = (node: TreeNodeItem | undefined) => {\r\n if (this.props.path)\r\n this.props.path.setCurrentNode(node);\r\n else {\r\n if (!node) {\r\n this.setState({ current: undefined, pathString: \"\" });\r\n } else {\r\n const current = this.state.current ? this.state.model.node(this.state.current.id) : undefined;\r\n const p = current ? current.getTextualHierarchy().join(this.props.delimiter) : \"\";\r\n this.setState({ current: node, pathString: p });\r\n }\r\n }\r\n if (this.state.currentMode !== BreadcrumbMode.Dropdown)\r\n this._setDropdown();\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport interface InputSwitchProps {\r\n tree: BeInspireTree<TreeNodeItem>;\r\n node?: BeInspireTreeNode<TreeNodeItem>;\r\n pathString: string;\r\n currentMode: BreadcrumbMode;\r\n onInputStart?: () => void;\r\n onInputCancel: () => void;\r\n onNodeChange: (node?: TreeNodeItem) => void;\r\n showUpDir?: boolean;\r\n parentsOnly?: boolean;\r\n renderNode?: BreadcrumbNodeRenderer;\r\n width: number | string;\r\n delimiter: string;\r\n expandedNode?: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class InputSwitchComponent extends React.PureComponent<InputSwitchProps> {\r\n public override render(): React.ReactNode {\r\n const { currentMode, tree, node, onInputStart, onInputCancel, onNodeChange, renderNode, width, showUpDir, delimiter, expandedNode } = this.props;\r\n switch (currentMode) {\r\n case BreadcrumbMode.Dropdown:\r\n return <BreadcrumbDropdown tree={tree} node={node} onNodeChange={onNodeChange} renderNode={renderNode} onInputStart={onInputStart}\r\n parentsOnly={this.props.parentsOnly} showUpDir={showUpDir} width={width} expandedNode={expandedNode} />;\r\n case BreadcrumbMode.Input:\r\n return <BreadcrumbInput tree={tree} node={node} onNodeChange={onNodeChange} onCancel={onInputCancel}\r\n parentsOnly={this.props.parentsOnly} delimiter={delimiter} width={width} pathString={this.props.pathString} />;\r\n default:\r\n return <div data-testid=\"components-breadcrumb-error-unknown-mode\">{UiComponents.translate(\"breadcrumb.errorUnknownMode\")}</div>;\r\n }\r\n }\r\n}\r\n/** @internal */\r\nconst InputSwitch = withOnOutsideClick(InputSwitchComponent); // eslint-disable-line @typescript-eslint/naming-convention\r\n\r\n/** @internal */\r\nexport interface BreadcrumbInputProps {\r\n width: number | string;\r\n delimiter?: string;\r\n\r\n onCancel: () => void;\r\n onNodeChange: (node: TreeNodeItem | undefined) => void;\r\n parentsOnly?: boolean;\r\n\r\n tree: BeInspireTree<TreeNodeItem>;\r\n node?: BeInspireTreeNode<TreeNodeItem>;\r\n\r\n pathString: string;\r\n}\r\n\r\n/** @internal */\r\nexport interface BreadcrumbInputState {\r\n autocompleting: boolean;\r\n autocompleteList: string[];\r\n messageBoxOpened: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class BreadcrumbInput extends React.Component<BreadcrumbInputProps, BreadcrumbInputState> {\r\n private _inputElement: HTMLInputElement | null = null;\r\n private _autocomplete: ContextMenu | null = null;\r\n private _mounted: boolean = false;\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<BreadcrumbInputState> = {\r\n autocompleting: false,\r\n autocompleteList: [],\r\n messageBoxOpened: false,\r\n };\r\n\r\n public override render(): JSX.Element {\r\n return (\r\n <div className=\"components-breadcrumb-input-root\" data-testid=\"components-breadcrumb-input-root\">\r\n <input\r\n className=\"components-breadcrumb-input\"\r\n data-testid=\"components-breadcrumb-input\"\r\n type=\"text\"\r\n ref={(e) => { this._inputElement = e; }}\r\n style={{ width: this.props.width }}\r\n onKeyDown={this._handleKeyDown} onKeyUp={this._handleKeyUp}\r\n onChange={this._handleChange} onPaste={this._handleChange} onCut={this._handleChange} onFocus={this._handleChange} onClick={this._handleChange}\r\n spellCheck={false}></input>\r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\r\n <div className=\"components-breadcrumb-close icon icon-close\" data-testid=\"components-breadcrumb-input-close\" onClick={this._handleClose}\r\n role=\"button\" tabIndex={-1} />\r\n <ContextMenu\r\n ref={(el) => { this._autocomplete = el; }}\r\n style={{ width: \"100%\" }}\r\n opened={this.state.autocompleting}\r\n edgeLimit={false}\r\n selectedIndex={0} floating={false} autoflip={false}\r\n onEsc={() => {\r\n // istanbul ignore else\r\n if (this._inputElement)\r\n this._inputElement.focus();\r\n }}\r\n >\r\n {this.state.autocompleteList.map((listItem, index) => {\r\n let l = 0;\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n l = this._inputElement.value.length;\r\n }\r\n return (\r\n <ContextMenuItem\r\n key={index}\r\n onSelect={(event) => {\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n this._inputElement.value = listItem;\r\n this._inputElement.focus();\r\n this._inputElement.setSelectionRange(listItem.length, listItem.length);\r\n\r\n const autocompleteStr = this._inputElement.value.substring(0, this._inputElement.selectionEnd!);\r\n this._getAutocompleteList(autocompleteStr).then((list) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({\r\n autocompleting: false,\r\n autocompleteList: list,\r\n });\r\n });\r\n event.stopPropagation();\r\n }\r\n }}>\r\n <span className=\"components-breadcrumb-selected\">{listItem.substr(0, l)}</span>{listItem.substr(l)}\r\n </ContextMenuItem>\r\n );\r\n })}\r\n </ContextMenu>\r\n <MessageBox opened={this.state.messageBoxOpened} modal={false} onClose={this._handleMessageBoxClose} severity={MessageSeverity.Warning} buttonCluster={[{ type: DialogButtonType.OK, onClick: this._handleMessageBoxClose }]}>\r\n {UiComponents.translate(\"breadcrumb.invalidBreadcrumbPath\")}\r\n </MessageBox>\r\n </div>\r\n );\r\n }\r\n\r\n private _handleMessageBoxClose = () => {\r\n this.setState({ messageBoxOpened: false });\r\n };\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._mounted = true;\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n const activeWindow = this._inputElement.ownerDocument.defaultView;\r\n activeWindow && activeWindow.addEventListener(\"click\", this._handleClick);\r\n this._inputElement.value = this.props.pathString;\r\n this._inputElement.focus();\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n const activeWindow = this._inputElement.ownerDocument.defaultView;\r\n activeWindow && activeWindow.removeEventListener(\"click\", this._handleClick);\r\n }\r\n this._mounted = false;\r\n }\r\n\r\n private _handleClose = () => {\r\n this.props.onCancel();\r\n this.setState({ autocompleting: false });\r\n };\r\n\r\n private _getAutocompleteList = async (path: string) => {\r\n const node = await this._findChildParentPartial(path);\r\n if (node) {\r\n const baseString = node.getTextualHierarchy().join(this.props.delimiter);\r\n const children = node.getChildren();\r\n const parentChildren = this.props.parentsOnly ? children.filter((child) => child.hasOrWillHaveChildren()) : children;\r\n const strList = parentChildren.map((n) => baseString + this.props.delimiter! + n.toString());\r\n return strList.filter((e) => e.substr(0, path.length) === path);\r\n } else {\r\n const nodes = this.props.tree.nodes();\r\n const parentRoots = this.props.parentsOnly ? nodes.filter((child) => child.hasOrWillHaveChildren()) : nodes;\r\n const strList = parentRoots.map((n) => n.toString() + this.props.delimiter!);\r\n return strList.filter((e) => e.substr(0, path.length) === path);\r\n }\r\n };\r\n\r\n private _findChildUserInput = async (p: string): Promise<BeInspireTreeNode<TreeNodeItem> | undefined> => {\r\n const delimiter = this.props.delimiter!;\r\n if (p.endsWith(delimiter)) // strip last delimiter if at end\r\n p = p.substr(0, p.length - delimiter.length);\r\n const root = this.props.tree.nodes();\r\n for (const node of root) {\r\n const found = await this._find(node, p);\r\n if (found)\r\n return found;\r\n }\r\n return undefined;\r\n };\r\n private _findChildParentPartial = async (p: string): Promise<BeInspireTreeNode<TreeNodeItem> | undefined> => {\r\n const delimiter = this.props.delimiter!;\r\n const lastDel = p.lastIndexOf(delimiter);\r\n if (lastDel !== -1) // strip last delimiter and everything after\r\n p = p.substring(0, lastDel);\r\n else\r\n return undefined;\r\n const root = this.props.tree.nodes();\r\n for (const node of root) {\r\n const found = await this._find(node, p);\r\n if (found)\r\n return found;\r\n }\r\n return undefined;\r\n };\r\n private _find = async (node: BeInspireTreeNode<TreeNodeItem>, p: string): Promise<BeInspireTreeNode<TreeNodeItem> | undefined> => {\r\n const delimiter = this.props.delimiter!;\r\n // remove leading delimiter\r\n if (p.indexOf(delimiter) === 0)\r\n p = p.substr(delimiter.length);\r\n const { text } = node;\r\n if (text === p) {\r\n return node;\r\n }\r\n if (p.indexOf(text) === 0 && node.hasOrWillHaveChildren()) {\r\n const children = node.getChildren();\r\n for (const child of children) {\r\n const n = await this._find(child as BeInspireTreeNode<TreeNodeItem>, p.substr(text.length));\r\n if (n)\r\n return n;\r\n }\r\n }\r\n return undefined;\r\n };\r\n\r\n private _handleClick = (event: MouseEvent): void => {\r\n // istanbul ignore else\r\n if (this._autocomplete) {\r\n // istanbul ignore else\r\n if (this._inputElement && event.target === this._inputElement) {\r\n this.setState({ autocompleting: false });\r\n this._inputElement.focus();\r\n }\r\n }\r\n };\r\n\r\n private _handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n switch (event.key) {\r\n case SpecialKey.ArrowUp:\r\n case SpecialKey.ArrowDown:\r\n event.preventDefault();\r\n }\r\n };\r\n private _handleKeyUp = async (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n switch (event.key) {\r\n case SpecialKey.Escape:\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({ autocompleting: false });\r\n break;\r\n case SpecialKey.ArrowUp:\r\n case SpecialKey.ArrowDown:\r\n event.preventDefault();\r\n // istanbul ignore else\r\n if (this._autocomplete && this.state.autocompleteList.length > 0) {\r\n this._autocomplete.focus();\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({ autocompleting: true });\r\n }\r\n break;\r\n case SpecialKey.Enter:\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n const path = this._inputElement.value;\r\n if (path === \"\" || path === this.props.delimiter!) {\r\n this.props.onNodeChange(undefined);\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({ autocompleting: false });\r\n } else {\r\n const node = await this._findChildUserInput(path);\r\n if (node === undefined)\r\n this.setState({ messageBoxOpened: true });\r\n else\r\n this.props.onNodeChange(node.payload);\r\n }\r\n }\r\n break;\r\n }\r\n };\r\n\r\n private _handleChange = (): void => {\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n const autocompleteStr = this._inputElement.value.substring(0, this._inputElement.selectionEnd!);\r\n this._getAutocompleteList(autocompleteStr).then((list) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n if (this._mounted)\r\n this.setState({\r\n autocompleting: list.length > 0,\r\n autocompleteList: list,\r\n });\r\n });\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\ninterface BreadcrumbDropdownProps {\r\n tree: BeInspireTree<TreeNodeItem>;\r\n node?: BeInspireTreeNode<TreeNodeItem>;\r\n onInputStart?: () => void;\r\n onNodeChange: (node: TreeNodeItem | undefined) => void;\r\n staticOnly?: boolean;\r\n parentsOnly?: boolean;\r\n delimiter?: string;\r\n width: number | string;\r\n showUpDir?: boolean;\r\n renderNode?: BreadcrumbNodeRenderer;\r\n expandedNode?: boolean;\r\n}\r\n\r\n/** @internal */\r\nclass BreadcrumbDropdown extends React.Component<BreadcrumbDropdownProps> {\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this.props.tree.on(BeInspireTreeEvent.ChildrenLoaded, this._onChildrenLoaded);\r\n this.props.tree.on(BeInspireTreeEvent.ModelLoaded, this._onModelLoaded);\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this.props.tree.removeListener(BeInspireTreeEvent.ChildrenLoaded, this._onChildrenLoaded);\r\n this.props.tree.removeListener(BeInspireTreeEvent.ModelLoaded, this._onModelLoaded);\r\n }\r\n\r\n private _onModelLoaded = (_rootNodes: BeInspireTreeNodes<TreeNodeItem>) => {\r\n this.forceUpdate();\r\n };\r\n\r\n private _onChildrenLoaded = (_parentNode: BeInspireTreeNode<TreeNodeItem>) => {\r\n this.forceUpdate();\r\n };\r\n\r\n /** @internal */\r\n public override shouldComponentUpdate(nextProps: BreadcrumbDropdownProps) {\r\n return this.props.tree !== nextProps.tree ||\r\n this.props.node !== nextProps.node ||\r\n (nextProps.node && /* istanbul ignore next */ nextProps.node.isDirty()) ||\r\n this.props.onInputStart !== nextProps.onInputStart ||\r\n this.props.delimiter !== nextProps.delimiter ||\r\n this.props.width !== nextProps.width ||\r\n this.props.renderNode !== nextProps.renderNode;\r\n }\r\n\r\n public override render(): JSX.Element | null {\r\n const node = this.props.node;\r\n let nodes: BeInspireTreeNodes<TreeNodeItem> | undefined;\r\n if (node) {\r\n nodes = toNodes<TreeNodeItem>(node.getParents());\r\n nodes.reverse();\r\n nodes.push(node);\r\n }\r\n return (\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\r\n <div\r\n className=\"components-breadcrumb-dropdown\"\r\n data-testid=\"components-breadcrumb-dropdown-background\"\r\n style={{ width: this.props.width }}\r\n onClick={this._focusInput}\r\n role=\"button\" tabIndex={-1}\r\n >\r\n {!this.props.staticOnly && this.props.showUpDir ?\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\r\n <div data-testid=\"components-breadcrumb-up-dir\"\r\n className={classnames(\r\n \"components-breadcrumb-up-dir\",\r\n \"icon\", \"icon-sort-up\",\r\n { root: this.props.node === undefined })\r\n } onClick={this._handleUpClick} role=\"button\" tabIndex={-1} />\r\n : undefined\r\n }\r\n <div className=\"components-breadcrumb-crumb-list\"\r\n data-testid=\"components-breadcrumb-crumb-list\">\r\n <BreadcrumbDropdownNode\r\n key={-1}\r\n tree={this.props.tree}\r\n node={undefined}\r\n onNodeSelected={this.props.onNodeChange}\r\n staticOnly={this.props.staticOnly}\r\n parentsOnly={this.props.parentsOnly}\r\n last={!nodes || nodes.length === 0}\r\n renderNode={this.props.renderNode}\r\n expandedNode={this.props.expandedNode} />\r\n {nodes && nodes.map((n, i) => {\r\n return (\r\n <BreadcrumbDropdownNode\r\n key={i}\r\n tree={this.props.tree}\r\n node={n}\r\n onNodeSelected={this.props.onNodeChange}\r\n staticOnly={this.props.staticOnly}\r\n parentsOnly={this.props.parentsOnly}\r\n last={i === nodes!.length - 1}\r\n renderNode={this.props.renderNode}\r\n expandedNode={this.props.expandedNode} />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n private _handleUpClick = () => {\r\n let parent: TreeNodeItem | undefined;\r\n if (this.props.node) {\r\n const p = (this.props.node.getParent()) as BeInspireTreeNode<TreeNodeItem>;\r\n if (p)\r\n parent = p.payload;\r\n }\r\n this.props.onNodeChange(parent);\r\n };\r\n\r\n private _focusInput = (event: React.MouseEvent) => {\r\n if (event.target === event.currentTarget && this.props.onInputStart) // check if click is direct, or bubbled\r\n this.props.onInputStart();\r\n };\r\n}\r\n\r\n/** @internal */\r\ninterface BreadcrumbDropdownNodeProps {\r\n tree: BeInspireTree<TreeNodeItem>;\r\n node?: BeInspireTreeNode<TreeNodeItem>;\r\n onNodeSelected: (node: TreeNodeItem | undefined) => void;\r\n staticOnly?: boolean;\r\n parentsOnly?: boolean;\r\n last?: boolean;\r\n renderNode?: BreadcrumbNodeRenderer;\r\n expandedNode?: boolean;\r\n}\r\n\r\n/** @internal */\r\nclass BreadcrumbDropdownNode extends React.Component<BreadcrumbDropdownNodeProps> {\r\n constructor(props: BreadcrumbDropdownNodeProps) {\r\n super(props);\r\n }\r\n\r\n public override render(): React.ReactNode {\r\n const { node } = this.props;\r\n let nodeChildren: Array<BeInspireTreeNode<TreeNodeItem>> = this.props.tree.nodes();\r\n if (node)\r\n nodeChildren = toNodes<TreeNodeItem>(node.getChildren());\r\n const n = node && node.payload;\r\n let parent: TreeNodeItem | undefined;\r\n if (node) {\r\n const p = node.getParent() as BeInspireTreeNode<TreeNodeItem>;\r\n if (p)\r\n parent = p.payload;\r\n }\r\n const label = n && n.label ? n.label : PropertyRecord.fromString(\"\");\r\n const icon = n && n.icon ? n.icon : \"icon-browse\";\r\n const renderNode = this.props.renderNode ? this.props.renderNode : this.renderNode;\r\n if (this.props.parentsOnly)\r\n nodeChildren = nodeChildren.filter((child) => child.hasOrWillHaveChildren());\r\n if (nodeChildren.length > 0) {\r\n if (this.props.staticOnly) {\r\n return <span data-testid=\"components-breadcrumb-static-button\" className=\"components-breadcrumb-split-button static\">\r\n {renderNode({ label, icon }, n, parent)}\r\n {!this.props.last ? <span className=\"static-arrow-icon icon icon-chevron-right\" /> : undefined}\r\n </span>;\r\n }\r\n return (\r\n <SplitButton\r\n className=\"components-breadcrumb-split-button\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n this.props.onNodeSelected(n);\r\n }}\r\n label={renderNode({ label, icon }, n, parent)}\r\n initialExpanded={this.props.expandedNode}\r\n >\r\n {nodeChildren.map((child, d) => {\r\n return (\r\n <ContextMenuItem\r\n key={d}\r\n icon={child.payload!.icon}\r\n onSelect={(_event) => {\r\n this.props.onNodeSelected(child.payload);\r\n }}>\r\n {PropertyValueRendererManager.defaultManager.render(child.payload!.label)}\r\n </ContextMenuItem>\r\n );\r\n })}\r\n </SplitButton>\r\n );\r\n } else {\r\n return (\r\n <span className={classnames(\"components-breadcrumb-end-node\", { static: this.props.staticOnly })}>\r\n {renderNode({ label, icon }, n, parent)}\r\n </span>\r\n );\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private renderNode = (props: BreadcrumbNodeProps, _node?: TreeNodeItem, _parent?: TreeNodeItem) => {\r\n return <BreadcrumbNode label={props.label} icon={props.icon} />;\r\n };\r\n}\r\n\r\n/** Properties for [[BreadcrumbNode]] component\r\n * @beta\r\n * @deprecated\r\n */\r\nexport interface BreadcrumbNodeProps {\r\n /** Icon class string */\r\n icon: string;\r\n /** Node label */\r\n label: PropertyRecord;\r\n /** @internal */\r\n onRender?: () => void;\r\n}\r\n\r\n/** Default BreadcrumbNode component\r\n * @beta\r\n * @deprecated\r\n */\r\nexport class BreadcrumbNode extends React.Component<BreadcrumbNodeProps> {\r\n constructor(props: BreadcrumbNodeProps) {\r\n super(props);\r\n }\r\n\r\n public override render(): React.ReactNode {\r\n const { icon, label } = this.props;\r\n return <span data-testid=\"components-breadcrumb-node\"><span className={classnames(\"icon\", icon)} />{PropertyValueRendererManager.defaultManager.render(label)}</span>;\r\n }\r\n\r\n public override componentDidMount() {\r\n // istanbul ignore next\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n }\r\n\r\n public override componentDidUpdate() {\r\n // istanbul ignore next\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Breadcrumb.js","sourceRoot":"","sources":["../../../../src/components-react/breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6BAA2B;AAC3B,4DAAoC;AACpC,6CAA+B;AAC/B,sDAA4C;AAC5C,0DAAoF;AACpF,kDAA6I;AAC7I,6EAAkF;AAClF,+DAEkC;AAClC,kDAA+C;AAC/C,mDAEyB;AAEzB,+DAAkE;AAgDlE;;;GAGG;AACH,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,iCAAe,CAAA;AACjB,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AAgBD;;;;;;GAMG;AACH,MAAa,UAAW,SAAQ,KAAK,CAAC,SAA2C;IAgB/E,gBAAgB;IAChB,YAAY,KAAsB;QAChC,KAAK,CAAC,KAAK,CAAC,CAAC;QAjBP,aAAQ,GAAY,KAAK,CAAC;QA8J1B,kBAAa,GAAG,CAAC,IAA+B,EAAE,EAAE;YAC1D,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC3D,IAAI,OAAO,EAAE;oBACX,MAAM,CAAC,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBACnE,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC7D;aACF;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;aACvD;QACH,CAAC,CAAC;QAEM,mBAAc,GAAG,CAAC,SAA2C,EAAE,EAAE;YACvE,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC9B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU;gBAC7B,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC;QAEM,sBAAiB,GAAG,CAAC,UAA2C,EAAE,EAAE;YAC1E,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB;gBAC7B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAQ,EAAE,IAAA,uBAAO,EAAe,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC,CAAC;YAC3G,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU;gBAC7B,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC;QAEM,oBAAe,GAAG,GAAG,EAAE;YAC7B,2CAA2C;YAC3C,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9F,IAAI,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAC9I;QACH,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,MAAuC,EAAE,EAAE;YACvE,IAAA,oBAAK,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBACpD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAmEM,iBAAY,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7E,cAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvE,sBAAiB,GAAG,CAAC,IAA8B,EAAE,EAAE;YAC7D,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;gBACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;iBAClC;gBACH,IAAI,CAAC,IAAI,EAAE;oBACT,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;iBACvD;qBAAM;oBACL,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC9F,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClF,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;iBACjD;aACF;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,cAAc,CAAC,QAAQ;gBACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC,CAAC;QA/QA,IAAI,CAAC,KAAK,GAAG;YACX,IAAI,EAAE;gBACJ,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,UAAU,EAAE,KAAK;aAClB;YACD,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC;YACpC,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,KAAK,CAAC,KAAM;YACnB,WAAW,EAAE,KAAK,CAAC,qBAAsB;YACzC,OAAO,EAAE,KAAK,CAAC,cAAc;YAC7B,UAAU,EAAE,EAAE;SACf,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,KAAsB;QAC/C,OAAO,IAAI,6BAAa,CAAe;YACrC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,6BAA6B,EAAE,UAAU,CAAC,2BAA2B;SACtE,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,wBAAwB,CAAC,KAAsB,EAAE,KAAsB;QACnF,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEzE,uDAAuD;QACvD,MAAM,YAAY,GAAoB;YACpC,GAAG,KAAK;YACR,IAAI,EAAE;gBACJ,GAAG,KAAK,CAAC,IAAI;gBACb,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B;SACF,CAAC;QAEF,6EAA6E;QAC7E,IAAI,eAAe,EAAE;YACnB,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACnD,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC;SACjC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,gBAAgB;IACA,iBAAiB;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAE1D,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACvE;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED,gBAAgB;IACA,oBAAoB;QAClC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;YACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3E,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,gBAAgB;IACA,qBAAqB,CAAC,SAA0B,EAAE,SAA0B;QAC1F,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE;YAC1F,iDAAiD;YACjD,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YACzB,uDAAuD;YACvD,OAAO,KAAK,CAAC;SACd;QAED,mEAAmE;QACnE,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;eAChD,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY;eAClD,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;eAC9C,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY;eAClD,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;eAChD,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;eAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO;eACxC,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;eAC9C,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;eAChD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,gBAAgB;IACA,kBAAkB,CAAC,SAA0B,EAAE,SAA0B;QACvF,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE;YACxC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC7C;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY,EAAE;YACtD,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;SAC3D;QAED,0BAA0B;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEO,oBAAoB,CAAC,KAAkC;QAC7D,KAAK,CAAC,EAAE,CAAC,kCAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAClE,KAAK,CAAC,EAAE,CAAC,kCAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9D,KAAK,CAAC,EAAE,CAAC,kCAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACpE,mEAAmE;QACnE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACpB,uBAAuB;YACvB,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;gBAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB,CAAC,KAAkC;QAC3D,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAEO,2BAA2B,CAAC,QAA0B;QAC5D,IAAI,IAAA,8CAA2B,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,iBAAiB,EAAE;YACvE,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACjE;IACH,CAAC;IAEO,yBAAyB,CAAC,QAA0B;QAC1D,IAAI,IAAA,8CAA2B,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,iBAAiB,EAAE;YACvE,QAAQ,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACpE;IACH,CAAC;IAoDO,MAAM,CAAC,2BAA2B,CAAC,IAAkB,EAAE,QAAuD;QACpH,MAAM,IAAI,GAA4B;YACpC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAA,+CAAyB,EAAC,IAAI,CAAC,KAAK,CAAC;YAC3C,KAAK,EAAE;gBACL,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;aAC5B;SACF,CAAC;QACF,IAAI,IAAI,CAAC,IAAI;YACX,IAAI,CAAC,KAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAK,IAAgC,CAAC,WAAW;YAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aAClB,IAAK,IAAsC,CAAC,QAAQ;YACvD,IAAI,CAAC,QAAQ,GAAI,IAAsC,CAAC,QAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IACA,MAAM;QACpB,MAAM,UAAU,GAAG,IAAA,oBAAU,EAAC,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEpH,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YAC1B,OAAO,CACL,6BAAK,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAI,CACxD,CAAC;SACH;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,OAAO,CACL,6BACE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YAC9C,6BAAK,SAAS,EAAC,4BAA4B,iBAC7B,6CAA6C,IACxD,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACjD,oBAAC,kBAAkB,IACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACtB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,IAAI,CAAC,iBAAiB,EACpC,YAAY,EAAE,IAAI,CAAC,SAAS,EAC5B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAM,EACxB,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAI,CAAC,CAAC;gBAC9C,oBAAC,WAAW,IACV,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACtB,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,YAAY,EAAE,IAAI,CAAC,SAAS,EAC5B,aAAa,EAAE,IAAI,CAAC,YAAY,EAChC,YAAY,EAAE,IAAI,CAAC,iBAAiB,EACpC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAM,EACxB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAU,EAChC,cAAc,EAAE,IAAI,CAAC,YAAY,EACjC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAI,CAE1C,CACF,CACP,CAAC;IACJ,CAAC;;AAhRH,gCAoSC;AAjSC,gBAAgB;AACF,uBAAY,GAA6B;IACrD,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,qBAAqB,EAAE,cAAc,CAAC,QAAQ;IAC9C,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,KAAK,EAAE,EAAE;CACV,CAAC;AA4SJ,gBAAgB;AAChB,MAAa,oBAAqB,SAAQ,KAAK,CAAC,aAA+B;IAC7D,MAAM;QACpB,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACjJ,QAAQ,WAAW,EAAE;YACnB,KAAK,cAAc,CAAC,QAAQ;gBAC1B,OAAO,oBAAC,kBAAkB,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAC/H,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,GAAI,CAAC;YAC5G,KAAK,cAAc,CAAC,KAAK;gBACvB,OAAO,oBAAC,eAAe,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EACjG,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAI,CAAC;YACnH;gBACE,OAAO,4CAAiB,0CAA0C,IAAE,2BAAY,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAO,CAAC;SACpI;IACH,CAAC;CACF;AAdD,oDAcC;AACD,gBAAgB;AAChB,MAAM,WAAW,GAAG,IAAA,+BAAkB,EAAC,oBAAoB,CAAC,CAAC,CAAC,2DAA2D;AAwBzH,gBAAgB;AAChB,MAAa,eAAgB,SAAQ,KAAK,CAAC,SAAqD;IAAhG;;QACU,kBAAa,GAA4B,IAAI,CAAC;QAC9C,kBAAa,GAAuB,IAAI,CAAC;QACzC,aAAQ,GAAY,KAAK,CAAC;QAElC,gBAAgB;QACS,UAAK,GAAmC;YAC/D,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,EAAE;YACpB,gBAAgB,EAAE,KAAK;SACxB,CAAC;QAqEM,2BAAsB,GAAG,GAAG,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC;QAwBM,iBAAY,GAAG,GAAG,EAAE;YAC1B,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC;QAEM,yBAAoB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,IAAI,EAAE;gBACR,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACrH,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAU,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC7F,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;aACjE;iBAAM;gBACL,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC5G,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAU,CAAC,CAAC;gBAC7E,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;aACjE;QACH,CAAC,CAAC;QAEM,wBAAmB,GAAG,KAAK,EAAE,CAAS,EAAwD,EAAE;YACtG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAU,CAAC;YACxC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,iCAAiC;gBAC1D,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;gBACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxC,IAAI,KAAK;oBACP,OAAO,KAAK,CAAC;aAChB;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QACM,4BAAuB,GAAG,KAAK,EAAE,CAAS,EAAwD,EAAE;YAC1G,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAU,CAAC;YACxC,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,4CAA4C;gBAC9D,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;;gBAE5B,OAAO,SAAS,CAAC;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACrC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;gBACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxC,IAAI,KAAK;oBACP,OAAO,KAAK,CAAC;aAChB;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QACM,UAAK,GAAG,KAAK,EAAE,IAAqC,EAAE,CAAS,EAAwD,EAAE;YAC/H,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAU,CAAC;YACxC,2BAA2B;YAC3B,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC5B,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YACtB,IAAI,IAAI,KAAK,CAAC,EAAE;gBACd,OAAO,IAAI,CAAC;aACb;YACD,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;gBACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACpC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;oBAC5B,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAwC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC5F,IAAI,CAAC;wBACH,OAAO,CAAC,CAAC;iBACZ;aACF;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QAEM,iBAAY,GAAG,CAAC,KAAiB,EAAQ,EAAE;YACjD,uBAAuB;YACvB,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,uBAAuB;gBACvB,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE;oBAC7D,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;oBACzC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;iBAC5B;aACF;QACH,CAAC,CAAC;QAEM,mBAAc,GAAG,CAAC,KAA4C,EAAE,EAAE;YACxE,QAAQ,KAAK,CAAC,GAAG,EAAE;gBACjB,KAAK,2BAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,2BAAU,CAAC,SAAS;oBACvB,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B;QACH,CAAC,CAAC;QACM,iBAAY,GAAG,KAAK,EAAE,KAA4C,EAAE,EAAE;YAC5E,QAAQ,KAAK,CAAC,GAAG,EAAE;gBACjB,KAAK,2BAAU,CAAC,MAAM;oBACpB,uBAAuB;oBACvB,IAAI,IAAI,CAAC,QAAQ;wBACf,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC3C,MAAM;gBACR,KAAK,2BAAU,CAAC,OAAO,CAAC;gBACxB,KAAK,2BAAU,CAAC,SAAS;oBACvB,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,uBAAuB;oBACvB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;wBAChE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;wBAC3B,uBAAuB;wBACvB,IAAI,IAAI,CAAC,QAAQ;4BACf,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC3C;oBACD,MAAM;gBACR,KAAK,2BAAU,CAAC,KAAK;oBACnB,uBAAuB;oBACvB,IAAI,IAAI,CAAC,aAAa,EAAE;wBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;wBACtC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,SAAU,EAAE;4BACjD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;4BACnC,uBAAuB;4BACvB,IAAI,IAAI,CAAC,QAAQ;gCACf,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;yBAC5C;6BAAM;4BACL,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;4BAClD,IAAI,IAAI,KAAK,SAAS;gCACpB,IAAI,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;;gCAE1C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;yBACzC;qBACF;oBACD,MAAM;aACT;QACH,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAS,EAAE;YACjC,uBAAuB;YACvB,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,YAAa,CAAC,CAAC;gBAChG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACvD,IAAI,IAAI,CAAC,QAAQ;wBACf,IAAI,CAAC,QAAQ,CAAC;4BACZ,cAAc,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;4BAC/B,gBAAgB,EAAE,IAAI;yBACvB,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC;IACJ,CAAC;IAvOiB,MAAM;QACpB,OAAO,CACL,6BAAK,SAAS,EAAC,kCAAkC,iBAAa,kCAAkC;YAC9F,+BACE,SAAS,EAAC,6BAA6B,iBAC3B,6BAA6B,EACzC,IAAI,EAAC,MAAM,EACX,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EACvC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAClC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1D,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAC9I,UAAU,EAAE,KAAK,GAAU;YAE7B,6BAAK,SAAS,EAAC,6CAA6C,iBAAa,mCAAmC,EAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EACrI,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,CAAC,GAAI;YAChC,oBAAC,wBAAW,IACV,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,EACzC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EACxB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACjC,SAAS,EAAE,KAAK,EAChB,aAAa,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAClD,KAAK,EAAE,GAAG,EAAE;oBACV,uBAAuB;oBACvB,IAAI,IAAI,CAAC,aAAa;wBACpB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBAC/B,CAAC,IAEA,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;gBACnD,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,uBAAuB;gBACvB,IAAI,IAAI,CAAC,aAAa,EAAE;oBACtB,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;iBACrC;gBACD,OAAO,CACL,oBAAC,4BAAe,IACd,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,uBAAuB;wBACvB,IAAI,IAAI,CAAC,aAAa,EAAE;4BACtB,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,QAAQ,CAAC;4BACpC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;4BAC3B,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;4BAEvE,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,YAAa,CAAC,CAAC;4BAChG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gCACvD,uBAAuB;gCACvB,IAAI,IAAI,CAAC,QAAQ;oCACf,IAAI,CAAC,QAAQ,CAAC;wCACZ,cAAc,EAAE,KAAK;wCACrB,gBAAgB,EAAE,IAAI;qCACvB,CAAC,CAAC;4BACP,CAAC,CAAC,CAAC;4BACH,KAAK,CAAC,eAAe,EAAE,CAAC;yBACzB;oBACH,CAAC;oBACD,8BAAM,SAAS,EAAC,gCAAgC,IAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAQ;oBAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAClF,CACnB,CAAC;YACJ,CAAC,CAAC,CACU;YACd,oBAAC,uBAAU,IAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,QAAQ,EAAE,gCAAe,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,6BAAgB,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,IACzN,2BAAY,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAChD,CACT,CACP,CAAC;IACJ,CAAC;IAMD,gBAAgB;IACA,iBAAiB;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,uBAAuB;QACvB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC;YAClE,YAAY,IAAI,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1E,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC5B;IACH,CAAC;IAED,gBAAgB;IACA,oBAAoB;QAClC,uBAAuB;QACvB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,CAAC;YAClE,YAAY,IAAI,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;SAC9E;QACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;CA4IF;AAnPD,0CAmPC;AAiBD,gBAAgB;AAChB,MAAM,kBAAmB,SAAQ,KAAK,CAAC,SAAkC;IAAzE;;QAcU,mBAAc,GAAG,CAAC,UAA4C,EAAE,EAAE;YACxE,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC;QAEM,sBAAiB,GAAG,CAAC,WAA4C,EAAE,EAAE;YAC3E,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC;QAuEM,mBAAc,GAAG,GAAG,EAAE;YAC5B,IAAI,MAAgC,CAAC;YACrC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBACnB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAoC,CAAC;gBAC3E,IAAI,CAAC;oBACH,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;aACtB;YACD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC;QAEM,gBAAW,GAAG,CAAC,KAAuB,EAAE,EAAE;YAChD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,uCAAuC;gBAC1G,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC;IAvGC,gBAAgB;IACA,iBAAiB;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,kCAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,kCAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1E,CAAC;IAED,gBAAgB;IACA,oBAAoB;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,kCAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1F,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,kCAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACtF,CAAC;IAUD,gBAAgB;IACA,qBAAqB,CAAC,SAAkC;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;YACvC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;YAClC,CAAC,SAAS,CAAC,IAAI,IAAI,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACvE,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY;YAClD,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;YAC5C,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK;YACpC,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,CAAC;IACnD,CAAC;IAEe,MAAM;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,IAAI,KAAmD,CAAC;QACxD,IAAI,IAAI,EAAE;YACR,KAAK,GAAG,IAAA,uBAAO,EAAe,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACjD,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClB;QACD,OAAO;QACL,iEAAiE;QACjE,6BACE,SAAS,EAAC,gCAAgC,iBAC9B,2CAA2C,EACvD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAClC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,CAAC;YAEzB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC/C,iEAAiE;gBACjE,4CAAiB,8BAA8B,EAC7C,SAAS,EAAE,IAAA,oBAAU,EACnB,8BAA8B,EAC9B,MAAM,EAAE,cAAc,EACtB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC,EACxC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,CAAC,GAAI;gBAChE,CAAC,CAAC,SAAS;YAEb,6BAAK,SAAS,EAAC,kCAAkC,iBACnC,kCAAkC;gBAC9C,oBAAC,sBAAsB,IACrB,GAAG,EAAE,CAAC,CAAC,EACP,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,IAAI,EAAE,SAAS,EACf,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACvC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,IAAI,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAClC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI;gBAC1C,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC3B,OAAO,CACL,oBAAC,sBAAsB,IACrB,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,IAAI,EAAE,CAAC,EACP,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACvC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,IAAI,EAAE,CAAC,KAAK,KAAM,CAAC,MAAM,GAAG,CAAC,EAC7B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI,CAC5C,CAAC;gBACJ,CAAC,CAAC,CACE,CACF,CACP,CAAC;IACJ,CAAC;CAgBF;AAcD,gBAAgB;AAChB,MAAM,sBAAuB,SAAQ,KAAK,CAAC,SAAsC;IAC/E,YAAY,KAAkC;QAC5C,KAAK,CAAC,KAAK,CAAC,CAAC;QA4Df,gEAAgE;QACxD,eAAU,GAAG,CAAC,KAA0B,EAAE,KAAoB,EAAE,OAAsB,EAAE,EAAE;YAChG,OAAO,oBAAC,cAAc,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,GAAI,CAAC;QAClE,CAAC,CAAC;IA9DF,CAAC;IAEe,MAAM;QACpB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,YAAY,GAA2C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACnF,IAAI,IAAI;YACN,YAAY,GAAG,IAAA,uBAAO,EAAe,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;QAC/B,IAAI,MAAgC,CAAC;QACrC,IAAI,IAAI,EAAE;YACR,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,EAAqC,CAAC;YAC9D,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;SACtB;QACD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,+BAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QACnF,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW;YACxB,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC/E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACzB,OAAO,6CAAkB,qCAAqC,EAAC,SAAS,EAAC,2CAA2C;oBACjH,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;oBACtC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,8BAAM,SAAS,EAAC,2CAA2C,GAAG,CAAC,CAAC,CAAC,SAAS,CACzF,CAAC;aACT;YACD,OAAO,CACL,oBAAC,wBAAW,IACV,SAAS,EAAC,oCAAoC,EAC9C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBACjB,KAAK,CAAC,eAAe,EAAE,CAAC;oBACxB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC,EACD,KAAK,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,EAC7C,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,IAEvC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC7B,OAAO,CACL,oBAAC,4BAAe,IACd,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,KAAK,CAAC,OAAQ,CAAC,IAAI,EACzB,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;wBACnB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC3C,CAAC,IACA,mDAA4B,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,OAAQ,CAAC,KAAK,CAAC,CACzD,CACnB,CAAC;YACJ,CAAC,CAAC,CACU,CACf,CAAC;SACH;aAAM;YACL,OAAO,CACL,8BAAM,SAAS,EAAE,IAAA,oBAAU,EAAC,gCAAgC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,IAC7F,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAClC,CACR,CAAC;SACH;IACH,CAAC;CAMF;AAeD;;;GAGG;AACH,MAAa,cAAe,SAAQ,KAAK,CAAC,SAA8B;IACtE,YAAY,KAA0B;QACpC,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,MAAM;QACpB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACnC,OAAO,6CAAkB,4BAA4B;YAAC,8BAAM,SAAS,EAAE,IAAA,oBAAU,EAAC,MAAM,EAAE,IAAI,CAAC,GAAI;YAAC,mDAA4B,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAQ,CAAC;IACxK,CAAC;IAEe,iBAAiB;QAC/B,uBAAuB;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAEe,kBAAkB;QAChC,uBAAuB;QACvB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;CACF;AArBD,wCAqBC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Breadcrumb\r\n */\r\n\r\nimport \"./Breadcrumb.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { using } from \"@itwin/core-bentley\";\r\nimport { MessageSeverity, PropertyRecord, SpecialKey } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, ContextMenu, ContextMenuItem, DialogButtonType, MessageBox, SplitButton, withOnOutsideClick } from \"@itwin/core-react\";\r\nimport { PropertyValueRendererManager } from \"../properties/ValueRendererManager\";\r\nimport {\r\n DelayLoadedTreeNodeItem, ImmediatelyLoadedTreeNodeItem, isTreeDataProviderInterface, TreeDataProvider, TreeNodeItem,\r\n} from \"../tree/TreeDataProvider\";\r\nimport { UiComponents } from \"../UiComponents\";\r\nimport {\r\n BeInspireTree, BeInspireTreeEvent, BeInspireTreeNode, BeInspireTreeNodeConfig, BeInspireTreeNodes, MapPayloadToInspireNodeCallback, toNodes,\r\n} from \"./BeInspireTree\";\r\nimport { BreadcrumbPath, BreadcrumbUpdateEventArgs } from \"./BreadcrumbPath\";\r\nimport { getPropertyRecordAsString } from \"./BreadcrumbTreeUtils\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n// cspell:ignore itree autocompleting\r\n\r\n/** @internal */\r\nexport type BreadcrumbNodeRenderer = (props: BreadcrumbNodeProps, node?: TreeNodeItem, parent?: TreeNodeItem) => React.ReactNode;\r\n\r\n/** Properties for [[Breadcrumb]] component\r\n * @beta\r\n * @deprecated in 3.0.\r\n */\r\nexport interface BreadcrumbProps extends CommonProps {\r\n /** Manager to coordinate state between Breadcrumb element and BreadcrumbDetails element. */\r\n path?: BreadcrumbPath;\r\n /** Data provider for tree content */\r\n dataProvider: TreeDataProvider;\r\n /** Initial current node */\r\n initialCurrent?: TreeNodeItem;\r\n /** Character used to separate discrete tree nodes in Breadcrumb text mode. Default: \"\\\\\" */\r\n delimiter?: string;\r\n /** Width in pixels, if number, and in specified css units, if string. Default: \"15em\" */\r\n width?: number | string;\r\n /** Whether to show up-dir directory pop button on the left. Default: true */\r\n showUpDir?: boolean;\r\n /** Which BreadcrumbMode to initially start with. Default: BreadcrumbMode.Dropdown */\r\n initialBreadcrumbMode?: BreadcrumbMode;\r\n /** Whether to show white background and border. Default: true */\r\n background?: boolean;\r\n /** Static breadcrumb element. Default: false */\r\n staticOnly?: boolean;\r\n /** Disable plain-text input for the breadcrumb navigation. Default: false */\r\n dropdownOnly?: boolean;\r\n /** Whether to disallow navigation to leaf nodes (nodes with no children). Default: true */\r\n parentsOnly?: boolean;\r\n /** Callback triggered when child node is loaded with an asynchronous dataProvider. */\r\n onChildrenLoaded?: (parent: TreeNodeItem, children: TreeNodeItem[]) => void;\r\n /** Callback triggered when root nodes are loaded with an asynchronous dataProvider. */\r\n onRootNodesLoaded?: (nodes: TreeNodeItem[]) => void;\r\n\r\n /** @internal */\r\n renderNode?: BreadcrumbNodeRenderer;\r\n /** @internal */\r\n onRender?: () => void;\r\n /** @internal */\r\n expandedNodes?: boolean;\r\n}\r\n\r\n/** Enum for Breadcrumb Mode\r\n * @beta\r\n * @deprecated in 3.0.\r\n */\r\nexport enum BreadcrumbMode {\r\n Dropdown = \"dropdown\",\r\n Input = \"input\",\r\n}\r\n\r\n/** @internal */\r\ninterface BreadcrumbState {\r\n prev: {\r\n dataProvider: TreeDataProvider;\r\n modelReady: boolean;\r\n };\r\n model: BeInspireTree<TreeNodeItem>;\r\n modelReady: boolean;\r\n width: number | string;\r\n current?: TreeNodeItem;\r\n currentMode: BreadcrumbMode;\r\n pathString: string;\r\n}\r\n\r\n/**\r\n * Breadcrumb navigation component, with two discrete modes: text mode and dropdown mode.\r\n * Text mode includes autocomplete suggestions.\r\n * Both dropdown and text mode support arrow and tab navigation.\r\n * @beta\r\n * @deprecated in 3.0. Use Breadcrumbs from itwinui-react instead\r\n */\r\nexport class Breadcrumb extends React.Component<BreadcrumbProps, BreadcrumbState> {\r\n private _mounted: boolean = false;\r\n\r\n /** @internal */\r\n public static defaultProps: Partial<BreadcrumbProps> = {\r\n delimiter: \"\\\\\",\r\n background: true,\r\n initialBreadcrumbMode: BreadcrumbMode.Dropdown,\r\n showUpDir: true,\r\n parentsOnly: true,\r\n width: \"\",\r\n };\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<BreadcrumbState>;\r\n\r\n /** @internal */\r\n constructor(props: BreadcrumbProps) {\r\n super(props);\r\n\r\n this.state = {\r\n prev: {\r\n dataProvider: props.dataProvider,\r\n modelReady: false,\r\n },\r\n model: Breadcrumb.createModel(props),\r\n modelReady: false,\r\n width: props.width!,\r\n currentMode: props.initialBreadcrumbMode!,\r\n current: props.initialCurrent,\r\n pathString: \"\",\r\n };\r\n }\r\n\r\n private static createModel(props: BreadcrumbProps) {\r\n return new BeInspireTree<TreeNodeItem>({\r\n dataProvider: props.dataProvider,\r\n mapPayloadToInspireNodeConfig: Breadcrumb.inspireNodeFromTreeNodeItem,\r\n });\r\n }\r\n\r\n /** @internal */\r\n public static getDerivedStateFromProps(props: BreadcrumbProps, state: BreadcrumbState): BreadcrumbState | null {\r\n const providerChanged = (props.dataProvider !== state.prev.dataProvider);\r\n\r\n // create derived state that just updates `prev` values\r\n const derivedState: BreadcrumbState = {\r\n ...state,\r\n prev: {\r\n ...state.prev,\r\n dataProvider: props.dataProvider,\r\n modelReady: state.modelReady,\r\n },\r\n };\r\n\r\n // in case provider changed, have to re-create `model` and reset `modelReady`\r\n if (providerChanged) {\r\n derivedState.model = Breadcrumb.createModel(props);\r\n derivedState.modelReady = false;\r\n }\r\n\r\n return derivedState;\r\n }\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._mounted = true;\r\n this.assignModelListeners(this.state.model);\r\n this.assignDataProviderListeners(this.props.dataProvider);\r\n\r\n if (this.props.path) {\r\n this.props.path.setDataProvider(this.props.dataProvider);\r\n this.props.path.BreadcrumbUpdateEvent.addListener(this._handleUpdate);\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n if (this.props.path)\r\n this.props.path.BreadcrumbUpdateEvent.removeListener(this._handleUpdate);\r\n this.dropModelListeners(this.state.model);\r\n this.dropDataProviderListeners(this.props.dataProvider);\r\n this._mounted = false;\r\n }\r\n\r\n /** @internal */\r\n public override shouldComponentUpdate(nextProps: BreadcrumbProps, nextState: BreadcrumbState): boolean {\r\n if (this.state.modelReady !== nextState.modelReady || this.state.model !== nextState.model) {\r\n // always render when modelReady or model changes\r\n return true;\r\n }\r\n\r\n if (!nextState.modelReady) {\r\n // if we got here and model is not ready - don't render\r\n return false;\r\n }\r\n\r\n // otherwise, render when any of the following props / state change\r\n return this.props.renderNode !== nextProps.renderNode\r\n || this.props.dataProvider !== nextProps.dataProvider\r\n || this.props.background !== nextProps.background\r\n || this.props.dropdownOnly !== nextProps.dropdownOnly\r\n || this.props.parentsOnly !== nextProps.parentsOnly\r\n || this.props.showUpDir !== nextProps.showUpDir\r\n || this.state.current !== nextState.current\r\n || this.state.pathString !== nextState.pathString\r\n || this.state.currentMode !== nextState.currentMode\r\n || this.state.model.visible().some((n) => n.isDirty());\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(prevProps: BreadcrumbProps, prevState: BreadcrumbState) {\r\n if (this.state.model !== prevState.model) {\r\n this.dropModelListeners(prevState.model);\r\n this.assignModelListeners(this.state.model);\r\n }\r\n\r\n if (this.props.dataProvider !== prevProps.dataProvider) {\r\n this.dropDataProviderListeners(prevProps.dataProvider);\r\n this.assignDataProviderListeners(this.props.dataProvider);\r\n }\r\n\r\n /* istanbul ignore next */\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n }\r\n\r\n private assignModelListeners(model: BeInspireTree<TreeNodeItem>) {\r\n model.on(BeInspireTreeEvent.ChangesApplied, this._onModelChanged);\r\n model.on(BeInspireTreeEvent.ModelLoaded, this._onModelLoaded);\r\n model.on(BeInspireTreeEvent.ChildrenLoaded, this._onChildrenLoaded);\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n model.ready.then(() => {\r\n // istanbul ignore else\r\n if (model === this.state.model)\r\n this._onModelReady();\r\n });\r\n }\r\n\r\n private dropModelListeners(model: BeInspireTree<TreeNodeItem>) {\r\n model.removeAllListeners();\r\n }\r\n\r\n private assignDataProviderListeners(provider: TreeDataProvider) {\r\n if (isTreeDataProviderInterface(provider) && provider.onTreeNodeChanged) {\r\n provider.onTreeNodeChanged.addListener(this._onTreeNodeChanged);\r\n }\r\n }\r\n\r\n private dropDataProviderListeners(provider: TreeDataProvider) {\r\n if (isTreeDataProviderInterface(provider) && provider.onTreeNodeChanged) {\r\n provider.onTreeNodeChanged.removeListener(this._onTreeNodeChanged);\r\n }\r\n }\r\n\r\n private _handleUpdate = (args: BreadcrumbUpdateEventArgs) => {\r\n if (args.currentNode && this._mounted) {\r\n const current = this.state.model.node(args.currentNode.id);\r\n if (current) {\r\n const p = current.getTextualHierarchy().join(this.props.delimiter);\r\n this.setState({ current: args.currentNode, pathString: p });\r\n }\r\n } else {\r\n this.setState({ current: undefined, pathString: \"\" });\r\n }\r\n };\r\n\r\n private _onModelLoaded = (rootNodes: BeInspireTreeNodes<TreeNodeItem>) => {\r\n if (this.props.onRootNodesLoaded)\r\n this.props.onRootNodesLoaded(rootNodes.map((n) => n.payload!));\r\n const current = this.state.current ? this.state.model.node(this.state.current.id) : undefined;\r\n const p = current ? current.getTextualHierarchy().join(this.props.delimiter) : \"\";\r\n if (p !== this.state.pathString)\r\n this.setState({ pathString: p });\r\n };\r\n\r\n private _onChildrenLoaded = (parentNode: BeInspireTreeNode<TreeNodeItem>) => {\r\n const children = parentNode.getChildren();\r\n if (this.props.onChildrenLoaded)\r\n this.props.onChildrenLoaded(parentNode.payload!, toNodes<TreeNodeItem>(children).map((c) => c.payload!));\r\n const current = this.state.current ? this.state.model.node(this.state.current.id) : undefined;\r\n const p = current ? current.getTextualHierarchy().join(this.props.delimiter) : \"\";\r\n if (p !== this.state.pathString)\r\n this.setState({ pathString: p });\r\n };\r\n\r\n private _onModelChanged = () => {\r\n // just re-set the model to initiate update\r\n this.setState((prev) => ({ model: prev.model }));\r\n };\r\n\r\n private _onModelReady = () => {\r\n // istanbul ignore else\r\n if (this._mounted) {\r\n const current = this.state.current ? this.state.model.node(this.state.current.id) : undefined;\r\n this.setState((_prevState, props) => ({ modelReady: true, pathString: current ? current.getTextualHierarchy().join(props.delimiter) : \"\" }));\r\n }\r\n };\r\n\r\n private _onTreeNodeChanged = (_items: Array<TreeNodeItem | undefined>) => {\r\n using(this.state.model.pauseRendering(), async (_r) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n await this.state.model.reload();\r\n });\r\n };\r\n\r\n private static inspireNodeFromTreeNodeItem(item: TreeNodeItem, remapper: MapPayloadToInspireNodeCallback<TreeNodeItem>): BeInspireTreeNodeConfig {\r\n const node: BeInspireTreeNodeConfig = {\r\n id: item.id,\r\n text: getPropertyRecordAsString(item.label),\r\n itree: {\r\n state: { collapsed: false },\r\n },\r\n };\r\n if (item.icon)\r\n node.itree!.icon = item.icon;\r\n if ((item as DelayLoadedTreeNodeItem).hasChildren)\r\n node.children = true;\r\n else if ((item as ImmediatelyLoadedTreeNodeItem).children)\r\n node.children = (item as ImmediatelyLoadedTreeNodeItem).children!.map((p) => remapper(p, remapper));\r\n return node;\r\n }\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const classNames = classnames(\"components-breadcrumb\", this.props.background && \"background\", this.props.className);\r\n\r\n if (!this.state.modelReady) {\r\n return (\r\n <div className={classNames} style={this.props.style} />\r\n );\r\n }\r\n const node = this.state.current ? this.state.model.node(this.state.current.id) : undefined;\r\n return (\r\n <div\r\n className={classNames} style={this.props.style}>\r\n <div className=\"components-breadcrumb-head\"\r\n data-testid=\"components-breadcrumb-dropdown-input-parent\">\r\n {this.props.dropdownOnly || this.props.staticOnly ?\r\n <BreadcrumbDropdown\r\n tree={this.state.model}\r\n node={node}\r\n onNodeChange={this._handleNodeChange}\r\n onInputStart={this._setInput}\r\n renderNode={this.props.renderNode}\r\n staticOnly={this.props.staticOnly}\r\n showUpDir={this.props.showUpDir}\r\n parentsOnly={this.props.parentsOnly}\r\n width={this.props.width!}\r\n expandedNode={this.props.expandedNodes} /> :\r\n <InputSwitch\r\n tree={this.state.model}\r\n node={node}\r\n pathString={this.state.pathString}\r\n currentMode={this.state.currentMode}\r\n onInputStart={this._setInput}\r\n onInputCancel={this._setDropdown}\r\n onNodeChange={this._handleNodeChange}\r\n width={this.props.width!}\r\n showUpDir={this.props.showUpDir}\r\n parentsOnly={this.props.parentsOnly}\r\n delimiter={this.props.delimiter!}\r\n onOutsideClick={this._setDropdown}\r\n renderNode={this.props.renderNode}\r\n expandedNode={this.props.expandedNodes} />\r\n }\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n private _setDropdown = () => this.setState({ currentMode: BreadcrumbMode.Dropdown });\r\n private _setInput = () => this.setState({ currentMode: BreadcrumbMode.Input });\r\n\r\n private _handleNodeChange = (node: TreeNodeItem | undefined) => {\r\n if (this.props.path)\r\n this.props.path.setCurrentNode(node);\r\n else {\r\n if (!node) {\r\n this.setState({ current: undefined, pathString: \"\" });\r\n } else {\r\n const current = this.state.current ? this.state.model.node(this.state.current.id) : undefined;\r\n const p = current ? current.getTextualHierarchy().join(this.props.delimiter) : \"\";\r\n this.setState({ current: node, pathString: p });\r\n }\r\n }\r\n if (this.state.currentMode !== BreadcrumbMode.Dropdown)\r\n this._setDropdown();\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport interface InputSwitchProps {\r\n tree: BeInspireTree<TreeNodeItem>;\r\n node?: BeInspireTreeNode<TreeNodeItem>;\r\n pathString: string;\r\n currentMode: BreadcrumbMode;\r\n onInputStart?: () => void;\r\n onInputCancel: () => void;\r\n onNodeChange: (node?: TreeNodeItem) => void;\r\n showUpDir?: boolean;\r\n parentsOnly?: boolean;\r\n renderNode?: BreadcrumbNodeRenderer;\r\n width: number | string;\r\n delimiter: string;\r\n expandedNode?: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class InputSwitchComponent extends React.PureComponent<InputSwitchProps> {\r\n public override render(): React.ReactNode {\r\n const { currentMode, tree, node, onInputStart, onInputCancel, onNodeChange, renderNode, width, showUpDir, delimiter, expandedNode } = this.props;\r\n switch (currentMode) {\r\n case BreadcrumbMode.Dropdown:\r\n return <BreadcrumbDropdown tree={tree} node={node} onNodeChange={onNodeChange} renderNode={renderNode} onInputStart={onInputStart}\r\n parentsOnly={this.props.parentsOnly} showUpDir={showUpDir} width={width} expandedNode={expandedNode} />;\r\n case BreadcrumbMode.Input:\r\n return <BreadcrumbInput tree={tree} node={node} onNodeChange={onNodeChange} onCancel={onInputCancel}\r\n parentsOnly={this.props.parentsOnly} delimiter={delimiter} width={width} pathString={this.props.pathString} />;\r\n default:\r\n return <div data-testid=\"components-breadcrumb-error-unknown-mode\">{UiComponents.translate(\"breadcrumb.errorUnknownMode\")}</div>;\r\n }\r\n }\r\n}\r\n/** @internal */\r\nconst InputSwitch = withOnOutsideClick(InputSwitchComponent); // eslint-disable-line @typescript-eslint/naming-convention\r\n\r\n/** @internal */\r\nexport interface BreadcrumbInputProps {\r\n width: number | string;\r\n delimiter?: string;\r\n\r\n onCancel: () => void;\r\n onNodeChange: (node: TreeNodeItem | undefined) => void;\r\n parentsOnly?: boolean;\r\n\r\n tree: BeInspireTree<TreeNodeItem>;\r\n node?: BeInspireTreeNode<TreeNodeItem>;\r\n\r\n pathString: string;\r\n}\r\n\r\n/** @internal */\r\nexport interface BreadcrumbInputState {\r\n autocompleting: boolean;\r\n autocompleteList: string[];\r\n messageBoxOpened: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class BreadcrumbInput extends React.Component<BreadcrumbInputProps, BreadcrumbInputState> {\r\n private _inputElement: HTMLInputElement | null = null;\r\n private _autocomplete: ContextMenu | null = null;\r\n private _mounted: boolean = false;\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<BreadcrumbInputState> = {\r\n autocompleting: false,\r\n autocompleteList: [],\r\n messageBoxOpened: false,\r\n };\r\n\r\n public override render(): JSX.Element {\r\n return (\r\n <div className=\"components-breadcrumb-input-root\" data-testid=\"components-breadcrumb-input-root\">\r\n <input\r\n className=\"components-breadcrumb-input\"\r\n data-testid=\"components-breadcrumb-input\"\r\n type=\"text\"\r\n ref={(e) => { this._inputElement = e; }}\r\n style={{ width: this.props.width }}\r\n onKeyDown={this._handleKeyDown} onKeyUp={this._handleKeyUp}\r\n onChange={this._handleChange} onPaste={this._handleChange} onCut={this._handleChange} onFocus={this._handleChange} onClick={this._handleChange}\r\n spellCheck={false}></input>\r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\r\n <div className=\"components-breadcrumb-close icon icon-close\" data-testid=\"components-breadcrumb-input-close\" onClick={this._handleClose}\r\n role=\"button\" tabIndex={-1} />\r\n <ContextMenu\r\n ref={(el) => { this._autocomplete = el; }}\r\n style={{ width: \"100%\" }}\r\n opened={this.state.autocompleting}\r\n edgeLimit={false}\r\n selectedIndex={0} floating={false} autoflip={false}\r\n onEsc={() => {\r\n // istanbul ignore else\r\n if (this._inputElement)\r\n this._inputElement.focus();\r\n }}\r\n >\r\n {this.state.autocompleteList.map((listItem, index) => {\r\n let l = 0;\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n l = this._inputElement.value.length;\r\n }\r\n return (\r\n <ContextMenuItem\r\n key={index}\r\n onSelect={(event) => {\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n this._inputElement.value = listItem;\r\n this._inputElement.focus();\r\n this._inputElement.setSelectionRange(listItem.length, listItem.length);\r\n\r\n const autocompleteStr = this._inputElement.value.substring(0, this._inputElement.selectionEnd!);\r\n this._getAutocompleteList(autocompleteStr).then((list) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({\r\n autocompleting: false,\r\n autocompleteList: list,\r\n });\r\n });\r\n event.stopPropagation();\r\n }\r\n }}>\r\n <span className=\"components-breadcrumb-selected\">{listItem.substr(0, l)}</span>{listItem.substr(l)}\r\n </ContextMenuItem>\r\n );\r\n })}\r\n </ContextMenu>\r\n <MessageBox opened={this.state.messageBoxOpened} modal={false} onClose={this._handleMessageBoxClose} severity={MessageSeverity.Warning} buttonCluster={[{ type: DialogButtonType.OK, onClick: this._handleMessageBoxClose }]}>\r\n {UiComponents.translate(\"breadcrumb.invalidBreadcrumbPath\")}\r\n </MessageBox>\r\n </div>\r\n );\r\n }\r\n\r\n private _handleMessageBoxClose = () => {\r\n this.setState({ messageBoxOpened: false });\r\n };\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._mounted = true;\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n const activeWindow = this._inputElement.ownerDocument.defaultView;\r\n activeWindow && activeWindow.addEventListener(\"click\", this._handleClick);\r\n this._inputElement.value = this.props.pathString;\r\n this._inputElement.focus();\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n const activeWindow = this._inputElement.ownerDocument.defaultView;\r\n activeWindow && activeWindow.removeEventListener(\"click\", this._handleClick);\r\n }\r\n this._mounted = false;\r\n }\r\n\r\n private _handleClose = () => {\r\n this.props.onCancel();\r\n this.setState({ autocompleting: false });\r\n };\r\n\r\n private _getAutocompleteList = async (path: string) => {\r\n const node = await this._findChildParentPartial(path);\r\n if (node) {\r\n const baseString = node.getTextualHierarchy().join(this.props.delimiter);\r\n const children = node.getChildren();\r\n const parentChildren = this.props.parentsOnly ? children.filter((child) => child.hasOrWillHaveChildren()) : children;\r\n const strList = parentChildren.map((n) => baseString + this.props.delimiter! + n.toString());\r\n return strList.filter((e) => e.substr(0, path.length) === path);\r\n } else {\r\n const nodes = this.props.tree.nodes();\r\n const parentRoots = this.props.parentsOnly ? nodes.filter((child) => child.hasOrWillHaveChildren()) : nodes;\r\n const strList = parentRoots.map((n) => n.toString() + this.props.delimiter!);\r\n return strList.filter((e) => e.substr(0, path.length) === path);\r\n }\r\n };\r\n\r\n private _findChildUserInput = async (p: string): Promise<BeInspireTreeNode<TreeNodeItem> | undefined> => {\r\n const delimiter = this.props.delimiter!;\r\n if (p.endsWith(delimiter)) // strip last delimiter if at end\r\n p = p.substr(0, p.length - delimiter.length);\r\n const root = this.props.tree.nodes();\r\n for (const node of root) {\r\n const found = await this._find(node, p);\r\n if (found)\r\n return found;\r\n }\r\n return undefined;\r\n };\r\n private _findChildParentPartial = async (p: string): Promise<BeInspireTreeNode<TreeNodeItem> | undefined> => {\r\n const delimiter = this.props.delimiter!;\r\n const lastDel = p.lastIndexOf(delimiter);\r\n if (lastDel !== -1) // strip last delimiter and everything after\r\n p = p.substring(0, lastDel);\r\n else\r\n return undefined;\r\n const root = this.props.tree.nodes();\r\n for (const node of root) {\r\n const found = await this._find(node, p);\r\n if (found)\r\n return found;\r\n }\r\n return undefined;\r\n };\r\n private _find = async (node: BeInspireTreeNode<TreeNodeItem>, p: string): Promise<BeInspireTreeNode<TreeNodeItem> | undefined> => {\r\n const delimiter = this.props.delimiter!;\r\n // remove leading delimiter\r\n if (p.indexOf(delimiter) === 0)\r\n p = p.substr(delimiter.length);\r\n const { text } = node;\r\n if (text === p) {\r\n return node;\r\n }\r\n if (p.indexOf(text) === 0 && node.hasOrWillHaveChildren()) {\r\n const children = node.getChildren();\r\n for (const child of children) {\r\n const n = await this._find(child as BeInspireTreeNode<TreeNodeItem>, p.substr(text.length));\r\n if (n)\r\n return n;\r\n }\r\n }\r\n return undefined;\r\n };\r\n\r\n private _handleClick = (event: MouseEvent): void => {\r\n // istanbul ignore else\r\n if (this._autocomplete) {\r\n // istanbul ignore else\r\n if (this._inputElement && event.target === this._inputElement) {\r\n this.setState({ autocompleting: false });\r\n this._inputElement.focus();\r\n }\r\n }\r\n };\r\n\r\n private _handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n switch (event.key) {\r\n case SpecialKey.ArrowUp:\r\n case SpecialKey.ArrowDown:\r\n event.preventDefault();\r\n }\r\n };\r\n private _handleKeyUp = async (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n switch (event.key) {\r\n case SpecialKey.Escape:\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({ autocompleting: false });\r\n break;\r\n case SpecialKey.ArrowUp:\r\n case SpecialKey.ArrowDown:\r\n event.preventDefault();\r\n // istanbul ignore else\r\n if (this._autocomplete && this.state.autocompleteList.length > 0) {\r\n this._autocomplete.focus();\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({ autocompleting: true });\r\n }\r\n break;\r\n case SpecialKey.Enter:\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n const path = this._inputElement.value;\r\n if (path === \"\" || path === this.props.delimiter!) {\r\n this.props.onNodeChange(undefined);\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({ autocompleting: false });\r\n } else {\r\n const node = await this._findChildUserInput(path);\r\n if (node === undefined)\r\n this.setState({ messageBoxOpened: true });\r\n else\r\n this.props.onNodeChange(node.payload);\r\n }\r\n }\r\n break;\r\n }\r\n };\r\n\r\n private _handleChange = (): void => {\r\n // istanbul ignore else\r\n if (this._inputElement) {\r\n const autocompleteStr = this._inputElement.value.substring(0, this._inputElement.selectionEnd!);\r\n this._getAutocompleteList(autocompleteStr).then((list) => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n if (this._mounted)\r\n this.setState({\r\n autocompleting: list.length > 0,\r\n autocompleteList: list,\r\n });\r\n });\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\ninterface BreadcrumbDropdownProps {\r\n tree: BeInspireTree<TreeNodeItem>;\r\n node?: BeInspireTreeNode<TreeNodeItem>;\r\n onInputStart?: () => void;\r\n onNodeChange: (node: TreeNodeItem | undefined) => void;\r\n staticOnly?: boolean;\r\n parentsOnly?: boolean;\r\n delimiter?: string;\r\n width: number | string;\r\n showUpDir?: boolean;\r\n renderNode?: BreadcrumbNodeRenderer;\r\n expandedNode?: boolean;\r\n}\r\n\r\n/** @internal */\r\nclass BreadcrumbDropdown extends React.Component<BreadcrumbDropdownProps> {\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this.props.tree.on(BeInspireTreeEvent.ChildrenLoaded, this._onChildrenLoaded);\r\n this.props.tree.on(BeInspireTreeEvent.ModelLoaded, this._onModelLoaded);\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this.props.tree.removeListener(BeInspireTreeEvent.ChildrenLoaded, this._onChildrenLoaded);\r\n this.props.tree.removeListener(BeInspireTreeEvent.ModelLoaded, this._onModelLoaded);\r\n }\r\n\r\n private _onModelLoaded = (_rootNodes: BeInspireTreeNodes<TreeNodeItem>) => {\r\n this.forceUpdate();\r\n };\r\n\r\n private _onChildrenLoaded = (_parentNode: BeInspireTreeNode<TreeNodeItem>) => {\r\n this.forceUpdate();\r\n };\r\n\r\n /** @internal */\r\n public override shouldComponentUpdate(nextProps: BreadcrumbDropdownProps) {\r\n return this.props.tree !== nextProps.tree ||\r\n this.props.node !== nextProps.node ||\r\n (nextProps.node && /* istanbul ignore next */ nextProps.node.isDirty()) ||\r\n this.props.onInputStart !== nextProps.onInputStart ||\r\n this.props.delimiter !== nextProps.delimiter ||\r\n this.props.width !== nextProps.width ||\r\n this.props.renderNode !== nextProps.renderNode;\r\n }\r\n\r\n public override render(): JSX.Element | null {\r\n const node = this.props.node;\r\n let nodes: BeInspireTreeNodes<TreeNodeItem> | undefined;\r\n if (node) {\r\n nodes = toNodes<TreeNodeItem>(node.getParents());\r\n nodes.reverse();\r\n nodes.push(node);\r\n }\r\n return (\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\r\n <div\r\n className=\"components-breadcrumb-dropdown\"\r\n data-testid=\"components-breadcrumb-dropdown-background\"\r\n style={{ width: this.props.width }}\r\n onClick={this._focusInput}\r\n role=\"button\" tabIndex={-1}\r\n >\r\n {!this.props.staticOnly && this.props.showUpDir ?\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\r\n <div data-testid=\"components-breadcrumb-up-dir\"\r\n className={classnames(\r\n \"components-breadcrumb-up-dir\",\r\n \"icon\", \"icon-sort-up\",\r\n { root: this.props.node === undefined })\r\n } onClick={this._handleUpClick} role=\"button\" tabIndex={-1} />\r\n : undefined\r\n }\r\n <div className=\"components-breadcrumb-crumb-list\"\r\n data-testid=\"components-breadcrumb-crumb-list\">\r\n <BreadcrumbDropdownNode\r\n key={-1}\r\n tree={this.props.tree}\r\n node={undefined}\r\n onNodeSelected={this.props.onNodeChange}\r\n staticOnly={this.props.staticOnly}\r\n parentsOnly={this.props.parentsOnly}\r\n last={!nodes || nodes.length === 0}\r\n renderNode={this.props.renderNode}\r\n expandedNode={this.props.expandedNode} />\r\n {nodes && nodes.map((n, i) => {\r\n return (\r\n <BreadcrumbDropdownNode\r\n key={i}\r\n tree={this.props.tree}\r\n node={n}\r\n onNodeSelected={this.props.onNodeChange}\r\n staticOnly={this.props.staticOnly}\r\n parentsOnly={this.props.parentsOnly}\r\n last={i === nodes!.length - 1}\r\n renderNode={this.props.renderNode}\r\n expandedNode={this.props.expandedNode} />\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n private _handleUpClick = () => {\r\n let parent: TreeNodeItem | undefined;\r\n if (this.props.node) {\r\n const p = (this.props.node.getParent()) as BeInspireTreeNode<TreeNodeItem>;\r\n if (p)\r\n parent = p.payload;\r\n }\r\n this.props.onNodeChange(parent);\r\n };\r\n\r\n private _focusInput = (event: React.MouseEvent) => {\r\n if (event.target === event.currentTarget && this.props.onInputStart) // check if click is direct, or bubbled\r\n this.props.onInputStart();\r\n };\r\n}\r\n\r\n/** @internal */\r\ninterface BreadcrumbDropdownNodeProps {\r\n tree: BeInspireTree<TreeNodeItem>;\r\n node?: BeInspireTreeNode<TreeNodeItem>;\r\n onNodeSelected: (node: TreeNodeItem | undefined) => void;\r\n staticOnly?: boolean;\r\n parentsOnly?: boolean;\r\n last?: boolean;\r\n renderNode?: BreadcrumbNodeRenderer;\r\n expandedNode?: boolean;\r\n}\r\n\r\n/** @internal */\r\nclass BreadcrumbDropdownNode extends React.Component<BreadcrumbDropdownNodeProps> {\r\n constructor(props: BreadcrumbDropdownNodeProps) {\r\n super(props);\r\n }\r\n\r\n public override render(): React.ReactNode {\r\n const { node } = this.props;\r\n let nodeChildren: Array<BeInspireTreeNode<TreeNodeItem>> = this.props.tree.nodes();\r\n if (node)\r\n nodeChildren = toNodes<TreeNodeItem>(node.getChildren());\r\n const n = node && node.payload;\r\n let parent: TreeNodeItem | undefined;\r\n if (node) {\r\n const p = node.getParent() as BeInspireTreeNode<TreeNodeItem>;\r\n if (p)\r\n parent = p.payload;\r\n }\r\n const label = n && n.label ? n.label : PropertyRecord.fromString(\"\");\r\n const icon = n && n.icon ? n.icon : \"icon-browse\";\r\n const renderNode = this.props.renderNode ? this.props.renderNode : this.renderNode;\r\n if (this.props.parentsOnly)\r\n nodeChildren = nodeChildren.filter((child) => child.hasOrWillHaveChildren());\r\n if (nodeChildren.length > 0) {\r\n if (this.props.staticOnly) {\r\n return <span data-testid=\"components-breadcrumb-static-button\" className=\"components-breadcrumb-split-button static\">\r\n {renderNode({ label, icon }, n, parent)}\r\n {!this.props.last ? <span className=\"static-arrow-icon icon icon-chevron-right\" /> : undefined}\r\n </span>;\r\n }\r\n return (\r\n <SplitButton\r\n className=\"components-breadcrumb-split-button\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n this.props.onNodeSelected(n);\r\n }}\r\n label={renderNode({ label, icon }, n, parent)}\r\n initialExpanded={this.props.expandedNode}\r\n >\r\n {nodeChildren.map((child, d) => {\r\n return (\r\n <ContextMenuItem\r\n key={d}\r\n icon={child.payload!.icon}\r\n onSelect={(_event) => {\r\n this.props.onNodeSelected(child.payload);\r\n }}>\r\n {PropertyValueRendererManager.defaultManager.render(child.payload!.label)}\r\n </ContextMenuItem>\r\n );\r\n })}\r\n </SplitButton>\r\n );\r\n } else {\r\n return (\r\n <span className={classnames(\"components-breadcrumb-end-node\", { static: this.props.staticOnly })}>\r\n {renderNode({ label, icon }, n, parent)}\r\n </span>\r\n );\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private renderNode = (props: BreadcrumbNodeProps, _node?: TreeNodeItem, _parent?: TreeNodeItem) => {\r\n return <BreadcrumbNode label={props.label} icon={props.icon} />;\r\n };\r\n}\r\n\r\n/** Properties for [[BreadcrumbNode]] component\r\n * @beta\r\n * @deprecated in 3.0.\r\n */\r\nexport interface BreadcrumbNodeProps {\r\n /** Icon class string */\r\n icon: string;\r\n /** Node label */\r\n label: PropertyRecord;\r\n /** @internal */\r\n onRender?: () => void;\r\n}\r\n\r\n/** Default BreadcrumbNode component\r\n * @beta\r\n * @deprecated in 3.0.\r\n */\r\nexport class BreadcrumbNode extends React.Component<BreadcrumbNodeProps> {\r\n constructor(props: BreadcrumbNodeProps) {\r\n super(props);\r\n }\r\n\r\n public override render(): React.ReactNode {\r\n const { icon, label } = this.props;\r\n return <span data-testid=\"components-breadcrumb-node\"><span className={classnames(\"icon\", icon)} />{PropertyValueRendererManager.defaultManager.render(label)}</span>;\r\n }\r\n\r\n public override componentDidMount() {\r\n // istanbul ignore next\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n }\r\n\r\n public override componentDidUpdate() {\r\n // istanbul ignore next\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n }\r\n}\r\n"]}
|
|
@@ -9,7 +9,7 @@ import { TreeNodeItem } from "../tree/TreeDataProvider";
|
|
|
9
9
|
import { BreadcrumbPath } from "./BreadcrumbPath";
|
|
10
10
|
/** Properties for the [[BreadcrumbDetails]] component
|
|
11
11
|
* @beta
|
|
12
|
-
* @deprecated
|
|
12
|
+
* @deprecated in 3.0.
|
|
13
13
|
*/
|
|
14
14
|
export interface BreadcrumbDetailsProps extends CommonProps {
|
|
15
15
|
/** Path data object shared by Breadcrumb component */
|
|
@@ -33,7 +33,7 @@ interface BreadcrumbDetailsState {
|
|
|
33
33
|
* A Table containing all children of tree node specified in path.
|
|
34
34
|
* Used in conjunction with [[Breadcrumb]] to see children of current path.
|
|
35
35
|
* @beta
|
|
36
|
-
* @deprecated
|
|
36
|
+
* @deprecated in 3.0.
|
|
37
37
|
*/
|
|
38
38
|
export declare class BreadcrumbDetails extends React.Component<BreadcrumbDetailsProps, BreadcrumbDetailsState> {
|
|
39
39
|
private _tree;
|
|
@@ -42,7 +42,7 @@ const BreadcrumbTreeUtils_1 = require("./BreadcrumbTreeUtils");
|
|
|
42
42
|
* A Table containing all children of tree node specified in path.
|
|
43
43
|
* Used in conjunction with [[Breadcrumb]] to see children of current path.
|
|
44
44
|
* @beta
|
|
45
|
-
* @deprecated
|
|
45
|
+
* @deprecated in 3.0.
|
|
46
46
|
*/
|
|
47
47
|
class BreadcrumbDetails extends React.Component {
|
|
48
48
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadcrumbDetails.js","sourceRoot":"","sources":["../../../../src/components-react/breadcrumb/BreadcrumbDetails.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,4DAAoC;AACpC,6CAA+B;AAC/B,sDAA4C;AAE5C,oDAA6D;AAE7D,+DAA6I;AAC7I,kDAA+C;AAC/C,mDAEyB;AAEzB,+DAAoG;AA4BpG;;;;;GAKG;AACH,MAAa,iBAAkB,SAAQ,KAAK,CAAC,SAAyD;IAMpG,gBAAgB;IAChB,YAAY,KAA6B;QACvC,KAAK,CAAC,KAAK,CAAC,CAAC;QANP,aAAQ,GAAY,KAAK,CAAC;QAgF1B,mBAAc,GAAG,CAAC,SAA2C,EAAE,EAAE;YACvE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9C,IAAI,IAAI,KAAK,SAAS;gBACpB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC9B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC;QAEM,sBAAiB,GAAG,CAAC,UAA2C,EAAE,EAAE;YAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9C,IAAI,IAAI,KAAK,SAAS,EAAE;gBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aACzB;YACD,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB;gBAC7B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAQ,EAAE,IAAA,uBAAO,EAAe,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC,CAAC;QAC7G,CAAC,CAAC;QAEM,kBAAa,GAAG,GAAG,EAAE;YAC3B,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ;gBACf,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC;QAEM,uBAAkB,GAAG,CAAC,MAAuC,EAAE,EAAE;YACvE,IAAA,oBAAK,EAAE,IAAI,CAAC,KAAa,CAAC,cAAc,EAAE,EAAE,KAAK,IAAI,EAAE;gBACrD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAmBM,gBAAW,GAAG,GAAG,EAAE;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E,CAAC,CAAC;QACM,gBAAW,GAAG,CAAC,IAA+B,EAAE,EAAE;YACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACtF,IAAI,IAAA,8CAA2B,EAAC,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;gBAC/F,qEAAqE;gBACrE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aAChF;YACD,IAAI,IAAA,8CAA2B,EAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE;gBACzF,6DAA6D;gBAC7D,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aAC1E;YACD,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,eAAe,EAAE;gBAC9C,uBAAuB;gBACvB,IAAI,IAAI,CAAC,QAAQ;oBACf,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;wBACxC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,CAAC,CAAC,CAAC;aACN;QACH,CAAC,CAAC;QACM,gBAAW,GAAG,CAAC,IAAiD,EAAE,EAAE;YAC1E,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,uBAAO,EAAe,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAQ,CAAC,CAAC;YAC1H,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAA,uBAAO,EAAe,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpG,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;qBACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;oBAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;aAC7C;YACD,MAAM,KAAK,GAAG,yCAAmB,CAAC,gCAAgC,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI;gBACnG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,2BAAY,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;gBAC7E,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,2BAAY,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE;gBAClE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,2BAAY,CAAC,SAAS,CAAC,wBAAwB,CAAC,EAAE;aAChF,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;YACtC,8DAA8D;YAC9D,IAAI,IAAI,CAAC,QAAQ;gBACf,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC;QAkCF,gEAAgE;QACxD,gBAAW,GAAG,CAAC,KAAiB,EAAE,KAA+B,EAAE,SAAyB,EAAE,EAAE;YACtG,OAAO,oBAAC,aAAK,OAAK,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAI,CAAC;QAC7D,CAAC,CAAC;QAtMA,IAAI,CAAC,KAAK,GAAG;YACX,UAAU,EAAE,IAAA,8CAA2B,EAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;SACrF,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,gBAAgB;IACA,iBAAiB;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,0BAA0B;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,IAAA,8CAA2B,EAAC,YAAY,CAAC,IAAI,YAAY,CAAC,iBAAiB;YAC7E,YAAY,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtE,CAAC;IAED,gBAAgB;IACA,oBAAoB;QAClC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvD,IAAI,IAAA,8CAA2B,EAAC,YAAY,CAAC,IAAI,YAAY,CAAC,iBAAiB;YAC7E,YAAY,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzE,CAAC;IAED,gBAAgB;IACA,kBAAkB,CAAC,SAAiC;QAClE,0BAA0B;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;YACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAChE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpE,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACvE;IACH,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAe;YAC3C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE;YAC/C,6BAA6B,EAAE,iBAAiB,CAAC,2BAA2B;SAC7E,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,kCAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,kCAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,8DAA8D;IAC3G,CAAC;IAED,gBAAgB;IACA,qBAAqB,CAAC,SAAiC,EAAE,SAAiC;QACxG,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,EAAE;YAClD,8CAA8C;YAC9C,OAAO,IAAI,CAAC;SACb;QAED,qBAAqB;QACrB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YACzB,uDAAuD;YACvD,OAAO,KAAK,CAAC;SACd;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,mEAAmE;QACnE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;eAClD,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;eAClC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK;eACpC,CAAC,OAAO,KAAK,SAAS,IAAI,0BAA0B,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/E,CAAC;IAiCO,MAAM,CAAC,2BAA2B,CAAC,IAAkB,EAAE,QAAuD;QACpH,MAAM,IAAI,GAA4B;YACpC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAA,+CAAyB,EAAC,IAAI,CAAC,KAAK,CAAC;YAC3C,KAAK,EAAE;gBACL,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;aAC5B;SACF,CAAC;QACF,IAAI,IAAI,CAAC,IAAI;YACX,IAAI,CAAC,KAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAK,IAAgC,CAAC,WAAW;YAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aAClB,IAAK,IAAsC,CAAC,QAAQ;YACvD,IAAI,CAAC,QAAQ,GAAI,IAAsC,CAAC,QAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtG,OAAO,IAAI,CAAC;IACd,CAAC;IA4CD,gBAAgB;IACA,MAAM;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9C,IAAI,IAAI,EAAE;YACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACvB;SACF;QACD,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACvF,OAAO,CACL,6BAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,+BAA+B,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAEtG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,UAAU;YAC9B,WAAW,CAAC;gBACV,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gBAC9B,cAAc,EAAE,KAAK,EAAE,WAA2C,EAAE,OAAgB,EAAE,EAAE;oBACtF,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;oBAChD,8CAA8C;oBAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;wBACxB,MAAM,GAAG,GAAG,cAAc,CAAC,KAAoB,CAAC;wBAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;qBAC3C;oBACD,OAAO,OAAO,CAAC;gBACjB,CAAC;aACF,EAAE,IAAI,EAAE,UAAU,CAAC,CAElB,CACP,CAAC;IACJ,CAAC;CAMF;AAhND,8CAgNC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Breadcrumb\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { using } from \"@itwin/core-bentley\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\nimport { Table, TableProps } from \"../table/component/Table\";\r\nimport { ColumnDescription, RowItem, TableDataProvider } from \"../table/TableDataProvider\";\r\nimport { DelayLoadedTreeNodeItem, ImmediatelyLoadedTreeNodeItem, isTreeDataProviderInterface, TreeNodeItem } from \"../tree/TreeDataProvider\";\r\nimport { UiComponents } from \"../UiComponents\";\r\nimport {\r\n BeInspireTree, BeInspireTreeEvent, BeInspireTreeNode, BeInspireTreeNodeConfig, BeInspireTreeNodes, MapPayloadToInspireNodeCallback, toNodes,\r\n} from \"./BeInspireTree\";\r\nimport { BreadcrumbPath, BreadcrumbUpdateEventArgs } from \"./BreadcrumbPath\";\r\nimport { BreadcrumbTreeUtils, DataRowItem, getPropertyRecordAsString } from \"./BreadcrumbTreeUtils\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/** Properties for the [[BreadcrumbDetails]] component\r\n * @beta\r\n * @deprecated\r\n */\r\nexport interface BreadcrumbDetailsProps extends CommonProps {\r\n /** Path data object shared by Breadcrumb component */\r\n path: BreadcrumbPath;\r\n columns?: ColumnDescription[];\r\n renderTable?: (props: TableProps, node: TreeNodeItem | undefined, children: TreeNodeItem[]) => React.ReactNode;\r\n /** Callback triggered when child node is loaded with an asynchronous dataProvider. */\r\n onChildrenLoaded?: (parent: TreeNodeItem, children: TreeNodeItem[]) => void;\r\n /** Callback triggered when root nodes are loaded with an asynchronous dataProvider. */\r\n onRootNodesLoaded?: (nodes: TreeNodeItem[]) => void;\r\n /** @internal */\r\n onRender?: () => void;\r\n}\r\n\r\n/** @internal */\r\ninterface BreadcrumbDetailsState {\r\n table?: TableDataProvider;\r\n childNodes?: TreeNodeItem[];\r\n modelReady: boolean;\r\n}\r\n\r\n/**\r\n * A Table containing all children of tree node specified in path.\r\n * Used in conjunction with [[Breadcrumb]] to see children of current path.\r\n * @beta\r\n * @deprecated\r\n */\r\nexport class BreadcrumbDetails extends React.Component<BreadcrumbDetailsProps, BreadcrumbDetailsState> {\r\n private _tree!: BeInspireTree<TreeNodeItem>;\r\n private _mounted: boolean = false;\r\n\r\n public override readonly state: BreadcrumbDetailsState;\r\n\r\n /** @internal */\r\n constructor(props: BreadcrumbDetailsProps) {\r\n super(props);\r\n this.state = {\r\n modelReady: isTreeDataProviderInterface(props.path.getDataProvider()) ? false : true,\r\n };\r\n this._recreateTree();\r\n }\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._mounted = true;\r\n /* istanbul ignore next */\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n const dataProvider = this.props.path.getDataProvider();\r\n const node = this.props.path.getCurrentNode();\r\n this._updateTree(node ? this._tree.node(node.id) : undefined);\r\n if (isTreeDataProviderInterface(dataProvider) && dataProvider.onTreeNodeChanged)\r\n dataProvider.onTreeNodeChanged.addListener(this._treeChange);\r\n this.props.path.BreadcrumbUpdateEvent.addListener(this._pathChange);\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._mounted = false;\r\n this._tree.removeAllListeners();\r\n const dataProvider = this.props.path.getDataProvider();\r\n if (isTreeDataProviderInterface(dataProvider) && dataProvider.onTreeNodeChanged)\r\n dataProvider.onTreeNodeChanged.removeListener(this._treeChange);\r\n this.props.path.BreadcrumbUpdateEvent.removeListener(this._pathChange);\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(prevProps: BreadcrumbDetailsProps) {\r\n /* istanbul ignore next */\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n if (!this.props.path.BreadcrumbUpdateEvent.has(this._pathChange)) {\r\n this.props.path.BreadcrumbUpdateEvent.addListener(this._pathChange);\r\n prevProps.path.BreadcrumbUpdateEvent.removeListener(this._pathChange);\r\n }\r\n }\r\n\r\n private _recreateTree() {\r\n this._tree = new BeInspireTree<TreeNodeItem>({\r\n dataProvider: this.props.path.getDataProvider(),\r\n mapPayloadToInspireNodeConfig: BreadcrumbDetails.inspireNodeFromTreeNodeItem,\r\n });\r\n this._tree.on(BeInspireTreeEvent.ModelLoaded, this._onModelLoaded);\r\n this._tree.on(BeInspireTreeEvent.ChildrenLoaded, this._onChildrenLoaded);\r\n this._tree.ready.then(this._onModelReady); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n\r\n /** @internal */\r\n public override shouldComponentUpdate(nextProps: BreadcrumbDetailsProps, nextState: BreadcrumbDetailsState): boolean {\r\n if (this.state.modelReady !== nextState.modelReady) {\r\n // always render when state.modelReady changes\r\n return true;\r\n }\r\n\r\n // istanbul ignore if\r\n if (!nextState.modelReady) {\r\n // if we got here and model is not ready - don't render\r\n return false;\r\n }\r\n\r\n const cNode = nextProps.path.getCurrentNode();\r\n const current = cNode ? this._tree.node(cNode.id) : undefined;\r\n // otherwise, render when any of the following props / state change\r\n return this.props.renderTable !== nextProps.renderTable\r\n || this.props.path !== nextProps.path\r\n || this.state.table !== nextState.table\r\n || (current !== undefined && /* istanbul ignore next */ current.isDirty());\r\n }\r\n\r\n private _onModelLoaded = (rootNodes: BeInspireTreeNodes<TreeNodeItem>) => {\r\n const node = this.props.path.getCurrentNode();\r\n if (node === undefined)\r\n this._updateTree(undefined);\r\n if (this.props.onRootNodesLoaded)\r\n this.props.onRootNodesLoaded(rootNodes.map((n) => n.payload!));\r\n };\r\n\r\n private _onChildrenLoaded = (parentNode: BeInspireTreeNode<TreeNodeItem>) => {\r\n const node = this.props.path.getCurrentNode();\r\n if (node !== undefined) {\r\n const iNode = this._tree.node(node.id);\r\n this._updateTree(iNode);\r\n }\r\n const children = parentNode.getChildren();\r\n if (this.props.onChildrenLoaded)\r\n this.props.onChildrenLoaded(parentNode.payload!, toNodes<TreeNodeItem>(children).map((c) => c.payload!));\r\n };\r\n\r\n private _onModelReady = () => {\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({ modelReady: true });\r\n };\r\n\r\n private _onTreeNodeChanged = (_items: Array<TreeNodeItem | undefined>) => {\r\n using((this._tree as any).pauseRendering(), async () => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n await this._tree.reload();\r\n });\r\n };\r\n\r\n private static inspireNodeFromTreeNodeItem(item: TreeNodeItem, remapper: MapPayloadToInspireNodeCallback<TreeNodeItem>): BeInspireTreeNodeConfig {\r\n const node: BeInspireTreeNodeConfig = {\r\n id: item.id,\r\n text: getPropertyRecordAsString(item.label),\r\n itree: {\r\n state: { collapsed: false },\r\n },\r\n };\r\n if (item.icon)\r\n node.itree!.icon = item.icon;\r\n if ((item as DelayLoadedTreeNodeItem).hasChildren)\r\n node.children = true;\r\n else if ((item as ImmediatelyLoadedTreeNodeItem).children)\r\n node.children = (item as ImmediatelyLoadedTreeNodeItem).children!.map((p) => remapper(p, remapper));\r\n return node;\r\n }\r\n\r\n private _treeChange = () => {\r\n const currentNode = this.props.path.getCurrentNode();\r\n this._updateTree(currentNode ? this._tree.node(currentNode.id) : undefined);\r\n };\r\n private _pathChange = (args: BreadcrumbUpdateEventArgs) => {\r\n this._updateTree(args.currentNode ? this._tree.node(args.currentNode.id) : undefined);\r\n if (isTreeDataProviderInterface(args.oldDataProvider) && args.oldDataProvider.onTreeNodeChanged) {\r\n // unsubscribe from previous data provider `onTreeNodeChanged` events\r\n args.oldDataProvider.onTreeNodeChanged.removeListener(this._onTreeNodeChanged);\r\n }\r\n if (isTreeDataProviderInterface(args.dataProvider) && args.dataProvider.onTreeNodeChanged) {\r\n // subscribe for new data provider `onTreeNodeChanged` events\r\n args.dataProvider.onTreeNodeChanged.addListener(this._onTreeNodeChanged);\r\n }\r\n if (args.dataProvider !== args.oldDataProvider) {\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({ modelReady: false }, () => {\r\n this._recreateTree();\r\n });\r\n }\r\n };\r\n private _updateTree = (node: BeInspireTreeNode<TreeNodeItem> | undefined) => {\r\n const childNodes = (node ? toNodes<TreeNodeItem>(node.getChildren()) : this._tree.nodes()).map((child) => child.payload!);\r\n if (childNodes.length === 0) {\r\n const parents = node ? toNodes<TreeNodeItem>(node.getParents()).map((child) => child.payload!) : [];\r\n parents.reverse();\r\n if (parents.length > 1)\r\n this.props.path.setCurrentNode(parents[parents.length - 2]);\r\n else if (parents.length === 1)\r\n this.props.path.setCurrentNode(undefined);\r\n }\r\n const table = BreadcrumbTreeUtils.aliasNodeListToTableDataProvider(childNodes, this.props.columns || [\r\n { key: \"icon\", label: UiComponents.translate(\"breadcrumb.icon\"), icon: true },\r\n { key: \"label\", label: UiComponents.translate(\"breadcrumb.name\") },\r\n { key: \"description\", label: UiComponents.translate(\"breadcrumb.description\") },\r\n ], this.props.path.getDataProvider());\r\n // istanbul ignore else hard to control whether mounted or not\r\n if (this._mounted)\r\n this.setState({ table, childNodes });\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const node = this.props.path.getCurrentNode();\r\n if (node) {\r\n const iNode = this._tree.node(node.id);\r\n if (iNode) {\r\n iNode.setDirty(false);\r\n }\r\n }\r\n const { childNodes } = this.state;\r\n const renderTable = this.props.renderTable ? this.props.renderTable : this.renderTable;\r\n return (\r\n <div className={classnames(\"components-breadcrumb-details\", this.props.className)} style={this.props.style}>\r\n {\r\n this.state.table && childNodes &&\r\n renderTable({\r\n dataProvider: this.state.table,\r\n onRowsSelected: async (rowIterator: AsyncIterableIterator<RowItem>, replace: boolean) => {\r\n const iteratorResult = await rowIterator.next();\r\n // istanbul ignore else should always be false\r\n if (!iteratorResult.done) {\r\n const row = iteratorResult.value as DataRowItem;\r\n this.props.path.setCurrentNode(row._node);\r\n }\r\n return replace;\r\n },\r\n }, node, childNodes)\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private renderTable = (props: TableProps, _node: TreeNodeItem | undefined, _children: TreeNodeItem[]) => {\r\n return <Table {...props} onRender={this.props.onRender} />;\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"BreadcrumbDetails.js","sourceRoot":"","sources":["../../../../src/components-react/breadcrumb/BreadcrumbDetails.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Breadcrumb\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { using } from \"@itwin/core-bentley\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\nimport { Table, TableProps } from \"../table/component/Table\";\r\nimport { ColumnDescription, RowItem, TableDataProvider } from \"../table/TableDataProvider\";\r\nimport { DelayLoadedTreeNodeItem, ImmediatelyLoadedTreeNodeItem, isTreeDataProviderInterface, TreeNodeItem } from \"../tree/TreeDataProvider\";\r\nimport { UiComponents } from \"../UiComponents\";\r\nimport {\r\n BeInspireTree, BeInspireTreeEvent, BeInspireTreeNode, BeInspireTreeNodeConfig, BeInspireTreeNodes, MapPayloadToInspireNodeCallback, toNodes,\r\n} from \"./BeInspireTree\";\r\nimport { BreadcrumbPath, BreadcrumbUpdateEventArgs } from \"./BreadcrumbPath\";\r\nimport { BreadcrumbTreeUtils, DataRowItem, getPropertyRecordAsString } from \"./BreadcrumbTreeUtils\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/** Properties for the [[BreadcrumbDetails]] component\r\n * @beta\r\n * @deprecated in 3.0.\r\n */\r\nexport interface BreadcrumbDetailsProps extends CommonProps {\r\n /** Path data object shared by Breadcrumb component */\r\n path: BreadcrumbPath;\r\n columns?: ColumnDescription[];\r\n renderTable?: (props: TableProps, node: TreeNodeItem | undefined, children: TreeNodeItem[]) => React.ReactNode;\r\n /** Callback triggered when child node is loaded with an asynchronous dataProvider. */\r\n onChildrenLoaded?: (parent: TreeNodeItem, children: TreeNodeItem[]) => void;\r\n /** Callback triggered when root nodes are loaded with an asynchronous dataProvider. */\r\n onRootNodesLoaded?: (nodes: TreeNodeItem[]) => void;\r\n /** @internal */\r\n onRender?: () => void;\r\n}\r\n\r\n/** @internal */\r\ninterface BreadcrumbDetailsState {\r\n table?: TableDataProvider;\r\n childNodes?: TreeNodeItem[];\r\n modelReady: boolean;\r\n}\r\n\r\n/**\r\n * A Table containing all children of tree node specified in path.\r\n * Used in conjunction with [[Breadcrumb]] to see children of current path.\r\n * @beta\r\n * @deprecated in 3.0.\r\n */\r\nexport class BreadcrumbDetails extends React.Component<BreadcrumbDetailsProps, BreadcrumbDetailsState> {\r\n private _tree!: BeInspireTree<TreeNodeItem>;\r\n private _mounted: boolean = false;\r\n\r\n public override readonly state: BreadcrumbDetailsState;\r\n\r\n /** @internal */\r\n constructor(props: BreadcrumbDetailsProps) {\r\n super(props);\r\n this.state = {\r\n modelReady: isTreeDataProviderInterface(props.path.getDataProvider()) ? false : true,\r\n };\r\n this._recreateTree();\r\n }\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._mounted = true;\r\n /* istanbul ignore next */\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n const dataProvider = this.props.path.getDataProvider();\r\n const node = this.props.path.getCurrentNode();\r\n this._updateTree(node ? this._tree.node(node.id) : undefined);\r\n if (isTreeDataProviderInterface(dataProvider) && dataProvider.onTreeNodeChanged)\r\n dataProvider.onTreeNodeChanged.addListener(this._treeChange);\r\n this.props.path.BreadcrumbUpdateEvent.addListener(this._pathChange);\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._mounted = false;\r\n this._tree.removeAllListeners();\r\n const dataProvider = this.props.path.getDataProvider();\r\n if (isTreeDataProviderInterface(dataProvider) && dataProvider.onTreeNodeChanged)\r\n dataProvider.onTreeNodeChanged.removeListener(this._treeChange);\r\n this.props.path.BreadcrumbUpdateEvent.removeListener(this._pathChange);\r\n }\r\n\r\n /** @internal */\r\n public override componentDidUpdate(prevProps: BreadcrumbDetailsProps) {\r\n /* istanbul ignore next */\r\n if (this.props.onRender)\r\n this.props.onRender();\r\n if (!this.props.path.BreadcrumbUpdateEvent.has(this._pathChange)) {\r\n this.props.path.BreadcrumbUpdateEvent.addListener(this._pathChange);\r\n prevProps.path.BreadcrumbUpdateEvent.removeListener(this._pathChange);\r\n }\r\n }\r\n\r\n private _recreateTree() {\r\n this._tree = new BeInspireTree<TreeNodeItem>({\r\n dataProvider: this.props.path.getDataProvider(),\r\n mapPayloadToInspireNodeConfig: BreadcrumbDetails.inspireNodeFromTreeNodeItem,\r\n });\r\n this._tree.on(BeInspireTreeEvent.ModelLoaded, this._onModelLoaded);\r\n this._tree.on(BeInspireTreeEvent.ChildrenLoaded, this._onChildrenLoaded);\r\n this._tree.ready.then(this._onModelReady); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n }\r\n\r\n /** @internal */\r\n public override shouldComponentUpdate(nextProps: BreadcrumbDetailsProps, nextState: BreadcrumbDetailsState): boolean {\r\n if (this.state.modelReady !== nextState.modelReady) {\r\n // always render when state.modelReady changes\r\n return true;\r\n }\r\n\r\n // istanbul ignore if\r\n if (!nextState.modelReady) {\r\n // if we got here and model is not ready - don't render\r\n return false;\r\n }\r\n\r\n const cNode = nextProps.path.getCurrentNode();\r\n const current = cNode ? this._tree.node(cNode.id) : undefined;\r\n // otherwise, render when any of the following props / state change\r\n return this.props.renderTable !== nextProps.renderTable\r\n || this.props.path !== nextProps.path\r\n || this.state.table !== nextState.table\r\n || (current !== undefined && /* istanbul ignore next */ current.isDirty());\r\n }\r\n\r\n private _onModelLoaded = (rootNodes: BeInspireTreeNodes<TreeNodeItem>) => {\r\n const node = this.props.path.getCurrentNode();\r\n if (node === undefined)\r\n this._updateTree(undefined);\r\n if (this.props.onRootNodesLoaded)\r\n this.props.onRootNodesLoaded(rootNodes.map((n) => n.payload!));\r\n };\r\n\r\n private _onChildrenLoaded = (parentNode: BeInspireTreeNode<TreeNodeItem>) => {\r\n const node = this.props.path.getCurrentNode();\r\n if (node !== undefined) {\r\n const iNode = this._tree.node(node.id);\r\n this._updateTree(iNode);\r\n }\r\n const children = parentNode.getChildren();\r\n if (this.props.onChildrenLoaded)\r\n this.props.onChildrenLoaded(parentNode.payload!, toNodes<TreeNodeItem>(children).map((c) => c.payload!));\r\n };\r\n\r\n private _onModelReady = () => {\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({ modelReady: true });\r\n };\r\n\r\n private _onTreeNodeChanged = (_items: Array<TreeNodeItem | undefined>) => {\r\n using((this._tree as any).pauseRendering(), async () => { // eslint-disable-line @typescript-eslint/no-floating-promises\r\n await this._tree.reload();\r\n });\r\n };\r\n\r\n private static inspireNodeFromTreeNodeItem(item: TreeNodeItem, remapper: MapPayloadToInspireNodeCallback<TreeNodeItem>): BeInspireTreeNodeConfig {\r\n const node: BeInspireTreeNodeConfig = {\r\n id: item.id,\r\n text: getPropertyRecordAsString(item.label),\r\n itree: {\r\n state: { collapsed: false },\r\n },\r\n };\r\n if (item.icon)\r\n node.itree!.icon = item.icon;\r\n if ((item as DelayLoadedTreeNodeItem).hasChildren)\r\n node.children = true;\r\n else if ((item as ImmediatelyLoadedTreeNodeItem).children)\r\n node.children = (item as ImmediatelyLoadedTreeNodeItem).children!.map((p) => remapper(p, remapper));\r\n return node;\r\n }\r\n\r\n private _treeChange = () => {\r\n const currentNode = this.props.path.getCurrentNode();\r\n this._updateTree(currentNode ? this._tree.node(currentNode.id) : undefined);\r\n };\r\n private _pathChange = (args: BreadcrumbUpdateEventArgs) => {\r\n this._updateTree(args.currentNode ? this._tree.node(args.currentNode.id) : undefined);\r\n if (isTreeDataProviderInterface(args.oldDataProvider) && args.oldDataProvider.onTreeNodeChanged) {\r\n // unsubscribe from previous data provider `onTreeNodeChanged` events\r\n args.oldDataProvider.onTreeNodeChanged.removeListener(this._onTreeNodeChanged);\r\n }\r\n if (isTreeDataProviderInterface(args.dataProvider) && args.dataProvider.onTreeNodeChanged) {\r\n // subscribe for new data provider `onTreeNodeChanged` events\r\n args.dataProvider.onTreeNodeChanged.addListener(this._onTreeNodeChanged);\r\n }\r\n if (args.dataProvider !== args.oldDataProvider) {\r\n // istanbul ignore else\r\n if (this._mounted)\r\n this.setState({ modelReady: false }, () => {\r\n this._recreateTree();\r\n });\r\n }\r\n };\r\n private _updateTree = (node: BeInspireTreeNode<TreeNodeItem> | undefined) => {\r\n const childNodes = (node ? toNodes<TreeNodeItem>(node.getChildren()) : this._tree.nodes()).map((child) => child.payload!);\r\n if (childNodes.length === 0) {\r\n const parents = node ? toNodes<TreeNodeItem>(node.getParents()).map((child) => child.payload!) : [];\r\n parents.reverse();\r\n if (parents.length > 1)\r\n this.props.path.setCurrentNode(parents[parents.length - 2]);\r\n else if (parents.length === 1)\r\n this.props.path.setCurrentNode(undefined);\r\n }\r\n const table = BreadcrumbTreeUtils.aliasNodeListToTableDataProvider(childNodes, this.props.columns || [\r\n { key: \"icon\", label: UiComponents.translate(\"breadcrumb.icon\"), icon: true },\r\n { key: \"label\", label: UiComponents.translate(\"breadcrumb.name\") },\r\n { key: \"description\", label: UiComponents.translate(\"breadcrumb.description\") },\r\n ], this.props.path.getDataProvider());\r\n // istanbul ignore else hard to control whether mounted or not\r\n if (this._mounted)\r\n this.setState({ table, childNodes });\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const node = this.props.path.getCurrentNode();\r\n if (node) {\r\n const iNode = this._tree.node(node.id);\r\n if (iNode) {\r\n iNode.setDirty(false);\r\n }\r\n }\r\n const { childNodes } = this.state;\r\n const renderTable = this.props.renderTable ? this.props.renderTable : this.renderTable;\r\n return (\r\n <div className={classnames(\"components-breadcrumb-details\", this.props.className)} style={this.props.style}>\r\n {\r\n this.state.table && childNodes &&\r\n renderTable({\r\n dataProvider: this.state.table,\r\n onRowsSelected: async (rowIterator: AsyncIterableIterator<RowItem>, replace: boolean) => {\r\n const iteratorResult = await rowIterator.next();\r\n // istanbul ignore else should always be false\r\n if (!iteratorResult.done) {\r\n const row = iteratorResult.value as DataRowItem;\r\n this.props.path.setCurrentNode(row._node);\r\n }\r\n return replace;\r\n },\r\n }, node, childNodes)\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private renderTable = (props: TableProps, _node: TreeNodeItem | undefined, _children: TreeNodeItem[]) => {\r\n return <Table {...props} onRender={this.props.onRender} />;\r\n };\r\n}\r\n"]}
|
|
@@ -5,7 +5,7 @@ import { UiEvent } from "@itwin/core-react";
|
|
|
5
5
|
import { TreeDataProvider, TreeNodeItem } from "../tree/TreeDataProvider";
|
|
6
6
|
/** BreadcrumbChangeEvent Event Args class.
|
|
7
7
|
* @beta
|
|
8
|
-
* @deprecated
|
|
8
|
+
* @deprecated in 3.0.
|
|
9
9
|
*/
|
|
10
10
|
export interface BreadcrumbUpdateEventArgs {
|
|
11
11
|
dataProvider: TreeDataProvider;
|
|
@@ -14,13 +14,13 @@ export interface BreadcrumbUpdateEventArgs {
|
|
|
14
14
|
}
|
|
15
15
|
/** BreadcrumbChangeEvent Event class.
|
|
16
16
|
* @beta
|
|
17
|
-
* @deprecated
|
|
17
|
+
* @deprecated in 3.0.
|
|
18
18
|
*/
|
|
19
19
|
export declare class BreadcrumbUpdateEvent extends UiEvent<BreadcrumbUpdateEventArgs> {
|
|
20
20
|
}
|
|
21
21
|
/** Breadcrumb Path class.
|
|
22
22
|
* @beta
|
|
23
|
-
* @deprecated
|
|
23
|
+
* @deprecated in 3.0.
|
|
24
24
|
*/
|
|
25
25
|
export declare class BreadcrumbPath {
|
|
26
26
|
private _dataProvider;
|
|
@@ -12,14 +12,14 @@ exports.BreadcrumbPath = exports.BreadcrumbUpdateEvent = void 0;
|
|
|
12
12
|
const core_react_1 = require("@itwin/core-react");
|
|
13
13
|
/** BreadcrumbChangeEvent Event class.
|
|
14
14
|
* @beta
|
|
15
|
-
* @deprecated
|
|
15
|
+
* @deprecated in 3.0.
|
|
16
16
|
*/
|
|
17
17
|
class BreadcrumbUpdateEvent extends core_react_1.UiEvent {
|
|
18
18
|
}
|
|
19
19
|
exports.BreadcrumbUpdateEvent = BreadcrumbUpdateEvent;
|
|
20
20
|
/** Breadcrumb Path class.
|
|
21
21
|
* @beta
|
|
22
|
-
* @deprecated
|
|
22
|
+
* @deprecated in 3.0.
|
|
23
23
|
*/
|
|
24
24
|
class BreadcrumbPath {
|
|
25
25
|
constructor(dataProvider) {
|