@itwin/components-react 4.3.0-dev.1 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/lib/cjs/components-react/common/DelayedSpinner.js +3 -2
  3. package/lib/cjs/components-react/common/DelayedSpinner.js.map +1 -1
  4. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js +2 -1
  5. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  6. package/lib/cjs/components-react/converters/NumericTypeConverter.js +4 -2
  7. package/lib/cjs/components-react/converters/NumericTypeConverter.js.map +1 -1
  8. package/lib/cjs/components-react/converters/TypeConverter.js +2 -1
  9. package/lib/cjs/components-react/converters/TypeConverter.js.map +1 -1
  10. package/lib/cjs/components-react/editors/CustomNumberEditor.js +8 -6
  11. package/lib/cjs/components-react/editors/CustomNumberEditor.js.map +1 -1
  12. package/lib/cjs/components-react/editors/DateTimeEditor.js +3 -2
  13. package/lib/cjs/components-react/editors/DateTimeEditor.js.map +1 -1
  14. package/lib/cjs/components-react/editors/PopupButton.js +4 -3
  15. package/lib/cjs/components-react/editors/PopupButton.js.map +1 -1
  16. package/lib/cjs/components-react/editors/TextEditor.js +4 -2
  17. package/lib/cjs/components-react/editors/TextEditor.js.map +1 -1
  18. package/lib/cjs/components-react/favorite/FavoritePropertyList.js +3 -3
  19. package/lib/cjs/components-react/favorite/FavoritePropertyList.js.map +1 -1
  20. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +2 -1
  21. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  22. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js +3 -3
  23. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  24. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +1 -1
  25. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  26. package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js +4 -3
  27. package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  28. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js +1 -1
  29. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  30. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.js +3 -2
  31. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  32. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.js +4 -4
  33. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  34. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js +2 -1
  35. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  36. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js +6 -3
  37. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  38. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js +2 -1
  39. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  40. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js +6 -3
  41. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  42. package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js +2 -1
  43. package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  44. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +2 -1
  45. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  46. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js +2 -1
  47. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  48. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js +2 -2
  49. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  50. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js +54 -48
  51. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  52. package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js +13 -11
  53. package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  54. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js +2 -2
  55. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  56. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js +2 -1
  57. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  58. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js +2 -1
  59. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  60. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +2 -2
  61. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  62. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js +3 -2
  63. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  64. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +1 -1
  65. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  66. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js +1 -1
  67. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  68. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +7 -5
  69. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  70. package/lib/cjs/components-react/selectable-content/SelectableContent.js +3 -2
  71. package/lib/cjs/components-react/selectable-content/SelectableContent.js.map +1 -1
  72. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js +4 -3
  73. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  74. package/lib/cjs/components-react/tree/controlled/TreeModel.js +8 -7
  75. package/lib/cjs/components-react/tree/controlled/TreeModel.js.map +1 -1
  76. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js +8 -6
  77. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  78. package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js +2 -1
  79. package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  80. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js +4 -2
  81. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  82. package/lib/esm/components-react/common/DelayedSpinner.js +3 -2
  83. package/lib/esm/components-react/common/DelayedSpinner.js.map +1 -1
  84. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js +2 -1
  85. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  86. package/lib/esm/components-react/converters/NumericTypeConverter.js +4 -2
  87. package/lib/esm/components-react/converters/NumericTypeConverter.js.map +1 -1
  88. package/lib/esm/components-react/converters/TypeConverter.js +2 -1
  89. package/lib/esm/components-react/converters/TypeConverter.js.map +1 -1
  90. package/lib/esm/components-react/editors/CustomNumberEditor.js +8 -6
  91. package/lib/esm/components-react/editors/CustomNumberEditor.js.map +1 -1
  92. package/lib/esm/components-react/editors/DateTimeEditor.js +3 -2
  93. package/lib/esm/components-react/editors/DateTimeEditor.js.map +1 -1
  94. package/lib/esm/components-react/editors/PopupButton.js +4 -3
  95. package/lib/esm/components-react/editors/PopupButton.js.map +1 -1
  96. package/lib/esm/components-react/editors/TextEditor.js +4 -2
  97. package/lib/esm/components-react/editors/TextEditor.js.map +1 -1
  98. package/lib/esm/components-react/favorite/FavoritePropertyList.js +3 -3
  99. package/lib/esm/components-react/favorite/FavoritePropertyList.js.map +1 -1
  100. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +2 -1
  101. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  102. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js +3 -3
  103. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  104. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +1 -1
  105. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  106. package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js +4 -3
  107. package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  108. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js +1 -1
  109. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  110. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.js +3 -2
  111. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  112. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js +4 -4
  113. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  114. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js +2 -1
  115. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  116. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js +6 -3
  117. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  118. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js +2 -1
  119. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  120. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js +6 -3
  121. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  122. package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js +2 -1
  123. package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  124. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +2 -1
  125. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  126. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js +2 -1
  127. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  128. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js +2 -2
  129. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  130. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js +54 -48
  131. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  132. package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js +13 -11
  133. package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  134. package/lib/esm/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js +2 -2
  135. package/lib/esm/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  136. package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js +2 -1
  137. package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  138. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js +2 -1
  139. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  140. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +2 -2
  141. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  142. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js +3 -2
  143. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  144. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +1 -1
  145. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  146. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js +1 -1
  147. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  148. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +7 -5
  149. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  150. package/lib/esm/components-react/selectable-content/SelectableContent.js +3 -2
  151. package/lib/esm/components-react/selectable-content/SelectableContent.js.map +1 -1
  152. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js +4 -3
  153. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  154. package/lib/esm/components-react/tree/controlled/TreeModel.js +8 -7
  155. package/lib/esm/components-react/tree/controlled/TreeModel.js.map +1 -1
  156. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js +8 -6
  157. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  158. package/lib/esm/components-react/tree/controlled/internal/SparseTree.js +2 -1
  159. package/lib/esm/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  160. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js +4 -2
  161. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  162. package/package.json +3 -3
@@ -34,6 +34,7 @@ const ACTION_BUTTON_DEFAULT_WIDTH = 90;
34
34
  export class VirtualizedPropertyGrid extends React.Component {
35
35
  /** @internal */
36
36
  constructor(props) {
37
+ var _a;
37
38
  super(props);
38
39
  this._listRef = React.createRef();
39
40
  this._handleNodeHeightChange = (index, key, newHeight) => {
@@ -67,13 +68,14 @@ export class VirtualizedPropertyGrid extends React.Component {
67
68
  };
68
69
  this.state = {
69
70
  gridItems: [],
70
- orientation: props.orientation ?? Orientation.Horizontal,
71
+ orientation: (_a = props.orientation) !== null && _a !== void 0 ? _a : Orientation.Horizontal,
71
72
  dynamicNodeHeights: new Map(),
72
73
  resetIndex: 0,
73
74
  };
74
75
  }
75
76
  /** @internal */
76
77
  componentDidUpdate(prevProps, prevState) {
78
+ var _a;
77
79
  if (this.props.orientation !== prevProps.orientation ||
78
80
  this.props.isOrientationFixed !== prevProps.isOrientationFixed ||
79
81
  this.props.horizontalOrientationMinWidth !==
@@ -86,7 +88,7 @@ export class VirtualizedPropertyGrid extends React.Component {
86
88
  this._listRef.current.resetAfterIndex(0);
87
89
  }
88
90
  if (this.props.highlight !== prevProps.highlight &&
89
- this.props.highlight?.activeHighlight &&
91
+ ((_a = this.props.highlight) === null || _a === void 0 ? void 0 : _a.activeHighlight) &&
90
92
  this.state.gridItems.length !== 0) {
91
93
  let index = 0;
92
94
  let foundMatchingItem = false;
@@ -174,51 +176,55 @@ export class VirtualizedPropertyGrid extends React.Component {
174
176
  }
175
177
  /** @internal */
176
178
  render() {
177
- const defaultActionButtonWidth = (this.props.actionButtonRenderers?.length ?? 0) > 0
179
+ var _a, _b;
180
+ const defaultActionButtonWidth = ((_b = (_a = this.props.actionButtonRenderers) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0
178
181
  ? ACTION_BUTTON_DEFAULT_WIDTH
179
182
  : undefined;
180
183
  return (React.createElement(ColumnResizingPropertyListPropsSupplier, { orientation: this.state.orientation, width: this.props.width, minLabelWidth: this.props.minLabelWidth, minValueWidth: this.props.minValueWidth, actionButtonWidth: this.props.actionButtonWidth !== undefined
181
184
  ? this.props.actionButtonWidth
182
- : defaultActionButtonWidth, maxPropertyDepth: this._getMaxItemDepth() }, (columnResizeContext) => (React.createElement(PropertyGridEventsRelatedPropsSupplier, { isPropertySelectionEnabled: this.props.isPropertySelectionEnabled ?? false, isPropertySelectionOnRightClickEnabled: this.props.isPropertySelectionOnRightClickEnabled, isPropertyEditingEnabled: this.props.isPropertyEditingEnabled, onPropertyContextMenu: this.props.onPropertyContextMenu, onPropertyUpdated: this.props.onPropertyUpdated, onPropertySelectionChanged: this.props.onPropertySelectionChanged, isPropertyHoverEnabled: this.props.isPropertyHoverEnabled ?? false }, (selectionContext) => {
183
- const gridContext = {
184
- orientation: columnResizeContext.orientation,
185
- gridWidth: this.props.width,
186
- isPropertyHoverEnabled: selectionContext.isPropertyHoverEnabled,
187
- isPropertySelectionEnabled: selectionContext.isPropertySelectionEnabled,
188
- selectedPropertyKey: selectionContext.selectedPropertyKey,
189
- onPropertyClicked: selectionContext.onPropertyClicked,
190
- onPropertyRightClicked: selectionContext.onPropertyRightClicked,
191
- onPropertyContextMenu: selectionContext.onPropertyContextMenu,
192
- editingPropertyKey: selectionContext.editingPropertyKey,
193
- onEditCommit: selectionContext.onEditCommit,
194
- onEditCancel: selectionContext.onEditCancel,
195
- eventHandler: this.props.eventHandler,
196
- dataProvider: this.props.dataProvider,
197
- actionButtonRenderers: this.props.actionButtonRenderers,
198
- propertyValueRendererManager: this.props.propertyValueRendererManager,
199
- propertyCategoryRendererManager: this.props.propertyCategoryRendererManager,
200
- columnRatio: columnResizeContext.columnRatio,
201
- columnInfo: columnResizeContext.columnInfo,
202
- isResizeHandleBeingDragged: columnResizeContext.isResizeHandleBeingDragged,
203
- isResizeHandleHovered: columnResizeContext.isResizeHandleHovered,
204
- onColumnRatioChanged: columnResizeContext.onColumnChanged,
205
- onResizeHandleDragChanged: columnResizeContext.onResizeHandleDragChanged,
206
- onResizeHandleHoverChanged: columnResizeContext.onResizeHandleHoverChanged,
207
- highlight: this.props.highlight,
208
- };
209
- const renderContext = {
210
- gridItems: this.state.gridItems,
211
- gridEventHandler: this.props.eventHandler,
212
- gridModel: this.props.model,
213
- style: this.props.style,
214
- className: this.props.className,
215
- onItemHeightChanged: this._handleNodeHeightChange,
216
- gridContext,
217
- };
218
- return (React.createElement(PropertyGridInternalContextProvider, { value: renderContext },
219
- React.createElement("div", { className: classnames("components-virtualized-property-grid", "components-smallEditor-host") },
220
- React.createElement(VariableSizeList, { className: classnames("components-property-grid-wrapper", "ReactWindow__VariableSizeList", this.props.className), width: this.props.width, height: this.props.height, itemCount: this.state.gridItems.length, itemSize: this._calculateNodeHeightByIndex, estimatedItemSize: this.calculateEstimatedHeight(), overscanCount: 10, layout: "vertical", style: this.props.style, itemKey: this._getNodeKey, ref: this._listRef }, FlatGridItemNode))));
221
- }))));
185
+ : defaultActionButtonWidth, maxPropertyDepth: this._getMaxItemDepth() }, (columnResizeContext) => {
186
+ var _a, _b;
187
+ return (React.createElement(PropertyGridEventsRelatedPropsSupplier, { isPropertySelectionEnabled: (_a = this.props.isPropertySelectionEnabled) !== null && _a !== void 0 ? _a : false, isPropertySelectionOnRightClickEnabled: this.props.isPropertySelectionOnRightClickEnabled, isPropertyEditingEnabled: this.props.isPropertyEditingEnabled, onPropertyContextMenu: this.props.onPropertyContextMenu, onPropertyUpdated: this.props.onPropertyUpdated, onPropertySelectionChanged: this.props.onPropertySelectionChanged, isPropertyHoverEnabled: (_b = this.props.isPropertyHoverEnabled) !== null && _b !== void 0 ? _b : false }, (selectionContext) => {
188
+ const gridContext = {
189
+ orientation: columnResizeContext.orientation,
190
+ gridWidth: this.props.width,
191
+ isPropertyHoverEnabled: selectionContext.isPropertyHoverEnabled,
192
+ isPropertySelectionEnabled: selectionContext.isPropertySelectionEnabled,
193
+ selectedPropertyKey: selectionContext.selectedPropertyKey,
194
+ onPropertyClicked: selectionContext.onPropertyClicked,
195
+ onPropertyRightClicked: selectionContext.onPropertyRightClicked,
196
+ onPropertyContextMenu: selectionContext.onPropertyContextMenu,
197
+ editingPropertyKey: selectionContext.editingPropertyKey,
198
+ onEditCommit: selectionContext.onEditCommit,
199
+ onEditCancel: selectionContext.onEditCancel,
200
+ eventHandler: this.props.eventHandler,
201
+ dataProvider: this.props.dataProvider,
202
+ actionButtonRenderers: this.props.actionButtonRenderers,
203
+ propertyValueRendererManager: this.props.propertyValueRendererManager,
204
+ propertyCategoryRendererManager: this.props.propertyCategoryRendererManager,
205
+ columnRatio: columnResizeContext.columnRatio,
206
+ columnInfo: columnResizeContext.columnInfo,
207
+ isResizeHandleBeingDragged: columnResizeContext.isResizeHandleBeingDragged,
208
+ isResizeHandleHovered: columnResizeContext.isResizeHandleHovered,
209
+ onColumnRatioChanged: columnResizeContext.onColumnChanged,
210
+ onResizeHandleDragChanged: columnResizeContext.onResizeHandleDragChanged,
211
+ onResizeHandleHoverChanged: columnResizeContext.onResizeHandleHoverChanged,
212
+ highlight: this.props.highlight,
213
+ };
214
+ const renderContext = {
215
+ gridItems: this.state.gridItems,
216
+ gridEventHandler: this.props.eventHandler,
217
+ gridModel: this.props.model,
218
+ style: this.props.style,
219
+ className: this.props.className,
220
+ onItemHeightChanged: this._handleNodeHeightChange,
221
+ gridContext,
222
+ };
223
+ return (React.createElement(PropertyGridInternalContextProvider, { value: renderContext },
224
+ React.createElement("div", { className: classnames("components-virtualized-property-grid", "components-smallEditor-host") },
225
+ React.createElement(VariableSizeList, { className: classnames("components-property-grid-wrapper", "ReactWindow__VariableSizeList", this.props.className), width: this.props.width, height: this.props.height, itemCount: this.state.gridItems.length, itemSize: this._calculateNodeHeightByIndex, estimatedItemSize: this.calculateEstimatedHeight(), overscanCount: 10, layout: "vertical", style: this.props.style, itemKey: this._getNodeKey, ref: this._listRef }, FlatGridItemNode))));
226
+ }));
227
+ }));
222
228
  }
223
229
  }
224
230
  /**
@@ -235,17 +241,17 @@ const FlatGridItemNode = React.memo(({ index, style: virtualizedListStyle }) =>
235
241
  const onExpansionToggled = React.useCallback(() => gridEventHandler.onExpansionToggled(node.selectionKey), [gridEventHandler, node.selectionKey]);
236
242
  const onHeightChanged = React.useCallback((newHeight) => onItemHeightChanged(index, node.key, newHeight), [onItemHeightChanged, index, node.key]);
237
243
  function getDisplayNode() {
244
+ var _a, _b, _c, _d, _e, _f, _g;
238
245
  const lastInNumberOfCategories = node.lastInNumberOfCategories;
239
246
  switch (node.type) {
240
247
  case FlatGridItemType.Category:
241
- const categoryRendererManager = gridContext.propertyCategoryRendererManager ??
242
- PropertyCategoryRendererManager.defaultManager;
248
+ const categoryRendererManager = (_a = gridContext.propertyCategoryRendererManager) !== null && _a !== void 0 ? _a : PropertyCategoryRendererManager.defaultManager;
243
249
  const customRenderer = categoryRendererManager.getCategoryComponent(node);
244
250
  const wrapperClassName = classnames("virtualized-grid-node-content", customRenderer !== undefined
245
251
  ? "virtualized-grid-node-custom-category"
246
252
  : "virtualized-grid-node-category");
247
253
  return (React.createElement(FlatItemNestedBorderWrapper, { borderCount: node.depth, bottomBorderCount: lastInNumberOfCategories, className: wrapperClassName },
248
- React.createElement(PropertyCategoryBlock, { className: className, style: style, category: node.derivedCategory, onExpansionToggled: onExpansionToggled, highlight: gridContext.highlight?.filteredTypes?.includes(FilteredType.Category)
254
+ React.createElement(PropertyCategoryBlock, { className: className, style: style, category: node.derivedCategory, onExpansionToggled: onExpansionToggled, highlight: ((_c = (_b = gridContext.highlight) === null || _b === void 0 ? void 0 : _b.filteredTypes) === null || _c === void 0 ? void 0 : _c.includes(FilteredType.Category))
249
255
  ? gridContext.highlight
250
256
  : undefined }, customRenderer !== undefined && (React.createElement(CustomCategoryContent, { renderer: customRenderer, categoryItem: node, gridContext: gridContext, onHeightChanged: onHeightChanged })))));
251
257
  case FlatGridItemType.Array:
@@ -260,8 +266,8 @@ const FlatGridItemNode = React.memo(({ index, style: virtualizedListStyle }) =>
260
266
  ? gridContext.onPropertyRightClicked
261
267
  : undefined, onContextMenu: gridContext.onPropertyContextMenu, category: parentCategoryItem.derivedCategory, isEditing: selectionKey === gridContext.editingPropertyKey, onEditCommit: gridContext.onEditCommit, onEditCancel: gridContext.onEditCancel, isExpanded: node.isExpanded, onExpansionToggled: onExpansionToggled, onHeightChanged: onHeightChanged, actionButtonRenderers: gridContext.actionButtonRenderers, propertyValueRendererManager: gridContext.propertyValueRendererManager, columnRatio: gridContext.columnRatio, columnInfo: gridContext.columnInfo, isResizeHandleBeingDragged: gridContext.isResizeHandleBeingDragged, isResizeHandleHovered: gridContext.isResizeHandleHovered, onColumnRatioChanged: gridContext.onColumnRatioChanged, onResizeHandleDragChanged: gridContext.onResizeHandleDragChanged, onResizeHandleHoverChanged: gridContext.onResizeHandleHoverChanged, highlight: gridContext.highlight
262
268
  ? {
263
- applyOnLabel: gridContext.highlight.filteredTypes?.includes(FilteredType.Label) ?? false,
264
- applyOnValue: gridContext.highlight.filteredTypes?.includes(FilteredType.Value) ?? false,
269
+ applyOnLabel: (_e = (_d = gridContext.highlight.filteredTypes) === null || _d === void 0 ? void 0 : _d.includes(FilteredType.Label)) !== null && _e !== void 0 ? _e : false,
270
+ applyOnValue: (_g = (_f = gridContext.highlight.filteredTypes) === null || _f === void 0 ? void 0 : _f.includes(FilteredType.Value)) !== null && _g !== void 0 ? _g : false,
265
271
  ...gridContext.highlight,
266
272
  }
267
273
  : undefined })));
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizedPropertyGrid.js","sourceRoot":"","sources":["../../../../../src/components-react/propertygrid/component/VirtualizedPropertyGrid.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG;;GAEG;AACH,OAAO,gCAAgC,CAAC;AACxC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AAKlG,OAAO,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AAKnF,OAAO,EAAE,mCAAmC,EAAE,MAAM,4DAA4D,CAAC;AACjH,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAIxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AAKrF,OAAO,EAAE,uCAAuC,EAAE,MAAM,2CAA2C,CAAC;AACpG,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sCAAsC,EAAE,MAAM,0CAA0C,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AA+FjF,MAAM,CACJ,mCAAmC,EACnC,oCAAoC,EACpC,8BAA8B,EAC/B,GAAG,kCAAkC,CACpC,6BAA6B,CAC9B,CAAC;AAEF,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAEvC;;;GAGG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK,CAAC,SAGlD;IAGC,gBAAgB;IAChB,YAAY,KAAmC;QAC7C,KAAK,CAAC,KAAK,CAAC,CAAC;QAJP,aAAQ,GAAG,KAAK,CAAC,SAAS,EAAoB,CAAC;QA+I/C,4BAAuB,GAAG,CAChC,KAAa,EACb,GAAW,EACX,SAAiB,EACjB,EAAE;YACF,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;gBACxD,OAAO;aACR;YAED,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtB,OAAO;oBACL,GAAG,KAAK;oBACR,kBAAkB,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CACvD,GAAG,EACH,SAAS,CACV;oBACD,UAAU,EAAE,KAAK;iBAClB,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,gCAA2B,GAAG,CAAC,KAAa,EAAE,EAAE;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC;QAUM,gBAAW,GAAG,CAAC,KAAa,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC,CAAC;QAEM,qBAAgB,GAAG,GAAG,EAAE;YAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACvC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;oBACtB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;iBACpB;aACF;YACD,OAAO,KAAK,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC;QAzLA,IAAI,CAAC,KAAK,GAAG;YACX,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU;YACxD,kBAAkB,EAAE,IAAI,GAAG,EAAE;YAC7B,UAAU,EAAE,CAAC;SACd,CAAC;IACJ,CAAC;IAED,gBAAgB;IACA,kBAAkB,CAChC,SAAuC,EACvC,SAAuC;QAEvC,IACE,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;YAChD,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS,CAAC,kBAAkB;YAC9D,IAAI,CAAC,KAAK,CAAC,6BAA6B;gBACtC,SAAS,CAAC,6BAA6B;YACzC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK;YAEpC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE;YACxC,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SACrE;QAED,IACE,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;YAC5C,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,eAAe;YACrC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EACjC;YACA,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACvC,IACE,CAAC,IAAI,YAAY,mCAAmC;oBAClD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,yBAAyB;wBAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACrC,CAAC,IAAI,YAAY,mBAAmB;wBAClC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,yBAAyB;4BAC5D,IAAI,CAAC,IAAI,CAAC,EACd;oBACA,iBAAiB,GAAG,IAAI,CAAC;oBACzB,MAAM;iBACP;gBACD,KAAK,EAAE,CAAC;aACT;YACD,IAAI,iBAAiB,EAAE;gBACrB,uBAAuB;gBACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;oBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACtE;SACF;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS,CAAC,kBAAkB,EAAE;YAClE,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;gBACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SAChE;IACH,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,wBAAwB,CACpC,KAAmC,EACnC,KAAmC;QAEnC,OAAO;YACL,GAAG,KAAK;YACR,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE;SAC5C,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,KAAa;QACrC,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,GAAG;YACzE,GAAG,IAAI,CAAC,KAAK;SACd,CAAC;QACF,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,qBAAqB,CAClE,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,6BAA6B,CAC9B,CAAC;QAEF,IAAI,kBAAkB,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACnD,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SACrE;IACH,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CAAC,IAAkB;QAC5C,MAAM,oBAAoB,GAAG,EAAE,CAAC;QAChC,MAAM,qBAAqB,GAAG,CAAC,CAAC;QAChC,MAAM,sBAAsB,GAAG,EAAE,CAAC;QAClC,MAAM,mBAAmB,GAAG,CAAC,CAAC;QAC9B,MAAM,+BAA+B,GAAG,EAAE,CAAC;QAE3C,OAAO,CACL,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,wBAAwB,GAAG,mBAAmB,CACpD,CAAC;QAEF,SAAS,iBAAiB,CAAC,KAAmC;YAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,aAAa,KAAK,SAAS,EAAE;gBAC/B,IAAI,IAAI,YAAY,yBAAyB,EAAE;oBAC7C,OAAO,CACL,oBAAoB;wBACpB,qBAAqB;wBACrB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;iBACH;gBAED,OAAO,CACL,aAAa,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACtE,CAAC;aACH;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,QAAQ,EAAE;gBAC3C,OAAO,oBAAoB,GAAG,qBAAqB,CAAC;aACrD;YAED,IACE,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC,QAAQ;gBAC1C,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,EACxC;gBACA,OAAO,+BAA+B,CAAC;aACxC;YAED,OAAO,sBAAsB,CAAC;QAChC,CAAC;IACH,CAAC;IA4BO,wBAAwB;QAC9B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;YACrC,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAExC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAiBD,gBAAgB;IACA,MAAM;QACpB,MAAM,wBAAwB,GAC5B,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;YACjD,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO,CACL,oBAAC,uCAAuC,IACtC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,iBAAiB,EACf,IAAI,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;gBACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC9B,CAAC,CAAC,wBAAwB,EAE9B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAExC,CAAC,mBAAmB,EAAE,EAAE,CAAC,CACxB,oBAAC,sCAAsC,IACrC,0BAA0B,EACxB,IAAI,CAAC,KAAK,CAAC,0BAA0B,IAAI,KAAK,EAEhD,sCAAsC,EACpC,IAAI,CAAC,KAAK,CAAC,sCAAsC,EAEnD,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAC7D,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,EACvD,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,0BAA0B,EAAE,IAAI,CAAC,KAAK,CAAC,0BAA0B,EACjE,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,sBAAsB,IAAI,KAAK,IAEjE,CAAC,gBAAgB,EAAE,EAAE;YACpB,MAAM,WAAW,GAAmC;gBAClD,WAAW,EAAE,mBAAmB,CAAC,WAAW;gBAC5C,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gBAE3B,sBAAsB,EAAE,gBAAgB,CAAC,sBAAsB;gBAC/D,0BAA0B,EACxB,gBAAgB,CAAC,0BAA0B;gBAC7C,mBAAmB,EAAE,gBAAgB,CAAC,mBAAmB;gBAEzD,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB;gBACrD,sBAAsB,EAAE,gBAAgB,CAAC,sBAAsB;gBAC/D,qBAAqB,EAAE,gBAAgB,CAAC,qBAAqB;gBAE7D,kBAAkB,EAAE,gBAAgB,CAAC,kBAAkB;gBACvD,YAAY,EAAE,gBAAgB,CAAC,YAAY;gBAC3C,YAAY,EAAE,gBAAgB,CAAC,YAAY;gBAE3C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;gBACrC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;gBAErC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB;gBACvD,4BAA4B,EAC1B,IAAI,CAAC,KAAK,CAAC,4BAA4B;gBACzC,+BAA+B,EAC7B,IAAI,CAAC,KAAK,CAAC,+BAA+B;gBAE5C,WAAW,EAAE,mBAAmB,CAAC,WAAW;gBAC5C,UAAU,EAAE,mBAAmB,CAAC,UAAU;gBAC1C,0BAA0B,EACxB,mBAAmB,CAAC,0BAA0B;gBAChD,qBAAqB,EACnB,mBAAmB,CAAC,qBAAqB;gBAC3C,oBAAoB,EAAE,mBAAmB,CAAC,eAAe;gBACzD,yBAAyB,EACvB,mBAAmB,CAAC,yBAAyB;gBAC/C,0BAA0B,EACxB,mBAAmB,CAAC,0BAA0B;gBAEhD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;aAChC,CAAC;YAEF,MAAM,aAAa,GAAgC;gBACjD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC/B,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;gBACzC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;gBACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC/B,mBAAmB,EAAE,IAAI,CAAC,uBAAuB;gBACjD,WAAW;aACZ,CAAC;YAEF,OAAO,CACL,oBAAC,mCAAmC,IAAC,KAAK,EAAE,aAAa;gBACvD,6BACE,SAAS,EAAE,UAAU,CACnB,sCAAsC,EACtC,6BAA6B,CAC9B;oBAED,oBAAC,gBAAgB,IACf,SAAS,EAAE,UAAU,CACnB,kCAAkC,EAClC,+BAA+B,EAC/B,IAAI,CAAC,KAAK,CAAC,SAAS,CACrB,EACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EACtC,QAAQ,EAAE,IAAI,CAAC,2BAA2B,EAC1C,iBAAiB,EAAE,IAAI,CAAC,wBAAwB,EAAE,EAClD,aAAa,EAAE,EAAE,EACjB,MAAM,EAAC,UAAU,EACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,GAAG,EAAE,IAAI,CAAC,QAAQ,IAEjB,gBAAgB,CACA,CACf,CAC8B,CACvC,CAAC;QACJ,CAAC,CACsC,CAC1C,CACuC,CAC3C,CAAC;IACJ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,uCAAuC;IACrD,OAAO,wBAAwB,CAAI,+BAA+B,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CACjC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAA2B,EAAE,EAAE;IAClE,MAAM,EACJ,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,SAAS,EACT,KAAK,EACL,mBAAmB,GACpB,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAE9B,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAC1C,GAAG,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5D,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CACtC,CAAC;IACF,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CACvC,CAAC,SAAiB,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EACtE,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CACvC,CAAC;IAEF,SAAS,cAAc;QACrB,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QAC/D,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,gBAAgB,CAAC,QAAQ;gBAC5B,MAAM,uBAAuB,GAC3B,WAAW,CAAC,+BAA+B;oBAC3C,+BAA+B,CAAC,cAAc,CAAC;gBACjD,MAAM,cAAc,GAClB,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,gBAAgB,GAAG,UAAU,CACjC,+BAA+B,EAC/B,cAAc,KAAK,SAAS;oBAC1B,CAAC,CAAC,uCAAuC;oBACzC,CAAC,CAAC,gCAAgC,CACrC,CAAC;gBACF,OAAO,CACL,oBAAC,2BAA2B,IAC1B,WAAW,EAAE,IAAI,CAAC,KAAK,EACvB,iBAAiB,EAAE,wBAAwB,EAC3C,SAAS,EAAE,gBAAgB;oBAE3B,oBAAC,qBAAqB,IACpB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,IAAI,CAAC,eAAe,EAC9B,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EACP,WAAW,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,CAC5C,YAAY,CAAC,QAAQ,CACtB;4BACC,CAAC,CAAC,WAAW,CAAC,SAAS;4BACvB,CAAC,CAAC,SAAS,IAGd,cAAc,KAAK,SAAS,IAAI,CAC/B,oBAAC,qBAAqB,IACpB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,IAAI,EAClB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,GAChC,CACH,CACqB,CACI,CAC/B,CAAC;YACJ,KAAK,gBAAgB,CAAC,KAAK,CAAC;YAC5B,KAAK,gBAAgB,CAAC,MAAM,CAAC;YAC7B,KAAK,gBAAgB,CAAC,SAAS;gBAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBACvC,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAC1C,IAAI,CAAC,0BAA0B,CACZ,CAAC;gBAEtB,OAAO,CACL,oBAAC,2BAA2B,IAC1B,WAAW,EAAE,kBAAkB,CAAC,KAAK,GAAG,CAAC,EACzC,iBAAiB,EAAE,wBAAwB,EAC3C,SAAS,EAAC,+BAA+B;oBAEzC,oBAAC,oBAAoB,IACnB,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,SAAS,EAAE,YAAY,EACvB,cAAc,EAAE,IAAI,CAAC,aAAa,EAClC,WAAW,EAAE,WAAW,CAAC,WAAW,EACpC,WAAW,EAAE,IAAI,CAAC,KAAK,EACvB,KAAK,EAAE,WAAW,CAAC,SAAS,EAC5B,WAAW,EAAE,WAAW,CAAC,sBAAsB,EAC/C,YAAY,EAAE,WAAW,CAAC,0BAA0B,EACpD,UAAU,EAAE,YAAY,KAAK,WAAW,CAAC,mBAAmB,EAC5D,OAAO,EACL,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS;4BACtC,CAAC,CAAC,WAAW,CAAC,iBAAiB;4BAC/B,CAAC,CAAC,SAAS,EAEf,YAAY,EACV,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS;4BACtC,CAAC,CAAC,WAAW,CAAC,sBAAsB;4BACpC,CAAC,CAAC,SAAS,EAEf,aAAa,EAAE,WAAW,CAAC,qBAAqB,EAChD,QAAQ,EAAE,kBAAkB,CAAC,eAAe,EAC5C,SAAS,EAAE,YAAY,KAAK,WAAW,CAAC,kBAAkB,EAC1D,YAAY,EAAE,WAAW,CAAC,YAAY,EACtC,YAAY,EAAE,WAAW,CAAC,YAAY,EACtC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,qBAAqB,EAAE,WAAW,CAAC,qBAAqB,EACxD,4BAA4B,EAC1B,WAAW,CAAC,4BAA4B,EAE1C,WAAW,EAAE,WAAW,CAAC,WAAW,EACpC,UAAU,EAAE,WAAW,CAAC,UAAU,EAClC,0BAA0B,EACxB,WAAW,CAAC,0BAA0B,EAExC,qBAAqB,EAAE,WAAW,CAAC,qBAAqB,EACxD,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,EACtD,yBAAyB,EACvB,WAAW,CAAC,yBAAyB,EAEvC,0BAA0B,EACxB,WAAW,CAAC,0BAA0B,EAExC,SAAS,EACP,WAAW,CAAC,SAAS;4BACnB,CAAC,CAAC;gCACE,YAAY,EACV,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAC3C,YAAY,CAAC,KAAK,CACnB,IAAI,KAAK;gCACZ,YAAY,EACV,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,CAC3C,YAAY,CAAC,KAAK,CACnB,IAAI,KAAK;gCACZ,GAAG,WAAW,CAAC,SAAS;6BACzB;4BACH,CAAC,CAAC,SAAS,GAEf,CAC0B,CAC/B,CAAC;SACL;IACH,CAAC;IAED,OAAO,CACL,6BAAK,SAAS,EAAC,uBAAuB,EAAC,KAAK,EAAE,oBAAoB,IAC/D,cAAc,EAAE,CACb,CACP,CAAC;AACJ,CAAC,EACD,QAAQ,CACT,CAAC;AAEF,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC;AASlD,MAAM,qBAAqB,GAAyC,CAAC,KAAK,EAAE,EAAE;IAC5E,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAElD,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACzB,MAAM,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAChC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QACpE,eAAe,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;IAErD,OAAO,6BAAK,GAAG,EAAE,MAAM,IAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAO,CAAC;AAC9E,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module PropertyGrid\n */\nimport \"./VirtualizedPropertyGrid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { ListChildComponentProps } from \"react-window\";\nimport { areEqual, VariableSizeList } from \"react-window\";\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { RatioChangeResult } from \"@itwin/core-react\";\nimport { Orientation } from \"@itwin/core-react\";\nimport { createContextWithMandatoryProvider } from \"../../common/UseContextWithMandatoryProvider\";\nimport type { PropertyUpdatedArgs } from \"../../editors/EditorContainer\";\nimport type { ActionButtonRenderer } from \"../../properties/renderers/ActionButtonRenderer\";\nimport type { PropertyGridColumnInfo } from \"../../properties/renderers/PropertyGridColumns\";\nimport type { PropertyValueRendererManager } from \"../../properties/ValueRendererManager\";\nimport { FilteredType } from \"../dataproviders/filterers/PropertyDataFiltererBase\";\nimport type {\n FlatGridItem,\n GridCategoryItem,\n} from \"../internal/flat-items/FlatGridItem\";\nimport { MutableCategorizedPrimitiveProperty } from \"../internal/flat-items/MutableCategorizedPrimitiveProperty\";\nimport { MutableCustomGridCategory } from \"../internal/flat-items/MutableCustomGridCategory\";\nimport { FlatGridItemType } from \"../internal/flat-items/MutableFlatGridItem\";\nimport { MutableGridCategory } from \"../internal/flat-items/MutableGridCategory\";\nimport { FlatPropertyRenderer } from \"../internal/flat-properties/FlatPropertyRenderer\";\nimport type { IPropertyGridEventHandler } from \"../internal/PropertyGridEventHandler\";\nimport type { IPropertyGridModel } from \"../internal/PropertyGridModel\";\nimport type { PropertyCategoryRendererProps } from \"../PropertyCategoryRendererManager\";\nimport { PropertyCategoryRendererManager } from \"../PropertyCategoryRendererManager\";\nimport type {\n IPropertyDataProvider,\n PropertyCategory,\n} from \"../PropertyDataProvider\";\nimport { ColumnResizingPropertyListPropsSupplier } from \"./ColumnResizingPropertyListPropsSupplier\";\nimport { FlatItemNestedBorderWrapper } from \"./FlatItemNestedBorderWrapper\";\nimport { PropertyCategoryBlock } from \"./PropertyCategoryBlock\";\nimport type {\n CommonPropertyGridProps,\n PropertyGridContentHighlightProps,\n} from \"./PropertyGridCommons\";\nimport { PropertyGridCommons } from \"./PropertyGridCommons\";\nimport { PropertyGridEventsRelatedPropsSupplier } from \"./PropertyGridEventsRelatedPropsSupplier\";\nimport { useElementsScrollStorage } from \"../../common/UseElementsScrollStorage\";\n\n/** Properties for [[VirtualizedPropertyGrid]] React component\n * @public\n */\nexport interface VirtualizedPropertyGridProps extends CommonPropertyGridProps {\n /** Property grid view model that defines what needs to be rendered */\n model: IPropertyGridModel;\n /** Handler of the events raised from the property grid */\n eventHandler: IPropertyGridEventHandler;\n /** Property data provider used by the property grid */\n dataProvider: IPropertyDataProvider;\n /** Properties for highlighting property data in the grid. */\n highlight?: PropertyGridContentHighlightProps;\n /** Custom property category renderer manager. Defaults to [[PropertyCategoryRendererManager.defaultManager]]. */\n propertyCategoryRendererManager?: PropertyCategoryRendererManager;\n /** Width of the property grid component. */\n width: number;\n /** Height of the property grid component. */\n height: number;\n}\n\n/** State of [[VirtualizedPropertyGrid]] React component\n * @internal\n */\ninterface VirtualizedPropertyGridState {\n /** List of PropertyGrid categories */\n gridItems: FlatGridItem[];\n /** Actual orientation used by the property grid */\n orientation: Orientation;\n /** Keeps record of dynamic node heights */\n dynamicNodeHeights: Map<string, number>;\n /** When resetting node height cache, marks the point at which heights have become stale */\n resetIndex: number;\n}\n\n/**\n * Context of [[VirtualizedPropertyGrid]] component.\n * @internal\n */\nexport interface PropertyGridInternalContext {\n gridItems: FlatGridItem[];\n gridEventHandler: IPropertyGridEventHandler;\n gridModel: IPropertyGridModel;\n\n style?: React.CSSProperties;\n className?: string;\n gridContext: VirtualizedPropertyGridContext;\n onItemHeightChanged: (index: number, key: string, height: number) => void;\n}\n\n/**\n * Context of the surrounding [VirtualizedPropertyGrid]($components-react) component.\n * @public\n */\nexport interface VirtualizedPropertyGridContext {\n orientation: Orientation;\n gridWidth: number;\n\n isPropertyHoverEnabled: boolean;\n isPropertySelectionEnabled: boolean;\n selectedPropertyKey?: string;\n\n onPropertyClicked?: (property: PropertyRecord, key?: string) => void;\n onPropertyRightClicked?: (property: PropertyRecord, key?: string) => void;\n onPropertyContextMenu?: (\n property: PropertyRecord,\n e: React.MouseEvent\n ) => void;\n\n editingPropertyKey?: string;\n onEditCommit?: (\n args: PropertyUpdatedArgs,\n category: PropertyCategory\n ) => void;\n onEditCancel?: () => void;\n\n eventHandler: IPropertyGridEventHandler;\n dataProvider: IPropertyDataProvider;\n\n actionButtonRenderers?: ActionButtonRenderer[];\n propertyValueRendererManager?: PropertyValueRendererManager;\n propertyCategoryRendererManager?: PropertyCategoryRendererManager;\n\n columnRatio: number;\n columnInfo: PropertyGridColumnInfo;\n isResizeHandleBeingDragged: boolean;\n isResizeHandleHovered: boolean;\n onColumnRatioChanged: (ratio: number) => void | RatioChangeResult;\n onResizeHandleDragChanged: (newValue: boolean) => void;\n onResizeHandleHoverChanged: (newValue: boolean) => void;\n\n highlight?: PropertyGridContentHighlightProps;\n}\n\nconst [\n PropertyGridInternalContextProvider,\n _PropertyGridInternalContextConsumer,\n usePropertyGridInternalContext,\n] = createContextWithMandatoryProvider<PropertyGridInternalContext>(\n \"PropertyGridInternalContext\"\n);\n\nconst ACTION_BUTTON_DEFAULT_WIDTH = 90;\n\n/**\n * VirtualizedPropertyGrid React component.\n * @public\n */\nexport class VirtualizedPropertyGrid extends React.Component<\n VirtualizedPropertyGridProps,\n VirtualizedPropertyGridState\n> {\n private _listRef = React.createRef<VariableSizeList>();\n\n /** @internal */\n constructor(props: VirtualizedPropertyGridProps) {\n super(props);\n this.state = {\n gridItems: [],\n orientation: props.orientation ?? Orientation.Horizontal,\n dynamicNodeHeights: new Map(),\n resetIndex: 0,\n };\n }\n\n /** @internal */\n public override componentDidUpdate(\n prevProps: VirtualizedPropertyGridProps,\n prevState: VirtualizedPropertyGridState\n ) {\n if (\n this.props.orientation !== prevProps.orientation ||\n this.props.isOrientationFixed !== prevProps.isOrientationFixed ||\n this.props.horizontalOrientationMinWidth !==\n prevProps.horizontalOrientationMinWidth ||\n this.props.width !== prevProps.width\n )\n this.updateOrientation(this.props.width);\n\n if (this.props.model !== prevProps.model) {\n // istanbul ignore else\n if (this._listRef.current) this._listRef.current.resetAfterIndex(0);\n }\n\n if (\n this.props.highlight !== prevProps.highlight &&\n this.props.highlight?.activeHighlight &&\n this.state.gridItems.length !== 0\n ) {\n let index = 0;\n let foundMatchingItem = false;\n for (const item of this.state.gridItems) {\n if (\n (item instanceof MutableCategorizedPrimitiveProperty &&\n this.props.highlight.activeHighlight.highlightedItemIdentifier ===\n item.derivedRecord.property.name) ||\n (item instanceof MutableGridCategory &&\n this.props.highlight.activeHighlight.highlightedItemIdentifier ===\n item.name)\n ) {\n foundMatchingItem = true;\n break;\n }\n index++;\n }\n if (foundMatchingItem) {\n // istanbul ignore else\n if (this._listRef.current) this._listRef.current.scrollToItem(index);\n }\n }\n\n if (this.state.dynamicNodeHeights !== prevState.dynamicNodeHeights) {\n // istanbul ignore else\n if (this._listRef.current)\n this._listRef.current.resetAfterIndex(this.state.resetIndex);\n }\n }\n\n /** @internal */\n public static getDerivedStateFromProps(\n props: VirtualizedPropertyGridProps,\n state: VirtualizedPropertyGridState\n ): VirtualizedPropertyGridState | null {\n return {\n ...state,\n gridItems: props.model.getVisibleFlatGrid(),\n };\n }\n\n private updateOrientation(width: number) {\n const { orientation, isOrientationFixed, horizontalOrientationMinWidth } = {\n ...this.props,\n };\n const currentOrientation = PropertyGridCommons.getCurrentOrientation(\n width,\n orientation,\n isOrientationFixed,\n horizontalOrientationMinWidth\n );\n\n if (currentOrientation !== this.state.orientation) {\n this.setState({ orientation: currentOrientation });\n // istanbul ignore else\n if (this._listRef.current) this._listRef.current.resetAfterIndex(0);\n }\n }\n\n /**\n * Calculate given node height depending on it's type, position in category, parent category depth and current orientation.\n * @param node FlatGridItem node for which to calculate height\n * @returns current height of node.\n */\n private calculateNodeHeight(node: FlatGridItem) {\n const categoryHeaderHeight = 38;\n const categoryHeaderPadding = 4;\n const categoryPropertyHeight = 27;\n const bottomBorderPadding = 5;\n const verticalPrimitivePropertyHeight = 55;\n\n return (\n getPropertyHeight(this.state) +\n node.lastInNumberOfCategories * bottomBorderPadding\n );\n\n function getPropertyHeight(state: VirtualizedPropertyGridState) {\n const dynamicHeight = state.dynamicNodeHeights.get(node.key);\n if (dynamicHeight !== undefined) {\n if (node instanceof MutableCustomGridCategory) {\n return (\n categoryHeaderHeight +\n categoryHeaderPadding +\n (node.isExpanded ? dynamicHeight + bottomBorderPadding : 0)\n );\n }\n\n return (\n dynamicHeight + (state.orientation === Orientation.Vertical ? 28 : 0)\n );\n }\n\n if (node.type === FlatGridItemType.Category) {\n return categoryHeaderHeight + categoryHeaderPadding;\n }\n\n if (\n state.orientation === Orientation.Vertical &&\n node.type === FlatGridItemType.Primitive\n ) {\n return verticalPrimitivePropertyHeight;\n }\n\n return categoryPropertyHeight;\n }\n }\n\n private _handleNodeHeightChange = (\n index: number,\n key: string,\n newHeight: number\n ) => {\n if (this.state.dynamicNodeHeights.get(key) === newHeight) {\n return;\n }\n\n this.setState((state) => {\n return {\n ...state,\n dynamicNodeHeights: new Map(state.dynamicNodeHeights).set(\n key,\n newHeight\n ),\n resetIndex: index,\n };\n });\n };\n\n private _calculateNodeHeightByIndex = (index: number) => {\n const node = this.state.gridItems[index];\n return this.calculateNodeHeight(node);\n };\n\n private calculateEstimatedHeight() {\n let sum = 0;\n for (const node of this.state.gridItems)\n sum += this.calculateNodeHeight(node);\n\n return Math.ceil(sum / this.state.gridItems.length);\n }\n\n private _getNodeKey = (index: number) => {\n const node = this.state.gridItems[index];\n return node.key;\n };\n\n private _getMaxItemDepth = () => {\n let depth = 0;\n for (const item of this.state.gridItems) {\n if (depth < item.depth) {\n depth = item.depth;\n }\n }\n return depth + 1;\n };\n\n /** @internal */\n public override render() {\n const defaultActionButtonWidth =\n (this.props.actionButtonRenderers?.length ?? 0) > 0\n ? ACTION_BUTTON_DEFAULT_WIDTH\n : undefined;\n\n return (\n <ColumnResizingPropertyListPropsSupplier\n orientation={this.state.orientation}\n width={this.props.width}\n minLabelWidth={this.props.minLabelWidth}\n minValueWidth={this.props.minValueWidth}\n actionButtonWidth={\n this.props.actionButtonWidth !== undefined\n ? this.props.actionButtonWidth\n : defaultActionButtonWidth\n }\n maxPropertyDepth={this._getMaxItemDepth()}\n >\n {(columnResizeContext) => (\n <PropertyGridEventsRelatedPropsSupplier\n isPropertySelectionEnabled={\n this.props.isPropertySelectionEnabled ?? false\n }\n isPropertySelectionOnRightClickEnabled={\n this.props.isPropertySelectionOnRightClickEnabled\n }\n isPropertyEditingEnabled={this.props.isPropertyEditingEnabled}\n onPropertyContextMenu={this.props.onPropertyContextMenu}\n onPropertyUpdated={this.props.onPropertyUpdated}\n onPropertySelectionChanged={this.props.onPropertySelectionChanged}\n isPropertyHoverEnabled={this.props.isPropertyHoverEnabled ?? false}\n >\n {(selectionContext) => {\n const gridContext: VirtualizedPropertyGridContext = {\n orientation: columnResizeContext.orientation,\n gridWidth: this.props.width,\n\n isPropertyHoverEnabled: selectionContext.isPropertyHoverEnabled,\n isPropertySelectionEnabled:\n selectionContext.isPropertySelectionEnabled,\n selectedPropertyKey: selectionContext.selectedPropertyKey,\n\n onPropertyClicked: selectionContext.onPropertyClicked,\n onPropertyRightClicked: selectionContext.onPropertyRightClicked,\n onPropertyContextMenu: selectionContext.onPropertyContextMenu,\n\n editingPropertyKey: selectionContext.editingPropertyKey,\n onEditCommit: selectionContext.onEditCommit,\n onEditCancel: selectionContext.onEditCancel,\n\n eventHandler: this.props.eventHandler,\n dataProvider: this.props.dataProvider,\n\n actionButtonRenderers: this.props.actionButtonRenderers,\n propertyValueRendererManager:\n this.props.propertyValueRendererManager,\n propertyCategoryRendererManager:\n this.props.propertyCategoryRendererManager,\n\n columnRatio: columnResizeContext.columnRatio,\n columnInfo: columnResizeContext.columnInfo,\n isResizeHandleBeingDragged:\n columnResizeContext.isResizeHandleBeingDragged,\n isResizeHandleHovered:\n columnResizeContext.isResizeHandleHovered,\n onColumnRatioChanged: columnResizeContext.onColumnChanged,\n onResizeHandleDragChanged:\n columnResizeContext.onResizeHandleDragChanged,\n onResizeHandleHoverChanged:\n columnResizeContext.onResizeHandleHoverChanged,\n\n highlight: this.props.highlight,\n };\n\n const renderContext: PropertyGridInternalContext = {\n gridItems: this.state.gridItems,\n gridEventHandler: this.props.eventHandler,\n gridModel: this.props.model,\n style: this.props.style,\n className: this.props.className,\n onItemHeightChanged: this._handleNodeHeightChange,\n gridContext,\n };\n\n return (\n <PropertyGridInternalContextProvider value={renderContext}>\n <div\n className={classnames(\n \"components-virtualized-property-grid\",\n \"components-smallEditor-host\"\n )}\n >\n <VariableSizeList\n className={classnames(\n \"components-property-grid-wrapper\",\n \"ReactWindow__VariableSizeList\",\n this.props.className\n )}\n width={this.props.width}\n height={this.props.height}\n itemCount={this.state.gridItems.length}\n itemSize={this._calculateNodeHeightByIndex}\n estimatedItemSize={this.calculateEstimatedHeight()}\n overscanCount={10}\n layout=\"vertical\"\n style={this.props.style}\n itemKey={this._getNodeKey}\n ref={this._listRef}\n >\n {FlatGridItemNode}\n </VariableSizeList>\n </div>\n </PropertyGridInternalContextProvider>\n );\n }}\n </PropertyGridEventsRelatedPropsSupplier>\n )}\n </ColumnResizingPropertyListPropsSupplier>\n );\n }\n}\n\n/**\n * Returns callbacks for persisting and restoring [[VirtualizedPropertyGrid]] layout state.\n * Returned `ref` should be set on container containing [[VirtualizedPropertyGrid]].\n * @public\n */\nexport function useVirtualizedPropertyGridLayoutStorage<T extends Element>() {\n return useElementsScrollStorage<T>(\"ReactWindow__VariableSizeList\");\n}\n\nconst FlatGridItemNode = React.memo(\n ({ index, style: virtualizedListStyle }: ListChildComponentProps) => {\n const {\n gridItems,\n gridEventHandler,\n gridModel,\n gridContext,\n className,\n style,\n onItemHeightChanged,\n } = usePropertyGridInternalContext(FlatGridItemNode);\n const node = gridItems[index];\n\n const onExpansionToggled = React.useCallback(\n () => gridEventHandler.onExpansionToggled(node.selectionKey),\n [gridEventHandler, node.selectionKey]\n );\n const onHeightChanged = React.useCallback(\n (newHeight: number) => onItemHeightChanged(index, node.key, newHeight),\n [onItemHeightChanged, index, node.key]\n );\n\n function getDisplayNode() {\n const lastInNumberOfCategories = node.lastInNumberOfCategories;\n switch (node.type) {\n case FlatGridItemType.Category:\n const categoryRendererManager =\n gridContext.propertyCategoryRendererManager ??\n PropertyCategoryRendererManager.defaultManager;\n const customRenderer =\n categoryRendererManager.getCategoryComponent(node);\n const wrapperClassName = classnames(\n \"virtualized-grid-node-content\",\n customRenderer !== undefined\n ? \"virtualized-grid-node-custom-category\"\n : \"virtualized-grid-node-category\"\n );\n return (\n <FlatItemNestedBorderWrapper\n borderCount={node.depth}\n bottomBorderCount={lastInNumberOfCategories}\n className={wrapperClassName}\n >\n <PropertyCategoryBlock\n className={className}\n style={style}\n category={node.derivedCategory}\n onExpansionToggled={onExpansionToggled}\n highlight={\n gridContext.highlight?.filteredTypes?.includes(\n FilteredType.Category\n )\n ? gridContext.highlight\n : undefined\n }\n >\n {customRenderer !== undefined && (\n <CustomCategoryContent\n renderer={customRenderer}\n categoryItem={node}\n gridContext={gridContext}\n onHeightChanged={onHeightChanged}\n />\n )}\n </PropertyCategoryBlock>\n </FlatItemNestedBorderWrapper>\n );\n case FlatGridItemType.Array:\n case FlatGridItemType.Struct:\n case FlatGridItemType.Primitive:\n const selectionKey = node.selectionKey;\n const parentCategoryItem = gridModel.getItem(\n node.parentCategorySelectionKey\n ) as GridCategoryItem;\n\n return (\n <FlatItemNestedBorderWrapper\n borderCount={parentCategoryItem.depth + 1}\n bottomBorderCount={lastInNumberOfCategories}\n className=\"virtualized-grid-node-content\"\n >\n <FlatPropertyRenderer\n key={node.key}\n uniqueKey={selectionKey}\n propertyRecord={node.derivedRecord}\n orientation={gridContext.orientation}\n indentation={node.depth}\n width={gridContext.gridWidth}\n isHoverable={gridContext.isPropertyHoverEnabled}\n isSelectable={gridContext.isPropertySelectionEnabled}\n isSelected={selectionKey === gridContext.selectedPropertyKey}\n onClick={\n node.type === FlatGridItemType.Primitive\n ? gridContext.onPropertyClicked\n : undefined\n }\n onRightClick={\n node.type === FlatGridItemType.Primitive\n ? gridContext.onPropertyRightClicked\n : undefined\n }\n onContextMenu={gridContext.onPropertyContextMenu}\n category={parentCategoryItem.derivedCategory}\n isEditing={selectionKey === gridContext.editingPropertyKey}\n onEditCommit={gridContext.onEditCommit}\n onEditCancel={gridContext.onEditCancel}\n isExpanded={node.isExpanded}\n onExpansionToggled={onExpansionToggled}\n onHeightChanged={onHeightChanged}\n actionButtonRenderers={gridContext.actionButtonRenderers}\n propertyValueRendererManager={\n gridContext.propertyValueRendererManager\n }\n columnRatio={gridContext.columnRatio}\n columnInfo={gridContext.columnInfo}\n isResizeHandleBeingDragged={\n gridContext.isResizeHandleBeingDragged\n }\n isResizeHandleHovered={gridContext.isResizeHandleHovered}\n onColumnRatioChanged={gridContext.onColumnRatioChanged}\n onResizeHandleDragChanged={\n gridContext.onResizeHandleDragChanged\n }\n onResizeHandleHoverChanged={\n gridContext.onResizeHandleHoverChanged\n }\n highlight={\n gridContext.highlight\n ? {\n applyOnLabel:\n gridContext.highlight.filteredTypes?.includes(\n FilteredType.Label\n ) ?? false,\n applyOnValue:\n gridContext.highlight.filteredTypes?.includes(\n FilteredType.Value\n ) ?? false,\n ...gridContext.highlight,\n }\n : undefined\n }\n />\n </FlatItemNestedBorderWrapper>\n );\n }\n }\n\n return (\n <div className=\"virtualized-grid-node\" style={virtualizedListStyle}>\n {getDisplayNode()}\n </div>\n );\n },\n areEqual\n);\n\nFlatGridItemNode.displayName = \"FlatGridItemNode\";\n\ninterface CustomCategoryContentProps {\n categoryItem: GridCategoryItem;\n renderer: React.ComponentType<PropertyCategoryRendererProps>;\n gridContext: VirtualizedPropertyGridContext;\n onHeightChanged: (newHeight: number) => void;\n}\n\nconst CustomCategoryContent: React.FC<CustomCategoryContentProps> = (props) => {\n const { onHeightChanged } = props;\n const divRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n assert(divRef.current !== null);\n const contentHeight = divRef.current.getBoundingClientRect().height;\n onHeightChanged(contentHeight);\n }, [props.gridContext.orientation, onHeightChanged]);\n\n return <div ref={divRef}>{React.createElement(props.renderer, props)}</div>;\n};\n"]}
1
+ {"version":3,"file":"VirtualizedPropertyGrid.js","sourceRoot":"","sources":["../../../../../src/components-react/propertygrid/component/VirtualizedPropertyGrid.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG;;GAEG;AACH,OAAO,gCAAgC,CAAC;AACxC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AAKlG,OAAO,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AAKnF,OAAO,EAAE,mCAAmC,EAAE,MAAM,4DAA4D,CAAC;AACjH,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAIxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AAKrF,OAAO,EAAE,uCAAuC,EAAE,MAAM,2CAA2C,CAAC;AACpG,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,sCAAsC,EAAE,MAAM,0CAA0C,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AA+FjF,MAAM,CACJ,mCAAmC,EACnC,oCAAoC,EACpC,8BAA8B,EAC/B,GAAG,kCAAkC,CACpC,6BAA6B,CAC9B,CAAC;AAEF,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAEvC;;;GAGG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK,CAAC,SAGlD;IAGC,gBAAgB;IAChB,YAAY,KAAmC;;QAC7C,KAAK,CAAC,KAAK,CAAC,CAAC;QAJP,aAAQ,GAAG,KAAK,CAAC,SAAS,EAAoB,CAAC;QA+I/C,4BAAuB,GAAG,CAChC,KAAa,EACb,GAAW,EACX,SAAiB,EACjB,EAAE;YACF,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;gBACxD,OAAO;aACR;YAED,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtB,OAAO;oBACL,GAAG,KAAK;oBACR,kBAAkB,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CACvD,GAAG,EACH,SAAS,CACV;oBACD,UAAU,EAAE,KAAK;iBAClB,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,gCAA2B,GAAG,CAAC,KAAa,EAAE,EAAE;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC;QAUM,gBAAW,GAAG,CAAC,KAAa,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC,CAAC;QAEM,qBAAgB,GAAG,GAAG,EAAE;YAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACvC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;oBACtB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;iBACpB;aACF;YACD,OAAO,KAAK,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC;QAzLA,IAAI,CAAC,KAAK,GAAG;YACX,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,MAAA,KAAK,CAAC,WAAW,mCAAI,WAAW,CAAC,UAAU;YACxD,kBAAkB,EAAE,IAAI,GAAG,EAAE;YAC7B,UAAU,EAAE,CAAC;SACd,CAAC;IACJ,CAAC;IAED,gBAAgB;IACA,kBAAkB,CAChC,SAAuC,EACvC,SAAuC;;QAEvC,IACE,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;YAChD,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS,CAAC,kBAAkB;YAC9D,IAAI,CAAC,KAAK,CAAC,6BAA6B;gBACtC,SAAS,CAAC,6BAA6B;YACzC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK;YAEpC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,EAAE;YACxC,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SACrE;QAED,IACE,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS;aAC5C,MAAA,IAAI,CAAC,KAAK,CAAC,SAAS,0CAAE,eAAe,CAAA;YACrC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EACjC;YACA,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACvC,IACE,CAAC,IAAI,YAAY,mCAAmC;oBAClD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,yBAAyB;wBAC5D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACrC,CAAC,IAAI,YAAY,mBAAmB;wBAClC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,yBAAyB;4BAC5D,IAAI,CAAC,IAAI,CAAC,EACd;oBACA,iBAAiB,GAAG,IAAI,CAAC;oBACzB,MAAM;iBACP;gBACD,KAAK,EAAE,CAAC;aACT;YACD,IAAI,iBAAiB,EAAE;gBACrB,uBAAuB;gBACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;oBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACtE;SACF;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS,CAAC,kBAAkB,EAAE;YAClE,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;gBACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SAChE;IACH,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,wBAAwB,CACpC,KAAmC,EACnC,KAAmC;QAEnC,OAAO;YACL,GAAG,KAAK;YACR,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,kBAAkB,EAAE;SAC5C,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,KAAa;QACrC,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,GAAG;YACzE,GAAG,IAAI,CAAC,KAAK;SACd,CAAC;QACF,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,qBAAqB,CAClE,KAAK,EACL,WAAW,EACX,kBAAkB,EAClB,6BAA6B,CAC9B,CAAC;QAEF,IAAI,kBAAkB,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACnD,uBAAuB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SACrE;IACH,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CAAC,IAAkB;QAC5C,MAAM,oBAAoB,GAAG,EAAE,CAAC;QAChC,MAAM,qBAAqB,GAAG,CAAC,CAAC;QAChC,MAAM,sBAAsB,GAAG,EAAE,CAAC;QAClC,MAAM,mBAAmB,GAAG,CAAC,CAAC;QAC9B,MAAM,+BAA+B,GAAG,EAAE,CAAC;QAE3C,OAAO,CACL,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,wBAAwB,GAAG,mBAAmB,CACpD,CAAC;QAEF,SAAS,iBAAiB,CAAC,KAAmC;YAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,aAAa,KAAK,SAAS,EAAE;gBAC/B,IAAI,IAAI,YAAY,yBAAyB,EAAE;oBAC7C,OAAO,CACL,oBAAoB;wBACpB,qBAAqB;wBACrB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;iBACH;gBAED,OAAO,CACL,aAAa,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACtE,CAAC;aACH;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,QAAQ,EAAE;gBAC3C,OAAO,oBAAoB,GAAG,qBAAqB,CAAC;aACrD;YAED,IACE,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC,QAAQ;gBAC1C,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS,EACxC;gBACA,OAAO,+BAA+B,CAAC;aACxC;YAED,OAAO,sBAAsB,CAAC;QAChC,CAAC;IACH,CAAC;IA4BO,wBAAwB;QAC9B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;YACrC,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAExC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAiBD,gBAAgB;IACA,MAAM;;QACpB,MAAM,wBAAwB,GAC5B,CAAC,MAAA,MAAA,IAAI,CAAC,KAAK,CAAC,qBAAqB,0CAAE,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC;YACjD,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO,CACL,oBAAC,uCAAuC,IACtC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,iBAAiB,EACf,IAAI,CAAC,KAAK,CAAC,iBAAiB,KAAK,SAAS;gBACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC9B,CAAC,CAAC,wBAAwB,EAE9B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAExC,CAAC,mBAAmB,EAAE,EAAE;;YAAC,OAAA,CACxB,oBAAC,sCAAsC,IACrC,0BAA0B,EACxB,MAAA,IAAI,CAAC,KAAK,CAAC,0BAA0B,mCAAI,KAAK,EAEhD,sCAAsC,EACpC,IAAI,CAAC,KAAK,CAAC,sCAAsC,EAEnD,wBAAwB,EAAE,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAC7D,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,EACvD,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,0BAA0B,EAAE,IAAI,CAAC,KAAK,CAAC,0BAA0B,EACjE,sBAAsB,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,sBAAsB,mCAAI,KAAK,IAEjE,CAAC,gBAAgB,EAAE,EAAE;gBACpB,MAAM,WAAW,GAAmC;oBAClD,WAAW,EAAE,mBAAmB,CAAC,WAAW;oBAC5C,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;oBAE3B,sBAAsB,EAAE,gBAAgB,CAAC,sBAAsB;oBAC/D,0BAA0B,EACxB,gBAAgB,CAAC,0BAA0B;oBAC7C,mBAAmB,EAAE,gBAAgB,CAAC,mBAAmB;oBAEzD,iBAAiB,EAAE,gBAAgB,CAAC,iBAAiB;oBACrD,sBAAsB,EAAE,gBAAgB,CAAC,sBAAsB;oBAC/D,qBAAqB,EAAE,gBAAgB,CAAC,qBAAqB;oBAE7D,kBAAkB,EAAE,gBAAgB,CAAC,kBAAkB;oBACvD,YAAY,EAAE,gBAAgB,CAAC,YAAY;oBAC3C,YAAY,EAAE,gBAAgB,CAAC,YAAY;oBAE3C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;oBACrC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;oBAErC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB;oBACvD,4BAA4B,EAC1B,IAAI,CAAC,KAAK,CAAC,4BAA4B;oBACzC,+BAA+B,EAC7B,IAAI,CAAC,KAAK,CAAC,+BAA+B;oBAE5C,WAAW,EAAE,mBAAmB,CAAC,WAAW;oBAC5C,UAAU,EAAE,mBAAmB,CAAC,UAAU;oBAC1C,0BAA0B,EACxB,mBAAmB,CAAC,0BAA0B;oBAChD,qBAAqB,EACnB,mBAAmB,CAAC,qBAAqB;oBAC3C,oBAAoB,EAAE,mBAAmB,CAAC,eAAe;oBACzD,yBAAyB,EACvB,mBAAmB,CAAC,yBAAyB;oBAC/C,0BAA0B,EACxB,mBAAmB,CAAC,0BAA0B;oBAEhD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;iBAChC,CAAC;gBAEF,MAAM,aAAa,GAAgC;oBACjD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;oBAC/B,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY;oBACzC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;oBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;oBACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;oBAC/B,mBAAmB,EAAE,IAAI,CAAC,uBAAuB;oBACjD,WAAW;iBACZ,CAAC;gBAEF,OAAO,CACL,oBAAC,mCAAmC,IAAC,KAAK,EAAE,aAAa;oBACvD,6BACE,SAAS,EAAE,UAAU,CACnB,sCAAsC,EACtC,6BAA6B,CAC9B;wBAED,oBAAC,gBAAgB,IACf,SAAS,EAAE,UAAU,CACnB,kCAAkC,EAClC,+BAA+B,EAC/B,IAAI,CAAC,KAAK,CAAC,SAAS,CACrB,EACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EACtC,QAAQ,EAAE,IAAI,CAAC,2BAA2B,EAC1C,iBAAiB,EAAE,IAAI,CAAC,wBAAwB,EAAE,EAClD,aAAa,EAAE,EAAE,EACjB,MAAM,EAAC,UAAU,EACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,GAAG,EAAE,IAAI,CAAC,QAAQ,IAEjB,gBAAgB,CACA,CACf,CAC8B,CACvC,CAAC;YACJ,CAAC,CACsC,CAC1C,CAAA;SAAA,CACuC,CAC3C,CAAC;IACJ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,uCAAuC;IACrD,OAAO,wBAAwB,CAAI,+BAA+B,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CACjC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAA2B,EAAE,EAAE;IAClE,MAAM,EACJ,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,SAAS,EACT,KAAK,EACL,mBAAmB,GACpB,GAAG,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAE9B,MAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAC1C,GAAG,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,EAC5D,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CACtC,CAAC;IACF,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CACvC,CAAC,SAAiB,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EACtE,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CACvC,CAAC;IAEF,SAAS,cAAc;;QACrB,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC;QAC/D,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,gBAAgB,CAAC,QAAQ;gBAC5B,MAAM,uBAAuB,GAC3B,MAAA,WAAW,CAAC,+BAA+B,mCAC3C,+BAA+B,CAAC,cAAc,CAAC;gBACjD,MAAM,cAAc,GAClB,uBAAuB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,gBAAgB,GAAG,UAAU,CACjC,+BAA+B,EAC/B,cAAc,KAAK,SAAS;oBAC1B,CAAC,CAAC,uCAAuC;oBACzC,CAAC,CAAC,gCAAgC,CACrC,CAAC;gBACF,OAAO,CACL,oBAAC,2BAA2B,IAC1B,WAAW,EAAE,IAAI,CAAC,KAAK,EACvB,iBAAiB,EAAE,wBAAwB,EAC3C,SAAS,EAAE,gBAAgB;oBAE3B,oBAAC,qBAAqB,IACpB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,IAAI,CAAC,eAAe,EAC9B,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EACP,CAAA,MAAA,MAAA,WAAW,CAAC,SAAS,0CAAE,aAAa,0CAAE,QAAQ,CAC5C,YAAY,CAAC,QAAQ,CACtB;4BACC,CAAC,CAAC,WAAW,CAAC,SAAS;4BACvB,CAAC,CAAC,SAAS,IAGd,cAAc,KAAK,SAAS,IAAI,CAC/B,oBAAC,qBAAqB,IACpB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,IAAI,EAClB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,GAChC,CACH,CACqB,CACI,CAC/B,CAAC;YACJ,KAAK,gBAAgB,CAAC,KAAK,CAAC;YAC5B,KAAK,gBAAgB,CAAC,MAAM,CAAC;YAC7B,KAAK,gBAAgB,CAAC,SAAS;gBAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBACvC,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAC1C,IAAI,CAAC,0BAA0B,CACZ,CAAC;gBAEtB,OAAO,CACL,oBAAC,2BAA2B,IAC1B,WAAW,EAAE,kBAAkB,CAAC,KAAK,GAAG,CAAC,EACzC,iBAAiB,EAAE,wBAAwB,EAC3C,SAAS,EAAC,+BAA+B;oBAEzC,oBAAC,oBAAoB,IACnB,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,SAAS,EAAE,YAAY,EACvB,cAAc,EAAE,IAAI,CAAC,aAAa,EAClC,WAAW,EAAE,WAAW,CAAC,WAAW,EACpC,WAAW,EAAE,IAAI,CAAC,KAAK,EACvB,KAAK,EAAE,WAAW,CAAC,SAAS,EAC5B,WAAW,EAAE,WAAW,CAAC,sBAAsB,EAC/C,YAAY,EAAE,WAAW,CAAC,0BAA0B,EACpD,UAAU,EAAE,YAAY,KAAK,WAAW,CAAC,mBAAmB,EAC5D,OAAO,EACL,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS;4BACtC,CAAC,CAAC,WAAW,CAAC,iBAAiB;4BAC/B,CAAC,CAAC,SAAS,EAEf,YAAY,EACV,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,SAAS;4BACtC,CAAC,CAAC,WAAW,CAAC,sBAAsB;4BACpC,CAAC,CAAC,SAAS,EAEf,aAAa,EAAE,WAAW,CAAC,qBAAqB,EAChD,QAAQ,EAAE,kBAAkB,CAAC,eAAe,EAC5C,SAAS,EAAE,YAAY,KAAK,WAAW,CAAC,kBAAkB,EAC1D,YAAY,EAAE,WAAW,CAAC,YAAY,EACtC,YAAY,EAAE,WAAW,CAAC,YAAY,EACtC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,qBAAqB,EAAE,WAAW,CAAC,qBAAqB,EACxD,4BAA4B,EAC1B,WAAW,CAAC,4BAA4B,EAE1C,WAAW,EAAE,WAAW,CAAC,WAAW,EACpC,UAAU,EAAE,WAAW,CAAC,UAAU,EAClC,0BAA0B,EACxB,WAAW,CAAC,0BAA0B,EAExC,qBAAqB,EAAE,WAAW,CAAC,qBAAqB,EACxD,oBAAoB,EAAE,WAAW,CAAC,oBAAoB,EACtD,yBAAyB,EACvB,WAAW,CAAC,yBAAyB,EAEvC,0BAA0B,EACxB,WAAW,CAAC,0BAA0B,EAExC,SAAS,EACP,WAAW,CAAC,SAAS;4BACnB,CAAC,CAAC;gCACE,YAAY,EACV,MAAA,MAAA,WAAW,CAAC,SAAS,CAAC,aAAa,0CAAE,QAAQ,CAC3C,YAAY,CAAC,KAAK,CACnB,mCAAI,KAAK;gCACZ,YAAY,EACV,MAAA,MAAA,WAAW,CAAC,SAAS,CAAC,aAAa,0CAAE,QAAQ,CAC3C,YAAY,CAAC,KAAK,CACnB,mCAAI,KAAK;gCACZ,GAAG,WAAW,CAAC,SAAS;6BACzB;4BACH,CAAC,CAAC,SAAS,GAEf,CAC0B,CAC/B,CAAC;SACL;IACH,CAAC;IAED,OAAO,CACL,6BAAK,SAAS,EAAC,uBAAuB,EAAC,KAAK,EAAE,oBAAoB,IAC/D,cAAc,EAAE,CACb,CACP,CAAC;AACJ,CAAC,EACD,QAAQ,CACT,CAAC;AAEF,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC;AASlD,MAAM,qBAAqB,GAAyC,CAAC,KAAK,EAAE,EAAE;IAC5E,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAClC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAElD,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE;QACzB,MAAM,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QAChC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QACpE,eAAe,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;IAErD,OAAO,6BAAK,GAAG,EAAE,MAAM,IAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAO,CAAC;AAC9E,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module PropertyGrid\n */\nimport \"./VirtualizedPropertyGrid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { ListChildComponentProps } from \"react-window\";\nimport { areEqual, VariableSizeList } from \"react-window\";\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { RatioChangeResult } from \"@itwin/core-react\";\nimport { Orientation } from \"@itwin/core-react\";\nimport { createContextWithMandatoryProvider } from \"../../common/UseContextWithMandatoryProvider\";\nimport type { PropertyUpdatedArgs } from \"../../editors/EditorContainer\";\nimport type { ActionButtonRenderer } from \"../../properties/renderers/ActionButtonRenderer\";\nimport type { PropertyGridColumnInfo } from \"../../properties/renderers/PropertyGridColumns\";\nimport type { PropertyValueRendererManager } from \"../../properties/ValueRendererManager\";\nimport { FilteredType } from \"../dataproviders/filterers/PropertyDataFiltererBase\";\nimport type {\n FlatGridItem,\n GridCategoryItem,\n} from \"../internal/flat-items/FlatGridItem\";\nimport { MutableCategorizedPrimitiveProperty } from \"../internal/flat-items/MutableCategorizedPrimitiveProperty\";\nimport { MutableCustomGridCategory } from \"../internal/flat-items/MutableCustomGridCategory\";\nimport { FlatGridItemType } from \"../internal/flat-items/MutableFlatGridItem\";\nimport { MutableGridCategory } from \"../internal/flat-items/MutableGridCategory\";\nimport { FlatPropertyRenderer } from \"../internal/flat-properties/FlatPropertyRenderer\";\nimport type { IPropertyGridEventHandler } from \"../internal/PropertyGridEventHandler\";\nimport type { IPropertyGridModel } from \"../internal/PropertyGridModel\";\nimport type { PropertyCategoryRendererProps } from \"../PropertyCategoryRendererManager\";\nimport { PropertyCategoryRendererManager } from \"../PropertyCategoryRendererManager\";\nimport type {\n IPropertyDataProvider,\n PropertyCategory,\n} from \"../PropertyDataProvider\";\nimport { ColumnResizingPropertyListPropsSupplier } from \"./ColumnResizingPropertyListPropsSupplier\";\nimport { FlatItemNestedBorderWrapper } from \"./FlatItemNestedBorderWrapper\";\nimport { PropertyCategoryBlock } from \"./PropertyCategoryBlock\";\nimport type {\n CommonPropertyGridProps,\n PropertyGridContentHighlightProps,\n} from \"./PropertyGridCommons\";\nimport { PropertyGridCommons } from \"./PropertyGridCommons\";\nimport { PropertyGridEventsRelatedPropsSupplier } from \"./PropertyGridEventsRelatedPropsSupplier\";\nimport { useElementsScrollStorage } from \"../../common/UseElementsScrollStorage\";\n\n/** Properties for [[VirtualizedPropertyGrid]] React component\n * @public\n */\nexport interface VirtualizedPropertyGridProps extends CommonPropertyGridProps {\n /** Property grid view model that defines what needs to be rendered */\n model: IPropertyGridModel;\n /** Handler of the events raised from the property grid */\n eventHandler: IPropertyGridEventHandler;\n /** Property data provider used by the property grid */\n dataProvider: IPropertyDataProvider;\n /** Properties for highlighting property data in the grid. */\n highlight?: PropertyGridContentHighlightProps;\n /** Custom property category renderer manager. Defaults to [[PropertyCategoryRendererManager.defaultManager]]. */\n propertyCategoryRendererManager?: PropertyCategoryRendererManager;\n /** Width of the property grid component. */\n width: number;\n /** Height of the property grid component. */\n height: number;\n}\n\n/** State of [[VirtualizedPropertyGrid]] React component\n * @internal\n */\ninterface VirtualizedPropertyGridState {\n /** List of PropertyGrid categories */\n gridItems: FlatGridItem[];\n /** Actual orientation used by the property grid */\n orientation: Orientation;\n /** Keeps record of dynamic node heights */\n dynamicNodeHeights: Map<string, number>;\n /** When resetting node height cache, marks the point at which heights have become stale */\n resetIndex: number;\n}\n\n/**\n * Context of [[VirtualizedPropertyGrid]] component.\n * @internal\n */\nexport interface PropertyGridInternalContext {\n gridItems: FlatGridItem[];\n gridEventHandler: IPropertyGridEventHandler;\n gridModel: IPropertyGridModel;\n\n style?: React.CSSProperties;\n className?: string;\n gridContext: VirtualizedPropertyGridContext;\n onItemHeightChanged: (index: number, key: string, height: number) => void;\n}\n\n/**\n * Context of the surrounding [VirtualizedPropertyGrid]($components-react) component.\n * @public\n */\nexport interface VirtualizedPropertyGridContext {\n orientation: Orientation;\n gridWidth: number;\n\n isPropertyHoverEnabled: boolean;\n isPropertySelectionEnabled: boolean;\n selectedPropertyKey?: string;\n\n onPropertyClicked?: (property: PropertyRecord, key?: string) => void;\n onPropertyRightClicked?: (property: PropertyRecord, key?: string) => void;\n onPropertyContextMenu?: (\n property: PropertyRecord,\n e: React.MouseEvent\n ) => void;\n\n editingPropertyKey?: string;\n onEditCommit?: (\n args: PropertyUpdatedArgs,\n category: PropertyCategory\n ) => void;\n onEditCancel?: () => void;\n\n eventHandler: IPropertyGridEventHandler;\n dataProvider: IPropertyDataProvider;\n\n actionButtonRenderers?: ActionButtonRenderer[];\n propertyValueRendererManager?: PropertyValueRendererManager;\n propertyCategoryRendererManager?: PropertyCategoryRendererManager;\n\n columnRatio: number;\n columnInfo: PropertyGridColumnInfo;\n isResizeHandleBeingDragged: boolean;\n isResizeHandleHovered: boolean;\n onColumnRatioChanged: (ratio: number) => void | RatioChangeResult;\n onResizeHandleDragChanged: (newValue: boolean) => void;\n onResizeHandleHoverChanged: (newValue: boolean) => void;\n\n highlight?: PropertyGridContentHighlightProps;\n}\n\nconst [\n PropertyGridInternalContextProvider,\n _PropertyGridInternalContextConsumer,\n usePropertyGridInternalContext,\n] = createContextWithMandatoryProvider<PropertyGridInternalContext>(\n \"PropertyGridInternalContext\"\n);\n\nconst ACTION_BUTTON_DEFAULT_WIDTH = 90;\n\n/**\n * VirtualizedPropertyGrid React component.\n * @public\n */\nexport class VirtualizedPropertyGrid extends React.Component<\n VirtualizedPropertyGridProps,\n VirtualizedPropertyGridState\n> {\n private _listRef = React.createRef<VariableSizeList>();\n\n /** @internal */\n constructor(props: VirtualizedPropertyGridProps) {\n super(props);\n this.state = {\n gridItems: [],\n orientation: props.orientation ?? Orientation.Horizontal,\n dynamicNodeHeights: new Map(),\n resetIndex: 0,\n };\n }\n\n /** @internal */\n public override componentDidUpdate(\n prevProps: VirtualizedPropertyGridProps,\n prevState: VirtualizedPropertyGridState\n ) {\n if (\n this.props.orientation !== prevProps.orientation ||\n this.props.isOrientationFixed !== prevProps.isOrientationFixed ||\n this.props.horizontalOrientationMinWidth !==\n prevProps.horizontalOrientationMinWidth ||\n this.props.width !== prevProps.width\n )\n this.updateOrientation(this.props.width);\n\n if (this.props.model !== prevProps.model) {\n // istanbul ignore else\n if (this._listRef.current) this._listRef.current.resetAfterIndex(0);\n }\n\n if (\n this.props.highlight !== prevProps.highlight &&\n this.props.highlight?.activeHighlight &&\n this.state.gridItems.length !== 0\n ) {\n let index = 0;\n let foundMatchingItem = false;\n for (const item of this.state.gridItems) {\n if (\n (item instanceof MutableCategorizedPrimitiveProperty &&\n this.props.highlight.activeHighlight.highlightedItemIdentifier ===\n item.derivedRecord.property.name) ||\n (item instanceof MutableGridCategory &&\n this.props.highlight.activeHighlight.highlightedItemIdentifier ===\n item.name)\n ) {\n foundMatchingItem = true;\n break;\n }\n index++;\n }\n if (foundMatchingItem) {\n // istanbul ignore else\n if (this._listRef.current) this._listRef.current.scrollToItem(index);\n }\n }\n\n if (this.state.dynamicNodeHeights !== prevState.dynamicNodeHeights) {\n // istanbul ignore else\n if (this._listRef.current)\n this._listRef.current.resetAfterIndex(this.state.resetIndex);\n }\n }\n\n /** @internal */\n public static getDerivedStateFromProps(\n props: VirtualizedPropertyGridProps,\n state: VirtualizedPropertyGridState\n ): VirtualizedPropertyGridState | null {\n return {\n ...state,\n gridItems: props.model.getVisibleFlatGrid(),\n };\n }\n\n private updateOrientation(width: number) {\n const { orientation, isOrientationFixed, horizontalOrientationMinWidth } = {\n ...this.props,\n };\n const currentOrientation = PropertyGridCommons.getCurrentOrientation(\n width,\n orientation,\n isOrientationFixed,\n horizontalOrientationMinWidth\n );\n\n if (currentOrientation !== this.state.orientation) {\n this.setState({ orientation: currentOrientation });\n // istanbul ignore else\n if (this._listRef.current) this._listRef.current.resetAfterIndex(0);\n }\n }\n\n /**\n * Calculate given node height depending on it's type, position in category, parent category depth and current orientation.\n * @param node FlatGridItem node for which to calculate height\n * @returns current height of node.\n */\n private calculateNodeHeight(node: FlatGridItem) {\n const categoryHeaderHeight = 38;\n const categoryHeaderPadding = 4;\n const categoryPropertyHeight = 27;\n const bottomBorderPadding = 5;\n const verticalPrimitivePropertyHeight = 55;\n\n return (\n getPropertyHeight(this.state) +\n node.lastInNumberOfCategories * bottomBorderPadding\n );\n\n function getPropertyHeight(state: VirtualizedPropertyGridState) {\n const dynamicHeight = state.dynamicNodeHeights.get(node.key);\n if (dynamicHeight !== undefined) {\n if (node instanceof MutableCustomGridCategory) {\n return (\n categoryHeaderHeight +\n categoryHeaderPadding +\n (node.isExpanded ? dynamicHeight + bottomBorderPadding : 0)\n );\n }\n\n return (\n dynamicHeight + (state.orientation === Orientation.Vertical ? 28 : 0)\n );\n }\n\n if (node.type === FlatGridItemType.Category) {\n return categoryHeaderHeight + categoryHeaderPadding;\n }\n\n if (\n state.orientation === Orientation.Vertical &&\n node.type === FlatGridItemType.Primitive\n ) {\n return verticalPrimitivePropertyHeight;\n }\n\n return categoryPropertyHeight;\n }\n }\n\n private _handleNodeHeightChange = (\n index: number,\n key: string,\n newHeight: number\n ) => {\n if (this.state.dynamicNodeHeights.get(key) === newHeight) {\n return;\n }\n\n this.setState((state) => {\n return {\n ...state,\n dynamicNodeHeights: new Map(state.dynamicNodeHeights).set(\n key,\n newHeight\n ),\n resetIndex: index,\n };\n });\n };\n\n private _calculateNodeHeightByIndex = (index: number) => {\n const node = this.state.gridItems[index];\n return this.calculateNodeHeight(node);\n };\n\n private calculateEstimatedHeight() {\n let sum = 0;\n for (const node of this.state.gridItems)\n sum += this.calculateNodeHeight(node);\n\n return Math.ceil(sum / this.state.gridItems.length);\n }\n\n private _getNodeKey = (index: number) => {\n const node = this.state.gridItems[index];\n return node.key;\n };\n\n private _getMaxItemDepth = () => {\n let depth = 0;\n for (const item of this.state.gridItems) {\n if (depth < item.depth) {\n depth = item.depth;\n }\n }\n return depth + 1;\n };\n\n /** @internal */\n public override render() {\n const defaultActionButtonWidth =\n (this.props.actionButtonRenderers?.length ?? 0) > 0\n ? ACTION_BUTTON_DEFAULT_WIDTH\n : undefined;\n\n return (\n <ColumnResizingPropertyListPropsSupplier\n orientation={this.state.orientation}\n width={this.props.width}\n minLabelWidth={this.props.minLabelWidth}\n minValueWidth={this.props.minValueWidth}\n actionButtonWidth={\n this.props.actionButtonWidth !== undefined\n ? this.props.actionButtonWidth\n : defaultActionButtonWidth\n }\n maxPropertyDepth={this._getMaxItemDepth()}\n >\n {(columnResizeContext) => (\n <PropertyGridEventsRelatedPropsSupplier\n isPropertySelectionEnabled={\n this.props.isPropertySelectionEnabled ?? false\n }\n isPropertySelectionOnRightClickEnabled={\n this.props.isPropertySelectionOnRightClickEnabled\n }\n isPropertyEditingEnabled={this.props.isPropertyEditingEnabled}\n onPropertyContextMenu={this.props.onPropertyContextMenu}\n onPropertyUpdated={this.props.onPropertyUpdated}\n onPropertySelectionChanged={this.props.onPropertySelectionChanged}\n isPropertyHoverEnabled={this.props.isPropertyHoverEnabled ?? false}\n >\n {(selectionContext) => {\n const gridContext: VirtualizedPropertyGridContext = {\n orientation: columnResizeContext.orientation,\n gridWidth: this.props.width,\n\n isPropertyHoverEnabled: selectionContext.isPropertyHoverEnabled,\n isPropertySelectionEnabled:\n selectionContext.isPropertySelectionEnabled,\n selectedPropertyKey: selectionContext.selectedPropertyKey,\n\n onPropertyClicked: selectionContext.onPropertyClicked,\n onPropertyRightClicked: selectionContext.onPropertyRightClicked,\n onPropertyContextMenu: selectionContext.onPropertyContextMenu,\n\n editingPropertyKey: selectionContext.editingPropertyKey,\n onEditCommit: selectionContext.onEditCommit,\n onEditCancel: selectionContext.onEditCancel,\n\n eventHandler: this.props.eventHandler,\n dataProvider: this.props.dataProvider,\n\n actionButtonRenderers: this.props.actionButtonRenderers,\n propertyValueRendererManager:\n this.props.propertyValueRendererManager,\n propertyCategoryRendererManager:\n this.props.propertyCategoryRendererManager,\n\n columnRatio: columnResizeContext.columnRatio,\n columnInfo: columnResizeContext.columnInfo,\n isResizeHandleBeingDragged:\n columnResizeContext.isResizeHandleBeingDragged,\n isResizeHandleHovered:\n columnResizeContext.isResizeHandleHovered,\n onColumnRatioChanged: columnResizeContext.onColumnChanged,\n onResizeHandleDragChanged:\n columnResizeContext.onResizeHandleDragChanged,\n onResizeHandleHoverChanged:\n columnResizeContext.onResizeHandleHoverChanged,\n\n highlight: this.props.highlight,\n };\n\n const renderContext: PropertyGridInternalContext = {\n gridItems: this.state.gridItems,\n gridEventHandler: this.props.eventHandler,\n gridModel: this.props.model,\n style: this.props.style,\n className: this.props.className,\n onItemHeightChanged: this._handleNodeHeightChange,\n gridContext,\n };\n\n return (\n <PropertyGridInternalContextProvider value={renderContext}>\n <div\n className={classnames(\n \"components-virtualized-property-grid\",\n \"components-smallEditor-host\"\n )}\n >\n <VariableSizeList\n className={classnames(\n \"components-property-grid-wrapper\",\n \"ReactWindow__VariableSizeList\",\n this.props.className\n )}\n width={this.props.width}\n height={this.props.height}\n itemCount={this.state.gridItems.length}\n itemSize={this._calculateNodeHeightByIndex}\n estimatedItemSize={this.calculateEstimatedHeight()}\n overscanCount={10}\n layout=\"vertical\"\n style={this.props.style}\n itemKey={this._getNodeKey}\n ref={this._listRef}\n >\n {FlatGridItemNode}\n </VariableSizeList>\n </div>\n </PropertyGridInternalContextProvider>\n );\n }}\n </PropertyGridEventsRelatedPropsSupplier>\n )}\n </ColumnResizingPropertyListPropsSupplier>\n );\n }\n}\n\n/**\n * Returns callbacks for persisting and restoring [[VirtualizedPropertyGrid]] layout state.\n * Returned `ref` should be set on container containing [[VirtualizedPropertyGrid]].\n * @public\n */\nexport function useVirtualizedPropertyGridLayoutStorage<T extends Element>() {\n return useElementsScrollStorage<T>(\"ReactWindow__VariableSizeList\");\n}\n\nconst FlatGridItemNode = React.memo(\n ({ index, style: virtualizedListStyle }: ListChildComponentProps) => {\n const {\n gridItems,\n gridEventHandler,\n gridModel,\n gridContext,\n className,\n style,\n onItemHeightChanged,\n } = usePropertyGridInternalContext(FlatGridItemNode);\n const node = gridItems[index];\n\n const onExpansionToggled = React.useCallback(\n () => gridEventHandler.onExpansionToggled(node.selectionKey),\n [gridEventHandler, node.selectionKey]\n );\n const onHeightChanged = React.useCallback(\n (newHeight: number) => onItemHeightChanged(index, node.key, newHeight),\n [onItemHeightChanged, index, node.key]\n );\n\n function getDisplayNode() {\n const lastInNumberOfCategories = node.lastInNumberOfCategories;\n switch (node.type) {\n case FlatGridItemType.Category:\n const categoryRendererManager =\n gridContext.propertyCategoryRendererManager ??\n PropertyCategoryRendererManager.defaultManager;\n const customRenderer =\n categoryRendererManager.getCategoryComponent(node);\n const wrapperClassName = classnames(\n \"virtualized-grid-node-content\",\n customRenderer !== undefined\n ? \"virtualized-grid-node-custom-category\"\n : \"virtualized-grid-node-category\"\n );\n return (\n <FlatItemNestedBorderWrapper\n borderCount={node.depth}\n bottomBorderCount={lastInNumberOfCategories}\n className={wrapperClassName}\n >\n <PropertyCategoryBlock\n className={className}\n style={style}\n category={node.derivedCategory}\n onExpansionToggled={onExpansionToggled}\n highlight={\n gridContext.highlight?.filteredTypes?.includes(\n FilteredType.Category\n )\n ? gridContext.highlight\n : undefined\n }\n >\n {customRenderer !== undefined && (\n <CustomCategoryContent\n renderer={customRenderer}\n categoryItem={node}\n gridContext={gridContext}\n onHeightChanged={onHeightChanged}\n />\n )}\n </PropertyCategoryBlock>\n </FlatItemNestedBorderWrapper>\n );\n case FlatGridItemType.Array:\n case FlatGridItemType.Struct:\n case FlatGridItemType.Primitive:\n const selectionKey = node.selectionKey;\n const parentCategoryItem = gridModel.getItem(\n node.parentCategorySelectionKey\n ) as GridCategoryItem;\n\n return (\n <FlatItemNestedBorderWrapper\n borderCount={parentCategoryItem.depth + 1}\n bottomBorderCount={lastInNumberOfCategories}\n className=\"virtualized-grid-node-content\"\n >\n <FlatPropertyRenderer\n key={node.key}\n uniqueKey={selectionKey}\n propertyRecord={node.derivedRecord}\n orientation={gridContext.orientation}\n indentation={node.depth}\n width={gridContext.gridWidth}\n isHoverable={gridContext.isPropertyHoverEnabled}\n isSelectable={gridContext.isPropertySelectionEnabled}\n isSelected={selectionKey === gridContext.selectedPropertyKey}\n onClick={\n node.type === FlatGridItemType.Primitive\n ? gridContext.onPropertyClicked\n : undefined\n }\n onRightClick={\n node.type === FlatGridItemType.Primitive\n ? gridContext.onPropertyRightClicked\n : undefined\n }\n onContextMenu={gridContext.onPropertyContextMenu}\n category={parentCategoryItem.derivedCategory}\n isEditing={selectionKey === gridContext.editingPropertyKey}\n onEditCommit={gridContext.onEditCommit}\n onEditCancel={gridContext.onEditCancel}\n isExpanded={node.isExpanded}\n onExpansionToggled={onExpansionToggled}\n onHeightChanged={onHeightChanged}\n actionButtonRenderers={gridContext.actionButtonRenderers}\n propertyValueRendererManager={\n gridContext.propertyValueRendererManager\n }\n columnRatio={gridContext.columnRatio}\n columnInfo={gridContext.columnInfo}\n isResizeHandleBeingDragged={\n gridContext.isResizeHandleBeingDragged\n }\n isResizeHandleHovered={gridContext.isResizeHandleHovered}\n onColumnRatioChanged={gridContext.onColumnRatioChanged}\n onResizeHandleDragChanged={\n gridContext.onResizeHandleDragChanged\n }\n onResizeHandleHoverChanged={\n gridContext.onResizeHandleHoverChanged\n }\n highlight={\n gridContext.highlight\n ? {\n applyOnLabel:\n gridContext.highlight.filteredTypes?.includes(\n FilteredType.Label\n ) ?? false,\n applyOnValue:\n gridContext.highlight.filteredTypes?.includes(\n FilteredType.Value\n ) ?? false,\n ...gridContext.highlight,\n }\n : undefined\n }\n />\n </FlatItemNestedBorderWrapper>\n );\n }\n }\n\n return (\n <div className=\"virtualized-grid-node\" style={virtualizedListStyle}>\n {getDisplayNode()}\n </div>\n );\n },\n areEqual\n);\n\nFlatGridItemNode.displayName = \"FlatGridItemNode\";\n\ninterface CustomCategoryContentProps {\n categoryItem: GridCategoryItem;\n renderer: React.ComponentType<PropertyCategoryRendererProps>;\n gridContext: VirtualizedPropertyGridContext;\n onHeightChanged: (newHeight: number) => void;\n}\n\nconst CustomCategoryContent: React.FC<CustomCategoryContentProps> = (props) => {\n const { onHeightChanged } = props;\n const divRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n assert(divRef.current !== null);\n const contentHeight = divRef.current.getBoundingClientRect().height;\n onHeightChanged(contentHeight);\n }, [props.gridContext.orientation, onHeightChanged]);\n\n return <div ref={divRef}>{React.createElement(props.renderer, props)}</div>;\n};\n"]}
@@ -80,8 +80,9 @@ export class FilteringPropertyDataProvider {
80
80
  }
81
81
  }
82
82
  async function matchHierarchy(filterer, categories, records, newRecords, parentMatchInfo) {
83
+ var _a, _b, _c, _d, _e;
83
84
  const newCategories = [];
84
- newRecords = newRecords ?? {};
85
+ newRecords = newRecords !== null && newRecords !== void 0 ? newRecords : {};
85
86
  let matchesCount = 0;
86
87
  let allFilteredResultMatches = [];
87
88
  let allFilteredTypes = [];
@@ -90,27 +91,27 @@ async function matchHierarchy(filterer, categories, records, newRecords, parentM
90
91
  if (matchInfo.matchesFilter) {
91
92
  allFilteredResultMatches.push({
92
93
  id: category.name,
93
- matchesCount: matchInfo.matchesCount ?? 0,
94
+ matchesCount: (_a = matchInfo.matchesCount) !== null && _a !== void 0 ? _a : 0,
94
95
  });
95
- allFilteredTypes = allFilteredTypes.concat(matchInfo.filteredTypes ?? []);
96
- matchesCount += matchInfo.matchesCount ?? 0;
96
+ allFilteredTypes = allFilteredTypes.concat((_b = matchInfo.filteredTypes) !== null && _b !== void 0 ? _b : []);
97
+ matchesCount += (_c = matchInfo.matchesCount) !== null && _c !== void 0 ? _c : 0;
97
98
  }
98
- const childRecords = records[category.name] ?? [];
99
+ const childRecords = (_d = records[category.name]) !== null && _d !== void 0 ? _d : [];
99
100
  const { filteredRecords, matchesCount: count, filteredResultMatches, filteredTypes, } = await matchRecordHierarchy(filterer, childRecords, []);
100
101
  allFilteredResultMatches = allFilteredResultMatches.concat(filteredResultMatches);
101
102
  allFilteredTypes = allFilteredTypes.concat(filteredTypes);
102
103
  matchesCount += count;
103
- const parentInfo = parentMatchInfo?.matchesFilter
104
+ const parentInfo = (parentMatchInfo === null || parentMatchInfo === void 0 ? void 0 : parentMatchInfo.matchesFilter)
104
105
  ? parentMatchInfo
105
106
  : matchInfo;
106
- const childCategories = category.childCategories ?? [];
107
+ const childCategories = (_e = category.childCategories) !== null && _e !== void 0 ? _e : [];
107
108
  const { filteredCategories, matchesCount: childCount, filteredResultMatches: childFilteredResultMatches, filteredTypes: childFilteredTypes, } = await matchHierarchy(filterer, childCategories, records, newRecords, parentInfo);
108
109
  allFilteredResultMatches = allFilteredResultMatches.concat(childFilteredResultMatches);
109
110
  allFilteredTypes = allFilteredTypes.concat(childFilteredTypes);
110
111
  matchesCount += childCount;
111
112
  let expand = !(count === 0 && childCount === 0);
112
113
  if (matchInfo.matchesFilter ||
113
- (parentMatchInfo?.matchesFilter &&
114
+ ((parentMatchInfo === null || parentMatchInfo === void 0 ? void 0 : parentMatchInfo.matchesFilter) &&
114
115
  parentMatchInfo.shouldForceIncludeDescendants)) {
115
116
  newRecords[category.name] = records[category.name];
116
117
  if (matchInfo.matchesFilter) {
@@ -121,7 +122,7 @@ async function matchHierarchy(filterer, categories, records, newRecords, parentM
121
122
  }
122
123
  if ((filteredRecords.length !== 0 || filteredCategories.length !== 0) &&
123
124
  !matchInfo.matchesFilter &&
124
- !(parentMatchInfo?.shouldExpandNodeParents &&
125
+ !((parentMatchInfo === null || parentMatchInfo === void 0 ? void 0 : parentMatchInfo.shouldExpandNodeParents) &&
125
126
  parentMatchInfo.matchesFilter)) {
126
127
  const newCategory = copyPropertyCategory(category, filteredCategories, expand);
127
128
  newRecords[newCategory.name] = filteredRecords;
@@ -137,6 +138,7 @@ async function matchHierarchy(filterer, categories, records, newRecords, parentM
137
138
  };
138
139
  }
139
140
  async function matchRecordHierarchy(filterer, records, parents, forceIncludeItem = false) {
141
+ var _a, _b;
140
142
  const newMatchedRecords = [];
141
143
  let expandParent = false; // property passed back to parent to indicate whether it should be expanded
142
144
  let matchesCount = 0;
@@ -153,8 +155,8 @@ async function matchRecordHierarchy(filterer, records, parents, forceIncludeItem
153
155
  expandParent = expandParent || shouldExpandNodeParents;
154
156
  let newRecord;
155
157
  if (matchInfo.matchesFilter) {
156
- filteredTypes = [...filteredTypes, ...(matchInfo.filteredTypes ?? [])];
157
- const recordMatchesCount = matchInfo.matchesCount ?? 0;
158
+ filteredTypes = [...filteredTypes, ...((_a = matchInfo.filteredTypes) !== null && _a !== void 0 ? _a : [])];
159
+ const recordMatchesCount = (_b = matchInfo.matchesCount) !== null && _b !== void 0 ? _b : 0;
158
160
  matchesCount += recordMatchesCount;
159
161
  // Item is included if it matches filter
160
162
  // If at least one matched record from records list needs its parent expanded,
@@ -1 +1 @@
1
- {"version":3,"file":"FilteringDataProvider.js","sourceRoot":"","sources":["../../../../../src/components-react/propertygrid/dataproviders/FilteringDataProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyGrid\n */\n\nimport type { PropertyRecord, PropertyValue } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport type { IDisposable } from \"@itwin/core-bentley\";\nimport type { HighlightInfo } from \"../../common/HighlightingComponentProps\";\nimport type { CategoryRecordsDict } from \"../internal/flat-items/MutableGridCategory\";\nimport type {\n IPropertyDataProvider,\n PropertyCategory,\n PropertyData,\n} from \"../PropertyDataProvider\";\nimport { PropertyDataChangeEvent } from \"../PropertyDataProvider\";\nimport type {\n FilteredType,\n IPropertyDataFilterer,\n PropertyDataFilterResult,\n} from \"./filterers/PropertyDataFiltererBase\";\n\ninterface FilteredRecords {\n filteredRecords: PropertyRecord[];\n shouldExpandNodeParents: boolean;\n matchesCount: number;\n activeMatch?: HighlightInfo;\n filteredResultMatches: { id: string; matchesCount: number }[];\n filteredTypes: FilteredType[];\n}\n\n/**\n * Data returned by [[FilteringPropertyDataProvider]]\n * @public\n */\nexport interface FilteredPropertyData extends PropertyData {\n /**\n * Shows how many matches were found when filtering data.\n * `undefined` when filterer is not active\n */\n matchesCount?: number;\n\n /**\n * Function used for getting [[HighlightInfo]] by index from all the filtered matches.\n * `undefined` when filterer is not active\n */\n getMatchByIndex?: (index: number) => HighlightInfo | undefined;\n\n /** Types of objects that were used for filtering. */\n filteredTypes?: FilteredType[];\n}\n\n/**\n * [[IPropertyDataProvider]] implementation which filters wrapped provider [[PropertyData]] using passed [[IPropertyDataFilterer]].\n * @public\n */\nexport class FilteringPropertyDataProvider\n implements IPropertyDataProvider, IDisposable\n{\n public onDataChanged = new PropertyDataChangeEvent();\n private _filteredPropertyData: Promise<FilteredPropertyData> | undefined =\n undefined;\n private _disposeFilterChangedListener: Function;\n private _disposeDataChangedListener: Function;\n\n public constructor(\n private _dataProvider: IPropertyDataProvider,\n private _filterer: IPropertyDataFilterer\n ) {\n this._disposeFilterChangedListener =\n this._filterer.onFilterChanged.addListener(() => {\n this._filteredPropertyData = undefined;\n this.onDataChanged.raiseEvent();\n });\n this._disposeDataChangedListener =\n this._dataProvider.onDataChanged.addListener(() => {\n this._filteredPropertyData = undefined;\n this.onDataChanged.raiseEvent();\n });\n }\n\n public dispose(): void {\n this._disposeDataChangedListener();\n this._disposeFilterChangedListener();\n }\n\n public async getData(): Promise<FilteredPropertyData> {\n if (this._filteredPropertyData) {\n return this._filteredPropertyData;\n }\n\n this._filteredPropertyData = this._dataProvider\n .getData()\n .then(async (propertyData) => {\n return this._filterer.isActive\n ? this.filterPropertyData(propertyData)\n : propertyData;\n });\n\n return this._filteredPropertyData;\n }\n\n private async filterPropertyData(propertyData: PropertyData) {\n const { categories, records, label, description } = { ...propertyData };\n const {\n filteredCategories,\n filteredRecords,\n matchesCount,\n filteredResultMatches,\n filteredTypes,\n } = await matchHierarchy(this._filterer, categories, records, undefined);\n\n const uniqueTypes = [...new Set(filteredTypes)];\n const getMatchByIndex = (index: number) => {\n let activeMatch: HighlightInfo | undefined;\n if (index <= 0) return undefined;\n\n let i = 1;\n for (const record of filteredResultMatches) {\n const fullMatchesCount = record.matchesCount;\n if (index < i + fullMatchesCount) {\n activeMatch = {\n highlightedItemIdentifier: record.id,\n highlightIndex: index - i,\n };\n break;\n }\n\n i += fullMatchesCount;\n }\n return activeMatch;\n };\n\n return {\n label,\n description,\n categories: filteredCategories,\n records: filteredRecords,\n reusePropertyDataState: false,\n matchesCount,\n getMatchByIndex,\n filteredTypes: uniqueTypes,\n };\n }\n}\n\nasync function matchHierarchy(\n filterer: IPropertyDataFilterer,\n categories: PropertyCategory[],\n records: CategoryRecordsDict,\n newRecords?: CategoryRecordsDict,\n parentMatchInfo?: PropertyDataFilterResult\n) {\n const newCategories: PropertyCategory[] = [];\n newRecords = newRecords ?? {};\n let matchesCount = 0;\n let allFilteredResultMatches: { id: string; matchesCount: number }[] = [];\n let allFilteredTypes: FilteredType[] = [];\n\n for (const category of categories) {\n const matchInfo = await filterer.categoryMatchesFilter(category, []);\n\n if (matchInfo.matchesFilter) {\n allFilteredResultMatches.push({\n id: category.name,\n matchesCount: matchInfo.matchesCount ?? 0,\n });\n allFilteredTypes = allFilteredTypes.concat(matchInfo.filteredTypes ?? []);\n matchesCount += matchInfo.matchesCount ?? 0;\n }\n\n const childRecords = records[category.name] ?? [];\n const {\n filteredRecords,\n matchesCount: count,\n filteredResultMatches,\n filteredTypes,\n } = await matchRecordHierarchy(filterer, childRecords, []);\n allFilteredResultMatches = allFilteredResultMatches.concat(\n filteredResultMatches\n );\n allFilteredTypes = allFilteredTypes.concat(filteredTypes);\n matchesCount += count;\n\n const parentInfo = parentMatchInfo?.matchesFilter\n ? parentMatchInfo\n : matchInfo;\n\n const childCategories = category.childCategories ?? [];\n const {\n filteredCategories,\n matchesCount: childCount,\n filteredResultMatches: childFilteredResultMatches,\n filteredTypes: childFilteredTypes,\n } = await matchHierarchy(\n filterer,\n childCategories,\n records,\n newRecords,\n parentInfo\n );\n allFilteredResultMatches = allFilteredResultMatches.concat(\n childFilteredResultMatches\n );\n allFilteredTypes = allFilteredTypes.concat(childFilteredTypes);\n matchesCount += childCount;\n\n let expand = !(count === 0 && childCount === 0);\n if (\n matchInfo.matchesFilter ||\n (parentMatchInfo?.matchesFilter &&\n parentMatchInfo.shouldForceIncludeDescendants)\n ) {\n newRecords[category.name] = records[category.name];\n if (matchInfo.matchesFilter) {\n expand = true;\n }\n const newCategory = copyPropertyCategory(\n category,\n filteredCategories,\n expand\n );\n newCategories.push(newCategory);\n }\n\n if (\n (filteredRecords.length !== 0 || filteredCategories.length !== 0) &&\n !matchInfo.matchesFilter &&\n !(\n parentMatchInfo?.shouldExpandNodeParents &&\n parentMatchInfo.matchesFilter\n )\n ) {\n const newCategory = copyPropertyCategory(\n category,\n filteredCategories,\n expand\n );\n newRecords[newCategory.name] = filteredRecords;\n newCategories.push(newCategory);\n }\n }\n\n return {\n filteredCategories: newCategories,\n filteredRecords: newRecords,\n matchesCount,\n filteredResultMatches: allFilteredResultMatches,\n filteredTypes: allFilteredTypes,\n };\n}\n\nasync function matchRecordHierarchy(\n filterer: IPropertyDataFilterer,\n records: PropertyRecord[],\n parents: PropertyRecord[],\n forceIncludeItem: boolean = false\n): Promise<FilteredRecords> {\n const newMatchedRecords: PropertyRecord[] = [];\n let expandParent = false; // property passed back to parent to indicate whether it should be expanded\n let matchesCount = 0;\n let filteredResultMatches: { id: string; matchesCount: number }[] = [];\n let filteredTypes: FilteredType[] = [];\n\n for (const record of records) {\n const matchInfo = await filterer.recordMatchesFilter(record, parents);\n const shouldForceIncludeDescendants =\n forceIncludeItem || matchInfo.shouldForceIncludeDescendants;\n const {\n filteredRecords: filteredChildren,\n shouldExpandNodeParents,\n matchesCount: childrenMatchesCount,\n filteredResultMatches: childrenResultMatches,\n filteredTypes: childrenFilteredTypes,\n } = await matchRecordHierarchy(\n filterer,\n record.getChildrenRecords(),\n [...parents, record],\n shouldForceIncludeDescendants\n );\n filteredResultMatches = filteredResultMatches.concat(childrenResultMatches);\n filteredTypes = [...filteredTypes, ...childrenFilteredTypes];\n matchesCount += childrenMatchesCount;\n // if child hierarchy indicates parents should be expanded, then it should be passed back up to the top parent\n expandParent = expandParent || shouldExpandNodeParents;\n\n let newRecord: PropertyRecord | undefined;\n if (matchInfo.matchesFilter) {\n filteredTypes = [...filteredTypes, ...(matchInfo.filteredTypes ?? [])];\n const recordMatchesCount = matchInfo.matchesCount ?? 0;\n matchesCount += recordMatchesCount;\n // Item is included if it matches filter\n // If at least one matched record from records list needs its parent expanded,\n // then `expandParent` should be set to true\n expandParent = expandParent || !!matchInfo.shouldExpandNodeParents;\n newRecord = copyPropertyRecord(\n record,\n filteredChildren,\n shouldExpandNodeParents\n );\n filteredResultMatches.push({\n id: newRecord.property.name,\n matchesCount: recordMatchesCount,\n });\n } else if (filteredChildren.length !== 0 || forceIncludeItem) {\n // Item is also included if it has at least one matched child or is forcefully included by its parent\n newRecord = copyPropertyRecord(\n record,\n filteredChildren,\n shouldExpandNodeParents\n );\n }\n\n if (newRecord) newMatchedRecords.push(newRecord);\n }\n\n return {\n filteredRecords: newMatchedRecords,\n shouldExpandNodeParents: expandParent,\n matchesCount,\n filteredResultMatches,\n filteredTypes,\n };\n}\n\nfunction copyPropertyCategory(\n propertyCategory: PropertyCategory,\n newChildren: PropertyCategory[],\n expand: boolean\n): PropertyCategory {\n return {\n ...propertyCategory,\n childCategories: newChildren,\n expand,\n };\n}\n\nfunction copyPropertyRecord(\n record: PropertyRecord,\n newChildren: PropertyRecord[],\n autoExpand: boolean\n) {\n const r = record.copyWithNewValue(\n createNewPropertyValue(record.value, newChildren)\n );\n r.autoExpand = autoExpand;\n return r;\n}\n\nfunction createNewPropertyValue(\n value: PropertyValue,\n newChildren: PropertyRecord[]\n): PropertyValue {\n switch (value.valueFormat) {\n case PropertyValueFormat.Primitive:\n return { ...value };\n case PropertyValueFormat.Array:\n return {\n valueFormat: PropertyValueFormat.Array,\n itemsTypeName: value.itemsTypeName,\n items: newChildren,\n };\n case PropertyValueFormat.Struct:\n const members: { [name: string]: PropertyRecord } = {};\n newChildren.forEach((child) => (members[child.property.name] = child));\n return {\n valueFormat: PropertyValueFormat.Struct,\n members,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"FilteringDataProvider.js","sourceRoot":"","sources":["../../../../../src/components-react/propertygrid/dataproviders/FilteringDataProvider.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyGrid\n */\n\nimport type { PropertyRecord, PropertyValue } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport type { IDisposable } from \"@itwin/core-bentley\";\nimport type { HighlightInfo } from \"../../common/HighlightingComponentProps\";\nimport type { CategoryRecordsDict } from \"../internal/flat-items/MutableGridCategory\";\nimport type {\n IPropertyDataProvider,\n PropertyCategory,\n PropertyData,\n} from \"../PropertyDataProvider\";\nimport { PropertyDataChangeEvent } from \"../PropertyDataProvider\";\nimport type {\n FilteredType,\n IPropertyDataFilterer,\n PropertyDataFilterResult,\n} from \"./filterers/PropertyDataFiltererBase\";\n\ninterface FilteredRecords {\n filteredRecords: PropertyRecord[];\n shouldExpandNodeParents: boolean;\n matchesCount: number;\n activeMatch?: HighlightInfo;\n filteredResultMatches: { id: string; matchesCount: number }[];\n filteredTypes: FilteredType[];\n}\n\n/**\n * Data returned by [[FilteringPropertyDataProvider]]\n * @public\n */\nexport interface FilteredPropertyData extends PropertyData {\n /**\n * Shows how many matches were found when filtering data.\n * `undefined` when filterer is not active\n */\n matchesCount?: number;\n\n /**\n * Function used for getting [[HighlightInfo]] by index from all the filtered matches.\n * `undefined` when filterer is not active\n */\n getMatchByIndex?: (index: number) => HighlightInfo | undefined;\n\n /** Types of objects that were used for filtering. */\n filteredTypes?: FilteredType[];\n}\n\n/**\n * [[IPropertyDataProvider]] implementation which filters wrapped provider [[PropertyData]] using passed [[IPropertyDataFilterer]].\n * @public\n */\nexport class FilteringPropertyDataProvider\n implements IPropertyDataProvider, IDisposable\n{\n public onDataChanged = new PropertyDataChangeEvent();\n private _filteredPropertyData: Promise<FilteredPropertyData> | undefined =\n undefined;\n private _disposeFilterChangedListener: Function;\n private _disposeDataChangedListener: Function;\n\n public constructor(\n private _dataProvider: IPropertyDataProvider,\n private _filterer: IPropertyDataFilterer\n ) {\n this._disposeFilterChangedListener =\n this._filterer.onFilterChanged.addListener(() => {\n this._filteredPropertyData = undefined;\n this.onDataChanged.raiseEvent();\n });\n this._disposeDataChangedListener =\n this._dataProvider.onDataChanged.addListener(() => {\n this._filteredPropertyData = undefined;\n this.onDataChanged.raiseEvent();\n });\n }\n\n public dispose(): void {\n this._disposeDataChangedListener();\n this._disposeFilterChangedListener();\n }\n\n public async getData(): Promise<FilteredPropertyData> {\n if (this._filteredPropertyData) {\n return this._filteredPropertyData;\n }\n\n this._filteredPropertyData = this._dataProvider\n .getData()\n .then(async (propertyData) => {\n return this._filterer.isActive\n ? this.filterPropertyData(propertyData)\n : propertyData;\n });\n\n return this._filteredPropertyData;\n }\n\n private async filterPropertyData(propertyData: PropertyData) {\n const { categories, records, label, description } = { ...propertyData };\n const {\n filteredCategories,\n filteredRecords,\n matchesCount,\n filteredResultMatches,\n filteredTypes,\n } = await matchHierarchy(this._filterer, categories, records, undefined);\n\n const uniqueTypes = [...new Set(filteredTypes)];\n const getMatchByIndex = (index: number) => {\n let activeMatch: HighlightInfo | undefined;\n if (index <= 0) return undefined;\n\n let i = 1;\n for (const record of filteredResultMatches) {\n const fullMatchesCount = record.matchesCount;\n if (index < i + fullMatchesCount) {\n activeMatch = {\n highlightedItemIdentifier: record.id,\n highlightIndex: index - i,\n };\n break;\n }\n\n i += fullMatchesCount;\n }\n return activeMatch;\n };\n\n return {\n label,\n description,\n categories: filteredCategories,\n records: filteredRecords,\n reusePropertyDataState: false,\n matchesCount,\n getMatchByIndex,\n filteredTypes: uniqueTypes,\n };\n }\n}\n\nasync function matchHierarchy(\n filterer: IPropertyDataFilterer,\n categories: PropertyCategory[],\n records: CategoryRecordsDict,\n newRecords?: CategoryRecordsDict,\n parentMatchInfo?: PropertyDataFilterResult\n) {\n const newCategories: PropertyCategory[] = [];\n newRecords = newRecords ?? {};\n let matchesCount = 0;\n let allFilteredResultMatches: { id: string; matchesCount: number }[] = [];\n let allFilteredTypes: FilteredType[] = [];\n\n for (const category of categories) {\n const matchInfo = await filterer.categoryMatchesFilter(category, []);\n\n if (matchInfo.matchesFilter) {\n allFilteredResultMatches.push({\n id: category.name,\n matchesCount: matchInfo.matchesCount ?? 0,\n });\n allFilteredTypes = allFilteredTypes.concat(matchInfo.filteredTypes ?? []);\n matchesCount += matchInfo.matchesCount ?? 0;\n }\n\n const childRecords = records[category.name] ?? [];\n const {\n filteredRecords,\n matchesCount: count,\n filteredResultMatches,\n filteredTypes,\n } = await matchRecordHierarchy(filterer, childRecords, []);\n allFilteredResultMatches = allFilteredResultMatches.concat(\n filteredResultMatches\n );\n allFilteredTypes = allFilteredTypes.concat(filteredTypes);\n matchesCount += count;\n\n const parentInfo = parentMatchInfo?.matchesFilter\n ? parentMatchInfo\n : matchInfo;\n\n const childCategories = category.childCategories ?? [];\n const {\n filteredCategories,\n matchesCount: childCount,\n filteredResultMatches: childFilteredResultMatches,\n filteredTypes: childFilteredTypes,\n } = await matchHierarchy(\n filterer,\n childCategories,\n records,\n newRecords,\n parentInfo\n );\n allFilteredResultMatches = allFilteredResultMatches.concat(\n childFilteredResultMatches\n );\n allFilteredTypes = allFilteredTypes.concat(childFilteredTypes);\n matchesCount += childCount;\n\n let expand = !(count === 0 && childCount === 0);\n if (\n matchInfo.matchesFilter ||\n (parentMatchInfo?.matchesFilter &&\n parentMatchInfo.shouldForceIncludeDescendants)\n ) {\n newRecords[category.name] = records[category.name];\n if (matchInfo.matchesFilter) {\n expand = true;\n }\n const newCategory = copyPropertyCategory(\n category,\n filteredCategories,\n expand\n );\n newCategories.push(newCategory);\n }\n\n if (\n (filteredRecords.length !== 0 || filteredCategories.length !== 0) &&\n !matchInfo.matchesFilter &&\n !(\n parentMatchInfo?.shouldExpandNodeParents &&\n parentMatchInfo.matchesFilter\n )\n ) {\n const newCategory = copyPropertyCategory(\n category,\n filteredCategories,\n expand\n );\n newRecords[newCategory.name] = filteredRecords;\n newCategories.push(newCategory);\n }\n }\n\n return {\n filteredCategories: newCategories,\n filteredRecords: newRecords,\n matchesCount,\n filteredResultMatches: allFilteredResultMatches,\n filteredTypes: allFilteredTypes,\n };\n}\n\nasync function matchRecordHierarchy(\n filterer: IPropertyDataFilterer,\n records: PropertyRecord[],\n parents: PropertyRecord[],\n forceIncludeItem: boolean = false\n): Promise<FilteredRecords> {\n const newMatchedRecords: PropertyRecord[] = [];\n let expandParent = false; // property passed back to parent to indicate whether it should be expanded\n let matchesCount = 0;\n let filteredResultMatches: { id: string; matchesCount: number }[] = [];\n let filteredTypes: FilteredType[] = [];\n\n for (const record of records) {\n const matchInfo = await filterer.recordMatchesFilter(record, parents);\n const shouldForceIncludeDescendants =\n forceIncludeItem || matchInfo.shouldForceIncludeDescendants;\n const {\n filteredRecords: filteredChildren,\n shouldExpandNodeParents,\n matchesCount: childrenMatchesCount,\n filteredResultMatches: childrenResultMatches,\n filteredTypes: childrenFilteredTypes,\n } = await matchRecordHierarchy(\n filterer,\n record.getChildrenRecords(),\n [...parents, record],\n shouldForceIncludeDescendants\n );\n filteredResultMatches = filteredResultMatches.concat(childrenResultMatches);\n filteredTypes = [...filteredTypes, ...childrenFilteredTypes];\n matchesCount += childrenMatchesCount;\n // if child hierarchy indicates parents should be expanded, then it should be passed back up to the top parent\n expandParent = expandParent || shouldExpandNodeParents;\n\n let newRecord: PropertyRecord | undefined;\n if (matchInfo.matchesFilter) {\n filteredTypes = [...filteredTypes, ...(matchInfo.filteredTypes ?? [])];\n const recordMatchesCount = matchInfo.matchesCount ?? 0;\n matchesCount += recordMatchesCount;\n // Item is included if it matches filter\n // If at least one matched record from records list needs its parent expanded,\n // then `expandParent` should be set to true\n expandParent = expandParent || !!matchInfo.shouldExpandNodeParents;\n newRecord = copyPropertyRecord(\n record,\n filteredChildren,\n shouldExpandNodeParents\n );\n filteredResultMatches.push({\n id: newRecord.property.name,\n matchesCount: recordMatchesCount,\n });\n } else if (filteredChildren.length !== 0 || forceIncludeItem) {\n // Item is also included if it has at least one matched child or is forcefully included by its parent\n newRecord = copyPropertyRecord(\n record,\n filteredChildren,\n shouldExpandNodeParents\n );\n }\n\n if (newRecord) newMatchedRecords.push(newRecord);\n }\n\n return {\n filteredRecords: newMatchedRecords,\n shouldExpandNodeParents: expandParent,\n matchesCount,\n filteredResultMatches,\n filteredTypes,\n };\n}\n\nfunction copyPropertyCategory(\n propertyCategory: PropertyCategory,\n newChildren: PropertyCategory[],\n expand: boolean\n): PropertyCategory {\n return {\n ...propertyCategory,\n childCategories: newChildren,\n expand,\n };\n}\n\nfunction copyPropertyRecord(\n record: PropertyRecord,\n newChildren: PropertyRecord[],\n autoExpand: boolean\n) {\n const r = record.copyWithNewValue(\n createNewPropertyValue(record.value, newChildren)\n );\n r.autoExpand = autoExpand;\n return r;\n}\n\nfunction createNewPropertyValue(\n value: PropertyValue,\n newChildren: PropertyRecord[]\n): PropertyValue {\n switch (value.valueFormat) {\n case PropertyValueFormat.Primitive:\n return { ...value };\n case PropertyValueFormat.Array:\n return {\n valueFormat: PropertyValueFormat.Array,\n itemsTypeName: value.itemsTypeName,\n items: newChildren,\n };\n case PropertyValueFormat.Struct:\n const members: { [name: string]: PropertyRecord } = {};\n newChildren.forEach((child) => (members[child.property.name] = child));\n return {\n valueFormat: PropertyValueFormat.Struct,\n members,\n };\n }\n}\n"]}
@@ -64,11 +64,11 @@ export class CompositePropertyDataFilterer extends PropertyDataFiltererBase {
64
64
  function sumNullableNumbers(lhs, rhs) {
65
65
  if (undefined === lhs && undefined === rhs)
66
66
  return undefined;
67
- return (lhs ?? 0) + (rhs ?? 0);
67
+ return (lhs !== null && lhs !== void 0 ? lhs : 0) + (rhs !== null && rhs !== void 0 ? rhs : 0);
68
68
  }
69
69
  function joinNullableArrays(lhs, rhs) {
70
70
  if (undefined === lhs && undefined === rhs)
71
71
  return undefined;
72
- return [...(lhs ?? []), ...(rhs ?? [])];
72
+ return [...(lhs !== null && lhs !== void 0 ? lhs : []), ...(rhs !== null && rhs !== void 0 ? rhs : [])];
73
73
  }
74
74
  //# sourceMappingURL=CompositePropertyDataFilterer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CompositePropertyDataFilterer.js","sourceRoot":"","sources":["../../../../../../src/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyGrid\n */\n\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport type { PropertyCategory } from \"../../PropertyDataProvider\";\nimport type {\n FilteredType,\n IPropertyDataFilterer,\n PropertyDataFilterResult,\n} from \"./PropertyDataFiltererBase\";\nimport { PropertyDataFiltererBase } from \"./PropertyDataFiltererBase\";\n\n/**\n * Logical operator for composite filterer.\n * @public\n */\nexport enum CompositeFilterType {\n And,\n Or,\n}\n\n/**\n * Composite PropertyData filter which can join two filters using logic operators\n * @public\n */\nexport class CompositePropertyDataFilterer extends PropertyDataFiltererBase {\n public constructor(\n private _leftFilterer: IPropertyDataFilterer,\n private _operator: CompositeFilterType,\n private _rightFilterer: IPropertyDataFilterer\n ) {\n super();\n this._leftFilterer.onFilterChanged.addListener(() =>\n this.onFilterChanged.raiseEvent()\n );\n this._rightFilterer.onFilterChanged.addListener(() =>\n this.onFilterChanged.raiseEvent()\n );\n }\n\n public get isActive() {\n return this._leftFilterer.isActive || this._rightFilterer.isActive;\n }\n\n public async recordMatchesFilter(\n node: PropertyRecord,\n parents: PropertyRecord[]\n ): Promise<PropertyDataFilterResult> {\n const [lhs, rhs] = await Promise.all([\n this._leftFilterer.recordMatchesFilter(node, parents),\n this._rightFilterer.recordMatchesFilter(node, parents),\n ]);\n\n return this.getFiltererResult(lhs, rhs);\n }\n\n public async categoryMatchesFilter(\n node: PropertyCategory,\n parents: PropertyCategory[]\n ): Promise<PropertyDataFilterResult> {\n const [lhs, rhs] = await Promise.all([\n this._leftFilterer.categoryMatchesFilter(node, parents),\n this._rightFilterer.categoryMatchesFilter(node, parents),\n ]);\n\n return this.getFiltererResult(lhs, rhs);\n }\n\n private getFiltererResult(\n lhs: PropertyDataFilterResult,\n rhs: PropertyDataFilterResult\n ) {\n const matchesFilter =\n this._operator === CompositeFilterType.And\n ? lhs.matchesFilter && rhs.matchesFilter\n : lhs.matchesFilter || rhs.matchesFilter;\n if (!matchesFilter) return { matchesFilter: false };\n\n const filteredTypes = joinNullableArrays(\n lhs.matchesFilter ? lhs.filteredTypes : undefined,\n rhs.matchesFilter ? rhs.filteredTypes : undefined\n );\n\n return {\n matchesFilter: true,\n shouldExpandNodeParents:\n lhs.shouldExpandNodeParents || rhs.shouldExpandNodeParents,\n shouldForceIncludeDescendants:\n lhs.shouldForceIncludeDescendants || rhs.shouldForceIncludeDescendants,\n matchesCount: sumNullableNumbers(lhs.matchesCount, rhs.matchesCount),\n filteredTypes,\n };\n }\n}\n\nfunction sumNullableNumbers(lhs: number | undefined, rhs: number | undefined) {\n if (undefined === lhs && undefined === rhs) return undefined;\n return (lhs ?? 0) + (rhs ?? 0);\n}\n\nfunction joinNullableArrays(\n lhs: FilteredType[] | undefined,\n rhs: FilteredType[] | undefined\n) {\n if (undefined === lhs && undefined === rhs) return undefined;\n return [...(lhs ?? []), ...(rhs ?? [])];\n}\n"]}
1
+ {"version":3,"file":"CompositePropertyDataFilterer.js","sourceRoot":"","sources":["../../../../../../src/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyGrid\n */\n\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport type { PropertyCategory } from \"../../PropertyDataProvider\";\nimport type {\n FilteredType,\n IPropertyDataFilterer,\n PropertyDataFilterResult,\n} from \"./PropertyDataFiltererBase\";\nimport { PropertyDataFiltererBase } from \"./PropertyDataFiltererBase\";\n\n/**\n * Logical operator for composite filterer.\n * @public\n */\nexport enum CompositeFilterType {\n And,\n Or,\n}\n\n/**\n * Composite PropertyData filter which can join two filters using logic operators\n * @public\n */\nexport class CompositePropertyDataFilterer extends PropertyDataFiltererBase {\n public constructor(\n private _leftFilterer: IPropertyDataFilterer,\n private _operator: CompositeFilterType,\n private _rightFilterer: IPropertyDataFilterer\n ) {\n super();\n this._leftFilterer.onFilterChanged.addListener(() =>\n this.onFilterChanged.raiseEvent()\n );\n this._rightFilterer.onFilterChanged.addListener(() =>\n this.onFilterChanged.raiseEvent()\n );\n }\n\n public get isActive() {\n return this._leftFilterer.isActive || this._rightFilterer.isActive;\n }\n\n public async recordMatchesFilter(\n node: PropertyRecord,\n parents: PropertyRecord[]\n ): Promise<PropertyDataFilterResult> {\n const [lhs, rhs] = await Promise.all([\n this._leftFilterer.recordMatchesFilter(node, parents),\n this._rightFilterer.recordMatchesFilter(node, parents),\n ]);\n\n return this.getFiltererResult(lhs, rhs);\n }\n\n public async categoryMatchesFilter(\n node: PropertyCategory,\n parents: PropertyCategory[]\n ): Promise<PropertyDataFilterResult> {\n const [lhs, rhs] = await Promise.all([\n this._leftFilterer.categoryMatchesFilter(node, parents),\n this._rightFilterer.categoryMatchesFilter(node, parents),\n ]);\n\n return this.getFiltererResult(lhs, rhs);\n }\n\n private getFiltererResult(\n lhs: PropertyDataFilterResult,\n rhs: PropertyDataFilterResult\n ) {\n const matchesFilter =\n this._operator === CompositeFilterType.And\n ? lhs.matchesFilter && rhs.matchesFilter\n : lhs.matchesFilter || rhs.matchesFilter;\n if (!matchesFilter) return { matchesFilter: false };\n\n const filteredTypes = joinNullableArrays(\n lhs.matchesFilter ? lhs.filteredTypes : undefined,\n rhs.matchesFilter ? rhs.filteredTypes : undefined\n );\n\n return {\n matchesFilter: true,\n shouldExpandNodeParents:\n lhs.shouldExpandNodeParents || rhs.shouldExpandNodeParents,\n shouldForceIncludeDescendants:\n lhs.shouldForceIncludeDescendants || rhs.shouldForceIncludeDescendants,\n matchesCount: sumNullableNumbers(lhs.matchesCount, rhs.matchesCount),\n filteredTypes,\n };\n }\n}\n\nfunction sumNullableNumbers(lhs: number | undefined, rhs: number | undefined) {\n if (undefined === lhs && undefined === rhs) return undefined;\n return (lhs ?? 0) + (rhs ?? 0);\n}\n\nfunction joinNullableArrays(\n lhs: FilteredType[] | undefined,\n rhs: FilteredType[] | undefined\n) {\n if (undefined === lhs && undefined === rhs) return undefined;\n return [...(lhs ?? []), ...(rhs ?? [])];\n}\n"]}
@@ -32,11 +32,12 @@ export class DisplayValuePropertyDataFilterer extends PropertyRecordDataFilterer
32
32
  return this.filterText !== "";
33
33
  }
34
34
  async recordMatchesFilter(node) {
35
+ var _a, _b;
35
36
  if (!this.isActive)
36
37
  return { matchesFilter: true };
37
38
  if (node.value.valueFormat !== PropertyValueFormat.Primitive)
38
39
  return { matchesFilter: false };
39
- const displayValue = node.value.displayValue?.toLowerCase() ?? "";
40
+ const displayValue = (_b = (_a = node.value.displayValue) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : "";
40
41
  const matchesCount = countMatchesInString(displayValue, this.filterText);
41
42
  if (matchesCount === 0)
42
43
  return { matchesFilter: false };