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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/CHANGELOG.md +1 -8
  2. package/lib/cjs/components-react/common/DelayedSpinner.js +2 -3
  3. package/lib/cjs/components-react/common/DelayedSpinner.js.map +1 -1
  4. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js +1 -2
  5. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  6. package/lib/cjs/components-react/common/UseElementsScrollStorage.d.ts +13 -0
  7. package/lib/cjs/components-react/common/UseElementsScrollStorage.d.ts.map +1 -0
  8. package/lib/cjs/components-react/common/UseElementsScrollStorage.js +49 -0
  9. package/lib/cjs/components-react/common/UseElementsScrollStorage.js.map +1 -0
  10. package/lib/cjs/components-react/converters/NumericTypeConverter.js +2 -4
  11. package/lib/cjs/components-react/converters/NumericTypeConverter.js.map +1 -1
  12. package/lib/cjs/components-react/converters/TypeConverter.js +1 -2
  13. package/lib/cjs/components-react/converters/TypeConverter.js.map +1 -1
  14. package/lib/cjs/components-react/datepicker/DatePicker.scss +3 -3
  15. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.scss +3 -3
  16. package/lib/cjs/components-react/datepicker/TimeField.scss +3 -3
  17. package/lib/cjs/components-react/editors/BooleanEditor.scss +3 -3
  18. package/lib/cjs/components-react/editors/CustomNumberEditor.js +6 -8
  19. package/lib/cjs/components-react/editors/CustomNumberEditor.js.map +1 -1
  20. package/lib/cjs/components-react/editors/DateTimeEditor.js +2 -3
  21. package/lib/cjs/components-react/editors/DateTimeEditor.js.map +1 -1
  22. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.scss +3 -3
  23. package/lib/cjs/components-react/editors/IconEditor.scss +3 -3
  24. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.scss +3 -3
  25. package/lib/cjs/components-react/editors/PopupButton.js +3 -4
  26. package/lib/cjs/components-react/editors/PopupButton.js.map +1 -1
  27. package/lib/cjs/components-react/editors/PopupButton.scss +3 -3
  28. package/lib/cjs/components-react/editors/TextEditor.js +2 -4
  29. package/lib/cjs/components-react/editors/TextEditor.js.map +1 -1
  30. package/lib/cjs/components-react/editors/ToggleEditor.scss +3 -3
  31. package/lib/cjs/components-react/favorite/FavoritePropertyList.js +3 -3
  32. package/lib/cjs/components-react/favorite/FavoritePropertyList.js.map +1 -1
  33. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +3 -3
  34. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.scss +3 -3
  35. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +1 -2
  36. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  37. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js +3 -3
  38. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  39. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +1 -1
  40. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  41. package/lib/cjs/components-react/filtering/ResultSelector.scss +3 -3
  42. package/lib/cjs/components-react/iconpicker/IconPickerButton.scss +3 -3
  43. package/lib/cjs/components-react/properties/renderers/ActionButtonList.scss +3 -3
  44. package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js +3 -4
  45. package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  46. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js +1 -1
  47. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  48. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +3 -3
  49. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.js +2 -3
  50. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  51. package/lib/cjs/components-react/properties/renderers/PropertyView.scss +3 -3
  52. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.js +4 -4
  53. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  54. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.scss +3 -3
  55. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js +1 -2
  56. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  57. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js +3 -6
  58. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  59. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js +1 -2
  60. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  61. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js +3 -6
  62. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  63. package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js +1 -2
  64. package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  65. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +1 -2
  66. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  67. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js +1 -2
  68. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  69. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js +2 -2
  70. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  71. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +10 -0
  72. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts.map +1 -1
  73. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js +59 -55
  74. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  75. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +3 -3
  76. package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js +11 -13
  77. package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  78. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js +2 -2
  79. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  80. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js +1 -2
  81. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  82. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js +1 -2
  83. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  84. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +2 -2
  85. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  86. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js +2 -3
  87. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  88. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +1 -1
  89. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  90. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js +1 -1
  91. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  92. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +5 -7
  93. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  94. package/lib/cjs/components-react/selectable-content/SelectableContent.js +2 -3
  95. package/lib/cjs/components-react/selectable-content/SelectableContent.js.map +1 -1
  96. package/lib/cjs/components-react/selectable-content/SelectableContent.scss +3 -3
  97. package/lib/cjs/components-react/toolbar/ItemWrapper.scss +3 -3
  98. package/lib/cjs/components-react/toolbar/Items.scss +3 -3
  99. package/lib/cjs/components-react/toolbar/Overflow.scss +3 -3
  100. package/lib/cjs/components-react/toolbar/OverflowPanel.scss +3 -3
  101. package/lib/cjs/components-react/toolbar/PopupItem.scss +3 -3
  102. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js +3 -4
  103. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  104. package/lib/cjs/components-react/toolbar/_variables.scss +3 -3
  105. package/lib/cjs/components-react/toolbar/groupPanel/BackArrow.scss +3 -3
  106. package/lib/cjs/components-react/toolbar/groupPanel/Column.scss +3 -3
  107. package/lib/cjs/components-react/toolbar/groupPanel/Columns.scss +3 -3
  108. package/lib/cjs/components-react/toolbar/groupPanel/Panel.scss +3 -3
  109. package/lib/cjs/components-react/toolbar/groupPanel/Title.scss +3 -3
  110. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.scss +3 -3
  111. package/lib/cjs/components-react/tree/controlled/TreeModel.js +7 -8
  112. package/lib/cjs/components-react/tree/controlled/TreeModel.js.map +1 -1
  113. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js +6 -8
  114. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  115. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts +10 -0
  116. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  117. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js +11 -1
  118. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  119. package/lib/cjs/components-react/tree/controlled/component/NodeContent.scss +3 -3
  120. package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js +1 -2
  121. package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  122. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js +2 -4
  123. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  124. package/lib/esm/components-react/common/DelayedSpinner.js +2 -3
  125. package/lib/esm/components-react/common/DelayedSpinner.js.map +1 -1
  126. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js +1 -2
  127. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  128. package/lib/esm/components-react/common/UseElementsScrollStorage.d.ts +13 -0
  129. package/lib/esm/components-react/common/UseElementsScrollStorage.d.ts.map +1 -0
  130. package/lib/esm/components-react/common/UseElementsScrollStorage.js +45 -0
  131. package/lib/esm/components-react/common/UseElementsScrollStorage.js.map +1 -0
  132. package/lib/esm/components-react/converters/NumericTypeConverter.js +2 -4
  133. package/lib/esm/components-react/converters/NumericTypeConverter.js.map +1 -1
  134. package/lib/esm/components-react/converters/TypeConverter.js +1 -2
  135. package/lib/esm/components-react/converters/TypeConverter.js.map +1 -1
  136. package/lib/esm/components-react/datepicker/DatePicker.scss +3 -3
  137. package/lib/esm/components-react/datepicker/DatePickerPopupButton.scss +3 -3
  138. package/lib/esm/components-react/datepicker/TimeField.scss +3 -3
  139. package/lib/esm/components-react/editors/BooleanEditor.scss +3 -3
  140. package/lib/esm/components-react/editors/CustomNumberEditor.js +6 -8
  141. package/lib/esm/components-react/editors/CustomNumberEditor.js.map +1 -1
  142. package/lib/esm/components-react/editors/DateTimeEditor.js +2 -3
  143. package/lib/esm/components-react/editors/DateTimeEditor.js.map +1 -1
  144. package/lib/esm/components-react/editors/EnumButtonGroupEditor.scss +3 -3
  145. package/lib/esm/components-react/editors/IconEditor.scss +3 -3
  146. package/lib/esm/components-react/editors/ImageCheckBoxEditor.scss +3 -3
  147. package/lib/esm/components-react/editors/PopupButton.js +3 -4
  148. package/lib/esm/components-react/editors/PopupButton.js.map +1 -1
  149. package/lib/esm/components-react/editors/PopupButton.scss +3 -3
  150. package/lib/esm/components-react/editors/TextEditor.js +2 -4
  151. package/lib/esm/components-react/editors/TextEditor.js.map +1 -1
  152. package/lib/esm/components-react/editors/ToggleEditor.scss +3 -3
  153. package/lib/esm/components-react/favorite/FavoritePropertyList.js +3 -3
  154. package/lib/esm/components-react/favorite/FavoritePropertyList.js.map +1 -1
  155. package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +3 -3
  156. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.scss +3 -3
  157. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +1 -2
  158. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  159. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js +3 -3
  160. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  161. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +1 -1
  162. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  163. package/lib/esm/components-react/filtering/ResultSelector.scss +3 -3
  164. package/lib/esm/components-react/iconpicker/IconPickerButton.scss +3 -3
  165. package/lib/esm/components-react/properties/renderers/ActionButtonList.scss +3 -3
  166. package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js +3 -4
  167. package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  168. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js +1 -1
  169. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  170. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.scss +3 -3
  171. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.js +2 -3
  172. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  173. package/lib/esm/components-react/properties/renderers/PropertyView.scss +3 -3
  174. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js +4 -4
  175. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  176. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.scss +3 -3
  177. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js +1 -2
  178. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.js.map +1 -1
  179. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js +3 -6
  180. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  181. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js +1 -2
  182. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.js.map +1 -1
  183. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js +3 -6
  184. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  185. package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js +1 -2
  186. package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  187. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +1 -2
  188. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  189. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js +1 -2
  190. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  191. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js +2 -2
  192. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  193. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +10 -0
  194. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts.map +1 -1
  195. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js +57 -54
  196. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  197. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +3 -3
  198. package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js +11 -13
  199. package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  200. package/lib/esm/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js +2 -2
  201. package/lib/esm/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  202. package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js +1 -2
  203. package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  204. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js +1 -2
  205. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  206. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +2 -2
  207. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  208. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js +2 -3
  209. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  210. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +1 -1
  211. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  212. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js +1 -1
  213. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  214. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +5 -7
  215. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  216. package/lib/esm/components-react/selectable-content/SelectableContent.js +2 -3
  217. package/lib/esm/components-react/selectable-content/SelectableContent.js.map +1 -1
  218. package/lib/esm/components-react/selectable-content/SelectableContent.scss +3 -3
  219. package/lib/esm/components-react/toolbar/ItemWrapper.scss +3 -3
  220. package/lib/esm/components-react/toolbar/Items.scss +3 -3
  221. package/lib/esm/components-react/toolbar/Overflow.scss +3 -3
  222. package/lib/esm/components-react/toolbar/OverflowPanel.scss +3 -3
  223. package/lib/esm/components-react/toolbar/PopupItem.scss +3 -3
  224. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js +3 -4
  225. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.js.map +1 -1
  226. package/lib/esm/components-react/toolbar/_variables.scss +3 -3
  227. package/lib/esm/components-react/toolbar/groupPanel/BackArrow.scss +3 -3
  228. package/lib/esm/components-react/toolbar/groupPanel/Column.scss +3 -3
  229. package/lib/esm/components-react/toolbar/groupPanel/Columns.scss +3 -3
  230. package/lib/esm/components-react/toolbar/groupPanel/Panel.scss +3 -3
  231. package/lib/esm/components-react/toolbar/groupPanel/Title.scss +3 -3
  232. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.scss +3 -3
  233. package/lib/esm/components-react/tree/controlled/TreeModel.js +7 -8
  234. package/lib/esm/components-react/tree/controlled/TreeModel.js.map +1 -1
  235. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js +6 -8
  236. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  237. package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts +10 -0
  238. package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  239. package/lib/esm/components-react/tree/controlled/component/ControlledTree.js +9 -0
  240. package/lib/esm/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  241. package/lib/esm/components-react/tree/controlled/component/NodeContent.scss +3 -3
  242. package/lib/esm/components-react/tree/controlled/internal/SparseTree.js +1 -2
  243. package/lib/esm/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  244. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js +2 -4
  245. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  246. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"TreeSelectionManager.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/internal/TreeSelectionManager.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 Tree\n */\n\nimport { take } from \"rxjs/internal/operators/take\";\nimport { Subject } from \"rxjs/internal/Subject\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type {\n MultiSelectionHandler,\n SingleSelectionHandler,\n} from \"../../../common/selection/SelectionHandler\";\nimport { SelectionHandler } from \"../../../common/selection/SelectionHandler\";\nimport type { SelectionMode } from \"../../../common/selection/SelectionModes\";\nimport type { Observable } from \"../Observable\";\nimport type { TreeActions } from \"../TreeActions\";\nimport type { TreeModelNode, VisibleTreeNodes } from \"../TreeModel\";\nimport { isTreeModelNode } from \"../TreeModel\";\nimport {\n isNavigationKey,\n ItemKeyboardNavigator,\n Orientation,\n} from \"@itwin/core-react\";\n\n/** @internal */\nexport interface SelectionReplacementEvent {\n selectedNodeIds: IndividualSelection | RangeSelection;\n}\n\n/** @internal */\nexport interface SelectionModificationEvent {\n selectedNodes: IndividualSelection | RangeSelection;\n deselectedNodes: IndividualSelection;\n}\n\n/** @internal */\nexport interface DragSelectionStartEvent {\n selectionChanges: Observable<SelectionModificationEvent>;\n}\n\n/** @internal */\nexport type IndividualSelection = string[];\n\n/** @internal */\nexport interface RangeSelection {\n from: string;\n to: string;\n}\n\n/** @internal */\nexport function isRangeSelection(selection: any): selection is RangeSelection {\n return (\n selection &&\n typeof selection.from === \"string\" &&\n typeof selection.to === \"string\"\n );\n}\n\n/** @internal */\nexport class TreeSelectionManager\n implements\n Pick<TreeActions, \"onNodeClicked\" | \"onNodeMouseDown\" | \"onNodeMouseMove\">\n{\n private _selectionHandler: SelectionHandler<Selection>;\n private _dragSelectionOperation?: Subject<SelectionModificationEvent>;\n private _itemHandlers: Array<Array<SingleSelectionHandler<string>>>;\n\n private _getVisibleNodes: (() => VisibleTreeNodes) | undefined;\n\n public onSelectionChanged = new BeUiEvent<SelectionModificationEvent>();\n public onSelectionReplaced = new BeUiEvent<SelectionReplacementEvent>();\n public onDragSelection = new BeUiEvent<DragSelectionStartEvent>();\n\n constructor(\n selectionMode: SelectionMode,\n getVisibleNodes?: () => VisibleTreeNodes\n ) {\n this._getVisibleNodes = getVisibleNodes;\n\n const onItemsSelected = (selections: Selection[], replacement: boolean) => {\n // Assumes that `selections` will only contain either a list of\n // `IndividualSelection` items or a single `RangeSelection` item.\n if (isIndividualSelection(selections[0])) {\n if (replacement) {\n this.onSelectionReplaced.emit({\n selectedNodeIds: selections as IndividualSelection,\n });\n } else {\n this.onSelectionChanged.emit({\n selectedNodes: selections as IndividualSelection,\n deselectedNodes: [],\n });\n }\n } else {\n if (replacement) {\n this.onSelectionReplaced.emit({\n selectedNodeIds: selections[0],\n });\n } else {\n this.onSelectionChanged.emit({\n selectedNodes: selections[0],\n deselectedNodes: [],\n });\n }\n }\n };\n\n const onItemsDeselected = (deselections: Selection[]) => {\n // Assumes that this will be always called with `IndividualSelection` items\n this.onSelectionChanged.emit({\n selectedNodes: [],\n deselectedNodes: deselections as IndividualSelection,\n });\n };\n\n this._selectionHandler = new SelectionHandler(\n selectionMode,\n onItemsSelected,\n onItemsDeselected\n );\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n const itemHandlers = new Proxy(\n {},\n {\n get(_target, prop) {\n if (prop === \"length\") {\n return _this._getVisibleNodes === undefined\n ? 0\n : _this._getVisibleNodes().getNumNodes();\n }\n\n // istanbul ignore next\n if (_this._getVisibleNodes === undefined) return undefined;\n\n const index: number = +(prop as string);\n const node = _this.getVisibleNodeAtIndex(\n _this._getVisibleNodes(),\n index\n );\n return new ItemHandler(node);\n },\n }\n ) as Array<SingleSelectionHandler<string>>;\n this._itemHandlers = [itemHandlers];\n }\n\n private getVisibleNodeAtIndex(\n nodes: VisibleTreeNodes | undefined,\n index: number\n ): TreeModelNode | undefined {\n const foundNode =\n nodes !== undefined\n ? nodes.getAtIndex(index)\n : /* istanbul ignore next */ undefined;\n return isTreeModelNode(foundNode) ? foundNode : undefined;\n }\n\n public setVisibleNodes(visibleNodes: (() => VisibleTreeNodes) | undefined) {\n this._getVisibleNodes = visibleNodes;\n }\n\n public onNodeClicked(nodeId: string, event: React.MouseEvent) {\n const selectionFunc = this._selectionHandler.createSelectionFunction(\n ...this.createSelectionHandlers(nodeId)\n );\n selectionFunc(event.shiftKey, event.ctrlKey);\n }\n\n public onNodeMouseDown(nodeId: string) {\n this._selectionHandler.createDragAction(\n this.createSelectionHandlers(nodeId)[0],\n this._itemHandlers,\n nodeId\n );\n window.addEventListener(\n \"mouseup\",\n () => {\n /* istanbul ignore else */\n if (this._dragSelectionOperation) {\n this._selectionHandler.completeDragAction();\n this._dragSelectionOperation.complete();\n this._dragSelectionOperation = undefined;\n }\n },\n { once: true }\n );\n this._dragSelectionOperation = new Subject();\n this._dragSelectionOperation.pipe(take(1)).subscribe((value) => {\n this.onDragSelection.emit({\n selectionChanges: this._dragSelectionOperation!,\n });\n this._dragSelectionOperation!.next(value);\n });\n }\n\n public onNodeMouseMove(nodeId: string) {\n this._selectionHandler.updateDragAction(nodeId);\n }\n\n private createSelectionHandlers(\n nodeId: string\n ): [MultiSelectionHandler<Selection>, SingleSelectionHandler<string>] {\n let deselectedAll = false;\n const multiSelectionHandler: MultiSelectionHandler<Selection> = {\n selectBetween: (item1, item2) => [\n { from: item1 as string, to: item2 as string },\n ],\n updateSelection: (selections, deselections) => {\n // Assumes `updateSelection` will never be called with selection ranges\n const selectedNodeIds = selections as string[];\n const deselectedNodeIds = deselections as string[];\n this._dragSelectionOperation!.next({\n selectedNodes: selectedNodeIds,\n deselectedNodes: deselectedNodeIds,\n });\n },\n deselectAll: () => {\n deselectedAll = true;\n },\n areEqual: (item1, item2) => item1 === item2,\n };\n\n const singleSelectionHandler: SingleSelectionHandler<string> = {\n preselect: () => {},\n select: () => {},\n deselect: () => {},\n isSelected: () => {\n if (deselectedAll || this._getVisibleNodes === undefined) {\n return false;\n }\n\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n return node !== undefined && node.isSelected;\n },\n item: () => nodeId,\n };\n\n return [multiSelectionHandler, singleSelectionHandler];\n }\n\n public onTreeKeyDown(event: React.KeyboardEvent, actions: TreeActions): void {\n this._onKeyboardEvent(event, actions, true);\n }\n\n public onTreeKeyUp(event: React.KeyboardEvent, actions: TreeActions): void {\n this._onKeyboardEvent(event, actions, false);\n }\n\n private _onKeyboardEvent = (\n e: React.KeyboardEvent,\n actions: TreeActions,\n isKeyDown: boolean\n ) => {\n if (isNavigationKey(e.key)) {\n // istanbul ignore next\n if (!this._getVisibleNodes) return;\n\n const processedNodeId = this._selectionHandler.processedItem;\n\n const isExpandable = (node: TreeModelNode): boolean =>\n !node.isLoading && node.numChildren !== 0;\n const isEditing = (node: TreeModelNode): boolean =>\n node.editingInfo !== undefined;\n\n // istanbul ignore else\n if (this._getVisibleNodes && isIndividualSelection(processedNodeId)) {\n const processedNode = this._getVisibleNodes()\n .getModel()\n .getNode(processedNodeId);\n // istanbul ignore next\n if (processedNode && isEditing(processedNode)) return;\n }\n\n const handleKeyboardSelectItem = (index: number) => {\n // istanbul ignore else\n if (this._getVisibleNodes) {\n const node = this.getVisibleNodeAtIndex(\n this._getVisibleNodes(),\n index\n );\n // istanbul ignore else\n if (node) {\n // istanbul ignore next\n if (isEditing(node)) return;\n\n const selectionFunc =\n this._selectionHandler.createSelectionFunction(\n ...this.createSelectionHandlers(node.id)\n );\n selectionFunc(e.shiftKey, e.ctrlKey);\n }\n }\n };\n const handleKeyboardActivateItem = (_index: number) => {\n // istanbul ignore else\n if (this._getVisibleNodes && isIndividualSelection(processedNodeId)) {\n const node = this._getVisibleNodes()\n .getModel()\n .getNode(processedNodeId);\n // istanbul ignore else\n if (node) {\n if (isExpandable(node)) {\n if (!node.isExpanded) actions.onNodeExpanded(node.id);\n else actions.onNodeCollapsed(node.id);\n } else {\n actions.onNodeEditorActivated(node.id);\n }\n }\n }\n };\n const handleCrossAxisArrowKey = (forward: boolean) => {\n // istanbul ignore else\n if (this._getVisibleNodes && isIndividualSelection(processedNodeId)) {\n const node = this._getVisibleNodes()\n .getModel()\n .getNode(processedNodeId);\n // istanbul ignore else\n if (node) {\n if (isExpandable(node)) {\n if (forward && !node.isExpanded) actions.onNodeExpanded(node.id);\n else if (!forward && node.isExpanded)\n actions.onNodeCollapsed(node.id);\n }\n }\n }\n };\n\n // istanbul ignore else\n if (isIndividualSelection(processedNodeId)) {\n const itemKeyboardNavigator = new ItemKeyboardNavigator(\n handleKeyboardSelectItem,\n handleKeyboardActivateItem\n );\n itemKeyboardNavigator.orientation = Orientation.Vertical;\n itemKeyboardNavigator.crossAxisArrowKeyHandler =\n handleCrossAxisArrowKey;\n itemKeyboardNavigator.allowWrap = false;\n itemKeyboardNavigator.itemCount = this._getVisibleNodes().getNumNodes();\n\n const index = this._getVisibleNodes().getIndexOfNode(processedNodeId);\n isKeyDown\n ? itemKeyboardNavigator.handleKeyDownEvent(e, index)\n : itemKeyboardNavigator.handleKeyUpEvent(e, index);\n }\n }\n };\n}\n\ntype Selection = string | RangeSelection;\n\nfunction isIndividualSelection(\n selection: Selection | undefined\n): selection is string {\n return typeof selection === \"string\";\n}\n\nclass ItemHandler implements SingleSelectionHandler<string> {\n private _node: TreeModelNode | undefined;\n\n constructor(node: TreeModelNode | undefined) {\n this._node = node;\n }\n\n /* istanbul ignore next: noop */\n public preselect() {}\n\n /* istanbul ignore next: noop */\n public select() {}\n\n /* istanbul ignore next: noop */\n public deselect() {}\n\n // eslint-disable-next-line @itwin/prefer-get\n public isSelected(): boolean {\n // istanbul ignore next\n return !!this._node?.isSelected;\n }\n\n public item(): string {\n return this._node?.id ?? \"\";\n }\n}\n"]}
1
+ {"version":3,"file":"TreeSelectionManager.js","sourceRoot":"","sources":["../../../../../../src/components-react/tree/controlled/internal/TreeSelectionManager.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 Tree\n */\n\nimport { take } from \"rxjs/internal/operators/take\";\nimport { Subject } from \"rxjs/internal/Subject\";\nimport { BeUiEvent } from \"@itwin/core-bentley\";\nimport type {\n MultiSelectionHandler,\n SingleSelectionHandler,\n} from \"../../../common/selection/SelectionHandler\";\nimport { SelectionHandler } from \"../../../common/selection/SelectionHandler\";\nimport type { SelectionMode } from \"../../../common/selection/SelectionModes\";\nimport type { Observable } from \"../Observable\";\nimport type { TreeActions } from \"../TreeActions\";\nimport type { TreeModelNode, VisibleTreeNodes } from \"../TreeModel\";\nimport { isTreeModelNode } from \"../TreeModel\";\nimport {\n isNavigationKey,\n ItemKeyboardNavigator,\n Orientation,\n} from \"@itwin/core-react\";\n\n/** @internal */\nexport interface SelectionReplacementEvent {\n selectedNodeIds: IndividualSelection | RangeSelection;\n}\n\n/** @internal */\nexport interface SelectionModificationEvent {\n selectedNodes: IndividualSelection | RangeSelection;\n deselectedNodes: IndividualSelection;\n}\n\n/** @internal */\nexport interface DragSelectionStartEvent {\n selectionChanges: Observable<SelectionModificationEvent>;\n}\n\n/** @internal */\nexport type IndividualSelection = string[];\n\n/** @internal */\nexport interface RangeSelection {\n from: string;\n to: string;\n}\n\n/** @internal */\nexport function isRangeSelection(selection: any): selection is RangeSelection {\n return (\n selection &&\n typeof selection.from === \"string\" &&\n typeof selection.to === \"string\"\n );\n}\n\n/** @internal */\nexport class TreeSelectionManager\n implements\n Pick<TreeActions, \"onNodeClicked\" | \"onNodeMouseDown\" | \"onNodeMouseMove\">\n{\n private _selectionHandler: SelectionHandler<Selection>;\n private _dragSelectionOperation?: Subject<SelectionModificationEvent>;\n private _itemHandlers: Array<Array<SingleSelectionHandler<string>>>;\n\n private _getVisibleNodes: (() => VisibleTreeNodes) | undefined;\n\n public onSelectionChanged = new BeUiEvent<SelectionModificationEvent>();\n public onSelectionReplaced = new BeUiEvent<SelectionReplacementEvent>();\n public onDragSelection = new BeUiEvent<DragSelectionStartEvent>();\n\n constructor(\n selectionMode: SelectionMode,\n getVisibleNodes?: () => VisibleTreeNodes\n ) {\n this._getVisibleNodes = getVisibleNodes;\n\n const onItemsSelected = (selections: Selection[], replacement: boolean) => {\n // Assumes that `selections` will only contain either a list of\n // `IndividualSelection` items or a single `RangeSelection` item.\n if (isIndividualSelection(selections[0])) {\n if (replacement) {\n this.onSelectionReplaced.emit({\n selectedNodeIds: selections as IndividualSelection,\n });\n } else {\n this.onSelectionChanged.emit({\n selectedNodes: selections as IndividualSelection,\n deselectedNodes: [],\n });\n }\n } else {\n if (replacement) {\n this.onSelectionReplaced.emit({\n selectedNodeIds: selections[0],\n });\n } else {\n this.onSelectionChanged.emit({\n selectedNodes: selections[0],\n deselectedNodes: [],\n });\n }\n }\n };\n\n const onItemsDeselected = (deselections: Selection[]) => {\n // Assumes that this will be always called with `IndividualSelection` items\n this.onSelectionChanged.emit({\n selectedNodes: [],\n deselectedNodes: deselections as IndividualSelection,\n });\n };\n\n this._selectionHandler = new SelectionHandler(\n selectionMode,\n onItemsSelected,\n onItemsDeselected\n );\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this;\n const itemHandlers = new Proxy(\n {},\n {\n get(_target, prop) {\n if (prop === \"length\") {\n return _this._getVisibleNodes === undefined\n ? 0\n : _this._getVisibleNodes().getNumNodes();\n }\n\n // istanbul ignore next\n if (_this._getVisibleNodes === undefined) return undefined;\n\n const index: number = +(prop as string);\n const node = _this.getVisibleNodeAtIndex(\n _this._getVisibleNodes(),\n index\n );\n return new ItemHandler(node);\n },\n }\n ) as Array<SingleSelectionHandler<string>>;\n this._itemHandlers = [itemHandlers];\n }\n\n private getVisibleNodeAtIndex(\n nodes: VisibleTreeNodes | undefined,\n index: number\n ): TreeModelNode | undefined {\n const foundNode =\n nodes !== undefined\n ? nodes.getAtIndex(index)\n : /* istanbul ignore next */ undefined;\n return isTreeModelNode(foundNode) ? foundNode : undefined;\n }\n\n public setVisibleNodes(visibleNodes: (() => VisibleTreeNodes) | undefined) {\n this._getVisibleNodes = visibleNodes;\n }\n\n public onNodeClicked(nodeId: string, event: React.MouseEvent) {\n const selectionFunc = this._selectionHandler.createSelectionFunction(\n ...this.createSelectionHandlers(nodeId)\n );\n selectionFunc(event.shiftKey, event.ctrlKey);\n }\n\n public onNodeMouseDown(nodeId: string) {\n this._selectionHandler.createDragAction(\n this.createSelectionHandlers(nodeId)[0],\n this._itemHandlers,\n nodeId\n );\n window.addEventListener(\n \"mouseup\",\n () => {\n /* istanbul ignore else */\n if (this._dragSelectionOperation) {\n this._selectionHandler.completeDragAction();\n this._dragSelectionOperation.complete();\n this._dragSelectionOperation = undefined;\n }\n },\n { once: true }\n );\n this._dragSelectionOperation = new Subject();\n this._dragSelectionOperation.pipe(take(1)).subscribe((value) => {\n this.onDragSelection.emit({\n selectionChanges: this._dragSelectionOperation!,\n });\n this._dragSelectionOperation!.next(value);\n });\n }\n\n public onNodeMouseMove(nodeId: string) {\n this._selectionHandler.updateDragAction(nodeId);\n }\n\n private createSelectionHandlers(\n nodeId: string\n ): [MultiSelectionHandler<Selection>, SingleSelectionHandler<string>] {\n let deselectedAll = false;\n const multiSelectionHandler: MultiSelectionHandler<Selection> = {\n selectBetween: (item1, item2) => [\n { from: item1 as string, to: item2 as string },\n ],\n updateSelection: (selections, deselections) => {\n // Assumes `updateSelection` will never be called with selection ranges\n const selectedNodeIds = selections as string[];\n const deselectedNodeIds = deselections as string[];\n this._dragSelectionOperation!.next({\n selectedNodes: selectedNodeIds,\n deselectedNodes: deselectedNodeIds,\n });\n },\n deselectAll: () => {\n deselectedAll = true;\n },\n areEqual: (item1, item2) => item1 === item2,\n };\n\n const singleSelectionHandler: SingleSelectionHandler<string> = {\n preselect: () => {},\n select: () => {},\n deselect: () => {},\n isSelected: () => {\n if (deselectedAll || this._getVisibleNodes === undefined) {\n return false;\n }\n\n const node = this._getVisibleNodes().getModel().getNode(nodeId);\n return node !== undefined && node.isSelected;\n },\n item: () => nodeId,\n };\n\n return [multiSelectionHandler, singleSelectionHandler];\n }\n\n public onTreeKeyDown(event: React.KeyboardEvent, actions: TreeActions): void {\n this._onKeyboardEvent(event, actions, true);\n }\n\n public onTreeKeyUp(event: React.KeyboardEvent, actions: TreeActions): void {\n this._onKeyboardEvent(event, actions, false);\n }\n\n private _onKeyboardEvent = (\n e: React.KeyboardEvent,\n actions: TreeActions,\n isKeyDown: boolean\n ) => {\n if (isNavigationKey(e.key)) {\n // istanbul ignore next\n if (!this._getVisibleNodes) return;\n\n const processedNodeId = this._selectionHandler.processedItem;\n\n const isExpandable = (node: TreeModelNode): boolean =>\n !node.isLoading && node.numChildren !== 0;\n const isEditing = (node: TreeModelNode): boolean =>\n node.editingInfo !== undefined;\n\n // istanbul ignore else\n if (this._getVisibleNodes && isIndividualSelection(processedNodeId)) {\n const processedNode = this._getVisibleNodes()\n .getModel()\n .getNode(processedNodeId);\n // istanbul ignore next\n if (processedNode && isEditing(processedNode)) return;\n }\n\n const handleKeyboardSelectItem = (index: number) => {\n // istanbul ignore else\n if (this._getVisibleNodes) {\n const node = this.getVisibleNodeAtIndex(\n this._getVisibleNodes(),\n index\n );\n // istanbul ignore else\n if (node) {\n // istanbul ignore next\n if (isEditing(node)) return;\n\n const selectionFunc =\n this._selectionHandler.createSelectionFunction(\n ...this.createSelectionHandlers(node.id)\n );\n selectionFunc(e.shiftKey, e.ctrlKey);\n }\n }\n };\n const handleKeyboardActivateItem = (_index: number) => {\n // istanbul ignore else\n if (this._getVisibleNodes && isIndividualSelection(processedNodeId)) {\n const node = this._getVisibleNodes()\n .getModel()\n .getNode(processedNodeId);\n // istanbul ignore else\n if (node) {\n if (isExpandable(node)) {\n if (!node.isExpanded) actions.onNodeExpanded(node.id);\n else actions.onNodeCollapsed(node.id);\n } else {\n actions.onNodeEditorActivated(node.id);\n }\n }\n }\n };\n const handleCrossAxisArrowKey = (forward: boolean) => {\n // istanbul ignore else\n if (this._getVisibleNodes && isIndividualSelection(processedNodeId)) {\n const node = this._getVisibleNodes()\n .getModel()\n .getNode(processedNodeId);\n // istanbul ignore else\n if (node) {\n if (isExpandable(node)) {\n if (forward && !node.isExpanded) actions.onNodeExpanded(node.id);\n else if (!forward && node.isExpanded)\n actions.onNodeCollapsed(node.id);\n }\n }\n }\n };\n\n // istanbul ignore else\n if (isIndividualSelection(processedNodeId)) {\n const itemKeyboardNavigator = new ItemKeyboardNavigator(\n handleKeyboardSelectItem,\n handleKeyboardActivateItem\n );\n itemKeyboardNavigator.orientation = Orientation.Vertical;\n itemKeyboardNavigator.crossAxisArrowKeyHandler =\n handleCrossAxisArrowKey;\n itemKeyboardNavigator.allowWrap = false;\n itemKeyboardNavigator.itemCount = this._getVisibleNodes().getNumNodes();\n\n const index = this._getVisibleNodes().getIndexOfNode(processedNodeId);\n isKeyDown\n ? itemKeyboardNavigator.handleKeyDownEvent(e, index)\n : itemKeyboardNavigator.handleKeyUpEvent(e, index);\n }\n }\n };\n}\n\ntype Selection = string | RangeSelection;\n\nfunction isIndividualSelection(\n selection: Selection | undefined\n): selection is string {\n return typeof selection === \"string\";\n}\n\nclass ItemHandler implements SingleSelectionHandler<string> {\n private _node: TreeModelNode | undefined;\n\n constructor(node: TreeModelNode | undefined) {\n this._node = node;\n }\n\n /* istanbul ignore next: noop */\n public preselect() {}\n\n /* istanbul ignore next: noop */\n public select() {}\n\n /* istanbul ignore next: noop */\n public deselect() {}\n\n // eslint-disable-next-line @itwin/prefer-get\n public isSelected(): boolean {\n // istanbul ignore next\n return !!this._node?.isSelected;\n }\n\n public item(): string {\n return this._node?.id ?? \"\";\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/components-react",
3
- "version": "4.2.1",
3
+ "version": "4.3.0-dev.1",
4
4
  "description": "iTwin.js UI complex components",
5
5
  "main": "lib/cjs/components-react.js",
6
6
  "module": "lib/esm/components-react.js",
@@ -24,7 +24,7 @@
24
24
  "peerDependencies": {
25
25
  "@itwin/appui-abstract": "^3.7.0 || ^4.0.0",
26
26
  "@itwin/core-bentley": "^3.7.0 || ^4.0.0",
27
- "@itwin/core-react": "^4.2.1",
27
+ "@itwin/core-react": "^4.3.0-dev.1",
28
28
  "react": "^17.0.0 || ^18.0.0",
29
29
  "react-dom": "^17.0.0 || ^18.0.0"
30
30
  },
@@ -39,7 +39,7 @@
39
39
  "@itwin/core-common": "^3.7.0",
40
40
  "@itwin/core-geometry": "^3.7.0",
41
41
  "@itwin/core-i18n": "^3.7.0",
42
- "@itwin/core-react": "4.2.1",
42
+ "@itwin/core-react": "4.3.0-dev.1",
43
43
  "@itwin/eslint-plugin": "^3.7.0",
44
44
  "@testing-library/dom": "^8.11.2",
45
45
  "@testing-library/react": "^12.0.0",
@@ -58,7 +58,7 @@
58
58
  "@types/react-dom": "^17.0.0",
59
59
  "@types/react-highlight-words": "^0.16.1",
60
60
  "@types/react-window": "^1.8.2",
61
- "@types/sinon": "^9.0.0",
61
+ "@types/sinon": "^10.0.15",
62
62
  "@types/sinon-chai": "^3.2.0",
63
63
  "chai": "^4.1.2",
64
64
  "chai-as-promised": "^7",
@@ -77,7 +77,7 @@
77
77
  "react": "^17.0.0",
78
78
  "react-dom": "^17.0.0",
79
79
  "rimraf": "^3.0.2",
80
- "sinon": "^9.0.2",
80
+ "sinon": "^15.2.0",
81
81
  "sinon-chai": "^3.2.0",
82
82
  "ts-node": "^10.8.2",
83
83
  "typemoq": "^2.1.0",